{ "openapi": "3.0.3", "info": { "version": "latest", "description": "# Introduction\n\nThe NVIDIA Run:ai Control-Plane API reference is a guide that provides an easy-to-use programming interface for adding various tasks to your application, including workload submission, resource management, and administrative operations.\n\nNVIDIA Run:ai APIs are accessed using *bearer tokens*. To obtain a token, you need to create a **Service account** through the NVIDIA Run:ai user interface.\nTo create a service account, in your UI, go to Access → Service Accounts (for organization-level service accounts) or User settings → Access Keys (for user access keys), and create a new one.\n\nAfter you have created a new service account, you will need to assign it access rules.\nTo assign access rules to the service account, see [Create access rules](https://run-ai-docs.nvidia.com/saas/infrastructure-setup/authentication/accessrules#create-or-delete-rules).\nMake sure you assign the correct rules to your service account. Use the [Roles](https://run-ai-docs.nvidia.com/saas/infrastructure-setup/authentication/roles) to assign the correct access rules.\n\nTo get your access token, follow the instructions in [Request a token](https://run-ai-docs.nvidia.com/saas/reference/api/rest-auth/#request-an-api-token).\n", "title": "NVIDIA Run:ai", "x-logo": { "url": "https://api.redocly.com/registry/raw/runai-xq8/saas/latest/public/runai-logo-api.png", "altText": "NVIDIA Run:ai", "href": "https://run.ai" }, "license": { "name": "NVIDIA Run:ai", "url": "https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-software-license-agreement/" } }, "servers": [ { "url": "https://app.run.ai" } ], "security": [ { "bearerAuth": [] } ], "tags": [ { "name": "Storage Classes", "description": "The Storage Classes API retrieves a list of available, pre-defined storage classes in the system." }, { "name": "Storage Class Configuration", "description": "The storage class configuration API enables administrators to define, manage, and customize how storage classes are used across the NVIDIA Run:ai platform. Through this API, you can configure access modes, volume modes, and claim size restrictions for persistent volume claims (PVCs). These settings help standardize storage behavior, enforce organization-wide policies, and ensure consistent resource allocation across workloads.\n" }, { "name": "Policy", "description": "Policies allow administrators to impose restrictions and set default values for researcher workloads. \nRestrictions and default values can be placed on CPUs, GPUs, and other resources or entities. \nFor more information, see [Policies](https://run-ai-docs.nvidia.com/saas/platform-management/policies/#introduction).\n" }, { "name": "Pods", "description": "Retrieve data about workload pods from your NVIDIA Run:ai platform." }, { "name": "Workspaces", "description": "A Workspace is a simplified tool for researchers to conduct experiments, build AI models, access standard MLOps tools, and collaborate with their peers.\nWorkspaces abstract complex concepts related to running containerized workloads in a Kubernetes environment and are built from predefined setups that include\nnetworking, storage, secrets and other resources. All the setup and configurations for research, including container \nimages, data sets, resource requests, as well as all tools are included. for the research, in a single place. \nIt answers the research needs while ensuring infrastructure owners keep control and allocation efficiency.\nA workspace is associated with a specific NVIDIA Run:ai project and you can have multiple workspaces under a specific project. \nFor more information, see [Workspaces](https://run-ai-docs.nvidia.com/saas/workloads-in-nvidia-run-ai/using-workspaces/running-workspace).\n" }, { "name": "Workloads", "description": "Workloads are both native platform workloads, Workspaces, Training and Inference, as well as workloads that originate from third-party ML frameworks, tools, or the broader Kubernetes ecosystems. For more details on the supported workloads, see [Introduction to workloads](https://run-ai-docs.nvidia.com/saas/workloads-in-nvidia-run-ai/introduction-to-workloads). Workloads endpoints allow you to list, retrieve, count, and view telemetry or metrics data for all workload types in your environment.\n" }, { "name": "Workloads V2", "description": "The Workloads V2 API allows you to create, retrieve, and delete workloads that originate from third-party ML frameworks, tools, or the broader Kubernetes ecosystem. These workloads are registered in the platform through the Workload Types API, some are already registered in NVIDIA Run:ai, while others can be added by administrators.\nEach submission combines the user's Kubernetes manifest with NVIDIA Run:ai scheduling metadata, enabling consistent orchestration, monitoring, and governance. See [Extending workload support](https://run-ai-docs.nvidia.com/saas/workloads-in-nvidia-run-ai/workload-types/extending-workload-support) for more details.\n" }, { "name": "NVIDIA NIM", "description": "The NVIDIA NIM API provides endpoints to create and manage workloads that deploy NVIDIA Inference Microservices (NIM) through the NIM Operator. These workloads package optimized NVIDIA model servers and run as managed services on the NVIDIA Run:ai platform.\nEach request includes NVIDIA Run:ai scheduling metadata (for example, project, priority, and category) and a NIM service specification that defines the container image, compute resources, environment variables, storage, and networking configuration. Once submitted, NVIDIA Run:ai handles scheduling, orchestration, and lifecycle management of the NIM service to ensure reliable and efficient model serving.\n" }, { "name": "Workload properties", "description": "Workload properties define the behavioral and scheduling characteristics of a workload submitted to the NVIDIA Run:ai platform. These properties such as type, category, and priority determine how workloads are classified, monitored, and scheduled.\n- Type - Defines the functional behavior of a workload, such as training or inference, and serves as the foundation for how it is classified within the platform. Each workload type includes a default category (used for monitoring) and a default priority (used for scheduling within a project).\n- Category - Represents the role or purpose of a workload, such as Build, Train, Deploy. Each workload type is assigned a default category to ensure consistent classification across the platform for monitoring purposes. See [Monitor workloads by category](https://run-ai-docs.nvidia.com/saas/platform-management/monitor-performance/workload-categories).\n- Priority - Determines the scheduling order of workloads within a project and whether a workload can be preempted. Higher-priority workloads are scheduled first and may become non-preemptible, preventing interruption by lower-priority workloads. See [Workload priority control](https://run-ai-docs.nvidia.com/saas/platform-management/runai-scheduler/scheduling/workload-priority-control).\n" }, { "name": "Workload templates", "description": "This set of endpoints manages workload templates used to define reusable workload configurations across various workload types in the NVIDIA Run:ai platform. \nTemplates help standardize workload definitions for consistent submission and resource usage across projects and users.\n" }, { "name": "Trainings", "description": "Trainings are dedicated workloads that are specifically used for training models. \nThey are by design preemptible workloads because they are used in unattended sessions where the \nscientists and researchers do not need to be present. These workloads are allowed to utilize \nresources over the project's quota. \n" }, { "name": "Distributed", "description": "Distributed Training, is the ability to split the training of a model among multiple processors. \nIt is often a necessity when multi-GPU training no longer applies; \ntypically when you require more GPUs than exist on a single node. \nEach such split is a pod (see definition above). NVIDIA Run:ai spawns an additional launcher process that manages and \ncoordinates the other worker pods. For more information, see [Distributed training](https://run-ai-docs.nvidia.com/saas/workloads-in-nvidia-run-ai/using-training/distributed-training/distributed-training-models).\n" }, { "name": "Events", "description": "Workload events that occurred while the workload was running. Use to diagnose issue around workload scheduling." }, { "name": "Inferences", "description": "Inference workloads deploy trained models into a production environment to generate predictions from live data. These workloads are prioritized over Trainings and Workspaces during scheduling. NVIDIA Run:ai Inference workloads support auto-scaling to maintain service-level agreements (SLAs) by dynamically adjusting resources as demand changes." }, { "name": "Revisions", "description": "Revisions are associated with an inference workload and represent a snapshot of its configuration. A revision is created on each change to the inference workload." }, { "name": "Distributed Inferences", "description": "Distributed inference enables running inference workloads across multiple pods, typically to scale model serving beyond a single container or node. This approach is useful when a single instance cannot meet resource requirements.NVIDIA Run:ai supports this model using Leader Worker Set (LWS). \nEach pod plays a specific role, either as a leader or worker, and together they form a coordinated service. NVIDIA Run:ai manages the orchestration and configuration of these pods to ensure efficient and scalable inference execution\n" }, { "name": "Access Keys", "description": "Access Keys allow users to authenticate and interact programmatically with the NVIDIA Run:ai API.\nEach access key consists of a client ID and secret that can be used to obtain authentication tokens.\nAccess keys can be managed by individual users for their own use, or by administrators for organization-wide access.\nFor more information, see [Access control](https://run-ai-docs.nvidia.com/saas/infrastructure-setup/authentication/overview/#role-based-access-control).\n" }, { "name": "Access rules", "description": "Access rules provide user authorization to system resources and entities.\nIt is managed using Role-based access control (RBAC) which is a policy-neutral \naccess control mechanism defined around roles and privileges. \nThe components of RBAC make it simple to manage access to system resources and entities.\nFor more information, see [Access control](https://run-ai-docs.nvidia.com/saas/infrastructure-setup/authentication/overview/#role-based-access-control).\n" }, { "name": "Me", "description": "\"Me\" returns the authenticated user's permissions within the system. \nIt provides a comprehensive view of access rules (roles, subjects and scope) assigned to the current user.\nFor more information see [Access control](https://run-ai-docs.nvidia.com/saas/infrastructure-setup/authentication/overview/#role-based-access-control).\n" }, { "name": "Applications", "description": "**DEPRECATED:** Applications have been renamed to Service Accounts. Please use the [Service Accounts](/latest/#tag/Service-Accounts) endpoints instead.\n\nCreate and manage applications in the tenant.\n" }, { "name": "Service Accounts", "description": "Service accounts enable programmatic access to the NVIDIA Run:ai API, allowing applications or automated systems to authenticate and interact securely. \nEach service account is associated with an access key which includes a client ID and secret used to generate access token. \nService accounts can be managed organization-wide or with a defined scope.\n" }, { "name": "Org unit", "description": "Org unit." }, { "name": "Roles", "description": "A role is a group of permissions that can be granted. \nPermissions are a set of actions that can be applied to entities.\nFor more information, see [Roles](https://run-ai-docs.nvidia.com/saas/infrastructure-setup/authentication/roles).\n" }, { "name": "Tokens", "description": "Use tokens to facilitate authentication to the NVIDIA Run:ai API. \nThe API server must be configured to use the NVIDIA Run:ai identity \nservice to validate authentication tokens.\n" }, { "name": "User Applications", "description": "**DEPRECATED:** User Applications have been renamed to Access Keys. Please use the [Access Keys](/latest/#tag/Access-Keys) endpoints instead.\n\nUser Applications allow users to authenticate and interact programmatically with the NVIDIA Run:ai API.\n" }, { "name": "Settings", "description": "View and manage configuration settings for your organization.\n" }, { "name": "Tenant", "description": "Manage tenant settings." }, { "name": "Logo", "description": "Use to manage tenant logo files." }, { "name": "NodePools", "description": "Node pools assist in managing heterogeneous resources effectively. \nA node pool is a set of nodes grouped into a bucket of resources using a predefined (for example, GPU-Type) or \nadministrator-defined label (for example, key & value). \nFor more information, see [Node Pools](https://run-ai-docs.nvidia.com/saas/platform-management/aiinitiatives/resources/node-pools/#introduction).\n" }, { "name": "Clusters", "description": "Use these endpoints to create, manage and delete NVIDIA Run:ai Kubernetes clusters." }, { "name": "Departments", "description": "Departments, in the hierarchy of resource allocation, are above Projects. A Department can contain multiple Projects, and has its own quotas. \nA Department's quota supersedes the total of the Project quotas in the Department, so tt is recommended \nthat a Department's quota be the total, or more than of all the Project quotas in the Department. \nFor further information see, [Working with Departments](https://run-ai-docs.nvidia.com/saas/platform-management/aiinitiatives/organization/departments).\n" }, { "name": "Projects", "description": "Projects implement resource allocation policies and create segregation between \ndifferent initiatives. It can represent a team, an individual, or an initiative that \nshares resources or has a specific resources budget (quota). \nSee [Projects](https://run-ai-docs.nvidia.com/saas/platform-management/aiinitiatives/organization/projects) \nfor more information.\n" }, { "name": "Administrator Command Line Interface", "description": "Information specific to the Administrator Command Line Interface." }, { "name": "Network Topologies", "description": "The Network Topologies API enables administrators to reflect the hierarchical network topology connectivity of nodes in a data center, such as racks, blocks, and other organizational units, to improve pod scheduling decisions for communication-intensive AI/ML workloads. To support topology-aware scheduling, this API allows administrators to define a multi-level network topology element using ordered Kubernetes node labels that represent the network connectivity of nodes in the data center. Nodes are labeled with the same key-value pairs labels that represent their location in the data center network. These labels are used by the NVIDIA Run:ai Scheduler to prefer scheduling pods on nodes that are \"closer\" to each other, minimizing communication overhead and optimizing workload performance." }, { "name": "AuditLogs", "description": "The audit log provides audit trail information for user activity, changes to business objects and other important information. For more information, see [Audit log](https://run-ai-docs.nvidia.com/saas/infrastructure-setup/procedures/event-history)." }, { "name": "Nodes", "description": "Nodes are worker machines in Kubernetes and may be either a virtual or a physical machine, depending on the cluster. \nEach Node is managed by the NVIDIA Run:ai control plane. For more information, see [Nodes](https://run-ai-docs.nvidia.com/saas/platform-management/aiinitiatives/resources/nodes).\n" }, { "name": "Notification State", "description": "Use to manage notification state." }, { "name": "Notification Types", "description": "Use to get notification types." }, { "name": "NotificationChannels", "description": "Notification Channels are the medium through which notifications are sent." }, { "name": "Subscriptions", "description": "Use to manage notifications subscriptions." }, { "name": "AI Applications", "description": "AI Applications." }, { "name": "Compute", "description": "A compute resource is a building block that represents compute resources such as GPUs, CPU cores, and CPU memory.\nThe compute resources may consist of multiple physical resources, for example, 0.5 GPU, 8 cores and 200 Megabytes of CPU memory. \nA compute resource is available to a scope and and all of the organizational units within that scope. \n \nFor more information, see [Compute resource](https://run-ai-docs.nvidia.com/saas/workloads-in-nvidia-run-ai/assets/compute-resources).\n" }, { "name": "Assets", "description": "General cross-assets APIs" }, { "name": "Credentials", "description": "Credentials are used to unlock protected resources such as applications, containers, and other assets. For more information, see [Credentials](https://run-ai-docs.nvidia.com/saas/workloads-in-nvidia-run-ai/assets/credentials)." }, { "name": "Datasources", "description": "Data source assets." }, { "name": "Environment", "description": "An environment resource designates the container image, the image pull policy, working directory, security parameters, and others. \nIt exposes all the necessary tools (open source, 3rd party, or custom tools) along \nwith their connection interfaces including external node port and the container ports.\nYou can also specify a standard, distributed, or inference workload architecture for the environment.\nAn environment is a mandatory building block for the creation of a workload.\nFor more information, see [Environments](https://run-ai-docs.nvidia.com/saas/workloads-in-nvidia-run-ai/assets/environments).\n" }, { "name": "Git", "description": "Use Git as a data source location for data sets that are relevant to the workload being submitted." }, { "name": "HostPath", "description": "Use a HostPath as a data source location for data sets that are relevant to the workload being submitted." }, { "name": "NFS", "description": "Use NFS as a data source location for data sets that are relevant to the workload being submitted." }, { "name": "PVC", "description": "Use a PVC as a data source location for data sets that are relevant to the workload being submitted." }, { "name": "S3", "description": "Use an S3 simple storage service as a data source location for data sets that are relevant to the workload being submitted." }, { "name": "Template", "description": "Templates are a pre-set configuration used to quickly configure and submit workloads using existing assets." }, { "name": "Workspace", "description": "Specification for workspaces." }, { "name": "Training", "description": "Specification for trainings." }, { "name": "Inference", "description": "Specification for inferences." }, { "name": "Workload", "description": "Specification for workloads." }, { "name": "Synchronization", "description": "Internal interface for synchronizing assets between the clusters and the control plane." }, { "name": "Registry", "description": "Use an images registry to enable the listting of repositories and tags that can be used as a data source location for data sets that are relevant to the workload being submitted." }, { "name": "ConfigMap", "description": "Use a ConfigMap as a data source location for data sets that are relevant to the workload being submitted." }, { "name": "Secret", "description": "Use a credentials as a data source location for data sets that are relevant to the workload being submitted." } ], "paths": { "/api/v1/clusters/{clusterUuid}/nodes": { "get": { "summary": "Get a list of nodes.", "description": "Retrieve a list of nodes from the Kubernetes cluster. Deprecated - use `/api/v1/nodes` instead.", "operationId": "get_nodes", "deprecated": true, "tags": [ "Nodes" ], "parameters": [ { "$ref": "#/components/parameters/ClusterUuid" }, { "$ref": "#/components/parameters/QueryNodeName" }, { "$ref": "#/components/parameters/NodesFilter" }, { "$ref": "#/components/parameters/NodesSortBy" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Nodes" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/clusters/{clusterUuid}/nodes/count": { "get": { "summary": "Count nodes", "operationId": "count_nodes", "description": "Count nodes", "tags": [ "Nodes" ], "parameters": [ { "$ref": "#/components/parameters/ClusterUuid" }, { "$ref": "#/components/parameters/NodesFilter" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "ok", "content": { "application/json": { "schema": { "type": "object", "properties": { "count": { "type": "integer", "format": "int64" } }, "required": [ "count" ] } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/clusters": { "get": { "summary": "Get a list of clusters.", "description": "Retrieve a list of clusters with details.", "operationId": "get_clusters", "tags": [ "Clusters" ], "parameters": [ { "$ref": "#/components/parameters/QueryVerbosity" }, { "$ref": "#/components/parameters/QueryIncludeRequestedForDelete" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/DisplayedCluster" } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create a cluster.", "description": "Use to create a Kubernetes cluster.", "operationId": "create_cluster", "tags": [ "Clusters" ], "requestBody": { "description": "The cluster to create.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ClusterCreationRequest" } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DisplayedCluster" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/clusters/{clusterUuid}": { "get": { "summary": "Get cluster by id.", "description": "Retrieve cluster details by Universally Unique Identifier (UUID).", "operationId": "get_cluster_by_uuid", "tags": [ "Clusters" ], "parameters": [ { "$ref": "#/components/parameters/ClusterUuid" }, { "$ref": "#/components/parameters/QueryVerbosity" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DisplayedCluster" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a cluster by id.", "description": "Use to delete a cluster by Universally Unique Identifier (UUID). \nWill return 202 for success if this api was called on a cluster that its version is >=2.20, \nand force query param is false or not provided.\nWill return 204 for success if force query param is true, or if cluster is in a version < 2.20\n", "operationId": "delete_cluster", "tags": [ "Clusters" ], "parameters": [ { "$ref": "#/components/parameters/ClusterUuid" }, { "$ref": "#/components/parameters/QueryForceDelete" } ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "204": { "$ref": "#/components/responses/204NoContent" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update a cluster by id.", "description": "Use to update the details of a Kubernetes cluster by Universally Unique Identifier (UUID).", "operationId": "updateCluster", "tags": [ "Clusters" ], "parameters": [ { "$ref": "#/components/parameters/ClusterUuid" } ], "requestBody": { "description": "The cluster details to update", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ClusterUpdateRequest" } } } }, "responses": { "204": { "$ref": "#/components/responses/204NoContent" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/clusters/{clusterUuid}/metrics": { "get": { "summary": "Get the cluster metrics data.", "description": "Retrieve the metrics data for a Kubernetes cluster by Universally Unique Identifier (UUID).", "operationId": "get_cluster_metrics", "tags": [ "Clusters" ], "parameters": [ { "$ref": "#/components/parameters/ClusterUuid" }, { "$ref": "#/components/parameters/StartRequired" }, { "$ref": "#/components/parameters/EndRequired" }, { "$ref": "#/components/parameters/NumberOfSamples" }, { "$ref": "#/components/parameters/MetricsType" }, { "$ref": "#/components/parameters/ClusterMetricsGroupBy" }, { "$ref": "#/components/parameters/FilterByNodepoolName" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupedMetricsResponse" } }, "text/csv": {} } }, "207": { "description": "Partial success.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupedMetricsResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "422": { "$ref": "#/components/responses/422UnprocessableEntity" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/clusters/{clusterUuid}/nodepools/{nodepoolName}/metrics": { "get": { "summary": "Get the node pool metrics data.", "description": "Retrieve the node pool metrics data by Universally Unique Identifier (UUID).", "operationId": "get_nodepool_metrics", "tags": [ "NodePools" ], "parameters": [ { "$ref": "#/components/parameters/ClusterUuid" }, { "$ref": "#/components/parameters/NodepoolPath" }, { "$ref": "#/components/parameters/StartRequired" }, { "$ref": "#/components/parameters/EndRequired" }, { "$ref": "#/components/parameters/NumberOfSamples" }, { "$ref": "#/components/parameters/MetricsType" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsResponse" } }, "text/csv": {} } }, "207": { "description": "Partial success.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/node-pools": { "post": { "summary": "Create nodepool", "operationId": "create_nodepool", "description": "Create nodepool", "tags": [ "NodePools" ], "requestBody": { "description": "Nodepool to create.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NodepoolCreateFields" } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Nodepool" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get nodepools", "operationId": "get_nodepools", "description": "Get nodepools", "tags": [ "NodePools" ], "parameters": [ { "$ref": "#/components/parameters/NodepoolsFilterBy" }, { "$ref": "#/components/parameters/NodepoolsSortBy" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" } ], "responses": { "200": { "description": "ok", "content": { "application/json": { "schema": { "type": "object", "properties": { "nodepools": { "type": "array", "items": { "$ref": "#/components/schemas/Nodepool" } } } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/node-pools/count": { "get": { "summary": "Count nodepools", "operationId": "count_nodepools", "description": "Count nodepools", "tags": [ "NodePools" ], "parameters": [ { "$ref": "#/components/parameters/NodepoolsFilterBy" } ], "responses": { "200": { "description": "ok", "content": { "application/json": { "schema": { "type": "object", "properties": { "count": { "type": "integer", "format": "int64" } }, "required": [ "count" ] } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/node-pools/{nodepoolId}": { "delete": { "summary": "Delete nodepool", "operationId": "delete_nodepool", "description": "Delete nodepool", "tags": [ "NodePools" ], "parameters": [ { "$ref": "#/components/parameters/NodepoolId" } ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "204": { "$ref": "#/components/responses/204NoContent" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update nodepool", "operationId": "update_nodepool", "description": "Update nodepool", "tags": [ "NodePools" ], "parameters": [ { "$ref": "#/components/parameters/NodepoolId" } ], "requestBody": { "description": "Nodepool to update.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NodepoolUpdateFields" } } } }, "responses": { "200": { "description": "Updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Nodepool" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "patch": { "summary": "Patch nodepool fields", "operationId": "patch_nodepool", "description": "Update only specific fields of a nodepool", "tags": [ "NodePools" ], "parameters": [ { "$ref": "#/components/parameters/NodepoolId" } ], "requestBody": { "description": "Fields to update.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NodepoolUpdateFields" } } } }, "responses": { "200": { "description": "Updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Nodepool" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get nodepool", "operationId": "get_nodepool", "description": "Get nodepool", "tags": [ "NodePools" ], "parameters": [ { "$ref": "#/components/parameters/NodepoolId" } ], "responses": { "200": { "description": "Requested nodepool", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Nodepool" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/clusters/{clusterUuid}/cluster-install-info": { "get": { "summary": "Retrieve the installation instructions of a cluster by ID.", "description": "Use to retrieve installation instruction for a cluster by Universally Unique Identifier (UUID). \nSupports clusters version 2.15 or above.\n", "operationId": "get_cluster_install_info_by_uuid", "tags": [ "Clusters" ], "parameters": [ { "$ref": "#/components/parameters/ClusterUuid" }, { "$ref": "#/components/parameters/ClusterVersion" }, { "$ref": "#/components/parameters/ClusterRemoteURL" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ClusterInstallationInfoResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/nodes": { "get": { "summary": "Get a list of nodes.", "description": "Retrieve a list of nodes from all the Kubernetes clusters of the tenant.", "operationId": "get_tenant_nodes", "tags": [ "Nodes" ], "parameters": [ { "$ref": "#/components/parameters/NodesFilter" }, { "$ref": "#/components/parameters/NodesSortBy" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Nodes" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/nodes/count": { "get": { "summary": "Count tenant nodes", "operationId": "count_tenant_nodes", "description": "Count nodes from all the Kubernetes clusters of the tenant.", "tags": [ "Nodes" ], "parameters": [ { "$ref": "#/components/parameters/NodesFilter" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "ok", "content": { "application/json": { "schema": { "type": "object", "properties": { "count": { "type": "integer", "format": "int64" } }, "required": [ "count" ] } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/nodes/telemetry": { "get": { "summary": "Get node telemetry data.", "description": "Retrieve node telemetry data for use in analysis applications.", "operationId": "get_node_telemetry", "tags": [ "Nodes" ], "parameters": [ { "$ref": "#/components/parameters/FilterByCluster" }, { "$ref": "#/components/parameters/FilterByNodepoolName" }, { "$ref": "#/components/parameters/TelemetryGroupBy" }, { "$ref": "#/components/parameters/TelemetryType" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TelemetryResponse" } }, "text/csv": {} } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/nodes/{nodeId}/metrics": { "get": { "summary": "Get the node metrics data.", "description": "Retrieve the node metrics data by Universally Unique Identifier (UUID).", "operationId": "get_node_metrics", "tags": [ "Nodes" ], "parameters": [ { "$ref": "#/components/parameters/NodeId" }, { "$ref": "#/components/parameters/NodeMetricTypes" }, { "$ref": "#/components/parameters/StartRequired" }, { "$ref": "#/components/parameters/EndRequired" }, { "$ref": "#/components/parameters/NumberOfSamples" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsResponse" } }, "text/csv": {} } }, "207": { "description": "Partial success.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/network-topologies": { "get": { "summary": "Get network topologies.", "description": "Retrieve a list of network topologies with details.", "operationId": "get_network_topologies", "tags": [ "Network Topologies" ], "parameters": [ { "$ref": "#/components/parameters/NetworkTopologiesFilterBy" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "properties": { "networkTopologies": { "type": "array", "items": { "$ref": "#/components/schemas/NetworkTopology" } } } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create network topologies", "description": "Creates a network topology object based on the provided specification.", "operationId": "create_network_topology", "tags": [ "Network Topologies" ], "requestBody": { "description": "The network topology to create.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkTopologyCreateRequest" } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkTopology" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/network-topologies/count": { "get": { "summary": "Count the amount of network topologies in a tenant.", "description": "Retrieve the count of network topologies in a tenant group by selected attributes", "operationId": "get_network_topologies_count", "tags": [ "Network Topologies" ], "parameters": [ { "$ref": "#/components/parameters/NetworkTopologiesFilterBy" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CountResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/network-topologies/{networkTopologyId}": { "get": { "summary": "Get network topology by id.", "description": "Retrieve network topology details by Universally Unique Identifier (UUID).", "operationId": "get_network_topology_by_id", "tags": [ "Network Topologies" ], "parameters": [ { "$ref": "#/components/parameters/NetworkTopologyId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NetworkTopology" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete network topology by ID.", "description": "Delete an existing network topology by its ID.", "operationId": "delete_network_topology", "tags": [ "Network Topologies" ], "parameters": [ { "$ref": "#/components/parameters/NetworkTopologyId" } ], "responses": { "204": { "$ref": "#/components/responses/204NoContent" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/priorities": { "get": { "summary": "Get priorities", "operationId": "get_priorities", "description": "Get priorities", "tags": [ "Org unit" ], "responses": { "200": { "description": "List of all priorities", "content": { "application/json": { "schema": { "type": "object", "properties": { "priorities": { "type": "array", "items": { "$ref": "#/components/schemas/Priority" } } } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/reports": { "get": { "summary": "List reports", "operationId": "list_reports", "tags": [ "Reports" ], "parameters": [ { "$ref": "#/components/parameters/ReportsFilterBy" }, { "$ref": "#/components/parameters/ReportsSortBy" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "reports" ], "properties": { "reports": { "$ref": "#/components/schemas/Reports" } } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create a new report request.", "operationId": "create_report", "tags": [ "Reports" ], "requestBody": { "description": "Report to create.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportRequestFields" } } } }, "responses": { "202": { "description": "Accepted.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Report" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/reports/count": { "get": { "summary": "Count reports", "operationId": "count_reports", "tags": [ "Reports" ], "parameters": [ { "$ref": "#/components/parameters/ReportsFilterBy" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CountResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/reports/availability": { "get": { "summary": "Reports availability", "operationId": "are_reports_available", "tags": [ "Reports" ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "isAvailable" ], "properties": { "isAvailable": { "type": "boolean", "example": true } } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/reports/{reportId}": { "get": { "summary": "Get report", "operationId": "get_report_by_id", "parameters": [ { "$ref": "#/components/parameters/ReportId" } ], "tags": [ "Reports" ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Report" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete report", "operationId": "delete_report_by_id", "parameters": [ { "$ref": "#/components/parameters/ReportId" } ], "tags": [ "Reports" ], "responses": { "204": { "$ref": "#/components/responses/204NoContent" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/reports/{reportId}/file": { "get": { "summary": "Download report", "operationId": "download_report_by_id", "parameters": [ { "$ref": "#/components/parameters/ReportId" } ], "tags": [ "Reports" ], "responses": { "200": { "description": "Executed successfully.", "content": { "text/csv": {} } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/departments": { "post": { "summary": "Create department", "operationId": "create_department", "description": "Create Department", "tags": [ "Departments" ], "requestBody": { "description": "Department to create.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DepartmentCreationRequest" } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Department" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get departments", "operationId": "get_departments", "description": "list departments", "tags": [ "Departments" ], "parameters": [ { "$ref": "#/components/parameters/DepartmentsFilterBy" }, { "$ref": "#/components/parameters/DepartmentsSortBy" }, { "$ref": "#/components/parameters/DepartmentsVerbosity" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" } ], "responses": { "200": { "description": "ok", "content": { "application/json": { "schema": { "type": "object", "required": [ "departments" ], "properties": { "departments": { "type": "array", "items": { "$ref": "#/components/schemas/DepartmentForList" } }, "next": { "type": "integer", "example": 1 } } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/departments/{departmentId}": { "put": { "summary": "Update department", "operationId": "update_department", "description": "Update department by Id", "tags": [ "Departments" ], "parameters": [ { "$ref": "#/components/parameters/DepartmentId" } ], "requestBody": { "description": "Department to update.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DepartmentUpdateRequest" } } } }, "responses": { "200": { "description": "Updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Department" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get department", "operationId": "get_department", "description": "Get department by Id", "tags": [ "Departments" ], "parameters": [ { "$ref": "#/components/parameters/DepartmentId" } ], "responses": { "200": { "description": "ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Department" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete department", "operationId": "delete_department", "description": "Delete department by Id", "tags": [ "Departments" ], "parameters": [ { "$ref": "#/components/parameters/DepartmentId" } ], "responses": { "204": { "description": "Deleted" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/departments/{departmentId}/resources": { "put": { "summary": "Update department resources", "operationId": "update_department_resources", "description": "Update department resources by Id", "tags": [ "Departments" ], "parameters": [ { "$ref": "#/components/parameters/DepartmentId" } ], "requestBody": { "description": "Department resources to update.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourcesUpdateRequest" } } } }, "responses": { "200": { "description": "Updated", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Resources" } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "patch": { "summary": "Patch department resources", "operationId": "patch_department_resources", "description": "Partial updates to specific items in the list. Should be used for update one or more attributes of an item without modifying the entire resource.", "tags": [ "Departments" ], "parameters": [ { "$ref": "#/components/parameters/DepartmentId" } ], "requestBody": { "description": "Department resources to update.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourcesUpdateRequest" } } } }, "responses": { "200": { "description": "Updated", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Resources" } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/departments/{departmentId}/metrics": { "get": { "summary": "Get department metrics data.", "operationId": "get_department_metrics", "description": "Retrieves department data metrics from the metrics database. Use in reporting and analysis tools.", "tags": [ "Departments" ], "parameters": [ { "$ref": "#/components/parameters/DepartmentId" }, { "$ref": "#/components/parameters/OrgUnitMetricTypes" }, { "$ref": "#/components/parameters/StartRequired" }, { "$ref": "#/components/parameters/EndRequired" }, { "$ref": "#/components/parameters/NumberOfSamples" }, { "$ref": "#/components/parameters/FilterByNodepoolName" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsResponse" } }, "text/csv": {} } }, "207": { "description": "Partial success.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/departments/telemetry": { "get": { "summary": "Get departments telemetry", "operationId": "get_departments_telemetry", "tags": [ "Departments" ], "parameters": [ { "$ref": "#/components/parameters/FilterByCluster" }, { "$ref": "#/components/parameters/FilterByNodepoolName" }, { "$ref": "#/components/parameters/FilterByDepartment" }, { "$ref": "#/components/parameters/TelemetryGroupByDepartment" }, { "$ref": "#/components/parameters/TelemetryType1" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TelemetryResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/departments/count": { "get": { "summary": "Count departments", "operationId": "count_departments", "description": "count departments", "tags": [ "Departments" ], "parameters": [ { "$ref": "#/components/parameters/DepartmentsFilterBy" } ], "responses": { "200": { "description": "ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CountResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/projects": { "post": { "summary": "Create project", "operationId": "create_project", "description": "Create a project", "tags": [ "Projects" ], "requestBody": { "description": "Project to create.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectCreationRequest" } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get projects", "operationId": "get_projects", "description": "List projects", "tags": [ "Projects" ], "parameters": [ { "$ref": "#/components/parameters/ProjectsFilterBy" }, { "$ref": "#/components/parameters/ProjectsSortBy" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "ok", "content": { "application/json": { "schema": { "type": "object", "required": [ "projects" ], "properties": { "projects": { "type": "array", "items": { "$ref": "#/components/schemas/Project" } }, "next": { "type": "integer", "example": 1 } } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/projects/{projectId}": { "put": { "summary": "Update project", "operationId": "update_project", "description": "Update project by Id", "tags": [ "Projects" ], "parameters": [ { "$ref": "#/components/parameters/ProjectId" } ], "requestBody": { "description": "Project to update.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectUpdateRequest" } } } }, "responses": { "200": { "description": "Updated", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get project", "operationId": "get_project", "description": "Get a project by id", "tags": [ "Projects" ], "parameters": [ { "$ref": "#/components/parameters/ProjectId" } ], "responses": { "200": { "description": "ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete project", "operationId": "delete_project", "description": "Delete a project", "tags": [ "Projects" ], "parameters": [ { "$ref": "#/components/parameters/ProjectId" } ], "responses": { "202": { "description": "Accepted" }, "204": { "description": "Deleted" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/projects/{projectId}/resources": { "put": { "summary": "Update project resources", "operationId": "update_project_resources", "description": "Update projects resources", "tags": [ "Projects" ], "parameters": [ { "$ref": "#/components/parameters/ProjectId" } ], "requestBody": { "description": "Project resources to update.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourcesUpdateRequest" } } } }, "responses": { "200": { "description": "Updated", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Resources" } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "patch": { "summary": "Patch project resources", "operationId": "patch_project_resources", "description": "Partial updates to specific items in the list. Should be used for update one or more attributes of an item without modifying the entire resource.", "tags": [ "Projects" ], "parameters": [ { "$ref": "#/components/parameters/ProjectId" } ], "requestBody": { "description": "Project resources to patch.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResourcesUpdateRequest" } } } }, "responses": { "200": { "description": "Updated", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Resources" } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/projects/{projectId}/metrics": { "get": { "summary": "Get project metrics data.", "operationId": "get_project_metrics", "description": "Retrieves project data metrics from the metrics database. Use in reporting and analysis tools.", "tags": [ "Projects" ], "parameters": [ { "$ref": "#/components/parameters/ProjectId" }, { "$ref": "#/components/parameters/OrgUnitMetricTypes" }, { "$ref": "#/components/parameters/StartRequired" }, { "$ref": "#/components/parameters/EndRequired" }, { "$ref": "#/components/parameters/NumberOfSamples" }, { "$ref": "#/components/parameters/FilterByNodepoolName" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsResponse" } }, "text/csv": {} } }, "207": { "description": "Partial success.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/projects/telemetry": { "get": { "summary": "Get projects telemetry", "operationId": "get_projects_telemetry", "description": "Get projects telemetry data by the given query parameters", "tags": [ "Projects" ], "parameters": [ { "$ref": "#/components/parameters/FilterByCluster" }, { "$ref": "#/components/parameters/FilterByNodepoolId" }, { "$ref": "#/components/parameters/FilterByDepartment" }, { "$ref": "#/components/parameters/TelemetryGroupByProject" }, { "$ref": "#/components/parameters/TelemetryType1" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TelemetryResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/org-unit/projects/count": { "get": { "summary": "Count projects", "operationId": "count_projects", "description": "count projects", "tags": [ "Projects" ], "parameters": [ { "$ref": "#/components/parameters/ProjectsFilterBy" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "ok", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CountResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/v1/k8s/clusters/{uuid}/pods": { "parameters": [ { "$ref": "#/components/parameters/uuid" } ] }, "/v1/k8s/clusters/{uuid}/deployments": { "parameters": [ { "$ref": "#/components/parameters/uuid" } ] }, "/v1/k8s/clusters/{uuid}/deployments/{deploymentId}": { "parameters": [ { "$ref": "#/components/parameters/uuid" }, { "$ref": "#/components/parameters/deploymentId" } ] }, "/v1/k8s/clusters/{uuid}": { "parameters": [ { "name": "uuid", "in": "path", "required": true, "description": "Unique identifier of the cluster.", "schema": { "type": "string", "format": "uuid" } } ] }, "/v1/k8s/clusters/{cluster_uuid}/installfile": { "get": { "tags": [ "Clusters" ], "summary": "Get cluster installation file by id.", "description": "Retrieve the installation values file of a cluster by Retrieve the installation values file of a given cluster by ID. \nSupports clusters 2.13 and lower.\n", "operationId": "getInstallFile", "parameters": [ { "name": "cluster_uuid", "in": "path", "required": true, "description": "Unique identifier of the cluster.", "schema": { "type": "string", "format": "uuid" } }, { "in": "query", "name": "cloud", "description": "Cloud type identifier.", "schema": { "type": "string", "enum": [ "gke", "aws", "aks", "op", "airgapped", "openshift" ] } }, { "in": "query", "name": "clusterip", "description": "Comma-separated list of IP addresses that provide access to the cluster.", "schema": { "type": "string" } }, { "in": "query", "name": "format", "description": "Format of the output file.", "schema": { "type": "string", "enum": [ "json", "yaml" ], "default": "yaml" } } ], "responses": { "200": { "$ref": "#/components/responses/OK" }, "401": { "$ref": "#/components/responses/Unauthorized" }, "404": { "$ref": "#/components/responses/NotFound" } } } }, "/v1/k8s/clusters/{clusterId}/node-pools": { "get": { "tags": [ "NodePools" ], "summary": "Get the cluster's Node Pools.", "description": "Retrieve all the node pools with details from the cluster by Universally Unique Identifier (UUID). Deprecated, please use /api/v1/node-pools instead.", "deprecated": true, "operationId": "getNodePools", "parameters": [ { "name": "clusterId", "in": "path", "description": "Unique identifier of the cluster", "required": true, "style": "simple", "explode": false, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Node pools returned successfully.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NodePool1" } } } } }, "403": { "$ref": "#/components/responses/Unauthorized" }, "404": { "$ref": "#/components/responses/NotFound" }, "default": { "description": "unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } }, "post": { "tags": [ "NodePools" ], "summary": "Create a Node Pool.", "description": "Use to create a node pool in a cluster by Universally Unique Identifier (UUID). Deprecated, please use /api/v1/node-pools instead.", "deprecated": true, "operationId": "createNodePool", "parameters": [ { "name": "clusterId", "in": "path", "description": "Unique identifier of the cluster", "required": true, "style": "simple", "explode": false, "schema": { "type": "string", "format": "uuid" } } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NodePoolCreateRequest" } } } }, "responses": { "201": { "description": "Created" }, "400": { "$ref": "#/components/responses/BadRequest" }, "409": { "$ref": "#/components/responses/Conflict" }, "default": { "description": "unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/v1/k8s/clusters/{clusterId}/node-pools/{id}/labels": { "put": { "tags": [ "NodePools" ], "summary": "Update labels of a Node Pool.", "description": "Use to update the labels of a node pool. Deprecated, please use PATCH /api/v1/node-pools/{id} instead.", "deprecated": true, "operationId": "updateNodePoolLabels", "parameters": [ { "name": "clusterId", "in": "path", "description": "Unique identifier of the cluster", "required": true, "style": "simple", "explode": false, "schema": { "type": "string", "format": "uuid" } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "required": true, "description": "The unique id identifying the Node Pool." } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NodePoolLabelsRequest" } } }, "required": true }, "responses": { "202": { "description": "Node Pool update accepted." }, "400": { "$ref": "#/components/responses/BadRequest" }, "403": { "$ref": "#/components/responses/Unauthorized" }, "404": { "$ref": "#/components/responses/NotFound" }, "503": { "$ref": "#/components/responses/serviceUnavailable" } } } }, "/v1/k8s/clusters/{clusterId}/node-pools/{id}": { "delete": { "tags": [ "NodePools" ], "summary": "Delete a Node Pool by id.§", "description": "Use to delete a node pool by Universally Unique Identifier (UUID). Deprecated, please use /api/v1/node-pools/{id} instead.", "deprecated": true, "operationId": "deleteNodePool", "parameters": [ { "name": "clusterId", "in": "path", "description": "Unique identifier of the cluster", "required": true, "style": "simple", "explode": false, "schema": { "type": "string", "format": "uuid" } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "required": true, "description": "The unique id identifying the Node Pool." } ], "responses": { "202": { "description": "Node Pool deletion accepted" }, "400": { "$ref": "#/components/responses/BadRequest" }, "403": { "$ref": "#/components/responses/Unauthorized" }, "404": { "$ref": "#/components/responses/NotFound" }, "503": { "$ref": "#/components/responses/serviceUnavailable" } } }, "put": { "tags": [ "NodePools" ], "summary": "Update a Node Pool.", "description": "Use to update the details of a node pool by Universally Unique Identifier (UUID). Deprecated, please use PATCH /api/v1/node-pools/{id} instead.", "deprecated": true, "operationId": "updateNodePool", "parameters": [ { "name": "clusterId", "in": "path", "description": "Unique identifier of the cluster", "required": true, "style": "simple", "explode": false, "schema": { "type": "string", "format": "uuid" } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "required": true, "description": "The unique id identifying the Node Pool." } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateNodePoolRequest" } } }, "required": true }, "responses": { "202": { "description": "Node Pool update accepted." }, "400": { "$ref": "#/components/responses/BadRequest" }, "403": { "$ref": "#/components/responses/Unauthorized" }, "404": { "$ref": "#/components/responses/NotFound" }, "503": { "$ref": "#/components/responses/serviceUnavailable" } } } }, "/v1/k8s/setting": { "get": { "operationId": "getTenantSettings", "tags": [ "Tenant" ], "summary": "Get all tenant settings.", "description": "Retrieve all tenant settings.", "responses": { "200": { "description": "The complete set of tenant settings.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Setting" } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "operationId": "updateTenantSetting", "tags": [ "Tenant" ], "summary": "Update a tenant setting.", "description": "Use to update tenant settings.", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TenantSettingCreationRequest" } } } }, "responses": { "200": { "description": "The updated tenant setting.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TenantSettingCreationResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/v1/k8s/setting/{settingKey}": { "get": { "operationId": "getTenantSettingsByKey", "tags": [ "Tenant" ], "summary": "Get a tenant setting by key.", "description": "Retrieve a specific tenant setting by key.", "parameters": [ { "in": "path", "name": "settingKey", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "The requested setting.", "content": { "application/json": { "schema": { "description": "A boolean value that indicates if the requested setting is enabled.", "type": "boolean" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/v1/k8s/clusters/{clusterUuid}/metrics": { "get": { "tags": [ "Clusters" ], "summary": "Get cluster metrics.", "operationId": "getClusterMetrics", "deprecated": true, "description": "Get current cluster metrics. If time range query parameters supplied, then historical data will be returned as well. Deprecated - please use api/v1/clusters/{clusterUuid}/metrics", "parameters": [ { "$ref": "#/components/parameters/ClusterUuid" }, { "$ref": "#/components/parameters/Start" }, { "$ref": "#/components/parameters/End" }, { "$ref": "#/components/parameters/NumberOfSamples" }, { "$ref": "#/components/parameters/NodepoolName" } ], "responses": { "200": { "description": "A Clusters metrics", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/cluster" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/v1/k8s/clusters/{clusterUuid}/departments/metrics": { "get": { "tags": [ "Departments" ], "deprecated": true, "summary": "Get metrics for all departments.", "operationId": "getDepartmentsMetrics", "description": "Get metrics for all departments in the cluster. Use a time range to return historical data (optional). \nIf you use a `start` date, an `end` date is required.\n", "parameters": [ { "$ref": "#/components/parameters/ClusterUuid" }, { "$ref": "#/components/parameters/Start" }, { "$ref": "#/components/parameters/End" }, { "$ref": "#/components/parameters/NumberOfSamples" }, { "$ref": "#/components/parameters/NodepoolName" } ], "responses": { "200": { "description": "Successfully retrieved metrics for all departments.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/departments" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/v1/k8s/clusters/{clusterUuid}/departments/{departmentId}/metrics": { "get": { "tags": [ "Departments" ], "deprecated": true, "summary": "Get metrics for a specific department.", "operationId": "getDepartmentMetrics", "description": "Get metrics for a specific department in the cluster. \nUse a time range to return historical data (optional). If you use a `start` date, an `end` date is required.\n", "parameters": [ { "$ref": "#/components/parameters/ClusterUuid" }, { "$ref": "#/components/parameters/DepartmentId" }, { "$ref": "#/components/parameters/Start" }, { "$ref": "#/components/parameters/End" }, { "$ref": "#/components/parameters/NumberOfSamples" }, { "$ref": "#/components/parameters/NodepoolName" } ], "responses": { "200": { "description": "Successfully retrieved metrics for the department.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/department" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/v1/k8s/clusters/{clusterUuid}/projects/metrics": { "get": { "tags": [ "Projects" ], "deprecated": true, "summary": "Get metrics data for all projects.", "operationId": "getProjectsMetrics", "description": "Retrieves data from the metrics database. \\n Use in reporting and analysis tools. \\n Use a time range to return historical data (optional). If you use a `start` date, an `end` date is required.", "parameters": [ { "$ref": "#/components/parameters/ClusterUuid" }, { "$ref": "#/components/parameters/Start" }, { "$ref": "#/components/parameters/End" }, { "$ref": "#/components/parameters/NumberOfSamples" }, { "$ref": "#/components/parameters/NodepoolName" } ], "responses": { "200": { "description": "Successfully retrieved metrics for all projects.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/projects" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/v1/k8s/clusters/{clusterUuid}/projects/{projectId}/metrics": { "get": { "tags": [ "Projects" ], "deprecated": true, "summary": "Get metrics data for a specific project.", "operationId": "getProjectMetrics", "description": "Retrieves data from the metrics database. \\n Use in reporting and analysis tools. \\n Use a time range to return historical data (optional). If you use a `start` date, an `end` date is required.", "parameters": [ { "$ref": "#/components/parameters/ClusterUuid" }, { "$ref": "#/components/parameters/ProjectId1" }, { "$ref": "#/components/parameters/Start" }, { "$ref": "#/components/parameters/End" }, { "$ref": "#/components/parameters/NumberOfSamples" }, { "$ref": "#/components/parameters/NodepoolName" } ], "responses": { "200": { "description": "Successfully retrieved metrics for the project.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/project" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/v1/k8s/admin-cli/{os}": { "parameters": [ { "$ref": "#/components/parameters/os" } ], "get": { "summary": "Get Administrator Command Line Interface release.", "description": "Retrieve the Administrator Command Line Interface version.", "operationId": "getAdminCLIRelease", "tags": [ "Administrator Command Line Interface" ], "responses": { "200": { "$ref": "#/components/responses/CLIReleaseResponse" }, "400": { "$ref": "#/components/responses/BadRequest1" }, "404": { "$ref": "#/components/responses/NotFound" }, "503": { "$ref": "#/components/responses/serviceUnavailable" } } } }, "/v1/k8s/admin-cli/{os}/checksum": { "parameters": [ { "$ref": "#/components/parameters/os" } ], "get": { "summary": "Get Administrator Command Line Interface release details.", "description": "Retrieve the details of the Administrator Command Line Interface release.", "operationId": "getAdminCLIReleaseChecksum", "tags": [ "Administrator Command Line Interface" ], "responses": { "200": { "$ref": "#/components/responses/ChecksumResponse" }, "400": { "$ref": "#/components/responses/BadRequest1" }, "404": { "$ref": "#/components/responses/NotFound" }, "503": { "$ref": "#/components/responses/serviceUnavailable" } } } }, "/v1/k8s/admin-cli/{version}/{os}": { "parameters": [ { "$ref": "#/components/parameters/os" }, { "$ref": "#/components/parameters/version" } ], "get": { "summary": "Get Administrator Command Line Interface release by version.", "description": "Retrieve the Administrator Command Line Interface release by version.", "operationId": "getAdminCLIReleaseByVersion", "tags": [ "Administrator Command Line Interface" ], "responses": { "200": { "$ref": "#/components/responses/CLIReleaseResponse" }, "400": { "$ref": "#/components/responses/BadRequest1" }, "404": { "$ref": "#/components/responses/NotFound" }, "503": { "$ref": "#/components/responses/serviceUnavailable" } } } }, "/v1/k8s/admin-cli/{version}/{os}/checksum": { "parameters": [ { "$ref": "#/components/parameters/os" }, { "$ref": "#/components/parameters/version" } ], "get": { "summary": "Get Administrator Command Line Interface release checksums.", "description": "Retrieve the checksums of the Administrator Command Line Interface release.", "operationId": "getAdminCLIReleaseByVersionChecksum", "tags": [ "Administrator Command Line Interface" ], "responses": { "200": { "$ref": "#/components/responses/ChecksumResponse" }, "400": { "$ref": "#/components/responses/BadRequest1" }, "404": { "$ref": "#/components/responses/NotFound" }, "503": { "$ref": "#/components/responses/serviceUnavailable" } } } }, "/api/v1/asset/compute": { "get": { "summary": "List compute assets.", "description": "Use to retrieve a list of compute assets.", "operationId": "list_compute_assets", "tags": [ "Compute" ], "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" }, { "$ref": "#/components/parameters/AssetScopeFilter" }, { "$ref": "#/components/parameters/AssetProjectFilter" }, { "$ref": "#/components/parameters/AssetDepartmentFilter" }, { "$ref": "#/components/parameters/AssetClusterFilter" }, { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/ComplyToReplicaType" }, { "$ref": "#/components/parameters/includeDescendants" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ComputeListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create compute asset.", "description": "Use to create a compute asset.", "operationId": "create_compute_asset", "tags": [ "Compute" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ComputeCreationRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ComputeAsset" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/compute/{AssetId}": { "parameters": [ { "$ref": "#/components/parameters/AssetId" } ], "get": { "summary": "Retrieve a compute asset.", "description": "Use to retrieve the details of a compute asset by id.", "operationId": "get_compute_asset_by_id", "tags": [ "Compute" ], "parameters": [ { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/ComplyToReplicaType" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ComputeAsset" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update a compute asset.", "description": "Use to update the details of a compute asset by id.", "operationId": "update_compute_asset_by_id", "tags": [ "Compute" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ComputeUpdateRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ComputeAsset" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "default": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a compute asset.", "description": "Use to delete a compute asset, by id.", "operationId": "delete_compute_asset_by_id", "tags": [ "Compute" ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/credentials": { "get": { "summary": "List credentials.", "description": "Use to retrieve a list of all existing credentials.", "operationId": "list_credentials_assets", "tags": [ "Credentials" ], "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" }, { "$ref": "#/components/parameters/AssetScopeFilter" }, { "$ref": "#/components/parameters/AssetProjectFilter" }, { "$ref": "#/components/parameters/AssetDepartmentFilter" }, { "$ref": "#/components/parameters/AssetClusterFilter" }, { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/IncludeStatus" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CredentialsListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/credentials/access-key": { "get": { "tags": [ "Credentials" ], "summary": "List access keys.", "description": "Use to retrieve a list of S3-compatible access key credentials.", "operationId": "list_access_keys", "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" }, { "$ref": "#/components/parameters/AssetScopeFilter" }, { "$ref": "#/components/parameters/AssetProjectFilter" }, { "$ref": "#/components/parameters/AssetDepartmentFilter" }, { "$ref": "#/components/parameters/AssetClusterFilter" }, { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/IncludeStatus" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessKeyListResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "tags": [ "Credentials" ], "summary": "Create an access key.", "description": "Use to create an S3-compatible access key credential.", "operationId": "create_access_key", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessKeyCreationRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessKey" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/credentials/access-key/{AssetId}": { "parameters": [ { "$ref": "#/components/parameters/AssetId" } ], "get": { "tags": [ "Credentials" ], "summary": "Get an access key.", "description": "Use to retrieve the details of an S3-compatible access key credential by id.", "operationId": "get_access_key_by_id", "parameters": [ { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/IncludeStatus" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessKey" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "tags": [ "Credentials" ], "summary": "Update an access key.", "description": "Use to update the details of an S3-compatible access key credential by id.", "operationId": "update_access_key", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessKeyUpdateRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessKey" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "tags": [ "Credentials" ], "summary": "Delete an access key.", "description": "Use to delete an S3-compatible access key credential by id.", "operationId": "delete_access_key", "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "412": { "$ref": "#/components/responses/412PreconditionFailed" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/credentials/password": { "get": { "tags": [ "Credentials" ], "summary": "List password credentials.", "description": "Use to retrieve a list of password credentials.", "operationId": "list_passwords", "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" }, { "$ref": "#/components/parameters/AssetScopeFilter" }, { "$ref": "#/components/parameters/AssetProjectFilter" }, { "$ref": "#/components/parameters/AssetDepartmentFilter" }, { "$ref": "#/components/parameters/AssetClusterFilter" }, { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/IncludeStatus" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordListResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "tags": [ "Credentials" ], "summary": "Create a userid / password credential.", "description": "Use to create a userid / password credential.", "operationId": "create_password", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordCreationRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Password" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/credentials/password/{AssetId}": { "parameters": [ { "$ref": "#/components/parameters/AssetId" } ], "get": { "tags": [ "Credentials" ], "summary": "Get a userid / password credential.", "description": "Use to retrieve the details of a userid / password credential asset by id.", "operationId": "get_password_by_id", "parameters": [ { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/IncludeStatus" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Password" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "tags": [ "Credentials" ], "summary": "Update a password credential.", "description": "Use to Update the details of a password credential by id.", "operationId": "update_password", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordUpdateRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Password" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "tags": [ "Credentials" ], "summary": "Delete a password asset.", "description": "Udse to delete a password credential by id.", "operationId": "delete_password", "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "412": { "$ref": "#/components/responses/412PreconditionFailed" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/credentials/docker-registry": { "get": { "tags": [ "Credentials" ], "summary": "List docker registry credentials.", "description": "Use to retrieve a list of docker registry credentials.", "operationId": "list_docker_registries", "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" }, { "$ref": "#/components/parameters/AssetScopeFilter" }, { "$ref": "#/components/parameters/AssetProjectFilter" }, { "$ref": "#/components/parameters/AssetDepartmentFilter" }, { "$ref": "#/components/parameters/AssetClusterFilter" }, { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/IncludeStatus" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DockerRegistryListResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "tags": [ "Credentials" ], "summary": "Create a docker registry credential.", "description": "Use to create a docker registry credential containing userid, password and url.", "operationId": "create_docker_registry", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DockerRegistryCreationRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DockerRegistry" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/credentials/docker-registry/{AssetId}": { "parameters": [ { "$ref": "#/components/parameters/AssetId" } ], "get": { "tags": [ "Credentials" ], "summary": "Get a docker registry credential.", "description": "Use to retrieve the details of a docker registry credential by id.", "operationId": "get_docker_registry_by_id", "parameters": [ { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/IncludeStatus" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DockerRegistry" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "tags": [ "Credentials" ], "summary": "Update a docker registry credential.", "description": "Use to updates the details of a docker registry credentials by id.", "operationId": "update_docker_registry", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DockerRegistryUpdateRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DockerRegistry" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "tags": [ "Credentials" ], "summary": "Delete a docker registry credential.", "description": "Use to deletes a docker registry credential by id.", "operationId": "delete_docker_registry", "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "412": { "$ref": "#/components/responses/412PreconditionFailed" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/credentials/generic-secret": { "get": { "tags": [ "Credentials" ], "summary": "List generic-secrets.", "description": "Retrieve a list of generic-secret assets.", "operationId": "list_generic_secret", "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" }, { "$ref": "#/components/parameters/AssetScopeFilter" }, { "$ref": "#/components/parameters/AssetProjectFilter" }, { "$ref": "#/components/parameters/AssetDepartmentFilter" }, { "$ref": "#/components/parameters/AssetClusterFilter" }, { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/IncludeStatus" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenericSecretListResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "tags": [ "Credentials" ], "summary": "Create a generic-secret.", "description": "Use to create a generic-secret asset.", "operationId": "create_generic_secret", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenericSecretCreationRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenericSecret" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/credentials/generic-secret/{AssetId}": { "parameters": [ { "$ref": "#/components/parameters/AssetId" } ], "get": { "tags": [ "Credentials" ], "summary": "Get a generic-secret.", "description": "Returns the details of a generic-secret asset, by id.", "operationId": "get_generic_secret_by_id", "parameters": [ { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/IncludeStatus" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenericSecret" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "tags": [ "Credentials" ], "summary": "Update a generic-secret.", "description": "Updates the details of a generic-secret asset, by id.", "operationId": "update_generic_secret", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenericSecretUpdateRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenericSecret" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "tags": [ "Credentials" ], "summary": "Delete a generic-secret.", "description": "Use to delete a generic-secret asset, by id.", "operationId": "delete_generic_secret", "responses": { "204": { "$ref": "#/components/responses/204NoContent" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "412": { "$ref": "#/components/responses/412PreconditionFailed" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/credentials/ngc-api-key": { "get": { "tags": [ "Credentials" ], "summary": "List ngc-api-keys.", "description": "Retrieve a list of ngcApiKey assets.", "operationId": "list_ngc_api_key", "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" }, { "$ref": "#/components/parameters/AssetScopeFilter" }, { "$ref": "#/components/parameters/AssetProjectFilter" }, { "$ref": "#/components/parameters/AssetDepartmentFilter" }, { "$ref": "#/components/parameters/AssetClusterFilter" }, { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/IncludeStatus" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NgcApiKeyListResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "tags": [ "Credentials" ], "summary": "Create a ngc-api-key.", "description": "Use to create a ngc-api-key asset.", "operationId": "create_ngc_api_key", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NgcApiKeyCreationRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NgcApiKey" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/credentials/ngc-api-key/{AssetId}": { "parameters": [ { "$ref": "#/components/parameters/AssetId" } ], "get": { "tags": [ "Credentials" ], "summary": "Get a ngc-api-key.", "description": "Returns the details of a ngc-api-key asset, by id.", "operationId": "get_ngc_api_key_by_id", "parameters": [ { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/IncludeStatus" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NgcApiKey" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "tags": [ "Credentials" ], "summary": "Update a ngc-api-key.", "description": "Updates the details of a ngc-api-key asset, by id.", "operationId": "update_ngc_api_key", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NgcApiKeyUpdateRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NgcApiKey" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "tags": [ "Credentials" ], "summary": "Delete a ngc-api-key.", "description": "Use to delete a ngc-api-key asset, by id.", "operationId": "delete_ngc_api_key", "responses": { "204": { "$ref": "#/components/responses/204NoContent" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "412": { "$ref": "#/components/responses/412PreconditionFailed" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/registries": { "get": { "tags": [ "Registry" ], "summary": "Get registries.", "description": "Retrieve a list of registries assets.", "operationId": "list_registries", "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RegistryListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "tags": [ "Registry" ], "summary": "Create a registry asset.", "description": "Use to create a registry asset containing a registry base url and credentials.", "operationId": "create_registry", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RegistryCreationRequest" } } } }, "responses": { "201": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Registry" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/registries/{AssetId}": { "parameters": [ { "$ref": "#/components/parameters/AssetId" } ], "get": { "tags": [ "Registry" ], "summary": "Get a registry.", "description": "Retrieve a registry asset by id.", "operationId": "get_registry_by_id", "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Registry" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "tags": [ "Registry" ], "summary": "Delete a registry asset.", "description": "Use to delete a registry asset containing registry base url and credentials by id.", "operationId": "delete_registry", "responses": { "204": { "description": "Registry has been deleted." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "tags": [ "Registry" ], "summary": "Update a registry asset.", "description": "Use to update a registry asset containing registry base url and credentials by id.", "operationId": "update_registry", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RegistryUpdateRequest" } } } }, "responses": { "200": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Registry" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/registries/{AssetId}/repositories": { "get": { "tags": [ "Registry" ], "summary": "Get the repositories in the registry.", "parameters": [ { "$ref": "#/components/parameters/AssetId" }, { "$ref": "#/components/parameters/SearchName" } ], "description": "Retrieve a list of repositories from a registry asset.", "operationId": "get_repositories", "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Repositories" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/registries/{AssetId}/repositories/tags": { "get": { "tags": [ "Registry" ], "summary": "Get the repositories tags in the registry.", "parameters": [ { "$ref": "#/components/parameters/AssetId" }, { "name": "repository", "in": "query", "required": true, "description": "The repository name that its tags are requested.", "schema": { "type": "string" }, "allowReserved": true }, { "$ref": "#/components/parameters/SearchName" } ], "description": "Retrieve a list of repository tags from a repository asset.", "operationId": "get_repository_tags", "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RepositoryTags" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/environment": { "get": { "summary": "List environment assets.", "description": "Use to retrieve a list of environment assets.", "operationId": "list_environment_assets", "tags": [ "Environment" ], "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" }, { "$ref": "#/components/parameters/AssetScopeFilter" }, { "$ref": "#/components/parameters/AssetProjectFilter" }, { "$ref": "#/components/parameters/AssetDepartmentFilter" }, { "$ref": "#/components/parameters/AssetClusterFilter" }, { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/DistributedFrameworkQuery" }, { "$ref": "#/components/parameters/IsDistributedQuery" }, { "$ref": "#/components/parameters/IsTrainingQuery" }, { "$ref": "#/components/parameters/IsWorkspaceQuery" }, { "$ref": "#/components/parameters/IsInferenceQuery" }, { "$ref": "#/components/parameters/ComplyToReplicaType" }, { "$ref": "#/components/parameters/IncludeStatus" }, { "$ref": "#/components/parameters/includeDescendants" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnvironmentListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create an environment asset.", "description": "Use to create an environment asset.", "operationId": "create_environment_asset", "tags": [ "Environment" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnvironmentCreationRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnvironmentAsset" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/environment/{AssetId}": { "parameters": [ { "$ref": "#/components/parameters/AssetId" } ], "get": { "summary": "Get an environment asset.", "description": "Use to retrieve the details of environment asset by id.", "operationId": "get_environment_asset_by_id", "parameters": [ { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/ComplyToReplicaType" }, { "$ref": "#/components/parameters/IncludeStatus" } ], "tags": [ "Environment" ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnvironmentAsset" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update an environment asset.", "description": "Use to update the details of environment asset by id.", "operationId": "update_environment_asset_by_id", "tags": [ "Environment" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnvironmentUpdateRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnvironmentAsset" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "default": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete an environment asset.", "description": "Use to delete an environment asset by id.", "operationId": "delete_environment_asset_by_id", "tags": [ "Environment" ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/datasource": { "get": { "summary": "List datasource assets.", "description": "Returns a combined list of data-sources.", "operationId": "list_datasource_assets", "tags": [ "Datasources" ], "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" }, { "$ref": "#/components/parameters/AssetScopeFilter" }, { "$ref": "#/components/parameters/AssetProjectFilter" }, { "$ref": "#/components/parameters/AssetDepartmentFilter" }, { "$ref": "#/components/parameters/AssetClusterFilter" }, { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/IncludeStatus" }, { "$ref": "#/components/parameters/AssetIdsFilter" }, { "$ref": "#/components/parameters/ComplyToReplicaType" }, { "$ref": "#/components/parameters/includeDescendants" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DatasourceListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/datasource/git": { "get": { "summary": "List Git assets.", "description": "Retrieve a list of Git datasource assets.", "operationId": "list_git_assets", "tags": [ "Git" ], "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" }, { "$ref": "#/components/parameters/AssetScopeFilter" }, { "$ref": "#/components/parameters/AssetProjectFilter" }, { "$ref": "#/components/parameters/AssetDepartmentFilter" }, { "$ref": "#/components/parameters/AssetClusterFilter" }, { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/IncludeStatus" }, { "$ref": "#/components/parameters/AssetIdsFilter" }, { "$ref": "#/components/parameters/ComplyToReplicaType" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GitListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create a Git asset.", "description": "Use to create a a Git datasource asset.", "operationId": "create_git_asset", "tags": [ "Git" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GitCreationRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GitAsset" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/datasource/git/{AssetId}": { "parameters": [ { "$ref": "#/components/parameters/AssetId" } ], "get": { "summary": "Get a Git asset.", "description": "Use to retrieve the details of a Git datasource asset by id.", "operationId": "get_git_asset_by_id", "tags": [ "Git" ], "parameters": [ { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/IncludeStatus" }, { "$ref": "#/components/parameters/ComplyToReplicaType" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GitAsset" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update a Git asset.", "description": "Use to update the details of Git datasource asset by id.", "operationId": "update_git_asset_by_id", "tags": [ "Git" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GitUpdateRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GitAsset" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "default": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a Git asset.", "description": "Use to delete a Git datasource asset by id.", "operationId": "delete_git_asset_by_id", "tags": [ "Git" ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/datasource/host-path": { "get": { "tags": [ "HostPath" ], "summary": "List host path assets.", "description": "Retrieve a list of hostPath datasource assets.", "operationId": "list_host_path_assets", "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" }, { "$ref": "#/components/parameters/AssetScopeFilter" }, { "$ref": "#/components/parameters/AssetProjectFilter" }, { "$ref": "#/components/parameters/AssetDepartmentFilter" }, { "$ref": "#/components/parameters/AssetClusterFilter" }, { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/AssetIdsFilter" }, { "$ref": "#/components/parameters/ComplyToReplicaType" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HostPathListResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "tags": [ "HostPath" ], "summary": "Create a host path asset.", "description": "Use to create a hostPath datasource asset.", "operationId": "create_host_path", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HostPathCreationRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HostPathAsset" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/datasource/host-path/{AssetId}": { "parameters": [ { "$ref": "#/components/parameters/AssetId" } ], "get": { "tags": [ "HostPath" ], "parameters": [ { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/ComplyToReplicaType" } ], "summary": "Get a hostPath asset.", "description": "Use to retrieve the details of a hostPath datasource by id.", "operationId": "get_host_path_by_id", "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HostPathAsset" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "tags": [ "HostPath" ], "summary": "Update a hostPath asset.", "description": "Use to update the details of a hostPath datasource by id.", "operationId": "update_host_path_by_id", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HostPathUpdateRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HostPathAsset" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "tags": [ "HostPath" ], "summary": "Delete a hostPath asset.", "description": "Use to delete a hostPath datasource asset by id.", "operationId": "delete_host_path_by_id", "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "412": { "$ref": "#/components/responses/412PreconditionFailed" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/datasource/nfs": { "get": { "summary": "List NFS assets.", "description": "Retrieve a list of NFS datasource assets.", "operationId": "list_nfs_assets", "tags": [ "NFS" ], "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" }, { "$ref": "#/components/parameters/AssetScopeFilter" }, { "$ref": "#/components/parameters/AssetProjectFilter" }, { "$ref": "#/components/parameters/AssetDepartmentFilter" }, { "$ref": "#/components/parameters/AssetClusterFilter" }, { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/AssetIdsFilter" }, { "$ref": "#/components/parameters/ComplyToReplicaType" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NFSListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create an NFS asset.", "description": "Use to create an NFS datasource asset.", "operationId": "create_nfs_asset", "tags": [ "NFS" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NFSCreationRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/S3Asset" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/datasource/nfs/{AssetId}": { "parameters": [ { "$ref": "#/components/parameters/AssetId" } ], "get": { "summary": "Get an NFS asset.", "description": "Use to retrieve the details of NFS datasource asset by id.", "operationId": "get_nfs_asset_by_id", "tags": [ "NFS" ], "parameters": [ { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/ComplyToReplicaType" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NFSAsset" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update an NFS asset.", "description": "Use to update the details of NFS datasource asset by id.", "operationId": "update_nfs_asset_by_id", "tags": [ "NFS" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NFSUpdateRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NFSAsset" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "default": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete an NFS asset.", "description": "Use to delete an NFS datasource asset by id.", "operationId": "delete_nfs_asset_by_id", "tags": [ "NFS" ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/datasource/pvc": { "get": { "summary": "List PVC assets.", "description": "Retrieves a list of PVC datasource assets.", "operationId": "list_pvc_assets", "tags": [ "PVC" ], "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" }, { "$ref": "#/components/parameters/AssetScopeFilter" }, { "$ref": "#/components/parameters/AssetProjectFilter" }, { "$ref": "#/components/parameters/AssetDepartmentFilter" }, { "$ref": "#/components/parameters/AssetClusterFilter" }, { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/IncludeStatus" }, { "$ref": "#/components/parameters/AssetIdsFilter" }, { "$ref": "#/components/parameters/ComplyToReplicaType" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PVCListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create a PVC asset.", "description": "Use to create a PVC datasource asset.", "operationId": "create_pvc_asset", "tags": [ "PVC" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PVCCreationRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PVCAsset" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/datasource/pvc/{AssetId}": { "parameters": [ { "$ref": "#/components/parameters/AssetId" } ], "get": { "summary": "Get a PVC asset.", "description": "Retrieve the details of a PVC datasource asset by id.", "operationId": "get_pvc_asset_by_id", "tags": [ "PVC" ], "parameters": [ { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/IncludeStatus" }, { "$ref": "#/components/parameters/ComplyToReplicaType" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PVCAsset" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update a PVC asset.", "description": "Use to update the details of a PVC datasource asset by id.", "operationId": "update_pvc_asset_by_id", "tags": [ "PVC" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PVCUpdateRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PVCAsset" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "default": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a PVC asset.", "description": "Use to delete a PVC datasource asset by id.", "operationId": "delete_pvc_asset_by_id", "tags": [ "PVC" ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/datasource/pvc/{AssetId}/history": { "get": { "summary": "Get the PVC history.", "description": "Retrieve PVC history details, including events, using a PVC id.", "operationId": "get_pvc_history", "tags": [ "PVC" ], "parameters": [ { "$ref": "#/components/parameters/AssetId" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PVCHistoryResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/datasource/s3": { "get": { "summary": "List S3 assets.", "description": "Retrieve a list of S3 compatible datasource assets.", "operationId": "list_s3_assets", "tags": [ "S3" ], "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" }, { "$ref": "#/components/parameters/AssetScopeFilter" }, { "$ref": "#/components/parameters/AssetProjectFilter" }, { "$ref": "#/components/parameters/AssetDepartmentFilter" }, { "$ref": "#/components/parameters/AssetClusterFilter" }, { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/IncludeStatus" }, { "$ref": "#/components/parameters/AssetIdsFilter" }, { "$ref": "#/components/parameters/ComplyToReplicaType" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/S3ListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create an S3 asset.", "description": "Use to create an S3 compatible datasource asset.", "operationId": "create_s3_asset", "tags": [ "S3" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/S3CreationRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/S3Asset" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/datasource/s3/{AssetId}": { "parameters": [ { "$ref": "#/components/parameters/AssetId" } ], "get": { "summary": "Get an S3 asset.", "description": "Retrieve the details of S3 compatible datasource asset by id.", "operationId": "get_s3_asset_by_id", "tags": [ "S3" ], "parameters": [ { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/IncludeStatus" }, { "$ref": "#/components/parameters/ComplyToReplicaType" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/S3Asset" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update an S3 asset.", "description": "Use to update the details of an S3 compatible datasource asset by id.", "operationId": "update_s3_asset_by_id", "tags": [ "S3" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/S3UpdateRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/S3Asset" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "default": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete an S3 asset.", "description": "Use to delete an S3 compatible datasource asset by id.", "operationId": "delete_s3_asset_by_id", "parameters": [ { "$ref": "#/components/parameters/AssetId" } ], "tags": [ "S3" ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/workload-template": { "get": { "summary": "List templates.", "description": "Retrieve a list of templates.", "operationId": "list_templates", "deprecated": true, "tags": [ "Template" ], "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" }, { "$ref": "#/components/parameters/AssetScopeFilter" }, { "$ref": "#/components/parameters/AssetProjectFilter" }, { "$ref": "#/components/parameters/AssetDepartmentFilter" }, { "$ref": "#/components/parameters/AssetClusterFilter" }, { "$ref": "#/components/parameters/DistributedFrameworkQuery" }, { "$ref": "#/components/parameters/IsDistributedQuery" }, { "$ref": "#/components/parameters/IsTrainingQuery" }, { "$ref": "#/components/parameters/IsWorkspaceQuery" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadTemplateListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create a template.", "description": "Use to create a template.", "operationId": "create_template", "deprecated": true, "tags": [ "Template" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadTemplateCreationRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadTemplate" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/workload-template/{AssetId}": { "parameters": [ { "$ref": "#/components/parameters/AssetId" } ], "get": { "summary": "Get a template.", "description": "Retrieve the details of a template by id.", "operationId": "get_template_by_id", "deprecated": true, "tags": [ "Template" ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadTemplate" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update a template.", "description": "Use to update the details of a template by id.", "operationId": "update_template", "deprecated": true, "tags": [ "Template" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadTemplateUpdateRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadTemplate" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a template.", "description": "Use to delete a template by id.", "operationId": "delete_template_by_id", "deprecated": true, "tags": [ "Template" ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/v1/k8s/clusters/{clusterUuid}/workspaces": { "parameters": [ { "$ref": "#/components/parameters/ClusterUuid" } ] }, "/v1/k8s/clusters/{clusterUuid}/trainings": { "parameters": [ { "$ref": "#/components/parameters/ClusterUuid" } ] }, "/api/v1/asset/datasource/config-map": { "get": { "summary": "List ConfigMap datasource assets.", "description": "Retrieve a list of ConfigMap datasource assets.", "operationId": "list_config_map_assets", "tags": [ "ConfigMap" ], "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" }, { "$ref": "#/components/parameters/AssetScopeFilter" }, { "$ref": "#/components/parameters/AssetProjectFilter" }, { "$ref": "#/components/parameters/AssetDepartmentFilter" }, { "$ref": "#/components/parameters/AssetClusterFilter" }, { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/IncludeStatus" }, { "$ref": "#/components/parameters/AssetIdsFilter" }, { "$ref": "#/components/parameters/ComplyToReplicaType" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConfigMapListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create a ConfigMap datasource asset.", "description": "Use to create a ConfigMap datasource asset.", "operationId": "create_config_map_asset", "tags": [ "ConfigMap" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConfigMapCreationRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConfigMapAsset" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/datasource/config-map/{AssetId}": { "parameters": [ { "$ref": "#/components/parameters/AssetId" } ], "get": { "summary": "Get a ConfigMap asset.", "description": "Retrieve the details of ConfigMap datasource asset by id.", "operationId": "get_config_map_asset_by_id", "tags": [ "ConfigMap" ], "parameters": [ { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/IncludeStatus" }, { "$ref": "#/components/parameters/ComplyToReplicaType" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConfigMapAsset" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update a ConfigMap asset.", "description": "Use to update the details of a ConfigMap datasource asset by id.", "operationId": "update_config_map_asset_by_id", "tags": [ "ConfigMap" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConfigMapUpdateRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConfigMapAsset" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "default": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a ConfigMap asset.", "description": "Use to delete a ConfigMap datasource asset by id.", "operationId": "delete_config_map_asset_by_id", "tags": [ "ConfigMap" ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/datasource/secrets": { "get": { "summary": "List Secret datasource assets.", "description": "Retrieve a list of Secret datasource assets.", "operationId": "list_secret_assets", "tags": [ "Secret" ], "parameters": [ { "$ref": "#/components/parameters/AssetNameFilter" }, { "$ref": "#/components/parameters/AssetScopeFilter" }, { "$ref": "#/components/parameters/AssetProjectFilter" }, { "$ref": "#/components/parameters/AssetDepartmentFilter" }, { "$ref": "#/components/parameters/AssetClusterFilter" }, { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/IncludeStatus" }, { "$ref": "#/components/parameters/AssetIdsFilter" }, { "$ref": "#/components/parameters/ComplyToReplicaType" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SecretAssetListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create a Secret datasource asset.", "description": "Use to create a Secret datasource asset.", "operationId": "create_secret_asset", "tags": [ "Secret" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SecretAssetCreationRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SecretAsset" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/asset/datasource/secrets/{AssetId}": { "parameters": [ { "$ref": "#/components/parameters/AssetId" } ], "get": { "summary": "Get a Secret asset.", "description": "Retrieve the details of Secret datasource asset by id.", "operationId": "get_secret_asset_by_id", "tags": [ "Secret" ], "parameters": [ { "$ref": "#/components/parameters/IncludeUsageInfo" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/IncludeStatus" }, { "$ref": "#/components/parameters/ComplyToReplicaType" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SecretAsset" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update a Secret asset.", "description": "Use to update the details of a Secret datasource asset by id.", "operationId": "update_Secret_asset_by_id", "tags": [ "Secret" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SecretAssetUpdateRequest" } } } }, "responses": { "202": { "description": "Request accepted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SecretAsset" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "default": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a Secret asset.", "description": "Use to delete a Secret datasource asset by id.", "operationId": "delete_secret_asset_by_id", "tags": [ "Secret" ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v2/policy": { "get": { "summary": "List policies", "description": "Retrieve a list of all the applied policies.", "operationId": "list_policies", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadType" }, { "name": "scope", "in": "query", "required": false, "description": "filter by this scope.", "schema": { "type": "string", "enum": [ "tenant", "cluster", "department", "project" ] } }, { "$ref": "#/components/parameters/FilterByDepartment" }, { "$ref": "#/components/parameters/FilterByProject" }, { "$ref": "#/components/parameters/FilterByCluster" }, { "$ref": "#/components/parameters/IncludeFallbackPolicies" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v2/policy/trainings": { "patch": { "summary": "Update a training policy.", "description": "Use to apply changes to a training policy for a given organizational unit.", "operationId": "update_training_policy_v2", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/ValidateOnly" }, { "$ref": "#/components/parameters/ApproveClusterDeletion" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrainingPolicyChangeRequestV2" } } } }, "responses": { "200": { "description": "Policy applied.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrainingPolicyV2" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Overwrite a training policy.", "description": "Use to apply a training policy for a given organizational unit.", "operationId": "overwrite_training_policy_v2", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/ValidateOnly" }, { "$ref": "#/components/parameters/ApproveClusterDeletion" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrainingPolicyOverwriteRequestV2" } } } }, "responses": { "200": { "description": "Policy applied.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrainingPolicyV2" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get a training policy.", "description": "Retrieve the details of a training policy for a given organizational unit.", "operationId": "get_training_policy_v2", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/PolicyScope" }, { "$ref": "#/components/parameters/FilterByDepartment" }, { "$ref": "#/components/parameters/FilterByProject" }, { "$ref": "#/components/parameters/FilterByCluster" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrainingPolicyV2" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a training policy.", "description": "Use to delete a training policy for a given organizational unit.", "operationId": "delete_training_policy", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/PolicyScope" }, { "$ref": "#/components/parameters/FilterByDepartment" }, { "$ref": "#/components/parameters/FilterByProject" }, { "$ref": "#/components/parameters/FilterByCluster" }, { "$ref": "#/components/parameters/ApproveClusterDeletion" } ], "responses": { "204": { "description": "The policy was deleted successfully." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v2/policy/workspaces": { "patch": { "summary": "Update a workspace policy.", "description": "Use to apply changes to a workspace policy for a given organizational unit.", "operationId": "update_workspace_policy_v2", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/ValidateOnly" }, { "$ref": "#/components/parameters/ApproveClusterDeletion" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspacePolicyChangeRequestV2" } } } }, "responses": { "200": { "description": "Policy applied.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspacePolicyV2" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Overwrite a workspace policy.", "description": "Ue to apply a workspace policy for a given organizational unit.", "operationId": "overwrite_workspace_policy_v2", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/ValidateOnly" }, { "$ref": "#/components/parameters/ApproveClusterDeletion" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspacePolicyOverwriteRequestV2" } } } }, "responses": { "200": { "description": "Policy applied.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspacePolicyV2" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get a workspace policy.", "description": "Retrieve the details of a workspace policy for a given organizational unit.", "operationId": "get_workspace_policy_v2", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/PolicyScope" }, { "$ref": "#/components/parameters/FilterByDepartment" }, { "$ref": "#/components/parameters/FilterByProject" }, { "$ref": "#/components/parameters/FilterByCluster" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspacePolicyV2" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a workspace policy.", "description": "Use to delete a workspace policy for a given organizational unit.", "operationId": "delete_workspace_policy", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/PolicyScope" }, { "$ref": "#/components/parameters/FilterByDepartment" }, { "$ref": "#/components/parameters/FilterByProject" }, { "$ref": "#/components/parameters/FilterByCluster" }, { "$ref": "#/components/parameters/ApproveClusterDeletion" } ], "responses": { "204": { "description": "The policy was deleted successfully." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v2/policy/distributed": { "patch": { "summary": "Update a distributed policy.", "description": "Use to apply changes to a distributed policy for a given organizational unit.", "operationId": "update_distributed_policy_v2", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/ValidateOnly" }, { "$ref": "#/components/parameters/ApproveClusterDeletion" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedPolicyChangeRequestV2" } } } }, "responses": { "200": { "description": "Policy applied.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedPolicyV2" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Overwrite a distributed policy.", "description": "Use to apply a distributed policy for a given organizational unit.", "operationId": "overwrite_distributed_policy_v2", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/ValidateOnly" }, { "$ref": "#/components/parameters/ApproveClusterDeletion" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedPolicyOverwriteRequestV2" } } } }, "responses": { "200": { "description": "Policy applied.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedPolicyV2" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get a distributed policy.", "description": "Retrieve the details of a distributed policy for a given organizational unit.", "operationId": "get_distributed_policy_v2", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/PolicyScope" }, { "$ref": "#/components/parameters/FilterByDepartment" }, { "$ref": "#/components/parameters/FilterByProject" }, { "$ref": "#/components/parameters/FilterByCluster" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedPolicyV2" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a distributed policy.", "description": "Use to delete a distributed policy for a given organizational unit.", "operationId": "delete_distributed_policy", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/PolicyScope" }, { "$ref": "#/components/parameters/FilterByDepartment" }, { "$ref": "#/components/parameters/FilterByProject" }, { "$ref": "#/components/parameters/FilterByCluster" }, { "$ref": "#/components/parameters/ApproveClusterDeletion" } ], "responses": { "204": { "description": "The policy was deleted successfully." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v2/policy/inferences": { "patch": { "summary": "Update an inference policy.", "description": "Use to apply changes to an inference policy for a given organizational unit.", "operationId": "update_inference_policy_v2", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/ValidateOnly" }, { "$ref": "#/components/parameters/ApproveClusterDeletion" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InferencePolicyChangeRequestV2" } } } }, "responses": { "200": { "description": "Policy applied.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InferencePolicyV2" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Overwrite an inference policy.", "description": "Use to apply an inference policy for a given organizational unit.", "operationId": "overwrite_inference_policy_v2", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/ValidateOnly" }, { "$ref": "#/components/parameters/ApproveClusterDeletion" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InferencePolicyOverwriteRequestV2" } } } }, "responses": { "200": { "description": "Policy applied.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InferencePolicyV2" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get an inference policy.", "description": "Retrieve the details of an inference policy for a given organizational unit.", "operationId": "get_inference_policy_v2", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/PolicyScope" }, { "$ref": "#/components/parameters/FilterByDepartment" }, { "$ref": "#/components/parameters/FilterByProject" }, { "$ref": "#/components/parameters/FilterByCluster" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InferencePolicyV2" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete an inference policy.", "description": "Use to delete an inference policy for a given organizational unit.", "operationId": "delete_inference_policy", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/PolicyScope" }, { "$ref": "#/components/parameters/FilterByDepartment" }, { "$ref": "#/components/parameters/FilterByProject" }, { "$ref": "#/components/parameters/FilterByCluster" }, { "$ref": "#/components/parameters/ApproveClusterDeletion" } ], "responses": { "204": { "description": "The policy was deleted successfully." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v2/policy/distributed-inferences": { "patch": { "summary": "Update a distributed inference policy.", "description": "Use to apply changes to a distributed inference policy for a given organizational unit.", "operationId": "update_distributed_inference_policy_v2", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/ValidateOnly" }, { "$ref": "#/components/parameters/ApproveClusterDeletion" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedInferencePolicyChangeRequestV2" } } } }, "responses": { "200": { "description": "Policy applied.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedInferencePolicyV2" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Overwrite a distributed inference policy.", "description": "Use to apply a distributed inference policy for a given organizational unit.", "operationId": "overwrite_distributed_inference_policy_v2", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/ValidateOnly" }, { "$ref": "#/components/parameters/ApproveClusterDeletion" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedInferencePolicyOverwriteRequestV2" } } } }, "responses": { "200": { "description": "Policy applied.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedInferencePolicyV2" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get a distributed inference policy.", "description": "Retrieve the details of a distributed inference policy for a given organizational unit.", "operationId": "get_distributed_inference_policy_v2", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/PolicyScope" }, { "$ref": "#/components/parameters/FilterByDepartment" }, { "$ref": "#/components/parameters/FilterByProject" }, { "$ref": "#/components/parameters/FilterByCluster" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedInferencePolicyV2" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a distributed inference policy.", "description": "Use to delete a distributed inference policy for a given organizational unit.", "operationId": "delete_distributed_inference_policy", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/PolicyScope" }, { "$ref": "#/components/parameters/FilterByDepartment" }, { "$ref": "#/components/parameters/FilterByProject" }, { "$ref": "#/components/parameters/FilterByCluster" }, { "$ref": "#/components/parameters/ApproveClusterDeletion" } ], "responses": { "204": { "description": "The policy was deleted successfully." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v2/policy/nim-services": { "patch": { "summary": "Update NVIDIA NIM service policy.", "description": "Use to apply changes to NVIDIA NIM service policy for a given organizational unit.", "operationId": "update_nim_service_policy", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/ValidateOnly" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NimServicePolicyChangeRequest" } } } }, "responses": { "200": { "description": "Policy applied.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NimServicePolicy" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Overwrite NVIDIA NIM service policy.", "description": "Use to apply NVIDIA NIM service policy for a given organizational unit.", "operationId": "overwrite_nim_service_policy", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/ValidateOnly" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NimServicePolicyOverwriteRequest" } } } }, "responses": { "200": { "description": "Policy applied.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NimServicePolicy" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get NVIDIA NIM service policy.", "description": "Retrieve the details of NVIDIA NIM service policy for a given organizational unit.", "operationId": "get_nim_service_policy", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/PolicyScope" }, { "$ref": "#/components/parameters/FilterByDepartment" }, { "$ref": "#/components/parameters/FilterByProject" }, { "$ref": "#/components/parameters/FilterByCluster" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NimServicePolicy" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete NVIDIA NIM service policy.", "description": "Use to delete NVIDIA NIM service policy for a given organizational unit.", "operationId": "delete_nim_service_policy", "tags": [ "Policy" ], "parameters": [ { "$ref": "#/components/parameters/PolicyScope" }, { "$ref": "#/components/parameters/FilterByDepartment" }, { "$ref": "#/components/parameters/FilterByProject" }, { "$ref": "#/components/parameters/FilterByCluster" } ], "responses": { "204": { "description": "The policy was deleted successfully." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/v1/k8s/clusters/{uuid}/storage-classes": { "parameters": [ { "$ref": "#/components/parameters/uuid" } ], "get": { "summary": "Get all storageClasses from a cluster.", "description": "this API is used by cluster versions < 2.20", "deprecated": true, "operationId": "V1GetStorageClasses", "tags": [ "Storage Classes" ], "parameters": [ { "name": "includeNone", "in": "query", "description": "Include runai-none storage class to be able to create PVCs without a storage class", "required": false, "schema": { "type": "boolean" } } ], "responses": { "200": { "$ref": "#/components/responses/V1StorageClassNames" }, "401": { "$ref": "#/components/responses/V1Unauthorized" }, "404": { "$ref": "#/components/responses/V1NotFound" }, "default": { "description": "unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1Error" } } } } } } }, "/v1/k8s/clusters/{uuid}/storage-classes/{storage_class_name}": { "parameters": [ { "$ref": "#/components/parameters/uuid" }, { "$ref": "#/components/parameters/V1Storage_class_name" } ] }, "/v1/k8s/clusters/{uuid}/storage-classes/sync": { "parameters": [ { "$ref": "#/components/parameters/uuid" } ] }, "/api/v1/storage-classes": { "get": { "summary": "get a Storage Class/Classes for a given cluster", "operationId": "getStorageClasses", "tags": [ "Storage Classes" ], "parameters": [ { "$ref": "#/components/parameters/ClusterIdRequired" }, { "$ref": "#/components/parameters/nameFilter" }, { "name": "includeNone", "in": "query", "description": "Include runai-none storage class, which is used for static provisioning of PVC. In static provisioning storage is omitted.", "required": false, "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StorageClasses1" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v2/storage-classes": { "get": { "summary": "get a Storage Class/Classes for a given cluster", "operationId": "getStorageClassesV2", "tags": [ "Storage Classes" ], "parameters": [ { "$ref": "#/components/parameters/ClusterIdRequired" }, { "$ref": "#/components/parameters/nameFilter" }, { "name": "includeNone", "in": "query", "description": "Include runai-none storage class, which is used for static provisioning of PVC. In static provisioning storage is omitted.", "required": false, "schema": { "type": "boolean" } } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StorageClassesV2" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/storage-class-configuration": { "get": { "summary": "List storage class configurations", "description": "Retrieves a list of storage class configurations defined in the system.", "operationId": "list_storage_class_configuration", "tags": [ "Storage Class Configuration" ], "x-csp": true, "parameters": [ { "$ref": "#/components/parameters/StorageClassConfigurationFilterBy" }, { "$ref": "#/components/parameters/StorageClassConfigurationSortBy" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StorageClassConfigurationListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create storage class configuration", "description": "Creates a new storage class configuration in the NVIDIA Run:ai platform.\nThis endpoint enables administrators to define storage class behavior and customize their usage settings.\n", "operationId": "create_storage_class_configuration", "tags": [ "Storage Class Configuration" ], "x-csp": true, "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StorageClassConfigurationCreationRequest" } } } }, "responses": { "201": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StorageClassConfiguration" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/storage-class-configuration/{id}": { "get": { "summary": "Get storage class configuration by id", "description": "Retrieves a specific storage class configuration by its unique identifier. Use this endpoint to view detailed information about the configuration, including its permissions and customization options.\n", "operationId": "get_storage_class_configuration_by_id", "x-csp": true, "tags": [ "Storage Class Configuration" ], "parameters": [ { "$ref": "#/components/parameters/StorageClassConfigurationId" }, { "name": "tenantId", "in": "query", "required": false, "schema": { "type": "integer" } } ], "responses": { "200": { "description": "Storage class configuration", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StorageClassConfiguration" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "patch": { "summary": "Patch storage class configuration by id", "description": "Partially updates an existing storage class configuration by its unique identifier. Use this endpoint to modify specific fields, such as permissions, customization values, or attributes, without replacing the entire configuration.", "operationId": "patch_storage_class_configuration_by_id", "x-csp": true, "tags": [ "Storage Class Configuration" ], "parameters": [ { "$ref": "#/components/parameters/StorageClassConfigurationId" }, { "name": "tenantId", "in": "query", "required": false, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StorageClassConfigurationPatchRequest" } } } }, "responses": { "200": { "description": "Storage class configuration", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StorageClassConfiguration" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update storage class configuration by id", "description": "Updates an existing storage class configuration by its unique identifier. Use this endpoint to fully replace an existing configuration, including permissions and customization settings.", "operationId": "update_storage_class_configuration_by_id", "x-csp": true, "tags": [ "Storage Class Configuration" ], "parameters": [ { "$ref": "#/components/parameters/StorageClassConfigurationId" }, { "name": "tenantId", "in": "query", "required": false, "schema": { "type": "integer" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StorageClassConfigurationUpdateRequest" } } } }, "responses": { "200": { "description": "Storage class configuration", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StorageClassConfiguration" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete storage class configuration by id", "description": "Deletes a specific storage class configuration by its unique identifier. Use this endpoint to permanently remove configurations that are no longer needed.", "operationId": "delete_storage_class_configuration_by_id", "x-csp": true, "tags": [ "Storage Class Configuration" ], "parameters": [ { "$ref": "#/components/parameters/StorageClassConfigurationId" }, { "name": "tenantId", "in": "query", "required": false, "schema": { "type": "integer" } } ], "responses": { "204": { "description": "Storage class configuration deleted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/v1/k8s/clusters/{clusterId}/projects": { "post": { "tags": [ "Projects" ], "deprecated": true, "operationId": "createProject", "summary": "Create a new project.", "description": "Creates a new project in a specific cluster. Deprecated - use `/api/v1/org-unit/projects` instead.", "parameters": [ { "in": "path", "name": "clusterId", "schema": { "type": "string" }, "required": true, "description": "The Universally Unique Identifier (UUID) of the cluster.", "example": "9f55255e-11ed-47c7-acef-fc4054768dbc" }, { "in": "query", "name": "excludePermissions", "schema": { "type": "boolean" }, "required": false, "description": "Backward compatibility of the `permissions` field. If `true`, the\n`permissions` field in the request body is ignored. If `false`,\nrelevant access rules for the `permissions` field are created in the project scope.\n", "example": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectCreateRequest" } } } }, "responses": { "200": { "description": "Project created successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project2" } } } }, "400": { "description": "Bad Project request." }, "409": { "description": "Project creation failed." } } }, "get": { "tags": [ "Projects" ], "deprecated": true, "summary": "List all projects and their details.", "operationId": "getProjects", "description": "Retrieves a list of all projects and details from a specific cluster. Use in reporting and analysis tools. Deprecated - use `/api/v1/org-unit/projects` instead.", "parameters": [ { "in": "path", "name": "clusterId", "schema": { "type": "string" }, "required": true, "description": "The Universally Unique Identifier (UUID) of the cluster.", "example": "9f55255e-11ed-47c7-acef-fc4054768dbc" }, { "in": "query", "name": "excludePermissions", "schema": { "type": "boolean" }, "required": false, "description": "Backward compatibility of the 'permissions' field. If 'true', the 'permissions' field in the returned projects is not set. If 'false', the 'permissions' field is set in the returned projects.", "example": true }, { "in": "query", "name": "memoryUnitMb", "schema": { "type": "boolean" }, "required": false, "description": "Memory returned in MB. When set to `false` (default) memory will be returned in MiB.", "example": true } ], "responses": { "200": { "description": "Successfully retrieved a list of all the projects.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Project2" } } } } } } } }, "/v1/k8s/clusters/{clusterId}/projects/{id}": { "put": { "tags": [ "Projects" ], "deprecated": true, "summary": "Update a project.", "operationId": "updateProject", "description": "Updates a project's details in a specific cluster. For example, node pool resources, and others. Deprecated - use `/api/v1/org-unit/projects/{projectId}` instead.", "parameters": [ { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true, "description": "The unique project-id." }, { "in": "path", "name": "clusterId", "schema": { "type": "string" }, "required": true, "description": "The Universally Unique Identifier (UUID) of the cluster.", "example": "9f55255e-11ed-47c7-acef-fc4054768dbc" }, { "in": "query", "name": "excludePermissions", "schema": { "type": "boolean" }, "required": false, "description": "Backward compatibility of the `permissions` field. If `true`, the\n`permissions` field in the returned projects is not set. If `false`,\nthe `permissions` field is set in the returned projects.\n", "example": true } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProjectUpdateRequest1" } } } }, "responses": { "200": { "description": "An updated project details.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project2" } } } }, "400": { "description": "Bad project request." }, "404": { "description": "Project not found." }, "409": { "description": "Could not update the project." } } }, "delete": { "tags": [ "Projects" ], "deprecated": true, "summary": "Delete a project.", "operationId": "deleteProject", "description": "Deletes a project from a specific cluster. Deprecated - use `/api/v1/org-unit/projects/{projectId}` instead.", "parameters": [ { "in": "path", "name": "clusterId", "schema": { "type": "string" }, "required": true, "description": "The Universally Unique Identifier (UUID) of the cluster.", "example": "9f55255e-11ed-47c7-acef-fc4054768dbc" }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "required": true, "description": "The unique id of the project.", "example": 2 } ], "responses": { "200": { "description": "Project deleted successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project2" } } } }, "404": { "description": "Project not found." } } }, "get": { "tags": [ "Projects" ], "deprecated": true, "summary": "List details of a specific project.", "operationId": "getProject", "description": "Retrieves the details of a specific project from a specific cluster. Use for project analysis. **Requires `view` permissions to the queried project**. Deprecated - use `/api/v1/org-unit/projects/{projectId}` instead.", "parameters": [ { "in": "path", "name": "clusterId", "schema": { "type": "string" }, "required": true, "description": "The Universally Unique Identifier (UUID) of the cluster.", "example": "9f55255e-11ed-47c7-acef-fc4054768dbc" }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true, "description": "The unique project-id identifying the project." }, { "in": "query", "name": "excludePermissions", "schema": { "type": "boolean" }, "required": false, "description": "Backward compatibility of the 'permissions' field. If 'true', the 'permissions' field in the returned projects is not set. If 'false', the 'permissions' field is set in the returned projects.", "example": true } ], "responses": { "200": { "description": "Successfully retrieved project details.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Project2" } } } }, "404": { "description": "Project not found." } } } }, "/v1/k8s/clusters/{clusterId}/departments": { "get": { "tags": [ "Departments" ], "deprecated": true, "summary": "List all departments.", "description": "List all the departments managed by the tenant on a specific cluster.", "operationId": "getDepartments", "parameters": [ { "in": "path", "name": "clusterId", "schema": { "type": "string" }, "required": true, "description": "The Universally Unique Identifier (UUID) of the cluster.", "example": "9f55255e-11ed-47c7-acef-fc4054768dbc" }, { "in": "query", "name": "excludePermissions", "schema": { "type": "boolean" }, "required": false, "description": "Backward compatibility of the `departmentAdmins` field. If `true`, the `departmentAdmins` field in the returned departments is not set. If `false`, the `departmentAdmins` is set in the returned departments.", "example": true }, { "in": "query", "name": "memoryUnitMb", "schema": { "type": "boolean" }, "required": false, "description": "Memory returned in MB. When set to `false` (default) memory will be returned in MiB.", "example": true } ], "responses": { "200": { "description": "Successfully retrieved a list of Departments.", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Department2" } } } } } } } }, "/v1/k8s/clusters/{clusterId}/departments/{department-id}/access-control": { "put": { "tags": [ "Departments" ], "summary": "Set the department admins.", "description": "Deprecated. Instead, use the accessrules API to add the department-admin permissions to a specific subject.", "operationId": "updateDepartmentAdmins", "deprecated": true, "parameters": [ { "in": "path", "name": "clusterId", "schema": { "type": "string" }, "required": true, "description": "The unique uuid identifying the cluster.", "example": "9f55255e-11ed-47c7-acef-fc4054768dbc" }, { "in": "path", "name": "department-id", "schema": { "type": "integer" }, "required": true, "description": "The unique id identifying the department.", "example": 2 } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DepartmentAccessControl" } } } }, "responses": { "201": { "description": "Department admin set successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DepartmentAccessControl" } } } }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } }, "description": "Bad request." }, "401": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } }, "description": "Unauthenticated" }, "403": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } }, "description": "Forbidden" } } } }, "/api/v1/authorization/roles": { "get": { "summary": "Get a list of roles.", "description": "Use to retrieve a list of roles.", "operationId": "get_roles_v1", "tags": [ "Roles" ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RolesV1" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/authorization/roles/{roleIdPath}": { "get": { "summary": "Get a role by id.", "description": "Retrieve the details of a role by id.", "operationId": "get_role_v1", "tags": [ "Roles" ], "parameters": [ { "$ref": "#/components/parameters/RoleIdPath" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RoleV1" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/authorization/access-rules": { "post": { "summary": "Create an access rule.", "description": "Use to bind a predefined role to a subject (user, group or application) in a scope.", "operationId": "create_access_rule", "tags": [ "Access rules" ], "requestBody": { "description": "The access rule to create.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessRuleCreationFields" } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessRule" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "List the access rules.", "description": "Retrieve a list of access rules.", "operationId": "get_access_rules", "tags": [ "Access rules" ], "parameters": [ { "$ref": "#/components/parameters/SubjectTypeOptional" }, { "$ref": "#/components/parameters/SubjectIdOptional" }, { "$ref": "#/components/parameters/SubjectIds" }, { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/LastUpdated" }, { "$ref": "#/components/parameters/IncludeDeleted" }, { "$ref": "#/components/parameters/FilterByCluster" }, { "$ref": "#/components/parameters/ScopeTypeOptionalQueryDeprecated" }, { "$ref": "#/components/parameters/ScopeIdOptional" }, { "$ref": "#/components/parameters/RoleId" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/AccessRulesSort" }, { "$ref": "#/components/parameters/AccessRulesFilter" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "totalRecords", "displayRecords", "accessRules" ], "properties": { "totalRecords": { "type": "integer", "example": 1 }, "displayRecords": { "type": "integer", "example": 1 }, "accessRules": { "$ref": "#/components/schemas/AccessRules" } } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/authorization/access-rules/{accessRuleId}": { "get": { "summary": "Get an access rule.", "description": "Use to retrieve the details of an access rule by id.", "operationId": "get_access_rule", "tags": [ "Access rules" ], "parameters": [ { "$ref": "#/components/parameters/AccessRuleId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessRuleById" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete an access rule.", "description": "Use to delete the subject permissions assigned by access rule id.", "operationId": "delete_access_rule", "tags": [ "Access rules" ], "parameters": [ { "$ref": "#/components/parameters/AccessRuleId" } ], "responses": { "204": { "$ref": "#/components/responses/204NoContent" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/authorization/access-rules/count": { "get": { "summary": "Count access rules.", "description": "Use to retrieve the number of access rules.", "operationId": "count_access_rules", "tags": [ "Access rules" ], "parameters": [ { "$ref": "#/components/parameters/IncludeDeleted" }, { "$ref": "#/components/parameters/AccessRulesFilter" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "count" ], "properties": { "count": { "type": "integer", "format": "int64", "example": 1 } } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/authorization/access-rules/batch": { "post": { "summary": "Delete Multiple Access Rules", "operationId": "access_rules_batch", "tags": [ "Access rules" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessRulesBatchFields" } } } }, "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessRuleDeletionBatchResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/authorization/access-rules/batch-create": { "post": { "summary": "Create Multiple Access Rules", "description": "Creates a batch of access rules in a single operation. Requires a list of access rule objects, each specifying the subject, role, and scope. Returns the result of the operation, including which rules were successfully created and any that failed, along with error messages if applicable.", "operationId": "access_rules_batch_create", "tags": [ "Access rules" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessRulesBatchCreateFields" } } } }, "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessRulesBatchCreateResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/authorization/permissions": { "get": { "summary": "Get a summary of user permissions.", "description": "Retrieve a summary of user permissions.", "operationId": "get_permissions", "tags": [ "Permissions" ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Permissions" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/authorization/permitted-scopes": { "post": { "summary": "Calculate permitted scopes.", "description": "Use to calculate user permitted scopes for an action on a resource.", "operationId": "get_permitted_scopes", "tags": [ "Permissions" ], "requestBody": { "description": "The request parameters.", "required": true, "content": { "application/json": { "schema": { "type": "object", "required": [ "resourceType" ], "properties": { "resourceType": { "$ref": "#/components/schemas/ResourceType" }, "action": { "nullable": true, "type": "string", "enum": [ "create", "read", "update", "delete" ] } } } } } }, "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PermittedScopesActions" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/authorization/me/access-rules": { "get": { "summary": "List the access rules assigned to the requesting user.", "description": "Retrieve the access rules assigned to the requesting user.", "operationId": "get_me_access_rules", "tags": [ "Me" ], "parameters": [ { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MeAccessRulesResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/authorization/me/access-rules/count": { "get": { "summary": "Count the access rules assigned to the requesting user.", "description": "Use to retrieve the number of access rules assigned to the requesting user.", "operationId": "count_me_access_rules", "tags": [ "Me" ], "parameters": [ { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "count" ], "properties": { "count": { "type": "integer", "format": "int64", "example": 1 } } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/idps": { "get": { "summary": "Get external idps list", "operationId": "get_idps", "tags": [ "Idps" ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Idps" }, "examples": { "saml": { "value": [ { "alias": "saml", "type": "saml", "redirectUri": "https://domain/auth/realms/name/broker/saml/endpoint", "samlData": { "signingCertificate": "signingCertificateExample", "singleSignOnServiceUrl": "https://authhost/protocol/saml", "entityId": "example.run.ai/runai", "serviceProviderMetadataUrl": "https://example.runai.com/auth/realms/runai/broker/saml/endpoint/descriptor" }, "mappers": { "gid": "GID", "groups": "GROUPS", "supplementaryGroups": "SUPPLEMENTARYGROUPS", "uid": "UID", "email": "email" } } ] }, "oidc": { "value": [ { "alias": "oidc", "type": "oidc", "redirectUri": "https://domain/auth/realms/name/broker/oidc/endpoint", "oidcData": { "clientId": "my-client-id", "clientSecret": "*******", "scopes": [ "scope1", "scope2" ], "mandatoryClaim": { "claim": "my-claim", "values": [ "val1", "val2" ] } }, "mappers": { "gid": "GID", "groups": "GROUPS", "supplementaryGroups": "SUPPLEMENTARYGROUPS", "uid": "UID", "email": "email" } } ] }, "openshift-v4": { "value": [ { "alias": "openshift-v4", "type": "openshift-v4", "redirectUri": "https://domain/auth/realms/name/broker/openshift-v4/endpoint", "ocpData": { "clientId": "my-client-id", "clientSecret": "*******", "idpBaseUrl": "https://authhost/ocp", "scopes": [ "scope1", "scope2" ] }, "mappers": { "gid": "metadata.gid", "groups": "groups", "supplementaryGroups": "supplementarygroups", "uid": "metadata.uid", "email": "metadata.name" } } ] } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Configure external idp", "operationId": "create_idp", "tags": [ "Idps" ], "requestBody": { "description": "Idp configuration", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdpCreationRequest" }, "examples": { "saml (by url)": { "value": { "type": "saml", "samlData": { "metadataXmlType": "url", "metadataXmlUrl": "https://authhost/saml/metadata.xml" }, "mappers": { "gid": "GID", "groups": "GROUPS", "supplementaryGroups": "SUPPLEMENTARYGROUPS", "uid": "UID", "email": "email" } } }, "saml (by file)": { "value": { "type": "saml", "samlData": { "metadataXmlType": "file", "fileName": "descriptor.xml", "metadataXmlFile": "" }, "mappers": { "gid": "GID", "groups": "GROUPS", "supplementaryGroups": "SUPPLEMENTARYGROUPS", "uid": "UID", "email": "email" } } }, "oidc": { "value": { "type": "oidc", "oidcData": { "clientId": "my-client-id", "clientSecret": "my-client-secret", "discoverDocumentUrl": "https://authhost/openid-configuration", "mandatoryClaim": { "claim": "my-claim", "values": [ "val1", "val2" ] } }, "mappers": { "gid": "GID", "groups": "GROUPS", "supplementaryGroups": "SUPPLEMENTARYGROUPS", "uid": "UID", "email": "email" } } }, "openshift-v4": { "value": { "type": "openshift-v4", "ocpData": { "clientId": "my-client-id", "clientSecret": "my-client-secret", "idpBaseUrl": "https://authhost/ocp" }, "mappers": { "gid": "metadata.gid", "groups": "groups", "supplementaryGroups": "supplementarygroups", "uid": "metadata.uid", "email": "metadata.name" } } } } } } }, "responses": { "201": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdpPostResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "409": { "$ref": "#/components/responses/409Conflict" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/idps/{idp}": { "get": { "summary": "Get external idp by alias", "operationId": "get_idp", "tags": [ "Idps" ], "parameters": [ { "$ref": "#/components/parameters/idp" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "examples": { "saml": { "value": { "alias": "saml", "type": "saml", "redirectUri": "https://domain/auth/realms/name/broker/saml/endpoint", "samlData": { "signingCertificate": "signingCertificateExample", "singleSignOnServiceUrl": "https://authhost/protocol/saml", "entityId": "example.run.ai/runai", "serviceProviderMetadataUrl": "https://example.runai.com/auth/realms/runai/broker/saml/endpoint/descriptor" }, "mappers": { "gid": "GID", "groups": "GROUPS", "supplementaryGroups": "SUPPLEMENTARYGROUPS", "uid": "UID", "email": "email" } } }, "oidc": { "value": { "alias": "oidc", "type": "oidc", "redirectUri": "https://domain/auth/realms/name/broker/oidc/endpoint", "oidcData": { "clientId": "my-client-id", "clientSecret": "*******", "scopes": [ "scope1", "scope2" ], "mandatoryClaim": { "claim": "my-claim", "values": [ "val1", "val2" ] } }, "mappers": { "gid": "GID", "groups": "GROUPS", "supplementaryGroups": "SUPPLEMENTARYGROUPS", "uid": "UID", "email": "email" } } }, "openshift-v4": { "value": { "alias": "openshift-v4", "type": "openshift-v4", "redirectUri": "https://domain/auth/realms/name/broker/openshift-v4/endpoint", "ocpData": { "clientId": "my-client-id", "clientSecret": "*******", "idpBaseUrl": "https://authhost/ocp", "scopes": [ "scope1", "scope2" ] }, "mappers": { "gid": "metadata.gid", "groups": "groups", "supplementaryGroups": "supplementarygroups", "uid": "metadata.uid", "email": "metadata.name" } } } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete external idp by alias", "operationId": "delete_idp", "tags": [ "Idps" ], "parameters": [ { "$ref": "#/components/parameters/idp" } ], "responses": { "200": { "description": "Idp successfully deleted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update external idp by alias", "operationId": "update_idp", "tags": [ "Idps" ], "parameters": [ { "$ref": "#/components/parameters/idp" } ], "requestBody": { "description": "Updated idp object", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IdpCreationRequest" }, "examples": { "saml (by url)": { "value": { "type": "saml", "samlData": { "metadataXmlType": "url", "metadataXmlUrl": "https://authhost/saml/metadata.xml" }, "mappers": { "gid": "GID", "groups": "GROUPS", "supplementaryGroups": "SUPPLEMENTARYGROUPS", "uid": "UID", "email": "email" } } }, "saml (by file)": { "value": { "type": "saml", "samlData": { "metadataXmlType": "file", "fileName": "descriptor.xml", "metadataXmlFile": "" }, "mappers": { "gid": "GID", "groups": "GROUPS", "supplementaryGroups": "SUPPLEMENTARYGROUPS", "uid": "UID", "email": "email" } } }, "oidc": { "value": { "type": "oidc", "oidcData": { "clientId": "my-client-id", "clientSecret": "my-client-secret", "discoverDocumentUrl": "https://authhost/openid-configuration", "mandatoryClaim": { "claim": "my-claim", "values": [ "val1", "val2" ] } }, "mappers": { "gid": "GID", "groups": "GROUPS", "supplementaryGroups": "SUPPLEMENTARYGROUPS", "uid": "UID", "email": "email" } } }, "openshift-v4": { "value": { "type": "openshift-v4", "ocpData": { "clientId": "my-client-id", "clientSecret": "my-client-secret", "idpBaseUrl": "https://authhost/ocp" }, "mappers": { "gid": "metadata.gid", "groups": "groups", "supplementaryGroups": "supplementarygroups", "uid": "metadata.uid", "email": "metadata.name" } } } } } } }, "responses": { "200": { "description": "Idp successfully updated" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/idps/{idp}/mappers": { "get": { "summary": "Get idp mappers", "operationId": "get_idp_mappers", "tags": [ "Idps" ], "parameters": [ { "$ref": "#/components/parameters/idp" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Mappers" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update idp mappers", "operationId": "update_idp_mappers", "tags": [ "Idps" ], "parameters": [ { "$ref": "#/components/parameters/idp" } ], "requestBody": { "description": "Map of our mappers and their source in the external idp", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Mappers" } } } }, "responses": { "202": { "description": "Request accepted successfully." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/users": { "get": { "summary": "Get users.", "description": "Retrieve a list of platform users.", "operationId": "get_users", "tags": [ "Users" ], "parameters": [ { "description": "Filter results by user attribute.", "in": "query", "name": "filter", "required": false, "deprecated": true, "schema": { "type": "string" }, "example": "runai.is_local:true" }, { "$ref": "#/components/parameters/usersFilterBy" }, { "$ref": "#/components/parameters/usersSortBy" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/limit" }, { "$ref": "#/components/parameters/search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Users1" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create a local user.", "description": "Use to create a local platform user.", "operationId": "create_user", "tags": [ "Users" ], "requestBody": { "description": "User object to create", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserCreationRequest1" } } } }, "responses": { "201": { "description": "Created successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserPostResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/users/count": { "get": { "summary": "Count users", "operationId": "count_users", "description": "count users", "tags": [ "Users" ], "parameters": [ { "$ref": "#/components/parameters/usersFilterBy" }, { "$ref": "#/components/parameters/search" } ], "responses": { "200": { "description": "ok", "content": { "application/json": { "schema": { "type": "object", "required": [ "count" ], "properties": { "count": { "type": "integer", "format": "int64", "example": 1 } } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/users/{userId}/logout": { "post": { "summary": "Logout a user.", "description": "Use to force a user to logout.", "operationId": "logout_user", "tags": [ "Users" ], "parameters": [ { "$ref": "#/components/parameters/userId" } ], "responses": { "200": { "description": "Executed successfully." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/users/{userId}/password": { "post": { "summary": "Reset a user's password.", "description": "Use to to reset a user's password.", "operationId": "reset_user_password", "tags": [ "Users" ], "parameters": [ { "$ref": "#/components/parameters/userId" } ], "responses": { "200": { "description": "Regenerated successfully.", "content": { "application/json": { "schema": { "type": "object", "properties": { "tempPassword": { "type": "string" } }, "example": { "tempPassword": "asdasidjn9d" } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/users/{userId}": { "get": { "summary": "Get a user by id.", "description": "Retrieve a user's details by id.", "operationId": "get_user_by_id", "tags": [ "Users" ], "parameters": [ { "$ref": "#/components/parameters/userId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/User2" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a user by id.", "description": "Use to delete a user by id.", "operationId": "delete_user_by_id", "tags": [ "Users" ], "parameters": [ { "$ref": "#/components/parameters/userId" } ], "responses": { "204": { "description": "Executed successfully." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/me/password": { "post": { "summary": "change user password", "operationId": "change_user_password", "tags": [ "Users" ], "requestBody": { "description": "Password to change", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserChangePasswordRequest" } } } }, "responses": { "200": { "description": "Password changed successfully.", "content": { "application/json": { "schema": { "type": "object", "properties": { "currentPassword": { "type": "string" }, "newPassword": { "type": "string" } }, "example": { "tempPassword": "Abcd!234" } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/apps": { "get": { "deprecated": true, "summary": "Get a list of applications.", "description": "Retrieve a list of applications.", "operationId": "get_applications", "tags": [ "Applications" ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Applications" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "deprecated": true, "summary": "Create an application.", "description": "Used to create an application.", "operationId": "create_application", "tags": [ "Applications" ], "requestBody": { "description": "Application object to create", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationCreationRequest" } } } }, "responses": { "201": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationPostResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "409": { "$ref": "#/components/responses/409Conflict" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/apps/{appId}": { "get": { "deprecated": true, "summary": "Get application by id.", "description": "Retrieve the details of an application by id.", "operationId": "get_application_by_id", "tags": [ "Applications" ], "parameters": [ { "$ref": "#/components/parameters/appId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Application" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "patch": { "deprecated": true, "summary": "Update application details by id.", "description": "Use to update the details of an application by id.", "operationId": "update_application_by_id", "tags": [ "Applications" ], "parameters": [ { "$ref": "#/components/parameters/appId" } ], "requestBody": { "description": "Application object that needs to be updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationPatchRequest" } } } }, "responses": { "200": { "description": "Executed successfully." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "deprecated": true, "summary": "Delete an application by id.", "description": "Use to delete an application by id.", "operationId": "delete_application_by_id", "tags": [ "Applications" ], "parameters": [ { "$ref": "#/components/parameters/appId" } ], "responses": { "204": { "description": "Executed successfully." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/apps/{appId}/secret": { "post": { "deprecated": true, "summary": "Regenerate an application secret.", "description": "Use to regenerate the application secret by id.", "operationId": "regenerate_application_secret", "tags": [ "Applications" ], "parameters": [ { "$ref": "#/components/parameters/appId" } ], "responses": { "200": { "description": "Regenerated successfully.", "content": { "application/json": { "schema": { "type": "object", "properties": { "secret": { "type": "string" } }, "example": { "secret": "189ej2ijd92fj092k049fk0" } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/service-accounts": { "get": { "summary": "Get a list of service accounts.", "description": "Retrieve a list of service accounts.", "operationId": "get_service_accounts", "tags": [ "Service Accounts" ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceAccounts" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create a service account.", "description": "Used to create a service account.", "operationId": "create_service_account", "tags": [ "Service Accounts" ], "requestBody": { "description": "Service account object to create", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceAccountCreationRequest" } } } }, "responses": { "201": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceAccountPostResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "409": { "$ref": "#/components/responses/409Conflict" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/service-accounts/{serviceAccountId}": { "get": { "summary": "Get service account by id.", "description": "Retrieve the details of a service account by id.", "operationId": "get_service_account_by_id", "tags": [ "Service Accounts" ], "parameters": [ { "$ref": "#/components/parameters/serviceAccountId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceAccount" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "patch": { "summary": "Update service account details by id.", "description": "Use to update the details of a service account by id.", "operationId": "update_service_account_by_id", "tags": [ "Service Accounts" ], "parameters": [ { "$ref": "#/components/parameters/serviceAccountId" } ], "requestBody": { "description": "Service account object that needs to be updated.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ServiceAccountPatchRequest" } } } }, "responses": { "200": { "description": "Executed successfully." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a service account by id.", "description": "Use to delete a service account by id.", "operationId": "delete_service_account_by_id", "tags": [ "Service Accounts" ], "parameters": [ { "$ref": "#/components/parameters/serviceAccountId" } ], "responses": { "204": { "description": "Executed successfully." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/service-accounts/{serviceAccountId}/secret": { "post": { "summary": "Regenerate a service account secret.", "description": "Use to regenerate the service account secret by id.", "operationId": "regenerate_service_account_secret", "tags": [ "Service Accounts" ], "parameters": [ { "$ref": "#/components/parameters/serviceAccountId" } ], "responses": { "200": { "description": "Regenerated successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RegenerateServiceAccountSecretResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/access-keys": { "get": { "summary": "Get a list of access keys.", "description": "Retrieve a list of the user's access keys.", "operationId": "get_access_keys", "tags": [ "Access Keys" ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessKeys" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create an access key.", "description": "Used to create an access key.", "operationId": "create_access_key1", "tags": [ "Access Keys" ], "requestBody": { "description": "Access key object to create", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessKeyCreationRequest1" } } } }, "responses": { "201": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessKeyPostResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/access-keys/{accessKeyId}": { "get": { "summary": "Get access key by id.", "description": "Retrieve the details of an access key by id.", "operationId": "get_access_key_by_id1", "tags": [ "Access Keys" ], "parameters": [ { "$ref": "#/components/parameters/accessKeyId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessKey1" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete an access key by id.", "description": "Use to delete an access key by id.", "operationId": "delete_access_key_by_id", "tags": [ "Access Keys" ], "parameters": [ { "$ref": "#/components/parameters/accessKeyId" } ], "responses": { "204": { "description": "Executed successfully." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/access-keys/{accessKeyId}/secret": { "post": { "summary": "Regenerate an access key secret.", "description": "Use to regenerate the access key secret by id.", "operationId": "regenerate_access_key_secret", "tags": [ "Access Keys" ], "parameters": [ { "$ref": "#/components/parameters/accessKeyId" } ], "responses": { "200": { "description": "Regenerated successfully.", "content": { "application/json": { "schema": { "type": "object", "properties": { "clientSecret": { "type": "string", "description": "Secret credential paired with the client ID. Used to obtain authentication tokens." } }, "example": { "clientSecret": "this-is-my-secret" } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/administration/access-keys": { "get": { "summary": "Get a list of all access keys.", "description": "Retrieve a list of all access keys.", "operationId": "get_access_keys_administration", "tags": [ "Access Keys" ], "parameters": [ { "description": "Filter results by clientId", "in": "query", "name": "clientId", "required": false, "schema": { "type": "string" }, "example": "3434c-12323ab-4ce2ea6-b44fc-db344d" }, { "description": "Filter results by creatdBy", "in": "query", "name": "createdBy", "required": false, "schema": { "type": "string" }, "example": "test@run.ai" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccessKeysAdministration" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/administration/access-keys/{accessKeyId}": { "delete": { "summary": "Delete an access key by id for administrations.", "description": "Use to delete an access key by id for administrations.", "operationId": "delete_access_key_by_id_administration", "tags": [ "Access Keys" ], "parameters": [ { "$ref": "#/components/parameters/accessKeyId" } ], "responses": { "204": { "description": "Executed successfully." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/user-applications": { "get": { "deprecated": true, "summary": "Get a list of users applications.", "description": "Retrieve a list of the users applications.", "operationId": "get_user_applications", "tags": [ "User Applications" ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserApps" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "deprecated": true, "summary": "Create a user application.", "description": "Used to create a user application.", "operationId": "create_user_application", "tags": [ "User Applications" ], "requestBody": { "description": "Application object to create", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserAppCreationRequest" } } } }, "responses": { "201": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserAppPostResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/user-applications/{appId}": { "get": { "deprecated": true, "summary": "Get user application by id.", "description": "Retrieve the details of a user's application by app id.", "operationId": "get_user_application_by_id", "tags": [ "User Applications" ], "parameters": [ { "$ref": "#/components/parameters/appId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserApp" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "deprecated": true, "summary": "Delete a user application byid.", "description": "Use to user a user application by id.", "operationId": "delete_user_application_by_id", "tags": [ "User Applications" ], "parameters": [ { "$ref": "#/components/parameters/appId" } ], "responses": { "204": { "description": "Executed successfully." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/user-applications/{appId}/secret": { "post": { "deprecated": true, "summary": "Regenerate a user application secret.", "description": "Use to regenerate the user application secret by id.", "operationId": "regenerate_user_application_secret", "tags": [ "User Applications" ], "parameters": [ { "$ref": "#/components/parameters/appId" } ], "responses": { "200": { "description": "Regenerated successfully.", "content": { "application/json": { "schema": { "type": "object", "properties": { "clientSecret": { "type": "string", "description": "Secret credential paired with the client ID. Used to obtain authentication tokens." } }, "example": { "clientSecret": "this-is-my-secret" } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/administration/user-applications": { "get": { "deprecated": true, "summary": "Get a list of all users applications.", "description": "Retrieve a list of all users applications.", "operationId": "get_user_applications_administration", "tags": [ "User Applications" ], "parameters": [ { "description": "Filter results by clientId", "in": "query", "name": "clientId", "required": false, "schema": { "type": "string" }, "example": "3434c-12323ab-4ce2ea6-b44fc-db344d" }, { "description": "Filter results by creatdBy", "in": "query", "name": "createdBy", "required": false, "schema": { "type": "string" }, "example": "test@run.ai" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserAppsAdministration" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/administration/user-applications/{appId}": { "delete": { "deprecated": true, "summary": "Delete a user application by id for adminstrations.", "description": "Use to delete a user application by id for adminstrations.", "operationId": "delete_user_application_by_id_administration", "tags": [ "User Applications" ], "parameters": [ { "$ref": "#/components/parameters/appId" } ], "responses": { "204": { "description": "Executed successfully." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/token": { "post": { "tags": [ "Tokens" ], "summary": "Create an access token v1", "description": "Create tokens using the `grant_type` parameter.", "operationId": "grant_token", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TokenRequest" }, "examples": { "client_credentials": { "value": { "grantType": "client_credentials", "clientID": "clientID", "clientSecret": "clientSecret" }, "description": "Obtain the clientID and the clientSecret using service accounts or access keys endpoints" }, "refresh_token": { "value": { "grantType": "refresh_token", "refreshToken": "refreshToken", "clientID": "clientID" } }, "exchange_token": { "value": { "grantType": "exchange_token", "code": "code", "clientID": "clientID", "redirectUri": "redirectUri" } }, "external_token_exchange": { "value": { "grantType": "external_token_exchange", "externalToken": "access token from external idp" } }, "app_token (deprecated)": { "value": { "grantType": "app_token", "appID": "appID", "appSecret": "appSecret" }, "description": "Deprecated - Obtain the appID and the appSecret using applications or user applications endpoints" } } } } }, "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TokenResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v2/token": { "post": { "tags": [ "Tokens" ], "summary": "Create an access token v2", "description": "Use this endpoint to obtain an access token. Compliant with standard OAuth2 protocol and supports the common OAuth2 grant types.\n", "operationId": "grant_token_v2", "requestBody": { "required": true, "content": { "application/x-www-form-urlencoded": { "schema": { "type": "object", "required": [ "grant_type" ], "properties": { "grant_type": { "type": "string", "description": "The OAuth2 grant type that determines how the token will be issued.", "enum": [ "authorization_code", "client_credentials", "password", "refresh_token" ] }, "client_id": { "type": "string", "description": "OAuth2 client identifier" }, "client_secret": { "type": "string", "description": "OAuth2 client secret", "format": "password" }, "username": { "type": "string", "description": "Resource owner username (for password grant)" }, "password": { "type": "string", "description": "The password of the resource owner. Required only when using the password grant type.", "format": "password" }, "refresh_token": { "type": "string", "description": "The refresh token used to obtain a new access token. Required only when using the refresh_token grant type." }, "code": { "type": "string", "description": "Authorization code issued by the authorization server. Used in the authorization_code grant to exchange the code for an access token." }, "redirect_uri": { "type": "string", "description": "The redirect URI used during the authorization request. Required for the authorization_code grant to validate the redirect destination." } } }, "examples": { "authorization_code": { "value": { "grant_type": "authorization_code", "code": "authorization_code_value", "redirect_uri": "https://example.com/callback", "client_id": "my-client-id" } }, "client_credentials": { "value": { "grant_type": "client_credentials", "client_id": "my-client-id", "client_secret": "my-client-secret" }, "description": "Obtain the clientID and the clientSecret using service accounts or access keys endpoints" }, "password": { "value": { "grant_type": "password", "username": "user@example.com", "password": "password123", "client_id": "my-client-id" } }, "refresh_token": { "value": { "grant_type": "refresh_token", "refresh_token": "refresh_token_value", "client_id": "my-client-id" } } } } } }, "responses": { "200": { "description": "Successfully issued token", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuth2TokenResponse" }, "example": { "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...", "token_type": "Bearer", "expires_in": 3600, "refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...", "id_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..." } } } }, "400": { "description": "Invalid request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuth2Error" } } } }, "401": { "description": "Client authentication failed", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OAuth2Error" } } } }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/security/settings": { "get": { "summary": "Get security settings", "operationId": "get_security_settings", "tags": [ "Settings" ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SettingsGetResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/security/settings/{key}": { "put": { "summary": "Update security setting by key", "operationId": "update_security_setting_by_key", "tags": [ "Settings" ], "parameters": [ { "$ref": "#/components/parameters/settingsKey" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/AutoRedirectSsoSetting" }, { "$ref": "#/components/schemas/BrowserSessionTimeoutSetting" }, { "$ref": "#/components/schemas/LogoutRedirectUriSetting" } ] }, "examples": { "autoRedirectSSO": { "value": { "enabled": false, "idpAlias": "oidc" } }, "browserSessionTimeout": { "value": { "idleTimeout": 60 } }, "logoutRedirectUri": { "value": { "uri": "https://example.com/logout-success" } } } } } }, "responses": { "200": { "description": "Setting successfully updated" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get security setting by key", "operationId": "get_security_setting_by_key", "tags": [ "Settings" ], "parameters": [ { "$ref": "#/components/parameters/settingsKey" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Settings" }, "examples": { "autoRedirectSSO": { "value": { "enabled": false, "idpAlias": "oidc" } }, "browserSessionTimeout": { "value": { "idleTimeout": 60 } }, "logoutRedirectUri": { "value": { "uri": "https://example.com/logout-success" } } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/v1/k8s/auth/oauth/apptoken": { "post": { "deprecated": true, "tags": [ "Tokens" ], "summary": "get application token", "description": "Retrieve access token for an application.\nThe application token is retrieved from the authorization server.\nThis endpoint is deprecated. Use /api/v1/token with the grantType parameter set to app_token instead, with AppID and appSecret set accordingly to get an application token\n", "operationId": "app_token", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppTokenRequest" } } } }, "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AppTokenResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads": { "get": { "summary": "List workloads.", "description": "Retrieve a list of active workloads with details.", "operationId": "get_workloads", "tags": [ "Workloads" ], "parameters": [ { "$ref": "#/components/parameters/Deleted" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/WorkloadsSort" }, { "$ref": "#/components/parameters/WorkloadsFilter" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "workloads" ], "properties": { "next": { "type": "integer", "example": 1 }, "workloads": { "$ref": "#/components/schemas/Workloads" } } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/{workloadId}": { "get": { "summary": "Get a workload.", "operationId": "get_workload", "description": "Retrieve workload data using a `workloadId`.", "tags": [ "Workloads" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadDetailed" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/count": { "get": { "summary": "Count workloads.", "description": "Retrieve the number of workloads.", "operationId": "count_workloads", "tags": [ "Workloads" ], "parameters": [ { "$ref": "#/components/parameters/Deleted" }, { "$ref": "#/components/parameters/WorkloadsFilter" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "count" ], "properties": { "count": { "type": "integer", "format": "int64", "example": 1 } } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/telemetry": { "get": { "summary": "Get the workloads telemetry.", "operationId": "get_workloads_telemetry", "description": "Retrieves workload data by telemetry type. Optionally filter by specific workload phases.\n\nTelemetry Types:\n- WORKLOADS_COUNT: Count of workloads\n- GPU_ALLOCATION: GPU allocation metrics\n- PENDING_TIME_DISTRIBUTION: Distribution of workloads by current pending time (time since entering Pending phase).\n\n\n\n\n\n\n For this type, results are automatically grouped by 4 time buckets and any additional groupBy parameters.\n", "tags": [ "Workloads" ], "parameters": [ { "$ref": "#/components/parameters/FilterByCluster" }, { "$ref": "#/components/parameters/FilterByNodepoolName" }, { "$ref": "#/components/parameters/FilterByDepartment" }, { "$ref": "#/components/parameters/TelemetryGroupBy1" }, { "$ref": "#/components/parameters/TelemetryType2" }, { "$ref": "#/components/parameters/FilterByPhases" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TelemetryResponse" } }, "text/csv": {} } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/pods": { "get": { "summary": "List pods.", "description": "Retrieve a list of pods from a cluster.", "operationId": "list_pods", "tags": [ "Pods" ], "parameters": [ { "$ref": "#/components/parameters/Deleted" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/PodsSort" }, { "$ref": "#/components/parameters/PodsFilter" }, { "$ref": "#/components/parameters/PodsQueryVerbosity" }, { "$ref": "#/components/parameters/Completed" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "pods" ], "properties": { "next": { "type": "integer", "example": 1 }, "pods": { "$ref": "#/components/schemas/Pods1" } } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/{workloadId}/pods/{podId}/metrics": { "get": { "summary": "Get pod metrics data.", "description": "Retrieve pod's metrics data for use in analysis applications.", "operationId": "get_workload_pod_metrics", "tags": [ "Pods" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" }, { "$ref": "#/components/parameters/PodId" }, { "$ref": "#/components/parameters/PodMetricTypes" }, { "$ref": "#/components/parameters/StartRequired" }, { "$ref": "#/components/parameters/EndRequired" }, { "$ref": "#/components/parameters/NumberOfSamples" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsCompositeResponse" } }, "text/csv": {} } }, "207": { "description": "Partial success.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsCompositeResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/{workloadId}/pods": { "get": { "summary": "Get workload pods by id.", "description": "Retrieve the details of workload pods by workload id.", "operationId": "get_workload_pods", "tags": [ "Pods" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" }, { "$ref": "#/components/parameters/Deleted" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "pods" ], "properties": { "next": { "type": "integer", "example": 1 }, "pods": { "$ref": "#/components/schemas/Pods1" } } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/pods/count": { "get": { "summary": "Get pods count.", "description": "Retrieve the number of pods from a cluster.", "operationId": "count_pods", "tags": [ "Pods" ], "parameters": [ { "$ref": "#/components/parameters/Deleted" }, { "$ref": "#/components/parameters/PodsFilter" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "count" ], "properties": { "count": { "type": "integer", "format": "int64", "example": 1 } } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/{workloadId}/events": { "get": { "summary": "Get the workload events.", "description": "Retrieve all the workload events using a workload id.", "operationId": "get_workload_events", "tags": [ "Events" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/EventsSort" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "events" ], "properties": { "next": { "type": "integer", "example": 1 }, "events": { "$ref": "#/components/schemas/Events" } } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/{workloadId}/history": { "get": { "summary": "Get the workload history.", "description": "Retrieve workload history details, including events, using a workload id.", "operationId": "get_workload_history", "tags": [ "Events" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "records" ], "properties": { "next": { "type": "integer", "example": 1 }, "records": { "$ref": "#/components/schemas/HistoryRecords1" } } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/{workloadId}/metrics": { "get": { "summary": "Get workload metrics data.", "operationId": "get_workload_metrics", "description": "Retrieves workloads data metrics from the metrics database. Use in reporting and analysis tools.", "tags": [ "Workloads" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" }, { "$ref": "#/components/parameters/WorkloadMetricTypes" }, { "$ref": "#/components/parameters/StartRequired" }, { "$ref": "#/components/parameters/EndRequired" }, { "$ref": "#/components/parameters/NumberOfSamples" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsCompositeResponse" } }, "text/csv": {} } }, "207": { "description": "Partial success.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsCompositeResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/workspaces": { "post": { "summary": "Create a workspace.", "operationId": "create_workspace1", "description": "Create a new workspace in a specific project in the cluster.", "tags": [ "Workspaces" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspaceCreationRequest" } } } }, "responses": { "202": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Workspace1" } } } }, "400": { "$ref": "#/components/responses/400SubmissionErrorV2" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/workspaces/{workloadId}": { "delete": { "summary": "Delete a workspace.", "description": "Delete a workspace using the workspace id.", "operationId": "delete_workspace", "tags": [ "Workspaces" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get workspace data.", "description": "Retrieve workspace details using a workload id.", "operationId": "get_workspace", "tags": [ "Workspaces" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Workspace1" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/workspaces/{workloadId}/suspend": { "post": { "summary": "Suspend a workspace.", "description": "Suspend a workspace using the workspace id.", "operationId": "suspend_workspace", "tags": [ "Workspaces" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/workspaces/{workloadId}/resume": { "post": { "summary": "Resume a workspace.", "description": "Resume the workspace operation using the workspace id.", "operationId": "resume_workspace", "tags": [ "Workspaces" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/trainings": { "post": { "summary": "Create a training.", "operationId": "create_training1", "description": "Create a training workload using container related fields.", "tags": [ "Trainings" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrainingCreationRequest" } } } }, "responses": { "202": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Training1" } } } }, "400": { "$ref": "#/components/responses/400SubmissionErrorV2" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/trainings/{workloadId}": { "delete": { "summary": "Delete a training.", "operationId": "delete_training", "description": "Delete a training using a workload id.", "tags": [ "Trainings" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get training data.", "operationId": "get_training", "description": "Retrieve training details using a workload id.", "tags": [ "Trainings" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Training1" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/trainings/{workloadId}/suspend": { "post": { "summary": "Suspend a training.", "operationId": "suspend_training", "description": "Suspend a training from running using a workload id.", "tags": [ "Trainings" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/trainings/{workloadId}/resume": { "post": { "summary": "Resume a training.", "operationId": "resume_training", "description": "Resume a training that was suspended using a workload id.", "tags": [ "Trainings" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/distributed": { "post": { "summary": "Create a distributed training.", "description": "Use to create a distributed training.", "operationId": "create_distributed", "tags": [ "Distributed" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedCreationRequest" } } } }, "responses": { "202": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedWorkload" } } } }, "400": { "$ref": "#/components/responses/400SubmissionErrorV2" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/distributed/{workloadId}": { "delete": { "summary": "Delete a distributed training by id.", "description": "Use to delete a distributed training by workload id.", "operationId": "delete_distributed", "tags": [ "Distributed" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get distributed training's data. [Experimental]", "description": "Retrieve the details of a distributed training by workload id.", "operationId": "get_distributed", "tags": [ "Distributed" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedWorkload" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/distributed/{workloadId}/suspend": { "post": { "summary": "Suspend a distributed training.", "operationId": "suspend_distributed", "description": "Suspend a distributed training from running using a workload id.", "tags": [ "Distributed" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/distributed/{workloadId}/resume": { "post": { "summary": "Resume a distributed training.", "operationId": "resume_distributed", "description": "Resume a distributed training that was suspended using a workload id.", "tags": [ "Distributed" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/distributed-inferences": { "post": { "summary": "Create a distributed inference. [Experimental]", "operationId": "create_distributed_inference", "description": "Create a distributed inference using container related fields.", "tags": [ "Distributed Inferences" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedInferenceCreationRequest" } } } }, "responses": { "202": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedInference" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/distributed-inferences/{workloadId}": { "delete": { "summary": "Delete a distributed inference.", "operationId": "delete_distributed_inference", "description": "Delete a distributed inference using a workload id.", "tags": [ "Distributed Inferences" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get a distributed inference data.", "operationId": "get_distributed_inference", "description": "Retrieve a distributed inference details using a workload id.", "tags": [ "Distributed Inferences" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedInference" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "patch": { "summary": "Update distributed inference spec.", "operationId": "update_distributed_inference_spec", "description": "Update the specification of an existing distributed inference workload.", "tags": [ "Distributed Inferences" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateRequest" } } } }, "responses": { "202": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedInference" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/inferences": { "post": { "summary": "Create an inference.", "operationId": "create_inference1", "description": "Create an inference using container related fields.", "tags": [ "Inferences" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InferenceCreationRequest" } } } }, "responses": { "202": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Inference1" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/inferences/{workloadId}": { "delete": { "summary": "Delete an inference.", "operationId": "delete_inference", "description": "Delete an inference using a workload id.", "tags": [ "Inferences" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get inference data.", "operationId": "get_inference", "description": "Retrieve inference details using a workload id.", "tags": [ "Inferences" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Inference1" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "patch": { "summary": "Update inference spec. [Experimental]", "operationId": "update_inference_spec", "description": "Update the specification of an existing inference workload.", "tags": [ "Inferences" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InferenceUpdateRequest" } } } }, "responses": { "202": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Inference1" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/inferences/{workloadId}/metrics": { "get": { "summary": "Get inference metrics data.", "description": "Retrieve inference metrics data by id. Supported from control-plane version 2.18 or later.", "operationId": "get_inference_workload_metrics", "tags": [ "Inferences" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" }, { "$ref": "#/components/parameters/InferenceWorkloadMetricTypes" }, { "$ref": "#/components/parameters/StartRequired" }, { "$ref": "#/components/parameters/EndRequired" }, { "$ref": "#/components/parameters/NumberOfSamples" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsResponse" } }, "text/csv": {} } }, "207": { "description": "Partial success.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/inferences/{workloadId}/pods/{podId}/metrics": { "get": { "summary": "Get inference pod's metrics data.", "description": "Retrieve inference metrics pod's data by workload and pod id. Supported from control-plane version 2.18 or later.", "operationId": "get_inference_workload_pod_metrics", "tags": [ "Inferences" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" }, { "$ref": "#/components/parameters/PodId" }, { "$ref": "#/components/parameters/InferencePodMetricTypes" }, { "$ref": "#/components/parameters/StartRequired" }, { "$ref": "#/components/parameters/EndRequired" }, { "$ref": "#/components/parameters/NumberOfSamples" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsResponse" } }, "text/csv": {} } }, "207": { "description": "Partial success.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MetricsResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/inferences/{workloadId}/revisions": { "get": { "summary": "Get inference workload revisions by id. [Experimental]", "description": "Retrieve the details of inference workload revisions by workload id. Supported for clusters v2.21+.", "operationId": "get_inference_workload_revisions", "tags": [ "Revisions" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" }, { "$ref": "#/components/parameters/Deleted" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "revisions" ], "properties": { "revisions": { "type": "array", "items": { "$ref": "#/components/schemas/Revision" } } } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/inferences/{workloadId}/revisions/count": { "get": { "summary": "Get inference workload revisions count. [Experimental]", "description": "Retrieve the number of an inference workload revisions from a cluster. Supported for clusters v2.21+.", "operationId": "count_inference_workload_revisions", "tags": [ "Revisions" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadId" }, { "$ref": "#/components/parameters/Deleted" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "count" ], "properties": { "count": { "type": "integer", "format": "int64", "example": 1 } } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/inferences/revisions/{revisionId}": { "get": { "summary": "Get revision data. [Experimental]", "operationId": "get_revision", "description": "Retrieve revision details using a revision id. Supported for clusters v2.21+.", "tags": [ "Revisions" ], "parameters": [ { "$ref": "#/components/parameters/RevisionId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Revision" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/inferences/revisions/{revisionId}/pods": { "get": { "summary": "Get revision pods by id. [Experimental]", "description": "Retrieve the details of revision pods by revision id. Supported for clusters v2.21+.", "operationId": "get_revision_pods", "tags": [ "Pods" ], "parameters": [ { "$ref": "#/components/parameters/RevisionId" }, { "$ref": "#/components/parameters/Deleted" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "pods" ], "properties": { "pods": { "$ref": "#/components/schemas/Pods1" } } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/inferences/revisions/{revisionId}/events": { "get": { "summary": "Get revision events by id. [Experimental]", "description": "Retrieve all the revision events using a revision id. Supported for clusters v2.21+.", "operationId": "get_revision_events", "tags": [ "Events" ], "parameters": [ { "$ref": "#/components/parameters/RevisionId" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/EventsSort" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "events" ], "properties": { "next": { "type": "integer", "example": 1 }, "events": { "$ref": "#/components/schemas/Events" } } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/inferences/revisions/{revisionId}/history": { "get": { "summary": "Get the revision history. [Experimental]", "description": "Retrieve revision history details, including events, using a revision id. Supported for clusters v2.21+.", "operationId": "get_revision_history", "tags": [ "Events" ], "parameters": [ { "$ref": "#/components/parameters/RevisionId" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "records" ], "properties": { "next": { "type": "integer", "example": 1 }, "records": { "$ref": "#/components/schemas/HistoryRecords1" } } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workload-templates": { "get": { "summary": "List templates. [Experimental]", "description": "Retrieve all available templates.", "operationId": "list_templates1", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/TemplatesSort" }, { "$ref": "#/components/parameters/TemplatesFilter" }, { "$ref": "#/components/parameters/Search" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToWorkloadType" }, { "$ref": "#/components/parameters/ComplyToReplicaType" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplatesListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workload-templates/name-availability": { "get": { "summary": "Template name availability", "description": "Check if a given template name creates naming conflicts under the given scope. Returns conflict (409) in case the name is not available, or 204 (no content) if it is ok.", "operationId": "template_name_availability", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/TemplateName" }, { "$ref": "#/components/parameters/ScopeType" }, { "$ref": "#/components/parameters/ScopeId3" } ], "responses": { "204": { "description": "The name is available to use" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workload-templates/{templateId}": { "get": { "summary": "Get a template, any type. [Experimental]", "operationId": "get_template_by_id1", "description": "Retrieve the details of a template using its id.", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/TemplateId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SupersetTemplate" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workload-templates/count": { "get": { "summary": "Count templates. [Experimental]", "description": "Get the total number of templates.", "operationId": "count_templates", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/TemplatesFilter" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CountResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workload-templates/workspaces": { "post": { "summary": "Create a new workspace template. [Experimental]", "operationId": "create_workspace_template", "description": "Create a new workspace template.", "tags": [ "Workload templates" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspaceTemplateCreationRequest" } } } }, "responses": { "202": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspaceTemplate" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "List all workspace templates. [Experimental]", "description": "List all workspace templates.", "operationId": "list_workspace_templates", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/TemplatesSort" }, { "$ref": "#/components/parameters/TemplatesFilter" }, { "$ref": "#/components/parameters/Search" }, { "$ref": "#/components/parameters/ComplyToProject" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspaceTemplatesListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workload-templates/workspaces/{templateId}": { "get": { "summary": "Retrieve a specific workspace template by ID. [Experimental]", "operationId": "get_workspace_template", "description": "Retrieve a specific workspace template by ID.", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/TemplateId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspaceTemplate" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a workspace template by ID. [Experimental]", "operationId": "delete_workspace_template", "description": "Delete a workspace template by ID.", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/TemplateId" } ], "responses": { "204": { "$ref": "#/components/responses/204NoContent" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "patch": { "summary": "Patch a workspace template by ID. [Experimental]", "operationId": "patch_workspace_template", "description": "Patch a workspace template by ID.", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/TemplateId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspaceTemplatePatchRequest" } } } }, "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspaceTemplate" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update a workspace template by ID. [Experimental]", "operationId": "update_workspace_template", "description": "Update a workspace template by ID.", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/TemplateId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspaceTemplateUpdateRequest" } } } }, "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkspaceTemplate" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workload-templates/trainings": { "post": { "summary": "Create a new training template. [Experimental]", "operationId": "create_training_template", "description": "Create a new training template.", "tags": [ "Workload templates" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrainingTemplateCreationRequest" } } } }, "responses": { "202": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrainingTemplate" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "List all training templates. [Experimental]", "description": "List all training templates.", "operationId": "list_training_templates", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/TemplatesSort" }, { "$ref": "#/components/parameters/TemplatesFilter" }, { "$ref": "#/components/parameters/Search" }, { "$ref": "#/components/parameters/ComplyToProject" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrainingTemplatesListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workload-templates/trainings/{templateId}": { "get": { "summary": "Retrieve a specific training template by ID. [Experimental]", "operationId": "get_training_template", "description": "Retrieve a specific training template by ID.", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/TemplateId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrainingTemplate" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a training template by ID. [Experimental]", "operationId": "delete_training_template", "description": "Delete a training template by ID.", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/TemplateId" } ], "responses": { "204": { "$ref": "#/components/responses/204NoContent" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "patch": { "summary": "Patch a training template by ID. [Experimental]", "operationId": "patch_training_template", "description": "Patch a training template by ID.", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/TemplateId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrainingTemplatePatchRequest" } } } }, "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrainingTemplate" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update a training template by ID. [Experimental]", "operationId": "update_training_template", "description": "Update a training template by ID.", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/TemplateId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrainingTemplateUpdateRequest" } } } }, "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrainingTemplate" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workload-templates/distributed": { "post": { "summary": "Create a new distributed training template. [Experimental]", "operationId": "create_distributed_template", "description": "Create a new distributed training template.", "tags": [ "Workload templates" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedTemplateCreationRequest" } } } }, "responses": { "202": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedTemplate" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "List all distributed training templates. [Experimental]", "description": "List all distributed training templates.", "operationId": "list_distributed_templates", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/TemplatesSort" }, { "$ref": "#/components/parameters/TemplatesFilter" }, { "$ref": "#/components/parameters/Search" }, { "$ref": "#/components/parameters/ComplyToProject" }, { "$ref": "#/components/parameters/ComplyToReplicaType" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedTemplatesListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workload-templates/distributed/{templateId}": { "get": { "summary": "Get a specific distributed training template by ID. [Experimental]", "operationId": "get_distributed_template", "description": "Get a specific distributed training template by ID.", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/TemplateId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedTemplate" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a distributed training template by ID. [Experimental]", "operationId": "delete_distributed_template", "description": "Delete a distributed training template by ID.", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/TemplateId" } ], "responses": { "204": { "$ref": "#/components/responses/204NoContent" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "patch": { "summary": "Patch a distributed training template by ID. [Experimental]", "operationId": "patch_distributed_template", "description": "Patch a distributed training template by ID.", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/TemplateId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedTemplatePatchRequest" } } } }, "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedTemplate" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update a distributed training template by ID. [Experimental]", "operationId": "update_distributed_template", "description": "Update a distributed training template by ID.", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/TemplateId" } ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedTemplateUpdateRequest" } } } }, "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DistributedTemplate" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workload-templates/inferences": { "post": { "summary": "Create a new inference template. [Experimental]", "operationId": "create_inference_template", "description": "Create a new inference template.", "tags": [ "Workload templates" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InferenceTemplateCreationRequest" } } } }, "responses": { "202": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InferenceTemplate" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "List all inference templates. [Experimental]", "description": "List all inference templates.", "operationId": "list_inference_templates", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/TemplatesSort" }, { "$ref": "#/components/parameters/TemplatesFilter" }, { "$ref": "#/components/parameters/Search" }, { "$ref": "#/components/parameters/ComplyToProject" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InferenceTemplatesListResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workload-templates/inferences/{templateId}": { "get": { "summary": "Get a specific inference template by ID. [Experimental]", "operationId": "get_inference_template", "description": "Get a specific inference template by ID.", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/TemplateId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InferenceTemplate" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete an inference template by ID. [Experimental]", "operationId": "delete_inference_template", "description": "Delete an inference template by ID.", "tags": [ "Workload templates" ], "parameters": [ { "$ref": "#/components/parameters/TemplateId" } ], "responses": { "204": { "$ref": "#/components/responses/204NoContent" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workloads/batch": { "post": { "summary": "Workload batch operations.", "operationId": "batch_workloads", "tags": [ "Workloads batch" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadBatch" } } } }, "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BatchResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workload-categories": { "get": { "summary": "List workload categories.", "description": "Retrieves a list of workload categories. These categories are used to classify and monitor different types of workloads within the NVIDIA Run:ai platform.", "operationId": "list_categories", "tags": [ "Workload properties" ], "responses": { "200": { "description": "List of categories retrieved successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "categories" ], "properties": { "categories": { "$ref": "#/components/schemas/WorkloadCategories" } } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workload-categories/{categoryId}": { "get": { "summary": "Get workload category by id.", "description": "Retrieves a specific workload category by its ID. Workload categories are used to classify and monitor different types of workloads within the NVIDIA Run:ai platform.", "operationId": "get_category_by_id", "tags": [ "Workload properties" ], "parameters": [ { "name": "categoryId", "description": "The unique identifier of the workload category.", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Category retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadCategory" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workload-types": { "get": { "summary": "List workload types.", "description": "Retrieves a list of workload types with their configurations - their corresponding workload categories and priorities.", "operationId": "list_workload_types", "tags": [ "Workload properties" ], "parameters": [ { "$ref": "#/components/parameters/ExternalTypesOnly" }, { "$ref": "#/components/parameters/WorkloadTypesFilter" } ], "responses": { "200": { "description": "List of types retrieved successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "types" ], "properties": { "types": { "$ref": "#/components/schemas/WorkloadTypeConfigs" } } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create a workload type. [Experimental]", "description": "Create a new workload type in the system by providing its identification details and configuration, making it available for use and management within the platform.", "operationId": "create_workload_type", "tags": [ "Workload properties" ], "requestBody": { "description": "Workload type to create.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadTypeCreateFields" } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadTypeConfig" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workload-types/{workloadTypeId}": { "get": { "summary": "List workload type by id.", "description": "Retrieves a specific workload type by its ID.", "operationId": "get_workload_type", "tags": [ "Workload properties" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadTypeId" } ], "responses": { "200": { "description": "Type retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadTypeConfig" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update a workload type by id.", "description": "Update the default category or priority assigned to a workload type.", "operationId": "update_workload_type", "tags": [ "Workload properties" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadTypeId" } ], "requestBody": { "description": "Workload type to update.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadTypeUpdateFields" } } } }, "responses": { "200": { "description": "Updated successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadTypeConfig" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a workload type by id. [Experimental]", "description": "Deletes a specific workload type by its ID.", "operationId": "delete_workload_type", "tags": [ "Workload properties" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadTypeId" } ], "responses": { "204": { "$ref": "#/components/responses/204NoContent" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/workload-priorities": { "get": { "summary": "Get workload priorities.", "description": "Retrieve the list of all workload priorities available in the system", "operationId": "get_workload_priorities", "tags": [ "Workload properties" ], "parameters": [ { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/WorkloadsPrioritiesSort" }, { "$ref": "#/components/parameters/WorkloadsPrioritiesFilter" } ], "responses": { "200": { "description": "Request completed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "priorities" ], "properties": { "priorities": { "$ref": "#/components/schemas/Priorities" } } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/ai-applications": { "get": { "summary": "List AI applications. [Experimental]", "description": "List AI applications.", "operationId": "list_applications", "tags": [ "AI Applications" ], "parameters": [ { "$ref": "#/components/parameters/ApplicationQueryVerbosity" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/ApplicationsSort" }, { "$ref": "#/components/parameters/ApplicationsFilter" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "ok.", "content": { "application/json": { "schema": { "type": "object", "required": [ "applications" ], "properties": { "next": { "type": "integer", "example": 1 }, "applications": { "$ref": "#/components/schemas/Applications1" } } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/ai-applications/count": { "get": { "summary": "Count AI applications. [Experimental]", "description": "Get the total number of AI applications.", "operationId": "count_applications", "tags": [ "AI Applications" ], "parameters": [ { "$ref": "#/components/parameters/ApplicationsFilter" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CountResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/ai-applications/{aiApplicationId}": { "get": { "summary": "Get AI application. [Experimental]", "description": "Get AI application.", "operationId": "get_application", "tags": [ "AI Applications" ], "parameters": [ { "$ref": "#/components/parameters/ApplicationId" } ], "responses": { "200": { "description": "ok.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Application1" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v2/workloads": { "post": { "summary": "Create a workload. [Experimental]", "description": "Submit a workload with metadata and a Kubernetes manifest.", "operationId": "create_workload_v2", "tags": [ "Workloads V2" ], "requestBody": { "description": "Workload metadata and manifest", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadV2CreateRequest" } } } }, "responses": { "202": { "description": "Workload creation request accepted.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadV2" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v2/workloads/{WorkloadV2Id}": { "get": { "summary": "Get a specific workload. [Experimental]", "description": "Retrieve details of a specific workload by ID", "operationId": "get_workload_v2_by_id", "tags": [ "Workloads V2" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadV2Id" } ], "responses": { "200": { "description": "Successfully retrieved the workload", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadV2GetResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete a workload. [Experimental]", "description": "Delete a specific workload by ID", "operationId": "delete_workload_v2", "tags": [ "Workloads V2" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadV2Id" } ], "responses": { "202": { "description": "Deletion request accepted.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadV2" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "summary": "Update workload spec. [Experimental]", "operationId": "update_workload_v2", "description": "Update the specification of an existing workload.", "tags": [ "Workloads V2" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadV2Id" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadV2UpdateRequest" } } } }, "responses": { "202": { "description": "Workload update request accepted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkloadV2" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v2/workloads/nim-services": { "post": { "summary": "Create a NVIDIA NIM service. [Experimental]", "description": "Create a NVIDIA NIM service", "operationId": "create_nim_service", "tags": [ "NVIDIA NIM" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NimServiceCreateRequest" } } } }, "responses": { "202": { "description": "Workload creation accepted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NimServiceResponse" } } } }, "400": { "$ref": "#/components/responses/400SubmissionErrorV2" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v2/workloads/nim-services/{WorkloadV2Id}": { "get": { "summary": "Get a NVIDIA NIM service. [Experimental]", "description": "Retrieve details of a specific NVIDIA NIM service, by id", "operationId": "get_nim_service_by_id", "tags": [ "NVIDIA NIM" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadV2Id" } ], "responses": { "200": { "description": "Successfully retrieved the workload", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NimServiceResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "patch": { "summary": "Update NVIDIA NIM service spec. [Experimental]", "operationId": "update_nim_service_spec", "description": "Update the specification of an existing NVIDIA NIM service.", "tags": [ "NVIDIA NIM" ], "parameters": [ { "$ref": "#/components/parameters/WorkloadV2Id" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NimServiceUpdateRequest" } } } }, "responses": { "202": { "description": "Workload update request accepted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NimServiceResponse" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/logo": { "get": { "summary": "Get tenant logo. (base64)", "description": "Retrieve the base64 logo file.", "operationId": "get_tenant_logo", "tags": [ "Logo" ], "responses": { "200": { "description": "Tenant logo (PNG or SVG).", "content": { "application/json": { "schema": { "type": "object", "required": [ "logo" ], "properties": { "logo": { "type": "string" } } } } } }, "204": { "$ref": "#/components/responses/204NoContent" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Upload logo for tenant. (base64)", "description": "Use to upload a base64 logo file (PNG or SVG). Max size 128kb.", "operationId": "upload_tenant_logo", "tags": [ "Logo" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LogoCreationRequest" } } } }, "responses": { "200": { "description": "Logo uploaded." }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "413": { "$ref": "#/components/responses/413RequestEntityTooLarge" }, "415": { "$ref": "#/components/responses/415UnsupportedMediaType" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/datavolumes": { "get": { "summary": "List datavolumes in permitted scopes", "description": "Get requested datavolumes.", "operationId": "get_datavolumes", "tags": [ "Datavolumes" ], "parameters": [ { "$ref": "#/components/parameters/DatavolumesRequestType" }, { "$ref": "#/components/parameters/DatavolumesUsableInProjectId" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/Limit" }, { "$ref": "#/components/parameters/DatavolumesSortBy" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/DatavolumesFilter" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "datavolumes" ], "properties": { "next": { "type": "integer", "example": 1 }, "datavolumes": { "$ref": "#/components/schemas/DatavolumesNoSharedScopes" } } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "summary": "Create a datavolume", "operationId": "create_datavolume", "tags": [ "Datavolumes" ], "requestBody": { "description": "The datavolume to create.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DatavolumeCreationFields" } } } }, "responses": { "201": { "description": "Created", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Datavolume" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/datavolumes/{datavolumeId}": { "get": { "summary": "Get datavolume", "operationId": "get_datavolume", "tags": [ "Datavolumes" ], "parameters": [ { "$ref": "#/components/parameters/DatavolumeId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Datavolume" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "summary": "Delete datavolume", "operationId": "delete_datavolume", "tags": [ "Datavolumes" ], "parameters": [ { "$ref": "#/components/parameters/DatavolumeId" } ], "responses": { "202": { "$ref": "#/components/responses/202Accepted" }, "204": { "$ref": "#/components/responses/204NoContent" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "patch": { "summary": "Patch datavolume", "operationId": "patch_datavolume", "tags": [ "Datavolumes" ], "parameters": [ { "$ref": "#/components/parameters/DatavolumeId" } ], "requestBody": { "description": "Datavolume to update.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DatavolumePatchFields" } } } }, "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DatavolumeNoSharedScopes" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/datavolumes/name-availability": { "get": { "summary": "Data volumes name availability.", "description": "Checks if a specified data volume name is available under the given scope (e.g., project or department). Returns a 204 No Content response if the name is available, or 409 Conflict if the name is already in use.", "operationId": "datavolume_name_availability", "tags": [ "Datavolumes" ], "parameters": [ { "$ref": "#/components/parameters/DataVolumeName" }, { "$ref": "#/components/parameters/ClusterIdRequired" } ], "responses": { "204": { "description": "The name is available to use" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "409": { "$ref": "#/components/responses/409Conflict" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/datavolumes/count": { "get": { "summary": "Count data volumes.", "description": "Retrieve the number of data volumes.", "operationId": "count_datavolumes", "tags": [ "Datavolumes" ], "parameters": [ { "$ref": "#/components/parameters/DatavolumesRequestType" }, { "$ref": "#/components/parameters/DatavolumesUsableInProjectId" }, { "$ref": "#/components/parameters/DatavolumesFilter" }, { "$ref": "#/components/parameters/Search" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "type": "object", "required": [ "count" ], "properties": { "count": { "type": "integer", "format": "int64", "example": 1 } } } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/datavolumes/{datavolumeId}/sharedScopes": { "patch": { "summary": "Patch the datavolume's shared scopes", "operationId": "patch_datavolume_shared_scopes", "tags": [ "Datavolumes" ], "parameters": [ { "$ref": "#/components/parameters/DatavolumeId" } ], "requestBody": { "description": "Requested SharedScopes of the datavolume to patch.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SharedScopesPatchRequest" } } } }, "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SharedScopes" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "get": { "summary": "Get the datavolume's shared scopes", "operationId": "get_datavolume_shared_scopes", "tags": [ "Datavolumes" ], "parameters": [ { "$ref": "#/components/parameters/DatavolumeId" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SharedScopes" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli-exposer/installer/unix": { "get": { "summary": "Download Unix installer script", "description": "This endpoint returns a unix script that can be used to install the Run:ai CLI.\n", "operationId": "get_installer_unix", "tags": [ "Researcher Command Line Interface" ], "responses": { "200": { "description": "File download successful", "content": { "text/plain": { "schema": { "type": "string" }, "example": "Contents of the file" } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli-exposer/installer/unix/commands": { "get": { "summary": "Get Unix installer script commands", "description": "This endpoint returns a unix script commands that can be used to install the Run:ai CLI.\n", "operationId": "get_installer_unix_commands", "tags": [ "Researcher Command Line Interface" ], "responses": { "200": { "description": "A text commands to install the CLI on Unix", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Command1" }, "example": "Contents of the commands to install the CLI on Unix" } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli-exposer/installer/mac": { "get": { "summary": "Download Mac installer script", "description": "This endpoint returns a Mac script that can be used to install the Run:ai CLI.\n", "operationId": "get_installer_mac", "tags": [ "Researcher Command Line Interface" ], "responses": { "200": { "description": "File download successful", "content": { "text/plain": { "schema": { "type": "string" }, "example": "Contents of the file" } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli-exposer/installer/mac/commands": { "get": { "summary": "Get Mac installer script commands", "description": "This endpoint returns a Mac script commands that can be used to install the Run:ai CLI.\n", "operationId": "get_installer_mac_commands", "tags": [ "Researcher Command Line Interface" ], "responses": { "200": { "description": "A text commands to install the CLI on Mac", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Command1" }, "example": "Contents of the commands to install the CLI on Mac" } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli-exposer/installer/linux": { "get": { "summary": "Download Linux installer script", "description": "This endpoint returns a Linux script that can be used to install the Run:ai CLI.\n", "operationId": "get_installer_linux", "tags": [ "Researcher Command Line Interface" ], "responses": { "200": { "description": "File download successful", "content": { "text/plain": { "schema": { "type": "string" }, "example": "Contents of the file" } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli-exposer/installer/linux/commands": { "get": { "summary": "Get Linux installer script commands", "description": "This endpoint returns a linux script commands that can be used to install the Run:ai CLI.\n", "operationId": "get_installer_linux_commands", "tags": [ "Researcher Command Line Interface" ], "responses": { "200": { "description": "A text commands to install the CLI on Linux", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Command1" }, "example": "Contents of the commands to install the CLI on Linux" } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli-exposer/installer/windows/commands": { "get": { "summary": "Get Windows MSI installer script commands", "description": "This endpoint returns a windows script commands that can be used to install the Run:ai CLI.\n", "operationId": "get_installer_windows_commands", "tags": [ "Researcher Command Line Interface" ], "responses": { "200": { "description": "A text commands to install the CLI on Windows", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Command1" }, "example": "Contents of the commands to install the CLI on Windows" } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli-exposer/dist/{operatingSystem}/{architecture}/runai": { "get": { "summary": "Download RunAI Researcher command line binary", "description": "This endpoint returns a binary file that run the Run:ai CLI.\n", "operationId": "get_binary", "tags": [ "Researcher Command Line Interface" ], "parameters": [ { "$ref": "#/components/parameters/OperatingSystem" }, { "$ref": "#/components/parameters/Architecture" } ], "responses": { "200": { "description": "File download successful", "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" }, "example": "Contents of the file" } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli-exposer/docs/{documentName}": { "get": { "summary": "Get CLI document by name", "description": "This endpoint returns a document of help for the Run:ai CLI.\n", "operationId": "get_manual_document", "tags": [ "Researcher Command Line Interface" ], "parameters": [ { "$ref": "#/components/parameters/DocumentName" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "text/html": { "schema": { "type": "string" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli/installer/unix": { "get": { "deprecated": true, "summary": "Download Unix installer script", "description": "This endpoint returns a unix script that can be used to install the Run:ai CLI.\n", "operationId": "get_installer_unix_deprecated", "tags": [ "Researcher Command Line Interface Deprecated" ], "responses": { "200": { "description": "File download successful", "content": { "text/plain": { "schema": { "type": "string" }, "example": "Contents of the file" } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli/installer/unix/commands": { "get": { "deprecated": true, "summary": "Get Unix installer script commands", "description": "This endpoint returns a unix script commands that can be used to install the Run:ai CLI.\n", "operationId": "get_installer_unix_commands_deprecated", "tags": [ "Researcher Command Line Interface Deprecated" ], "responses": { "200": { "description": "A text commands to install the CLI on Unix", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Command1" }, "example": "Contents of the commands to install the CLI on Unix" } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli/installer/mac": { "get": { "deprecated": true, "summary": "Download Mac installer script", "description": "This endpoint returns a Mac script that can be used to install the Run:ai CLI.\n", "operationId": "get_installer_mac_deprecated", "tags": [ "Researcher Command Line Interface Deprecated" ], "responses": { "200": { "description": "File download successful", "content": { "text/plain": { "schema": { "type": "string" }, "example": "Contents of the file" } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli/installer/mac/commands": { "get": { "deprecated": true, "summary": "Get Mac installer script commands", "description": "This endpoint returns a Mac script commands that can be used to install the Run:ai CLI.\n", "operationId": "get_installer_mac_commands_deprecated", "tags": [ "Researcher Command Line Interface Deprecated" ], "responses": { "200": { "description": "A text commands to install the CLI on Mac", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Command1" }, "example": "Contents of the commands to install the CLI on Mac" } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli/installer/linux": { "get": { "deprecated": true, "summary": "Download Linux installer script", "description": "This endpoint returns a Linux script that can be used to install the Run:ai CLI.\n", "operationId": "get_installer_linux_deprecated", "tags": [ "Researcher Command Line Interface Deprecated" ], "responses": { "200": { "description": "File download successful", "content": { "text/plain": { "schema": { "type": "string" }, "example": "Contents of the file" } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli/installer/linux/commands": { "get": { "deprecated": true, "summary": "Get Linux installer script commands", "description": "This endpoint returns a linux script commands that can be used to install the Run:ai CLI.\n", "operationId": "get_installer_linux_commands_deprecated", "tags": [ "Researcher Command Line Interface Deprecated" ], "responses": { "200": { "description": "A text commands to install the CLI on Linux", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Command1" }, "example": "Contents of the commands to install the CLI on Linux" } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli/installer/windows/commands": { "get": { "deprecated": true, "summary": "Get Windows MSI installer script commands", "description": "This endpoint returns a windows script commands that can be used to install the Run:ai CLI.\n", "operationId": "get_installer_windows_commands_deprecated", "tags": [ "Researcher Command Line Interface Deprecated" ], "responses": { "200": { "description": "A text commands to install the CLI on Windows", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Command1" }, "example": "Contents of the commands to install the CLI on Windows" } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli/dist/{operatingSystem}/{architecture}/runai": { "get": { "deprecated": true, "summary": "Download RunAI Researcher command line binary", "description": "This endpoint returns a binary file that run the Run:ai CLI.\n", "operationId": "get_binary_deprecated", "tags": [ "Researcher Command Line Interface Deprecated" ], "parameters": [ { "$ref": "#/components/parameters/OperatingSystem" }, { "$ref": "#/components/parameters/Architecture" } ], "responses": { "200": { "description": "File download successful", "content": { "application/octet-stream": { "schema": { "type": "string", "format": "binary" }, "example": "Contents of the file" } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/cli/docs/{documentName}": { "get": { "deprecated": true, "summary": "Get CLI document by name", "description": "This endpoint returns a document of help for the Run:ai CLI.\n", "operationId": "get_manual_document_deprecated", "tags": [ "Researcher Command Line Interface Deprecated" ], "parameters": [ { "$ref": "#/components/parameters/DocumentName" } ], "responses": { "200": { "description": "Executed successfully.", "content": { "text/html": { "schema": { "type": "string" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/audit/log": { "get": { "description": "Get audit logs based on query params filter", "summary": "Get audit logs", "operationId": "getAuditLogs", "tags": [ "AuditLogs" ], "parameters": [ { "$ref": "#/components/parameters/StartRequired" }, { "$ref": "#/components/parameters/EndRequired" }, { "$ref": "#/components/parameters/Offset" }, { "$ref": "#/components/parameters/NumberOfSamples" }, { "$ref": "#/components/parameters/SortOrder" }, { "$ref": "#/components/parameters/AuditLogSort" }, { "$ref": "#/components/parameters/AuditLogFilter" } ], "responses": { "200": { "description": "Executed successfully", "content": { "application/json": { "schema": { "type": "object", "required": [ "logs" ], "properties": { "total": { "type": "integer", "example": 2000 }, "next": { "type": "integer", "example": 100 }, "audit_logs": { "$ref": "#/components/schemas/AuditLogs" } } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/audit/log/file": { "get": { "description": "Download audit logs as a file, based on query params filter", "summary": "Download audit logs", "operationId": "downloadAuditLogs", "tags": [ "AuditLogs" ], "parameters": [ { "in": "query", "name": "file_type", "schema": { "type": "string", "enum": [ "CSV", "JSON" ], "default": "CSV" }, "required": false }, { "$ref": "#/components/parameters/StartRequired" }, { "$ref": "#/components/parameters/EndRequired" }, { "$ref": "#/components/parameters/NumberOfSamples" }, { "$ref": "#/components/parameters/AuditLogFilter" } ], "responses": { "200": { "description": "File downloaded", "content": { "application/octet-stream": {} } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/notification-types": { "get": { "tags": [ "Notification Types" ], "operationId": "getNotificationTypes", "summary": "Get notification types", "description": "Get list of available notification types", "responses": { "200": { "description": "Notification types", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotificationTypes" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "501": { "$ref": "#/components/responses/501NotImplemented" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/notification-state": { "get": { "tags": [ "Notification State" ], "operationId": "getNotificationState", "summary": "Get notification state", "description": "Get notification state", "responses": { "200": { "description": "Notification state", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotificationState" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "501": { "$ref": "#/components/responses/501NotImplemented" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "patch": { "tags": [ "Notification State" ], "operationId": "updateNotificationState", "summary": "Update notification state", "description": "Update tenant notifications state", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotificationState" } } } }, "responses": { "200": { "description": "Notification Channel config", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotificationState" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "501": { "$ref": "#/components/responses/501NotImplemented" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/notification-channels": { "get": { "tags": [ "NotificationChannels" ], "operationId": "getNotificationChannels", "summary": "Get supported Notification Channels", "description": "Get supported Notification Channels", "responses": { "200": { "description": "Notification Channel types", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NotificationChannelMeta" } } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "501": { "$ref": "#/components/responses/501NotImplemented" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "tags": [ "NotificationChannels" ], "operationId": "createNotificationChannelConfig", "summary": "Create configuration of notification channel", "description": "Create configuration of notification channel", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotificationChannel" } } } }, "responses": { "200": { "description": "Notification Channel config created" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "409": { "$ref": "#/components/responses/409Conflict" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "501": { "$ref": "#/components/responses/501NotImplemented" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/notification-channels/slack/create-app": { "post": { "tags": [ "NotificationChannels" ], "operationId": "createSlackApp", "summary": "Create Slack app", "description": "Create Slack app", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateSlackAppRequestBody" } } } }, "responses": { "200": { "description": "Created Slack app response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateSlackAppResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "501": { "$ref": "#/components/responses/501NotImplemented" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/notification-channels/{name}": { "parameters": [ { "$ref": "#/components/parameters/NotificationChannelName" } ], "get": { "tags": [ "NotificationChannels" ], "operationId": "getNotificationChannelConfig", "summary": "Get configuration of notification channel", "description": "Get configuration of notification channel", "responses": { "200": { "description": "Notification channel config", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotificationChannelResponse" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "501": { "$ref": "#/components/responses/501NotImplemented" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "patch": { "tags": [ "NotificationChannels" ], "operationId": "patchNotificationChannelConfig", "summary": "Patch configuration of Notification Channel", "description": "Patch configuration of Notification Channel", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotificationChannelForPatch" } } } }, "responses": { "200": { "description": "Notification Channel config patched" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "501": { "$ref": "#/components/responses/501NotImplemented" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "put": { "tags": [ "NotificationChannels" ], "operationId": "updateNotificationChannelConfig", "summary": "Update configuration of Notification Channel", "description": "Update configuration of Notification Channel", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotificationChannel" } } } }, "responses": { "200": { "description": "Notification Channel config updated" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "501": { "$ref": "#/components/responses/501NotImplemented" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "tags": [ "NotificationChannels" ], "operationId": "deleteNotificationChannelConfig", "summary": "Delete configuration of Notification Channel", "description": "Delete configuration of Notification Channel", "responses": { "204": { "description": "Notification Channel config deleted" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "501": { "$ref": "#/components/responses/501NotImplemented" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/validate-notification-channel": { "post": { "tags": [ "NotificationChannels" ], "operationId": "validateNotificationChannel", "summary": "Validate configuration of Notification Channel", "description": "Validate configuration of Notification Channel", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotificationChannelForValidate" } } } }, "responses": { "200": { "description": "Notification Channel validity", "content": { "application/json": { "schema": { "example": true, "type": "boolean" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "409": { "$ref": "#/components/responses/409Conflict" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "501": { "$ref": "#/components/responses/501NotImplemented" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/subscriptions": { "get": { "tags": [ "Subscriptions" ], "operationId": "getMySubscriptions", "summary": "Get current users subscriptions", "description": "Get current users subscriptions", "responses": { "200": { "description": "A Subscription", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Subscriptions" } } } }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "501": { "$ref": "#/components/responses/501NotImplemented" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "post": { "tags": [ "Subscriptions" ], "operationId": "createSubscription", "summary": "Create user subscription", "description": "Create user subscription", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Subscription" } } } }, "responses": { "200": { "description": "Subscription created successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Subscription" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "501": { "$ref": "#/components/responses/501NotImplemented" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } }, "/api/v1/subscriptions/{id}": { "parameters": [ { "$ref": "#/components/parameters/SubscriptionId" } ], "put": { "tags": [ "Subscriptions" ], "operationId": "updateSubscription", "summary": "Update user subscription", "description": "Update user subscription", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubscriptionForPut" } } } }, "responses": { "200": { "description": "Subscription created successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Subscription" } } } }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "501": { "$ref": "#/components/responses/501NotImplemented" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } }, "delete": { "tags": [ "Subscriptions" ], "operationId": "deleteSubscription", "summary": "Delete user subscription", "description": "Delete user subscription", "responses": { "204": { "description": "Subscription deleted successfully" }, "400": { "$ref": "#/components/responses/400BadRequest" }, "401": { "$ref": "#/components/responses/401Unauthorized" }, "403": { "$ref": "#/components/responses/403Forbidden" }, "404": { "$ref": "#/components/responses/404NotFound" }, "500": { "$ref": "#/components/responses/500InternalServerError" }, "501": { "$ref": "#/components/responses/501NotImplemented" }, "503": { "$ref": "#/components/responses/503ServiceUnavailable" } } } } }, "components": { "schemas": { "ClusterIdOptional": { "description": "The id of the cluster.", "type": "string", "format": "uuid", "minLength": 1, "example": "71f69d83-ba66-4822-adf5-55ce55efd210", "nullable": true }, "DepartmentIdOptional": { "description": "The id of the department.", "type": "string", "minLength": 1, "example": 2, "nullable": true, "pattern": ".*" }, "Error": { "required": [ "code", "message" ], "properties": { "code": { "type": "integer", "minimum": 100, "maximum": 599 }, "message": { "type": "string" }, "details": { "type": "string" } }, "example": { "code": 400, "message": "Bad request - Resource should have a name" } }, "TenantId": { "description": "The id of the tenant.", "type": "integer", "format": "int32", "example": 1001 }, "ClusterReportedConfig": { "description": "Holds cluster configuration values.", "type": "object", "properties": { "workloadOwnershipProtection": { "type": "boolean", "nullable": true, "description": "indicates if the cluster workload ownership protection is enabled", "example": false }, "subdomainEnabled": { "type": "boolean", "nullable": true, "description": "indicates if the cluster subdomain is enabled", "example": false }, "ingressClass": { "type": "string", "nullable": true, "description": "the ingress class that is configured for the cluster", "example": "nginx" } }, "nullable": true }, "ClusterDependencyStatus": { "type": "object", "required": [ "available" ], "properties": { "available": { "type": "boolean", "description": "whether the dependency is available" }, "reason": { "type": "string", "description": "the reason for the dependency status" }, "components": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/ClusterDependencyStatus" } } } }, "ClusterDependenciesStatus": { "type": "object", "required": [ "required", "optional" ], "properties": { "required": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/ClusterDependencyStatus" } }, "optional": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/ClusterDependencyStatus" } } } }, "ClusterReportedStatus": { "type": "object", "description": "the cluster status reported by the cluster", "properties": { "conditions": { "items": { "description": "Condition contains details for one aspect of the current state of this API Resource", "properties": { "lastTransitionTime": { "description": "lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", "format": "date-time", "type": "string" }, "message": { "description": "message is a human readable message indicating details about the transition. This may be an empty string.", "maxLength": 32768, "type": "string" }, "observedGeneration": { "description": "observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.", "format": "int64", "minimum": 0, "type": "integer" }, "reason": { "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.", "maxLength": 1024, "minLength": 1, "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$", "type": "string" }, "status": { "description": "status of the condition, one of True, False, Unknown.", "enum": [ "True", "False", "Unknown" ], "type": "string" }, "type": { "description": "type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)", "maxLength": 316, "type": "string" } }, "required": [ "lastTransitionTime", "message", "reason", "status", "type" ], "type": "object" }, "type": "array" }, "operands": { "additionalProperties": { "description": "Status specifies the status of an operand. And operand manages resources, some of which are not immediately available and need their status monitored, such as Deployments, Daemonsets, Ingressess etc. Some resources are immediately available and should not be monitored once accepted by the cluster, such as Services, ConfigMaps, Secrets etc. If all resources of an operand are ready, a Status with Ready set to 'true' and a nil 'Reasons' slice should be returned, otherwise, a Status with 'Reasons' slice containig the reason why the Operand is not ready (Deployment pods are not ready for example.)", "properties": { "lastTransitionTime": { "description": "LastTransitionTime specifies the last time the operand readiness changed", "format": "date-time", "type": "string" }, "ready": { "description": "Ready specifies if the operand is ready or not", "type": "boolean" }, "reasons": { "description": "Reasons specifies the reasons why the operand is not ready", "items": { "type": "string" }, "type": "array" }, "unreadyThresholdCrossed": { "description": "UnreadyThresholdCrossed specifies if the operand has been unready for longer than the threshold", "type": "boolean" } }, "required": [ "ready" ], "type": "object" }, "description": "OperandStatuses specifies the status of the managed operands", "type": "object" }, "platform": { "nullable": true, "type": "object", "properties": { "type": { "nullable": true, "type": "string", "enum": [ "vanilla", "openshift", "rke", "gke", "aks", "eks" ], "description": "the cluster platform type" }, "kubeVersion": { "nullable": true, "type": "string", "description": "the cluster kubernetes version" } } }, "config": { "$ref": "#/components/schemas/ClusterReportedConfig" }, "dependencies": { "$ref": "#/components/schemas/ClusterDependenciesStatus" } } }, "ClusterState": { "type": "string", "description": "The cluster's state.", "enum": [ "WaitingToConnect", "Connected", "Disconnected", "MissingPrerequisites", "ServiceIssues", "Unknown" ] }, "ClusterDisplayedStatus": { "type": "object", "description": "The cluster's displayed status.", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/ClusterReportedStatus" }, { "type": "object", "properties": { "state": { "$ref": "#/components/schemas/ClusterState" } } } ] }, "DisplayedCluster": { "type": "object", "required": [ "uuid", "tenantId", "name", "createdAt" ], "properties": { "uuid": { "type": "string", "format": "uuid" }, "tenantId": { "$ref": "#/components/schemas/TenantId" }, "name": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time" }, "domain": { "type": "string", "nullable": true }, "version": { "type": "string", "nullable": true }, "status": { "$ref": "#/components/schemas/ClusterDisplayedStatus" }, "updatedAt": { "type": "string", "format": "date-time", "nullable": true }, "deletedAt": { "type": "string", "nullable": true, "format": "date-time" }, "lastLiveness": { "type": "string", "nullable": true, "format": "date-time" }, "deleteRequestedAt": { "description": "the timestamp value of when the cluster deletion request was received", "type": "string", "format": "date-time", "nullable": true } }, "example": { "uuid": "A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11", "name": "example", "tenantId": 1001, "domain": "my.company.com", "status": {}, "createdAt": "2020-01-01T00:00:00Z", "updatedAt": "2020-01-02T00:00:00Z", "lastLiveness": "2020-01-02T00:00:00Z", "version": "2.15.0" } }, "NodeFilterSortFields": { "type": "string", "enum": [ "name", "status", "nodePool", "gpuType", "nvLinkDomainUid", "nvLinkCliqueId", "clusterUuid" ] }, "NodeStatusConditionDetails": { "type": "object", "required": [ "type", "reason" ], "properties": { "type": { "type": "string", "description": "Type of node condition." }, "reason": { "type": "string", "description": "(brief) reason for the condition's last transition.", "example": "KubeletNotReady" }, "message": { "type": "string", "description": "Human readable message indicating details about last transition.", "example": "container runtime status check may not have completed yet" } }, "x-schema-name": "NodeStatusConditionDetails" }, "NodeTaint": { "type": "object", "required": [ "key", "effect" ], "properties": { "key": { "type": "string", "description": "The taint key to be applied to a node.", "example": "foo" }, "value": { "type": "string", "description": "The taint value corresponding to the taint key.", "example": "bar" }, "effect": { "type": "string", "description": "The effect of the taint on pods that do not tolerate the taint.", "enum": [ "NoSchedule", "PreferNoSchedule", "NoExecute" ] } }, "x-schema-name": "NodeTaint" }, "GpuInfo": { "type": "object", "nullable": true, "required": [ "gpuType", "gpuCount" ], "properties": { "gpuType": { "type": "string", "example": "Tesla-V100" }, "gpuCount": { "type": "integer" } }, "x-schema-name": "GpuInfo" }, "NodeInfo": { "type": "object", "required": [ "status", "nodePool", "createdAt" ], "properties": { "status": { "type": "string", "enum": [ "Ready", "NotReady", "Unknown" ], "description": "The calculated status of the node." }, "conditions": { "type": "array", "items": { "$ref": "#/components/schemas/NodeStatusConditionDetails" } }, "taints": { "type": "array", "items": { "$ref": "#/components/schemas/NodeTaint" } }, "nodePool": { "type": "string", "description": "The node's NodePool.", "example": "node-pool-1" }, "createdAt": { "type": "string", "format": "date-time" }, "gpuInfo": { "$ref": "#/components/schemas/GpuInfo" }, "nvLinkDomainUid": { "type": "string", "description": "NV Link Domain Uid", "example": "nvlink-domain-uid", "nullable": true }, "nvLinkCliqueId": { "type": "string", "description": "NV Link Clique Id", "example": "clique-id", "nullable": true } }, "x-schema-name": "NodeInfo" }, "NodeAdditionalFields": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "description": "The name of the node", "example": "worker-node-1" } }, "x-schema-name": "NodeAdditionalFields" }, "ClusterId": { "description": "The id of the cluster.", "type": "string", "format": "uuid", "example": "71f69d83-ba66-4822-adf5-55ce55efd210" }, "NodeAdditionalReadFields": { "type": "object", "required": [ "clusterUuid", "updatedAt" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "The unique identifier of the node." }, "clusterUuid": { "$ref": "#/components/schemas/ClusterId" }, "updatedAt": { "type": "string", "format": "date-time" } }, "x-schema-name": "NodeAdditionalReadFields" }, "Node": { "allOf": [ { "$ref": "#/components/schemas/NodeInfo" }, { "$ref": "#/components/schemas/NodeAdditionalFields" }, { "$ref": "#/components/schemas/NodeAdditionalReadFields" } ], "x-schema-name": "Node" }, "Nodes": { "type": "object", "required": [ "nodes" ], "properties": { "nodes": { "type": "array", "items": { "$ref": "#/components/schemas/Node" } } }, "x-schema-name": "Nodes" }, "NodeForSync": { "allOf": [ { "$ref": "#/components/schemas/NodeAdditionalFields" }, { "type": "object", "required": [ "nodeInfo" ], "properties": { "nodeInfo": { "$ref": "#/components/schemas/NodeInfo" } } } ], "x-schema-name": "NodeForSync" }, "ClusterCreationRequest": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string" }, "domain": { "type": "string" }, "version": { "type": "string" } } }, "ClusterUpdateRequest": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string" } } }, "HttpResponse": { "required": [ "code", "message" ], "properties": { "code": { "type": "integer", "minimum": 100, "maximum": 599 }, "message": { "type": "string" } } }, "MetricsType": { "type": "string", "description": "specifies what data to request", "enum": [ "TOTAL_GPU_NODES", "GPU_UTILIZATION", "GPU_UTILIZATION_DISTRIBUTION", "GPU_MEMORY_UTILIZATION", "CPU_UTILIZATION", "CPU_MEMORY_UTILIZATION", "TOTAL_GPU", "GPU_QUOTA", "ALLOCATED_GPU", "UNALLOCATED_GPU", "AVG_WORKLOAD_WAIT_TIME", "WORKLOADS_COUNT" ] }, "GroupedMeasurementGroup": { "type": "object", "required": [ "key", "value" ], "properties": { "key": { "type": "string", "example": "Nodepool", "description": "The grouping key" }, "value": { "type": "string", "example": "gpu-pool-1", "description": "The grouping value" } } }, "GroupedMeasurementResponse": { "type": "object", "required": [ "type", "values" ], "properties": { "type": { "type": "string", "description": "specifies what data returned", "example": "ALLOCATED_GPU" }, "labels": { "type": "object", "nullable": true, "description": "labels of the metric measurement", "example": "{'gpu': '3'}", "additionalProperties": { "type": "string" } }, "values": { "type": "array", "nullable": true, "items": { "type": "object", "required": [ "value", "timestamp" ], "properties": { "value": { "type": "string", "example": "85" }, "timestamp": { "type": "string", "format": "date-time", "nullable": true, "example": "2023-06-06 12:09:18.211" } } } }, "groups": { "type": "array", "description": "Group information for this measurement", "items": { "$ref": "#/components/schemas/GroupedMeasurementGroup" } } } }, "GroupedMetricsResponse": { "type": "object", "required": [ "measurements" ], "properties": { "measurements": { "type": "array", "items": { "$ref": "#/components/schemas/GroupedMeasurementResponse" } } } }, "MeasurementResponse": { "type": "object", "required": [ "type", "values" ], "properties": { "type": { "type": "string", "description": "specifies what data returned", "example": "ALLOCATED_GPU" }, "labels": { "type": "object", "nullable": true, "description": "labels of the metric measurement", "example": "{'gpu': '3'}", "additionalProperties": { "type": "string" } }, "values": { "type": "array", "nullable": true, "items": { "type": "object", "required": [ "value", "timestamp" ], "properties": { "value": { "type": "string", "example": "85" }, "timestamp": { "type": "string", "format": "date-time", "nullable": true, "example": "2023-06-06 12:09:18.211" } } } } } }, "MetricsResponse": { "type": "object", "required": [ "measurements" ], "properties": { "measurements": { "type": "array", "items": { "$ref": "#/components/schemas/MeasurementResponse" } } } }, "NodepoolId": { "type": "string", "description": "The NodePool id", "readOnly": true, "example": 5 }, "NodepoolPhase": { "type": "string", "enum": [ "Creating", "Updating", "Deleting", "Empty", "Unschedulable", "Ready", "Deleted" ], "description": "Phase of Node Pool" }, "NodepoolMetadata": { "type": "object", "required": [ "id", "name", "clusterId" ], "properties": { "id": { "$ref": "#/components/schemas/NodepoolId" }, "name": { "type": "string", "example": "v100", "minLength": 1 }, "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "phase": { "$ref": "#/components/schemas/NodepoolPhase" } } }, "NodepoolFullMetadata": { "allOf": [ { "$ref": "#/components/schemas/NodepoolMetadata" }, { "type": "object" } ] }, "NodepoolSortFilterFields": { "type": "string", "enum": [ "name", "phase", "clusterId", "createdAt", "updatedAt", "networkTopologyName", "gpuNetworkAccelerationDetection", "gpuNetworkAccelerationDetected", "gpuNetworkAccelerationLabelKey", "swapEnabled", "nodeLevelSchedulerEnabled" ] }, "PlacementStrategy": { "type": "string", "enum": [ "spread", "binpack" ], "example": "spread", "nullable": true }, "NodepoolGPUNetworkAccelerationDetection": { "type": "string", "enum": [ "Use", "DontUse", "Auto" ], "nullable": true, "default": "Auto", "description": "GPUNetworkAccelerationDetection is a strategy to use for GPU Network Acceleration detection" }, "NetworkTopologyNameOptional": { "type": "string", "nullable": true, "description": "Name of the network topology", "maxLength": 63, "minLength": 1, "pattern": "^[a-z]([a-z0-9-]*[a-z0-9])?$", "example": "default-topology" }, "NetworkTopologyIdOptional": { "type": "string", "format": "uuid", "nullable": true, "description": "The unique identifier for the network topology", "example": "123e4567-e89b-12d3-a456-426614174000" }, "GPUResourceOptimization": { "type": "object", "nullable": true, "properties": { "swapEnabled": { "type": "boolean", "description": "Indicates if swap is enabled on the node pool", "example": true, "default": false, "nullable": true }, "cpuSwapMemorySize": { "type": "string", "description": "Size of the swap cpu memory. Only allowed when swapEnabled is true", "example": "10000M", "default": "100G", "nullable": true, "pattern": "^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" }, "reservedGpuMemoryForSwapOperations": { "type": "string", "description": "Reserved GPU memory for swap operations. Only allowed when swapEnabled is true", "example": "10G", "default": "2G", "nullable": true, "pattern": "^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" }, "nodeLevelSchedulerEnabled": { "type": "boolean", "description": "Indicates if node level scheduler is enabled on the node pool. Replaces the deprecated 'overProvisioningRatio' field", "example": true, "default": false, "nullable": true } } }, "SchedulingConfiguration": { "type": "object", "nullable": true, "properties": { "placementStrategy": { "description": "Scheduling strategy per resource", "properties": { "cpu": { "$ref": "#/components/schemas/PlacementStrategy" }, "gpu": { "$ref": "#/components/schemas/PlacementStrategy" } } }, "minGuaranteedRuntime": { "description": "Minimum duration (e.g., 5d8h40m) that a preemptible workload is guaranteed to run once scheduled and bound to a node. During this period, it is considered non-preemptible even if a higher-priority workload becomes eligible. Defaults to 0 (immediate preemption allowed).", "type": "string", "example": "5d8h40m", "nullable": true, "pattern": "^(0|[+]?((\\d+(\\.\\d+)?)(ns|us|µs|μs|ms|s|m|h|d|w))+$)" } } }, "NodepoolCreateResponseFields": { "type": "object", "required": [ "name", "labelKey", "labelValue", "clusterId" ], "properties": { "name": { "type": "string", "example": "v100", "minLength": 1 }, "labelKey": { "type": "string", "description": "Label key for associated nodes to the Node Pool (with value as in labelValue)", "example": "node-type", "minLength": 1 }, "labelValue": { "type": "string", "description": "Label value for associated nodes to the Node Pool (with key as in labelKey)", "example": "type-x", "minLength": 1 }, "clusterId": { "type": "string", "format": "uuid", "example": "d73a738f-fab3-430a-8fa3-5241493d7128" }, "overProvisioningRatio": { "type": "integer", "example": 1, "minimum": 1, "maximum": 5, "default": 1, "nullable": true, "deprecated": true }, "placementStrategy": { "deprecated": true, "description": "scheduling strategy per resource", "properties": { "cpu": { "$ref": "#/components/schemas/PlacementStrategy" }, "gpu": { "$ref": "#/components/schemas/PlacementStrategy" } } }, "gpuNetworkAccelerationLabelKey": { "description": "Label key by which to determine GPUNetworkAccelerationDetection nodes", "type": "string" }, "gpuNetworkAccelerationDetection": { "$ref": "#/components/schemas/NodepoolGPUNetworkAccelerationDetection" }, "networkTopologyName": { "$ref": "#/components/schemas/NetworkTopologyNameOptional" }, "networkTopologyId": { "$ref": "#/components/schemas/NetworkTopologyIdOptional" }, "gpuResourceOptimization": { "$ref": "#/components/schemas/GPUResourceOptimization" }, "schedulingConfiguration": { "$ref": "#/components/schemas/SchedulingConfiguration" } } }, "NodepoolSyncUpdateFields": { "type": "object", "properties": { "labelKey": { "type": "string", "description": "Label key for associated nodes to the Node Pool (with value as in labelValue)", "example": "node-type", "minLength": 1, "nullable": true }, "labelValue": { "type": "string", "description": "Label value for associated nodes to the Node Pool (with key as in labelKey)", "example": "type-x", "minLength": 1, "nullable": true }, "overProvisioningRatio": { "type": "integer", "example": 1, "minimum": 1, "maximum": 5, "default": 1, "nullable": true, "deprecated": true }, "placementStrategy": { "description": "scheduling strategy per resource", "deprecated": true, "properties": { "cpu": { "$ref": "#/components/schemas/PlacementStrategy" }, "gpu": { "$ref": "#/components/schemas/PlacementStrategy" } } }, "gpuNetworkAccelerationLabelKey": { "description": "Label key by which to determine GPUNetworkAccelerationDetection nodes", "type": "string" }, "gpuNetworkAccelerationDetection": { "$ref": "#/components/schemas/NodepoolGPUNetworkAccelerationDetection" }, "gpuResourceOptimization": { "$ref": "#/components/schemas/GPUResourceOptimization" }, "schedulingConfiguration": { "$ref": "#/components/schemas/SchedulingConfiguration" } } }, "NodepoolConditionDetails": { "type": "object", "required": [ "type", "reason" ], "properties": { "type": { "type": "string", "description": "Type of Nodepool condition." }, "reason": { "type": "string", "description": "(brief) reason for the condition's last transition.", "example": "TopologyMismatch" }, "message": { "type": "string", "description": "Human readable message indicating details about last transition.", "example": "Network Topology labels mismatch" }, "status": { "type": "string", "description": "The status of the condition, can be True or False", "enum": [ "True", "False" ] }, "nodes": { "type": "array", "description": "Names of the nodes related to the nodepool condition", "items": { "type": "string" }, "example": [ "node1", "node2" ] } }, "x-schema-name": "NodepoolConditionDetails" }, "NodepoolSyncFields": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "example": "v100" }, "phase": { "$ref": "#/components/schemas/NodepoolPhase" }, "phaseMessage": { "type": "string", "description": "Message for status of Node Pool", "example": "all nodes are down" }, "status": { "allOf": [ { "$ref": "#/components/schemas/NodepoolSyncUpdateFields" }, { "type": "object", "properties": { "conditions": { "type": "array", "items": { "$ref": "#/components/schemas/NodepoolConditionDetails" } }, "gpuNetworkAccelerationDetected": { "description": "Signals to all relevant parties about GPUNetworkAcceleration being detected in some nodepool's nodes", "type": "boolean" }, "nodes": { "type": "array", "items": { "type": "string", "example": "node1" } } } } ] } } }, "NodepoolCalculatedFields": { "type": "object", "required": [ "id", "tenantId", "clusterName", "createdBy", "createdAt", "updatedBy", "updatedAt", "isDefault" ], "properties": { "id": { "type": "string", "description": "The NodePool id", "readOnly": true, "example": 5 }, "tenantId": { "description": "The id of the tenant.", "type": "integer", "example": 1, "format": "int32" }, "clusterName": { "type": "string", "example": "prod-cluster" }, "createdBy": { "type": "string", "example": "user@lab.com" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedBy": { "type": "string", "example": "user@lab.com" }, "updatedAt": { "type": "string", "format": "date-time" }, "deletedBy": { "type": "string", "example": "user@lab.com" }, "deletedAt": { "type": "string", "nullable": true, "format": "date-time" }, "isDefault": { "type": "boolean", "description": "Is the Node Pool is the cluster default", "example": false } } }, "Nodepool": { "allOf": [ { "$ref": "#/components/schemas/NodepoolCreateResponseFields" }, { "$ref": "#/components/schemas/NodepoolSyncFields" }, { "$ref": "#/components/schemas/NodepoolCalculatedFields" } ] }, "NodepoolCreateFields": { "type": "object", "required": [ "name", "labelKey", "labelValue", "clusterId" ], "properties": { "name": { "type": "string", "example": "v100", "minLength": 1 }, "labelKey": { "type": "string", "description": "Label key for associated nodes to the Node Pool (with value as in labelValue)", "example": "node-type", "minLength": 1 }, "labelValue": { "type": "string", "description": "Label value for associated nodes to the Node Pool (with key as in labelKey)", "example": "type-x", "minLength": 1 }, "clusterId": { "type": "string", "format": "uuid", "example": "d73a738f-fab3-430a-8fa3-5241493d7128" }, "overProvisioningRatio": { "type": "integer", "example": 1, "minimum": 1, "maximum": 5, "default": 1, "nullable": true, "deprecated": true }, "placementStrategy": { "deprecated": true, "description": "scheduling strategy per resource", "properties": { "cpu": { "$ref": "#/components/schemas/PlacementStrategy" }, "gpu": { "$ref": "#/components/schemas/PlacementStrategy" } } }, "gpuNetworkAccelerationLabelKey": { "description": "Label key by which to determine GPUNetworkAccelerationDetection nodes", "type": "string", "nullable": true }, "gpuNetworkAccelerationDetection": { "$ref": "#/components/schemas/NodepoolGPUNetworkAccelerationDetection" }, "gpuResourceOptimization": { "$ref": "#/components/schemas/GPUResourceOptimization" }, "schedulingConfiguration": { "$ref": "#/components/schemas/SchedulingConfiguration" }, "networkTopologyId": { "$ref": "#/components/schemas/NetworkTopologyIdOptional" } } }, "NodepoolUpdateFields": { "type": "object", "properties": { "labelKey": { "type": "string", "description": "Label key for associated nodes to the Node Pool (with value as in labelValue)", "example": "node-type", "minLength": 1, "nullable": true }, "labelValue": { "type": "string", "description": "Label value for associated nodes to the Node Pool (with key as in labelKey)", "example": "type-x", "minLength": 1, "nullable": true }, "overProvisioningRatio": { "type": "integer", "example": 1, "minimum": 1, "maximum": 5, "default": 1, "nullable": true, "deprecated": true }, "placementStrategy": { "deprecated": true, "description": "scheduling strategy per resource", "properties": { "cpu": { "$ref": "#/components/schemas/PlacementStrategy" }, "gpu": { "$ref": "#/components/schemas/PlacementStrategy" } } }, "gpuNetworkAccelerationLabelKey": { "description": "Label key by which to determine GPUNetworkAccelerationDetection nodes", "type": "string", "nullable": true }, "gpuNetworkAccelerationDetection": { "$ref": "#/components/schemas/NodepoolGPUNetworkAccelerationDetection" }, "gpuResourceOptimization": { "$ref": "#/components/schemas/GPUResourceOptimization" }, "schedulingConfiguration": { "$ref": "#/components/schemas/SchedulingConfiguration" }, "networkTopologyId": { "$ref": "#/components/schemas/NetworkTopologyIdOptional" } } }, "NetworkTopologiesSource": { "type": "string", "description": "Identifier of the the source of the topology. Useful for tracking where the topology data originated (i.e. Run:ai, Cluster).", "example": "Run.ai", "minLength": 1, "maxLength": 63, "pattern": "^[a-zA-Z0-9][a-zA-Z0-9_.-]*[a-zA-Z0-9]$" }, "NetworkTopologyName": { "type": "string", "description": "Name of the network topology", "maxLength": 63, "minLength": 1, "pattern": "^[a-z]([a-z0-9-]*[a-z0-9])?$", "example": "default-topology" }, "NetworkTopologyLevels": { "type": "array", "items": { "type": "string", "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\\/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$", "minLength": 1, "maxLength": 63 }, "description": "Ordered array of network topology levels", "example": [ "cloud.provider.com/topology-block", "cloud.provider.com/topology-rack", "kubernetes.io/hostname" ] }, "ClusterInstallationInfoResponse": { "type": "object", "required": [ "installationStr", "repositoryName", "chartRepoURL", "clientSecret" ], "properties": { "installationStr": { "type": "string" }, "repositoryName": { "type": "string" }, "chartRepoURL": { "type": "string" }, "clientSecret": { "type": "string" } }, "example": { "installationStr": "helm update --update repo/runai-cluster -n runai --set cluster.url=test_cluster", "repositoryName": "runai", "chartRepoURL": "https://runai.jfrog.io/artifactory/charts", "clientSecret": "ABC333DDD" } }, "NodeTelemetryType": { "type": "string", "enum": [ "READY_GPU_NODES", "READY_GPUS", "TOTAL_GPU_NODES", "TOTAL_GPUS", "IDLE_ALLOCATED_GPUS", "FREE_GPUS", "ALLOCATED_GPUS", "TOTAL_CPU_CORES", "USED_CPU_CORES", "ALLOCATED_CPU_CORES", "TOTAL_GPU_MEMORY_BYTES", "USED_GPU_MEMORY_BYTES", "TOTAL_CPU_MEMORY_BYTES", "USED_CPU_MEMORY_BYTES", "ALLOCATED_CPU_MEMORY_BYTES", "FULLY_FREE_GPU_NODES" ] }, "TelemetryResponse": { "type": "object", "required": [ "type", "timestamp", "values" ], "properties": { "type": { "type": "string", "description": "specifies what data returned", "example": "ALLOCATION_RATIO" }, "timestamp": { "type": "string", "format": "date-time", "example": "2023-06-06 12:09:18.211" }, "values": { "type": "array", "items": { "type": "object", "required": [ "value" ], "properties": { "value": { "type": "string", "example": "85" }, "groups": { "type": "array", "description": "columns the data is grouped by", "maxItems": 2, "items": { "type": "object", "required": [ "key", "value" ], "properties": { "key": { "type": "string", "example": "department" }, "value": { "type": "string", "example": "1" }, "name": { "type": "string", "example": "department-A" } } } } } } } } }, "NodeMetricType": { "type": "string", "description": "Specify which metric data to request.", "enum": [ "GPU_UTILIZATION_PER_GPU", "GPU_UTILIZATION", "GPU_MEMORY_UTILIZATION_PER_GPU", "GPU_MEMORY_UTILIZATION", "GPU_MEMORY_USAGE_BYTES_PER_GPU", "GPU_MEMORY_USAGE_BYTES", "GPU_ALLOCATION_PER_GPU", "GPU_MEMORY_ALLOCATION_BYTES_PER_GPU", "GPU_IDLE_TIME_SECONDS_PER_GPU", "CPU_USAGE_CORES", "CPU_UTILIZATION", "CPU_MEMORY_USAGE_BYTES", "CPU_MEMORY_UTILIZATION", "GPU_OOMKILL_BURST_COUNT_PER_GPU", "GPU_OOMKILL_IDLE_COUNT_PER_GPU", "GPU_OOMKILL_SWAP_OUT_OF_RAM_COUNT_PER_GPU", "GPU_GRAPHICS_ENGINE_ACTIVITY_PER_GPU", "GPU_SM_ACTIVITY_PER_GPU", "GPU_SM_OCCUPANCY_PER_GPU", "GPU_TENSOR_ACTIVITY_PER_GPU", "GPU_FP64_ENGINE_ACTIVITY_PER_GPU", "GPU_FP32_ENGINE_ACTIVITY_PER_GPU", "GPU_FP16_ENGINE_ACTIVITY_PER_GPU", "GPU_MEMORY_BANDWIDTH_UTILIZATION_PER_GPU", "GPU_NVLINK_TRANSMITTED_BANDWIDTH_PER_GPU", "GPU_NVLINK_RECEIVED_BANDWIDTH_PER_GPU", "GPU_PCIE_TRANSMITTED_BANDWIDTH_PER_GPU", "GPU_PCIE_RECEIVED_BANDWIDTH_PER_GPU", "NVLINK_BANDWIDTH_TOTAL", "NVLINK_BANDWIDTH_TOTAL_PER_GPU" ] }, "NetworkTopologyUpdateFields": { "type": "object", "required": [ "levels" ], "properties": { "levels": { "$ref": "#/components/schemas/NetworkTopologyLevels" } }, "x-schema-name": "NetworkTopologyUpdateFields" }, "NetworkTopologyCreateRequest": { "allOf": [ { "$ref": "#/components/schemas/NetworkTopologyUpdateFields" }, { "type": "object", "required": [ "name", "clusterId" ], "properties": { "name": { "$ref": "#/components/schemas/NetworkTopologyName" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" } } } ], "x-schema-name": "NetworkTopologyCreateRequest" }, "NetworkTopologyId": { "type": "string", "format": "uuid", "description": "The unique identifier for the network topology", "example": "123e4567-e89b-12d3-a456-426614174000" }, "NetworkTopology": { "allOf": [ { "$ref": "#/components/schemas/NetworkTopologyCreateRequest" }, { "type": "object", "required": [ "id", "tenantId", "createdAt", "status" ], "properties": { "id": { "$ref": "#/components/schemas/NetworkTopologyId" }, "tenantId": { "$ref": "#/components/schemas/TenantId" }, "createdAt": { "type": "string", "format": "date-time", "description": "The timestamp for when the network topology was created" }, "createdBy": { "type": "string", "description": "Identifier of the user who created the network topology", "example": "user@lab.com" }, "phase": { "type": "string", "description": "Phase of the network topology in the cluster. Enum: Creating, Ready", "example": "Ready" }, "source": { "$ref": "#/components/schemas/NetworkTopologiesSource" }, "nodePools": { "type": "array", "items": { "type": "string" }, "nullable": true, "readOnly": true, "description": "List of node-pools associated with this network topology", "example": [ "a100" ] } } } ], "x-schema-name": "NetworkTopology" }, "CountResponse": { "type": "object", "required": [ "count" ], "properties": { "count": { "type": "integer", "format": "int64", "example": 1 } } }, "Metadata": { "type": "object", "required": [ "id", "createdAt", "updatedAt" ], "properties": { "id": { "type": "string", "format": "uuid" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "deletedAt": { "type": "string", "nullable": true, "format": "date-time" }, "tenantId": { "$ref": "#/components/schemas/TenantId" } } }, "ClusterUserConfig": { "type": "object", "description": "Cluster configuration", "allOf": [ { "$ref": "#/components/schemas/Metadata" }, { "type": "object", "properties": { "clusterId": { "type": "string", "format": "uuid" } } } ] }, "ComplianceIssues": { "properties": { "complianceIssues": { "type": "array", "items": { "type": "object", "required": [ "details", "field" ], "properties": { "field": { "type": "string", "example": "compute.gpuDevicesRequest" }, "details": { "type": "string", "example": "value must be no less than 3" } } } } }, "nullable": true, "type": "object" }, "SubmissionError": { "allOf": [ { "$ref": "#/components/schemas/Error" }, { "$ref": "#/components/schemas/ComplianceIssues" } ] }, "ProjectId": { "description": "The id of the project.", "type": "string", "example": 1, "pattern": ".*" }, "ScopeType": { "type": "string", "enum": [ "system", "tenant", "cluster", "department", "project" ] }, "Priority": { "type": "object", "required": [ "name", "value" ], "properties": { "name": { "type": "string", "description": "The display name of the priority", "example": "Low" }, "value": { "type": "integer", "format": "int", "description": "The numeric value of the priority", "example": 100 }, "isDefault": { "type": "boolean", "description": "The field determines if the current priority value is default", "example": false } } }, "ReportFilterAndSortFields": { "type": "string", "enum": [ "name", "createdAt", "createdBy", "status" ] }, "ReportGroupByOptions": { "type": "string", "nullable": true, "enum": [ "Nodepool", "Project", "Department", "Cluster" ] }, "ReportRequestFields": { "type": "object", "required": [ "name", "start", "end" ], "properties": { "name": { "type": "string", "example": "2023 GPU report" }, "description": { "type": "string", "example": "This report shows the GPU usage of all projects in the organization" }, "start": { "type": "string", "format": "date-time", "description": "timestamp from when to fetch data in UTC", "example": "2023-06-07T09:09:18.211Z" }, "end": { "type": "string", "format": "date-time", "description": "timestamp until when to fetch data in UTC", "example": "2023-06-07T12:09:18.211Z" }, "groupBy": { "$ref": "#/components/schemas/ReportGroupByOptions" }, "filterBy": { "type": "array", "description": "Filter results by a parameter. Use the format field-name == value.", "default": [], "items": { "type": "string", "pattern": "^(projectName|departmentName|clusterId)(==).+$" }, "example": [ "projectName==some-name" ] } } }, "ReportStatus": { "type": "string", "enum": [ "Pending", "Processing", "Ready", "Failed" ] }, "ReportCalculatedFields": { "type": "object", "required": [ "id", "tenantId", "createdAt", "createdBy", "status", "statusUpdatedAt" ], "properties": { "id": { "type": "string", "format": "uuid" }, "createdAt": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string", "example": "user@run.ai" }, "tenantId": { "type": "integer", "format": "int32", "description": "ID of the tenant where the project is located.", "example": 2 }, "status": { "$ref": "#/components/schemas/ReportStatus" }, "statusUpdatedAt": { "type": "string", "format": "date-time" }, "statusMessage": { "type": "string", "example": "Report in queue" } } }, "Report": { "allOf": [ { "$ref": "#/components/schemas/ReportRequestFields" }, { "$ref": "#/components/schemas/ReportCalculatedFields" } ] }, "Reports": { "type": "array", "items": { "$ref": "#/components/schemas/Report" } }, "DepartmentFilterSortFields": { "type": "string", "enum": [ "name", "clusterId", "totalGpuQuota", "gpuAllocated", "createdAt", "avgGpuAllocation24h", "avgGpuUtilization24h", "avgGpuMemoryUtilization24h", "avgGpuAllocation7d", "avgGpuUtilization7d", "avgGpuMemoryUtilization7d", "avgGpuAllocation30d", "avgGpuUtilization30d", "avgGpuMemoryUtilization30d" ] }, "Verbosity": { "type": "string", "enum": [ "meta", "brief", "verbose" ] }, "SchedulingRules": { "type": "object", "nullable": true, "properties": { "interactiveJobTimeLimitSeconds": { "type": "integer", "description": "interactive job time limit in seconds", "nullable": true, "example": 100, "minimum": 1 }, "interactiveJobMaxIdleDurationSeconds": { "type": "integer", "description": "interactive job max idle duration in seconds", "nullable": true, "example": 100, "minimum": 1 }, "interactiveJobPreemptIdleDurationSeconds": { "type": "integer", "description": "interactive job preempt idle duration in seconds", "nullable": true, "example": 100, "minimum": 1 }, "trainingJobMaxIdleDurationSeconds": { "type": "integer", "description": "training job max idle duration in seconds", "nullable": true, "example": 100, "minimum": 1 }, "trainingJobTimeLimitSeconds": { "type": "integer", "description": "training job time limit in seconds", "nullable": true, "example": 100, "minimum": 1 } } }, "NodeTypesPerWorkload": { "properties": { "training": { "type": "array", "description": "ids of the node types for training workloads", "items": { "type": "string" } }, "workspace": { "type": "array", "description": "ids of the node types for workspace workloads", "items": { "type": "string" } }, "names": { "nullable": true, "type": "object", "additionalProperties": { "type": "string" }, "description": "mapping of ids to names" } } }, "DataUpdatableDepartmentFields": { "type": "object", "description": "Updatable fields", "required": [ "resources" ], "properties": { "description": { "type": "string", "description": "department's description" }, "schedulingRules": { "$ref": "#/components/schemas/SchedulingRules" }, "defaultNodePools": { "description": "default order of node pools for workloads. will be enforced if no list is defined in workload policy", "type": "array", "nullable": true, "items": { "type": "string" } }, "nodeTypes": { "description": "default node types configuration for workloads. will be enforced if no node type is configured in workload policy", "nullable": true, "$ref": "#/components/schemas/NodeTypesPerWorkload" } } }, "OvertimeRangeData": { "type": "object", "description": "Average data for the specified time range, or for the lifetime of the project/department if it exists for less than the time range.", "properties": { "averageGpuAllocation": { "type": "number", "format": "double", "example": 10, "description": "The average gpu devices allocation of the project/department." }, "averageGpuUtilization": { "type": "number", "format": "double", "example": 95, "description": "The average gpu utilization percentage of the project/department." }, "averageGpuMemoryUtilization": { "type": "number", "format": "double", "example": 95, "description": "The average gpu memory utilization percentage of the project/department. Only available for cluster versions >= 2.22.", "nullable": true }, "updatedAt": { "type": "string", "format": "date-time", "example": "2021-08-01T00:00:00Z" } } }, "OvertimeData": { "type": "object", "properties": { "range24hData": { "type": "object", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OvertimeRangeData" } ] }, "range7dData": { "type": "object", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OvertimeRangeData" } ] }, "range30dData": { "type": "object", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OvertimeRangeData" } ] } } }, "DataDepartmentFields": { "allOf": [ { "$ref": "#/components/schemas/DataUpdatableDepartmentFields" }, { "type": "object", "required": [ "name", "clusterId" ], "properties": { "name": { "type": "string", "example": "organization1" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "overtimeData": { "$ref": "#/components/schemas/OvertimeData" } } } ] }, "DepartmentProjectChild": { "type": "object", "description": "Department or project child", "required": [ "id", "name" ], "properties": { "id": { "type": "string", "format": "uuid", "example": "9f55253e-11ed-47c7-acef-fc4054768dbc" }, "name": { "type": "string", "example": "organization1" }, "children": { "type": "array", "items": { "$ref": "#/components/schemas/DepartmentProjectChild" } } } }, "QuotaStatusResource": { "type": "object", "properties": { "gpu": { "type": "number", "format": "double", "description": "The number of GPUs (allocated/requested/...).", "example": 0 }, "cpu": { "type": "number", "format": "double", "description": "CPU in Millicores (allocated/requested/...).", "example": 1000 }, "memory": { "type": "number", "format": "double", "description": "Memory in MB (allocated/requested/...).", "example": 1000 } } }, "QuotaStatus": { "type": "object", "description": "Sum of all quota statuses of all the node pools", "properties": { "allocated": { "$ref": "#/components/schemas/QuotaStatusResource" }, "allocatedNonPreemptible": { "$ref": "#/components/schemas/QuotaStatusResource" }, "requested": { "$ref": "#/components/schemas/QuotaStatusResource" } } }, "TotalResources": { "type": "object", "properties": { "gpuQuota": { "type": "number", "format": "double", "description": "Total gpu quota of the org unit", "nullable": true }, "cpuQuota": { "type": "number", "format": "double", "description": "Total cpu quota of the org unit in Millicores", "nullable": true }, "memoryQuota": { "type": "number", "format": "double", "description": "Total memory quota of the org unit in MB", "nullable": true } } }, "NonNullResource": { "properties": { "deserved": { "type": "number", "format": "double", "description": "The project resource allocation that it is deserved to get in case the cluster has those resources", "example": 1000, "default": 0 }, "limit": { "type": "number", "format": "double", "description": "Maximum amount of resources the project can get", "nullable": true, "example": 0 }, "overQuotaWeight": { "type": "number", "format": "double", "description": "The priority the project gets for over quota resources", "nullable": true, "example": 2 } } }, "Resource": { "properties": { "deserved": { "type": "number", "format": "double", "description": "The project resource allocation that it is deserved to get in case the cluster has those resources", "nullable": true, "example": 1000 }, "limit": { "type": "number", "format": "double", "description": "Maximum amount of resources the project can get", "nullable": true, "example": 0 }, "overQuotaWeight": { "type": "number", "format": "double", "description": "The priority the project gets for over quota resources", "nullable": true, "example": 2 } } }, "units": { "type": "string", "enum": [ "Mib", "MB", "GB" ] }, "Resources": { "required": [ "gpu" ], "properties": { "nodePool": { "required": [ "id" ], "properties": { "id": { "type": "string", "description": "node pool id", "example": 22 }, "name": { "type": "string", "description": "node pool name", "example": "default" } }, "description": "the node pool which the resources refer to", "type": "object", "nullable": true }, "gpu": { "required": [ "deserved" ], "allOf": [ { "$ref": "#/components/schemas/NonNullResource" }, { "description": "GPU number to the project in the node pool. Default will be set to 0." } ] }, "cpu": { "type": "object", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Resource" }, { "description": "CPU in Millicores to the project in the node pool" } ] }, "memory": { "type": "object", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Resource" }, { "type": "object", "description": "Memory to the project in the node pool", "required": [ "units" ], "properties": { "units": { "$ref": "#/components/schemas/units" } } } ] }, "priority": { "type": "string", "nullable": true, "example": "Normal" } } }, "DepartmentForList": { "allOf": [ { "$ref": "#/components/schemas/DataDepartmentFields" }, { "type": "object", "required": [ "id", "createdAt", "updatedAt", "totalResources" ], "properties": { "id": { "type": "string", "example": 50 }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string" }, "updatedBy": { "type": "string" }, "children": { "type": "array", "nullable": true, "items": { "$ref": "#/components/schemas/DepartmentProjectChild" } }, "status": { "type": "object", "nullable": true, "properties": { "quotaStatus": { "$ref": "#/components/schemas/QuotaStatus" } } }, "totalResources": { "$ref": "#/components/schemas/TotalResources", "nullable": true }, "resources": { "type": "array", "items": { "$ref": "#/components/schemas/Resources" }, "description": "Resources assigned to this Organization per Node Pool" } } } ] }, "ResourcesNullable": { "properties": { "nodePool": { "required": [ "id" ], "properties": { "id": { "type": "string", "description": "node pool id", "example": 22 }, "name": { "type": "string", "description": "node pool name", "example": "default" } }, "description": "the node pool which the resources refer to", "type": "object", "nullable": true }, "gpu": { "allOf": [ { "$ref": "#/components/schemas/NonNullResource" }, { "description": "GPU number to the project in the node pool. Default will be set to 0." } ] }, "cpu": { "type": "object", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Resource" }, { "description": "CPU in Millicores to the project in the node pool" } ] }, "memory": { "type": "object", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/Resource" }, { "type": "object", "description": "Memory to the project in the node pool", "required": [ "units" ], "properties": { "units": { "$ref": "#/components/schemas/units" } } } ] }, "priority": { "type": "string", "nullable": true, "example": "Normal" } } }, "DepartmentCreationRequest": { "allOf": [ { "$ref": "#/components/schemas/DataDepartmentFields" }, { "properties": { "resources": { "type": "array", "items": { "$ref": "#/components/schemas/ResourcesNullable" }, "description": "Resources assigned to this Organization per Node Pool" } } } ] }, "DeservedResource": { "properties": { "deserved": { "type": "number", "format": "double", "description": "The project resource allocation that it is deserved to get in case the cluster has those resources", "nullable": true, "example": 1000 } } }, "AggregatedResources": { "type": "object", "description": "Sum of all resources assigned to the projects under this department per Node Pool", "required": [ "nodePool" ], "properties": { "nodePool": { "type": "object", "description": "the node pool which the resources refer to", "required": [ "id", "name" ], "properties": { "id": { "type": "string", "description": "node pool id", "example": 22 }, "name": { "type": "string", "description": "node pool name", "example": "default" } } }, "gpu": { "$ref": "#/components/schemas/DeservedResource" }, "cpu": { "$ref": "#/components/schemas/DeservedResource" }, "memory": { "allOf": [ { "$ref": "#/components/schemas/DeservedResource" }, { "type": "object", "required": [ "units" ], "properties": { "units": { "$ref": "#/components/schemas/units" } } } ] } } }, "QuotaStatusNodePool": { "allOf": [ { "$ref": "#/components/schemas/QuotaStatus" }, { "type": "object", "required": [ "nodePoolName", "nodePoolId" ], "properties": { "nodePoolName": { "type": "string", "description": "The node pool name which the current quota status refers to" }, "nodePoolId": { "type": "string", "description": "The node pool id which the current quota status refers to" } } } ] }, "Department": { "allOf": [ { "$ref": "#/components/schemas/DataDepartmentFields" }, { "type": "object", "required": [ "id", "name", "description", "createdAt", "updatedAt", "totalResources" ], "properties": { "id": { "type": "string", "example": 50 }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string" }, "updatedBy": { "type": "string" }, "children": { "type": "array", "nullable": true, "items": { "$ref": "#/components/schemas/DepartmentProjectChild" } }, "projectsAggregatedResources": { "type": "array", "nullable": true, "items": { "$ref": "#/components/schemas/AggregatedResources" } }, "status": { "type": "object", "properties": { "nodePoolQuotaStatuses": { "type": "array", "items": { "$ref": "#/components/schemas/QuotaStatusNodePool" } }, "quotaStatus": { "$ref": "#/components/schemas/QuotaStatus" } } }, "totalResources": { "$ref": "#/components/schemas/TotalResources" }, "resources": { "type": "array", "items": { "$ref": "#/components/schemas/Resources" }, "description": "Resources assigned to this Organization per Node Pool" } } } ] }, "DepartmentUpdateRequest": { "allOf": [ { "$ref": "#/components/schemas/DataUpdatableDepartmentFields" }, { "properties": { "resources": { "type": "array", "items": { "$ref": "#/components/schemas/ResourcesNullable" }, "description": "Resources assigned to this Organization per Node Pool" } } } ] }, "ResourcesUpdateRequest": { "type": "array", "items": { "$ref": "#/components/schemas/ResourcesNullable" }, "description": "Resources assigned to this Project per Node Pool" }, "OrgUnitMetricType": { "type": "string", "description": "Specify which metric data to request.", "enum": [ "GPU_QUOTA", "CPU_QUOTA_MILLICORES", "CPU_MEMORY_QUOTA_MB", "GPU_ALLOCATION", "CPU_ALLOCATION_MILLICORES", "CPU_MEMORY_ALLOCATION_MB", "GPU_MEMORY_UTILIZATION" ] }, "OrgUnitTelemetryType": { "type": "string", "description": "Select a telemetry type.", "enum": [ "GPU_QUOTA", "CPU_QUOTA", "MEMORY_QUOTA", "GPU_ALLOCATION", "CPU_ALLOCATION", "MEMORY_ALLOCATION", "GPU_ALLOCATION_NON_PREEMPTIBLE", "CPU_ALLOCATION_NON_PREEMPTIBLE", "MEMORY_ALLOCATION_NON_PREEMPTIBLE" ] }, "ProjectFilterSortFields": { "type": "string", "enum": [ "name", "clusterId", "departmentId", "parentId", "parentName", "phase", "totalGpuQuota", "gpuAllocated", "createdAt", "avgGpuAllocation24h", "avgGpuUtilization24h", "avgGpuMemoryUtilization24h", "avgGpuAllocation7d", "avgGpuUtilization7d", "avgGpuMemoryUtilization7d", "avgGpuAllocation30d", "avgGpuUtilization30d", "avgGpuMemoryUtilization30d" ] }, "DataUpdatableFields": { "type": "object", "description": "Updatable fields", "required": [ "resources" ], "properties": { "description": { "type": "string", "description": "project's description" }, "schedulingRules": { "$ref": "#/components/schemas/SchedulingRules" }, "defaultNodePools": { "description": "default order of node pools for workloads. will be enforced if no list is defined in workload policy", "type": "array", "nullable": true, "items": { "type": "string" } }, "nodeTypes": { "description": "default node types configuration for workloads. will be enforced if no node type is configured in workload policy", "nullable": true, "$ref": "#/components/schemas/NodeTypesPerWorkload" } } }, "ProjectPhase": { "type": "string", "enum": [ "Creating", "Updating", "Deleting", "Deleted", "Initializing", "Ready", "NotReady", "Unknown" ] }, "ProjectStatus": { "type": "object", "properties": { "namespace": { "type": "string", "description": "the project's namespace", "nullable": true, "example": "runai-proj1" }, "phase": { "$ref": "#/components/schemas/ProjectPhase", "description": "the project's phase" }, "phaseMessage": { "type": "string", "description": "the project's phase message", "nullable": true, "example": "Project is ready" }, "lastUpdatedTime": { "type": "string", "format": "date-time", "nullable": true }, "nodePoolQuotaStatuses": { "type": "array", "items": { "$ref": "#/components/schemas/QuotaStatusNodePool" } }, "quotaStatus": { "$ref": "#/components/schemas/QuotaStatus" }, "additionalStatusData": { "nullable": true, "type": "object", "additionalProperties": true } } }, "DepartmentProjectParent": { "type": "object", "nullable": true, "description": "Department or project parent", "required": [ "id", "name" ], "properties": { "id": { "type": "string", "format": "uuid", "example": "9f55253e-11ed-47c7-acef-fc4054768dbc" }, "name": { "type": "string", "example": "organization1" }, "parent": { "$ref": "#/components/schemas/DepartmentProjectParent" } } }, "ProjectEffective": { "properties": { "schedulingRules": { "$ref": "#/components/schemas/SchedulingRules" }, "defaultNodePools": { "description": "default order of node pools for workloads. will be enforced if no list is defined in workload policy", "type": "array", "nullable": true, "items": { "type": "string" } }, "nodeTypes": { "description": "default node types configuration for workloads. will be enforced if no node type is configured in workload policy", "nullable": true, "$ref": "#/components/schemas/NodeTypesPerWorkload" } } }, "Project": { "allOf": [ { "$ref": "#/components/schemas/DataUpdatableFields" }, { "type": "object", "required": [ "id", "name", "parentId", "createdAt", "updatedAt", "totalResources", "effective", "status", "description", "enforceRunaiScheduler", "clusterId", "resources" ], "properties": { "id": { "type": "string", "example": 33 }, "name": { "type": "string", "example": "organization1" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "parentId": { "type": "string", "description": "department parent uuid", "example": "53a9228e-a722-420d-a102-9dc90da2efca" }, "requestedNamespace": { "type": "string", "description": "the project's namespace only if requested", "nullable": true, "example": "runai-proj1" }, "enforceRunaiScheduler": { "type": "boolean", "description": "a flag to enforce that all pods in this namespace will be scheduled with runai-scheduler. Supported for cluster v2.21+" }, "status": { "$ref": "#/components/schemas/ProjectStatus" }, "totalResources": { "$ref": "#/components/schemas/TotalResources" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string" }, "updatedBy": { "type": "string" }, "parent": { "$ref": "#/components/schemas/DepartmentProjectParent" }, "effective": { "$ref": "#/components/schemas/ProjectEffective" }, "overtimeData": { "$ref": "#/components/schemas/OvertimeData" }, "resources": { "type": "array", "items": { "$ref": "#/components/schemas/Resources" }, "description": "Resources assigned to this Organization per Node Pool" } } } ] }, "ProjectCreationRequest": { "allOf": [ { "$ref": "#/components/schemas/DataUpdatableFields" }, { "type": "object", "required": [ "name", "clusterId", "resources" ], "properties": { "name": { "type": "string", "example": "organization1" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "requestedNamespace": { "type": "string", "description": "project's requested namespace", "example": "runai-proj1" }, "enforceRunaiScheduler": { "type": "boolean", "description": "a flag to enforce that all pods in this namespace will be scheduled with runai-scheduler. Supported for cluster v2.21+", "nullable": true, "default": true }, "parentId": { "type": "string", "description": "department parent uuid", "example": "53a9228e-a722-420d-a102-9dc90da2efca", "nullable": true }, "resources": { "type": "array", "items": { "$ref": "#/components/schemas/ResourcesNullable" }, "description": "Resources assigned to this Organization per Node Pool" } } } ] }, "ProjectUpdateRequest": { "allOf": [ { "$ref": "#/components/schemas/DataUpdatableFields" }, { "type": "object", "required": [ "resources" ], "properties": { "enforceRunaiScheduler": { "type": "boolean", "description": "a flag to enforce that all pods in this namespace will be scheduled with runai-scheduler. Supported for cluster v2.21+", "nullable": true }, "resources": { "type": "array", "items": { "$ref": "#/components/schemas/ResourcesNullable" }, "description": "Resources assigned to this Organization per Node Pool" } } } ] }, "ResourcesResetAction": { "type": "string", "description": "The action to apply", "enum": [ "QUOTAS_TO_DEFAULT", "RANKS_TO_DEFAULT", "WEIGHTS_TO_DEFAULT", "WEIGHTS_TO_DESERVED" ] }, "DepartmentsResourcesResetRequest": { "type": "object", "required": [ "clusterId", "nodePoolIds", "action" ], "properties": { "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "nodePoolIds": { "type": "array", "description": "The node pool ids to which the request applies", "maxItems": 5, "items": { "type": "string", "example": "22" } }, "action": { "$ref": "#/components/schemas/ResourcesResetAction" } } }, "ProjectsResourcesResetRequest": { "allOf": [ { "$ref": "#/components/schemas/DepartmentsResourcesResetRequest" }, { "type": "object", "properties": { "parentId": { "type": "string", "description": "apply only to projects under the specified department id", "example": 15 } } } ] }, "ResourceV1Response": { "required": [ "deserved", "overQuotaWeight", "maxAllowed" ], "properties": { "deserved": { "type": "number", "description": "The amount of resources guaranteed to be allocated in case the cluster has those resources.", "example": 0, "nullable": true }, "maxAllowed": { "type": "number", "description": "Maximum amount of resources that can be allocated. If equal to deserved, no over-quota will be allowed. Use \"-1\" for unlimited over quota.", "example": 1000, "nullable": true }, "overQuotaWeight": { "type": "number", "description": "The priority for over quota resources.", "example": 2, "nullable": true } } }, "NodePoolAssignedResourcesV1Response": { "required": [ "nodePool", "id", "gpu", "cpu", "memory" ], "properties": { "id": { "description": "The id of the assigned resources. Required in PUT when updating the assigned resources.", "type": "number" }, "nodePool": { "required": [ "id" ], "properties": { "id": { "type": "number", "description": "Node pool id.", "example": 3 }, "name": { "type": "string", "description": "Node pool name.", "example": "default" } }, "description": "The node pool which the assigned resources refer to." }, "gpu": { "allOf": [ { "$ref": "#/components/schemas/ResourceV1Response" } ], "description": "Number of GPUs assigned in the node pool." }, "cpu": { "allOf": [ { "$ref": "#/components/schemas/ResourceV1Response" } ], "description": "Number of CPU Millicores assigned in the node pool. Supported only if the 'CPU Resources Quota' feature flag is enabled." }, "memory": { "allOf": [ { "$ref": "#/components/schemas/ResourceV1Response" } ], "description": "Amount of CPU Memory Mib assigned in the node pool. Supported only if the 'CPU Resources Quota' feature flag is enabled." } } }, "AssignedResourcesV1Response": { "required": [ "gpu", "cpu", "memory" ], "properties": { "id": { "type": "number" }, "gpu": { "allOf": [ { "$ref": "#/components/schemas/ResourceV1Response" } ], "description": "GPU number assigned" }, "cpu": { "allOf": [ { "$ref": "#/components/schemas/ResourceV1Response" } ], "description": "CPU Millicores assigned. Supported only if 'CPU Resources Quota' feature flag is enabled." }, "memory": { "allOf": [ { "$ref": "#/components/schemas/ResourceV1Response" } ], "description": "CPU Memory Mib assigned. Supported only if 'CPU Resources Quota' feature flag is enabled." } } }, "DepartmentV1CommonFieldsResponse": { "required": [ "deservedGpus", "maxAllowedGpus" ], "properties": { "nodePoolsResources": { "type": "array", "items": { "$ref": "#/components/schemas/NodePoolAssignedResourcesV1Response" }, "description": "Resources assigned to the Department per node pool." }, "name": { "type": "string", "description": "The name of the department.", "example": "default" }, "deservedGpus": { "type": "number", "description": "Deprecated. Instead, use `deserved` for the relevant resource type under `NodePoolResources`. Deserved GPUs for the department.", "example": 2, "deprecated": true }, "allowOverQuota": { "type": "boolean", "description": "Deprecated. Instead, use `maxAllowed` for the relevant resource type under `NodePoolResources`. Is over quota allowed for the department.", "example": false, "deprecated": true }, "maxAllowedGpus": { "type": "number", "description": "Deprecated. Instead, use `maxAllowed` for the relevant resource type under `NodePoolResources`. Max allowed GPUs for the department.", "example": 2, "deprecated": true }, "resources": { "allOf": [ { "$ref": "#/components/schemas/AssignedResourcesV1Response" } ], "description": "Deprecated. Instead, use 'nodePoolsResources'. Total resources assigned to the Department. Can only be used in PUT/POST when there is a single Node Pool in the system. The resources returned in GET are the sum of all Node Pool Resources.", "deprecated": true } } }, "ProjectV1NodeAffinityResponse": { "properties": { "train": { "required": [ "selectedTypes" ], "properties": { "affinityType": { "type": "string", "enum": [ "no_limit", "only_selected" ], "description": "The type of affinity of the jobs on the nodes." }, "selectedTypes": { "type": "array", "items": { "properties": { "id": { "type": "number" }, "name": { "type": "string" } } } } }, "description": "Node affinity configuration for training jobs." }, "interactive": { "required": [ "selectedTypes" ], "properties": { "affinityType": { "type": "string", "enum": [ "no_limit", "only_selected" ], "description": "The type of affinity of the jobs on the nodes." }, "selectedTypes": { "type": "array", "items": { "properties": { "id": { "type": "number" }, "name": { "type": "string" } } } } }, "description": "Node affinity configuration for interactive jobs." } }, "description": "Node affinity configuration for jobs in the project.", "type": "object", "nullable": true }, "ProjectV1ResponseCommonFields": { "required": [ "deservedGpus", "maxAllowedGpus", "gpuOverQuotaWeight" ], "properties": { "nodePoolsResources": { "type": "array", "items": { "$ref": "#/components/schemas/NodePoolAssignedResourcesV1Response" }, "description": "Resources assigned to this Project per Node Pool." }, "deservedGpus": { "type": "number", "description": "Deprecated. Use 'deserved' for the relevant resource type under `NodePoolResources`. The project's deserved GPU allocation in case the cluster has those resources.", "example": 3, "deprecated": true }, "maxAllowedGpus": { "type": "number", "description": "Deprecated. Instead, use `maxAllowed` for the relevant resource type under `NodePoolResources`. An upper limit for the amount of GPUs the project can get (Even if over quota is allowed and resources are available).", "example": 5, "deprecated": true }, "gpuOverQuotaWeight": { "type": "number", "description": "Deprecated. Instead, use `overQuotaWeight` for the relevant resource type under `NodePoolResources`. The priority the project gets for over quota resources.", "maximum": 3, "minimum": 0, "example": 1, "deprecated": true }, "defaultNodePools": { "type": "array", "description": "Default node pools list for workload submission for this project if a workload doesn't specify a node pools list.", "items": { "type": "string" }, "example": [ "default" ] }, "interactiveJobTimeLimitSecs": { "type": "number", "description": "A limit (in seconds) for the duration of interactive jobs from this project.", "example": 3600 }, "interactiveJobMaxIdleDurationSecs": { "type": "number", "description": "Maximum duration (in seconds) that an interactive job can be idle before being terminated.", "example": 3000 }, "interactivePreemptibleJobMaxIdleDurationSecs": { "type": "number", "description": "Maximum duration (in seconds) that an interactive preemptible job can be idle before being terminated.", "example": 3000 }, "trainingJobTimeLimitSecs": { "type": "number", "description": "A limit (in seconds) for the duration of training jobs from this project. Available only from cluster version 2.12", "example": 3600 }, "trainingJobMaxIdleDurationSecs": { "type": "number", "description": "Maximum duration (in seconds) that a training job can be idle before being terminated.", "example": 3000 }, "nodeAffinity": { "$ref": "#/components/schemas/ProjectV1NodeAffinityResponse" }, "permissions": { "required": [ "users", "groups" ], "properties": { "users": { "type": "array", "items": { "type": "string" }, "description": "Names of users that have permissions to the project.", "nullable": true }, "groups": { "type": "array", "items": { "type": "string" }, "description": "Names of groups that have permissions to the project.", "nullable": true }, "applications": { "type": "array", "items": { "type": "string" }, "description": "Names of applications that have permissions to the project." } }, "description": "Deprecated. Instead, use the `accessRules` API to add permissions to a specific subject in the project scope.", "deprecated": true }, "resources": { "allOf": [ { "$ref": "#/components/schemas/AssignedResourcesV1Response" } ], "deprecated": true, "description": "Deprecated. Instead, use `nodePoolsResources`. Total resources assigned to the Project. Can only be used in PUT/POST when there is a single Node Pool in the system. The resources returned in `GET` are the sum of all Node Pool Resources." } } }, "QuotaStatusResourceListV1": { "properties": { "gpu": { "type": "number", "description": "The number of GPUs (allocated/requested/...).", "example": 0 }, "cpu": { "type": "number", "description": "CPU in Millicores (allocated/requested/...).", "example": 1000 }, "memory": { "type": "number", "description": "Memory in Mib (allocated/requested/...).", "example": 1000 } } }, "QuotaStatusV1": { "type": "array", "items": { "properties": { "nodePoolName": { "type": "string", "description": "The node pool name which the current quota status refers to." }, "allocated": { "$ref": "#/components/schemas/QuotaStatusResourceListV1" }, "allocatedNonPreemptible": { "$ref": "#/components/schemas/QuotaStatusResourceListV1" }, "requested": { "$ref": "#/components/schemas/QuotaStatusResourceListV1" } } }, "description": "The current quota status for each node pool. Supported only for cluster versions 2.15+ or higher." }, "ProjectV1": { "allOf": [ { "required": [ "namespace", "nodePoolsResources", "resources" ] }, { "$ref": "#/components/schemas/ProjectV1ResponseCommonFields" }, { "properties": { "name": { "type": "string", "description": "Project name.", "example": "team-a" }, "nodePoolsResources": { "type": "array", "items": { "$ref": "#/components/schemas/NodePoolAssignedResourcesV1Response" }, "description": "Resources assigned to this Project per Node Pool." }, "namespace": { "type": "string", "description": "The name of an existing namespace to use for the project in the cluster. Supported only for cluster versions 2.12 or higher.", "example": "ns-proj1" }, "id": { "type": "integer", "format": "int32", "description": "Project id.", "readOnly": true, "example": 5 }, "departmentId": { "type": "integer", "format": "int32", "description": "ID of the department that owns the project.", "example": 2 }, "tenantId": { "type": "integer", "format": "int32", "description": "ID of the tenant where the project is located.", "example": 2 }, "clusterUuid": { "type": "string", "format": "uuid", "description": "ID of the cluster where the project is located.", "example": "71f69d83-ba66-4822-adf5-55ce55efd210" }, "departmentName": { "type": "string", "description": "Name of the department where the project is located.", "example": "department-a" }, "interactiveNodeAffinity": { "type": "string", "example": "none" }, "trainNodeAffinity": { "type": "string", "example": "none" }, "createdAt": { "type": "string", "description": "Creation date of the project.", "format": "date-time", "example": "2021-12-14T16:04:15.099Z" }, "status": { "type": "object", "required": [ "quotaStatuses" ], "properties": { "namespace": { "type": "string", "description": "The namespace of the project", "example": "runai-team-a" }, "message": { "type": "string", "description": "Detailed phase message", "example": "NamespaceHandlerFailed" }, "phase": { "type": "string", "description": "project's phase", "example": "Ready" }, "conditions": { "type": "array", "items": { "type": "object", "additionalProperties": { "type": "string" } } }, "quotaStatuses": { "$ref": "#/components/schemas/QuotaStatusV1" } } }, "phase": { "type": "string", "description": "project's phase", "example": "Ready" }, "quotaStatuses": { "type": "string", "nullable": true } } } ] }, "DepartmentForGetV1": { "allOf": [ { "$ref": "#/components/schemas/DepartmentV1CommonFieldsResponse" }, { "required": [ "projects" ], "properties": { "tenantId": { "type": "integer", "description": "The tenant id this cluster belongs to.", "example": 42 }, "clusterUuid": { "type": "string", "example": "d4e09285-59e2-4df8-91e1-9119f9afb1dd", "description": "The cluster UUID this department belongs to." }, "createdAt": { "type": "string", "description": "The creation date of the department.", "format": "date-time", "example": "2021-12-14T16:04:15.099Z" }, "id": { "type": "integer", "format": "int32", "description": "The unique id identifying the department.", "example": 2 }, "projects": { "type": "array", "items": { "$ref": "#/components/schemas/ProjectV1" }, "description": "Projects under this department.", "example": [ { "id": 16, "name": "team-a", "deserved_gpus": 3 } ] }, "projectsDeservedGpus": { "type": "string", "description": "Deprecated. Instead, use 'nodePoolsResources' field. Total deserved GPUs of the projects under this department - as string.", "example": "3.00", "deprecated": true }, "departmentAdmins": { "type": "array", "items": { "type": "string" }, "description": "Id's of users with department admin role that are assigned to managed the department" }, "quotaStatuses": { "type": "array", "nullable": true, "items": { "type": "object" } }, "projectAggregatedNodePoolsResources": { "type": "array", "nullable": true, "items": { "type": "object" } } } } ] }, "MetricsResourceDataV1": { "type": "object", "description": "quota equals to the given resources and allocated equal to the real count of used resources", "required": [ "quota", "allocated" ], "properties": { "quota": { "type": "number", "example": 3 }, "allocated": { "type": "number", "example": 2.5 }, "utilization": { "type": "number", "example": 0.765 } } }, "MetricsResourcesDataV1": { "type": "object", "required": [ "numberOfPendingWorkloads", "gpu", "cpu", "memory" ], "properties": { "numberOfPendingWorkloads": { "type": "integer", "example": 1 }, "gpu": { "description": "GPU resources in fractions. 0.7 = 70% of a gpu", "$ref": "#/components/schemas/MetricsResourceDataV1" }, "cpu": { "description": "CPU resources in millicpus. 1000 = 1 cpu", "$ref": "#/components/schemas/MetricsResourceDataV1" }, "memory": { "description": "Memory resources in megabytes. 1 = 10^6 (1000*1000)", "$ref": "#/components/schemas/MetricsResourceDataV1" } } }, "ResourcesDataOvertimeV1": { "allOf": [ { "$ref": "#/components/schemas/MetricsResourcesDataV1" }, { "type": "object", "required": [ "timestamp" ], "properties": { "timestamp": { "type": "string", "format": "date-time", "example": "2023-06-06T12:09:18.211Z" } } } ] }, "ResourceV1": { "properties": { "deserved": { "type": "number", "description": "The amount of resources guaranteed to be allocated in case the cluster has those resources.", "example": 0, "nullable": true }, "maxAllowed": { "type": "number", "description": "Maximum amount of resources that can be allocated. If equal to deserved, no over-quota will be allowed. Use \"-1\" for unlimited over quota.", "example": 1000, "nullable": true }, "overQuotaWeight": { "type": "number", "description": "The priority for over quota resources.", "example": 2, "nullable": true } } }, "NonNullResourceV1": { "required": [ "deserved" ], "properties": { "deserved": { "type": "number", "description": "The amount of resources guaranteed to be allocated in case the cluster has those resources.", "example": 0 }, "maxAllowed": { "type": "number", "description": "Maximum amount of resources that can be allocated. If equal to deserved, no over-quota will be allowed. Use \"-1\" for unlimited over quota.", "example": 1000, "nullable": true }, "overQuotaWeight": { "type": "number", "description": "The priority for over quota resources.", "example": 2, "nullable": true } } }, "AssignedResourcesV1": { "properties": { "id": { "type": "number" }, "gpu": { "allOf": [ { "$ref": "#/components/schemas/ResourceV1" } ], "description": "GPU number assigned" }, "cpu": { "allOf": [ { "$ref": "#/components/schemas/ResourceV1" } ], "description": "CPU Millicores assigned. Supported only if 'CPU Resources Quota' feature flag is enabled." }, "memory": { "allOf": [ { "$ref": "#/components/schemas/ResourceV1" } ], "description": "CPU Memory Mib assigned. Supported only if 'CPU Resources Quota' feature flag is enabled." } } }, "NodePoolAssignedResourcesV1": { "required": [ "nodePool", "id" ], "properties": { "id": { "description": "The id of the assigned resources. Required in PUT when updating the assigned resources.", "type": "number" }, "nodePool": { "required": [ "id" ], "properties": { "id": { "type": "number", "description": "Node pool id.", "example": 3 }, "name": { "type": "string", "description": "Node pool name.", "example": "default" } }, "description": "The node pool which the assigned resources refer to." }, "gpu": { "allOf": [ { "$ref": "#/components/schemas/NonNullResourceV1" } ], "description": "Number of GPUs assigned in the node pool." }, "cpu": { "allOf": [ { "$ref": "#/components/schemas/ResourceV1" } ], "description": "Number of CPU Millicores assigned in the node pool. Supported only if the 'CPU Resources Quota' feature flag is enabled." }, "memory": { "allOf": [ { "$ref": "#/components/schemas/ResourceV1" } ], "description": "Amount of CPU Memory Mib assigned in the node pool. Supported only if the 'CPU Resources Quota' feature flag is enabled." } } }, "DepartmentV1CommonFields": { "properties": { "nodePoolsResources": { "type": "array", "items": { "$ref": "#/components/schemas/NodePoolAssignedResourcesV1" }, "description": "Resources assigned to the Department per node pool." }, "name": { "type": "string", "description": "The name of the department.", "example": "default" }, "deservedGpus": { "type": "number", "description": "Deprecated. Instead, use `deserved` for the relevant resource type under `NodePoolResources`. Deserved GPUs for the department.", "example": 2, "deprecated": true }, "allowOverQuota": { "type": "boolean", "description": "Deprecated. Instead, use `maxAllowed` for the relevant resource type under `NodePoolResources`. Is over quota allowed for the department.", "example": false, "deprecated": true }, "maxAllowedGpus": { "type": "number", "description": "Deprecated. Instead, use `maxAllowed` for the relevant resource type under `NodePoolResources`. Max allowed GPUs for the department.", "example": 2, "deprecated": true }, "resources": { "allOf": [ { "$ref": "#/components/schemas/AssignedResourcesV1" } ], "description": "Deprecated. Instead, use 'nodePoolsResources'. Total resources assigned to the Department. Can only be used in PUT/POST when there is a single Node Pool in the system. The resources returned in GET are the sum of all Node Pool Resources.", "deprecated": true } }, "additionalProperties": true }, "DepartmentV1CreationRequest": { "allOf": [ { "required": [ "name" ] }, { "$ref": "#/components/schemas/DepartmentV1CommonFields" } ] }, "ProjectV1NodeAffinity": { "properties": { "train": { "type": "object", "properties": { "affinityType": { "type": "string", "enum": [ "no_limit", "only_selected" ], "description": "The type of affinity of the jobs on the nodes." }, "selectedTypes": { "type": "array", "items": { "properties": { "id": { "type": "number" }, "name": { "type": "string" } } } } }, "description": "Node affinity configuration for training jobs.", "nullable": true }, "interactive": { "type": "object", "properties": { "affinityType": { "type": "string", "enum": [ "no_limit", "only_selected" ], "description": "The type of affinity of the jobs on the nodes." }, "selectedTypes": { "type": "array", "items": { "properties": { "id": { "type": "number" }, "name": { "type": "string" } } } } }, "description": "Node affinity configuration for interactive jobs.", "nullable": true } }, "description": "Node affinity configuration for jobs in the project.", "type": "object", "nullable": true }, "ProjectV1CommonFields": { "properties": { "nodePoolsResources": { "type": "array", "items": { "$ref": "#/components/schemas/NodePoolAssignedResourcesV1" }, "description": "Resources assigned to this Project per Node Pool." }, "deservedGpus": { "type": "number", "description": "Deprecated. Use 'deserved' for the relevant resource type under `NodePoolResources`. The project's deserved GPU allocation in case the cluster has those resources.", "example": 3, "deprecated": true }, "maxAllowedGpus": { "type": "number", "description": "Deprecated. Instead, use `maxAllowed` for the relevant resource type under `NodePoolResources`. An upper limit for the amount of GPUs the project can get (Even if over quota is allowed and resources are available).", "example": 5, "deprecated": true }, "gpuOverQuotaWeight": { "type": "number", "description": "Deprecated. Instead, use `overQuotaWeight` for the relevant resource type under `NodePoolResources`. The priority the project gets for over quota resources.", "maximum": 3, "minimum": 0, "example": 1, "deprecated": true }, "defaultNodePools": { "type": "array", "description": "Default node pools list for workload submission for this project if a workload doesn't specify a node pools list.", "items": { "type": "string" }, "example": [ "default" ] }, "interactiveJobTimeLimitSecs": { "type": "number", "description": "A limit (in seconds) for the duration of interactive jobs from this project.", "example": 3600 }, "interactiveJobMaxIdleDurationSecs": { "type": "number", "description": "Maximum duration (in seconds) that an interactive job can be idle before being terminated.", "example": 3000 }, "interactivePreemptibleJobMaxIdleDurationSecs": { "type": "number", "description": "Maximum duration (in seconds) that an interactive preemptible job can be idle before being terminated.", "example": 3000 }, "trainingJobTimeLimitSecs": { "type": "number", "description": "A limit (in seconds) for the duration of training jobs from this project. Available only from cluster version 2.12", "example": 3600 }, "trainingJobMaxIdleDurationSecs": { "type": "number", "description": "Maximum duration (in seconds) that a training job can be idle before being terminated.", "example": 3000 }, "nodeAffinity": { "$ref": "#/components/schemas/ProjectV1NodeAffinity" }, "permissions": { "properties": { "users": { "type": "array", "items": { "type": "string" }, "description": "Names of users that have permissions to the project." }, "groups": { "type": "array", "items": { "type": "string" }, "description": "Names of groups that have permissions to the project." }, "applications": { "type": "array", "items": { "type": "string" }, "description": "Names of applications that have permissions to the project." } }, "description": "Deprecated. Instead, use the `accessRules` API to add permissions to a specific subject in the project scope.", "deprecated": true }, "resources": { "allOf": [ { "$ref": "#/components/schemas/AssignedResourcesV1" } ], "deprecated": true, "description": "Deprecated. Instead, use `nodePoolsResources`. Total resources assigned to the Project. Can only be used in PUT/POST when there is a single Node Pool in the system. The resources returned in `GET` are the sum of all Node Pool Resources." } }, "additionalProperties": true }, "Range": { "type": "object", "nullable": true, "required": [ "start", "end" ], "properties": { "start": { "type": "string", "format": "date-time", "description": "timestamp from when to fetch data in UTC", "example": "2023-06-07 12:09:18.211" }, "end": { "type": "string", "format": "date-time", "description": "timestamp until when to fetch data in UTC", "example": "2023-06-07 12:09:18.211" } } }, "DepartmentV1UpdateRequest": { "$ref": "#/components/schemas/DepartmentV1CommonFields" }, "ProjectV1UpdateRequest": { "$ref": "#/components/schemas/ProjectV1CommonFields" }, "PlacementStrategy1": { "properties": { "cpu": { "type": "string", "enum": [ "spread", "binpack" ], "description": "scheduling strategy for cpu", "example": "spread" }, "gpu": { "type": "string", "enum": [ "spread", "binpack" ], "description": "scheduling strategy for gpu", "example": "binpack" } } }, "NodePoolCreateRequest": { "properties": { "name": { "type": "string", "description": "Node Pool Name", "example": "node-pool-a" }, "overProvisioningRatio": { "type": "integer", "example": 1, "default": 1 }, "labelKey": { "type": "string", "description": "Label key for associated nodes to the Node Pool (with value as in labelValue)", "example": "node-type" }, "labelValue": { "type": "string", "description": "Label value for associated nodes to the Node Pool (with key as in labelKey)", "example": "type-x" }, "placementStrategy": { "$ref": "#/components/schemas/PlacementStrategy1" } } }, "NodePoolLabelsRequest": { "properties": { "labelKey": { "type": "string", "description": "key of node label for pool", "example": "node-type" }, "labelValue": { "type": "string", "description": "value of node label for pool", "example": "type-x" } } }, "UpdateNodePoolRequest": { "properties": { "labelKey": { "type": "string", "description": "key of node label for pool", "example": "node-type" }, "labelValue": { "type": "string", "description": "value of node label for pool", "example": "type-x" }, "overProvisioningRatio": { "type": "integer", "example": 1, "default": 1 }, "placementStrategy": { "$ref": "#/components/schemas/PlacementStrategy1" } } }, "NodePool1": { "allOf": [ { "$ref": "#/components/schemas/NodePoolCreateRequest" }, { "properties": { "id": { "type": "number", "description": "Node Pool unique id", "readOnly": true, "example": 5 }, "clusterId": { "type": "string", "format": "uuid", "description": "Node Pool cluster id", "example": "71f69d83-ba66-4822-adf5-55ce55efd210" }, "createdAt": { "type": "string", "description": "Node Pool creation time", "format": "date-time", "example": "2021-12-14T16:04:15.099Z" }, "updatedAt": { "type": "string", "description": "Node Pool update time", "format": "date-time", "example": "2021-12-14T16:04:15.099Z" }, "deletedAt": { "type": "string", "description": "Node Pool delete time", "format": "date-time", "example": "2021-12-14T16:04:15.099Z" }, "status": { "type": "string", "enum": [ "Creating", "Updating", "Deleting", "Empty", "Unschedulable", "Ready", "Deleted" ], "description": "Node Pool status", "example": "Creating" }, "statusMessage": { "type": "string", "description": "Node Pool status details", "example": "all nodes are down" }, "nodes": { "type": "string", "description": "List of Nodes that are assigned to this nodepool - as json string", "example": [ "node-a", "node-b" ] }, "createdBy": { "type": "string", "description": "Node Pool creator", "example": "user@run.ai" }, "updatedBy": { "type": "string", "description": "Node Pool updater", "example": "user@run.ai" }, "isDefault": { "type": "boolean", "description": "Is the Node Pool the default Node Pool for all nodes not assigned to any other Node Pool", "example": false } } } ] }, "Setting": { "properties": { "active": { "type": "boolean", "example": true }, "category": { "type": "string", "example": "Department" }, "description": { "type": "string", "example": "Enable the department feature" }, "source": { "type": "string", "example": "Tenant" }, "label": { "type": "string", "example": "Show departments" }, "stage": { "type": "string", "example": "Beta" }, "type": { "type": "string", "example": "Boolean" }, "key": { "type": "string", "example": "department.use" }, "value": { "type": "string", "example": true } } }, "TenantSettingCreationRequest": { "properties": { "key": { "type": "string", "example": "department.use" }, "value": { "example": true } } }, "TenantSettingCreationResponse": { "properties": { "msg": { "type": "string", "example": "done" } } }, "Config": { "type": "object", "properties": { "tenantName": { "type": "string", "example": "runai" }, "authClientName": { "type": "string", "example": "runai-admin-ui" }, "authUrl": { "type": "string", "example": "https://auth.run.ai" }, "authRealm": { "type": "string", "example": "runai" } } }, "ClusterName": { "type": "string", "example": "cluster-a" }, "ResourceData": { "type": "object", "description": "quota equals to the given resources and allocated equal to the real count of used resources", "required": [ "quota", "allocated" ], "properties": { "quota": { "type": "number", "example": 3 }, "allocated": { "type": "number", "example": 2.5 }, "utilization": { "type": "number", "example": 0.765 } } }, "ResourcesData": { "type": "object", "required": [ "numberOfPendingWorkloads", "gpu", "cpu", "memory" ], "properties": { "numberOfPendingWorkloads": { "type": "integer", "example": 1 }, "gpu": { "description": "GPU resources in fractions. 0.7 = 70% of a gpu", "$ref": "#/components/schemas/ResourceData" }, "cpu": { "description": "CPU resources in millicpus. 1000 = 1 cpu", "$ref": "#/components/schemas/ResourceData" }, "memory": { "description": "Memory resources in megabytes. 1 = 10^6 (1000*1000)", "$ref": "#/components/schemas/ResourceData" } } }, "NodepoolName": { "type": "string", "example": "nodepoola" }, "ProjectName1": { "type": "string", "example": "project-a" }, "DepartmentName": { "type": "string", "example": "default" }, "nodepoolName": { "type": "string", "example": "nodepoola" }, "ResourcesDataOvertime": { "allOf": [ { "$ref": "#/components/schemas/ResourcesData" }, { "type": "object", "required": [ "timestamp" ], "properties": { "timestamp": { "type": "string", "format": "date-time", "example": "2023-06-06T12:09:18.211Z" } } } ] }, "TimeRange": { "type": "object", "description": "Overtime metrics data. Returned only if both start and end query parameters are set.", "required": [ "resources" ], "properties": { "resources": { "type": "array", "items": { "$ref": "#/components/schemas/ResourcesDataOvertime" } } } }, "cluster": { "type": "object", "required": [ "metadata", "current" ], "properties": { "metadata": { "type": "object", "required": [ "clusterId", "clusterName" ], "properties": { "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "clusterName": { "$ref": "#/components/schemas/ClusterName" } } }, "current": { "type": "object", "description": "Current reported metrics data. resources holds data that is summed up to the cluster level and projectResources explains the division of it to projects", "required": [ "resources", "projectResources" ], "properties": { "resources": { "type": "array", "items": { "allOf": [ { "$ref": "#/components/schemas/ResourcesData" }, { "type": "object", "required": [ "nodepoolName" ], "properties": { "nodepoolName": { "$ref": "#/components/schemas/NodepoolName" } } } ] } }, "projectResources": { "type": "array", "items": { "allOf": [ { "$ref": "#/components/schemas/ResourcesData" }, { "type": "object", "required": [ "projectName", "departmentName", "nodepoolName" ], "properties": { "projectName": { "$ref": "#/components/schemas/ProjectName1" }, "departmentName": { "$ref": "#/components/schemas/DepartmentName" }, "nodepoolName": { "$ref": "#/components/schemas/nodepoolName" } } } ] } } } }, "timeRange": { "$ref": "#/components/schemas/TimeRange" } } }, "DepartmentId": { "description": "The id of the department", "type": "integer", "format": "int32", "minimum": 1, "example": 8 }, "Department1": { "type": "object", "required": [ "metadata", "current" ], "properties": { "metadata": { "type": "object", "required": [ "departmentId", "departmentName", "clusterId", "clusterName" ], "properties": { "departmentId": { "$ref": "#/components/schemas/DepartmentId" }, "departmentName": { "$ref": "#/components/schemas/DepartmentName" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "clusterName": { "$ref": "#/components/schemas/ClusterName" } } }, "current": { "type": "object", "description": "Current reported metrics data. resources holds data that is summed up to the department level and projectResources explains the division of it to projects", "required": [ "resources", "projectResources" ], "properties": { "resources": { "type": "array", "items": { "allOf": [ { "$ref": "#/components/schemas/ResourcesData" }, { "type": "object", "required": [ "nodepoolName" ], "properties": { "nodepoolName": { "$ref": "#/components/schemas/NodepoolName" } } } ] } }, "projectResources": { "type": "array", "items": { "allOf": [ { "$ref": "#/components/schemas/ResourcesData" }, { "type": "object", "required": [ "projectName", "nodepoolName" ], "properties": { "projectName": { "$ref": "#/components/schemas/ProjectName1" }, "nodepoolName": { "$ref": "#/components/schemas/NodepoolName" } } } ] } } } }, "timeRange": { "$ref": "#/components/schemas/TimeRange" } } }, "departments": { "type": "object", "required": [ "data" ], "properties": { "data": { "type": "array", "items": { "allOf": [ { "$ref": "#/components/schemas/Department1" }, { "properties": { "timeRange": { "example": null } } } ] } }, "timeRange": { "$ref": "#/components/schemas/TimeRange" } } }, "department": { "type": "object", "required": [ "metadata", "current" ], "properties": { "metadata": { "type": "object", "required": [ "departmentId", "departmentName", "clusterId", "clusterName" ], "properties": { "departmentId": { "$ref": "#/components/schemas/DepartmentId" }, "departmentName": { "$ref": "#/components/schemas/DepartmentName" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "clusterName": { "$ref": "#/components/schemas/ClusterName" } } }, "current": { "type": "object", "description": "Current reported metrics data. resources holds data that is summed up to the department level and projectResources explains the division of it to projects", "required": [ "resources", "projectResources" ], "properties": { "resources": { "type": "array", "items": { "allOf": [ { "$ref": "#/components/schemas/ResourcesData" }, { "type": "object", "required": [ "nodepoolName" ], "properties": { "nodepoolName": { "$ref": "#/components/schemas/NodepoolName" } } } ] } }, "projectResources": { "type": "array", "items": { "allOf": [ { "$ref": "#/components/schemas/ResourcesData" }, { "type": "object", "required": [ "projectName", "nodepoolName" ], "properties": { "projectName": { "$ref": "#/components/schemas/ProjectName1" }, "nodepoolName": { "$ref": "#/components/schemas/NodepoolName" } } } ] } } } }, "timeRange": { "$ref": "#/components/schemas/TimeRange" } } }, "ProjectId1": { "type": "integer", "example": 1 }, "Project1": { "type": "object", "required": [ "metadata", "current" ], "properties": { "metadata": { "type": "object", "required": [ "projectId", "projectName", "departmentId", "departmentName", "clusterId", "clusterName" ], "properties": { "projectId": { "$ref": "#/components/schemas/ProjectId1" }, "projectName": { "$ref": "#/components/schemas/ProjectName1" }, "departmentId": { "$ref": "#/components/schemas/DepartmentId" }, "departmentName": { "$ref": "#/components/schemas/DepartmentName" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "clusterName": { "$ref": "#/components/schemas/ClusterName" } } }, "current": { "type": "object", "required": [ "resources", "nodepoolResources" ], "description": "Current reported metrics data. resources holds data that is summed up to the project level and projectResources explains the division of it to nodepools", "properties": { "resources": { "type": "array", "items": { "allOf": [ { "$ref": "#/components/schemas/ResourcesData" }, { "type": "object", "required": [ "nodepoolName" ], "properties": { "nodepoolName": { "$ref": "#/components/schemas/NodepoolName" } } } ] } } } }, "timeRange": { "$ref": "#/components/schemas/TimeRange" } } }, "projects": { "type": "object", "required": [ "data" ], "properties": { "data": { "type": "array", "items": { "allOf": [ { "$ref": "#/components/schemas/Project1" }, { "properties": { "timeRange": { "example": null } } } ] } }, "timeRange": { "$ref": "#/components/schemas/TimeRange" } } }, "project": { "type": "object", "required": [ "metadata", "current" ], "properties": { "metadata": { "type": "object", "required": [ "projectId", "projectName", "departmentId", "departmentName", "clusterId", "clusterName" ], "properties": { "projectId": { "$ref": "#/components/schemas/ProjectId1" }, "projectName": { "$ref": "#/components/schemas/ProjectName1" }, "departmentId": { "$ref": "#/components/schemas/DepartmentId" }, "departmentName": { "$ref": "#/components/schemas/DepartmentName" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "clusterName": { "$ref": "#/components/schemas/ClusterName" } } }, "current": { "type": "object", "required": [ "resources", "nodepoolResources" ], "description": "Current reported metrics data. resources holds data that is summed up to the project level and projectResources explains the division of it to nodepools", "properties": { "resources": { "type": "array", "items": { "allOf": [ { "$ref": "#/components/schemas/ResourcesData" }, { "type": "object", "required": [ "nodepoolName" ], "properties": { "nodepoolName": { "$ref": "#/components/schemas/NodepoolName" } } } ] } } } }, "timeRange": { "$ref": "#/components/schemas/TimeRange" } } }, "JobResourceData": { "type": "object", "required": [ "allocated" ], "properties": { "allocated": { "type": "number", "example": 2.5 }, "utilization": { "description": "Utilization percentage, values between 0 to 1.", "type": "number", "example": 0.8 } } }, "JobAdvancedData": { "type": "object", "properties": { "idleSeconds": { "type": "number", "example": 50 }, "grEngineActive": { "description": "The fraction of time any portion of the graphics or compute engines were active", "type": "number" }, "dramActive": { "description": "The fraction of cycles where data was sent to or received from device memory", "type": "number" }, "smActive": { "description": "The fraction of time at least one warp was active on a multiprocessor, averaged over all multiprocessors", "type": "number" }, "smOccupancy": { "description": "The fraction of resident warps on a multiprocessor, relative to the maximum number of concurrent warps supported on a multiprocessor", "type": "number" }, "pipeTensorActive": { "description": "The fraction of cycles the tensor (HMMA / IMMA) pipe was active", "type": "number" }, "pipeFp64Active": { "description": "The fraction of cycles the FP64 (double precision) pipe was active", "type": "number" }, "pipeFp32Active": { "description": "The fraction of cycles the FMA (FP32 (single precision), and integer) pipe was active", "type": "number" }, "pipeFp16Active": { "description": "The fraction of cycles the FP16 (half precision) pipe was active", "type": "number" }, "nvlinkTxBytes": { "description": "The rate of data transmitted over NVLink, not including protocol headers, in bytes per second", "type": "number" }, "nvlinkRxBytes": { "description": "The rate of data received over NVLink, not including protocol headers, in bytes per second", "type": "number" }, "pcieTxBytes": { "description": "The rate of data transmitted over the PCIe bus, including both protocol headers and data payloads, in bytes per second", "type": "number" }, "pcieRxBytes": { "description": "The rate of data received over the PCIe bus, including both protocol headers and data payloads, in bytes per second", "type": "number" } } }, "JobResourcesData": { "type": "object", "required": [ "gpu", "gpu-memory", "cpu", "cpu-memory" ], "properties": { "gpu": { "description": "GPU resources in fractions. 0.7 = 70% of a gpu", "$ref": "#/components/schemas/JobResourceData" }, "gpu-memory": { "description": "GPU memory resources in megabytes. 1 = 10^6 (1000*1000)", "$ref": "#/components/schemas/JobResourceData" }, "cpu": { "description": "CPU resources in millicpus. 1000 = 1 cpu", "$ref": "#/components/schemas/JobResourceData" }, "cpu-memory": { "description": "CPU memory resources in megabytes. 1 = 10^6 (1000*1000)", "$ref": "#/components/schemas/JobResourceData" }, "advanced": { "description": "Advanced job metrics data, available only if advanced metrics enables and advanced query param is set", "$ref": "#/components/schemas/JobAdvancedData" } } }, "JobResourcesDataOvertime": { "allOf": [ { "$ref": "#/components/schemas/JobResourcesData" }, { "type": "object", "required": [ "timestamp" ], "properties": { "timestamp": { "type": "string", "format": "date-time", "example": "2023-06-06T12:09:18.211Z" } } } ] }, "Role": { "type": "string", "enum": [ "admin", "department_admin", "researcher", "editor", "viewer", "research_manager", "ml_engineer" ], "example": "viewer" }, "IdentityAlias": { "description": "Alias for identity provider", "type": "string", "example": "saml" }, "UserId": { "description": "Unique identifier of the user", "type": "string", "format": "uuid", "example": "4008188b-ab50-4aa5-a3f2-b78091ccf92d" }, "AuthEntityType": { "type": "string", "description": "The type of authentication entity.", "enum": [ "regular-user", "sso-user", "app", "group", "internal-user", "super-admin" ], "example": "regular-user" }, "AuthEntity": { "properties": { "entityType": { "$ref": "#/components/schemas/AuthEntityType" }, "tenantId": { "$ref": "#/components/schemas/TenantId" }, "userId": { "$ref": "#/components/schemas/UserId" }, "permitAllClusters": { "type": "boolean", "example": false }, "permittedClusters": { "type": "array", "description": "A list of clusters that the user or application can access.", "items": { "$ref": "#/components/schemas/ClusterId" } }, "roles": { "type": "array", "items": { "$ref": "#/components/schemas/Role" } }, "createdAt": { "type": "string", "format": "date-time", "description": "The creation date of the application.", "example": "2021-12-14T16:04:15.099Z" } } }, "User1": { "allOf": [ { "$ref": "#/components/schemas/AuthEntity" }, { "required": [ "email" ] }, { "properties": { "email": { "type": "string", "description": "Email address of the user.", "example": "user@email.com" }, "lastLogin": { "type": "string", "format": "date-time", "description": "The last time the user logged into the system.", "example": "2021-12-14T16:04:15.099Z" } } } ] }, "UserCreationRequest": { "required": [ "email", "password", "roles" ], "properties": { "email": { "type": "string", "description": "Email address of the user.", "example": "user@email.com" }, "roles": { "type": "array", "items": { "$ref": "#/components/schemas/Role" } }, "entityType": { "$ref": "#/components/schemas/AuthEntityType" }, "tenantId": { "$ref": "#/components/schemas/TenantId" }, "password": { "type": "string", "description": "The user's password.", "example": "secret!123" }, "needToChangePassword": { "type": "boolean", "description": "True if the user is requested to change his password upon next login.", "example": true }, "permitAllClusters": { "type": "boolean", "example": false }, "userId": { "$ref": "#/components/schemas/UserId" }, "permittedClusters": { "type": "array", "items": { "$ref": "#/components/schemas/ClusterId" } } } }, "UserCreationResponse": { "allOf": [ { "$ref": "#/components/schemas/UserCreationRequest" } ] }, "App": { "allOf": [ { "$ref": "#/components/schemas/AuthEntity" }, { "required": [ "name" ] }, { "properties": { "clientId": { "type": "string", "description": "The client ID of the application.", "example": "6d2894ba-f998-4039-bba1-caba57caf681" }, "name": { "type": "string", "description": "The name of the application.", "example": "MyApplication" }, "revoked": { "type": "boolean", "description": "Whether the application has been revoked.", "example": false } } } ] }, "GroupCreationRequest": { "required": [ "email", "password", "roles", "username" ], "properties": { "username": { "type": "string", "description": "Group's name", "example": "group1" }, "email": { "type": "string", "description": "Empty email address", "example": "" }, "roles": { "type": "array", "items": { "$ref": "#/components/schemas/Role" } }, "entityType": { "type": "string", "example": "sso-user" }, "tenantId": { "$ref": "#/components/schemas/TenantId" }, "permitAllClusters": { "type": "boolean", "example": false }, "userId": { "type": "string", "description": "Group's name", "example": "group1" }, "permittedClusters": { "type": "array", "items": { "$ref": "#/components/schemas/ClusterId" } }, "createdBy": { "type": "string", "description": "uid of the user", "example": "aaaaa-3333-4444-bbbbbb-111" } } }, "GroupCreationResponse": { "allOf": [ { "$ref": "#/components/schemas/GroupCreationRequest" } ] }, "Idp": { "$ref": "#/components/schemas/IdentityAlias" }, "TenantConfig": { "$ref": "#/components/schemas/Config" }, "TenantSetting": { "$ref": "#/components/schemas/Setting" }, "ChecksumResponse": { "properties": { "description": { "type": "string" }, "md5Hash": { "type": "string" }, "crc32c": { "type": "string" } } }, "Error1": { "required": [ "code", "message" ], "properties": { "code": { "type": "integer", "format": "int32" }, "message": { "type": "string" } } }, "servingPortProtocol": { "$ref": "#/components/schemas/ServingPortProtocol" }, "AssetName": { "description": "The name of the asset.", "type": "string", "minLength": 1, "example": "my-asset" }, "AssetDescription": { "description": "The description of the asset.", "type": "string", "minLength": 1, "maxLength": 250, "example": "description of my asset.", "nullable": true }, "AssetUpdatableFields": { "required": [ "name" ], "properties": { "name": { "$ref": "#/components/schemas/AssetName" }, "description": { "$ref": "#/components/schemas/AssetDescription" } } }, "Scope": { "description": "The scope in which an asset can be used. The highest scope, system, is intended for internal purposes only.", "type": "string", "minLength": 1, "enum": [ "system", "tenant", "cluster", "department", "project" ] }, "WorkloadSupportedTypes": { "properties": { "inference": { "description": "Is inference a supported workload type.", "type": "boolean", "nullable": true }, "workspace": { "description": "Is workspace a supported workload type.", "type": "boolean", "nullable": true }, "training": { "description": "Is training a supported workload type.", "type": "boolean", "nullable": true }, "distributed": { "description": "Is distributed a supported workload type.", "type": "boolean", "nullable": true }, "distFramework": { "description": "The distributed training framework used in the workload.", "type": "string", "enum": [ "MPI", "PyTorch", "TF", "XGBoost" ], "nullable": true } }, "nullable": true, "type": "object" }, "AssetCreationFields": { "type": "object", "required": [ "scope" ], "properties": { "scope": { "$ref": "#/components/schemas/Scope" }, "clusterId": { "$ref": "#/components/schemas/ClusterIdOptional" }, "departmentId": { "description": "The id of the department. Must be specified for department scoped assets.", "type": "string", "nullable": true, "minLength": 1 }, "projectId": { "description": "The id of the project. Must be specified for project scoped assets.", "type": "integer", "format": "int32", "nullable": true }, "autoDelete": { "description": "The asset will be deleted automatically. This is intended for internal use.", "type": "boolean", "nullable": true, "default": false }, "workloadSupportedTypes": { "$ref": "#/components/schemas/WorkloadSupportedTypes" }, "private": { "description": "The asset will be private to the user who created it. supported only for docker registry and generic secrets", "type": "boolean", "nullable": true, "default": false } } }, "AssetId": { "description": "Unique identifier of the asset.", "type": "string", "format": "uuid", "minLength": 1 }, "AssetKind": { "description": "The kind of the asset.", "type": "string", "minLength": 1, "enum": [ "compute", "environment", "accessKey", "dockerRegistry", "password", "genericSecret", "registry", "s3", "git", "nfs", "pvc", "hostPath", "workload-template", "model", "config-map", "secret-volume", "data-volume", "ngcApiKey" ] }, "UpdateCount": { "description": "the value of an update counter of a data in the system.", "type": "integer", "format": "int64", "example": 12345 }, "AssetReadOnlyFields": { "required": [ "id", "kind", "createdBy", "createdAt", "updatedBy", "updatedAt" ], "properties": { "id": { "$ref": "#/components/schemas/AssetId" }, "kind": { "$ref": "#/components/schemas/AssetKind" }, "tenantId": { "description": "The id of the tenant.", "type": "integer", "format": "int32", "nullable": true }, "createdBy": { "description": "The user who created the asset.", "type": "string", "minLength": 1 }, "createdAt": { "description": "The time at which the asset were created", "type": "string", "minLength": 1, "format": "date-time" }, "updatedBy": { "description": "The user who updated the asset.", "type": "string", "minLength": 1 }, "updatedAt": { "description": "The time at which the asset has been updated", "type": "string", "minLength": 1, "format": "date-time" }, "deletedAt": { "description": "Deletion time of the asset (relevant for assets that sync to the cluster)", "type": "string", "minLength": 1, "format": "date-time" }, "deletedBy": { "description": "The user who deleted the asset", "type": "string", "minLength": 1 }, "projectName": { "description": "The name of the project that the asset is associated with, for project scoped assets.", "type": "string", "minLength": 1, "nullable": true }, "updateCount": { "$ref": "#/components/schemas/UpdateCount" } }, "type": "object" }, "AssetMeta": { "allOf": [ { "$ref": "#/components/schemas/AssetUpdatableFields" }, { "$ref": "#/components/schemas/AssetCreationFields" }, { "$ref": "#/components/schemas/AssetReadOnlyFields" } ], "example": { "name": "my-asset", "scope": "tenant", "id": "a418ed33-9399-48c0-a890-122cadd13bfd", "kind": "s3", "createdBy": "test@run.ai", "createdAt": "2023-02-23T14:25:36.707685Z", "updatedBy": "test@run.ai", "updatedAt": "2023-02-23T14:25:36.707685Z", "workloadSupportedTypes": { "workspace": false, "training": false, "distributed": true, "distFramework": "TF" } } }, "DataSourceOverrides": { "description": "specific fields to override in the data source.", "type": "object", "nullable": true, "properties": { "containerPath": { "type": "string", "minLength": 1, "example": "/container/directory", "nullable": true } } }, "AssetIdAndKind": { "description": "Asset id and its kind.", "required": [ "id", "kind" ], "properties": { "id": { "$ref": "#/components/schemas/AssetId" }, "kind": { "$ref": "#/components/schemas/AssetKind" }, "overrides": { "$ref": "#/components/schemas/DataSourceOverrides" } } }, "AssetsIds": { "description": "Set of assets comprising a workspace or a workspace template.", "required": [ "environment" ], "properties": { "environment": { "$ref": "#/components/schemas/AssetId" }, "compute": { "nullable": true, "type": "string", "allOf": [ { "$ref": "#/components/schemas/AssetId" } ] }, "datasources": { "type": "array", "items": { "$ref": "#/components/schemas/AssetIdAndKind" } }, "workloadVolumes": { "type": "array", "items": { "type": "string" } } } }, "WorkloadId1": { "description": "A unique ID of the workload.", "type": "string", "format": "uuid" }, "WorkloadName": { "description": "The name of the workload.", "type": "string", "minLength": 1, "example": "my-workload-name", "pattern": ".*" }, "WorkloadRefAndStatus": { "description": "Id, name and status of a workspace or training", "required": [ "id", "name" ], "properties": { "id": { "$ref": "#/components/schemas/WorkloadId1" }, "name": { "$ref": "#/components/schemas/WorkloadName" }, "status": { "description": "The status of the workspace or training.", "type": "string", "minLength": 1 } } }, "AssetRef": { "description": "Reference information about an asset.", "required": [ "id", "name" ], "properties": { "id": { "$ref": "#/components/schemas/AssetId" }, "name": { "$ref": "#/components/schemas/AssetName" } } }, "ToolType": { "description": "Super set of Internal and External tool types.", "type": "string", "minLength": 1, "enum": [ "jupyter-notebook", "pycharm", "visual-studio-code", "tensorboard", "rstudio", "mlflow", "custom", "wandb", "matlab", "comet", "chatbot-ui" ] }, "EnvironmentAssetRef": { "description": "Reference information about environment asset.", "required": [ "id", "name" ], "properties": { "id": { "$ref": "#/components/schemas/AssetId" }, "name": { "$ref": "#/components/schemas/AssetName" }, "toolTypes": { "description": "the type of tools as defined in the connections of the environment asset.", "type": "array", "nullable": true, "items": { "$ref": "#/components/schemas/ToolType" } } } }, "AssetsUsageRefCompute": { "allOf": [ { "$ref": "#/components/schemas/AssetRef" } ], "nullable": true, "type": "object" }, "AssetDatasourceRef": { "description": "Reference information about a datasource asset.", "required": [ "id", "name", "kind" ], "properties": { "id": { "$ref": "#/components/schemas/AssetId" }, "name": { "$ref": "#/components/schemas/AssetName" }, "kind": { "$ref": "#/components/schemas/AssetKind" }, "overrides": { "$ref": "#/components/schemas/DataSourceOverrides", "deprecated": true } } }, "AssetsUsageRef": { "description": "Reference information about usage of assets by other assets, for example datasources that uses credentials.", "properties": { "environment": { "nullable": true, "type": "object", "description": "environment asset.", "allOf": [ { "$ref": "#/components/schemas/EnvironmentAssetRef" } ], "deprecated": true }, "environments": { "type": "array", "items": { "$ref": "#/components/schemas/AssetRef" } }, "compute": { "$ref": "#/components/schemas/AssetsUsageRefCompute", "deprecated": true }, "computes": { "type": "array", "items": { "$ref": "#/components/schemas/AssetRef" } }, "datasources": { "type": "array", "items": { "$ref": "#/components/schemas/AssetDatasourceRef" } } } }, "AssetUsageInfo": { "description": "Details about resources that use the asset.", "properties": { "workspaces": { "description": "workspaces that rely on this asset.", "type": "array", "items": { "$ref": "#/components/schemas/WorkloadRefAndStatus" } }, "trainings": { "description": "trainings that rely on this asset.", "type": "array", "items": { "$ref": "#/components/schemas/WorkloadRefAndStatus" } }, "distributed": { "description": "distributed trainings that rely on this asset.", "type": "array", "items": { "$ref": "#/components/schemas/WorkloadRefAndStatus" } }, "inferences": { "description": "inferences that rely on this asset.", "type": "array", "items": { "$ref": "#/components/schemas/WorkloadRefAndStatus" } }, "templates": { "description": "templates that rely on this asset.", "type": "array", "items": { "$ref": "#/components/schemas/AssetRef" } }, "assets": { "description": "list of other assets that use this asset. specifically, accessKeys used by s3, and passwords used by git.", "$ref": "#/components/schemas/AssetsUsageRef" } }, "nullable": true, "type": "object" }, "UsageTimesInfo": { "description": "Details about times the asset has been used by workloads, etc.", "properties": { "lastUsedByWorkload": { "description": "The time at which the asset were last used by a workload of given type and project. This field requires complyToProject and complyToWorkload types flags of the API, to specify the workload type and project id.", "type": "string", "minLength": 1, "format": "date-time", "nullable": true } }, "nullable": true, "type": "object" }, "PolicyRuleEnum": { "description": "Indicates which validation rule (e.g., min, max, step, options, required, canEdit, canAdd) conflicted with policy restrictions, causing the asset or template to be rejected.", "type": "string", "nullable": true, "enum": [ "min", "max", "step", "options", "required", "canEdit", "canAdd", "locked" ] }, "ComplianceInfoReason": { "description": "An issue preventing the use of a template or asset for creating workloads in a given project.", "required": [ "details" ], "properties": { "field": { "description": "For policy related issues, includes a json path to the field in the policy for which the issue applies.", "nullable": true, "type": "string", "pattern": ".*" }, "details": { "description": "Explanation of the issue.", "type": "string", "pattern": ".*" }, "rule": { "$ref": "#/components/schemas/PolicyRuleEnum" } } }, "ComplianceInfo": { "description": "Compliance of an asset with creation of workloads in a given project.", "properties": { "imposed": { "description": "Whether the asset is imposed on created workloads by the administrator.", "type": "boolean" }, "compliance": { "description": "Whether the asset info complies with creation of workloads in the project.", "type": "boolean" }, "reason": { "description": "For asset that does not comply, specify one or more reason why.", "type": "array", "items": { "$ref": "#/components/schemas/ComplianceInfoReason" } } }, "nullable": true, "type": "object" }, "AssetCreationRequest": { "allOf": [ { "$ref": "#/components/schemas/AssetUpdatableFields" }, { "$ref": "#/components/schemas/AssetCreationFields" } ], "example": { "name": "my-asset", "scope": "tenant", "workloadSupportedTypes": { "workspace": false, "training": false, "inference": false, "distributed": true, "distFramework": "TF" } } }, "AssetUpdateRequest": { "allOf": [ { "$ref": "#/components/schemas/AssetUpdatableFields" } ], "example": { "name": "my-asset" } }, "CpuCoreLimit": { "description": "Limitations on the number of CPUs consumed by the workload (0.5, 1, .etc). The system guarantees that this workload will not be able to consume more than this amount of CPUs.", "format": "double", "type": "number", "example": 2, "nullable": true, "minimum": 0 }, "CpuCoreRequest": { "description": "CPU units to allocate for the created workload (0.5, 1, .etc). The workload will receive at least this amount of CPU. Note that the workload will not be scheduled unless the system can guarantee this amount of CPUs to the workload.", "format": "double", "type": "number", "example": 0.5, "nullable": true, "minimum": 0 }, "CpuMemoryLimit": { "description": "Limitations on the CPU memory to allocate for this workload (1G, 20M, .etc). The system guarantees that this workload will not be able to consume more than this amount of memory. The workload will receive an error when trying to allocate more memory than this limit.", "type": "string", "pattern": "^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$", "example": "30M", "nullable": true }, "CpuMemoryRequest": { "description": "The amount of CPU memory to allocate for this workload (1G, 20M, .etc). The workload will receive at least this amount of memory. Note that the workload will not be scheduled unless the system can guarantee this amount of memory to the workload", "type": "string", "pattern": "^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$", "example": "20M", "nullable": true }, "ExtendedResource": { "description": "Quantity of an extended resource.", "properties": { "resource": { "description": "The name of the extended resource (mandatory)", "type": "string", "example": "hardware-vendor.example/foo", "minLength": 1, "nullable": true, "pattern": ".*" }, "quantity": { "description": "The requested quantity for the resource.", "type": "string", "example": 2, "minLength": 1, "nullable": true, "pattern": "^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" }, "exclude": { "description": "Use 'true' in case the extended resource is defined in defaults of the policy, and you wish to exclude it from the workload.", "type": "boolean", "example": false, "nullable": true } }, "nullable": true, "type": "object" }, "ExtendedResources": { "description": "Extended resources and their quantity.", "type": "array", "items": { "$ref": "#/components/schemas/ExtendedResource" }, "nullable": true }, "GpuDevicesRequest": { "description": "Requested number of GPU devices. Currently if more than one device is requested, it is not possible to provide values for gpuMemory or gpuPortion.", "type": "integer", "format": "int32", "example": 1, "nullable": true, "minimum": 0 }, "GpuMemoryLimit": { "description": "Limitation on the memory consumed by the workload, per GPU device. The system guarantees The gpuMemoryLimit must be no less than gpuMemoryRequest.", "type": "string", "pattern": "^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$", "example": "10M", "nullable": true }, "GpuMemoryRequest": { "description": "Required if and only if gpuRequestType is memory. States the GPU memory to allocate for the created workload, per GPU device. Note that the workload will not be scheduled unless the system can guarantee this amount of GPU memory to the workload.", "type": "string", "pattern": "^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$", "example": "10M", "nullable": true }, "GpuPortionLimit": { "description": "Limitations on the portion consumed by the workload, per GPU device. The system guarantees The gpuPotionLimit must be no less than the gpuPortionRequest.", "type": "number", "format": "double", "example": 0.5, "nullable": true, "minimum": 0 }, "GpuPortionRequest": { "description": "Required if and only if gpuRequestType is portion. States the portion of the GPU to allocate for the created workload, per GPU device, between 0 and 1. The default is no allocated GPUs.", "type": "number", "format": "double", "example": 0.5, "nullable": true, "minimum": 0 }, "GpuRequestType": { "description": "Sets the unit type for GPU resources requests. Stated in terms of portion or memory. Sets the unit type for other GPU request fields. If `gpuDevicesRequest > 1`, only `portion` is supported. If `gpuDeviceRequest = 1`, the request type can be stated as `portion` or `memory`.", "type": "string", "minLength": 1, "enum": [ "portion", "memory" ], "nullable": true }, "LargeShmRequest": { "description": "A large /dev/shm device to mount into a container running the created workload. An shm is a shared file system mounted on RAM.", "type": "boolean", "example": false, "nullable": true }, "ComputeAssetSpec": { "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResources" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "ComputeAsset": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/ComputeAssetSpec" }, "usedBy": { "$ref": "#/components/schemas/AssetUsageInfo" }, "usageTimes": { "$ref": "#/components/schemas/UsageTimesInfo" }, "compliance": { "$ref": "#/components/schemas/ComplianceInfo" } } }, "ComputeListResponse": { "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/ComputeAsset" } } } }, "ComputeCreationRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetCreationRequest" }, "spec": { "allOf": [ { "$ref": "#/components/schemas/ComputeAssetSpec" } ], "nullable": true, "type": "object" } } }, "ComputeUpdateRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetUpdateRequest" }, "spec": { "allOf": [ { "$ref": "#/components/schemas/ComputeAssetSpec" } ], "nullable": true, "type": "object" } } }, "AccessKeyCreationSpec": { "properties": { "existingSecretName": { "description": "optional name of existing secret in the cluster from which the access key id and secret should be taken. If omitted, you will have to provide those credentials in the accessKeyId and secretAccessKey fields. The provided credentials are encrypted into the control plane database and cloned to a kubernetes secret in the cluster.", "nullable": true, "type": "string", "minLength": 1 }, "accessKeyId": { "description": "The access key id of the S3-compatible bucket, required only when not using existing secret.", "type": "string", "nullable": true, "minLength": 1 }, "secretAccessKey": { "description": "The secret access key of the S3-compatible bucket, required only when not using existing secret.", "type": "string", "nullable": true, "minLength": 1 } } }, "EncryptionKeyId": { "required": [ "keyId" ], "properties": { "keyId": { "description": "id of the encryption key which has been used to encrypt an asset's data.", "type": "integer", "format": "int32" } } }, "AccessKeySpec": { "allOf": [ { "$ref": "#/components/schemas/AccessKeyCreationSpec" }, { "$ref": "#/components/schemas/EncryptionKeyId" } ] }, "PasswordCreationSpec": { "properties": { "existingSecretName": { "description": "optional name of existing secret in the cluster from which the user name and password should be taken. If omitted, you will have to provide those credentials in the user and password fields. The provided credentials are encrypted into the control plane database and cloned to a kubernetes secret in the cluster.", "nullable": true, "type": "string", "minLength": 1 }, "user": { "description": "The name of the user, required only when not using existing secret.", "type": "string", "nullable": true, "minLength": 1 }, "password": { "description": "The password, required only when not using existing secret.", "type": "string", "nullable": true, "minLength": 1 } } }, "PasswordSpec": { "allOf": [ { "$ref": "#/components/schemas/PasswordCreationSpec" }, { "$ref": "#/components/schemas/EncryptionKeyId" } ] }, "DockerRegistryCreationSpec": { "properties": { "existingSecretName": { "description": "optional name of existing secret in the cluster from which the docker registry details should be taken. If omitted, you will have to provide those credentials and url in relevant fields. The provided credentials are encrypted into the control plane database and cloned to a kubernetes secret in the cluster, along with the url.", "nullable": true, "type": "string", "minLength": 1 }, "user": { "description": "The name of the user, required only when not using existing secret.", "type": "string", "nullable": true, "minLength": 1 }, "password": { "description": "The password, required only when not using existing secret.", "type": "string", "nullable": true, "minLength": 1 }, "url": { "description": "The url, required only when not using existing secret.", "type": "string", "nullable": true, "minLength": 1 } } }, "DockerRegistrySpec": { "allOf": [ { "$ref": "#/components/schemas/DockerRegistryCreationSpec" }, { "$ref": "#/components/schemas/EncryptionKeyId" } ] }, "KeyValuePair": { "description": "Details of key-value pair to be stored in the credential.", "properties": { "key": { "description": "The key of the secret", "type": "string", "minLength": 1, "example": "secret-key", "nullable": true }, "value": { "description": "The value of the secret.", "type": "string", "example": "my-secret", "nullable": true } }, "nullable": true, "type": "object" }, "GenericSecretKeyValuePairs": { "description": "Set of key-value pairs to store in the new credential.", "type": "array", "items": { "$ref": "#/components/schemas/KeyValuePair" }, "nullable": true }, "GenericSecretCreationSpec": { "properties": { "existingSecretName": { "description": "name of existing secret in the cluster from which the general key-value values should be taken.", "type": "string", "minLength": 1, "nullable": true }, "keyValuePairs": { "$ref": "#/components/schemas/GenericSecretKeyValuePairs" } } }, "GenericSecretSpec": { "allOf": [ { "$ref": "#/components/schemas/GenericSecretCreationSpec" }, { "$ref": "#/components/schemas/EncryptionKeyId" } ] }, "NgcApiKeyCreationSpec": { "properties": { "ngc_api_key": { "description": "The NGC API key value.", "type": "string", "minLength": 1, "pattern": "^[-._A-Za-z0-9]+$" } } }, "NgcApiKeySpec": { "allOf": [ { "$ref": "#/components/schemas/NgcApiKeyCreationSpec" }, { "$ref": "#/components/schemas/EncryptionKeyId" } ] }, "CredentialsListResponseAssetSpec": { "properties": { "accessKey": { "nullable": true, "type": "object", "allOf": [ { "$ref": "#/components/schemas/AccessKeySpec" } ] }, "password": { "nullable": true, "type": "object", "allOf": [ { "$ref": "#/components/schemas/PasswordSpec" } ] }, "dockerRegistry": { "nullable": true, "type": "object", "allOf": [ { "$ref": "#/components/schemas/DockerRegistrySpec" } ] }, "genericSecret": { "nullable": true, "type": "object", "allOf": [ { "$ref": "#/components/schemas/GenericSecretSpec" } ] }, "ngcApiKey": { "nullable": true, "type": "object", "allOf": [ { "$ref": "#/components/schemas/NgcApiKeySpec" } ] } } }, "AssetSyncStatusEnum": { "type": "string", "enum": [ "Creating", "Deleting", "Failed", "Deletion failed", "Issues found", "No issues found", "No status", "Updating" ] }, "ScopeId": { "type": "string", "description": "The id of the cluster, department or project, depending on the scope type." }, "AssetClusterStatusIssueEnum": { "type": "string", "enum": [ "ReplicationError", "LostPhase", "NotCreated" ] }, "AssetClusterStatusIssue": { "type": "object", "required": [ "scopeId", "scopeType", "issue" ], "properties": { "scopeId": { "$ref": "#/components/schemas/ScopeId" }, "scopeType": { "$ref": "#/components/schemas/ScopeType" }, "issue": { "$ref": "#/components/schemas/AssetClusterStatusIssueEnum" } } }, "AssetClusterStatusIssues": { "type": "array", "items": { "$ref": "#/components/schemas/AssetClusterStatusIssue" } }, "AssetClusterStatusInfo": { "properties": { "status": { "$ref": "#/components/schemas/AssetSyncStatusEnum" }, "issues": { "$ref": "#/components/schemas/AssetClusterStatusIssues" }, "message": { "type": "string" }, "url": { "type": "string" } }, "nullable": true, "type": "object" }, "ClusterResourceInfo": { "properties": { "name": { "example": "password-credential-1", "description": "The name of the resource created for the asset in the cluster.", "type": "string", "nullable": true } }, "nullable": true, "type": "object" }, "ClusterInfo1": { "description": "Cluster related information of the asset.", "properties": { "resources": { "type": "array", "items": { "$ref": "#/components/schemas/ClusterResourceInfo" } } }, "nullable": true, "type": "object" }, "CredentialsListResponseEntry": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/CredentialsListResponseAssetSpec" }, "usedBy": { "$ref": "#/components/schemas/AssetUsageInfo" }, "status": { "$ref": "#/components/schemas/AssetClusterStatusInfo" }, "clusterInfo": { "$ref": "#/components/schemas/ClusterInfo1" } } }, "CredentialsListResponse": { "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/CredentialsListResponseEntry" } } } }, "AssetMetaForSync": { "allOf": [ { "$ref": "#/components/schemas/AssetCreationFields" }, { "$ref": "#/components/schemas/AssetUpdatableFields" }, { "type": "object", "required": [ "id" ], "properties": { "id": { "$ref": "#/components/schemas/AssetId" } } }, { "type": "object", "required": [ "kind" ], "properties": { "kind": { "$ref": "#/components/schemas/AssetKind" } } }, { "type": "object", "properties": { "prevName": { "$ref": "#/components/schemas/AssetName" } } } ] }, "AccessKey": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/AccessKeySpec" }, "usedBy": { "$ref": "#/components/schemas/AssetUsageInfo" }, "compliance": { "$ref": "#/components/schemas/ComplianceInfo" }, "status": { "$ref": "#/components/schemas/AssetClusterStatusInfo" }, "clusterInfo": { "$ref": "#/components/schemas/ClusterInfo1" } } }, "AccessKeyListResponse": { "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/AccessKey" } } } }, "AccessKeyCreationRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetCreationRequest" }, "spec": { "$ref": "#/components/schemas/AccessKeyCreationSpec" } } }, "CredentialUpdatableFields": { "properties": { "description": { "$ref": "#/components/schemas/AssetDescription" } } }, "CredentialUpdateRequest": { "allOf": [ { "$ref": "#/components/schemas/CredentialUpdatableFields" } ], "example": { "description": "my-credentials" } }, "AccessKeyUpdateRequest": { "properties": { "meta": { "$ref": "#/components/schemas/CredentialUpdateRequest" } } }, "Password": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/PasswordSpec" }, "usedBy": { "$ref": "#/components/schemas/AssetUsageInfo" }, "compliance": { "$ref": "#/components/schemas/ComplianceInfo" }, "status": { "$ref": "#/components/schemas/AssetClusterStatusInfo" }, "clusterInfo": { "$ref": "#/components/schemas/ClusterInfo1" } } }, "PasswordListResponse": { "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/Password" } } } }, "PasswordCreationRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetCreationRequest" }, "spec": { "$ref": "#/components/schemas/PasswordCreationSpec" } } }, "PasswordUpdateRequest": { "properties": { "meta": { "$ref": "#/components/schemas/CredentialUpdateRequest" } } }, "DockerRegistry": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/DockerRegistrySpec" }, "usedBy": { "$ref": "#/components/schemas/AssetUsageInfo" }, "compliance": { "$ref": "#/components/schemas/ComplianceInfo" }, "status": { "$ref": "#/components/schemas/AssetClusterStatusInfo" }, "clusterInfo": { "$ref": "#/components/schemas/ClusterInfo1" } } }, "DockerRegistryListResponse": { "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/DockerRegistry" } } } }, "DockerRegistryCreationRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetCreationRequest" }, "spec": { "$ref": "#/components/schemas/DockerRegistryCreationSpec" } } }, "DockerRegistryUpdateRequest": { "properties": { "meta": { "$ref": "#/components/schemas/CredentialUpdateRequest" } } }, "GenericSecret": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/GenericSecretSpec" }, "usedBy": { "$ref": "#/components/schemas/AssetUsageInfo" }, "compliance": { "$ref": "#/components/schemas/ComplianceInfo" }, "status": { "$ref": "#/components/schemas/AssetClusterStatusInfo" }, "clusterInfo": { "$ref": "#/components/schemas/ClusterInfo1" } } }, "GenericSecretListResponse": { "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/GenericSecret" } } } }, "GenericSecretCreationRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetCreationRequest" }, "spec": { "$ref": "#/components/schemas/GenericSecretCreationSpec" } } }, "GenericSecretUpdateRequest": { "properties": { "meta": { "$ref": "#/components/schemas/CredentialUpdateRequest" } } }, "NgcApiKey": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/NgcApiKeySpec" }, "usedBy": { "$ref": "#/components/schemas/AssetUsageInfo" }, "compliance": { "$ref": "#/components/schemas/ComplianceInfo" }, "status": { "$ref": "#/components/schemas/AssetClusterStatusInfo" }, "clusterInfo": { "$ref": "#/components/schemas/ClusterInfo1" } } }, "NgcApiKeyListResponse": { "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/NgcApiKey" } } } }, "NgcApiKeyCreationRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetCreationRequest" }, "spec": { "$ref": "#/components/schemas/NgcApiKeyCreationSpec" } } }, "NgcApiKeyUpdateRequest": { "properties": { "meta": { "$ref": "#/components/schemas/CredentialUpdateRequest" } } }, "CredentialKind": { "description": "The kind of credential used.", "type": "string", "minLength": 1, "example": "password", "enum": [ "password" ] }, "RegistrySpec": { "required": [ "url", "credentialKind", "user", "password" ], "properties": { "url": { "description": "The registry base url.", "type": "string", "example": "https://hub.docker.com/", "minLength": 1 }, "credentialKind": { "$ref": "#/components/schemas/CredentialKind" }, "user": { "description": "The name of the user.", "type": "string", "example": "admin", "minLength": 1 }, "password": { "description": "The password.", "type": "string", "example": 12345678, "minLength": 1 } } }, "Registry": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/RegistrySpec" } } }, "RegistryListResponse": { "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/Registry" } } } }, "RegistryCreationRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetCreationRequest" }, "spec": { "$ref": "#/components/schemas/RegistrySpec" } } }, "RegistryUpdateRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetUpdateRequest" } } }, "Repositories": { "required": [ "repositories" ], "properties": { "repositories": { "type": "array", "items": { "type": "string" } } } }, "RepositoryTags": { "required": [ "name", "tags" ], "properties": { "name": { "type": "string" }, "tags": { "type": "array", "items": { "type": "string" } } } }, "Args": { "description": "Arguments to the command that the container running the workload executes.", "type": "string", "minLength": 1, "example": "-x my-script.py", "nullable": true, "pattern": ".*" }, "Command": { "description": "A command to the server as the entry point of the container running the workload.", "type": "string", "minLength": 1, "nullable": true, "example": "python", "pattern": ".*" }, "EnvironmentVariableCredential": { "description": "Details of the secret and key use to populate the environment variable. (mutually exclusive with value)", "properties": { "assetId": { "description": "Unique identifier of the asset. (mandatory)", "type": "string", "minLength": 1, "format": "uuid", "nullable": true }, "key": { "description": "The key in the secret resource. (mandatory)", "type": "string", "minLength": 1, "example": "POSTGRES_PASSWORD", "nullable": true } }, "nullable": true, "type": "object" }, "EnvironmentVariableConfigMap": { "description": "Details of the configMap and key use to populate the environment variable", "properties": { "name": { "description": "The name of the config-map resource. (mandatory)", "type": "string", "minLength": 1, "example": "my-config-map", "nullable": true, "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?$" }, "key": { "description": "The key in the config-map resource. (mandatory)", "type": "string", "minLength": 1, "example": "MY_POSTGRES_SCHEMA", "nullable": true, "pattern": ".*" } }, "nullable": true, "type": "object" }, "EnvironmentVariablePodFieldReference": { "description": "Details of the field-reference and key use to populate the environment variable", "properties": { "path": { "description": "The field path resource. (mandatory)", "type": "string", "minLength": 1, "example": "metadata.name", "nullable": true, "pattern": ".*" } }, "nullable": true, "type": "object" }, "EnvironmentVariableOfAsset": { "description": "Details of an environment variable which is populated into the container.", "properties": { "name": { "description": "The name of the environment variable. (mandatory)", "type": "string", "minLength": 1, "example": "HOME", "nullable": true }, "value": { "description": "The value of the environment variable. (mutually exclusive with credential, configMap and podFieldRef)", "type": "string", "example": "/home/my-folder", "nullable": true }, "credential": { "$ref": "#/components/schemas/EnvironmentVariableCredential" }, "configMap": { "$ref": "#/components/schemas/EnvironmentVariableConfigMap" }, "podFieldRef": { "$ref": "#/components/schemas/EnvironmentVariablePodFieldReference" }, "exclude": { "description": "Use 'true' in case the environment variable is defined in defaults of the policy, and you wish to exclude it from the workload.", "type": "boolean", "example": false, "nullable": true }, "description": { "description": "Description of the environment variable.", "type": "string", "example": "Home directory of the user.", "nullable": true } }, "nullable": true, "type": "object" }, "EnvironmentVariablesOfAsset": { "description": "Set of environment variables to populate into the container running the workspace.", "type": "array", "items": { "$ref": "#/components/schemas/EnvironmentVariableOfAsset" }, "nullable": true }, "RunAsGid": { "description": "The group id to run the entrypoint of the container which executes the workspace. Default to the value specified in the environment asset `runAsGid` field (optional). Use only when the source uid/gid of the environment asset is not `fromTheImage`, and `overrideUidGidInWorkspace` is enabled.", "type": "integer", "format": "int64", "example": 30, "nullable": true }, "RunAsUid": { "description": "The user id to run the entrypoint of the container which executes the workspace. Default to the value specified in the environment asset `runAsUid` field (optional). Use only when the source uid/gid of the environment asset is not `fromTheImage`, and `overrideUidGidInWorkspace` is enabled.", "type": "integer", "format": "int64", "example": 500, "nullable": true }, "SupplementalGroups": { "description": "Comma separated list of groups that the user running the container belongs to, in addition to the group indicated by runAsGid. Use only when the source uid/gid of the environment asset is not `fromTheImage`, and `overrideUidGidInWorkspace` is enabled. Using an empty string implies reverting the supplementary groups of the image.", "type": "string", "example": "2,3,5,8", "nullable": true, "pattern": ".*" }, "OverridableSpecFields": { "nullable": true, "properties": { "args": { "$ref": "#/components/schemas/Args" }, "command": { "$ref": "#/components/schemas/Command" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariablesOfAsset" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" } }, "type": "object" }, "AllowPrivilegeEscalation": { "description": "Allow the container running the workload and all launched processes to gain additional privileges after the workload starts. For more information consult the User Identity in Container guide at https://docs.run.ai/admin/runai-setup/config/non-root-containers/", "type": "boolean", "example": false, "nullable": true }, "Capability": { "type": "string", "enum": [ "AUDIT_CONTROL", "AUDIT_READ", "AUDIT_WRITE", "BLOCK_SUSPEND", "CHOWN", "DAC_OVERRIDE", "DAC_READ_SEARCH", "FOWNER", "FSETID", "IPC_LOCK", "IPC_OWNER", "KILL", "LEASE", "LINUX_IMMUTABLE", "MAC_ADMIN", "MAC_OVERRIDE", "MKNOD", "NET_ADMIN", "NET_BIND_SERVICE", "NET_BROADCAST", "NET_RAW", "SETGID", "SETFCAP", "SETPCAP", "SETUID", "SYS_ADMIN", "SYS_BOOT", "SYS_CHROOT", "SYS_MODULE", "SYS_NICE", "SYS_PACCT", "SYS_PTRACE", "SYS_RAWIO", "SYS_RESOURCE", "SYS_TIME", "SYS_TTY_CONFIG", "SYSLOG", "WAKE_ALARM" ] }, "Capabilities": { "description": "Add POSIX capabilities to running containers. Defaults to the default set of capabilities granted by the container runtime.", "type": "array", "items": { "$ref": "#/components/schemas/Capability" }, "example": [ "CHOWN", "KILL" ], "nullable": true }, "CreateHomeDir": { "description": "When set to `true`, creates a home directory for the container.", "type": "boolean", "nullable": true }, "HostIpc": { "description": "Whether to enable host IPC. Defaults to false.", "type": "boolean", "example": false, "nullable": true }, "HostNetwork": { "description": "Whether to enable host networking. Default to false.", "type": "boolean", "example": false, "nullable": true }, "Image": { "description": "Docker image name. For more information, see [Images](https://kubernetes.io/docs/concepts/containers/images). The image name is mandatory for creating a workload.", "type": "string", "minLength": 1, "example": "python:3.8", "nullable": true, "pattern": ".*" }, "ImagePullPolicy": { "description": "Image pull policy. Defaults to `Always` if `:latest` tag is specified, otherwise it is `IfNotPresent`.", "type": "string", "minLength": 1, "enum": [ "Always", "Never", "IfNotPresent" ], "nullable": true }, "ProbeHandlerScheme": { "description": "Scheme to use for connecting to the host, defaults to HTTP.", "type": "string", "enum": [ "HTTP", "HTTPS" ], "nullable": true }, "ProbeHandler": { "description": "The action taken to determine the health of the container. (mandatory)", "type": "object", "properties": { "httpGet": { "description": "An action based on HTTP Get requests.", "type": "object", "properties": { "path": { "description": "Path to access on the HTTP server, defaults to /.", "type": "string", "pattern": "^(\\x2F[a-zA-Z0-9\\-_.\\x2F]*)?$", "example": "/", "nullable": true }, "port": { "description": "Number of the port to access on the container.", "type": "integer", "format": "int32", "minimum": 1, "maximum": 65535, "nullable": true }, "host": { "description": "Host name to connect to, defaults to the pod IP.", "type": "string", "format": "hostname", "example": "example.com", "nullable": true, "pattern": ".*" }, "scheme": { "$ref": "#/components/schemas/ProbeHandlerScheme" } } } }, "nullable": true }, "Probe": { "type": "object", "properties": { "initialDelaySeconds": { "description": "Number of seconds after the container has started before liveness or readiness probes are initiated.", "type": "integer", "format": "int32", "minimum": 0, "nullable": true }, "periodSeconds": { "description": "How often (in seconds) to perform the probe.", "type": "integer", "format": "int32", "minimum": 1, "nullable": true }, "timeoutSeconds": { "description": "Number of seconds after which the probe times out.", "type": "integer", "format": "int32", "minimum": 1, "nullable": true }, "successThreshold": { "description": "Minimum consecutive successes for the probe to be considered successful after having failed.", "type": "integer", "format": "int32", "minimum": 1, "nullable": true }, "failureThreshold": { "description": "When a probe fails, the number of times to try before giving up.", "type": "integer", "format": "int32", "minimum": 1, "nullable": true }, "handler": { "$ref": "#/components/schemas/ProbeHandler" } }, "nullable": true }, "Probes": { "description": "Probes are used to determine if the container is healthy and ready to accept traffic.", "type": "object", "properties": { "readiness": { "$ref": "#/components/schemas/Probe" } }, "nullable": true }, "ReadOnlyRootFileSystem": { "description": "If true, mounts the container's root filesystem as read-only.", "type": "boolean", "example": false, "nullable": true }, "RunAsNonRoot": { "description": "Force the container to run as a non-root user.", "type": "boolean", "example": true, "nullable": true }, "SeccompProfileType": { "description": "Indicates which kind of seccomp profile will be applied to the container. The options are a. `RuntimeDefault` - the container runtime default profile should be used. b. `Unconfined` - no profile should be applied. c. `Localhost` is not yet supported by Run:ai.", "type": "string", "enum": [ "RuntimeDefault", "Unconfined", "Localhost" ], "nullable": true }, "Stdin": { "description": "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF", "type": "boolean", "nullable": true }, "Tty": { "description": "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.", "type": "boolean", "nullable": true }, "UidGidSource": { "description": "Indicate the way to determine the user and group ids of the container. The options are a. `fromTheImage` - user and group ids are determined by the docker image that the container runs. this is the default option. b. `custom` - user and group ids can be specified in the environment asset and/or the workload creation request. c. `idpToken` - user and group IDs are automatically taken from the identity provider (IdP) token (available only in SSO-enabled installations). For more information, see [User Identity](https://docs.run.ai/latest/admin/runai-setup/config/non-root-containers/).", "type": "string", "enum": [ "fromTheImage", "fromIdpToken", "custom" ], "nullable": true }, "WorkingDir": { "description": "Container's working directory. If not specified, the container runtime default will be used. This may be configured in the container image.", "type": "string", "minLength": 1, "nullable": true, "example": "/home/myfolder", "pattern": ".*" }, "InternalToolType": { "description": "The type of the internal tool. Internal tool runs within the container and exposes ports associated with the tool using NodePort, LoadBalancer or ExternalUrl.", "type": "string", "minLength": 1, "enum": [ "jupyter-notebook", "pycharm", "visual-studio-code", "tensorboard", "rstudio", "mlflow", "custom", "matlab", "chatbot-ui" ] }, "InternalConnectionType": { "description": "The type of connection that exposes the container port.", "type": "string", "minLength": 1, "enum": [ "LoadBalancer", "NodePort", "ExternalUrl", "ServingPort" ] }, "NodePortInfo": { "properties": { "isCustomPort": { "description": "Whether the node port is provided in the specific env of the workspace. Default is false, and in this case the node port is auto generated by the system.", "type": "boolean", "default": false } }, "nullable": true, "type": "object" }, "ExternalUrlInfo": { "properties": { "isCustomUrl": { "description": "Whether external url is provided in the specific env of the workspace. Default is false, and in this case the external url is auto generated by the system.", "type": "boolean", "default": false }, "externalUrl": { "description": "Default value for the external url. You can override it in the specific env of the workspace. Should be specified for ExternalUrl only.", "type": "string", "nullable": true, "minLength": 1 } }, "nullable": true, "type": "object" }, "ServingPortInfo": { "properties": { "protocol": { "type": "string", "enum": [ "grpc", "http" ], "nullable": true } }, "nullable": true, "type": "object" }, "InternalToolInfo": { "description": "Information of the internal tool.", "required": [ "toolType", "connectionType", "containerPort" ], "properties": { "toolType": { "$ref": "#/components/schemas/InternalToolType" }, "connectionType": { "$ref": "#/components/schemas/InternalConnectionType" }, "containerPort": { "description": "The port within the container that the connection exposes.", "type": "integer", "format": "int32", "minimum": 1, "maximum": 65535 }, "nodePortInfo": { "$ref": "#/components/schemas/NodePortInfo" }, "externalUrlInfo": { "$ref": "#/components/schemas/ExternalUrlInfo" }, "servingPortInfo": { "$ref": "#/components/schemas/ServingPortInfo" } }, "nullable": true, "type": "object" }, "ExternalToolType": { "description": "The type of external tool that is associated with the connection. External tool typically runs in the cloud and require external url for connecting to it.", "type": "string", "minLength": 1, "enum": [ "wandb", "comet" ] }, "ExternalToolInfo": { "description": "Information of the external tool.", "required": [ "toolType", "externalUrl" ], "properties": { "toolType": { "$ref": "#/components/schemas/ExternalToolType" }, "externalUrl": { "description": "The external url for connecting to the external tool. The url can include environment variables that will be replaced with the value provided for those variables when the workspace is created.", "example": "https://wandb.com/myteam/${PROJECT_NAME}", "type": "string", "minLength": 1 } }, "nullable": true, "type": "object" }, "Connection": { "required": [ "name" ], "properties": { "name": { "description": "A unique name of this connection. This name correlates between the connection information specified at the environment asset, to the information about the connection as specified in SpecificEnv for a specific workspace.", "type": "string", "minLength": 1 }, "isExternal": { "description": "Internal tools (isExternal=false) are tools that run as part of the container. External tools (isExternal=true) run outside the container, typically in the cloud.", "type": "boolean", "default": false }, "internalToolInfo": { "$ref": "#/components/schemas/InternalToolInfo" }, "externalToolInfo": { "$ref": "#/components/schemas/ExternalToolInfo" } } }, "NonOverridableSpecFields": { "allOf": [ { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/AllowPrivilegeEscalation" }, "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "hostIpc": { "$ref": "#/components/schemas/HostIpc" }, "hostNetwork": { "$ref": "#/components/schemas/HostNetwork" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "probes": { "$ref": "#/components/schemas/Probes" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "stdin": { "$ref": "#/components/schemas/Stdin" }, "tty": { "$ref": "#/components/schemas/Tty" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" }, { "properties": { "connections": { "description": "List of connections that either expose ports from the container (each port is associated with a tool that the container runs), or URL's to be used for connecting to an external tool that is related to the action of the container (such as Weights & Biases).", "items": { "$ref": "#/components/schemas/Connection" }, "type": "array" }, "overrideUidGidInWorkspace": { "default": false, "description": "Allow specifying uid/gid as part of create workspace. This is relevant only for custom uigGidSource.", "type": "boolean" } } } ] }, "EnvironmentAssetSpec": { "allOf": [ { "$ref": "#/components/schemas/OverridableSpecFields" }, { "$ref": "#/components/schemas/NonOverridableSpecFields" } ] }, "EnvironmentAsset": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/EnvironmentAssetSpec" }, "usedBy": { "$ref": "#/components/schemas/AssetUsageInfo" }, "usageTimes": { "$ref": "#/components/schemas/UsageTimesInfo" }, "compliance": { "$ref": "#/components/schemas/ComplianceInfo" }, "status": { "$ref": "#/components/schemas/AssetClusterStatusInfo" } } }, "EnvironmentListResponse": { "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/EnvironmentAsset" } } } }, "EnvironmentCreationRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetCreationRequest" }, "spec": { "$ref": "#/components/schemas/EnvironmentAssetSpec" } } }, "EnvironmentUpdateRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetUpdateRequest" }, "spec": { "$ref": "#/components/schemas/EnvironmentAssetSpec" } } }, "HostPathMountPropagation": { "description": "Share this volumes mount with other containers. If set to HostToContainer, this volume mount will receive all subsequent mounts that are mounted to this volume or any of its subdirectories. In case of multiple hostPath entries, this field should have the same value for all of them.", "type": "string", "enum": [ "None", "HostToContainer" ], "nullable": true }, "HostPath": { "properties": { "path": { "description": "Local path within the controller to which the host volume will be mapped. (mandatory)", "type": "string", "minLength": 1, "example": "/container/directory", "nullable": true, "pattern": ".*" }, "readOnly": { "description": "Force the volume to be mounted with read-only permissions. Defaults to false.", "type": "boolean", "default": true, "nullable": true }, "mountPath": { "description": "The path that the host volume will be mounted to when in use. (mandatory)", "type": "string", "minLength": 1, "example": "/local/directory", "nullable": true, "pattern": ".*" }, "mountPropagation": { "$ref": "#/components/schemas/HostPathMountPropagation" } }, "nullable": true, "type": "object" }, "HostPathSpec": { "allOf": [ { "$ref": "#/components/schemas/HostPath" } ] }, "Nfs": { "properties": { "path": { "description": "Path that is exported by the NFS server (mandatory). For more information, see [NFS](https://kubernetes.io/docs/concepts/storage/volumes#nfs).", "type": "string", "minLength": 1, "example": "/container/nfs", "nullable": true, "pattern": ".*" }, "readOnly": { "description": "Force the NFS export to be mounted with read-only permissions.", "type": "boolean", "default": true, "nullable": true }, "server": { "description": "The hostname or IP address of the NFS server. (mandatory)", "type": "string", "minLength": 1, "example": "my.nfs.com", "nullable": true, "pattern": ".*" }, "mountPath": { "description": "The path that the NFS volume will be mounted to when in use. (mandatory)", "type": "string", "minLength": 1, "example": "/local/nfs", "nullable": true, "pattern": ".*" } }, "nullable": true, "type": "object" }, "NFSAssetSpec": { "allOf": [ { "$ref": "#/components/schemas/Nfs" } ] }, "PvcClaimSize": { "description": "Requested size for the PVC. Mandatory when existingPvc is false. Recommended sizes: TB/GB/MB/TIB/GIB/MIB", "type": "string", "pattern": "^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$", "example": "1G", "nullable": true }, "PvcAddedAttrValue": { "type": "object", "required": [ "key" ], "properties": { "key": { "type": "string", "minLength": 1, "maxLength": 63, "pattern": "^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$", "example": "dnsname" }, "value": { "type": "string", "example": "my.dns.com", "pattern": ".*" } } }, "PvcAddedAttrValues": { "description": "an optional array of key-values pairs that are written as annotations on the created PVC. the allowed attributes are determined according to the storage class configuration (see k8s-objects-tracker for further info).", "type": "array", "items": { "$ref": "#/components/schemas/PvcAddedAttrValue" } }, "PvcFieldsUpdatable": { "properties": { "path": { "description": "Local path within the workload to which the PVC bucket will be mapped. (mandatory)", "type": "string", "minLength": 1, "example": "/container/my-claim", "nullable": true, "pattern": ".*" } }, "nullable": true, "type": "object" }, "PvcAccessModes": { "description": "Default access mode(s) applied to newly created PVCs unless explicitly overridden.", "properties": { "readWriteOnce": { "description": "Mount the volume as read/write by a single node.", "type": "boolean", "default": true, "nullable": true }, "readOnlyMany": { "description": "Mount the volume as read-only by many nodes.", "type": "boolean", "default": false, "nullable": true }, "readWriteMany": { "description": "Mount the volume as read/write by many nodes.", "type": "boolean", "default": false, "nullable": true } }, "nullable": true, "type": "object" }, "PvcVolumeMode": { "description": "Default volume mode for the PVC. Choose between Filesystem (default) or Block.", "type": "string", "enum": [ "Filesystem", "Block" ], "nullable": true }, "ClaimInfo": { "description": "Claim information for the newly created PVC. The information should not be provided when attempting to use existing PVC.", "properties": { "size": { "$ref": "#/components/schemas/PvcClaimSize" }, "storageClass": { "description": "Storage class name to associate with the PVC. This parameter may be omitted if there is a single storage class in the system, or you are using the default storage class. For more information, see [Storage class](https://kubernetes.io/docs/concepts/storage/storage-classes).", "type": "string", "minLength": 1, "example": "my-storage-class", "nullable": true, "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?$" }, "accessModes": { "$ref": "#/components/schemas/PvcAccessModes" }, "volumeMode": { "$ref": "#/components/schemas/PvcVolumeMode" }, "addedAttrValues": { "$ref": "#/components/schemas/PvcAddedAttrValues" } }, "nullable": true, "type": "object" }, "PvcFieldsNonUpdatable": { "properties": { "existingPvc": { "description": "Verify existing PVC. PVC is assumed to exist when set to `true`. If set to `false`, the PVC will be created, if it does not exist.", "type": "boolean", "default": false, "nullable": true }, "claimName": { "description": "Name for the PVC. Allow referencing it across workloads. If not provided, a name based on the workload name and scope will be auto-generated.", "type": "string", "minLength": 1, "maxLength": 63, "example": "my-claim", "nullable": true, "pattern": ".*" }, "readOnly": { "description": "Permit only read access to PVC.", "type": "boolean", "default": false, "nullable": true }, "ephemeral": { "description": "Use `true` to set PVC to ephemeral. If set to `true`, the PVC will be deleted when the workload is stopped. Not supported for inference workloads.", "type": "boolean", "default": false, "example": false, "nullable": true }, "claimInfo": { "$ref": "#/components/schemas/ClaimInfo" }, "dataSharing": { "description": "use `true` to share the PVC data to all projects under the selected scope.", "type": "boolean", "default": false, "example": false, "nullable": true } }, "nullable": true, "type": "object" }, "Pvc": { "allOf": [ { "$ref": "#/components/schemas/PvcFieldsUpdatable" }, { "$ref": "#/components/schemas/PvcFieldsNonUpdatable" } ] }, "PVCAssetSpec": { "allOf": [ { "$ref": "#/components/schemas/Pvc" } ] }, "GitCommon": { "properties": { "repository": { "description": "URL to a remote Git repository. The content of this repository will be mapped to the container running the workload. (mandatory)", "type": "string", "minLength": 1, "example": "https://github.com/my-git/my-repo", "nullable": true }, "branch": { "description": "Specific branch to synchronize the repository from.", "type": "string", "minLength": 1, "example": "main", "nullable": true }, "revision": { "description": "Specific revision to synchronize the repository from.", "type": "string", "minLength": 1, "nullable": true }, "path": { "description": "Local path within the workload to which the Git repository will be mapped (mandatory).", "type": "string", "minLength": 1, "example": "/container/my-repository", "nullable": true } }, "nullable": true, "type": "object" }, "GitPasswordAsset": { "properties": { "passwordAssetId": { "description": "UUID of a credential asset of type userid / password. This credential is required for authenticating with private Git repositories using SSH. (deprecated - use credentialId instead).", "type": "string", "format": "uuid", "nullable": true, "minLength": 1 } } }, "GitCredentialId": { "properties": { "credentialId": { "description": "UUID of a credential asset of type generic secret or user id / password required for authenticating with private Git repositories. For generic secret, the credential asset must contain a key-value pair where the key is ssh (lowercase) and the value is a valid private SSH key", "type": "string", "format": "uuid", "nullable": true, "minLength": 1 } } }, "GitAssetSpec": { "allOf": [ { "$ref": "#/components/schemas/GitCommon" }, { "$ref": "#/components/schemas/GitPasswordAsset" }, { "$ref": "#/components/schemas/GitCredentialId" } ] }, "S3Common": { "properties": { "bucket": { "description": "The name of the bucket. (mandatory)", "type": "string", "minLength": 1, "example": "my-bucket", "nullable": true }, "path": { "description": "Local path within the workload to which the S3 bucket will be mapped. (mandatory)", "type": "string", "minLength": 1, "example": "/container/my-bucket", "nullable": true }, "url": { "description": "The url of the S3 service provider. The default is the URL of the Amazon AWS S3 service.", "type": "string", "minLength": 1, "example": "https://s3.amazonaws.com", "nullable": true } }, "nullable": true, "type": "object" }, "S3AccessKeyAsset": { "properties": { "accessKeyAssetId": { "description": "ID of credentials asset of type access-key, for private S3 buckets.", "type": "string", "format": "uuid", "minLength": 1, "nullable": true } } }, "S3AssetSpec": { "allOf": [ { "$ref": "#/components/schemas/S3Common" }, { "$ref": "#/components/schemas/S3AccessKeyAsset" } ] }, "DefaultMode": { "type": "string", "description": "File permission mode in octal string format. This value must be a 4-digit octal number, representing the default file mode when mounting a Secret or ConfigMap as a volume.\n", "minLength": 4, "maxLength": 4, "example": "0644", "pattern": "0[0-7]{3}", "nullable": true }, "ConfigMap": { "properties": { "configMap": { "description": "The name of the ConfigMap resource. (mandatory)", "type": "string", "minLength": 1, "nullable": true, "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?$" }, "mountPath": { "description": "Local path within the workload to which the ConfigMap will be mapped to. (mandatory)", "type": "string", "minLength": 1, "nullable": true, "pattern": ".*" }, "subPath": { "description": "Path within the volume from which the container's volume should be mounted.", "type": "string", "minLength": 1, "nullable": true, "pattern": ".*" }, "defaultMode": { "$ref": "#/components/schemas/DefaultMode" } }, "nullable": true, "type": "object" }, "ConfigMapAssetSpec": { "allOf": [ { "$ref": "#/components/schemas/ConfigMap" } ] }, "CredentialAsset": { "properties": { "credentialAssetId": { "description": "ID of credentials asset (mandatory)", "type": "string", "format": "uuid", "nullable": true, "minLength": 1 } } }, "SecretAssetSpec": { "allOf": [ { "$ref": "#/components/schemas/CredentialAsset" }, { "properties": { "mountPath": { "description": "Local path within the workspace to which the Secret will be mapped to (mandatory)", "type": "string", "minLength": 1, "nullable": true }, "defaultMode": { "$ref": "#/components/schemas/DefaultMode" } } } ], "type": "object" }, "DatasourceListResponseAssetSpec": { "properties": { "hostPath": { "nullable": true, "type": "object", "allOf": [ { "$ref": "#/components/schemas/HostPathSpec" } ] }, "nfs": { "nullable": true, "type": "object", "allOf": [ { "$ref": "#/components/schemas/NFSAssetSpec" } ] }, "pvc": { "nullable": true, "type": "object", "allOf": [ { "$ref": "#/components/schemas/PVCAssetSpec" } ] }, "git": { "nullable": true, "type": "object", "allOf": [ { "$ref": "#/components/schemas/GitAssetSpec" } ] }, "s3": { "nullable": true, "type": "object", "allOf": [ { "$ref": "#/components/schemas/S3AssetSpec" } ] }, "config_map": { "nullable": true, "type": "object", "allOf": [ { "$ref": "#/components/schemas/ConfigMapAssetSpec" } ] }, "secret": { "nullable": true, "type": "object", "allOf": [ { "$ref": "#/components/schemas/SecretAssetSpec" } ] } } }, "DatasourceListResponseEntry": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/DatasourceListResponseAssetSpec" }, "usedBy": { "$ref": "#/components/schemas/AssetUsageInfo" }, "usageTimes": { "$ref": "#/components/schemas/UsageTimesInfo" }, "compliance": { "$ref": "#/components/schemas/ComplianceInfo" }, "status": { "$ref": "#/components/schemas/AssetClusterStatusInfo" }, "clusterInfo": { "$ref": "#/components/schemas/ClusterInfo1" } } }, "DatasourceListResponse": { "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/DatasourceListResponseEntry" } } } }, "GitAsset": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/GitAssetSpec" }, "usedBy": { "$ref": "#/components/schemas/AssetUsageInfo" }, "usageTimes": { "$ref": "#/components/schemas/UsageTimesInfo" }, "compliance": { "$ref": "#/components/schemas/ComplianceInfo" }, "status": { "$ref": "#/components/schemas/AssetClusterStatusInfo" } } }, "GitListResponse": { "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/GitAsset" } } } }, "GitCreationRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetCreationRequest" }, "spec": { "$ref": "#/components/schemas/GitAssetSpec" } } }, "GitUpdateRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetUpdateRequest" }, "spec": { "$ref": "#/components/schemas/GitAssetSpec" } } }, "HostPathAsset": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/HostPathSpec" }, "usedBy": { "$ref": "#/components/schemas/AssetUsageInfo" }, "usageTimes": { "$ref": "#/components/schemas/UsageTimesInfo" }, "compliance": { "$ref": "#/components/schemas/ComplianceInfo" } } }, "HostPathListResponse": { "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/HostPathAsset" } } } }, "HostPathCreationRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetCreationRequest" }, "spec": { "$ref": "#/components/schemas/HostPathSpec" } } }, "HostPathUpdateRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetUpdateRequest" }, "spec": { "$ref": "#/components/schemas/HostPathSpec" } } }, "NFSAsset": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/NFSAssetSpec" }, "usedBy": { "$ref": "#/components/schemas/AssetUsageInfo" }, "usageTimes": { "$ref": "#/components/schemas/UsageTimesInfo" }, "compliance": { "$ref": "#/components/schemas/ComplianceInfo" } } }, "NFSListResponse": { "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/NFSAsset" } } } }, "NFSCreationRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetCreationRequest" }, "spec": { "$ref": "#/components/schemas/NFSAssetSpec" } } }, "S3Asset": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/S3AssetSpec" }, "usedBy": { "$ref": "#/components/schemas/AssetUsageInfo" }, "usageTimes": { "$ref": "#/components/schemas/UsageTimesInfo" }, "compliance": { "$ref": "#/components/schemas/ComplianceInfo" }, "status": { "$ref": "#/components/schemas/AssetClusterStatusInfo" } } }, "NFSUpdateRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetUpdateRequest" }, "spec": { "$ref": "#/components/schemas/NFSAssetSpec" } } }, "PVCAsset": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/PVCAssetSpec" }, "usedBy": { "$ref": "#/components/schemas/AssetUsageInfo" }, "usageTimes": { "$ref": "#/components/schemas/UsageTimesInfo" }, "compliance": { "$ref": "#/components/schemas/ComplianceInfo" }, "status": { "$ref": "#/components/schemas/AssetClusterStatusInfo" }, "clusterInfo": { "$ref": "#/components/schemas/ClusterInfo1" } } }, "PVCListResponse": { "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/PVCAsset" } } } }, "PVCCreationRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetCreationRequest" }, "spec": { "$ref": "#/components/schemas/PVCAssetSpec" } } }, "PVCUpdateRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetUpdateRequest" }, "spec": { "$ref": "#/components/schemas/PvcFieldsUpdatable" } } }, "HistoryRecordType": { "type": "string", "enum": [ "Event", "PhaseUpdate" ] }, "HistoryRecordMeta": { "type": "object", "required": [ "creationTimestamp", "type" ], "properties": { "creationTimestamp": { "type": "string", "format": "date-time", "example": "2022-01-01T03:49:52.531Z" }, "type": { "$ref": "#/components/schemas/HistoryRecordType" } } }, "InvolvedObject": { "type": "object", "required": [ "uid", "kind", "name", "namespace" ], "properties": { "uid": { "type": "string", "format": "uuid" }, "kind": { "type": "string", "example": "Pod" }, "name": { "type": "string", "example": "test-0-1" }, "namespace": { "type": "string", "example": "runai-test" } } }, "Event1": { "type": "object", "nullable": true, "required": [ "createdAt", "type", "clusterId", "message" ], "properties": { "createdAt": { "type": "string", "format": "date-time", "example": "2022-01-01T03:49:52.531Z" }, "id": { "type": "string", "format": "uuid" }, "type": { "type": "string", "example": "Normal" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "message": { "type": "string", "example": "Started container z" }, "reason": { "type": "string", "example": "Started" }, "source": { "type": "string", "example": "kubelet" }, "involvedObject": { "$ref": "#/components/schemas/InvolvedObject" } } }, "AssetPhaseUpdate": { "type": "object", "nullable": true, "required": [ "phase", "phaseMessage" ], "properties": { "phase": { "type": "string", "example": "Creating" }, "phaseMessage": { "type": "string", "example": "Creating PVC asset pvc-123" } } }, "HistoryRecord": { "type": "object", "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/HistoryRecordMeta" }, "spec": { "type": "object", "properties": { "event": { "$ref": "#/components/schemas/Event1" }, "phaseUpdate": { "$ref": "#/components/schemas/AssetPhaseUpdate" } } } } }, "HistoryRecords": { "type": "array", "items": { "$ref": "#/components/schemas/HistoryRecord" }, "x-schema-name": "HistoryRecords" }, "PVCHistoryResponse": { "type": "object", "required": [ "records" ], "properties": { "next": { "type": "integer", "example": 1 }, "records": { "$ref": "#/components/schemas/HistoryRecords" } } }, "S3ListResponse": { "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/S3Asset" } } } }, "S3CreationRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetCreationRequest" }, "spec": { "$ref": "#/components/schemas/S3AssetSpec" } } }, "S3UpdateRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetUpdateRequest" }, "spec": { "$ref": "#/components/schemas/S3AssetSpec" } } }, "AssetsRefCompute": { "allOf": [ { "$ref": "#/components/schemas/AssetRef" } ], "nullable": true, "type": "object" }, "DatasourceRef": { "description": "Reference information about a datasource asset.", "required": [ "id", "name", "kind" ], "properties": { "id": { "$ref": "#/components/schemas/AssetId" }, "name": { "$ref": "#/components/schemas/AssetName" }, "kind": { "$ref": "#/components/schemas/AssetKind" }, "overrides": { "$ref": "#/components/schemas/DataSourceOverrides" } } }, "AssetsRef": { "description": "Reference information about a set of assets. used to describe - assets comprising a workspace - assets comprising a workspace template - assets that use other assets (e.g. s3 asset which uses access key).", "required": [ "environment" ], "properties": { "environment": { "description": "environment asset.", "allOf": [ { "$ref": "#/components/schemas/EnvironmentAssetRef" } ] }, "compute": { "$ref": "#/components/schemas/AssetsRefCompute" }, "datasources": { "type": "array", "items": { "$ref": "#/components/schemas/DatasourceRef" } }, "workloadVolumes": { "type": "array", "items": { "type": "string" } } } }, "SpecificRunConnectionInfo": { "required": [ "connectionName" ], "properties": { "name": { "type": "string", "minLength": 1, "description": "Unique identifier of the connection. Will be used to correlate between the information given here and the information provided for the connection in the environment asset." }, "nodePort": { "description": "Port number of the host that will be connected with the container port. Required if and only if isCustomPort is set to true in the environment asset.", "type": "integer", "format": "int32", "minimum": 0, "maximum": 65535, "nullable": true }, "externalUrl": { "description": "URL to associated with the container port. Required if and only if isCustomExternalUrl is set to true in the environment asset.", "type": "string", "minLength": 1, "nullable": true }, "authorizedUsers": { "description": "List of users or applications that are allowed to access the URL. Note that authorizedUsers and authorizedGroups are mutually exclusive.", "type": "array", "items": { "type": "string" }, "nullable": true }, "authorizedGroups": { "description": "Specifies the names of those groups that are allowed to access the connection. Note that authorizedUsers and authorizedGroups are mutually exclusive.", "type": "array", "items": { "type": "string" }, "nullable": true } } }, "SpecificRunConnections": { "properties": { "connections": { "type": "array", "items": { "$ref": "#/components/schemas/SpecificRunConnectionInfo" }, "nullable": true } }, "nullable": true, "type": "object" }, "Annotation": { "description": "Annotation details to be populated into the container.", "properties": { "name": { "description": "The name of the annotation (mandatory)", "type": "string", "minLength": 1, "maxLength": 63, "example": "billing", "nullable": true, "pattern": ".*" }, "value": { "description": "The value of the annotation.", "type": "string", "example": "my-billing-unit", "nullable": true, "pattern": ".*" }, "exclude": { "description": "Use 'true' in case the annotation is defined in defaults of the policy, and you wish to exclude it from the workload.", "type": "boolean", "default": false, "example": false, "nullable": true } }, "nullable": true, "type": "object" }, "Annotations": { "description": "Set of annotations to populate into the container running the workload.", "type": "array", "items": { "$ref": "#/components/schemas/Annotation" }, "nullable": true }, "AutoDeletionTimeAfterPreemption": { "description": "Specifies the duration after which a finished workload (completed or failed) will be automatically deleted. The default is 30 days. Log retention is managed separately.", "format": "int64", "type": "integer", "example": 15, "nullable": true }, "BackoffLimit": { "description": "Specifies the number of retries before marking a workload as failed (not applicable to Inference workloads). The default value is 6.", "format": "int64", "type": "integer", "example": 3, "nullable": true }, "Category": { "description": "Specify the workload category assigned to the workload. Categories are used to classify and monitor different types of workloads within the NVIDIA Run:ai platform.", "type": "string", "nullable": true, "pattern": ".*" }, "Completions": { "description": "Used with Hyperparameter Optimization. Specifies the number of successful pods the job should reach to be completed. The Job will be marked as successful once the specified amount of pods has been reached (applicable to standard training only).", "type": "integer", "format": "int32", "example": 1, "nullable": true }, "ImagePullSecret": { "description": "A reference to a secret in the same namespace used to pull container images.", "properties": { "name": { "type": "string", "description": "The name of the Kubernetes secret containing the image pull credentials.", "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?$" }, "userCredential": { "type": "boolean", "description": "Indicates whether the secret is a user credential. Set to true if the secret was created by the user and is only accessible by them.", "nullable": true }, "exclude": { "description": "Use 'true' in case the secret is defined in defaults of the policy, and you wish to exclude it from the workload.", "type": "boolean", "default": false, "example": false, "nullable": true } }, "nullable": true, "type": "object" }, "ImagePullSecrets": { "description": "A list of references to Kubernetes secrets in the same namespace used for pulling container images.", "type": "array", "items": { "$ref": "#/components/schemas/ImagePullSecret" }, "nullable": true }, "Label": { "description": "Label details to be populated into the container.", "properties": { "name": { "description": "The name of the label (mandatory)", "type": "string", "minLength": 1, "maxLength": 63, "example": "stage", "nullable": true, "pattern": ".*" }, "value": { "description": "The value of the label.", "type": "string", "example": "initial-research", "nullable": true, "pattern": ".*" }, "exclude": { "description": "Use 'true' in case the label is defined in defaults of the policy, and you wish to exclude it from the workload.", "type": "boolean", "example": false, "nullable": true } }, "nullable": true, "type": "object" }, "Labels": { "description": "Set of labels to populate into the container running the workload.", "type": "array", "items": { "$ref": "#/components/schemas/Label" }, "nullable": true }, "MatchExpressionOperator": { "description": "Represents a key's relationship to a set of values (mandatory).", "type": "string", "enum": [ "In", "NotIn", "Exists", "DoesNotExist", "Gt", "Lt" ] }, "MatchExpression": { "type": "object", "description": "A selector that contains values, a key, and an operator that relates the key and values.", "properties": { "key": { "description": "The label key that the selector applies to (mandatory).", "type": "string", "pattern": ".*" }, "operator": { "$ref": "#/components/schemas/MatchExpressionOperator" }, "values": { "description": "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer.", "type": "array", "items": { "type": "string", "pattern": ".*" } } }, "required": [ "key", "operator" ], "nullable": true }, "NodeSelectorTerm": { "type": "object", "description": "A null or empty node selector term matches no objects. The requirements of them are ANDed.", "properties": { "matchExpressions": { "description": "A list of node selector requirements by node's labels.", "type": "array", "items": { "$ref": "#/components/schemas/MatchExpression" } } }, "nullable": true }, "NodeAffinityRequired": { "type": "object", "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.", "properties": { "nodeSelectorTerms": { "description": "A list of node selector terms. The terms are ORed.", "type": "array", "items": { "$ref": "#/components/schemas/NodeSelectorTerm" } } }, "nullable": true }, "NodePools": { "description": "A prioritized list of node pools for the scheduler to run the workload on. The scheduler will always try to use the first node pool before moving to the next one if the first is not available.", "type": "array", "items": { "type": "string", "pattern": ".*" }, "example": [ "my-node-pool-a", "my-node-pool-b" ], "nullable": true }, "NodeType1": { "description": "Nodes (machines), or a group of nodes on which the workload will run. To use this feature, your Administrator will need to label nodes. For more information, see [Group Nodes](https://docs.run.ai/latest/admin/researcher-setup/limit-to-node-group). When using this flag with with Project-based affinity, it refines the list of allowable node groups set in the Project. For more information, see [Projects](https://docshub.run.ai/guides/platform-management/aiinitiatives/organization/projects).", "type": "string", "minLength": 1, "example": "my-node-type", "nullable": true, "pattern": ".*" }, "Parallelism": { "description": "Used with Hyperparameter Optimization. Specifies the maximum number of pods the workload should run at any given time (applicable to standard training only).", "type": "integer", "format": "int32", "example": 1, "nullable": true }, "PodAffinityType": { "description": "The affinity type, required or preferred. (mandatory)", "type": "string", "enum": [ "Required", "Preferred" ], "nullable": true }, "PodAffinity": { "description": "Pod affinity scheduling rules (e.g. co-locate this workload in the same node, zone, etc. as some other workloads).", "type": "object", "properties": { "type": { "$ref": "#/components/schemas/PodAffinityType" }, "key": { "description": "The label key to use. (mandatory)", "type": "string", "nullable": true, "pattern": ".*" } }, "nullable": true }, "Preemptibility": { "description": "Specifies whether the workload can be preempted by higher-priority workloads. Valid values are preemptible and non-preemptible. If explicitly set, this value takes precedence. If not set, the system derives the preemptibility from the priorityClassName field, ensuring backward compatibility. Each workload type has a default preemptibility. To view the default preemptibility for each workload type, use the GET /workload-types endpoint.", "type": "string", "minLength": 1, "enum": [ "preemptible", "non-preemptible" ], "nullable": true }, "PriorityClass": { "description": "Specifies the priority class for the workload, which determines its scheduling behavior. Valid values are: very-low, low, medium-low, medium, medium-high, high, and very-high. Each workload type has a default priority. To view the default priority for each workload type, use the GET /workload-types endpoint. Once you change the priority from the default value defined for that workload type, the preemptibility field is not automatically updated. Make sure to set the desired preemptibility value.", "type": "string", "nullable": true, "pattern": ".*" }, "RestartPolicy": { "description": "Specify the restart policy of the workload pods. Default is empty, which is determine by the framework default", "type": "string", "minLength": 1, "enum": [ "Always", "Never", "OnFailure" ], "nullable": true }, "TerminateAfterPreemption": { "description": "Indicates if the job should be terminated by the system after it has been preempted.", "type": "boolean", "example": false, "nullable": true }, "TerminationGracePeriod": { "description": "Duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down).", "format": "int64", "type": "integer", "minimum": 0, "example": 20, "nullable": true }, "TolerationOperator": { "description": "A key's relationship to the value. Equal uses key and value. Exists is equivalent to wildcard for value, so that a workload can tolerate all taints of a particular category. (mandatory)", "type": "string", "enum": [ "Equal", "Exists" ], "nullable": true }, "TolerationEffect": { "description": "The taint effect to match. (mandatory)", "type": "string", "enum": [ "NoSchedule", "NoExecute", "PreferNoSchedule", "Any" ], "nullable": true }, "Toleration": { "description": "Toleration details.", "properties": { "name": { "description": "The name of the toleration.", "type": "string", "minLength": 1, "nullable": true, "pattern": ".*" }, "operator": { "$ref": "#/components/schemas/TolerationOperator" }, "key": { "description": "The taint key that the toleration applies to. (mandatory)", "type": "string", "nullable": true, "pattern": ".*" }, "value": { "description": "The taint value the toleration matches to. Mandatory if operator is Exists, forbidden otherwise.", "type": "string", "nullable": true, "pattern": ".*" }, "effect": { "$ref": "#/components/schemas/TolerationEffect" }, "seconds": { "description": "The period of time the toleration tolerates the taint. Valid only if effect is NoExecute. taint.", "type": "integer", "minimum": 1, "nullable": true }, "exclude": { "description": "Use 'true' in case the label is defined in defaults of the policy, and you wish to exclude it from the workload.", "type": "boolean", "example": false, "nullable": true } }, "nullable": true, "type": "object" }, "Tolerations": { "description": "Set of tolerations to apply to the workload.", "type": "array", "items": { "$ref": "#/components/schemas/Toleration" }, "nullable": true }, "AllowOverQuota": { "properties": { "allowOverQuota": { "description": "Whether to allow the workload to exceed the quota of the project.", "type": "boolean", "nullable": true } } }, "MetricThresholdPercentageField": { "properties": { "metricThresholdPercentage": { "description": "The percentage of metric threshold value to use for autoscaling. Defaults to 70. Applicable only with the 'throughput' and 'concurrency' metrics", "type": "number", "format": "float", "minimum": 1, "maximum": 100, "nullable": true } } }, "InferencesMinReplicasField": { "properties": { "minReplicas": { "description": "The minimum number of replicas for autoscaling. Defaults to 1. Use 0 to allow scale-to-zero", "type": "integer", "format": "int32", "minimum": 0, "nullable": true } } }, "InferencesMaxReplicasField": { "properties": { "maxReplicas": { "description": "The maximum number of replicas for autoscaling. Defaults to minReplicas, or to 1 if minReplicas is set to 0", "type": "integer", "format": "int32", "minimum": 1, "nullable": true } } }, "InitialReplicasField": { "properties": { "initialReplicas": { "description": "The number of replicas to run when initializing the workload for the first time. Defaults to minReplicas, or to 1 if minReplicas is set to 0", "type": "integer", "format": "int32", "minimum": 0, "nullable": true } } }, "ActivationReplicasField": { "properties": { "activationReplicas": { "description": "The number of replicas to run when scaling-up from zero. Defaults to minReplicas, or to 1 if minReplicas is set to 0", "type": "integer", "format": "int32", "minimum": 1, "nullable": true } } }, "ConcurrencyHardLimitField": { "properties": { "concurrencyHardLimit": { "description": "The maximum number of requests allowed to flow to a single replica at any time. 0 means no limit", "type": "integer", "format": "int32", "minimum": 0, "nullable": true } } }, "ScaleToZeroRetentionField": { "properties": { "scaleToZeroRetentionSeconds": { "description": "The minimum amount of time (in seconds) that the last replica will remain active after a scale-to-zero decision. Defaults to 0. Available only if minReplicas is set to 0", "type": "integer", "format": "int32", "minimum": 0, "maximum": 3600, "nullable": true } } }, "ScaleDownDelayField": { "properties": { "scaleDownDelaySeconds": { "description": "The minimum amount of time (in seconds) that a replica will remain active after a scale-down decision", "type": "integer", "format": "int32", "minimum": 0, "maximum": 3600, "nullable": true } } }, "InitializationTimeoutField": { "properties": { "initializationTimeoutSeconds": { "description": "Use `servingConfiguration.initializationTimeoutSeconds` instead. If this field is set, it will be ignored and the value under `servingConfiguration` will be used. The maximum amount of time (in seconds) to wait for the container to become ready.", "type": "integer", "format": "int32", "minimum": 1, "nullable": true, "deprecated": true } } }, "AutoScalingCommonFields": { "allOf": [ { "$ref": "#/components/schemas/MetricThresholdPercentageField" }, { "$ref": "#/components/schemas/InferencesMinReplicasField" }, { "$ref": "#/components/schemas/InferencesMaxReplicasField" }, { "$ref": "#/components/schemas/InitialReplicasField" }, { "$ref": "#/components/schemas/ActivationReplicasField" }, { "$ref": "#/components/schemas/ConcurrencyHardLimitField" }, { "$ref": "#/components/schemas/ScaleToZeroRetentionField" }, { "$ref": "#/components/schemas/ScaleDownDelayField" }, { "$ref": "#/components/schemas/InitializationTimeoutField" } ], "nullable": true, "type": "object" }, "AutoScalingMetric": { "description": "The metric to use for autoscaling. Mandatory if minReplicas < maxReplicas, except for the special case where minReplicas is set to 0 and maxReplicas is set to 1, as in this case autoscaling decisions are made according to network activity rather than metrics. Use one of the built-in metrics of 'throughput', 'concurrency' or 'latency', or any other available custom metric. Only the 'throughput' and 'concurrency' metrics support scale-to-zero", "type": "string", "pattern": "^[a-zA-Z_:][a-zA-Z0-9_:]*$", "example": "http_requests_total", "nullable": true }, "SpecificRunMetricFields": { "properties": { "thresholdMetric": { "$ref": "#/components/schemas/AutoScalingMetric" }, "thresholdValue": { "description": "The threshold value to use with the specified metric for autoscaling", "type": "integer", "format": "int32", "nullable": true } }, "type": "object", "nullable": true }, "SpecificRunAutoScaling": { "properties": { "autoScaling": { "allOf": [ { "$ref": "#/components/schemas/AutoScalingCommonFields" }, { "$ref": "#/components/schemas/SpecificRunMetricFields" } ], "nullable": true, "type": "object" } }, "nullable": true, "type": "object" }, "ServingPortAccessAuthorizationTypeEnum": { "type": "string", "enum": [ "public", "authenticatedUsers", "authorizedUsers", "authorizedGroups", "authorizedUsersOrGroups" ], "description": "Specifies who can send inference requests to the serving endpoint:\n\nPossible values:\n- `public`: No authorization is required. (Default)\n- `authenticatedUsers`: Any NVIDIA Run:ai authenticated user and service account can send requests.\n- `authorizedUsers`: Only users listed in the authorizedUsers field can send requests.\n- `authorizedGroups`: Only members of user groups listed in the authorizedGroups field can send requests.\n- `authorizedUsersOrGroups`: Requires either authorizedUsers or authorizedGroups to be provided; if neither is set, or if both are set, a mutual exclusion error is reported. Supported from cluster version 2.19.\n", "nullable": true }, "ServingPortAccess": { "properties": { "authorizationType": { "$ref": "#/components/schemas/ServingPortAccessAuthorizationTypeEnum" }, "authorizedUsers": { "description": "A list of users and service accounts allowed to send inference requests to the serving endpoint. `Note:` Cannot be used together with authorizedGroups.", "type": "array", "items": { "type": "string", "pattern": ".*" }, "example": [ "user.a@example.com", "user.b@example.com" ], "nullable": true }, "authorizedGroups": { "description": "List of groups that are allowed to access the URL. Note that authorizedUsers and authorizedGroups are mutually exclusive.", "type": "array", "items": { "type": "string", "pattern": ".*" }, "example": [ "group-a", "group-b" ], "nullable": true }, "clusterLocalAccessOnly": { "description": "Configure the serving port URL to be available only on the cluster-local network, and not externally. Defaults to false", "type": "boolean", "nullable": true } } }, "SpecificRunServingPortAccess": { "properties": { "servingPortAccess": { "allOf": [ { "$ref": "#/components/schemas/ServingPortAccess" } ], "nullable": true, "type": "object" } }, "nullable": true, "type": "object" }, "SpecificRunParams": { "allOf": [ { "$ref": "#/components/schemas/SpecificRunConnections" }, { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemption" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimit" }, "category": { "$ref": "#/components/schemas/Category" }, "command": { "$ref": "#/components/schemas/Command" }, "completions": { "$ref": "#/components/schemas/Completions" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariablesOfAsset" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecrets" }, "labels": { "$ref": "#/components/schemas/Labels" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType1" }, "parallelism": { "$ref": "#/components/schemas/Parallelism" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicy" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriod" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" } }, "type": "object" }, { "$ref": "#/components/schemas/AllowOverQuota" }, { "$ref": "#/components/schemas/SpecificRunAutoScaling" }, { "$ref": "#/components/schemas/SpecificRunServingPortAccess" } ], "description": "Parameters which apply to a specific workload. They complement the information gathered from the assets comprising the workload.\n", "nullable": true, "type": "object" }, "DistributedFramework": { "description": "The distributed training framework used in the workload.", "type": "string", "enum": [ "MPI", "PyTorch", "TF", "XGBoost", "JAX" ], "nullable": true }, "AssetsRefOptional": { "allOf": [ { "$ref": "#/components/schemas/AssetsRef" } ], "type": "object", "nullable": true }, "InfoDistMaster": { "description": "Parameters which apply to the master in a distributed training.\n", "nullable": true, "type": "object", "properties": { "assets": { "$ref": "#/components/schemas/AssetsRefOptional" }, "specificEnv": { "$ref": "#/components/schemas/SpecificRunParams" } } }, "InfoDistributed": { "description": "Parameters which apply to distributed training.\n", "allOf": [ { "properties": { "numWorkers": { "type": "integer" }, "noMaster": { "type": "boolean", "nullable": true }, "distFramework": { "$ref": "#/components/schemas/DistributedFramework" }, "master": { "$ref": "#/components/schemas/InfoDistMaster" } } } ], "nullable": true, "type": "object" }, "SpecificRunInfoFields": { "description": "Information about the set of assets which comprises a workspace, training or template, and an optional set of specific run parameters.", "required": [ "assets" ], "properties": { "assets": { "$ref": "#/components/schemas/AssetsRef" }, "specificEnv": { "$ref": "#/components/schemas/SpecificRunParams" }, "distributed": { "$ref": "#/components/schemas/InfoDistributed" } } }, "WorkloadTemplate": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/SpecificRunInfoFields" } } }, "WorkloadTemplateListResponse": { "type": "object", "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/WorkloadTemplate" } } } }, "SpecificRunCreationFields": { "description": "The information needed for creating az template - a set of assets and an optional set of specific environment parameters.", "required": [ "assets" ], "properties": { "assets": { "$ref": "#/components/schemas/AssetsIds" }, "specificEnv": { "$ref": "#/components/schemas/SpecificRunParams" } } }, "WorkloadTemplateCreationRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetCreationRequest" }, "spec": { "$ref": "#/components/schemas/SpecificRunCreationFields" } } }, "WorkloadTemplateUpdateRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetUpdateRequest" }, "spec": { "$ref": "#/components/schemas/SpecificRunCreationFields" } } }, "DistMaster": { "description": "Parameters which apply to the master in a distributed training.\n", "nullable": true, "type": "object", "properties": { "assets": { "$ref": "#/components/schemas/AssetsIds" }, "specificEnv": { "$ref": "#/components/schemas/SpecificRunParams" } } }, "Distributed": { "description": "Parameters which apply to distributed training.\n", "allOf": [ { "properties": { "numWorkers": { "type": "integer" }, "noMaster": { "type": "boolean", "nullable": true }, "distFramework": { "$ref": "#/components/schemas/DistributedFramework" }, "master": { "$ref": "#/components/schemas/DistMaster" } } } ], "nullable": true, "type": "object" }, "ComplianceIssuesV2": { "properties": { "complianceIssues": { "type": "array", "items": { "type": "object", "required": [ "details", "field" ], "properties": { "field": { "type": "string", "example": "compute.gpuDevicesRequest" }, "details": { "type": "string", "example": "value must be no less than 3" }, "rule": { "$ref": "#/components/schemas/PolicyRuleEnum" } } } } }, "nullable": true, "type": "object" }, "SubmissionErrorV2": { "allOf": [ { "$ref": "#/components/schemas/Error" }, { "$ref": "#/components/schemas/ComplianceIssuesV2" } ] }, "WorkloadDesiredPhase": { "description": "The desired phase of the workload.", "type": "string", "enum": [ "Running", "Stopped", "Deleted" ] }, "Phase": { "type": "string", "enum": [ "Creating", "Initializing", "Resuming", "Pending", "Deleting", "Running", "Updating", "Stopped", "Stopping", "Degraded", "Failed", "Completed", "Terminating", "Unknown" ] }, "WorkspaceSpecificRunParams": { "allOf": [ { "$ref": "#/components/schemas/SpecificRunConnections" }, { "$ref": "#/components/schemas/AllowOverQuota" }, { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemption" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimit" }, "category": { "$ref": "#/components/schemas/Category" }, "command": { "$ref": "#/components/schemas/Command" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariablesOfAsset" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecrets" }, "labels": { "$ref": "#/components/schemas/Labels" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType1" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicy" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriod" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" } }, "type": "object" } ], "nullable": true, "type": "object" }, "DataVolume": { "properties": { "id": { "description": "The unique identifier of the data volume. (mandatory)", "type": "string", "format": "uuid", "example": "123e4567-e89b-12d3-a456-426614174000", "nullable": true }, "mountPath": { "description": "The path where the data volume will be mounted. (mandatory)", "type": "string", "example": "/mnt/data", "nullable": true, "pattern": ".*" } }, "nullable": true, "type": "object" }, "SecretFieldsUpdatable": { "properties": { "mountPath": { "description": "Local path within the workload to which the Secret will be mapped to. (mandatory)", "type": "string", "minLength": 1, "nullable": true }, "defaultMode": { "$ref": "#/components/schemas/DefaultMode" } }, "nullable": true, "type": "object" }, "SecretFieldsNonUpdatable": { "properties": { "secret": { "description": "The name of the Secret resource. (mandatory)", "type": "string", "minLength": 1, "nullable": true } }, "nullable": true, "type": "object" }, "Secret2": { "allOf": [ { "$ref": "#/components/schemas/SecretFieldsUpdatable" }, { "$ref": "#/components/schemas/SecretFieldsNonUpdatable" } ] }, "ProjectIdOptional": { "description": "The id of the project.", "type": "integer", "format": "int32", "example": 1, "nullable": true }, "SourceOfRule": { "description": "This field is used by the system along with effective rules, in order to specify the org unit from which this effective rule has been derived. It should be left empty when sending apply policy requests.", "required": [ "scope" ], "properties": { "scope": { "$ref": "#/components/schemas/ScopeType" }, "projectId": { "$ref": "#/components/schemas/ProjectIdOptional" }, "departmentId": { "$ref": "#/components/schemas/DepartmentIdOptional" }, "clusterId": { "$ref": "#/components/schemas/ClusterIdOptional" }, "isFallback": { "description": "source of this rule is the fallback policy", "type": "boolean" } }, "example": { "scope": "project", "projectId": 3 }, "nullable": true, "type": "object" }, "StringRulesCommon": { "properties": { "sourceOfRule": { "$ref": "#/components/schemas/SourceOfRule" }, "required": { "description": "Whether the field is mandatory, default to false.", "type": "boolean", "nullable": true }, "canEdit": { "description": "Whether the value of the field is editable, default to true", "type": "boolean", "nullable": true } }, "example": { "required": true, "canEdit": false } }, "StringOption": { "description": "One of the values that the field can be assigned to, when options police is applied on the field.", "required": [ "value" ], "properties": { "value": { "description": "The value that the field should hold", "type": "string", "pattern": ".*" }, "displayed": { "description": "Textual description of the value. to be used by user interface applications.", "type": "string", "nullable": true, "pattern": ".*" } }, "example": { "value": "value", "displayed": "A description of the value." } }, "StringRulesOptions": { "properties": { "options": { "description": "Set of options that the value of the field must be chosen from.", "type": "array", "items": { "$ref": "#/components/schemas/StringOption" }, "nullable": true } } }, "StringRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/StringRulesOptions" } ], "nullable": true, "type": "object" }, "DataVolumeRules": { "properties": { "id": { "$ref": "#/components/schemas/StringRules" }, "mountPath": { "$ref": "#/components/schemas/StringRules" } }, "nullable": true, "type": "object" }, "ItemRules": { "properties": { "sourceOfRule": { "$ref": "#/components/schemas/SourceOfRule" }, "canAdd": { "description": "Whether it is permitted to add items. Default to true.", "type": "boolean", "nullable": true }, "locked": { "description": "Set of keys for items that are \"locked\", i.e. cannot be removed or deleted.", "type": "array", "items": { "type": "string" }, "example": [ "HOME", "USER" ] } }, "nullable": true, "type": "object" }, "DataVolumesRules": { "properties": { "attributes": { "$ref": "#/components/schemas/DataVolumeRules" }, "instances": { "$ref": "#/components/schemas/ItemRules" } }, "nullable": true, "type": "object" }, "BooleanRules": { "properties": { "sourceOfRule": { "$ref": "#/components/schemas/SourceOfRule" }, "required": { "description": "Whether the field is mandatory. default to false.", "type": "boolean", "nullable": true }, "canEdit": { "description": "Whether the value of the field is editable. default to true", "type": "boolean", "nullable": true } }, "nullable": true, "type": "object" }, "PvcAccessModesRules": { "description": "Rules for access mode(s) for a newly created PVC.", "properties": { "readWriteOnce": { "$ref": "#/components/schemas/BooleanRules" }, "readOnlyMany": { "$ref": "#/components/schemas/BooleanRules" }, "readWriteMany": { "$ref": "#/components/schemas/BooleanRules" } }, "nullable": true, "type": "object" }, "ClaimInfoRules": { "properties": { "size": { "$ref": "#/components/schemas/StringRules" }, "storageClass": { "$ref": "#/components/schemas/StringRules" }, "accessModes": { "$ref": "#/components/schemas/PvcAccessModesRules" } }, "nullable": true, "type": "object" }, "PvcRules": { "properties": { "claimName": { "$ref": "#/components/schemas/StringRules" }, "path": { "$ref": "#/components/schemas/StringRules" }, "readOnly": { "$ref": "#/components/schemas/BooleanRules" }, "claimInfo": { "$ref": "#/components/schemas/ClaimInfoRules" } }, "nullable": true, "type": "object" }, "PvcsRules": { "properties": { "attributes": { "$ref": "#/components/schemas/PvcRules" }, "instances": { "$ref": "#/components/schemas/ItemRules" } }, "nullable": true, "type": "object" }, "HostPathMountPropagationOptions": { "properties": { "options": { "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/HostPathMountPropagation" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } } }, "HostPathMountPropagationRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/HostPathMountPropagationOptions" } ], "nullable": true, "type": "object" }, "HostPathRules": { "properties": { "path": { "$ref": "#/components/schemas/StringRules" }, "readOnly": { "$ref": "#/components/schemas/BooleanRules" }, "mountPath": { "$ref": "#/components/schemas/StringRules" }, "mountPropagation": { "$ref": "#/components/schemas/HostPathMountPropagationRules" } }, "nullable": true, "type": "object" }, "HostPathsRules": { "properties": { "attributes": { "$ref": "#/components/schemas/HostPathRules" }, "instances": { "$ref": "#/components/schemas/ItemRules" } }, "nullable": true, "type": "object" }, "NfsRules": { "properties": { "path": { "$ref": "#/components/schemas/StringRules" }, "readOnly": { "$ref": "#/components/schemas/BooleanRules" }, "server": { "$ref": "#/components/schemas/StringRules" }, "mountPath": { "$ref": "#/components/schemas/StringRules" } }, "nullable": true, "type": "object" }, "NfssRules": { "properties": { "attributes": { "$ref": "#/components/schemas/NfsRules" }, "instances": { "$ref": "#/components/schemas/ItemRules" } }, "nullable": true, "type": "object" }, "GitRules": { "properties": { "repository": { "$ref": "#/components/schemas/StringRules" }, "branch": { "$ref": "#/components/schemas/StringRules" }, "revision": { "$ref": "#/components/schemas/StringRules" }, "path": { "$ref": "#/components/schemas/StringRules" } }, "nullable": true, "type": "object" }, "GitsRules": { "properties": { "attributes": { "$ref": "#/components/schemas/GitRules" }, "instances": { "$ref": "#/components/schemas/ItemRules" } }, "nullable": true, "type": "object" }, "ConfigMapRules": { "properties": { "configMap": { "$ref": "#/components/schemas/StringRules" }, "mountPath": { "$ref": "#/components/schemas/StringRules" }, "subPath": { "$ref": "#/components/schemas/StringRules" }, "defaultMode": { "$ref": "#/components/schemas/StringRules" } }, "nullable": true, "type": "object" }, "ConfigMapsRules": { "properties": { "attributes": { "$ref": "#/components/schemas/ConfigMapRules" }, "instances": { "$ref": "#/components/schemas/ItemRules" } }, "nullable": true, "type": "object" }, "SecretRules": { "properties": { "secret": { "$ref": "#/components/schemas/StringRules" }, "mountPath": { "$ref": "#/components/schemas/StringRules" }, "defaultMode": { "$ref": "#/components/schemas/StringRules" } }, "nullable": true, "type": "object" }, "SecretsRules": { "properties": { "attributes": { "$ref": "#/components/schemas/SecretRules" }, "instances": { "$ref": "#/components/schemas/ItemRules" } }, "nullable": true, "type": "object" }, "EmptyDirRules": { "properties": { "path": { "$ref": "#/components/schemas/StringRules" }, "medium": { "$ref": "#/components/schemas/StringRules" }, "sizeLimit": { "$ref": "#/components/schemas/StringRules" } }, "nullable": true, "type": "object" }, "EmptyDirsRules": { "properties": { "attributes": { "$ref": "#/components/schemas/EmptyDirRules" }, "instances": { "$ref": "#/components/schemas/ItemRules" } }, "nullable": true, "type": "object" }, "S3Rules": { "properties": { "bucket": { "$ref": "#/components/schemas/StringRules" }, "path": { "$ref": "#/components/schemas/StringRules" }, "url": { "$ref": "#/components/schemas/StringRules" } }, "nullable": true, "type": "object" }, "S3sRules": { "properties": { "attributes": { "$ref": "#/components/schemas/S3Rules" }, "instances": { "$ref": "#/components/schemas/ItemRules" } }, "nullable": true, "type": "object" }, "InstancesRules": { "properties": { "instances": { "$ref": "#/components/schemas/ItemRules" } }, "nullable": true, "type": "object" }, "DefaultFromRule": { "properties": { "field": { "description": "The default of this field is taken from another field, with optional factor. The specified field must belong to the same workload section (compute, security, etc). For itemized field, the value of the field will be taken from the same instance.", "type": "string", "nullable": true, "pattern": ".*" }, "factor": { "description": "Multiple the value of the fromField by this factor to get the value for this field For example, if factor is 2 and defaultFrom field has value of 8, the calculated default will be determined to be 16.", "type": "number", "format": "double", "nullable": true, "default": 1 } }, "nullable": true, "type": "object" }, "IntegerRules": { "properties": { "sourceOfRule": { "$ref": "#/components/schemas/SourceOfRule" }, "required": { "description": "Whether the field is mandatory. default to false.", "type": "boolean", "nullable": true }, "canEdit": { "description": "Whether the value of the field is editable. default to true", "type": "boolean", "nullable": true }, "min": { "description": "The minimum value that the field can be assigned to.", "type": "integer", "format": "int32", "nullable": true }, "max": { "description": "The maximum value that the field can be assigned to.", "type": "integer", "format": "int32", "nullable": true }, "step": { "description": "The minimal difference between two values the field can be assigned to. For example, min=2, max=10, step=2 implies that the values the field can hold are 2, 4, 6, 8 and 10.", "type": "integer", "format": "int32", "nullable": true }, "defaultFrom": { "$ref": "#/components/schemas/DefaultFromRule" } }, "nullable": true, "type": "object" }, "ImagePullSecretsRulesAttributes": { "description": "Rules for the attributes of imagePullSecrets", "properties": { "name": { "$ref": "#/components/schemas/StringRules" }, "userCredentials": { "$ref": "#/components/schemas/BooleanRules" } }, "nullable": true, "type": "object" }, "ImagePullSecretsRules": { "properties": { "attributes": { "$ref": "#/components/schemas/ImagePullSecretsRulesAttributes" }, "instances": { "$ref": "#/components/schemas/ItemRules" } }, "nullable": true, "type": "object" }, "ArbitraryRules": { "properties": { "sourceOfRule": { "$ref": "#/components/schemas/SourceOfRule" }, "required": { "description": "Whether this arbitrary object is mandatory. default to false.", "type": "boolean", "nullable": true }, "canEdit": { "description": "Whether the value of the field, as a whole, is editable. default to false.", "type": "boolean", "nullable": true } }, "nullable": true, "type": "object" }, "ArrayRules": { "properties": { "sourceOfRule": { "$ref": "#/components/schemas/SourceOfRule" }, "required": { "description": "Whether this array is mandatory. Mandatory array must include at least one item. default to false.", "type": "boolean", "nullable": true }, "options": { "description": "Set of options that the value of each item of the array must be chosen from.", "type": "array", "items": { "$ref": "#/components/schemas/StringOption" } }, "canEdit": { "description": "Whether the value of the array, as a whole, is editable. default to false.", "type": "boolean", "nullable": true } }, "nullable": true, "type": "object" }, "PodAffinityTypeOptions": { "properties": { "options": { "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/PodAffinityType" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "type": "object" }, "PodAffinityTypeRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/PodAffinityTypeOptions" } ], "nullable": true, "type": "object" }, "PodAffinityRules": { "properties": { "type": { "$ref": "#/components/schemas/PodAffinityTypeRules" }, "key": { "$ref": "#/components/schemas/StringRules" } }, "nullable": true, "type": "object" }, "PreemptibilityOptions": { "properties": { "options": { "description": "Limit the permitted values for preemptibility to a given set of values.", "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/Preemptibility" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "PreemptibilityRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/PreemptibilityOptions" } ], "nullable": true, "type": "object" }, "RestartPolicyOptions": { "properties": { "options": { "description": "Limit the permitted values for restartPolicy to a given set of values.", "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/RestartPolicy" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "RestartPolicyRule": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/RestartPolicyOptions" } ], "nullable": true, "type": "object" }, "IntegerRulesOptional": { "properties": { "sourceOfRule": { "$ref": "#/components/schemas/SourceOfRule" }, "canEdit": { "description": "Whether the value of the field is editable. default to true", "type": "boolean", "nullable": true }, "min": { "description": "The minimum value that the field can be assigned to.", "type": "integer", "format": "int32", "nullable": true }, "max": { "description": "The maximum value that the field can be assigned to.", "type": "integer", "format": "int32", "nullable": true }, "step": { "description": "The minimal difference between two values the field can be assigned to. For example, min=2, max=10, step=2 implies that the values the field can hold are 2, 4, 6, 8 and 10.", "type": "integer", "format": "int32", "nullable": true }, "defaultFrom": { "$ref": "#/components/schemas/DefaultFromRule" } }, "nullable": true, "type": "object" }, "TolerationOperatorOptions": { "properties": { "options": { "description": "Limit the permitted values for imagePullPolicy to a given set of values.", "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/TolerationOperator" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "TolerationOperatorRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/TolerationOperatorOptions" } ], "nullable": true, "type": "object" }, "TolerationEffectOptions": { "properties": { "options": { "description": "Limit the permitted values for imagePullPolicy to a given set of values.", "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/TolerationEffect" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "TolerationEffectRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/TolerationEffectOptions" } ], "nullable": true, "type": "object" }, "TolerationRules": { "description": "Toleration details.", "properties": { "operator": { "$ref": "#/components/schemas/TolerationOperatorRules" }, "key": { "$ref": "#/components/schemas/StringRules" }, "value": { "$ref": "#/components/schemas/StringRules" }, "effect": { "$ref": "#/components/schemas/TolerationEffectRules" }, "seconds": { "$ref": "#/components/schemas/IntegerRules" }, "exclude": { "$ref": "#/components/schemas/BooleanRules" } }, "nullable": true, "type": "object" }, "TolerationsRules": { "properties": { "attributes": { "$ref": "#/components/schemas/TolerationRules" }, "instances": { "$ref": "#/components/schemas/ItemRules" } }, "nullable": true, "type": "object" }, "NumberRules": { "properties": { "sourceOfRule": { "$ref": "#/components/schemas/SourceOfRule" }, "required": { "description": "Whether the field is mandatory. default to false.", "type": "boolean", "nullable": true }, "canEdit": { "description": "Whether the value of the field is editable. default to true", "type": "boolean", "nullable": true }, "min": { "description": "The minimum value that the field can be assigned to.", "type": "number", "nullable": true }, "max": { "description": "The maximum value that the field can be assigned to.", "type": "number", "nullable": true }, "step": { "description": "The minimal difference between two values the field can be assigned to. For example, min=2, max=3, step=0.25 implies that the values the field can hold are 2, 2.25, 2.5 and 3.", "type": "number", "nullable": true }, "defaultFrom": { "$ref": "#/components/schemas/DefaultFromRule" } }, "nullable": true, "type": "object" }, "AutoScalingMetricOptions": { "properties": { "options": { "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/AutoScalingMetric" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "AutoScalingMetricRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/AutoScalingMetricOptions" } ], "nullable": true, "type": "object" }, "AutoScalingRules": { "properties": { "metricThresholdPercentage": { "$ref": "#/components/schemas/NumberRules" }, "minReplicas": { "$ref": "#/components/schemas/IntegerRules" }, "maxReplicas": { "$ref": "#/components/schemas/IntegerRules" }, "initialReplicas": { "$ref": "#/components/schemas/IntegerRules" }, "activationReplicas": { "$ref": "#/components/schemas/IntegerRules" }, "metric": { "$ref": "#/components/schemas/AutoScalingMetricRules" }, "metricThreshold": { "$ref": "#/components/schemas/IntegerRules" }, "concurrencyHardLimit": { "$ref": "#/components/schemas/IntegerRules" }, "scaleToZeroRetentionSeconds": { "$ref": "#/components/schemas/IntegerRules" }, "scaleDownDelaySeconds": { "$ref": "#/components/schemas/IntegerRules" }, "initializationTimeoutSeconds": { "allOf": [ { "$ref": "#/components/schemas/IntegerRules" } ], "deprecated": true } }, "nullable": true, "type": "object" }, "ServingConfigurationRules": { "properties": { "initializationTimeoutSeconds": { "$ref": "#/components/schemas/IntegerRules" }, "requestTimeoutSeconds": { "$ref": "#/components/schemas/IntegerRules" } }, "nullable": true, "type": "object" }, "InferenceFieldsRules": { "properties": { "autoscaling": { "$ref": "#/components/schemas/AutoScalingRules" }, "servingConfiguration": { "$ref": "#/components/schemas/ServingConfigurationRules" } }, "nullable": true, "type": "object" }, "SpecificRunParamsRules": { "allOf": [ { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/InstancesRules" }, "args": { "$ref": "#/components/schemas/StringRules" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/IntegerRules" }, "backoffLimit": { "$ref": "#/components/schemas/IntegerRules" }, "category": { "$ref": "#/components/schemas/StringRules" }, "command": { "$ref": "#/components/schemas/StringRules" }, "completions": { "$ref": "#/components/schemas/IntegerRules" }, "environmentVariables": { "$ref": "#/components/schemas/InstancesRules" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecretsRules" }, "labels": { "$ref": "#/components/schemas/InstancesRules" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/ArbitraryRules" }, "nodePools": { "$ref": "#/components/schemas/ArrayRules" }, "nodeType": { "$ref": "#/components/schemas/StringRules" }, "parallelism": { "$ref": "#/components/schemas/IntegerRules" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinityRules" }, "preemptibility": { "$ref": "#/components/schemas/PreemptibilityRules" }, "priorityClass": { "$ref": "#/components/schemas/StringRules" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicyRule" }, "runAsGid": { "$ref": "#/components/schemas/IntegerRulesOptional" }, "runAsUid": { "$ref": "#/components/schemas/IntegerRulesOptional" }, "supplementalGroups": { "$ref": "#/components/schemas/StringRules" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/BooleanRules" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/IntegerRules" }, "tolerations": { "$ref": "#/components/schemas/TolerationsRules" } }, "type": "object" }, { "$ref": "#/components/schemas/InferenceFieldsRules" } ], "description": "Rules which apply to specific workload.", "nullable": true, "type": "object" }, "WorkloadCreationMeta": { "required": [ "name", "projectId", "clusterId" ], "properties": { "name": { "$ref": "#/components/schemas/WorkloadName" }, "useGivenNameAsPrefix": { "description": "When true, the requested name will be treated as a prefix. The final name of the workload will be composed of the name followed by a random set of characters.", "type": "boolean", "example": true, "default": false }, "projectId": { "$ref": "#/components/schemas/ProjectId" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" } } }, "TrainingSpecificRunParams": { "allOf": [ { "$ref": "#/components/schemas/SpecificRunConnections" }, { "$ref": "#/components/schemas/AllowOverQuota" }, { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemption" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimit" }, "category": { "$ref": "#/components/schemas/Category" }, "command": { "$ref": "#/components/schemas/Command" }, "completions": { "$ref": "#/components/schemas/Completions" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariablesOfAsset" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecrets" }, "labels": { "$ref": "#/components/schemas/Labels" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType1" }, "parallelism": { "$ref": "#/components/schemas/Parallelism" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicy" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriod" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" } }, "type": "object" } ], "nullable": true, "type": "object" }, "OptionalAssetIds": { "allOf": [ { "$ref": "#/components/schemas/AssetsIds" } ], "nullable": true, "type": "object" }, "InferenceSpecificRunParams": { "allOf": [ { "$ref": "#/components/schemas/SpecificRunConnections" }, { "$ref": "#/components/schemas/SpecificRunAutoScaling" }, { "$ref": "#/components/schemas/SpecificRunServingPortAccess" }, { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemption" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimit" }, "category": { "$ref": "#/components/schemas/Category" }, "command": { "$ref": "#/components/schemas/Command" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariablesOfAsset" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecrets" }, "labels": { "$ref": "#/components/schemas/Labels" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType1" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicy" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriod" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" } }, "type": "object" } ], "nullable": true, "type": "object" }, "ConfigMapAsset": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/ConfigMapAssetSpec" }, "usedBy": { "$ref": "#/components/schemas/AssetUsageInfo" }, "usageTimes": { "$ref": "#/components/schemas/UsageTimesInfo" }, "compliance": { "$ref": "#/components/schemas/ComplianceInfo" }, "status": { "$ref": "#/components/schemas/AssetClusterStatusInfo" } } }, "ConfigMapListResponse": { "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/ConfigMapAsset" } } } }, "ConfigMapCreationRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetCreationRequest" }, "spec": { "$ref": "#/components/schemas/ConfigMapAssetSpec" } } }, "ConfigMapUpdateRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetUpdateRequest" } } }, "SecretAsset": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetMeta" }, "spec": { "$ref": "#/components/schemas/SecretAssetSpec" }, "usedBy": { "$ref": "#/components/schemas/AssetUsageInfo" }, "usageTimes": { "$ref": "#/components/schemas/UsageTimesInfo" }, "compliance": { "$ref": "#/components/schemas/ComplianceInfo" }, "status": { "$ref": "#/components/schemas/AssetClusterStatusInfo" } } }, "SecretAssetListResponse": { "required": [ "entries" ], "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/SecretAsset" } } } }, "SecretAssetCreationRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetCreationRequest" }, "spec": { "$ref": "#/components/schemas/SecretAssetSpec" } } }, "SecretAssetUpdateRequest": { "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/AssetUpdateRequest" } } }, "WorkloadType": { "description": "the type of workload", "type": "string", "enum": [ "Workspace", "Training", "Distributed", "Inference", "DistributedInference" ] }, "EnvironmentVariableSecret": { "description": "Details of the secret and key use to populate the environment variable", "properties": { "name": { "description": "The name of the secret resource. (mandatory)", "type": "string", "minLength": 1, "example": "postgress_secret", "nullable": true, "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?$" }, "key": { "description": "The key in the secret resource. (mandatory)", "type": "string", "minLength": 1, "example": "POSTGRES_PASSWORD", "nullable": true, "pattern": ".*" } }, "nullable": true, "type": "object" }, "EnvironmentVariableUserCredential": { "description": "Defines a reference to a user-created credential and a specific key within that credential whose value will populate the environment variable. User credentials can only be accessed by the user who created them.", "properties": { "name": { "description": "The name of the user credential. (mandatory)", "type": "string", "minLength": 1, "example": "my_postgres_user_and_password", "nullable": true }, "key": { "description": "The key in the user credential resource. (mandatory)", "type": "string", "minLength": 1, "example": "POSTGRES_PASSWORD", "nullable": true } }, "nullable": true, "type": "object" }, "EnvironmentVariable": { "description": "Details of an environment variable which is populated into the container.", "properties": { "name": { "description": "The name of the environment variable. (mandatory)", "type": "string", "minLength": 1, "example": "HOME", "nullable": true, "pattern": ".*" }, "value": { "description": "The value of the environment variable. (mutually exclusive with secret, userCredential, configMap and podFieldRef)", "type": "string", "example": "/home/my-folder", "nullable": true, "pattern": ".*" }, "secret": { "$ref": "#/components/schemas/EnvironmentVariableSecret" }, "configMap": { "$ref": "#/components/schemas/EnvironmentVariableConfigMap" }, "podFieldRef": { "$ref": "#/components/schemas/EnvironmentVariablePodFieldReference" }, "userCredential": { "$ref": "#/components/schemas/EnvironmentVariableUserCredential" }, "exclude": { "description": "Use 'true' in case the environment variable is defined in defaults of the policy, and you wish to exclude it from the workload.", "type": "boolean", "example": false, "nullable": true }, "description": { "description": "Description of the environment variable.", "type": "string", "example": "Home directory of the user.", "nullable": true, "pattern": ".*" } }, "nullable": true, "type": "object" }, "EnvironmentVariables": { "description": "Set of environment variables to populate into the container running the workload.", "type": "array", "items": { "$ref": "#/components/schemas/EnvironmentVariable" }, "nullable": true }, "StorageInstanceName": { "properties": { "name": { "description": "unique name to identify the instance. primarily used for policy locked rules.", "type": "string", "minLength": 1, "example": "storage-instance-a", "nullable": true } }, "nullable": true, "type": "object" }, "ExcludeField": { "properties": { "exclude": { "description": "Use 'true' in case the item is defined in defaults of the policy, and you wish to exclude it from the workload.", "type": "boolean", "default": false, "example": false, "nullable": true } }, "type": "object", "nullable": true }, "ConfigMapInstance": { "allOf": [ { "$ref": "#/components/schemas/StorageInstanceName" }, { "$ref": "#/components/schemas/ConfigMap" }, { "$ref": "#/components/schemas/ExcludeField" } ], "nullable": true, "type": "object" }, "ConfigMapItems": { "description": "Set of config map volumes to use in the workload", "type": "array", "items": { "$ref": "#/components/schemas/ConfigMapInstance" }, "nullable": true }, "EmptyDir": { "properties": { "path": { "description": "Local path within the workload to which the EmptyDir volume will be mapped. (mandatory)", "type": "string", "minLength": 1, "example": "/mnt/emptydir", "nullable": true, "pattern": ".*" }, "medium": { "description": "The type of storage medium for the volume. Use \"Memory\" for memory-backed storage, or leave empty for disk-backed storage.", "type": "string", "minLength": 1, "nullable": true, "pattern": ".*" }, "sizeLimit": { "description": "The total amount of local storage or memory required for the emptyDir volume. Specify using Kubernetes quantity format (e.g., 1G, 500Mi).", "type": "string", "pattern": "^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$", "example": "1G", "nullable": true } }, "nullable": true, "type": "object" }, "EmptyDirInstance": { "allOf": [ { "$ref": "#/components/schemas/StorageInstanceName" }, { "$ref": "#/components/schemas/EmptyDir" }, { "$ref": "#/components/schemas/ExcludeField" } ], "nullable": true, "type": "object" }, "EmptyDirItems": { "description": "A list of emptyDir volumes to mount in the workload.", "type": "array", "items": { "$ref": "#/components/schemas/EmptyDirInstance" }, "nullable": true }, "PvcInstance": { "allOf": [ { "$ref": "#/components/schemas/StorageInstanceName" }, { "$ref": "#/components/schemas/Pvc" }, { "$ref": "#/components/schemas/ExcludeField" } ], "nullable": true, "type": "object" }, "PvcItems": { "description": "Set of pvc persistent volume claims to use in the workload.", "type": "array", "items": { "$ref": "#/components/schemas/PvcInstance" }, "nullable": true }, "SecretInstance": { "allOf": [ { "$ref": "#/components/schemas/StorageInstanceName" }, { "$ref": "#/components/schemas/Secret2" }, { "$ref": "#/components/schemas/ExcludeField" } ], "nullable": true, "type": "object" }, "DistributedInferenceLeaderSpecFields": { "properties": { "leader": { "description": "Defines the pod specification for the leader. Must always be provided, regardless of the number of workers.", "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceLeaderWorkerSpec1" } ], "nullable": true, "type": "object" } } }, "DistributedInferenceWorkerSpecFields": { "properties": { "worker": { "description": "Defines the pod specification for the workers. Required only if the number of workers is greater than 0.", "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceLeaderWorkerSpec1" } ], "nullable": true, "type": "object" } } }, "DistributedInferenceRestartPolicy": { "description": "Determines the behavior when a pod fails.\n- `RecreateGroupOnPodRestart`: Restarts all pods in the group if any pod fails.\n- `None`: No automatic restart behavior is applied.\n", "type": "string", "enum": [ "RecreateGroupOnPodRestart", "None" ], "nullable": true, "default": "RecreateGroupOnPodRestart" }, "DistributedInferenceServingPortProtocol": { "description": "The protocol used to access the port.", "type": "string", "enum": [ "http" ], "nullable": true, "default": "http" }, "DistributedInferenceServingPortContainerAndProtocol": { "properties": { "port": { "description": "The port exposed by the container running the distributed inference service.", "type": "integer", "format": "int32", "minimum": 1, "maximum": 65535, "example": 8080, "nullable": true }, "protocol": { "$ref": "#/components/schemas/DistributedInferenceServingPortProtocol" } } }, "DistributedInferenceServingPortAccessAuthorizationTypeEnum": { "type": "string", "description": "Specifies who can send inference requests to the serving endpoint:\n\nPossible values:\n- `public`: No authorization is required. (Default)\n- `authenticatedUsers`: Any NVIDIA Run:ai authenticated user and service account can send requests.\n- `authorizedUsers`: Only users listed in the authorizedUsers field can send requests.\n- `authorizedGroups`: Only members of user groups listed in the authorizedGroups field can send requests.\n", "enum": [ "public", "authenticatedUsers", "authorizedUsers", "authorizedGroups" ], "nullable": true }, "DistributedInferenceServingPortAccess": { "properties": { "authorizationType": { "$ref": "#/components/schemas/DistributedInferenceServingPortAccessAuthorizationTypeEnum" }, "authorizedUsers": { "description": "A list of users and service accounts allowed to send inference requests to the serving endpoint. `Note:` Cannot be used together with authorizedGroups.", "type": "array", "items": { "type": "string", "pattern": ".*" }, "example": [ "user.a@example.com", "user.b@example.com" ], "nullable": true }, "authorizedGroups": { "description": "A list of user groups allowed to send inference requests to the serving endpoint. `Note:` Cannot be used together with authorizedUsers.", "type": "array", "items": { "type": "string", "pattern": ".*" }, "example": [ "group-a", "group-b" ], "nullable": true }, "exposeExternally": { "description": "Indicates whether the inference serving endpoint should be accessible outside the cluster. If set to true, the endpoint will be exposed externally. To enable external access, your administrator must configure the cluster as described in the [inference requirements](https://run-ai-docs.nvidia.com/saas/getting-started/installation/system-requirements#inference). section.", "type": "boolean", "nullable": true, "default": true }, "exposedUrl": { "description": "The custom URL to use for the serving port. If empty (default), an autogenerated URL will be used.", "type": "string", "nullable": true, "pattern": ".*" } } }, "DistributedInferenceServingPort": { "description": "Defines the configuration for the inference serving endpoint. This determines how applications or services can send inference requests to the workload.", "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceServingPortContainerAndProtocol" }, { "$ref": "#/components/schemas/DistributedInferenceServingPortAccess" } ], "nullable": true, "type": "object" }, "DistributedInferenceStartupPolicy": { "description": "Determines when the worker pods should start during workload initialization. \n - `LeaderCreated`: Workers start after the leader pod is created.\n - `LeaderReady`: Workers start only after the leader pod is ready.\n", "type": "string", "enum": [ "LeaderCreated", "LeaderReady" ], "nullable": true, "default": "LeaderCreated" }, "DistributedInferenceStartupPolicyField": { "properties": { "startupPolicy": { "$ref": "#/components/schemas/DistributedInferenceStartupPolicy" } }, "nullable": true, "type": "object" }, "DistributedInferenceWorkersField": { "properties": { "workers": { "default": 0, "description": "Specifies the number of worker nodes to run. If set to 0, only the leader node will run, and no worker pods will be created. In this case, worker spec is not required.", "type": "integer", "format": "int32", "minimum": 0, "maximum": 1000, "example": 4, "nullable": true } } }, "DistributedInferenceReplicasField": { "properties": { "replicas": { "default": 1, "description": "Specifies the number of leader-worker sets to deploy. Each replica represents a group consisting of one leader pod and multiple worker pods. \nFor example, setting replicas: 3 will create 3 independent groups, each with its own leader and corresponding set of workers.\n", "type": "integer", "format": "int32", "minimum": 0, "maximum": 1000, "example": 2, "nullable": true } } }, "DistributedInferenceCommonSpec": { "allOf": [ { "nullable": true, "properties": { "category": { "$ref": "#/components/schemas/Category" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "restartPolicy": { "$ref": "#/components/schemas/DistributedInferenceRestartPolicy" }, "servingPort": { "$ref": "#/components/schemas/DistributedInferenceServingPort" } }, "type": "object" }, { "$ref": "#/components/schemas/DistributedInferenceStartupPolicyField" }, { "$ref": "#/components/schemas/DistributedInferenceWorkersField" }, { "$ref": "#/components/schemas/DistributedInferenceReplicasField" } ], "nullable": true, "type": "object" }, "AutoScalingMetricField": { "properties": { "metric": { "$ref": "#/components/schemas/AutoScalingMetric" } } }, "MetricThresholdField": { "properties": { "metricThreshold": { "description": "The threshold to use with the specified metric for autoscaling. Mandatory if metric is specified", "type": "integer", "format": "int32", "nullable": true } } }, "AutoScalingMetricFields": { "allOf": [ { "$ref": "#/components/schemas/AutoScalingMetricField" }, { "$ref": "#/components/schemas/MetricThresholdField" } ], "nullable": true, "type": "object" }, "AutoScaling": { "allOf": [ { "$ref": "#/components/schemas/AutoScalingCommonFields" }, { "$ref": "#/components/schemas/AutoScalingMetricFields" } ], "nullable": true, "type": "object" }, "AutoScalingField": { "properties": { "autoscaling": { "$ref": "#/components/schemas/AutoScaling" } } }, "ServingConfiguration": { "description": "The inference workload serving configuration.", "properties": { "initializationTimeoutSeconds": { "description": "The maximum time (in seconds) allowed for a workload to initialize and become ready. If the workload does not start within this time, it will be moved to failed state.", "type": "integer", "format": "int32", "minimum": 1, "nullable": true }, "requestTimeoutSeconds": { "description": "The maximum time (in seconds) allowed to process an end-user request. If no response is returned within this time, the request will be ignored.Supported from Cluster version 2.22", "type": "integer", "format": "int32", "minimum": 1, "nullable": true } }, "nullable": true, "type": "object" }, "ServingConfigurationField": { "properties": { "servingConfiguration": { "$ref": "#/components/schemas/ServingConfiguration" } } }, "InferenceFields": { "allOf": [ { "$ref": "#/components/schemas/AutoScalingField" }, { "$ref": "#/components/schemas/ServingConfigurationField" } ], "nullable": true, "type": "object" }, "CleanPodPolicy": { "description": "The policy describes how to deal with pods when the job is finished.", "type": "string", "enum": [ "None", "All", "Running" ], "nullable": true }, "AuthorizationType": { "type": "string", "enum": [ "authenticatedUsers", "authorizedUsers", "authorizedGroups" ], "description": "Specifies who can access the connection URL:\n- `authenticatedUsers`: Any authenticated user or service account can access the URL; the authorizedUsers and authorizedGroups fields are ignored.\n- `authorizedUsers`: Only users listed in the authorizedUsers field are allowed to access the URL; the authorizedGroups field is ignored.\n- `authorizedGroups`: Only members of user groups listed in the authorizedGroups field are allowed to access the URL; the authorizedUsers field is ignored.\nIf not specified, authorization is determined by whether authorizedUsers or authorizedGroups is present. If both fields are set, this results in an error. If neither is set, any authenticatedUser can access.\n", "nullable": true }, "ExposedUrl": { "description": "A URL for accessing the workload.", "properties": { "container": { "description": "The port that the container running the workload exposes. (mandatory)", "type": "integer", "format": "int32", "example": 8080, "nullable": true }, "url": { "description": "The URL for connecting to the container port. If not specified, the URL will be auto-generated by the system..", "type": "string", "pattern": ".*", "example": "https://my-url.com", "nullable": true }, "authorizationType": { "$ref": "#/components/schemas/AuthorizationType" }, "authorizedUsers": { "description": "List of users or service accounts that are allowed to access the URL. Note that authorizedUsers and authorizedGroups are mutually exclusive.", "type": "array", "items": { "type": "string", "pattern": ".*" }, "example": [ "user-a", "user-b" ], "nullable": true }, "authorizedGroups": { "description": "List of groups that are allowed to access the URL. Note that authorizedUsers and authorizedGroups are mutually exclusive.", "type": "array", "items": { "type": "string", "pattern": ".*" }, "example": [ "group-a", "group-b" ], "nullable": true }, "toolType": { "description": "The tool type that runs on this container port.", "type": "string", "example": "jupyter", "nullable": true, "pattern": ".*" }, "toolName": { "description": "A name describing the tool that runs on this url.", "type": "string", "example": "my-pytorch", "nullable": true, "pattern": ".*" }, "name": { "description": "Unique name to identify the instance. primarily used for policy locked rules.", "type": "string", "minLength": 1, "example": "url-instance-a", "nullable": true, "pattern": ".*" }, "exclude": { "description": "Use 'true' in case the instance is defined in defaults of the policy, and you wish to exclude it from the workload.", "type": "boolean", "example": false, "nullable": true } }, "nullable": true, "type": "object" }, "ExposedUrls": { "description": "Set of container ports that the workload exposes via URLs.", "type": "array", "items": { "$ref": "#/components/schemas/ExposedUrl" }, "nullable": true }, "MaxReplicas": { "description": "the upper limit for the number of worker pods that can be set by the autoscaler. Cannot be smaller than MinReplicas. (applicable only for PyTorch)", "type": "integer", "nullable": true }, "MinReplicas": { "description": "the lower limit for the number of worker pods to which the training job can scale down. (applicable only for PyTorch)", "type": "integer", "nullable": true }, "MpiLauncherCreationPolicy": { "description": "Define whether the MPI Launcher is created in parallel with the workers, or if its creation is postponed until all workers are in Ready state. This prevents failures when the launcher attempts to connect to workers that are not yet ready.", "type": "string", "enum": [ "AtStartup", "WaitForWorkersReady" ], "nullable": true }, "NumWorkers": { "description": "the number of workers that will be allocated for running the workload.", "type": "integer", "minimum": 1, "nullable": true }, "PortServiceType": { "description": "The service type of the port (mandatory).", "type": "string", "enum": [ "LoadBalancer", "NodePort", "ClusterIP" ], "nullable": true }, "Port": { "description": "A port for accessing the workload.", "properties": { "container": { "description": "The port that the container running the workload exposes. (mandatory)", "type": "integer", "format": "int32", "minimum": 1, "maximum": 65535, "example": 8080, "nullable": true }, "serviceType": { "$ref": "#/components/schemas/PortServiceType" }, "external": { "description": "The external port which allows a connection to the container port. If not specified, the port will be auto-generated by the system..", "type": "integer", "format": "int32", "nullable": true, "example": 30080 }, "toolType": { "description": "The tool type that runs on this port.", "type": "string", "example": "pytorch", "nullable": true, "pattern": ".*" }, "toolName": { "description": "A name describing the tool that runs on this port.", "type": "string", "example": "my-pytorch", "nullable": true, "pattern": ".*" }, "name": { "description": "Unique name to identify the instance. primarily used for policy locked rules.", "type": "string", "minLength": 1, "example": "port-instance-a", "nullable": true, "pattern": ".*" }, "exclude": { "description": "Use 'true' in case the item is defined in defaults of the policy, and you wish to exclude it from the workload.", "type": "boolean", "default": false, "example": false, "nullable": true } }, "nullable": true, "type": "object" }, "Ports": { "description": "Set of container ports that the workload exposes.", "type": "array", "items": { "$ref": "#/components/schemas/Port" }, "nullable": true }, "RelatedUrl": { "description": "A URL that is related to the workload. For example, a URL to an external server providing statistics or logging about the workload.", "properties": { "url": { "description": "The URL for connecting an external service related to the workload. (mandatory)", "type": "string", "example": "https://my-url.com", "nullable": true, "pattern": ".*" }, "type": { "description": "The type of service that the url provides. For example, wandb (Weights & Biases). (mandatory)", "type": "string", "example": "wandb", "nullable": true, "pattern": ".*" }, "name": { "description": "Unique name to identify the instance. primarily used for policy locked rules.", "type": "string", "example": "url-instance-a", "nullable": true, "pattern": ".*" }, "exclude": { "description": "Use 'true' in case the item is defined in defaults of the policy, and you wish to exclude it from the workload.", "type": "boolean", "default": false, "example": false, "nullable": true } }, "nullable": true, "type": "object" }, "RelatedUrls": { "description": "Set of URLs that are related to the workload.", "type": "array", "items": { "$ref": "#/components/schemas/RelatedUrl" }, "nullable": true }, "SupersetRestartPolicy": { "type": "string", "nullable": true, "minLength": 1, "pattern": ".*" }, "SupersetServingPort": { "properties": { "port": { "type": "integer", "format": "int32", "nullable": true }, "container": { "type": "integer", "format": "int32", "nullable": true }, "protocol": { "type": "string", "nullable": true, "pattern": ".*" }, "authorizationType": { "type": "string", "nullable": true, "pattern": ".*" }, "authorizedUsers": { "type": "array", "items": { "type": "string", "pattern": ".*" }, "nullable": true }, "authorizedGroups": { "type": "array", "items": { "type": "string", "pattern": ".*" }, "nullable": true }, "clusterLocalAccessOnly": { "type": "boolean", "nullable": true }, "exposeExternally": { "type": "boolean", "nullable": true }, "exposedUrl": { "type": "string", "nullable": true, "pattern": ".*" } }, "type": "object", "nullable": true }, "SlotsPerWorker": { "description": "Specifies the number of slots per worker used in hostfile. Defaults to 1. (applicable only for MPI)", "type": "integer", "minimum": 1, "nullable": true, "default": 1 }, "SshAuthMountPath": { "description": "Specifies the directory where SSH keys are mounted. (applicable only for MPI)", "type": "string", "nullable": true, "default": "/root/.ssh", "pattern": ".*" }, "DataVolumeInstance": { "allOf": [ { "$ref": "#/components/schemas/DataVolume" }, { "$ref": "#/components/schemas/ExcludeField" } ], "nullable": true, "type": "object" }, "DataVolumeItems": { "description": "Set of data volumes to use in the workload.", "type": "array", "items": { "$ref": "#/components/schemas/DataVolumeInstance" }, "nullable": true }, "GitPassword": { "properties": { "passwordSecret": { "description": "Secret containing the credentials of the repository (needed for non public repository which requires authentication). (deprecated)", "type": "string", "minLength": 1, "example": "my-password-secret", "nullable": true }, "secretKeyOfUser": { "description": "The key to use for loading the user name from the secret. The default is `User`. (deprecated)", "type": "string", "minLength": 1, "example": "User", "nullable": true }, "secretKeyOfPassword": { "description": "The key to use for loading the password from the secret. The default is `Password`. (deprecated)", "type": "string", "minLength": 1, "example": "Password", "nullable": true } }, "nullable": true, "type": "object" }, "GitAuthenticationMethod": { "description": "Specifies the authentication method to use when accessing the Git repository. This is required for private repositories - `password` - Authenticate using a username and password. - `ssh-key` - Authenticate using an SSH private key.", "type": "string", "minLength": 1, "example": "password", "enum": [ "password", "ssh-key" ] }, "GitSecretRef": { "properties": { "name": { "description": "Name of the Secret containing the credentials of the repository.", "type": "string", "minLength": 1, "example": "my-password-secret" }, "authenticationMethod": { "$ref": "#/components/schemas/GitAuthenticationMethod" }, "secretKeyOfUser": { "description": "The key in the Secret that contains the Git username (used for `password` authentication).", "type": "string", "minLength": 1, "example": "User", "nullable": true }, "secretKeyOfPassword": { "description": "The key in the Secret that contains the Git password (used for `password` authentication).", "type": "string", "minLength": 1, "example": "Password", "nullable": true } }, "nullable": true, "type": "object" }, "GitInstance": { "allOf": [ { "$ref": "#/components/schemas/StorageInstanceName" }, { "$ref": "#/components/schemas/GitCommon" }, { "$ref": "#/components/schemas/GitPassword" }, { "$ref": "#/components/schemas/ExcludeField" }, { "type": "object", "properties": { "secretRef": { "$ref": "#/components/schemas/GitSecretRef" } }, "nullable": true } ], "nullable": true, "type": "object" }, "GitItems": { "description": "Set of git repositories to use in the workload.", "type": "array", "items": { "$ref": "#/components/schemas/GitInstance" }, "nullable": true }, "HostPathInstance": { "allOf": [ { "$ref": "#/components/schemas/StorageInstanceName" }, { "$ref": "#/components/schemas/HostPath" }, { "$ref": "#/components/schemas/ExcludeField" } ], "nullable": true, "type": "object" }, "HostPathItems": { "description": "Set of host paths to use in the workload.", "type": "array", "items": { "$ref": "#/components/schemas/HostPathInstance" }, "nullable": true }, "NfsInstance": { "allOf": [ { "$ref": "#/components/schemas/StorageInstanceName" }, { "$ref": "#/components/schemas/Nfs" }, { "$ref": "#/components/schemas/ExcludeField" } ], "nullable": true, "type": "object" }, "NfsItems": { "description": "Set of nfs volumes to use in the workload.", "type": "array", "items": { "$ref": "#/components/schemas/NfsInstance" }, "nullable": true }, "S3AccessKey": { "properties": { "accessKeySecret": { "description": "Name of the secret containing credentials of the S3 bucket. Used for private S3 buckets.", "type": "string", "minLength": 1, "example": "my-access-key-secret", "nullable": true, "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?$" }, "secretKeyOfAccessKeyId": { "description": "The key to use for loading the access key id from the secret. The default is `AccessKeyId`. For more information, see [Credentials access keys](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html).", "type": "string", "minLength": 1, "example": "AccessKeyId", "nullable": true, "pattern": ".*" }, "secretKeyOfSecretKey": { "description": "The key to use for loading the secret key from the secret. The default is `SecretKey`. For more information, see [Credentials access keys](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html).", "type": "string", "minLength": 1, "example": "SecretKey", "nullable": true, "pattern": ".*" } }, "nullable": true, "type": "object" }, "S3Instance": { "allOf": [ { "$ref": "#/components/schemas/StorageInstanceName" }, { "$ref": "#/components/schemas/S3Common" }, { "$ref": "#/components/schemas/S3AccessKey" }, { "$ref": "#/components/schemas/ExcludeField" } ], "nullable": true, "type": "object" }, "S3Items": { "description": "Set of s3 buckets to use in the workload.", "type": "array", "items": { "$ref": "#/components/schemas/S3Instance" }, "nullable": true }, "SupersetSpec": { "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceLeaderSpecFields" }, { "$ref": "#/components/schemas/DistributedInferenceWorkerSpecFields" }, { "$ref": "#/components/schemas/DistributedInferenceCommonSpec" }, { "$ref": "#/components/schemas/InferenceFields" }, { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemption" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimit" }, "category": { "$ref": "#/components/schemas/Category" }, "cleanPodPolicy": { "$ref": "#/components/schemas/CleanPodPolicy" }, "command": { "$ref": "#/components/schemas/Command" }, "completions": { "$ref": "#/components/schemas/Completions" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResources" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "distributedFramework": { "$ref": "#/components/schemas/DistributedFramework" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariables" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrls" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecrets" }, "labels": { "$ref": "#/components/schemas/Labels" }, "maxReplicas": { "$ref": "#/components/schemas/MaxReplicas" }, "minReplicas": { "$ref": "#/components/schemas/MinReplicas" }, "mpiLauncherCreationPolicy": { "$ref": "#/components/schemas/MpiLauncherCreationPolicy" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType3" }, "numWorkers": { "$ref": "#/components/schemas/NumWorkers" }, "parallelism": { "$ref": "#/components/schemas/Parallelism" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "ports": { "$ref": "#/components/schemas/Ports" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrls" }, "restartPolicy": { "$ref": "#/components/schemas/SupersetRestartPolicy" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/AllowPrivilegeEscalation" }, "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "hostIpc": { "$ref": "#/components/schemas/HostIpc" }, "hostNetwork": { "$ref": "#/components/schemas/HostNetwork" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "servingPort": { "$ref": "#/components/schemas/SupersetServingPort" }, "slotsPerWorker": { "$ref": "#/components/schemas/SlotsPerWorker" }, "sshAuthMountPath": { "$ref": "#/components/schemas/SshAuthMountPath" }, "stdin": { "$ref": "#/components/schemas/Stdin" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapItems" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumeItems" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirItems" }, "git": { "$ref": "#/components/schemas/GitItems" }, "hostPath": { "$ref": "#/components/schemas/HostPathItems" }, "nfs": { "$ref": "#/components/schemas/NfsItems" }, "pvc": { "$ref": "#/components/schemas/PvcItems" }, "s3": { "$ref": "#/components/schemas/S3Items" }, "secretVolume": { "$ref": "#/components/schemas/SecretItems1" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriod" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" }, "tty": { "$ref": "#/components/schemas/Tty" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" } ] }, "AutoDeletionTimeAfterPreemptionMaster": { "description": "Specifies the duration after which a finished workload (completed or failed) will be automatically deleted. The default is 30 days. Log retention is managed separately.", "format": "int64", "type": "integer", "example": 15, "nullable": true, "deprecated": true }, "BackoffLimitMaster": { "description": "Specifies the number of retries before marking a workload as failed (not applicable to Inference workloads). The default value is 6.", "format": "int64", "type": "integer", "example": 3, "nullable": true, "deprecated": true }, "PriorityClassMaster": { "description": "Specifies the priority class for the workload, which determines its scheduling behavior. Valid values are: very-low, low, medium-low, medium, medium-high, high, and very-high. Each workload type has a default priority. To view the default priority for each workload type, use the GET /workload-types endpoint. Once you change the priority from the default value defined for that workload type, the preemptibility field is not automatically updated. Make sure to set the desired preemptibility value.", "type": "string", "nullable": true, "pattern": ".*", "deprecated": true }, "TerminationGracePeriodMaster": { "description": "Duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down).", "format": "int64", "type": "integer", "minimum": 0, "example": 20, "nullable": true, "deprecated": true }, "MasterSpec": { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemptionMaster" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimitMaster" }, "category": { "$ref": "#/components/schemas/Category" }, "command": { "$ref": "#/components/schemas/Command" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResources" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariables" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrls" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecrets" }, "labels": { "$ref": "#/components/schemas/Labels" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType3" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "ports": { "$ref": "#/components/schemas/Ports" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClassMaster" }, "probes": { "$ref": "#/components/schemas/Probes" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrls" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicy" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/AllowPrivilegeEscalation" }, "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "hostIpc": { "$ref": "#/components/schemas/HostIpc" }, "hostNetwork": { "$ref": "#/components/schemas/HostNetwork" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "stdin": { "$ref": "#/components/schemas/Stdin" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapItems" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumeItems" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirItems" }, "git": { "$ref": "#/components/schemas/GitItems" }, "hostPath": { "$ref": "#/components/schemas/HostPathItems" }, "nfs": { "$ref": "#/components/schemas/NfsItems" }, "pvc": { "$ref": "#/components/schemas/PvcItems" }, "s3": { "$ref": "#/components/schemas/S3Items" }, "secretVolume": { "$ref": "#/components/schemas/SecretItems1" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriodMaster" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" }, "tty": { "$ref": "#/components/schemas/Tty" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" }, "ServingPortProtocol": { "description": "The protocol used by the port, defaults to http", "type": "string", "enum": [ "http", "grpc" ], "nullable": true }, "supersetRules": { "$ref": "#/components/schemas/SupersetRules" }, "crossTypePolicy": { "$ref": "#/components/schemas/PolicyCrossType" }, "PolicyType": { "description": "The type of policy which determines the kind of workloads it is affecting", "type": "string", "enum": [ "workspace", "training", "distributed", "inference", "distributedInference", "nimService", "fallback" ] }, "PolicyId": { "description": "The unique id of the policy.", "type": "string", "minLength": 1, "format": "uuid" }, "PolicyReadOnlyFields": { "required": [ "id", "createdBy", "createdAt", "updatedBy", "updatedAt" ], "properties": { "id": { "$ref": "#/components/schemas/PolicyId" }, "tenantId": { "$ref": "#/components/schemas/TenantId" }, "clusterId": { "$ref": "#/components/schemas/ClusterIdOptional" }, "createdBy": { "description": "The user who created the policy.", "type": "string", "minLength": 1 }, "createdAt": { "description": "The time at which the policy wes created", "type": "string", "minLength": 1, "format": "date-time" }, "updatedBy": { "description": "The user who updated the policy.", "type": "string", "minLength": 1 }, "updatedAt": { "description": "The time at which the policy has been updated", "type": "string", "minLength": 1, "format": "date-time" } } }, "PolicyName": { "description": "A chosen name for the policy.", "type": "string", "minLength": 1, "example": "my-policy", "pattern": ".*" }, "PolicyCreationFields": { "required": [ "name", "scope" ], "properties": { "scope": { "$ref": "#/components/schemas/ScopeType" }, "projectId": { "$ref": "#/components/schemas/ProjectIdOptional" }, "departmentId": { "$ref": "#/components/schemas/DepartmentIdOptional" }, "clusterId": { "$ref": "#/components/schemas/ClusterIdOptional" }, "name": { "$ref": "#/components/schemas/PolicyName" } } }, "PolicyMeta": { "allOf": [ { "$ref": "#/components/schemas/PolicyReadOnlyFields" }, { "$ref": "#/components/schemas/PolicyCreationFields" } ] }, "PolicySyncStatusOfCluster": { "required": [ "clusterId", "status" ], "properties": { "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "status": { "description": "Policy sync status of the cluster", "type": "string", "enum": [ "Not ready", "Applying", "Failed", "Ready", "Pending deletion", "Deleting", "Deleted", "Deletion failed" ] }, "errorMessage": { "description": "In case sync failed, holds the error message received from the cluster", "type": "string", "nullable": true } }, "type": "object" }, "PolicySyncStatus": { "properties": { "clusters": { "type": "array", "items": { "$ref": "#/components/schemas/PolicySyncStatusOfCluster" } } } }, "PolicyValidationStatus": { "properties": { "validation": { "properties": { "errorMessage": { "pattern": ".*", "type": "string", "description": "In case validation failed, holds the error message explaining the issue" } }, "nullable": true, "type": "object" } }, "nullable": true, "type": "object" }, "PolicyListEntry": { "properties": { "type": { "$ref": "#/components/schemas/PolicyType" }, "meta": { "$ref": "#/components/schemas/PolicyMeta" }, "status": { "allOf": [ { "$ref": "#/components/schemas/PolicySyncStatus" }, { "$ref": "#/components/schemas/PolicyValidationStatus" } ] } }, "nullable": true, "type": "object" }, "PolicyListResponse": { "properties": { "policies": { "type": "array", "items": { "$ref": "#/components/schemas/PolicyListEntry" } } } }, "AnnotationsDefaults": { "properties": { "instances": { "$ref": "#/components/schemas/Annotations" } }, "nullable": true, "type": "object" }, "ExtendedResourcesDefaults": { "properties": { "attributes": { "$ref": "#/components/schemas/ExtendedResource" }, "instances": { "$ref": "#/components/schemas/ExtendedResources" } }, "nullable": true, "type": "object" }, "EnvironmentVariablesDefaults": { "properties": { "instances": { "$ref": "#/components/schemas/EnvironmentVariables" } }, "nullable": true, "type": "object" }, "ExposedUrlsDefaults": { "properties": { "attributes": { "$ref": "#/components/schemas/ExposedUrl" }, "instances": { "$ref": "#/components/schemas/ExposedUrls" } }, "nullable": true, "type": "object" }, "ImagePullSecretsDefaults": { "properties": { "instances": { "$ref": "#/components/schemas/ImagePullSecrets" } }, "nullable": true, "type": "object" }, "LabelsDefaults": { "properties": { "instances": { "$ref": "#/components/schemas/Labels" } }, "nullable": true, "type": "object" }, "NodeType2": { "description": "Nodes (machines), or a group of nodes on which the workload will run. To use this feature, your Administrator will need to label nodes. For more information, see [Group Nodes](https://docs.run.ai/latest/admin/researcher-setup/limit-to-node-group). When using this flag with with Project-based affinity, it refines the list of allowable node groups set in the Project. For more information, see [Projects](https://docshub.run.ai/guides/platform-management/aiinitiatives/organization/projects).", "type": "string", "minLength": 1, "example": "my-node-type", "nullable": true, "pattern": ".*" }, "PortsDefaults": { "properties": { "attributes": { "$ref": "#/components/schemas/Port" }, "instances": { "$ref": "#/components/schemas/Ports" } }, "nullable": true, "type": "object" }, "RelatedUrlsDefaults": { "properties": { "attributes": { "$ref": "#/components/schemas/RelatedUrl" }, "instances": { "$ref": "#/components/schemas/RelatedUrls" } }, "nullable": true, "type": "object" }, "ConfigMapsDefaults": { "properties": { "attributes": { "$ref": "#/components/schemas/ConfigMapInstance" }, "instances": { "$ref": "#/components/schemas/ConfigMapItems" } }, "nullable": true, "type": "object" }, "DataVolumesDefaults": { "properties": { "attributes": { "$ref": "#/components/schemas/DataVolumeInstance" }, "instances": { "$ref": "#/components/schemas/DataVolumeItems" } }, "nullable": true, "type": "object" }, "EmptyDirsDefaults": { "properties": { "attributes": { "$ref": "#/components/schemas/EmptyDirInstance" }, "instances": { "$ref": "#/components/schemas/EmptyDirItems" } }, "nullable": true, "type": "object" }, "GitsDefaults": { "properties": { "attributes": { "$ref": "#/components/schemas/GitInstance" }, "instances": { "$ref": "#/components/schemas/GitItems" } }, "nullable": true, "type": "object" }, "HostPathsDefaults": { "properties": { "attributes": { "$ref": "#/components/schemas/HostPathInstance" }, "instances": { "$ref": "#/components/schemas/HostPathItems" } }, "nullable": true, "type": "object" }, "NfssDefaults": { "properties": { "attributes": { "$ref": "#/components/schemas/NfsInstance" }, "instances": { "$ref": "#/components/schemas/NfsItems" } }, "nullable": true, "type": "object" }, "PvcsDefaults": { "properties": { "attributes": { "$ref": "#/components/schemas/PvcInstance" }, "instances": { "$ref": "#/components/schemas/PvcItems" } }, "nullable": true, "type": "object" }, "S3sDefaults": { "properties": { "attributes": { "$ref": "#/components/schemas/S3Instance" }, "instances": { "$ref": "#/components/schemas/S3Items" } }, "nullable": true, "type": "object" }, "Secret3": { "allOf": [ { "$ref": "#/components/schemas/SecretFieldsUpdatable" }, { "$ref": "#/components/schemas/SecretFieldsNonUpdatable" } ] }, "SecretInstance1": { "allOf": [ { "$ref": "#/components/schemas/StorageInstanceName" }, { "$ref": "#/components/schemas/Secret3" }, { "$ref": "#/components/schemas/ExcludeField" } ], "nullable": true, "type": "object" }, "SecretsDefaults": { "properties": { "attributes": { "$ref": "#/components/schemas/SecretInstance2" }, "instances": { "$ref": "#/components/schemas/SecretItems1" } }, "nullable": true, "type": "object" }, "TolerationsDefaults": { "properties": { "attributes": { "$ref": "#/components/schemas/Toleration" }, "instances": { "$ref": "#/components/schemas/Tolerations" } }, "nullable": true, "type": "object" }, "SupersetDefaults": { "allOf": [ { "$ref": "#/components/schemas/InferenceFields" }, { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/AnnotationsDefaults" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemption" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimit" }, "category": { "$ref": "#/components/schemas/Category" }, "cleanPodPolicy": { "$ref": "#/components/schemas/CleanPodPolicy" }, "command": { "$ref": "#/components/schemas/Command" }, "completions": { "$ref": "#/components/schemas/Completions" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResourcesDefaults" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "distributedFramework": { "$ref": "#/components/schemas/DistributedFramework" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariablesDefaults" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrlsDefaults" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecretsDefaults" }, "labels": { "$ref": "#/components/schemas/LabelsDefaults" }, "maxReplicas": { "$ref": "#/components/schemas/MaxReplicas" }, "minReplicas": { "$ref": "#/components/schemas/MinReplicas" }, "mpiLauncherCreationPolicy": { "$ref": "#/components/schemas/MpiLauncherCreationPolicy" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType2" }, "numWorkers": { "$ref": "#/components/schemas/NumWorkers" }, "parallelism": { "$ref": "#/components/schemas/Parallelism" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "ports": { "$ref": "#/components/schemas/PortsDefaults" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrlsDefaults" }, "restartPolicy": { "$ref": "#/components/schemas/SupersetRestartPolicy" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/AllowPrivilegeEscalation" }, "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "hostIpc": { "$ref": "#/components/schemas/HostIpc" }, "hostNetwork": { "$ref": "#/components/schemas/HostNetwork" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "servingPort": { "$ref": "#/components/schemas/SupersetServingPort" }, "slotsPerWorker": { "$ref": "#/components/schemas/SlotsPerWorker" }, "sshAuthMountPath": { "$ref": "#/components/schemas/SshAuthMountPath" }, "stdin": { "$ref": "#/components/schemas/Stdin" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapsDefaults" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumesDefaults" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirsDefaults" }, "git": { "$ref": "#/components/schemas/GitsDefaults" }, "hostPath": { "$ref": "#/components/schemas/HostPathsDefaults" }, "nfs": { "$ref": "#/components/schemas/NfssDefaults" }, "pvc": { "$ref": "#/components/schemas/PvcsDefaults" }, "s3": { "$ref": "#/components/schemas/S3sDefaults" }, "secretVolume": { "$ref": "#/components/schemas/SecretsDefaults" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriod" }, "tolerations": { "$ref": "#/components/schemas/TolerationsDefaults" }, "tty": { "$ref": "#/components/schemas/Tty" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" } ] }, "CleanPodPolicyOptions": { "properties": { "options": { "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/CleanPodPolicy" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "CleanPodPolicyRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/CleanPodPolicyOptions" } ], "nullable": true, "type": "object" }, "QuantityRules": { "properties": { "sourceOfRule": { "$ref": "#/components/schemas/SourceOfRule" }, "required": { "description": "Whether the field is mandatory, default to false.", "type": "boolean", "nullable": true }, "canEdit": { "description": "Whether the value of the field is editable, default to true", "type": "boolean", "nullable": true }, "min": { "description": "The minimum value that the field can be assigned to.", "type": "string", "nullable": true, "pattern": "^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" }, "max": { "description": "The maximum value that the field can be assigned to.", "type": "string", "nullable": true, "pattern": "^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" }, "defaultFrom": { "$ref": "#/components/schemas/DefaultFromRule" } }, "nullable": true, "type": "object" }, "ExtendedResourceRules": { "description": "Rules for the attributes of extendedResources", "properties": { "quantity": { "$ref": "#/components/schemas/StringRules" } }, "nullable": true, "type": "object" }, "ExtendedResourcesRules": { "properties": { "attributes": { "$ref": "#/components/schemas/ExtendedResourceRules" }, "instances": { "$ref": "#/components/schemas/ItemRules" } }, "nullable": true, "type": "object" }, "GpuRequestOptions": { "properties": { "options": { "description": "Limit the permitted values for gpuRequest to a given set of values.", "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/GpuRequestType" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "GpuRequestRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/GpuRequestOptions" } ], "nullable": true, "type": "object" }, "DistributedFrameworkOptions": { "properties": { "options": { "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/DistributedFramework" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "DistributedFrameworkRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/DistributedFrameworkOptions" } ], "nullable": true, "type": "object" }, "ExposedUrlRules": { "description": "Rules for the attributed of exposedUrls", "properties": { "container": { "$ref": "#/components/schemas/IntegerRules" }, "customUrl": { "$ref": "#/components/schemas/BooleanRules" }, "url": { "$ref": "#/components/schemas/StringRules" }, "authorizedUsers": { "$ref": "#/components/schemas/ArrayRules" }, "authorizedGroups": { "$ref": "#/components/schemas/ArrayRules" }, "toolType": { "$ref": "#/components/schemas/StringRules" }, "toolName": { "$ref": "#/components/schemas/StringRules" } }, "nullable": true, "type": "object" }, "ExposedUrlsRules": { "properties": { "attributes": { "$ref": "#/components/schemas/ExposedUrlRules" }, "instances": { "$ref": "#/components/schemas/ItemRules" } }, "nullable": true, "type": "object" }, "ImagePullPolicyOptions": { "properties": { "options": { "description": "Limit the permitted values for imagePullPolicy to a given set of values.", "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/ImagePullPolicy" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "ImagePullPolicyRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/ImagePullPolicyOptions" } ], "nullable": true, "type": "object" }, "MpiLauncherCreationPolicyOptions": { "properties": { "options": { "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/MpiLauncherCreationPolicy" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "MpiLauncherCreationPolicyRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/MpiLauncherCreationPolicyOptions" } ], "nullable": true, "type": "object" }, "PortServiceTypeOptions": { "properties": { "options": { "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/PortServiceType" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "PortServiceTypeRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/PortServiceTypeOptions" } ], "nullable": true, "type": "object" }, "PortRules": { "description": "Rules for port attributes", "properties": { "container": { "$ref": "#/components/schemas/IntegerRules" }, "serviceType": { "$ref": "#/components/schemas/PortServiceTypeRules" }, "customExternalPort": { "$ref": "#/components/schemas/BooleanRules" }, "external": { "$ref": "#/components/schemas/IntegerRules" }, "toolType": { "$ref": "#/components/schemas/StringRules" }, "toolName": { "$ref": "#/components/schemas/StringRules" } }, "nullable": true, "type": "object" }, "PortsRules": { "properties": { "attributes": { "$ref": "#/components/schemas/PortRules" }, "instances": { "$ref": "#/components/schemas/ItemRules" } }, "nullable": true, "type": "object" }, "ProbeHandlerRules": { "properties": { "httpGet": { "properties": { "path": { "$ref": "#/components/schemas/StringRules" }, "port": { "$ref": "#/components/schemas/IntegerRules" }, "host": { "$ref": "#/components/schemas/StringRules" }, "scheme": { "$ref": "#/components/schemas/StringRules" } } } }, "nullable": true, "type": "object" }, "ProbeRules": { "properties": { "initialDelaySeconds": { "$ref": "#/components/schemas/IntegerRules" }, "periodSeconds": { "$ref": "#/components/schemas/IntegerRules" }, "timeoutSeconds": { "$ref": "#/components/schemas/IntegerRules" }, "successThreshold": { "$ref": "#/components/schemas/IntegerRules" }, "failureThreshold": { "$ref": "#/components/schemas/IntegerRules" }, "handler": { "$ref": "#/components/schemas/ProbeHandlerRules" } }, "nullable": true, "type": "object" }, "ProbesRules": { "properties": { "readiness": { "$ref": "#/components/schemas/ProbeRules" } }, "nullable": true, "type": "object" }, "RelatedUrlRules": { "description": "Rules for the attributes of relatedUrls", "properties": { "url": { "$ref": "#/components/schemas/StringRules" }, "type": { "$ref": "#/components/schemas/StringRules" }, "name": { "$ref": "#/components/schemas/StringRules" } }, "nullable": true, "type": "object" }, "RelatedUrlsRules": { "properties": { "attributes": { "$ref": "#/components/schemas/RelatedUrlRules" }, "instances": { "$ref": "#/components/schemas/ItemRules" } }, "nullable": true, "type": "object" }, "SeccompProfileTypeOptions": { "properties": { "options": { "description": "Limit the permitted values for secompProfileType to a given set of values.", "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/SeccompProfileType" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "SeccompProfileTypeRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/SeccompProfileTypeOptions" } ], "nullable": true, "type": "object" }, "UidGidSourceOptions": { "properties": { "options": { "description": "Limit the permitted values for uidGidSource to a given set of values.", "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/UidGidSource" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "UidGidSourceRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/UidGidSourceOptions" } ], "nullable": true, "type": "object" }, "SupersetServingPortRules": { "properties": { "port": { "$ref": "#/components/schemas/IntegerRules" }, "container": { "$ref": "#/components/schemas/IntegerRules" }, "protocol": { "$ref": "#/components/schemas/StringRules" }, "authorizationType": { "$ref": "#/components/schemas/StringRules" }, "authorizedUsers": { "$ref": "#/components/schemas/ArrayRules" }, "authorizedGroups": { "$ref": "#/components/schemas/ArrayRules" }, "clusterLocalAccessOnly": { "$ref": "#/components/schemas/BooleanRules" }, "exposeExternally": { "$ref": "#/components/schemas/BooleanRules" }, "exposedUrl": { "$ref": "#/components/schemas/StringRules" } }, "type": "object", "nullable": true }, "SupersetRules": { "allOf": [ { "$ref": "#/components/schemas/InferenceFieldsRules" }, { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/InstancesRules" }, "args": { "$ref": "#/components/schemas/StringRules" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/IntegerRules" }, "backoffLimit": { "$ref": "#/components/schemas/IntegerRules" }, "category": { "$ref": "#/components/schemas/StringRules" }, "cleanPodPolicy": { "$ref": "#/components/schemas/CleanPodPolicyRules" }, "command": { "$ref": "#/components/schemas/StringRules" }, "completions": { "$ref": "#/components/schemas/IntegerRules" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/NumberRules" }, "cpuCoreRequest": { "$ref": "#/components/schemas/NumberRules" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/QuantityRules" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/QuantityRules" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResourcesRules" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/IntegerRules" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/QuantityRules" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/QuantityRules" }, "gpuPortionLimit": { "$ref": "#/components/schemas/NumberRules" }, "gpuPortionRequest": { "$ref": "#/components/schemas/NumberRules" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestRules" }, "largeShmRequest": { "$ref": "#/components/schemas/BooleanRules" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/BooleanRules" }, "distributedFramework": { "$ref": "#/components/schemas/DistributedFrameworkRules" }, "environmentVariables": { "$ref": "#/components/schemas/InstancesRules" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrlsRules" }, "image": { "$ref": "#/components/schemas/StringRules" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicyRules" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecretsRules" }, "labels": { "$ref": "#/components/schemas/InstancesRules" }, "maxReplicas": { "$ref": "#/components/schemas/IntegerRules" }, "minReplicas": { "$ref": "#/components/schemas/IntegerRules" }, "mpiLauncherCreationPolicy": { "$ref": "#/components/schemas/MpiLauncherCreationPolicyRules" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/ArbitraryRules" }, "nodePools": { "$ref": "#/components/schemas/ArrayRules" }, "nodeType": { "$ref": "#/components/schemas/StringRules" }, "numWorkers": { "$ref": "#/components/schemas/IntegerRules" }, "parallelism": { "$ref": "#/components/schemas/IntegerRules" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinityRules" }, "ports": { "$ref": "#/components/schemas/PortsRules" }, "preemptibility": { "$ref": "#/components/schemas/PreemptibilityRules" }, "priorityClass": { "$ref": "#/components/schemas/StringRules" }, "probes": { "$ref": "#/components/schemas/ProbesRules" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrlsRules" }, "restartPolicy": { "$ref": "#/components/schemas/StringRules" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/BooleanRules" }, "capabilities": { "$ref": "#/components/schemas/ArrayRules" }, "hostIpc": { "$ref": "#/components/schemas/BooleanRules" }, "hostNetwork": { "$ref": "#/components/schemas/BooleanRules" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/BooleanRules" }, "runAsGid": { "$ref": "#/components/schemas/IntegerRulesOptional" }, "runAsNonRoot": { "$ref": "#/components/schemas/BooleanRules" }, "runAsUid": { "$ref": "#/components/schemas/IntegerRulesOptional" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileTypeRules" }, "supplementalGroups": { "$ref": "#/components/schemas/StringRules" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSourceRules" } }, "type": "object" }, "servingPort": { "$ref": "#/components/schemas/SupersetServingPortRules" }, "slotsPerWorker": { "$ref": "#/components/schemas/IntegerRules" }, "sshAuthMountPath": { "$ref": "#/components/schemas/StringRules" }, "stdin": { "$ref": "#/components/schemas/BooleanRules" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapsRules" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumesRules" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirsRules" }, "git": { "$ref": "#/components/schemas/GitsRules" }, "hostPath": { "$ref": "#/components/schemas/HostPathsRules" }, "nfs": { "$ref": "#/components/schemas/NfssRules" }, "pvc": { "$ref": "#/components/schemas/PvcsRules" }, "s3": { "$ref": "#/components/schemas/S3sRules" }, "secretVolume": { "$ref": "#/components/schemas/SecretsRules" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/BooleanRules" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/IntegerRules" }, "tolerations": { "$ref": "#/components/schemas/TolerationsRules" }, "tty": { "$ref": "#/components/schemas/BooleanRules" }, "workingDir": { "$ref": "#/components/schemas/StringRules" } }, "type": "object" } ] }, "ImposedAssets": { "description": "a list of datasource assets to import into the policy. these datasources will be included in any workload that will be created in the scope of the policy.", "type": "array", "items": { "type": "string", "format": "uuid" }, "nullable": true }, "Timestamp": { "description": "The time at which an event occurred. e.g. the time an effective policy has been updated", "type": "string", "minLength": 1, "format": "date-time" }, "FieldsToReset": { "description": "set of fields in jsonpath format that is requested to clear their policy (default and rules)", "type": "array", "items": { "type": "string", "pattern": ".*" }, "example": [ "master.security.runAsGpu", "worker.compute.gpu" ] }, "TrainingPolicyDefaultsV2": { "allOf": [ { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/AnnotationsDefaults" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemption" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimit" }, "category": { "$ref": "#/components/schemas/Category" }, "command": { "$ref": "#/components/schemas/Command" }, "completions": { "$ref": "#/components/schemas/Completions" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResourcesDefaults" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariablesDefaults" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrlsDefaults" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecretsDefaults" }, "labels": { "$ref": "#/components/schemas/LabelsDefaults" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType2" }, "parallelism": { "$ref": "#/components/schemas/Parallelism" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "ports": { "$ref": "#/components/schemas/PortsDefaults" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrlsDefaults" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicy" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/AllowPrivilegeEscalation" }, "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "hostIpc": { "$ref": "#/components/schemas/HostIpc" }, "hostNetwork": { "$ref": "#/components/schemas/HostNetwork" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "stdin": { "$ref": "#/components/schemas/Stdin" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapsDefaults" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumesDefaults" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirsDefaults" }, "git": { "$ref": "#/components/schemas/GitsDefaults" }, "hostPath": { "$ref": "#/components/schemas/HostPathsDefaults" }, "nfs": { "$ref": "#/components/schemas/NfssDefaults" }, "pvc": { "$ref": "#/components/schemas/PvcsDefaults" }, "s3": { "$ref": "#/components/schemas/S3sDefaults" }, "secretVolume": { "$ref": "#/components/schemas/SecretsDefaults" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriod" }, "tolerations": { "$ref": "#/components/schemas/TolerationsDefaults" }, "tty": { "$ref": "#/components/schemas/Tty" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" } ] }, "TrainingPolicyRulesV2": { "allOf": [ { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/InstancesRules" }, "args": { "$ref": "#/components/schemas/StringRules" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/IntegerRules" }, "backoffLimit": { "$ref": "#/components/schemas/IntegerRules" }, "category": { "$ref": "#/components/schemas/StringRules" }, "command": { "$ref": "#/components/schemas/StringRules" }, "completions": { "$ref": "#/components/schemas/IntegerRules" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/NumberRules" }, "cpuCoreRequest": { "$ref": "#/components/schemas/NumberRules" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/QuantityRules" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/QuantityRules" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResourcesRules" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/IntegerRules" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/QuantityRules" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/QuantityRules" }, "gpuPortionLimit": { "$ref": "#/components/schemas/NumberRules" }, "gpuPortionRequest": { "$ref": "#/components/schemas/NumberRules" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestRules" }, "largeShmRequest": { "$ref": "#/components/schemas/BooleanRules" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/BooleanRules" }, "environmentVariables": { "$ref": "#/components/schemas/InstancesRules" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrlsRules" }, "image": { "$ref": "#/components/schemas/StringRules" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicyRules" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecretsRules" }, "labels": { "$ref": "#/components/schemas/InstancesRules" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/ArbitraryRules" }, "nodePools": { "$ref": "#/components/schemas/ArrayRules" }, "nodeType": { "$ref": "#/components/schemas/StringRules" }, "parallelism": { "$ref": "#/components/schemas/IntegerRules" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinityRules" }, "ports": { "$ref": "#/components/schemas/PortsRules" }, "preemptibility": { "$ref": "#/components/schemas/PreemptibilityRules" }, "priorityClass": { "$ref": "#/components/schemas/StringRules" }, "probes": { "$ref": "#/components/schemas/ProbesRules" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrlsRules" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicyRule" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/BooleanRules" }, "capabilities": { "$ref": "#/components/schemas/ArrayRules" }, "hostIpc": { "$ref": "#/components/schemas/BooleanRules" }, "hostNetwork": { "$ref": "#/components/schemas/BooleanRules" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/BooleanRules" }, "runAsGid": { "$ref": "#/components/schemas/IntegerRulesOptional" }, "runAsNonRoot": { "$ref": "#/components/schemas/BooleanRules" }, "runAsUid": { "$ref": "#/components/schemas/IntegerRulesOptional" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileTypeRules" }, "supplementalGroups": { "$ref": "#/components/schemas/StringRules" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSourceRules" } }, "type": "object" }, "stdin": { "$ref": "#/components/schemas/BooleanRules" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapsRules" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumesRules" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirsRules" }, "git": { "$ref": "#/components/schemas/GitsRules" }, "hostPath": { "$ref": "#/components/schemas/HostPathsRules" }, "nfs": { "$ref": "#/components/schemas/NfssRules" }, "pvc": { "$ref": "#/components/schemas/PvcsRules" }, "s3": { "$ref": "#/components/schemas/S3sRules" }, "secretVolume": { "$ref": "#/components/schemas/SecretsRules" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/BooleanRules" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/IntegerRules" }, "tolerations": { "$ref": "#/components/schemas/TolerationsRules" }, "tty": { "$ref": "#/components/schemas/BooleanRules" }, "workingDir": { "$ref": "#/components/schemas/StringRules" } }, "type": "object" } ] }, "TrainingPolicyDefaultsAndRulesV2": { "properties": { "defaults": { "allOf": [ { "$ref": "#/components/schemas/TrainingPolicyDefaultsV2" } ], "nullable": true, "type": "object" }, "rules": { "allOf": [ { "$ref": "#/components/schemas/TrainingPolicyRulesV2" } ], "nullable": true, "type": "object" }, "imposedAssets": { "$ref": "#/components/schemas/ImposedAssets" }, "status": { "$ref": "#/components/schemas/PolicyValidationStatus" } }, "nullable": true, "type": "object" }, "TrainingPolicyV2": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyMeta" }, "policy": { "$ref": "#/components/schemas/TrainingPolicyDefaultsAndRulesV2" }, "effective": { "$ref": "#/components/schemas/TrainingPolicyDefaultsAndRulesV2" }, "effectiveUpdatedAt": { "$ref": "#/components/schemas/Timestamp" } }, "nullable": true, "type": "object" }, "TrainingPolicyOverwriteRequestV2": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyCreationFields" }, "policy": { "$ref": "#/components/schemas/TrainingPolicyDefaultsAndRulesV2" } }, "type": "object" }, "TrainingPolicyChangeRequestV2": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyCreationFields" }, "policy": { "$ref": "#/components/schemas/TrainingPolicyDefaultsAndRulesV2" }, "reset": { "$ref": "#/components/schemas/FieldsToReset" } }, "type": "object" }, "ReplicaDefaultsV2": { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/AnnotationsDefaults" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemption" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimit" }, "category": { "$ref": "#/components/schemas/Category" }, "command": { "$ref": "#/components/schemas/Command" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResourcesDefaults" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariablesDefaults" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrlsDefaults" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecretsDefaults" }, "labels": { "$ref": "#/components/schemas/LabelsDefaults" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType2" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "ports": { "$ref": "#/components/schemas/PortsDefaults" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrlsDefaults" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicy" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/AllowPrivilegeEscalation" }, "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "hostIpc": { "$ref": "#/components/schemas/HostIpc" }, "hostNetwork": { "$ref": "#/components/schemas/HostNetwork" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "stdin": { "$ref": "#/components/schemas/Stdin" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapsDefaults" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumesDefaults" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirsDefaults" }, "git": { "$ref": "#/components/schemas/GitsDefaults" }, "hostPath": { "$ref": "#/components/schemas/HostPathsDefaults" }, "nfs": { "$ref": "#/components/schemas/NfssDefaults" }, "pvc": { "$ref": "#/components/schemas/PvcsDefaults" }, "s3": { "$ref": "#/components/schemas/S3sDefaults" }, "secretVolume": { "$ref": "#/components/schemas/SecretsDefaults" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriod" }, "tolerations": { "$ref": "#/components/schemas/TolerationsDefaults" }, "tty": { "$ref": "#/components/schemas/Tty" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" }, "DistributedPolicyDefaultsV2": { "nullable": true, "properties": { "master": { "$ref": "#/components/schemas/ReplicaDefaultsV2" }, "worker": { "allOf": [ { "$ref": "#/components/schemas/ReplicaDefaultsV2" }, { "nullable": true, "properties": { "cleanPodPolicy": { "$ref": "#/components/schemas/CleanPodPolicy" }, "distributedFramework": { "$ref": "#/components/schemas/DistributedFramework" }, "maxReplicas": { "$ref": "#/components/schemas/MaxReplicas" }, "minReplicas": { "$ref": "#/components/schemas/MinReplicas" }, "mpiLauncherCreationPolicy": { "$ref": "#/components/schemas/MpiLauncherCreationPolicy" }, "numWorkers": { "$ref": "#/components/schemas/NumWorkers" }, "slotsPerWorker": { "$ref": "#/components/schemas/SlotsPerWorker" }, "sshAuthMountPath": { "$ref": "#/components/schemas/SshAuthMountPath" } }, "type": "object" } ], "nullable": true, "type": "object" } }, "type": "object" }, "ReplicaRulesV2": { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/InstancesRules" }, "args": { "$ref": "#/components/schemas/StringRules" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/IntegerRules" }, "backoffLimit": { "$ref": "#/components/schemas/IntegerRules" }, "category": { "$ref": "#/components/schemas/StringRules" }, "command": { "$ref": "#/components/schemas/StringRules" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/NumberRules" }, "cpuCoreRequest": { "$ref": "#/components/schemas/NumberRules" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/QuantityRules" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/QuantityRules" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResourcesRules" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/IntegerRules" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/QuantityRules" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/QuantityRules" }, "gpuPortionLimit": { "$ref": "#/components/schemas/NumberRules" }, "gpuPortionRequest": { "$ref": "#/components/schemas/NumberRules" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestRules" }, "largeShmRequest": { "$ref": "#/components/schemas/BooleanRules" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/BooleanRules" }, "environmentVariables": { "$ref": "#/components/schemas/InstancesRules" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrlsRules" }, "image": { "$ref": "#/components/schemas/StringRules" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicyRules" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecretsRules" }, "labels": { "$ref": "#/components/schemas/InstancesRules" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/ArbitraryRules" }, "nodePools": { "$ref": "#/components/schemas/ArrayRules" }, "nodeType": { "$ref": "#/components/schemas/StringRules" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinityRules" }, "ports": { "$ref": "#/components/schemas/PortsRules" }, "preemptibility": { "$ref": "#/components/schemas/PreemptibilityRules" }, "priorityClass": { "$ref": "#/components/schemas/StringRules" }, "probes": { "$ref": "#/components/schemas/ProbesRules" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrlsRules" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicyRule" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/BooleanRules" }, "capabilities": { "$ref": "#/components/schemas/ArrayRules" }, "hostIpc": { "$ref": "#/components/schemas/BooleanRules" }, "hostNetwork": { "$ref": "#/components/schemas/BooleanRules" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/BooleanRules" }, "runAsGid": { "$ref": "#/components/schemas/IntegerRulesOptional" }, "runAsNonRoot": { "$ref": "#/components/schemas/BooleanRules" }, "runAsUid": { "$ref": "#/components/schemas/IntegerRulesOptional" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileTypeRules" }, "supplementalGroups": { "$ref": "#/components/schemas/StringRules" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSourceRules" } }, "type": "object" }, "stdin": { "$ref": "#/components/schemas/BooleanRules" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapsRules" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumesRules" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirsRules" }, "git": { "$ref": "#/components/schemas/GitsRules" }, "hostPath": { "$ref": "#/components/schemas/HostPathsRules" }, "nfs": { "$ref": "#/components/schemas/NfssRules" }, "pvc": { "$ref": "#/components/schemas/PvcsRules" }, "s3": { "$ref": "#/components/schemas/S3sRules" }, "secretVolume": { "$ref": "#/components/schemas/SecretsRules" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/BooleanRules" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/IntegerRules" }, "tolerations": { "$ref": "#/components/schemas/TolerationsRules" }, "tty": { "$ref": "#/components/schemas/BooleanRules" }, "workingDir": { "$ref": "#/components/schemas/StringRules" } }, "type": "object" }, "DistributedPolicyRulesV2": { "nullable": true, "properties": { "master": { "$ref": "#/components/schemas/ReplicaRulesV2" }, "worker": { "allOf": [ { "$ref": "#/components/schemas/ReplicaRulesV2" }, { "nullable": true, "properties": { "cleanPodPolicy": { "$ref": "#/components/schemas/CleanPodPolicyRules" }, "distributedFramework": { "$ref": "#/components/schemas/DistributedFrameworkRules" }, "maxReplicas": { "$ref": "#/components/schemas/IntegerRules" }, "minReplicas": { "$ref": "#/components/schemas/IntegerRules" }, "mpiLauncherCreationPolicy": { "$ref": "#/components/schemas/MpiLauncherCreationPolicyRules" }, "numWorkers": { "$ref": "#/components/schemas/IntegerRules" }, "slotsPerWorker": { "$ref": "#/components/schemas/IntegerRules" }, "sshAuthMountPath": { "$ref": "#/components/schemas/StringRules" } }, "type": "object" } ], "nullable": true, "type": "object" } }, "type": "object" }, "DistributedImposedAssets": { "properties": { "worker": { "$ref": "#/components/schemas/ImposedAssets" }, "master": { "$ref": "#/components/schemas/ImposedAssets" } }, "nullable": true, "type": "object" }, "DistributedPolicyDefaultsAndRulesV2": { "properties": { "defaults": { "$ref": "#/components/schemas/DistributedPolicyDefaultsV2" }, "rules": { "$ref": "#/components/schemas/DistributedPolicyRulesV2" }, "imposedAssets": { "$ref": "#/components/schemas/DistributedImposedAssets" }, "status": { "$ref": "#/components/schemas/PolicyValidationStatus" } }, "nullable": true, "type": "object" }, "WorkspacePolicyDefaultsV2": { "allOf": [ { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/AnnotationsDefaults" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemption" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimit" }, "category": { "$ref": "#/components/schemas/Category" }, "command": { "$ref": "#/components/schemas/Command" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResourcesDefaults" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariablesDefaults" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrlsDefaults" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecretsDefaults" }, "labels": { "$ref": "#/components/schemas/LabelsDefaults" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType2" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "ports": { "$ref": "#/components/schemas/PortsDefaults" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrlsDefaults" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicy" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/AllowPrivilegeEscalation" }, "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "hostIpc": { "$ref": "#/components/schemas/HostIpc" }, "hostNetwork": { "$ref": "#/components/schemas/HostNetwork" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "stdin": { "$ref": "#/components/schemas/Stdin" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapsDefaults" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumesDefaults" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirsDefaults" }, "git": { "$ref": "#/components/schemas/GitsDefaults" }, "hostPath": { "$ref": "#/components/schemas/HostPathsDefaults" }, "nfs": { "$ref": "#/components/schemas/NfssDefaults" }, "pvc": { "$ref": "#/components/schemas/PvcsDefaults" }, "s3": { "$ref": "#/components/schemas/S3sDefaults" }, "secretVolume": { "$ref": "#/components/schemas/SecretsDefaults" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriod" }, "tolerations": { "$ref": "#/components/schemas/TolerationsDefaults" }, "tty": { "$ref": "#/components/schemas/Tty" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" } ] }, "WorkspacePolicyRulesV2": { "allOf": [ { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/InstancesRules" }, "args": { "$ref": "#/components/schemas/StringRules" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/IntegerRules" }, "backoffLimit": { "$ref": "#/components/schemas/IntegerRules" }, "category": { "$ref": "#/components/schemas/StringRules" }, "command": { "$ref": "#/components/schemas/StringRules" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/NumberRules" }, "cpuCoreRequest": { "$ref": "#/components/schemas/NumberRules" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/QuantityRules" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/QuantityRules" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResourcesRules" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/IntegerRules" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/QuantityRules" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/QuantityRules" }, "gpuPortionLimit": { "$ref": "#/components/schemas/NumberRules" }, "gpuPortionRequest": { "$ref": "#/components/schemas/NumberRules" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestRules" }, "largeShmRequest": { "$ref": "#/components/schemas/BooleanRules" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/BooleanRules" }, "environmentVariables": { "$ref": "#/components/schemas/InstancesRules" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrlsRules" }, "image": { "$ref": "#/components/schemas/StringRules" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicyRules" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecretsRules" }, "labels": { "$ref": "#/components/schemas/InstancesRules" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/ArbitraryRules" }, "nodePools": { "$ref": "#/components/schemas/ArrayRules" }, "nodeType": { "$ref": "#/components/schemas/StringRules" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinityRules" }, "ports": { "$ref": "#/components/schemas/PortsRules" }, "preemptibility": { "$ref": "#/components/schemas/PreemptibilityRules" }, "priorityClass": { "$ref": "#/components/schemas/StringRules" }, "probes": { "$ref": "#/components/schemas/ProbesRules" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrlsRules" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicyRule" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/BooleanRules" }, "capabilities": { "$ref": "#/components/schemas/ArrayRules" }, "hostIpc": { "$ref": "#/components/schemas/BooleanRules" }, "hostNetwork": { "$ref": "#/components/schemas/BooleanRules" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/BooleanRules" }, "runAsGid": { "$ref": "#/components/schemas/IntegerRulesOptional" }, "runAsNonRoot": { "$ref": "#/components/schemas/BooleanRules" }, "runAsUid": { "$ref": "#/components/schemas/IntegerRulesOptional" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileTypeRules" }, "supplementalGroups": { "$ref": "#/components/schemas/StringRules" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSourceRules" } }, "type": "object" }, "stdin": { "$ref": "#/components/schemas/BooleanRules" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapsRules" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumesRules" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirsRules" }, "git": { "$ref": "#/components/schemas/GitsRules" }, "hostPath": { "$ref": "#/components/schemas/HostPathsRules" }, "nfs": { "$ref": "#/components/schemas/NfssRules" }, "pvc": { "$ref": "#/components/schemas/PvcsRules" }, "s3": { "$ref": "#/components/schemas/S3sRules" }, "secretVolume": { "$ref": "#/components/schemas/SecretsRules" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/BooleanRules" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/IntegerRules" }, "tolerations": { "$ref": "#/components/schemas/TolerationsRules" }, "tty": { "$ref": "#/components/schemas/BooleanRules" }, "workingDir": { "$ref": "#/components/schemas/StringRules" } }, "type": "object" } ] }, "WorkspacePolicyDefaultsAndRulesV2": { "properties": { "defaults": { "allOf": [ { "$ref": "#/components/schemas/WorkspacePolicyDefaultsV2" } ], "nullable": true, "type": "object" }, "rules": { "allOf": [ { "$ref": "#/components/schemas/WorkspacePolicyRulesV2" } ], "nullable": true, "type": "object" }, "imposedAssets": { "$ref": "#/components/schemas/ImposedAssets" }, "status": { "$ref": "#/components/schemas/PolicyValidationStatus" } }, "nullable": true, "type": "object" }, "WorkspacePolicyV2": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyMeta" }, "policy": { "$ref": "#/components/schemas/WorkspacePolicyDefaultsAndRulesV2" }, "effective": { "$ref": "#/components/schemas/WorkspacePolicyDefaultsAndRulesV2" }, "effectiveUpdatedAt": { "$ref": "#/components/schemas/Timestamp" } }, "nullable": true, "type": "object" }, "WorkspacePolicyOverwriteRequestV2": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyCreationFields" }, "policy": { "$ref": "#/components/schemas/WorkspacePolicyDefaultsAndRulesV2" } }, "type": "object" }, "WorkspacePolicyChangeRequestV2": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyCreationFields" }, "policy": { "$ref": "#/components/schemas/WorkspacePolicyDefaultsAndRulesV2" }, "reset": { "$ref": "#/components/schemas/FieldsToReset" } }, "type": "object" }, "DistributedPolicyV2": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyMeta" }, "policy": { "$ref": "#/components/schemas/DistributedPolicyDefaultsAndRulesV2" }, "effective": { "$ref": "#/components/schemas/DistributedPolicyDefaultsAndRulesV2" }, "effectiveUpdatedAt": { "$ref": "#/components/schemas/Timestamp" } }, "nullable": true, "type": "object" }, "DistributedPolicyOverwriteRequestV2": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyCreationFields" }, "policy": { "$ref": "#/components/schemas/DistributedPolicyDefaultsAndRulesV2" } }, "type": "object" }, "DistributedPolicyChangeRequestV2": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyCreationFields" }, "policy": { "$ref": "#/components/schemas/DistributedPolicyDefaultsAndRulesV2" }, "reset": { "$ref": "#/components/schemas/FieldsToReset" } }, "type": "object" }, "ServingPortContainerAndProtocol": { "properties": { "container": { "description": "The port that the container running the inference service exposes (mandatory).", "type": "integer", "format": "int32", "minimum": 1, "maximum": 65535, "example": 8080, "nullable": true }, "protocol": { "$ref": "#/components/schemas/ServingPortProtocol" } } }, "ServingPort": { "description": "A port for accessing the inference service", "allOf": [ { "$ref": "#/components/schemas/ServingPortContainerAndProtocol" }, { "$ref": "#/components/schemas/ServingPortAccess" } ], "nullable": true, "type": "object" }, "InferencePolicyDefaultsV2": { "allOf": [ { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/AnnotationsDefaults" }, "args": { "$ref": "#/components/schemas/Args" }, "category": { "$ref": "#/components/schemas/Category" }, "command": { "$ref": "#/components/schemas/Command" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResourcesDefaults" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariablesDefaults" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrlsDefaults" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecretsDefaults" }, "labels": { "$ref": "#/components/schemas/LabelsDefaults" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType2" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "ports": { "$ref": "#/components/schemas/PortsDefaults" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrlsDefaults" }, "security": { "nullable": true, "properties": { "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "servingPort": { "$ref": "#/components/schemas/ServingPort" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapsDefaults" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumesDefaults" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirsDefaults" }, "git": { "$ref": "#/components/schemas/GitsDefaults" }, "hostPath": { "$ref": "#/components/schemas/HostPathsDefaults" }, "nfs": { "$ref": "#/components/schemas/NfssDefaults" }, "pvc": { "$ref": "#/components/schemas/PvcsDefaults" }, "secretVolume": { "$ref": "#/components/schemas/SecretsDefaults" } }, "type": "object" }, "tolerations": { "$ref": "#/components/schemas/TolerationsDefaults" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" }, { "$ref": "#/components/schemas/InferenceFields" } ] }, "ServingPortProtocolOptions": { "properties": { "options": { "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/ServingPortProtocol" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "ServingPortProtocolRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/ServingPortProtocolOptions" } ], "nullable": true, "type": "object" }, "ServingPortAuthorizationTypeOptions": { "properties": { "options": { "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/ServingPortAccessAuthorizationTypeEnum" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "ServingPortAuthorizationTypeRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/ServingPortAuthorizationTypeOptions" } ], "nullable": true, "type": "object" }, "ServingPortRules": { "properties": { "container": { "$ref": "#/components/schemas/IntegerRules" }, "protocol": { "$ref": "#/components/schemas/ServingPortProtocolRules" }, "authorizationType": { "$ref": "#/components/schemas/ServingPortAuthorizationTypeRules" }, "authorizedUsers": { "$ref": "#/components/schemas/ArrayRules" }, "authorizedGroups": { "$ref": "#/components/schemas/ArrayRules" }, "clusterLocalAccessOnly": { "$ref": "#/components/schemas/BooleanRules" } }, "nullable": true, "type": "object" }, "InferencePolicyRulesV2": { "allOf": [ { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/InstancesRules" }, "args": { "$ref": "#/components/schemas/StringRules" }, "category": { "$ref": "#/components/schemas/StringRules" }, "command": { "$ref": "#/components/schemas/StringRules" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/NumberRules" }, "cpuCoreRequest": { "$ref": "#/components/schemas/NumberRules" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/QuantityRules" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/QuantityRules" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResourcesRules" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/IntegerRules" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/QuantityRules" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/QuantityRules" }, "gpuPortionLimit": { "$ref": "#/components/schemas/NumberRules" }, "gpuPortionRequest": { "$ref": "#/components/schemas/NumberRules" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestRules" }, "largeShmRequest": { "$ref": "#/components/schemas/BooleanRules" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/BooleanRules" }, "environmentVariables": { "$ref": "#/components/schemas/InstancesRules" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrlsRules" }, "image": { "$ref": "#/components/schemas/StringRules" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicyRules" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecretsRules" }, "labels": { "$ref": "#/components/schemas/InstancesRules" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/ArbitraryRules" }, "nodePools": { "$ref": "#/components/schemas/ArrayRules" }, "nodeType": { "$ref": "#/components/schemas/StringRules" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinityRules" }, "ports": { "$ref": "#/components/schemas/PortsRules" }, "preemptibility": { "$ref": "#/components/schemas/PreemptibilityRules" }, "priorityClass": { "$ref": "#/components/schemas/StringRules" }, "probes": { "$ref": "#/components/schemas/ProbesRules" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrlsRules" }, "security": { "nullable": true, "properties": { "capabilities": { "$ref": "#/components/schemas/ArrayRules" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/BooleanRules" }, "runAsGid": { "$ref": "#/components/schemas/IntegerRulesOptional" }, "runAsNonRoot": { "$ref": "#/components/schemas/BooleanRules" }, "runAsUid": { "$ref": "#/components/schemas/IntegerRulesOptional" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileTypeRules" }, "supplementalGroups": { "$ref": "#/components/schemas/StringRules" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSourceRules" } }, "type": "object" }, "servingPort": { "$ref": "#/components/schemas/ServingPortRules" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapsRules" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumesRules" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirsRules" }, "git": { "$ref": "#/components/schemas/GitsRules" }, "hostPath": { "$ref": "#/components/schemas/HostPathsRules" }, "nfs": { "$ref": "#/components/schemas/NfssRules" }, "pvc": { "$ref": "#/components/schemas/PvcsRules" }, "secretVolume": { "$ref": "#/components/schemas/SecretsRules" } }, "type": "object" }, "tolerations": { "$ref": "#/components/schemas/TolerationsRules" }, "workingDir": { "$ref": "#/components/schemas/StringRules" } }, "type": "object" }, { "$ref": "#/components/schemas/InferenceFieldsRules" } ] }, "InferencePolicyDefaultsAndRulesV2": { "properties": { "defaults": { "allOf": [ { "$ref": "#/components/schemas/InferencePolicyDefaultsV2" } ], "nullable": true, "type": "object" }, "rules": { "allOf": [ { "$ref": "#/components/schemas/InferencePolicyRulesV2" } ], "nullable": true, "type": "object" }, "imposedAssets": { "$ref": "#/components/schemas/ImposedAssets" }, "status": { "$ref": "#/components/schemas/PolicyValidationStatus" } }, "nullable": true, "type": "object" }, "InferencePolicyV2": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyMeta" }, "policy": { "$ref": "#/components/schemas/InferencePolicyDefaultsAndRulesV2" }, "effective": { "$ref": "#/components/schemas/InferencePolicyDefaultsAndRulesV2" }, "effectiveUpdatedAt": { "$ref": "#/components/schemas/Timestamp" } }, "nullable": true, "type": "object" }, "InferencePolicyOverwriteRequestV2": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyCreationFields" }, "policy": { "$ref": "#/components/schemas/InferencePolicyDefaultsAndRulesV2" } }, "type": "object" }, "InferencePolicyChangeRequestV2": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyCreationFields" }, "policy": { "$ref": "#/components/schemas/InferencePolicyDefaultsAndRulesV2" }, "reset": { "$ref": "#/components/schemas/FieldsToReset" } }, "type": "object" }, "DistributedInferenceCommonDefaultsV2": { "allOf": [ { "nullable": true, "properties": { "category": { "$ref": "#/components/schemas/Category" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "restartPolicy": { "$ref": "#/components/schemas/DistributedInferenceRestartPolicy" }, "servingPort": { "$ref": "#/components/schemas/DistributedInferenceServingPort" } }, "type": "object" }, { "$ref": "#/components/schemas/DistributedInferenceStartupPolicyField" }, { "$ref": "#/components/schemas/DistributedInferenceWorkersField" }, { "$ref": "#/components/schemas/DistributedInferenceReplicasField" } ], "nullable": true, "type": "object" }, "DistributedInferenceLeaderWorkerDefaultsV2": { "properties": { "annotations": { "$ref": "#/components/schemas/AnnotationsDefaults" }, "args": { "$ref": "#/components/schemas/Args" }, "command": { "$ref": "#/components/schemas/Command" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResourcesDefaults" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariablesDefaults" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecretsDefaults" }, "labels": { "$ref": "#/components/schemas/LabelsDefaults" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodeType": { "$ref": "#/components/schemas/NodeType2" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "probes": { "$ref": "#/components/schemas/Probes" }, "security": { "nullable": true, "properties": { "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapsDefaults" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirsDefaults" }, "pvc": { "$ref": "#/components/schemas/PvcsDefaults" }, "secretVolume": { "$ref": "#/components/schemas/SecretsDefaults" } }, "type": "object" }, "tolerations": { "$ref": "#/components/schemas/TolerationsDefaults" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" }, "DistributedInferenceLeaderDefaults": { "properties": { "leader": { "description": "Defines the pod specification for the leader. Must always be provided, regardless of the number of workers.", "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceLeaderWorkerDefaultsV2" } ], "nullable": true, "type": "object" } } }, "DistributedInferenceWorkerDefaults": { "properties": { "worker": { "description": "Defines the pod specification for the workers. Required only if the number of workers is greater than 0.", "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceLeaderWorkerDefaultsV2" } ], "nullable": true, "type": "object" } } }, "DistributedInferenceDefaultsV2": { "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceCommonDefaultsV2" }, { "$ref": "#/components/schemas/DistributedInferenceLeaderDefaults" }, { "$ref": "#/components/schemas/DistributedInferenceWorkerDefaults" } ] }, "DistributedInferenceRestartPolicyOptions": { "properties": { "options": { "description": "Limit the permitted values for restartPolicy to a given set of values.", "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/DistributedInferenceRestartPolicy" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "DistributedInferenceRestartPolicyRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/DistributedInferenceRestartPolicyOptions" } ], "nullable": true, "type": "object" }, "DistributedInferenceServingPortAuthorizationTypeOptions": { "properties": { "options": { "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/DistributedInferenceServingPortAccessAuthorizationTypeEnum" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "DistributedInferenceServingPortAuthorizationTypeRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/DistributedInferenceServingPortAuthorizationTypeOptions" } ], "nullable": true, "type": "object" }, "DistributedInferenceServingPortRules": { "properties": { "port": { "$ref": "#/components/schemas/IntegerRules" }, "protocol": { "$ref": "#/components/schemas/StringRules" }, "authorizationType": { "$ref": "#/components/schemas/DistributedInferenceServingPortAuthorizationTypeRules" }, "authorizedUsers": { "$ref": "#/components/schemas/ArrayRules" }, "authorizedGroups": { "$ref": "#/components/schemas/ArrayRules" }, "exposeExternally": { "$ref": "#/components/schemas/BooleanRules" }, "exposedUrl": { "$ref": "#/components/schemas/StringRules" } }, "nullable": true, "type": "object" }, "DistributedInferenceServingPortRules-2": { "description": "Defines the configuration for the inference serving endpoint. This determines how applications or services can send inference requests to the workload.", "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceServingPortRules" } ], "nullable": true, "type": "object" }, "DistributedInferenceStartupPolicyOptions": { "properties": { "startupPolicy": { "$ref": "#/components/schemas/DistributedInferenceStartupPolicy" } }, "nullable": true, "type": "object" }, "DistributedInferenceStartupPolicyFieldRules": { "properties": { "startupPolicy": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/DistributedInferenceStartupPolicyOptions" } ], "nullable": true, "type": "object" } }, "nullable": true, "type": "object" }, "DistributedInferenceWorkersFieldRules": { "properties": { "workers": { "$ref": "#/components/schemas/IntegerRules" } } }, "DistributedInferenceReplicasFieldRules": { "properties": { "replicas": { "$ref": "#/components/schemas/IntegerRules" } } }, "DistributedInferenceCommonRulesV2": { "allOf": [ { "nullable": true, "properties": { "category": { "$ref": "#/components/schemas/StringRules" }, "nodePools": { "$ref": "#/components/schemas/ArrayRules" }, "preemptibility": { "$ref": "#/components/schemas/PreemptibilityRules" }, "priorityClass": { "$ref": "#/components/schemas/StringRules" }, "restartPolicy": { "$ref": "#/components/schemas/DistributedInferenceRestartPolicyRules" }, "servingPort": { "$ref": "#/components/schemas/DistributedInferenceServingPortRules-2" } }, "type": "object" }, { "$ref": "#/components/schemas/DistributedInferenceStartupPolicyFieldRules" }, { "$ref": "#/components/schemas/DistributedInferenceWorkersFieldRules" }, { "$ref": "#/components/schemas/DistributedInferenceReplicasFieldRules" } ], "nullable": true, "type": "object" }, "DistributedInferenceLeaderWorkerRulesV2": { "properties": { "annotations": { "$ref": "#/components/schemas/InstancesRules" }, "args": { "$ref": "#/components/schemas/StringRules" }, "command": { "$ref": "#/components/schemas/StringRules" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/NumberRules" }, "cpuCoreRequest": { "$ref": "#/components/schemas/NumberRules" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/QuantityRules" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/QuantityRules" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResourcesRules" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/IntegerRules" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/QuantityRules" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/QuantityRules" }, "gpuPortionLimit": { "$ref": "#/components/schemas/NumberRules" }, "gpuPortionRequest": { "$ref": "#/components/schemas/NumberRules" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestRules" }, "largeShmRequest": { "$ref": "#/components/schemas/BooleanRules" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/BooleanRules" }, "environmentVariables": { "$ref": "#/components/schemas/InstancesRules" }, "image": { "$ref": "#/components/schemas/StringRules" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicyRules" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecretsRules" }, "labels": { "$ref": "#/components/schemas/InstancesRules" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/ArbitraryRules" }, "nodeType": { "$ref": "#/components/schemas/StringRules" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinityRules" }, "probes": { "$ref": "#/components/schemas/ProbesRules" }, "security": { "nullable": true, "properties": { "capabilities": { "$ref": "#/components/schemas/ArrayRules" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/BooleanRules" }, "runAsGid": { "$ref": "#/components/schemas/IntegerRulesOptional" }, "runAsNonRoot": { "$ref": "#/components/schemas/BooleanRules" }, "runAsUid": { "$ref": "#/components/schemas/IntegerRulesOptional" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileTypeRules" }, "supplementalGroups": { "$ref": "#/components/schemas/StringRules" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSourceRules" } }, "type": "object" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapsRules" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirsRules" }, "pvc": { "$ref": "#/components/schemas/PvcsRules" }, "secretVolume": { "$ref": "#/components/schemas/SecretsRules" } }, "type": "object" }, "tolerations": { "$ref": "#/components/schemas/TolerationsRules" }, "workingDir": { "$ref": "#/components/schemas/StringRules" } }, "type": "object" }, "DistributedInferenceLeaderRules": { "properties": { "leader": { "description": "Defines the pod specification for the leader. Must always be provided, regardless of the number of workers.", "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceLeaderWorkerRulesV2" } ], "nullable": true, "type": "object" } } }, "DistributedInferenceWorkerRules": { "properties": { "worker": { "description": "Defines the pod specification for the workers. Required only if the number of workers is greater than 0.", "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceLeaderWorkerRulesV2" } ], "nullable": true, "type": "object" } } }, "DistributedInferenceRulesV2": { "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceCommonRulesV2" }, { "$ref": "#/components/schemas/DistributedInferenceLeaderRules" }, { "$ref": "#/components/schemas/DistributedInferenceWorkerRules" } ] }, "DistributedInferenceImposedAssets": { "properties": { "leader": { "$ref": "#/components/schemas/ImposedAssets" }, "worker": { "$ref": "#/components/schemas/ImposedAssets" } }, "nullable": true, "type": "object" }, "DistributedInferencePolicyDefaultsAndRulesV2": { "properties": { "defaults": { "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceDefaultsV2" } ], "nullable": true, "type": "object" }, "rules": { "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceRulesV2" } ], "nullable": true, "type": "object" }, "imposedAssets": { "$ref": "#/components/schemas/DistributedInferenceImposedAssets" }, "status": { "$ref": "#/components/schemas/PolicyValidationStatus" } }, "nullable": true, "type": "object" }, "DistributedInferencePolicyV2": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyMeta" }, "policy": { "$ref": "#/components/schemas/DistributedInferencePolicyDefaultsAndRulesV2" }, "effective": { "$ref": "#/components/schemas/DistributedInferencePolicyDefaultsAndRulesV2" }, "effectiveUpdatedAt": { "$ref": "#/components/schemas/Timestamp" } }, "nullable": true, "type": "object" }, "DistributedInferencePolicyOverwriteRequestV2": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyCreationFields" }, "policy": { "$ref": "#/components/schemas/DistributedInferencePolicyDefaultsAndRulesV2" } }, "type": "object" }, "DistributedInferencePolicyChangeRequestV2": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyCreationFields" }, "policy": { "$ref": "#/components/schemas/DistributedInferencePolicyDefaultsAndRulesV2" }, "reset": { "$ref": "#/components/schemas/FieldsToReset" } }, "type": "object" }, "AutoScalingMaxReplicas": { "description": "The maximum number of replicas for autoscaling. Defaults to minReplicas. Must be no less than minReplicas.", "type": "integer", "format": "int32", "minimum": 1, "nullable": true }, "AutoScalingMetricNim": { "description": "The metric to use for autoscaling (mandatory).", "type": "string", "pattern": "^[a-zA-Z_:][a-zA-Z0-9_:]*$", "example": "http_requests_total", "nullable": true }, "AutoScalingMetricThreshold": { "description": "The threshold to use with the specified metric for autoscaling (mandatory).", "type": "integer", "format": "int32", "nullable": true }, "AutoScalingMinReplicas": { "description": "The minimum number of replicas for autoscaling. Defaults to 1.", "type": "integer", "format": "int32", "minimum": 1, "nullable": true }, "AutoScalingScaleWindowSeconds": { "description": "The time window for autoscaling decisions, in seconds. Defaults to 300 seconds.", "type": "integer", "format": "int32", "minimum": 60, "maximum": 3600, "nullable": true }, "NimCache": { "description": "The specification of a NIM cache volume.", "type": "object", "properties": { "name": { "description": "The NIMCache resource name (mandatory).", "type": "string", "minLength": 1, "example": "nim-cache-a", "nullable": true }, "profile": { "description": "The NIM profile to use (optional).", "type": "string", "minLength": 1, "example": "tensorrt_llm-b200-fp8-tp2-pp1-latency-2901:10de-2", "nullable": true } }, "nullable": true }, "NimServicePvcFields": { "properties": { "existingPvc": { "description": "Verify existing PVC. PVC is assumed to exist when set to `true`. If set to `false`, the PVC will be created, if it does not exist.", "type": "boolean", "default": false, "nullable": true }, "claimName": { "description": "Name for the PVC. Allow referencing it across workloads. If not provided, a name based on the workload name and scope will be auto-generated.", "type": "string", "minLength": 1, "maxLength": 63, "example": "my-claim", "nullable": true, "pattern": ".*" }, "readOnly": { "description": "Permit only read access to PVC.", "type": "boolean", "default": false, "nullable": true }, "claimInfo": { "$ref": "#/components/schemas/ClaimInfo" } }, "nullable": true, "type": "object" }, "NimServiceWorkers": { "description": "Specifies the number of worker nodes to use when running the NIM service in multi-node.", "type": "integer", "format": "int32", "minimum": 1, "maximum": 1000, "example": 3, "nullable": true }, "NimServiceMultiNode": { "description": "Defines whether the NIM service runs as a multi-node deployment. If workers is set to 1 or more, the service runs in multi-node.", "properties": { "workers": { "$ref": "#/components/schemas/NimServiceWorkers" } }, "nullable": true, "type": "object" }, "NimServiceNgcAuthSecret": { "description": "The name of a Kubernetes secret containing the NGC access credentials. The secret must contain a key named NGC_API_KEY with the API key as the value.", "type": "string", "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?$", "nullable": true }, "NimServiceReplicas": { "default": 1, "description": "The number of replicas to deploy.", "type": "integer", "format": "int32", "minimum": 0, "maximum": 1000, "example": 2, "nullable": true }, "ServingPortServiceType": { "description": "The type of Kubernetes service to create for the inference deployment. Options include 'ClusterIP' (default), 'NodePort', 'LoadBalancer', and 'ExternalName'.", "type": "string", "default": "ClusterIP", "enum": [ "ClusterIP", "NodePort", "LoadBalancer", "ExternalName" ], "nullable": true }, "ServingPortPort": { "description": "The port that the container running the inference service exposes (mandatory).", "type": "integer", "format": "int32", "minimum": 1, "maximum": 65535, "example": 8000, "nullable": true }, "ServingPortGrpcPort": { "description": "The GRPC port that the container running the inference service exposes.", "type": "integer", "format": "int32", "minimum": 1, "maximum": 65535, "example": 8001, "nullable": true }, "ServingPortMetricsPort": { "description": "The port where metrics are exposed, required only if it's different than the main port.", "type": "integer", "format": "int32", "minimum": 1, "maximum": 65535, "example": 8002, "nullable": true }, "ServingPortExposeExternally": { "description": "Indicates whether the inference serving endpoint should be accessible outside the cluster. If set to true, the endpoint will be exposed externally. To enable external access, your administrator must configure the cluster as described in the [inference requirements](https://run-ai-docs.nvidia.com/saas/getting-started/installation/system-requirements#inference). section.", "type": "boolean", "nullable": true, "default": true }, "ServingPortExposedUrl": { "description": "The custom URL to use for the serving port. If empty (default), an autogenerated URL will be used.", "type": "string", "nullable": true, "pattern": ".*" }, "ServingPortExposedProtocol": { "description": "The protocol to use for the exposed URL. If grpcPort is set, this defaults to grpc. Otherwise, it defaults to http.", "type": "string", "enum": [ "http", "grpc" ], "nullable": true }, "NimServiceServingPort": { "description": "A port for accessing the inference service", "properties": { "serviceType": { "$ref": "#/components/schemas/ServingPortServiceType" }, "port": { "$ref": "#/components/schemas/ServingPortPort" }, "grpcPort": { "$ref": "#/components/schemas/ServingPortGrpcPort" }, "metricsPort": { "$ref": "#/components/schemas/ServingPortMetricsPort" }, "exposeExternally": { "$ref": "#/components/schemas/ServingPortExposeExternally" }, "exposedUrl": { "$ref": "#/components/schemas/ServingPortExposedUrl" }, "exposedProtocol": { "$ref": "#/components/schemas/ServingPortExposedProtocol" } }, "nullable": true, "type": "object" }, "NimServiceDefaults": { "allOf": [ { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/AnnotationsDefaults" }, "autoscaling": { "nullable": true, "properties": { "maxReplicas": { "$ref": "#/components/schemas/AutoScalingMaxReplicas" }, "metric": { "$ref": "#/components/schemas/AutoScalingMetricNim" }, "metricThreshold": { "$ref": "#/components/schemas/AutoScalingMetricThreshold" }, "minReplicas": { "$ref": "#/components/schemas/AutoScalingMinReplicas" }, "scaleWindowSeconds": { "$ref": "#/components/schemas/AutoScalingScaleWindowSeconds" } }, "type": "object" }, "category": { "$ref": "#/components/schemas/Category" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" } }, "type": "object" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariablesDefaults" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecretsDefaults" }, "labels": { "$ref": "#/components/schemas/LabelsDefaults" }, "modelStore": { "nullable": true, "properties": { "nimCache": { "$ref": "#/components/schemas/NimCache" }, "pvc": { "$ref": "#/components/schemas/NimServicePvcFields" } }, "type": "object" }, "multiNode": { "$ref": "#/components/schemas/NimServiceMultiNode" }, "ngcAuthSecret": { "$ref": "#/components/schemas/NimServiceNgcAuthSecret" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "replicas": { "$ref": "#/components/schemas/NimServiceReplicas" }, "security": { "nullable": true, "properties": { "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" } }, "type": "object" }, "servingPort": { "$ref": "#/components/schemas/NimServiceServingPort" }, "tolerations": { "$ref": "#/components/schemas/TolerationsDefaults" } }, "type": "object" } ] }, "NimCacheRules": { "properties": { "name": { "$ref": "#/components/schemas/StringRules" }, "profile": { "$ref": "#/components/schemas/StringRules" } }, "nullable": true, "type": "object" }, "NimServiceMultiNodeRules": { "properties": { "workers": { "$ref": "#/components/schemas/IntegerRules" } }, "nullable": true, "type": "object" }, "ServingPortServiceTypeOptions": { "properties": { "options": { "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/ServingPortServiceType" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "ServingPortServiceTypeRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/ServingPortServiceTypeOptions" } ], "nullable": true, "type": "object" }, "ServingPortExposedProtocolOptions": { "properties": { "options": { "type": "array", "items": { "required": [ "value" ], "properties": { "value": { "$ref": "#/components/schemas/ServingPortExposedProtocol" }, "displayed": { "description": "Textual description of the value", "type": "string", "nullable": true, "pattern": ".*" } } }, "nullable": true } }, "nullable": true, "type": "object" }, "ServingPortExposedProtocolRules": { "allOf": [ { "$ref": "#/components/schemas/StringRulesCommon" }, { "$ref": "#/components/schemas/ServingPortExposedProtocolOptions" } ], "nullable": true, "type": "object" }, "NimServiceServingPortRules": { "description": "A port for accessing the inference service", "properties": { "serviceType": { "$ref": "#/components/schemas/ServingPortServiceTypeRules" }, "port": { "$ref": "#/components/schemas/IntegerRules" }, "grpcPort": { "$ref": "#/components/schemas/IntegerRules" }, "metricsPort": { "$ref": "#/components/schemas/IntegerRules" }, "exposeExternally": { "$ref": "#/components/schemas/BooleanRules" }, "exposedUrl": { "$ref": "#/components/schemas/StringRules" }, "exposedProtocol": { "$ref": "#/components/schemas/ServingPortExposedProtocolRules" } }, "nullable": true, "type": "object" }, "NimServiceRules": { "allOf": [ { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/InstancesRules" }, "autoscaling": { "nullable": true, "properties": { "maxReplicas": { "$ref": "#/components/schemas/IntegerRules" }, "metric": { "$ref": "#/components/schemas/StringRules" }, "metricThreshold": { "$ref": "#/components/schemas/IntegerRules" }, "minReplicas": { "$ref": "#/components/schemas/IntegerRules" }, "scaleWindowSeconds": { "$ref": "#/components/schemas/IntegerRules" } }, "type": "object" }, "category": { "$ref": "#/components/schemas/StringRules" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/NumberRules" }, "cpuCoreRequest": { "$ref": "#/components/schemas/NumberRules" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/QuantityRules" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/QuantityRules" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/IntegerRules" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/QuantityRules" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/QuantityRules" }, "gpuPortionLimit": { "$ref": "#/components/schemas/NumberRules" }, "gpuPortionRequest": { "$ref": "#/components/schemas/NumberRules" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestRules" } }, "type": "object" }, "environmentVariables": { "$ref": "#/components/schemas/InstancesRules" }, "image": { "$ref": "#/components/schemas/StringRules" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicyRules" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecretsRules" }, "labels": { "$ref": "#/components/schemas/InstancesRules" }, "modelStore": { "nullable": true, "properties": { "nimCache": { "$ref": "#/components/schemas/NimCacheRules" }, "pvc": { "$ref": "#/components/schemas/PvcRules" } }, "type": "object" }, "multiNode": { "$ref": "#/components/schemas/NimServiceMultiNodeRules" }, "ngcAuthSecret": { "$ref": "#/components/schemas/StringRules" }, "nodePools": { "$ref": "#/components/schemas/ArrayRules" }, "preemptibility": { "$ref": "#/components/schemas/PreemptibilityRules" }, "priorityClass": { "$ref": "#/components/schemas/StringRules" }, "probes": { "$ref": "#/components/schemas/ProbesRules" }, "replicas": { "$ref": "#/components/schemas/IntegerRules" }, "security": { "nullable": true, "properties": { "runAsGid": { "$ref": "#/components/schemas/IntegerRulesOptional" }, "runAsUid": { "$ref": "#/components/schemas/IntegerRulesOptional" } }, "type": "object" }, "servingPort": { "$ref": "#/components/schemas/NimServiceServingPortRules" }, "tolerations": { "$ref": "#/components/schemas/TolerationsRules" } }, "type": "object" } ] }, "NimServicePolicyDefaultsAndRules": { "properties": { "defaults": { "allOf": [ { "$ref": "#/components/schemas/NimServiceDefaults" } ], "nullable": true, "type": "object" }, "rules": { "allOf": [ { "$ref": "#/components/schemas/NimServiceRules" } ], "nullable": true, "type": "object" }, "status": { "$ref": "#/components/schemas/PolicyValidationStatus" } }, "nullable": true, "type": "object" }, "NimServicePolicy": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyMeta" }, "policy": { "$ref": "#/components/schemas/NimServicePolicyDefaultsAndRules" }, "effective": { "$ref": "#/components/schemas/NimServicePolicyDefaultsAndRules" }, "effectiveUpdatedAt": { "$ref": "#/components/schemas/Timestamp" } }, "nullable": true, "type": "object" }, "NimServicePolicyOverwriteRequest": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyCreationFields" }, "policy": { "$ref": "#/components/schemas/NimServicePolicyDefaultsAndRules" } }, "type": "object" }, "NimServicePolicyChangeRequest": { "properties": { "meta": { "$ref": "#/components/schemas/PolicyCreationFields" }, "policy": { "$ref": "#/components/schemas/NimServicePolicyDefaultsAndRules" }, "reset": { "$ref": "#/components/schemas/FieldsToReset" } }, "type": "object" }, "PolicyCrossType": { "properties": { "workspace": { "$ref": "#/components/schemas/WorkspacePolicyV2" }, "training": { "$ref": "#/components/schemas/TrainingPolicyV2" }, "distributed": { "$ref": "#/components/schemas/DistributedPolicyV2" }, "inference": { "$ref": "#/components/schemas/InferencePolicyV2" }, "distributedInference": { "$ref": "#/components/schemas/DistributedInferencePolicyV2" }, "nimService": { "$ref": "#/components/schemas/NimServicePolicy" } }, "nullable": true, "type": "object" }, "V1Error": { "required": [ "code", "message" ], "properties": { "code": { "type": "integer", "minimum": 100, "maximum": 599 }, "message": { "type": "string" }, "details": { "type": "string" } }, "example": { "code": 400, "message": "Bad request - Resource should have a name" } }, "StorageClass1": { "type": "object", "required": [ "storage_class_name" ], "properties": { "cluster_id": { "type": "string", "format": "uuid", "description": "Cluster ID which has sent the resource info", "example": "550e8400-e29b-41d4-a716-446655440000" }, "storage_class_name": { "type": "string", "description": "Storage class name", "example": "my-storage-class" }, "Spec": { "type": "object", "required": [ "is_default" ], "properties": { "provisioner": { "type": "string", "description": "The provisioner type (unique name)", "example": "kubernetes.io/aws-ebs" }, "allow_volume_expansion": { "type": "boolean", "description": "Indicates whether the storage class allows volume expansion", "example": true }, "is_default": { "type": "boolean", "description": "Indicates whether the storage class is the default one", "example": false } } } } }, "StorageClasses1": { "type": "object", "required": [ "items" ], "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/StorageClass1" } } } }, "StorageClassSpec": { "type": "object", "required": [ "isDefault" ], "properties": { "provisioner": { "type": "string", "description": "The provisioner type (unique name)", "example": "kubernetes.io/aws-ebs" }, "allowVolumeExpansion": { "type": "boolean", "description": "Indicates whether the storage class allows volume expansion", "example": true }, "isDefault": { "type": "boolean", "description": "Indicates whether the storage class is the default one", "example": false } } }, "AllowedForAssets": { "type": "boolean", "nullable": true, "description": "Determines whether PVC assets can be created using this storage class." }, "AllowedForWorkloads": { "type": "boolean", "nullable": true, "description": "Allows workloads to include PVCs that use this storage class. When disabled, users cannot (a) include non-existing PVC assets created with this class in asset-based submissions, or (b) attach PVCs with existing=false to workloads using this class." }, "AllowedForEphemeralVolumes": { "type": "boolean", "nullable": true, "description": "Allows workloads to create ephemeral volumes using this storage class. When disabled, users cannot (a) create PVC assets with autoDelete=true and ephemeral=true, or (b) include PVC instances with isEphemeral=false that use this storage class." }, "AllowedForPersistentVolumes": { "type": "boolean", "nullable": true, "description": "Allows workloads to create persistent volumes using this storage class. When disabled, users cannot (a) create PVC assets with autoDelete=true and ephemeral=true, or (b) include PVC instances with isEphemeral=false that use this storage class." }, "AllowDataSharing": { "type": "boolean", "nullable": true, "description": "Allows creation of PVCs using a shared volume." }, "StorageClassPermissions": { "type": "object", "nullable": true, "description": "Defines the access permissions and behavioral rules for this storage class.", "properties": { "allowedForAssets": { "$ref": "#/components/schemas/AllowedForAssets" }, "allowedForWorkloads": { "$ref": "#/components/schemas/AllowedForWorkloads" }, "allowedForEphemeralVolumes": { "$ref": "#/components/schemas/AllowedForEphemeralVolumes" }, "allowedForPersistentVolumes": { "$ref": "#/components/schemas/AllowedForPersistentVolumes" }, "allowDataSharing": { "$ref": "#/components/schemas/AllowDataSharing" } } }, "PvcSupportedAccessModes": { "description": "Defines the access modes supported by the given storage class. These values indicate which access configurations can be used when creating PVCs with this class.", "properties": { "readWriteOnce": { "description": "Indicates whether the readWriteOnce access mode is supported. This mode allows a volume to be mounted as read/write by a single node.", "type": "boolean", "default": true, "nullable": true }, "readOnlyMany": { "description": "Indicates whether the readOnlyMany access mode is supported. This mode allows a volume to be mounted as read-only by many nodes.", "type": "boolean", "default": true, "nullable": true }, "readWriteMany": { "description": "Indicates whether the readWriteMany access mode is supported. This mode allows a volume to be mounted as read/write by many nodes.", "type": "boolean", "default": true, "nullable": true } }, "nullable": true, "type": "object" }, "AccessModeCustomization": { "description": "Controls whether PVC access modes are required and what defaults to apply.", "properties": { "required": { "type": "boolean", "description": "If true, the accessMode field is mandatory when creating a PVC that uses this storage class.", "nullable": true }, "default": { "$ref": "#/components/schemas/PvcAccessModes" }, "supportedValues": { "$ref": "#/components/schemas/PvcSupportedAccessModes" } }, "type": "object", "nullable": true }, "VolumeModeCustomization": { "description": "Defines whether the volumeMode field is required when creating PVCs and specifies default and supported modes for the storage class.", "properties": { "required": { "type": "boolean", "description": "Indicates whether the volumeMode field is mandatory when creating a PVC.", "nullable": true }, "default": { "$ref": "#/components/schemas/PvcVolumeMode" }, "supportedValues": { "description": "Lists which volume modes are supported for this storage class.", "type": "object", "nullable": true, "properties": { "filesystem": { "type": "boolean", "description": "Indicates whether filesystem mode is supported. Filesystem allows the volume to be mounted as a filesystem, enabling the usage of directories and files.", "default": true, "nullable": true }, "block": { "type": "boolean", "description": "Indicates whether block mode is supported. Exposes the volume as a block storage, which can be formatted or used by applications directly without a filesystem.", "default": true, "nullable": true } } } }, "type": "object", "nullable": true }, "PvcClaimMinSize": { "description": "Minimum claim size allowed for PVCs created with this storage class. Mandatory when existingPvc = false. Recommended values: TB, GB, MB, TIB, GIB, MIB.", "type": "string", "pattern": "^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$", "example": "1G", "nullable": true }, "PvcClaimMaxSize": { "description": "Maximum claim size allowed for PVCs created with this storage class. Mandatory when existingPvc = false. Recommended values: TB, GB, MB, TIB, GIB, MIB.", "type": "string", "pattern": "^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$", "example": "1G", "nullable": true }, "PvcClaimStepSize": { "description": "Defines the incremental step between allowed numeric values (for example, 1, 0.1).", "type": "string", "pattern": "^([+]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$", "example": "1G", "nullable": true }, "ClaimSizeCustomization": { "description": "Defines the default, supported units, and range constraints for PVC claim sizes. These settings control the requested storage capacity when creating a PVC using this storage class.", "properties": { "default": { "$ref": "#/components/schemas/PvcClaimSize" }, "supportedUnits": { "description": "Units supported for specifying PVC sizes. Valid values: \"MB\", \"MiB\", \"GB\", \"GiB\", \"TB\", \"TiB\".", "type": "array", "items": { "type": "string", "enum": [ "MB", "MiB", "GB", "GiB", "TB", "TiB" ] } }, "min": { "$ref": "#/components/schemas/PvcClaimMinSize" }, "max": { "$ref": "#/components/schemas/PvcClaimMaxSize" }, "step": { "$ref": "#/components/schemas/PvcClaimStepSize" } }, "type": "object", "nullable": true }, "PvcAddedAttributeFormat": { "type": "string", "description": "Defines the data type the attribute can accept. Enum: \"text\" \"number\" \"boolean\"", "enum": [ "text", "number", "boolean" ], "nullable": true }, "PvcAddedAttribute": { "description": "Attribute that is added to any PVC of a given storage class.", "required": [ "key" ], "properties": { "key": { "type": "string", "minLength": 1, "description": "The annotation key for the PVC. Must comply with Kubernetes naming rules: ≤63 characters, beginning and ending with an alphanumeric character ([A-Za-z0-9]), and may include dashes (-), underscores (_), or dots (.).", "maxLength": 63, "pattern": "^([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$", "example": "dnsname" }, "format": { "description": "Defines the data type the attribute can accept. Enum: \"text\" \"number\" \"boolean\"", "$ref": "#/components/schemas/PvcAddedAttributeFormat" }, "display": { "type": "string", "minLength": 1, "description": "User-friendly display name for the attribute, shown in the UI.", "nullable": true, "example": "DNS Name" }, "description": { "type": "string", "minLength": 1, "description": "A description of the attribute's purpose or expected values.", "nullable": true, "example": "The host name of the DNS" }, "placeholder": { "type": "string", "minLength": 1, "description": "Example or hint text for the attribute's value, displayed as a watermark or help message in the UI.", "nullable": true, "example": "enter hostname or IP address" }, "required": { "description": "Indicates whether this attribute is mandatory.", "type": "boolean", "nullable": true, "example": "true" }, "defaultValue": { "description": "Default value assigned to the attribute when not explicitly provided.", "type": "string", "minLength": 1, "nullable": true, "example": "my.dns.com" }, "validationRegexp": { "description": "Regular expression used to validate user input for text attributes.", "type": "string", "minLength": 1, "nullable": true, "example": "^[a-zA-Z0-9.-_]+$" }, "minValue": { "description": "Minimum allowed value for attributes of type number.", "type": "number", "minLength": 1, "nullable": true, "example": "100" }, "maxValue": { "description": "Maximum allowed value for attributes of type number.", "type": "number", "minLength": 1, "nullable": true, "example": "200" }, "step": { "description": "Defines the incremental step between allowed numeric values (for example, 1, 0.1).", "type": "number", "minLength": 1, "nullable": true, "example": "5" }, "validationError": { "description": "Custom validation error message shown if input fails validation. If omitted, a default error message is generated automatically.", "type": "string", "minLength": 1, "nullable": true, "example": "Invalid URL" } }, "nullable": true, "type": "object" }, "AttributesCustomization": { "description": "Defines additional annotation attributes to be applied to PVCs created under this storage class. Each attribute describes an annotation key and its expected value format, display name, and purpose.", "type": "array", "items": { "$ref": "#/components/schemas/PvcAddedAttribute" } }, "StorageClassCustomization": { "description": "Optional UI/policy controls that define defaults and requirements when creating PVCs with this storage class.", "properties": { "accessMode": { "$ref": "#/components/schemas/AccessModeCustomization" }, "volumeMode": { "$ref": "#/components/schemas/VolumeModeCustomization" }, "claimSize": { "$ref": "#/components/schemas/ClaimSizeCustomization" }, "attributes": { "$ref": "#/components/schemas/AttributesCustomization" } }, "type": "object", "nullable": true }, "StorageClassV2": { "type": "object", "required": [ "clusterId", "storageClassName", "spec" ], "properties": { "clusterId": { "type": "string", "format": "uuid", "description": "Cluster ID which has sent the resource info", "example": "550e8400-e29b-41d4-a716-446655440000" }, "storageClassName": { "type": "string", "description": "Storage class name", "example": "my-storage-class" }, "spec": { "$ref": "#/components/schemas/StorageClassSpec" }, "permissions": { "$ref": "#/components/schemas/StorageClassPermissions" }, "customization": { "$ref": "#/components/schemas/StorageClassCustomization" } } }, "StorageClassesV2": { "type": "object", "required": [ "items" ], "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/StorageClassV2" } } } }, "ScopeClusterId": { "description": "The ID of the cluster.", "type": "string", "format": "uuid" }, "StorageClassName": { "description": "The name of the storage class to which the configuration applies.", "type": "string", "example": "Standard" }, "StorageClassConfiguration": { "type": "object", "required": [ "id", "tenantId", "scopeType", "scopeId", "name" ], "properties": { "id": { "description": "The unique identifier of the storage class configuration.", "type": "string", "format": "uuid" }, "tenantId": { "$ref": "#/components/schemas/TenantId" }, "scopeType": { "description": "Currently supported value: 'cluster', which is also the default.", "type": "string", "enum": [ "cluster" ], "default": "cluster", "example": "cluster" }, "scopeId": { "$ref": "#/components/schemas/ScopeClusterId" }, "name": { "$ref": "#/components/schemas/StorageClassName" }, "permissions": { "$ref": "#/components/schemas/StorageClassPermissions" }, "customization": { "$ref": "#/components/schemas/StorageClassCustomization" } } }, "StorageClassConfigurationListResponse": { "type": "object", "required": [ "storageClassConfigurations" ], "properties": { "storageClassConfigurations": { "description": "A list of storage class configuration objects. Each object defines the configuration details for a specific storage class.", "type": "array", "items": { "$ref": "#/components/schemas/StorageClassConfiguration" } }, "next": { "type": "integer", "example": 1 } } }, "StorageClassConfigurationCreationRequest": { "type": "object", "required": [ "scopeType", "scopeId", "name" ], "properties": { "tenantId": { "type": "integer", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/TenantId" } ] }, "scopeType": { "type": "string", "description": "the scope type of the configuration.", "enum": [ "cluster" ], "default": "cluster", "example": "cluster" }, "scopeId": { "$ref": "#/components/schemas/ScopeClusterId" }, "name": { "$ref": "#/components/schemas/StorageClassName" }, "permissions": { "$ref": "#/components/schemas/StorageClassPermissions" }, "customization": { "$ref": "#/components/schemas/StorageClassCustomization" } } }, "StorageClassConfigurationUpdateRequest": { "type": "object", "properties": { "permissions": { "$ref": "#/components/schemas/StorageClassPermissions" }, "customization": { "$ref": "#/components/schemas/StorageClassCustomization" } } }, "PvcAttributesToRemove": { "description": "optional list of attributes that you wish to remove", "properties": { "attributesToRemove": { "type": "array", "items": { "type": "string" }, "example": [ "dnsname", "dnsip" ] } }, "type": "object", "nullable": true }, "StorageClassConfigurationPatchRequest": { "type": "object", "properties": { "permissions": { "$ref": "#/components/schemas/StorageClassPermissions" }, "customization": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/StorageClassCustomization" }, { "$ref": "#/components/schemas/PvcAttributesToRemove" } ], "nullable": true } } }, "ProjectCreateRequest": { "required": [ "name", "departmentId" ], "allOf": [ { "properties": { "name": { "type": "string", "description": "Project Name", "example": "team-a" }, "departmentId": { "type": "integer", "format": "int32", "description": "ID of the department that owns the project.", "example": 2 }, "nodePoolsResources": { "type": "array", "items": { "$ref": "#/components/schemas/NodePoolAssignedResourcesCreate" }, "description": "Resources assigned to this Project per Node Pool." }, "namespace": { "type": "string", "description": "The name of an existing namespace to use for the project in the cluster. Supported only for cluster versions 2.12 or higher.", "example": "ns-proj1" } } }, { "$ref": "#/components/schemas/ProjectCommonFields" } ] }, "ProjectUpdateRequest1": { "allOf": [ { "properties": { "nodePoolsResources": { "type": "array", "items": { "$ref": "#/components/schemas/NodePoolAssignedResources" }, "description": "Resources assigned to this Project per Node Pool." } } }, { "$ref": "#/components/schemas/ProjectCommonFields" } ] }, "ProjectCommonFields": { "properties": { "deservedGpus": { "type": "number", "description": "Deprecated. Use 'deserved' for the relevant resource type under `NodePoolResources`. The project's deserved GPU allocation in case the cluster has those resources.", "example": 3, "deprecated": true }, "maxAllowedGpus": { "type": "number", "description": "Deprecated. Instead, use `maxAllowed` for the relevant resource type under `NodePoolResources`. An upper limit for the amount of GPUs the project can get (Even if over quota is allowed and resources are available).", "example": 5, "deprecated": true }, "gpuOverQuotaWeight": { "type": "number", "description": "Deprecated. Instead, use `overQuotaWeight` for the relevant resource type under `NodePoolResources`. The priority the project gets for over quota resources.", "maximum": 3, "minimum": 0, "example": 1, "deprecated": true }, "defaultNodePools": { "type": "array", "description": "Default node pools list for workload submission for this project if a workload doesn't specify a node pools list.", "items": { "type": "string" }, "example": [ "default" ] }, "interactiveJobTimeLimitSecs": { "type": "number", "description": "A limit (in seconds) for the duration of interactive jobs from this project.", "example": 3600 }, "interactiveJobMaxIdleDurationSecs": { "type": "number", "description": "Maximum duration (in seconds) that an interactive job can be idle before being terminated.", "example": 3000 }, "interactivePreemptibleJobMaxIdleDurationSecs": { "type": "number", "description": "Maximum duration (in seconds) that an interactive preemptible job can be idle before being terminated.", "example": 3000 }, "trainingJobTimeLimitSecs": { "type": "number", "description": "A limit (in seconds) for the duration of training jobs from this project. Available only from cluster version 2.12", "example": 3600 }, "trainingJobMaxIdleDurationSecs": { "type": "number", "description": "Maximum duration (in seconds) that a training job can be idle before being terminated.", "example": 3000 }, "nodeAffinity": { "allOf": [ { "$ref": "#/components/schemas/JobsNodeAffinity" } ], "description": "Node affinity configuration for jobs in the project." }, "permissions": { "allOf": [ { "$ref": "#/components/schemas/ResourcePermissions" } ], "description": "Deprecated. Instead, use the `accessRules` API to add permissions to a specific subject in the project scope.", "deprecated": true }, "resources": { "allOf": [ { "$ref": "#/components/schemas/AssignedResources" } ], "deprecated": true, "description": "Deprecated. Instead, use `nodePoolsResources`. Total resources assigned to the Project. Can only be used in PUT/POST when there is a single Node Pool in the system. The resources returned in `GET` are the sum of all Node Pool Resources." } } }, "Project2": { "allOf": [ { "properties": { "name": { "type": "string", "description": "Project name.", "example": "team-a" }, "nodePoolsResources": { "type": "array", "items": { "$ref": "#/components/schemas/NodePoolAssignedResources" }, "description": "Resources assigned to this Project per Node Pool." }, "namespace": { "type": "string", "description": "The name of an existing namespace to use for the project in the cluster. Supported only for cluster versions 2.12 or higher.", "example": "ns-proj1" }, "id": { "type": "integer", "format": "int32", "description": "Project id.", "readOnly": true, "example": 5 }, "departmentId": { "type": "integer", "format": "int32", "description": "ID of the department that owns the project.", "example": 2 }, "tenantId": { "type": "integer", "format": "int32", "description": "ID of the tenant where the project is located.", "example": 2 }, "clusterUuid": { "type": "string", "format": "uuid", "description": "ID of the cluster where the project is located.", "example": "71f69d83-ba66-4822-adf5-55ce55efd210" }, "departmentName": { "type": "string", "description": "Name of the department where the project is located.", "example": "department-a" }, "interactiveNodeAffinity": { "type": "string", "example": "none" }, "trainNodeAffinity": { "type": "string", "example": "none" }, "createdAt": { "type": "string", "description": "Creation date of the project.", "format": "date-time", "example": "2021-12-14T16:04:15.099Z" }, "status": { "$ref": "#/components/schemas/ProjectStatus1" }, "phase": { "type": "string", "description": "project's phase", "example": "Ready" } } }, { "$ref": "#/components/schemas/ProjectCommonFields" } ] }, "ResourcePermissions": { "properties": { "users": { "type": "array", "items": { "type": "string" }, "description": "Names of users that have permissions to the project." }, "groups": { "type": "array", "items": { "type": "string" }, "description": "Names of groups that have permissions to the project." }, "applications": { "type": "array", "items": { "type": "string" }, "description": "Names of applications that have permissions to the project." } } }, "JobsNodeAffinity": { "properties": { "train": { "allOf": [ { "$ref": "#/components/schemas/NodeAffinity" } ], "description": "Node affinity configuration for training jobs." }, "interactive": { "allOf": [ { "$ref": "#/components/schemas/NodeAffinity" } ], "description": "Node affinity configuration for interactive jobs." } } }, "NodeAffinity": { "properties": { "affinityType": { "type": "string", "enum": [ "no_limit", "only_selected" ], "description": "The type of affinity of the jobs on the nodes." }, "selectedTypes": { "type": "array", "items": { "$ref": "#/components/schemas/NodeTypeForProject" } } } }, "NodeTypeForProject": { "properties": { "id": { "type": "number" }, "name": { "type": "string" } } }, "AssignedResources": { "properties": { "id": { "type": "number" }, "gpu": { "allOf": [ { "$ref": "#/components/schemas/Resource1" } ], "description": "GPU number assigned" }, "cpu": { "allOf": [ { "$ref": "#/components/schemas/Resource1" } ], "description": "CPU Millicores assigned. Supported only if 'CPU Resources Quota' feature flag is enabled." }, "memory": { "allOf": [ { "$ref": "#/components/schemas/Resource1" } ], "description": "CPU Memory Mib assigned. Supported only if 'CPU Resources Quota' feature flag is enabled." } } }, "NodePoolAssignedResources": { "required": [ "id" ], "allOf": [ { "properties": { "id": { "description": "The id of the assigned resources. Required in PUT when updating the assigned resources.", "type": "number" } } }, { "$ref": "#/components/schemas/NodePoolAssignedResourcesCreate" } ] }, "NodePoolAssignedResourcesCreate": { "required": [ "nodePool" ], "properties": { "nodePool": { "allOf": [ { "$ref": "#/components/schemas/NodePoolResources" } ], "description": "The node pool which the assigned resources refer to." }, "gpu": { "allOf": [ { "$ref": "#/components/schemas/Resource1" } ], "description": "Number of GPUs assigned in the node pool." }, "cpu": { "allOf": [ { "$ref": "#/components/schemas/Resource1" } ], "description": "Number of CPU Millicores assigned in the node pool. Supported only if the 'CPU Resources Quota' feature flag is enabled." }, "memory": { "allOf": [ { "$ref": "#/components/schemas/Resource1" } ], "description": "Amount of CPU Memory Mib assigned in the node pool. Supported only if the 'CPU Resources Quota' feature flag is enabled." } } }, "Resource1": { "properties": { "deserved": { "type": "number", "description": "The amount of resources guaranteed to be allocated in case the cluster has those resources.", "example": 0 }, "maxAllowed": { "type": "number", "description": "Maximum amount of resources that can be allocated. If equal to deserved, no over-quota will be allowed. Use \"-1\" for unlimited over quota.", "example": 1000 }, "overQuotaWeight": { "type": "number", "description": "The priority for over quota resources.", "example": 2 } } }, "NodePoolResources": { "required": [ "id" ], "properties": { "id": { "type": "number", "description": "Node pool id.", "example": 3 }, "name": { "type": "string", "description": "Node pool name.", "example": "default" } } }, "ProjectStatus1": { "properties": { "namespace": { "type": "string", "description": "The namespace of the project", "example": "runai-team-a" }, "message": { "type": "string", "description": "Detailed phase message", "example": "NamespaceHandlerFailed" }, "quotaStatuses": { "$ref": "#/components/schemas/NodePoolsQuotaStatuses" } } }, "NodePoolsQuotaStatuses": { "type": "array", "items": { "$ref": "#/components/schemas/NodePoolQuotaStatus" }, "description": "The current quota status for each node pool. Supported only for cluster versions 2.15+ or higher." }, "NodePoolQuotaStatus": { "properties": { "nodePoolName": { "type": "string", "description": "The node pool name which the current quota status refers to." }, "allocated": { "$ref": "#/components/schemas/QuotaStatusResourceList" }, "allocatedNonPreemptible": { "$ref": "#/components/schemas/QuotaStatusResourceList" }, "requested": { "$ref": "#/components/schemas/QuotaStatusResourceList" } } }, "QuotaStatusResourceList": { "properties": { "gpu": { "type": "number", "description": "The number of GPUs (allocated/requested/...).", "example": 0 }, "cpu": { "type": "number", "description": "CPU in Millicores (allocated/requested/...).", "example": 1000 }, "memory": { "type": "number", "description": "Memory in Mib (allocated/requested/...).", "example": 1000 } } }, "DepartmentCreateRequest": { "required": [ "name" ], "allOf": [ { "properties": { "nodePoolsResources": { "type": "array", "items": { "$ref": "#/components/schemas/NodePoolAssignedResourcesCreate" }, "description": "Resources assigned to this Department per Node Pool" } } }, { "$ref": "#/components/schemas/DepartmentCommonFields" } ] }, "DepartmentUpdateRequest1": { "required": [ "name" ], "allOf": [ { "properties": { "nodePoolsResources": { "type": "array", "items": { "$ref": "#/components/schemas/NodePoolAssignedResources" }, "description": "Resources assigned to this Department per Node Pool" } } }, { "$ref": "#/components/schemas/DepartmentCommonFields" } ] }, "DepartmentCommonFields": { "properties": { "name": { "type": "string", "description": "The name of the department.", "example": "default" }, "deservedGpus": { "type": "number", "description": "Deprecated. Instead, use `deserved` for the relevant resource type under `NodePoolResources`. Deserved GPUs for the department.", "example": 2, "deprecated": true }, "allowOverQuota": { "type": "boolean", "description": "Deprecated. Instead, use `maxAllowed` for the relevant resource type under `NodePoolResources`. Is over quota allowed for the department.", "example": false, "deprecated": true }, "maxAllowedGpus": { "type": "number", "description": "Deprecated. Instead, use `maxAllowed` for the relevant resource type under `NodePoolResources`. Max allowed GPUs for the department.", "example": 2, "deprecated": true }, "resources": { "allOf": [ { "$ref": "#/components/schemas/AssignedResources" } ], "deprecated": true, "description": "Deprecated. Instead, use 'nodePoolsResources'. Total resources assigned to the Department. Can only be used in PUT/POST when there is a single Node Pool in the system. The resources returned in GET are the sum of all Node Pool Resources." } } }, "DepartmentAccessControl": { "properties": { "departmentId": { "type": "integer", "format": "int32", "description": "The unique id identifying the department.", "example": 2 }, "departmentAdmins": { "type": "array", "items": { "type": "string" }, "description": "Id's of users with department admin role that are assigned to managed the department" } } }, "Department2": { "allOf": [ { "properties": { "nodePoolsResources": { "type": "array", "items": { "$ref": "#/components/schemas/NodePoolAssignedResources" }, "description": "Resources assigned to the Department per node pool." }, "tenantId": { "type": "integer", "description": "The tenant id this cluster belongs to.", "example": 42 }, "clusterUuid": { "type": "string", "description": "The cluster UUID this department belongs to.", "example": "UUID" }, "createdAt": { "type": "string", "description": "The creation date of the department.", "format": "date-time", "example": "2021-12-14T16:04:15.099Z" }, "id": { "type": "integer", "format": "int32", "description": "The unique id identifying the department.", "example": 2 }, "projects": { "type": "array", "items": { "$ref": "#/components/schemas/Project2" }, "description": "Projects under this department.", "example": [ { "id": 16, "name": "team-a", "deserved_gpus": 3 } ] }, "projectsDeservedGpus": { "type": "string", "description": "Deprecated. Instead, use 'nodePoolsResources' field. Total deserved GPUs of the projects under this department - as string.", "example": "3.00", "deprecated": true }, "departmentAdmins": { "type": "array", "items": { "type": "string" }, "description": "Id's of users with department admin role that are assigned to managed the department" } } }, { "$ref": "#/components/schemas/DepartmentCommonFields" } ] }, "ResourceType": { "type": "string", "description": "Resource type enum for authorization. \n\nNote: The 'apps' resource type is DEPRECATED. Please use 'service-account' instead for managing service accounts.\n", "enum": [ "department", "tenant", "project", "cluster", "cluster-config", "nodepools", "nodes", "settings", "security-settings", "branding-settings", "users", "apps", "service-account", "dashboards-overview", "dashboards-analytics", "dashboards-consumption", "roles", "access_rules", "jobs", "workloads", "workspaces", "trainings", "inferences", "environments", "pvc-assets", "git-assets", "host-path-assets", "nfs-assets", "s3-assets", "compute-resources", "templates", "credentials", "events-history", "policies", "cm-volume-assets", "datavolumes", "secret-volume-assets", "storage-class-configuration", "access-keys", "workload-properties", "network-topologies", "registries", "scrapeable-metrics" ] }, "ResourceTypeGroupId": { "type": "string", "enum": [ "organization", "physical-resource", "iam", "dashboard", "workload", "workload-asset" ] }, "Action": { "type": "string", "enum": [ "create", "read", "update", "delete", "sync" ] }, "Permission": { "type": "object", "required": [ "resourceType", "actions", "groupId", "displayName" ], "properties": { "resourceType": { "$ref": "#/components/schemas/ResourceType" }, "displayName": { "type": "string", "example": "Projects" }, "groupId": { "$ref": "#/components/schemas/ResourceTypeGroupId" }, "actions": { "type": "array", "items": { "$ref": "#/components/schemas/Action" } } } }, "Permissions": { "type": "array", "items": { "$ref": "#/components/schemas/Permission" }, "x-schema-name": "Permissions" }, "KubernetesPermissions": { "type": "object", "description": "This object indicate what kubernetes cluster permission should this role should get", "properties": { "predefinedRole": { "type": "string", "description": "An id of a predefined role to copy the cluster permissions from", "example": "12", "nullable": true } } }, "RoleV1": { "type": "object", "required": [ "name", "description", "permissions", "id", "createdAt", "updatedAt", "createdBy", "custom", "effectiveEnabled" ], "properties": { "id": { "type": "integer", "format": "int32", "example": 32 }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "deletedAt": { "type": "string", "nullable": true, "format": "date-time" }, "createdBy": { "type": "string", "example": "user@run.ai" }, "custom": { "type": "boolean" }, "effectiveEnabled": { "type": "boolean", "default": true }, "permissions": { "$ref": "#/components/schemas/Permissions" }, "name": { "type": "string", "example": "admin" }, "description": { "type": "string", "example": "can manage all resources" }, "enabled": { "type": "boolean", "default": true, "nullable": true }, "kubernetesPermissions": { "$ref": "#/components/schemas/KubernetesPermissions" } } }, "RolesV1": { "type": "array", "items": { "$ref": "#/components/schemas/RoleV1" } }, "RolePermissionSet": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid" }, "name": { "type": "string", "example": "test" } } }, "RoleCreationFields": { "type": "object", "required": [ "name", "description" ], "properties": { "name": { "type": "string", "example": "admin" }, "description": { "type": "string", "example": "can manage all resources" }, "enabled": { "type": "boolean", "default": true, "nullable": true }, "permissionSets": { "type": "array", "items": { "$ref": "#/components/schemas/RolePermissionSet" } }, "kubernetesPermissions": { "$ref": "#/components/schemas/KubernetesPermissions" } } }, "PermissionAction": { "type": "string", "enum": [ "create", "read", "update", "delete" ] }, "RolePermission": { "type": "object", "required": [ "resourceType", "actions" ], "properties": { "resourceType": { "$ref": "#/components/schemas/ResourceType" }, "actions": { "type": "array", "items": { "$ref": "#/components/schemas/PermissionAction" } } } }, "RolePermissions": { "type": "array", "items": { "$ref": "#/components/schemas/RolePermission" } }, "RoleCalculatedFields": { "type": "object", "required": [ "id", "createdAt", "updatedAt", "createdBy", "custom", "effectiveEnabled", "permissions" ], "properties": { "id": { "type": "integer", "format": "int32", "example": 32 }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "deletedAt": { "type": "string", "nullable": true, "format": "date-time" }, "createdBy": { "type": "string", "example": "user@run.ai" }, "custom": { "type": "boolean" }, "effectiveEnabled": { "type": "boolean", "default": true }, "permissions": { "$ref": "#/components/schemas/RolePermissions" } } }, "Role1": { "allOf": [ { "$ref": "#/components/schemas/RoleCreationFields" }, { "$ref": "#/components/schemas/RoleCalculatedFields" } ] }, "RoleCreationFieldsInternal": { "allOf": [ { "$ref": "#/components/schemas/RoleCreationFields" }, { "type": "object", "required": [ "name", "description" ] } ] }, "PermissionSet": { "allOf": [ { "$ref": "#/components/schemas/RolePermissionSet" }, { "type": "object", "required": [ "name", "permissions" ], "properties": { "description": { "type": "string" }, "permissions": { "$ref": "#/components/schemas/RolePermissions" } } } ] }, "AccessRulesSortFilterFields": { "type": "string", "enum": [ "subjectId", "subjectType", "roleId", "scopeId", "scopeType", "roleName", "scopeName", "createdAt", "deletedAt", "createdBy", "phase" ] }, "SubjectType": { "type": "string", "description": "Subject type enum for access rules.\n\nNote: The 'app' subject type is DEPRECATED. Please use 'service-account' instead for service accounts.\n", "enum": [ "user", "app", "service-account", "group" ] }, "AccessRuleCreationFields": { "type": "object", "required": [ "subjectId", "subjectType", "roleId", "scopeId", "scopeType" ], "properties": { "subjectId": { "type": "string", "example": "user@run.ai", "description": "The unique identifier of the subject (e.g., user, group, or app)." }, "subjectType": { "allOf": [ { "$ref": "#/components/schemas/SubjectType" }, { "description": "The subject assigned to the access rule. Valid values: user, group, app." } ] }, "roleId": { "type": "integer", "format": "int32", "description": "The numeric ID of the assigned role.", "example": 53142648 }, "scopeId": { "type": "string", "description": "The unique identifier of the scope.", "example": "a418ed33-9399-48c0-a890-122cadd13bfd" }, "scopeType": { "allOf": [ { "$ref": "#/components/schemas/ScopeType" }, { "description": "The type of scope the access rule applies to. Valid values: system, tenant, cluster, department, project." } ] }, "clusterId": { "$ref": "#/components/schemas/ClusterId" } } }, "EnrichmentDataFields": { "type": "object", "required": [ "roleName", "scopeName" ], "properties": { "roleName": { "type": "string", "description": "The name of the assigned role (e.g., admin, viewer).", "example": "admin" }, "scopeName": { "type": "string", "description": "Human-readable name of the scope (e.g., tenant-x).", "example": "tenant-x" } } }, "AccessRuleMetadataFields": { "type": "object", "required": [ "id", "createdAt", "updatedAt", "createdBy" ], "properties": { "id": { "type": "integer", "format": "int32", "description": "The ID of the access rule entry.", "example": 32 }, "createdAt": { "type": "string", "format": "date-time", "description": "The timestamp for when the access rule was created." }, "updatedAt": { "type": "string", "format": "date-time", "description": "The timestamp for the last time the access rule was updated." }, "deletedAt": { "type": "string", "nullable": true, "format": "date-time", "description": "The timestamp indicating when the access rule was deleted." }, "tenantId": { "$ref": "#/components/schemas/TenantId" }, "createdBy": { "type": "string", "example": "user@run.ai", "description": "Identifier of the user who created the access rule." } } }, "AccessRulePhase": { "type": "string", "enum": [ "Creating", "Ready", "NotReady", "Deleting" ], "description": "Phase of the Access Rule in the cluster.", "example": "Ready" }, "AccessRuleStatusResponse": { "type": "object", "description": "Status of the Access Rule in the cluster. Available only for clusters of version 2.22.0 or above.", "properties": { "phase": { "$ref": "#/components/schemas/AccessRulePhase" }, "message": { "type": "string", "description": "Message for status of Access Rule in the cluster", "example": "Failed to enforce department 'department-a'" }, "details": { "type": "string", "description": "Details for status of Access Rule in the clusters", "example": "NotReady: [cluster1-uuid]; Ready: [cluster2-uuid, cluster3-uuid]" } } }, "AccessRule": { "allOf": [ { "$ref": "#/components/schemas/AccessRuleCreationFields" }, { "$ref": "#/components/schemas/EnrichmentDataFields" }, { "$ref": "#/components/schemas/AccessRuleMetadataFields" }, { "type": "object", "properties": { "status": { "$ref": "#/components/schemas/AccessRuleStatusResponse" } } }, { "required": [ "tenantId" ] } ] }, "AccessRules": { "type": "array", "items": { "$ref": "#/components/schemas/AccessRule" }, "x-schema-name": "AccessRules" }, "AccessRuleSync": { "allOf": [ { "$ref": "#/components/schemas/AccessRuleCreationFields" }, { "$ref": "#/components/schemas/EnrichmentDataFields" }, { "$ref": "#/components/schemas/AccessRuleMetadataFields" }, { "type": "object", "properties": { "predefinedRole": { "type": "object", "nullable": true, "properties": { "id": { "type": "string", "description": "Id of the predefined role for cluster permissions", "example": "12" }, "name": { "type": "string", "description": "Name of the predefined role for cluster permissions", "example": "admin" } } }, "isDeleting": { "type": "boolean", "default": false, "description": "Indicates if the access rule is in 'Deleting' phase and should be deleted from the cluster", "example": false } } } ] }, "AccessRuleById": { "allOf": [ { "$ref": "#/components/schemas/AccessRule" }, { "properties": { "scopePath": { "type": "string", "nullable": true, "example": "runai/production-cluster/dep-42/prj-73" } } } ] }, "AccessRuleClusterPhase": { "type": "string", "enum": [ "Ready", "NotReady", "Deleted" ], "description": "Phase of the Access Rule in the cluster", "example": "Ready" }, "AccessRuleStatusRequest": { "type": "object", "required": [ "phase", "message" ], "properties": { "phase": { "$ref": "#/components/schemas/AccessRuleClusterPhase" }, "message": { "type": "string", "description": "Message for status of Access Rule in the cluster", "example": "Failed to enforce department 'department-a'" } } }, "AccessRuleForSync": { "allOf": [ { "$ref": "#/components/schemas/AccessRuleStatusRequest" }, { "type": "object", "required": [ "accessRuleId" ], "properties": { "accessRuleId": { "type": "integer", "format": "int32", "minimum": 0, "description": "The id of the access rule to retrieve", "example": 32 } } } ] }, "IdsList": { "type": "array", "description": "List of ids to perform the action on.", "items": { "type": "string", "format": "uuid", "description": "Id to perform the action on." }, "minLength": 1 }, "AccessRulesBatchAction": { "type": "string", "description": "Specifies the operation to perform. Must be set to \"delete\".", "enum": [ "delete", "validate_delete" ] }, "AccessRulesBatchFields": { "type": "object", "description": "Deletes a batch of access rules in a single operation. It requires a list of rule IDs and an action flag explicitly set to \"delete\". It returns the result of the operation, including which items were successfully deleted and which failed.", "required": [ "ids", "action" ], "properties": { "ids": { "$ref": "#/components/schemas/IdsList" }, "action": { "$ref": "#/components/schemas/AccessRulesBatchAction" } } }, "AccessRuleDeletionBatchId": { "type": "string", "format": "uuid", "description": "The unique ID of the batch operation." }, "AccessRuleDeletionBatchIdsList": { "type": "array", "description": "List of access rule IDs that were successfully deleted.", "items": { "type": "string", "format": "uuid" }, "minLength": 1 }, "AccessRuleDeletionBatchErrorCode": { "type": "integer", "format": "int32", "description": "A numeric code representing the error type." }, "AccessRuleDeletionBatchErrorMessage": { "type": "string", "description": "A human-readable message describing the access rule IDs that failed to delete." }, "AccessRuleDeletionBatchResponseFailureItem": { "type": "object", "required": [ "id", "code", "message" ], "properties": { "id": { "type": "string", "format": "uuid" }, "code": { "$ref": "#/components/schemas/AccessRuleDeletionBatchErrorCode" }, "message": { "$ref": "#/components/schemas/AccessRuleDeletionBatchErrorMessage" } } }, "AccessRuleDeletionBatchResponse": { "type": "object", "required": [ "id" ], "properties": { "id": { "$ref": "#/components/schemas/AccessRuleDeletionBatchId" }, "succeeded": { "$ref": "#/components/schemas/AccessRuleDeletionBatchIdsList" }, "failed": { "type": "array", "description": "Details of the access rule IDs that failed to delete.", "items": { "$ref": "#/components/schemas/AccessRuleDeletionBatchResponseFailureItem" } } } }, "AccessRuleSubjects": { "type": "array", "description": "subjects for the access rules. must have at least one value", "items": { "type": "object", "required": [ "subjectId", "subjectType" ], "properties": { "subjectId": { "type": "string", "description": "The unique identifier of the subject e.g., user, group, or app).", "example": "user@run.ai" }, "subjectType": { "allOf": [ { "$ref": "#/components/schemas/SubjectType" }, { "description": "The subject assigned to the access rule. Valid values: user, group, app." } ] } } } }, "AccessRuleScopes": { "type": "array", "description": "scopes for the access rules. must have at least one value", "items": { "type": "object", "required": [ "scopeId", "scopeType" ], "properties": { "scopeId": { "$ref": "#/components/schemas/ScopeId" }, "scopeType": { "allOf": [ { "$ref": "#/components/schemas/ScopeType" }, { "description": "The scope to apply the access rule to. Valid values: system, tenant, cluster, department, project." } ] } } } }, "AccessRulesBatchCreateFields": { "type": "object", "required": [ "payload" ], "properties": { "payload": { "type": "object", "description": "An array of access rule objects, each containing the role, subject, cluster, and scope to apply.", "required": [ "subjects", "roleId", "scopes" ], "properties": { "roleId": { "type": "integer", "format": "int32", "description": "The numeric ID of the role to assign (e.g., admin, viewer).", "example": 53142648 }, "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "subjects": { "$ref": "#/components/schemas/AccessRuleSubjects" }, "scopes": { "$ref": "#/components/schemas/AccessRuleScopes" } } } } }, "ErrorCode": { "type": "integer", "format": "int32", "description": "A numeric code representing the error type." }, "AccessRulesBatchCreateResponse": { "type": "object", "properties": { "succeeded": { "type": "array", "items": { "$ref": "#/components/schemas/AccessRule" } }, "failed": { "type": "array", "items": { "properties": { "payload": { "$ref": "#/components/schemas/AccessRuleCreationFields" }, "code": { "$ref": "#/components/schemas/ErrorCode" }, "message": { "type": "string", "description": "A human-readable message describing the access rule IDs that failed to create." } } } } } }, "PermittedScopes": { "type": "object", "properties": { "system": { "type": "boolean", "example": false }, "tenants": { "type": "array", "items": { "type": "string", "example": "1" } }, "tenant": { "deprecated": true, "type": "string", "example": "1" }, "clusters": { "type": "array", "items": { "type": "string", "example": "a418ed33-9399-48c0-a890-122cadd13bfd" } }, "departments": { "type": "array", "items": { "type": "string", "example": "7" } }, "projects": { "type": "array", "items": { "type": "string" } } } }, "PermittedScopesActions": { "type": "object", "required": [ "create", "read", "update", "delete" ], "properties": { "create": { "$ref": "#/components/schemas/PermittedScopes" }, "read": { "$ref": "#/components/schemas/PermittedScopes" }, "update": { "$ref": "#/components/schemas/PermittedScopes" }, "delete": { "$ref": "#/components/schemas/PermittedScopes" } } }, "MeAccessRule": { "allOf": [ { "$ref": "#/components/schemas/AccessRuleCreationFields" }, { "$ref": "#/components/schemas/EnrichmentDataFields" }, { "required": [ "tenantId" ] }, { "properties": { "id": { "type": "integer", "format": "int32", "example": 32 }, "tenantId": { "$ref": "#/components/schemas/TenantId" } } } ] }, "MeAccessRules": { "type": "array", "items": { "$ref": "#/components/schemas/MeAccessRule" }, "x-schema-name": "MeAccessRules" }, "MeAccessRulesResponse": { "type": "object", "properties": { "accessRules": { "type": "object", "required": [ "totalRecords", "displayRecords", "accessRules" ], "properties": { "totalRecords": { "type": "integer", "example": 1 }, "displayRecords": { "type": "integer", "example": 1 }, "accessRules": { "$ref": "#/components/schemas/MeAccessRules" } } } } }, "BatchId": { "type": "string", "format": "uuid", "description": "The ID of the batch operation." }, "ErrorMessage": { "type": "string", "description": "The error message." }, "BatchResponseFailureItem": { "type": "object", "required": [ "id", "code", "message" ], "properties": { "id": { "type": "string", "format": "uuid" }, "code": { "$ref": "#/components/schemas/ErrorCode" }, "message": { "$ref": "#/components/schemas/ErrorMessage" } } }, "BatchResponse": { "type": "object", "required": [ "id" ], "properties": { "id": { "$ref": "#/components/schemas/BatchId" }, "succeeded": { "$ref": "#/components/schemas/IdsList" }, "failed": { "type": "array", "description": "The IDs that failed to update.", "items": { "$ref": "#/components/schemas/BatchResponseFailureItem" } } } }, "AccessRulesFilterFields": { "$ref": "#/components/schemas/AccessRulesSortFilterFields" }, "SamlData": { "type": "object", "nullable": true, "properties": { "signingCertificate": { "type": "string" }, "singleSignOnServiceUrl": { "type": "string" }, "entityId": { "type": "string" }, "serviceProviderMetadataUrl": { "type": "string", "description": "Service Provider (SP) metadata url" } } }, "MandatoryClaim": { "type": "object", "nullable": true, "required": [ "claim", "values" ], "properties": { "claim": { "type": "string", "pattern": ".*[a-zA-Z].*" }, "values": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1, "pattern": "^(?!.*\\s).*?[a-zA-Z].*$" } } } }, "OidcData": { "type": "object", "nullable": true, "required": [ "clientId", "clientSecret", "discoverDocumentUrl" ], "properties": { "clientId": { "type": "string" }, "clientSecret": { "type": "string" }, "scopes": { "type": "array", "items": { "type": "string", "pattern": "^([a-zA-Z0-9-._:]+)(\\s[a-zA-Z0-9-._:]+)*$" } }, "mandatoryClaim": { "$ref": "#/components/schemas/MandatoryClaim" } } }, "OcpData": { "type": "object", "nullable": true, "properties": { "idpBaseUrl": { "type": "string" }, "clientId": { "type": "string" }, "clientSecret": { "type": "string" }, "scopes": { "type": "array", "items": { "type": "string" } } } }, "Mappers": { "type": "object", "required": [ "alias" ], "properties": { "gid": { "type": "string" }, "uid": { "type": "string" }, "groups": { "type": "string" }, "supplementaryGroups": { "type": "string" }, "email": { "type": "string" } } }, "Idp1": { "type": "object", "required": [ "alias", "type", "redirectUri" ], "properties": { "alias": { "type": "string", "pattern": "^[a-z0-9_-]+$" }, "type": { "type": "string", "enum": [ "saml", "oidc", "openshift-v4" ] }, "redirectUri": { "type": "string" }, "samlData": { "$ref": "#/components/schemas/SamlData" }, "oidcData": { "$ref": "#/components/schemas/OidcData" }, "ocpData": { "$ref": "#/components/schemas/OcpData" }, "mappers": { "$ref": "#/components/schemas/Mappers" } } }, "Idps": { "type": "array", "items": { "$ref": "#/components/schemas/Idp1" } }, "IdpCreationRequestTypeEnum": { "type": "string", "enum": [ "oidc", "saml", "openshift-v4" ] }, "SamlCreationDataMetadataXmlTypeEnum": { "type": "string", "enum": [ "url", "file" ] }, "SamlCreationData": { "type": "object", "nullable": true, "properties": { "metadataXmlUrl": { "type": "string", "pattern": "/^(https?://)?([a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})(:[0-9]{1,5})?(/[^\\s]*)?$|^$/" }, "metadataXmlFile": { "type": "string" }, "fileName": { "type": "string" }, "metadataXmlType": { "allOf": [ { "$ref": "#/components/schemas/SamlCreationDataMetadataXmlTypeEnum" } ] }, "entityId": { "type": "string" } } }, "OidcCreationData": { "type": "object", "nullable": true, "required": [ "clientId", "clientSecret", "discoverDocumentUrl" ], "properties": { "clientId": { "type": "string", "minLength": 1 }, "clientSecret": { "type": "string", "minLength": 1 }, "discoverDocumentUrl": { "type": "string", "pattern": "/^(https?://)?([a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})(:[0-9]{1,5})?(/[^\\s]*)?$|^$/" }, "scopes": { "type": "array", "items": { "type": "string", "pattern": "^([a-zA-Z0-9-._:]+)(\\s[a-zA-Z0-9-._:]+)*$" } }, "mandatoryClaim": { "$ref": "#/components/schemas/MandatoryClaim" } } }, "OcpCreationData": { "type": "object", "nullable": true, "required": [ "idpBaseUrl", "clientSecret" ], "properties": { "clientId": { "type": "string", "minLength": 1 }, "idpBaseUrl": { "type": "string", "pattern": "/^(https?://)?([a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})(:[0-9]{1,5})?(/[^\\s]*)?$|^$/" }, "clientSecret": { "type": "string", "minLength": 1 }, "scopes": { "type": "array", "items": { "type": "string", "pattern": "^([a-zA-Z0-9-._:]+)(\\s[a-zA-Z0-9-._:]+)*$" } } } }, "IdpCreationRequest": { "type": "object", "required": [ "type", "data" ], "properties": { "name": { "type": "string" }, "type": { "allOf": [ { "$ref": "#/components/schemas/IdpCreationRequestTypeEnum" } ] }, "samlData": { "$ref": "#/components/schemas/SamlCreationData" }, "oidcData": { "$ref": "#/components/schemas/OidcCreationData" }, "ocpData": { "$ref": "#/components/schemas/OcpCreationData" }, "mappers": { "$ref": "#/components/schemas/Mappers" } } }, "IdpPostResponse": { "type": "object", "required": [ "alias" ], "properties": { "alias": { "type": "string" } }, "example": { "alias": "oidc" } }, "IdpResources": { "type": "object", "properties": { "resourceName": { "type": "string" }, "resource": { "type": "string" }, "type": { "enum": [ "url", "file" ] } } }, "UsersFilterSortFields": { "type": "string", "enum": [ "username", "createdBy", "lastLogin", "creationTime", "lastUpdated", "type" ] }, "User2": { "type": "object", "required": [ "id", "username", "createdBy", "createdAt", "updatedAt", "lastLogin", "isLocal" ], "properties": { "id": { "type": "string" }, "username": { "type": "string" }, "createdBy": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time", "nullable": true }, "updatedAt": { "type": "string", "format": "date-time", "nullable": true }, "lastLogin": { "type": "string", "format": "date-time", "nullable": true }, "isLocal": { "type": "boolean", "nullable": true }, "groups": { "type": "array", "items": { "type": "string" }, "nullable": true } }, "example": { "id": "3434c-12323ab-4ce2ea6-b44fc-db344d", "username": "test@run.ai", "createdBy": "devops@run.ai", "createdAt": "2020-01-01T00:00:00Z", "updatedAt": "2022-01-01T00:00:00Z", "lastLogin": "2023-02-01T00:00:00Z", "isLocal": true, "groups": [ "groupA", "groupB" ] } }, "Users1": { "type": "array", "items": { "$ref": "#/components/schemas/User2" } }, "UserCreationRequest1": { "type": "object", "required": [ "email" ], "properties": { "email": { "type": "string", "pattern": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$", "description": "The email of the user. Must be a valid email address." }, "resetPassword": { "type": "boolean", "nullable": true }, "notify": { "type": "boolean", "description": "When true, send an email to the user. The email includes a link to reset the password.", "nullable": true } }, "example": { "email": "test@run.ai", "resetPassword": false, "notify": true } }, "UserPostResponse": { "type": "object", "required": [ "id", "username", "tempPassword" ], "properties": { "id": { "type": "string" }, "username": { "type": "string" }, "tempPassword": { "type": "string" } }, "example": { "id": "0eeaf222-e503-4f35-9d9c-c419816272e3", "username": "test@run.ai", "tempPassword": "asdasidjn9d" } }, "UserChangePasswordRequest": { "type": "object", "required": [ "currentPassword", "newPassword" ], "properties": { "currentPassword": { "type": "string" }, "newPassword": { "type": "string" } }, "example": { "currentPassword": "Abcd!234", "newPassword": "Zxcv!567" } }, "Groups1": { "type": "array", "items": { "example": "group-A", "type": "string" } }, "Application": { "type": "object", "required": [ "name", "createdBy", "createdAt", "updatedAt", "enabled", "lastLogin", "id", "clientId" ], "properties": { "name": { "type": "string" }, "createdBy": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time", "nullable": true }, "updatedAt": { "type": "string", "format": "date-time", "nullable": true }, "enabled": { "type": "boolean" }, "tenantId": { "type": "string" }, "lastLogin": { "type": "string", "format": "date-time", "nullable": true }, "id": { "type": "string" }, "clientId": { "type": "string" } }, "example": { "name": "app123", "createdBy": "test@run.ai", "createdAt": "2020-01-01T00:00:00Z", "updatedAt": "2020-01-01T00:00:00Z", "enabled": true, "tenantId": 1234567890, "lastLogin": "2020-01-01T00:00:00Z", "id": "3434c-12323ab-4ce2ea6-b44fc-db344d", "clientId": "app123" } }, "Applications": { "type": "array", "items": { "$ref": "#/components/schemas/Application" } }, "ApplicationCreationRequest": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "pattern": "^[a-z][-_a-z0-9]*[a-z0-9]$", "description": "The name of the application. The name must be unique within the organization and can only contain lowercase alphanumeric characters and hyphens. It must start and end with a letter." } }, "example": { "name": "app-123" } }, "ApplicationPostResponse": { "type": "object", "required": [ "id", "name", "secret" ], "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "secret": { "type": "string" }, "clientId": { "type": "string" } }, "example": { "id": "0eeaf222-e503-4f35-9d9c-c419816272e3", "name": "app123", "secret": "asdasidjn9d", "clientId": "app123" } }, "ApplicationPatchRequest": { "type": "object", "required": [ "enabled" ], "properties": { "enabled": { "type": "boolean" } }, "example": { "enabled": true } }, "ServiceAccount": { "type": "object", "required": [ "name", "createdBy", "createdAt", "updatedAt", "enabled", "lastLogin", "id", "clientId" ], "properties": { "name": { "type": "string", "description": "The name of the service account." }, "createdBy": { "type": "string", "description": "The email address of the user who created the service account." }, "createdAt": { "type": "string", "format": "date-time", "nullable": true, "description": "The timestamp for when the service account was created." }, "updatedAt": { "type": "string", "format": "date-time", "nullable": true, "description": "The timestamp for when the service account was last updated." }, "enabled": { "type": "boolean", "description": "Indicates whether the service account is enabled." }, "tenantId": { "type": "string", "description": "The unique identifier of the tenant." }, "lastLogin": { "type": "string", "format": "date-time", "nullable": true, "description": "The timestamp of the last time the service account was used to authenticate." }, "id": { "type": "string", "description": "The unique identifier of the service account." }, "clientId": { "type": "string", "description": "The client identifier associated with the service account. Used when requesting authentication tokens." } }, "example": { "name": "service-account-123", "createdBy": "test@run.ai", "createdAt": "2020-01-01T00:00:00Z", "updatedAt": "2020-01-01T00:00:00Z", "enabled": true, "tenantId": 1234567890, "lastLogin": "2020-01-01T00:00:00Z", "id": "3434c-12323ab-4ce2ea6-b44fc-db344d", "clientId": "service-account-123" } }, "ServiceAccounts": { "type": "array", "items": { "$ref": "#/components/schemas/ServiceAccount" } }, "ServiceAccountCreationRequest": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "pattern": "^[a-z][-_a-z0-9]*[a-z0-9]$", "description": "The name of the service account. The name must be unique within the organization and can only contain lowercase alphanumeric characters and hyphens. It must start and end with a letter." } }, "example": { "name": "service-account-123" } }, "ServiceAccountPostResponse": { "type": "object", "required": [ "id", "name", "clientSecret" ], "properties": { "id": { "type": "string", "description": "The unique identifier of the service account." }, "name": { "type": "string", "description": "The name of the service account." }, "clientSecret": { "type": "string", "description": "Secret credential paired with the client ID. Used to obtain authentication tokens. Displayed only once upon creation." }, "clientId": { "type": "string", "description": "The client identifier associated with the service account. Used when requesting authentication tokens." } }, "example": { "id": "0eeaf222-e503-4f35-9d9c-c419816272e3", "name": "service-account-123", "clientSecret": "asdasidjn9d", "clientId": "service-account-123" } }, "ServiceAccountPatchRequest": { "type": "object", "required": [ "enabled" ], "properties": { "enabled": { "type": "boolean", "description": "Indicates whether the service account is enabled." } }, "example": { "enabled": true } }, "RegenerateServiceAccountSecretResponse": { "type": "object", "properties": { "clientSecret": { "type": "string", "description": "Secret credential paired with the client ID. Used to obtain authentication tokens. Displayed only once upon regeneration." } }, "example": { "clientSecret": "189ej2ijd92fj092k049fk0" } }, "AccessKey1": { "type": "object", "required": [ "name", "id", "clientId", "createdAt", "lastLogin" ], "properties": { "name": { "type": "string", "description": "The name of the access key." }, "clientId": { "type": "string", "description": "The client identifier associated with the access key. Used when requesting authentication tokens." }, "id": { "type": "string", "description": "The unique identifier of the access key." }, "createdAt": { "type": "string", "format": "date-time", "nullable": true, "description": "The timestamp for when the access key was created." }, "lastLogin": { "type": "string", "format": "date-time", "nullable": true, "description": "The timestamp of the last time the access key was used to authenticate." } }, "example": { "name": "my-access-key", "id": "3434c-12323ab-4ce2ea6-b44fc-db344d", "clientId": "3434c-12323ab-4ce2ea6", "createdAt": "2019-01-01T00:00:00Z", "lastLogin": "2020-01-01T00:00:00Z" } }, "AccessKeys": { "type": "object", "required": [ "accessKeys" ], "properties": { "accessKeys": { "type": "array", "items": { "$ref": "#/components/schemas/AccessKey1" } } }, "example": { "accessKeys": [ { "name": "my-access-key", "id": "3434c-12323ab-4ce2ea6-b44fc-db344d", "clientId": "3434c-12323ab-4ce2ea6", "createdAt": "2019-01-01T00:00:00Z", "lastLogin": "2020-01-01T00:00:00Z" }, { "name": "another-access-key", "id": "5656d-45645cd-6de3fb7-c55gd-ef455e", "clientId": "5656d-45645cd-6de3fb7", "createdAt": "2019-01-01T00:00:00Z", "lastLogin": "2020-01-01T00:00:00Z" } ] } }, "AccessKeyCreationRequest1": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "pattern": "^[a-z][-_a-z0-9]*[a-z0-9]$", "description": "The name of the access key. The name must be unique within the user's access keys list and can only contain lowercase alphanumeric characters and hyphens. It must start and end with a letter." } }, "example": { "name": "access-key-name" } }, "AccessKeyPostResponse": { "type": "object", "required": [ "id", "name", "clientSecret", "clientId", "createdAt" ], "properties": { "id": { "type": "string", "description": "The unique identifier of the access key." }, "clientId": { "type": "string", "description": "The client identifier associated with the access key. Used when requesting authentication tokens." }, "name": { "type": "string", "description": "The name of the access key." }, "clientSecret": { "type": "string", "description": "Secret credential paired with the client ID. Used to obtain authentication tokens. Displayed only once upon creation." }, "createdAt": { "format": "date-time", "nullable": true, "type": "string", "description": "The timestamp for when the access key was created." } }, "example": { "id": "0eeaf222-e503-4f35-9d9c-c419816272e3", "clientId": "5e7b3b7b4b7b4b7b", "name": "access-key-123", "clientSecret": "this-is-the-access-key-secret", "createdAt": "2020-01-01T00:00:00Z" } }, "AccessKeyAdministration": { "type": "object", "required": [ "name", "id", "clientId", "createdBy", "createdAt", "lastLogin" ], "properties": { "name": { "type": "string" }, "id": { "type": "string" }, "clientId": { "type": "string" }, "createdBy": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time", "nullable": true }, "lastLogin": { "type": "string", "format": "date-time", "nullable": true } }, "example": { "name": "my-access-key", "id": "3434c-12323ab-4ce2ea6-b44fc-db344d", "clientId": "1434c-123233ab-4ce2ea6-b44fc-db344d", "createdBy": "test@run.ai", "createdAt": "2020-01-01T00:00:00Z", "lastLogin": "2020-01-01T00:00:00Z" } }, "AccessKeysAdministration": { "type": "object", "required": [ "accessKeys" ], "properties": { "accessKeys": { "type": "array", "items": { "$ref": "#/components/schemas/AccessKeyAdministration" } } }, "example": { "accessKeys": [ { "name": "my-access-key", "id": "3434c-12323ab-4ce2ea6-b44fc-db344d", "clientId": "1434c-123233ab-4ce2ea6-b44fc-db344d", "createdBy": "test@run.ai", "createdAt": "2020-01-01T00:00:00Z", "lastLogin": "2020-01-01T00:00:00Z" }, { "name": "another-access-key", "id": "5656d-45645cd-6de3fb7-c55gd-ef455e", "clientId": "2545e-234344bc-5df4gc8-d66he-fg566f", "createdBy": "user@run.ai", "createdAt": "2020-01-01T00:00:00Z", "lastLogin": "2020-01-01T00:00:00Z" } ] } }, "UserApp": { "type": "object", "required": [ "name", "id", "clientId", "createdAt", "lastLogin" ], "properties": { "name": { "type": "string" }, "clientId": { "type": "string" }, "id": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time", "nullable": true }, "lastLogin": { "type": "string", "format": "date-time", "nullable": true } }, "example": { "name": "my-user-app", "id": "3434c-12323ab-4ce2ea6-b44fc-db344d", "clientId": "3434c-12323ab-4ce2ea6", "createdAt": "2019-01-01T00:00:00Z", "lastLogin": "2020-01-01T00:00:00Z" } }, "UserApps": { "type": "array", "items": { "$ref": "#/components/schemas/UserApp" } }, "UserAppCreationRequest": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "pattern": "^[a-z][-_a-z0-9]*[a-z0-9]$", "description": "The name of the user application. The name must be unique within the user's applications list and can only contain lowercase alphanumeric characters and hyphens. It must start and end with a letter." } }, "example": { "name": "app-name" } }, "UserAppPostResponse": { "type": "object", "required": [ "id", "name", "secret", "clientId", "createdAt" ], "properties": { "id": { "type": "string" }, "clientId": { "type": "string" }, "name": { "type": "string" }, "secret": { "type": "string" }, "createdAt": { "format": "date-time", "nullable": true, "type": "string" } }, "example": { "id": "0eeaf222-e503-4f35-9d9c-c419816272e3", "clientId": "5e7b3b7b4b7b4b7b", "name": "app123", "secret": "this-is-the-app-secret", "createdAt": "2020-01-01T00:00:00Z" } }, "UserAppAdministration": { "type": "object", "required": [ "name", "id", "clientId", "createdBy", "createdAt", "lastLogin" ], "properties": { "name": { "type": "string" }, "id": { "type": "string" }, "clientId": { "type": "string" }, "createdBy": { "type": "string" }, "createdAt": { "type": "string", "format": "date-time", "nullable": true }, "lastLogin": { "type": "string", "format": "date-time", "nullable": true } }, "example": { "name": "my-user-app", "id": "3434c-12323ab-4ce2ea6-b44fc-db344d", "clientId": "1434c-123233ab-4ce2ea6-b44fc-db344d", "createdBy": "test@run.ai", "createdAt": "2020-01-01T00:00:00Z", "lastLogin": "2020-01-01T00:00:00Z" } }, "UserAppsAdministration": { "type": "array", "items": { "$ref": "#/components/schemas/UserAppAdministration" } }, "TokenRequestGrantTypeEnum": { "enum": [ "app_token", "client_credentials", "refresh_token", "exchange_token", "password", "external_token_exchange" ] }, "TokenRequest": { "type": "object", "properties": { "grantType": { "$ref": "#/components/schemas/TokenRequestGrantTypeEnum" }, "appID": { "deprecated": true, "type": "string" }, "appSecret": { "deprecated": true, "type": "string" }, "code": { "type": "string" }, "redirectUri": { "type": "string" }, "refreshToken": { "type": "string" }, "username": { "type": "string" }, "password": { "type": "string" }, "clientID": { "type": "string" }, "clientSecret": { "type": "string" }, "externalToken": { "type": "string" } } }, "TokenResponse": { "type": "object", "properties": { "accessToken": { "type": "string" }, "idToken": { "type": "string" }, "refreshToken": { "type": "string" }, "expiresIn": { "type": "integer", "description": "Token lifetime in seconds" } } }, "OAuth2TokenResponse": { "type": "object", "required": [ "access_token", "token_type" ], "properties": { "access_token": { "type": "string", "description": "The access token issued by the authorization server" }, "token_type": { "type": "string", "description": "The type of the token issued (typically \"Bearer\")", "example": "Bearer" }, "expires_in": { "type": "integer", "description": "The lifetime in seconds of the access token", "example": 3600 }, "refresh_token": { "type": "string", "description": "The refresh token, which can be used to obtain new access tokens" }, "id_token": { "type": "string", "description": "ID Token value associated with the authenticated session (OpenID Connect)" }, "scope": { "type": "string", "description": "The scope of the access token" } } }, "OAuth2Error": { "type": "object", "description": "OAuth 2.0 error response (RFC 6749 Section 5.2)", "required": [ "error" ], "properties": { "error": { "type": "string", "description": "A single ASCII error code", "enum": [ "invalid_request", "invalid_client", "invalid_grant", "unauthorized_client", "unsupported_grant_type", "invalid_scope", "server_error", "temporarily_unavailable" ], "example": "invalid_client" }, "error_description": { "type": "string", "description": "Human-readable ASCII text providing additional information", "example": "Client authentication failed" }, "error_uri": { "type": "string", "description": "URI identifying a human-readable web page with information about the error" } } }, "AutoRedirectSsoSetting": { "type": "object", "properties": { "enabled": { "type": "boolean", "nullable": true }, "idpAlias": { "type": "string", "pattern": "^[a-z0-9_-]*$", "nullable": true } }, "example": { "enabled": false, "idpAlias": "oidc" } }, "BrowserSessionTimeoutSetting": { "type": "object", "description": "Settings for user session timeout configuration that manages automatic logout after periods of inactivity.", "properties": { "idleTimeout": { "type": "number", "description": "Duration in minutes that a user can remain inactive before their browser session automatically expires and requires re-authentication", "default": 60, "minimum": 1, "nullable": true } } }, "LogoutRedirectUriSetting": { "type": "object", "description": "Settings for configuring the logout redirect URI that determines where users are redirected after logging out.", "properties": { "uri": { "type": "string", "description": "The URI where users will be redirected after logging out of the application", "nullable": true, "pattern": "/^(https?://)?([a-zA-Z0-9.-]+\\.[a-zA-Z]{2,})(:[0-9]{1,5})?(/[^\\s]*)?$|^$/", "example": "https://example.com/logout" } } }, "SettingsGetResponse": { "type": "object", "properties": { "autoRedirectSSO": { "$ref": "#/components/schemas/AutoRedirectSsoSetting" }, "browserSessionTimeout": { "$ref": "#/components/schemas/BrowserSessionTimeoutSetting" }, "logoutRedirectUri": { "$ref": "#/components/schemas/LogoutRedirectUriSetting" } } }, "settingsKeyEnum": { "type": "string", "enum": [ "autoRedirectSSO", "browserSessionTimeout", "logoutRedirectUri" ] }, "Settings": { "type": "object", "additionalProperties": true }, "AppTokenRequest": { "type": "object", "required": [ "id", "name", "secret" ], "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "secret": { "type": "string" } } }, "AppTokenResponse": { "type": "object", "required": [ "access_token", "id_token" ], "properties": { "access_token": { "type": "string" }, "id_token": { "type": "string" } } }, "IdpResourcdes": { "$ref": "#/components/schemas/IdpResources" }, "UserGroups": { "$ref": "#/components/schemas/Groups1" }, "RequestResourceCores": { "type": "object", "properties": { "limit": { "type": "number", "nullable": true, "format": "double", "example": 1.5 }, "request": { "type": "number", "nullable": true, "format": "double", "example": 1 } }, "nullable": true }, "RequestResourceQuantity": { "type": "object", "properties": { "limit": { "type": "string", "nullable": true, "pattern": "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$", "example": "2G" }, "request": { "type": "string", "nullable": true, "pattern": "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$", "example": "200M" } }, "nullable": true }, "WorkloadsExtendedResource": { "description": "Quantity of an extended resource.", "type": "object", "properties": { "resource": { "description": "The name of the extended resource (mandatory)", "type": "string", "example": "hardware-vendor.example/foo", "minLength": 1, "nullable": true }, "quantity": { "description": "The requested quantity for the given resource.", "type": "string", "example": 2, "minLength": 1, "nullable": true }, "exclude": { "description": "Whether to exclude this extended resource from the workload. This is necessary in case the extended resource is inherited from the policy defaults and it is desired not to include it in this workload.", "type": "boolean", "example": false, "nullable": true } }, "nullable": true }, "WorkloadsExtendedResources": { "description": "Set of extended resources with their quantity", "type": "array", "items": { "$ref": "#/components/schemas/WorkloadsExtendedResource" }, "nullable": true }, "WorkloadRequestResources": { "type": "object", "nullable": true, "properties": { "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "gpu": { "$ref": "#/components/schemas/RequestResourceCores" }, "gpuMemory": { "$ref": "#/components/schemas/RequestResourceQuantity" }, "cpu": { "$ref": "#/components/schemas/RequestResourceCores" }, "cpuMemory": { "$ref": "#/components/schemas/RequestResourceQuantity" }, "extendedResources": { "$ref": "#/components/schemas/WorkloadsExtendedResources" } } }, "RequestedPods": { "type": "object", "properties": { "number": { "type": "integer", "format": "int32", "example": 1, "nullable": true }, "min": { "type": "integer", "format": "int32", "example": 2, "nullable": true }, "max": { "type": "integer", "format": "int32", "example": 5, "nullable": true }, "parallelism": { "type": "integer", "format": "int32", "description": "specifies how many Pods can run in parallel", "example": 3, "nullable": true }, "completions": { "type": "integer", "description": "specifies how many Pods should terminate successfully before the Workload is completed", "format": "int32", "example": 5, "nullable": true } } }, "Datasource": { "type": "object", "required": [ "name", "id" ], "properties": { "type": { "type": "string", "example": "pvc" }, "name": { "type": "string", "example": "my-pvc-datasource-1" }, "id": { "type": "string", "format": "uuid" } } }, "Connection1": { "type": "object", "description": "Connection that either expose port from the container (a port is associated with a tool that the container runs), or URL to be used for connecting to an external tool that is related to the action of the container (such as Weights & Biases).", "required": [ "toolType", "name", "connectionType" ], "properties": { "name": { "type": "string", "example": "my-pytorch-env" }, "toolType": { "type": "string", "example": "pytorch" }, "connectionType": { "type": "string", "example": "ExternalUrl" }, "url": { "type": "string", "example": "http://wandb.com/yourproject" }, "authorizationType": { "type": "string", "description": "Specifies who can access the connection URL:\n- `authenticatedUsers`: Any authenticated user or service account can access the URL; the authorizedUsers and authorizedGroups fields are ignored.\n- `authorizedUsers`: Only users listed in the authorizedUsers field are allowed to access the URL; the authorizedGroups field is ignored.\n- `authorizedGroups`: Only members of user groups listed in the authorizedGroups field are allowed to access the URL; the authorizedUsers field is ignored.\nIf not specified, authorization is determined by whether authorizedUsers or authorizedGroups is present. If both fields are set, this results in an error. If neither is set, any authenticatedUser can access.\n", "enum": [ "public", "authenticatedUsers", "authorizedUsersOrGroups" ] }, "authorizedUsers": { "type": "array", "description": "List of users or service accounts that are allowed to access the URL. Note that authorizedUsers and authorizedGroups are mutually exclusive.", "items": { "type": "string" }, "example": [ "user@company.ai", "another@company.ai" ] }, "authorizedGroups": { "type": "array", "items": { "type": "string" }, "example": [ "group-a", "group-b" ] }, "containerPort": { "description": "The port that the container running the workload exposes.", "type": "integer", "format": "int32", "example": 8080 } } }, "ReplicaType": { "type": "string", "nullable": true, "enum": [ "Master", "Worker", "Leader" ] }, "Environment": { "type": "object", "required": [ "name", "id" ], "properties": { "connections": { "type": "array", "items": { "$ref": "#/components/schemas/Connection1" } }, "name": { "type": "string", "example": "pytorch" }, "id": { "type": "string", "format": "uuid" }, "replicaType": { "$ref": "#/components/schemas/ReplicaType" } } }, "SourceApi": { "type": "string", "nullable": true, "enum": [ "WorkloadsV2" ] }, "Source": { "type": "string", "enum": [ "CLI", "Control-plane", "Other" ] }, "WorkloadAllocatedResources": { "type": "object", "nullable": true, "properties": { "gpu": { "type": "number", "nullable": true, "format": "double", "example": 1.5, "description": "Required if and only if gpuRequestType is portion. States the number of GPUs allocated for the created workload. The default is no allocated GPUs." }, "gpuMemory": { "type": "string", "pattern": "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$", "nullable": true, "example": "200Mi" }, "cpu": { "type": "number", "nullable": true, "format": "double", "description": "States the amount of CPU cores used by the workload running.", "example": 0.5 }, "cpuMemory": { "type": "string", "pattern": "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$", "nullable": true, "example": "0B" }, "extendedResources": { "$ref": "#/components/schemas/WorkloadsExtendedResources" } } }, "ActionsSupport": { "description": "The actions support provided for the workload.", "type": "object", "properties": { "delete": { "type": "boolean", "example": true }, "suspend": { "description": "This permission includes resume as well as suspend.", "type": "boolean", "example": true } } }, "Condition1": { "type": "object", "required": [ "type", "status" ], "properties": { "type": { "description": "The type of the condition, such as Failed or Available. See Types of domain status conditions.", "type": "string", "example": "Ready" }, "status": { "type": "string", "description": "The status of the condition, such as True, False or Unknown.", "example": "False" }, "message": { "type": "string", "description": "An optional, human-readable message providing more details about the condition.", "example": "Resource validation failed: ..." }, "reason": { "type": "string", "description": "The reason for the Failed condition. Not applicable to other types of condition.", "example": "ErrorConfig" }, "lastTransitionTime": { "description": "A timestamp of when the condition was created or the last time the condition transitioned from one status to another.", "type": "string", "nullable": true, "format": "date-time", "example": "2022-01-01T03:49:52.531Z" } } }, "Conditions": { "type": "array", "items": { "$ref": "#/components/schemas/Condition1" }, "x-schema-name": "Conditions" }, "PhaseReason": { "type": "string", "enum": [ "NonPreemptibleOverQuota", "OverLimit" ] }, "Workload": { "type": "object", "required": [ "type", "name", "id", "source", "priority", "priorityClassName", "clusterId", "projectName", "projectId", "departmentName", "departmentId", "namespace", "createdAt", "phase", "conditions", "k8sPhase", "tenantId", "runningPods", "phaseUpdatedAt", "k8sPhaseUpdatedAt", "updatedAt", "deletedAt", "category" ], "properties": { "tenantId": { "$ref": "#/components/schemas/TenantId" }, "runningPods": { "type": "integer", "format": "int32", "example": 1 }, "phaseUpdatedAt": { "type": "string", "format": "date-time", "example": "2022-06-08T11:28:24.131Z" }, "k8sPhaseUpdatedAt": { "type": "string", "format": "date-time", "example": "2022-06-08T11:28:24.131Z" }, "updatedAt": { "type": "string", "format": "date-time", "example": "2022-06-08T11:28:24.131Z" }, "source": { "$ref": "#/components/schemas/Source" }, "deletedAt": { "type": "string", "format": "date-time", "example": "2022-08-12T19:28:24.131Z", "nullable": true }, "type": { "type": "string", "example": "runai-job" }, "name": { "type": "string", "example": "very-important-job" }, "id": { "type": "string", "format": "uuid" }, "priority": { "type": "integer", "format": "int32", "example": 50, "nullable": true }, "priorityClassName": { "type": "string", "example": "high-priority" }, "submittedBy": { "type": "string", "example": "researcher@run.ai" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "projectName": { "type": "string", "example": "proj-1" }, "projectId": { "type": "string", "example": "1" }, "departmentName": { "type": "string", "example": "department-1" }, "departmentId": { "type": "string", "example": "1" }, "namespace": { "type": "string", "example": "runai-proj-1" }, "createdAt": { "type": "string", "format": "date-time", "example": "2022-01-01T03:49:52.531Z" }, "workloadRequestedResources": { "$ref": "#/components/schemas/WorkloadRequestResources" }, "podsRequestedResources": { "$ref": "#/components/schemas/WorkloadRequestResources" }, "allocatedResources": { "$ref": "#/components/schemas/WorkloadAllocatedResources" }, "actionsSupport": { "$ref": "#/components/schemas/ActionsSupport" }, "phase": { "$ref": "#/components/schemas/Phase" }, "conditions": { "$ref": "#/components/schemas/Conditions" }, "phaseMessage": { "type": "string", "example": "Not enough resources in the requested nodepool" }, "k8sPhase": { "type": "string", "example": "Pending" }, "requestedPods": { "$ref": "#/components/schemas/RequestedPods" }, "requestedNodePools": { "type": "array", "items": { "type": "string", "example": "default" } }, "currentNodePools": { "type": "array", "items": { "type": "string", "example": "default" } }, "completedAt": { "type": "string", "format": "date-time", "example": "2022-01-01T03:49:52.531Z", "nullable": true }, "images": { "type": "array", "items": { "type": "string", "example": "alpine:latest" } }, "childrenIds": { "type": "array", "writeOnly": true, "items": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid" }, "type": { "type": "string" } } } }, "urls": { "type": "array", "items": { "type": "string" } }, "datasources": { "type": "array", "items": { "$ref": "#/components/schemas/Datasource" } }, "environments": { "type": "array", "items": { "$ref": "#/components/schemas/Environment" } }, "externalConnections": { "type": "array", "items": { "$ref": "#/components/schemas/Connection1" } }, "distributedFramework": { "type": "string", "example": "Pytorch" }, "additionalFields": { "type": "object", "additionalProperties": true }, "preemptible": { "type": "boolean", "nullable": true }, "environmentVariables": { "type": "object", "additionalProperties": { "type": "string" } }, "command": { "type": "string", "example": "sleep" }, "arguments": { "type": "string", "example": "1000" }, "phaseReason": { "type": "string", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/PhaseReason" } ] }, "idleGpus": { "deprecated": true, "type": "integer", "nullable": true, "example": 3, "description": "deprecated. use idleAllocatedGpus instead" }, "idleAllocatedGpus": { "type": "number", "description": "sum of idle allocated gpus in the workload", "nullable": true, "example": 1 }, "totalPendingTimeSeconds": { "type": "integer", "description": "The total cumulative time, in seconds, that the workload has spent in the Pending phase since submission.", "nullable": true, "example": 60 }, "totalRunningTimeSeconds": { "type": "integer", "description": "The total cumulative time, in seconds, that the workload has spent in the Running phase since submission.", "nullable": true, "example": 60 }, "category": { "type": "string", "example": "Train", "description": "Category Description" }, "guaranteedRuntimeEndsAt": { "type": "string", "format": "date-time", "example": "2025-08-01T03:49:52.531Z", "nullable": true, "description": "A timestamp indicating when the workload will reach its minimum guaranteed runtime, as defined by minGuaranteedRuntime. Until this time, the workload is considered non-preemptible and cannot be interrupted by higher-priority workloads." }, "aiApplicationId": { "type": "string" }, "aiApplicationName": { "type": "string" }, "sourceApi": { "$ref": "#/components/schemas/SourceApi" }, "topology": { "type": "object", "nullable": true, "properties": { "name": { "type": "string" }, "preferredPlacement": { "type": "string" }, "requiredPlacement": { "type": "string" } } } } }, "OrgType": { "type": "string", "enum": [ "PROJECT", "DEPARTMENT" ] }, "Container1": { "type": "object", "required": [ "name", "image" ], "properties": { "name": { "type": "string", "example": "alpine" }, "image": { "type": "string", "example": "alpine:latest" }, "startedAt": { "type": "string", "nullable": true, "format": "date-time", "example": "2022-01-01T03:49:52.531Z" } } }, "PodRequestResources": { "type": "object", "nullable": true, "properties": { "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "gpu": { "$ref": "#/components/schemas/RequestResourceCores" }, "gpuMemory": { "$ref": "#/components/schemas/RequestResourceQuantity" }, "cpu": { "$ref": "#/components/schemas/RequestResourceCores" }, "cpuMemory": { "$ref": "#/components/schemas/RequestResourceQuantity" }, "extendedResources": { "$ref": "#/components/schemas/WorkloadsExtendedResources" } } }, "AllocatedResources": { "type": "object", "nullable": true, "properties": { "gpu": { "type": "number", "nullable": true, "format": "double", "example": 1.5, "description": "Required if and only if gpuRequestType is portion. States the number of GPUs allocated for the created workload. The default is no allocated GPUs." }, "gpuMemory": { "type": "string", "pattern": "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$", "nullable": true, "example": "200Mi" }, "cpu": { "type": "number", "nullable": true, "format": "double", "description": "States the amount of CPU cores used by the workload running.", "example": 0.5 }, "cpuMemory": { "type": "string", "pattern": "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$", "nullable": true, "example": "0B" }, "extendedResources": { "$ref": "#/components/schemas/WorkloadsExtendedResources" } } }, "PodToleration": { "type": "object", "properties": { "key": { "description": "Key is the taint key that the toleration applies to. Empty means match all taint keys.", "type": "string", "example": "" }, "operator": { "type": "string", "description": "Operator represents a key's relationship to the value.", "example": "Exists" }, "value": { "type": "string", "description": "Value is the taint value the toleration matches to.", "example": "" }, "effect": { "type": "string", "description": "Effect indicates the taint effect to match. Empty means match all taint effects.", "example": "NoExecute" }, "tolerationSeconds": { "description": "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint.", "type": "integer", "nullable": true, "example": "10" } } }, "PodTolerations": { "type": "array", "items": { "$ref": "#/components/schemas/PodToleration" }, "x-schema-name": "Tolerations" }, "PodPreferredNodeSelectorTerm": { "type": "object", "description": "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op).", "properties": { "weight": { "description": "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.", "type": "number" }, "preference": { "$ref": "#/components/schemas/NodeSelectorTerm" } } }, "PodNodeAffinity": { "type": "object", "description": "group of node affinity scheduling rules.", "properties": { "required": { "type": "object", "description": "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node.", "properties": { "nodeSelectorTerms": { "description": "A list of node selector terms. The terms are ORed.", "type": "array", "items": { "$ref": "#/components/schemas/NodeSelectorTerm" } } }, "nullable": true }, "preferred": { "type": "object", "description": "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred.", "properties": { "nodeSelectorTerms": { "description": "A list of node selector terms.", "type": "array", "items": { "$ref": "#/components/schemas/PodPreferredNodeSelectorTerm" } } }, "nullable": true } } }, "PodSyncFields": { "type": "object", "required": [ "name", "priorityClassName", "id", "workloadId", "clusterId", "createdAt", "containers", "k8sPhase" ], "properties": { "name": { "type": "string", "example": "pod-of-a-very-important-job" }, "priorityClassName": { "type": "string", "example": "high-priority" }, "id": { "type": "string", "format": "uuid" }, "workloadId": { "type": "string", "format": "uuid" }, "revisionId": { "type": "string", "format": "uuid", "nullable": true }, "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "projectId": { "type": "string", "example": "1" }, "nodeName": { "type": "string", "nullable": true, "example": "gpu-node-1" }, "createdAt": { "type": "string", "format": "date-time", "example": "2022-01-01T03:49:52.531Z" }, "completedAt": { "type": "string", "nullable": true, "format": "date-time", "example": "2022-01-01T03:49:52.531Z" }, "containers": { "type": "array", "items": { "$ref": "#/components/schemas/Container1" } }, "currentNodePool": { "type": "string", "nullable": true, "example": "default" }, "requestedNodePools": { "type": "array", "items": { "type": "string", "example": "default" } }, "requestedResources": { "$ref": "#/components/schemas/PodRequestResources" }, "allocatedResources": { "$ref": "#/components/schemas/AllocatedResources" }, "tolerations": { "$ref": "#/components/schemas/PodTolerations" }, "k8sPhase": { "type": "string", "example": "Pending" }, "ip": { "type": "string", "nullable": true, "example": "10.244.1.1" }, "nodeAffinity": { "$ref": "#/components/schemas/PodNodeAffinity" } } }, "Workloads": { "type": "array", "items": { "$ref": "#/components/schemas/Workload" }, "x-schema-name": "Workloads" }, "PendingSchedulingMessage": { "type": "object", "required": [ "nodePool", "phaseReason", "reason" ], "properties": { "nodePool": { "type": "string", "example": "default" }, "phaseReason": { "$ref": "#/components/schemas/PhaseReason" }, "reason": { "type": "string", "example": "Non-preemptible over quota" }, "orgType": { "type": "string", "nullable": true, "allOf": [ { "$ref": "#/components/schemas/OrgType" } ] }, "userMessage": { "nullable": true, "type": "string", "example": "You have reached the limit of non-preemptible resources" } } }, "WorkloadDetailed": { "allOf": [ { "$ref": "#/components/schemas/Workload" }, { "type": "object", "properties": { "pendingSchedulingMessages": { "nullable": true, "type": "array", "items": { "$ref": "#/components/schemas/PendingSchedulingMessage" } } } } ] }, "WorkloadTelemetryType": { "type": "string", "description": "Select a telemetry type.", "enum": [ "WORKLOADS_COUNT", "GPU_ALLOCATION", "PENDING_TIME_DISTRIBUTION" ] }, "PodVerbosity": { "type": "string", "enum": [ "brief", "full" ], "default": "brief" }, "PodComputedFields": { "type": "object", "required": [ "tenantId", "k8sPhaseUpdatedAt", "updatedAt" ], "properties": { "tenantId": { "$ref": "#/components/schemas/TenantId" }, "k8sPhaseUpdatedAt": { "type": "string", "format": "date-time", "example": "2022-06-08T11:28:24.131Z" }, "updatedAt": { "type": "string", "format": "date-time", "example": "2022-06-08T11:28:24.131Z" }, "deletedAt": { "type": "string", "format": "date-time", "example": "2022-08-12T19:28:24.131Z", "nullable": true } } }, "PodVerbosityFields": { "type": "object", "properties": { "projectName": { "type": "string", "example": "my-project" }, "workloadName": { "type": "string", "example": "my-workload" } } }, "Pod1": { "allOf": [ { "$ref": "#/components/schemas/PodSyncFields" }, { "$ref": "#/components/schemas/PodComputedFields" }, { "$ref": "#/components/schemas/PodVerbosityFields" } ] }, "Pods1": { "type": "array", "items": { "$ref": "#/components/schemas/Pod1" }, "x-schema-name": "Pods" }, "PodMetricType": { "type": "string", "description": "Specify which data to request.", "enum": [ "GPU_UTILIZATION_PER_GPU", "GPU_UTILIZATION", "GPU_MEMORY_USAGE_BYTES_PER_GPU", "GPU_MEMORY_USAGE_BYTES", "CPU_USAGE_CORES", "CPU_MEMORY_USAGE_BYTES", "GPU_GRAPHICS_ENGINE_ACTIVITY_PER_GPU", "GPU_SM_ACTIVITY_PER_GPU", "GPU_SM_OCCUPANCY_PER_GPU", "GPU_TENSOR_ACTIVITY_PER_GPU", "GPU_FP64_ENGINE_ACTIVITY_PER_GPU", "GPU_FP32_ENGINE_ACTIVITY_PER_GPU", "GPU_FP16_ENGINE_ACTIVITY_PER_GPU", "GPU_MEMORY_BANDWIDTH_UTILIZATION_PER_GPU", "GPU_NVLINK_TRANSMITTED_BANDWIDTH_PER_GPU", "GPU_NVLINK_RECEIVED_BANDWIDTH_PER_GPU", "GPU_PCIE_TRANSMITTED_BANDWIDTH_PER_GPU", "GPU_PCIE_RECEIVED_BANDWIDTH_PER_GPU", "GPU_SWAP_MEMORY_BYTES_PER_GPU", "NIM_NUM_REQUESTS_RUNNING", "NIM_NUM_REQUESTS_WAITING", "NIM_NUM_REQUEST_MAX", "NIM_REQUEST_SUCCESS_TOTAL", "NIM_REQUEST_FAILURE_TOTAL", "NIM_GPU_CACHE_USAGE_PERC", "NIM_TIME_TO_FIRST_TOKEN_SECONDS", "NIM_E2E_REQUEST_LATENCY_SECONDS", "NIM_TIME_TO_FIRST_TOKEN_SECONDS_PERCENTILES", "NIM_E2E_REQUEST_LATENCY_SECONDS_PERCENTILES", "NVLINK_BANDWIDTH_TOTAL", "NVLINK_BANDWIDTH_TOTAL_PER_GPU" ] }, "HistogramValue": { "type": "object", "required": [ "timestamp", "data" ], "properties": { "timestamp": { "type": "string", "format": "date-time", "nullable": true }, "data": { "type": "object", "additionalProperties": { "type": "string" } } } }, "HistogramSeries": { "type": "object", "required": [ "type", "values" ], "properties": { "type": { "type": "string", "description": "specifies what data returned", "example": "NIM_TIME_TO_FIRST_TOKEN_SECONDS" }, "values": { "type": "array", "items": { "$ref": "#/components/schemas/HistogramValue" } } } }, "MetricsCompositeResponse": { "type": "object", "required": [ "measurements" ], "properties": { "measurements": { "type": "array", "items": { "$ref": "#/components/schemas/MeasurementResponse" } }, "histogram": { "type": "array", "nullable": true, "items": { "$ref": "#/components/schemas/HistogramSeries" } } }, "example": { "measurements": [ { "type": "ALLOCATED_GPU", "labels": { "gpu": "0" }, "values": [ { "value": "85", "timestamp": "2024-12-20T14:30:00Z" }, { "value": "92", "timestamp": "2024-12-20T14:30:30Z" }, { "value": "78", "timestamp": "2024-12-20T14:37:00Z" } ] } ], "histogram": [ { "type": "NIM_TIME_TO_FIRST_TOKEN_SECONDS", "values": [ { "timestamp": "2024-12-20T14:30:00Z", "data": { "0.001": "45", "0.005": "178", "0.01": "312", "0.05": "624", "0.1": "812", "0.5": "980", "1.0": "1004", "2.0": "1015", "+Inf": "1024" } }, { "timestamp": "2024-12-20T14:30:30Z", "data": { "0.001": "32", "0.005": "152", "0.01": "288", "0.05": "576", "0.1": "756", "0.5": "908", "1.0": "932", "2.0": "943", "+Inf": "960" } } ] }, { "type": "NIM_TIME_TO_FIRST_TOKEN_SECONDS_PERCENTILES", "values": [ { "timestamp": "2024-12-20T14:30:00Z", "data": { "p50": "0.0734", "p90": "0.1892", "p99": "0.2847" } }, { "timestamp": "2024-12-20T14:30:30Z", "data": { "p50": "0.0823", "p90": "0.2134", "p99": "0.3156" } } ] } ] } }, "Event2": { "type": "object", "nullable": true, "required": [ "createdAt", "type", "clusterId", "message" ], "properties": { "createdAt": { "type": "string", "format": "date-time", "example": "2022-01-01T03:49:52.531Z" }, "id": { "type": "string", "format": "uuid" }, "type": { "type": "string", "example": "Normal" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "message": { "type": "string", "example": "Started container z" }, "reason": { "type": "string", "example": "Started" }, "source": { "type": "string", "example": "kubelet" }, "involvedObject": { "$ref": "#/components/schemas/InvolvedObject" } } }, "Events": { "type": "array", "items": { "$ref": "#/components/schemas/Event2" }, "x-schema-name": "Events" }, "PhaseUpdate": { "type": "object", "nullable": true, "example": null, "required": [ "phase", "phaseMessage" ], "properties": { "phase": { "$ref": "#/components/schemas/Phase" }, "phaseMessage": { "type": "string", "example": "Not enough resources in the requested nodepool" } } }, "HistoryRecord1": { "type": "object", "required": [ "meta", "spec" ], "properties": { "meta": { "$ref": "#/components/schemas/HistoryRecordMeta" }, "spec": { "type": "object", "properties": { "event": { "$ref": "#/components/schemas/Event2" }, "phaseUpdate": { "$ref": "#/components/schemas/PhaseUpdate" } } } } }, "HistoryRecords1": { "type": "array", "items": { "$ref": "#/components/schemas/HistoryRecord1" }, "x-schema-name": "HistoryRecords" }, "WorkloadMetricType": { "type": "string", "description": "Specify which metric data to request.", "enum": [ "GPU_UTILIZATION", "GPU_MEMORY_USAGE_BYTES", "GPU_MEMORY_REQUEST_BYTES", "CPU_USAGE_CORES", "CPU_REQUEST_CORES", "CPU_LIMIT_CORES", "CPU_MEMORY_USAGE_BYTES", "CPU_MEMORY_REQUEST_BYTES", "CPU_MEMORY_LIMIT_BYTES", "POD_COUNT", "RUNNING_POD_COUNT", "GPU_ALLOCATION", "NIM_NUM_REQUESTS_RUNNING", "NIM_NUM_REQUESTS_WAITING", "NIM_NUM_REQUEST_MAX", "NIM_REQUEST_SUCCESS_TOTAL", "NIM_REQUEST_FAILURE_TOTAL", "NIM_GPU_CACHE_USAGE_PERC", "NIM_TIME_TO_FIRST_TOKEN_SECONDS", "NIM_E2E_REQUEST_LATENCY_SECONDS", "NIM_TIME_TO_FIRST_TOKEN_SECONDS_PERCENTILES", "NIM_E2E_REQUEST_LATENCY_SECONDS_PERCENTILES", "NVLINK_BANDWIDTH_TOTAL" ] }, "SubmitWithTemplateId": { "properties": { "templateId": { "description": "The unique identifier of the template to use for submitting this workload. The combined values provided in the spec, template and assets will be used to create the workload.", "type": "string", "format": "uuid", "example": "550e8400-e29b-41d4-a716-446655440000", "nullable": true } } }, "NodeType3": { "description": "Nodes (machines), or a group of nodes on which the workload will run. To use this feature, your Administrator will need to label nodes. For more information, see [Group Nodes](https://docs.run.ai/latest/admin/researcher-setup/limit-to-node-group). When using this flag with with Project-based affinity, it refines the list of allowable node groups set in the Project. For more information, see [Projects](https://docshub.run.ai/guides/platform-management/aiinitiatives/organization/projects).", "type": "string", "minLength": 1, "example": "my-node-type", "nullable": true, "pattern": ".*" }, "Secret5": { "allOf": [ { "$ref": "#/components/schemas/SecretFieldsUpdatable" }, { "$ref": "#/components/schemas/SecretFieldsNonUpdatable" } ] }, "SecretInstance2": { "allOf": [ { "$ref": "#/components/schemas/StorageInstanceName" }, { "$ref": "#/components/schemas/Secret5" }, { "$ref": "#/components/schemas/ExcludeField" } ], "nullable": true, "type": "object" }, "SecretItems1": { "description": "Set of secret volumes to use in the workload", "type": "array", "items": { "$ref": "#/components/schemas/SecretInstance2" }, "nullable": true }, "WorkspaceSpecSpec": { "allOf": [ { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemption" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimit" }, "category": { "$ref": "#/components/schemas/Category" }, "command": { "$ref": "#/components/schemas/Command" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResources" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariables" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrls" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecrets" }, "labels": { "$ref": "#/components/schemas/Labels" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType3" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "ports": { "$ref": "#/components/schemas/Ports" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrls" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicy" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/AllowPrivilegeEscalation" }, "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "hostIpc": { "$ref": "#/components/schemas/HostIpc" }, "hostNetwork": { "$ref": "#/components/schemas/HostNetwork" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "stdin": { "$ref": "#/components/schemas/Stdin" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapItems" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumeItems" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirItems" }, "git": { "$ref": "#/components/schemas/GitItems" }, "hostPath": { "$ref": "#/components/schemas/HostPathItems" }, "nfs": { "$ref": "#/components/schemas/NfsItems" }, "pvc": { "$ref": "#/components/schemas/PvcItems" }, "s3": { "$ref": "#/components/schemas/S3Items" }, "secretVolume": { "$ref": "#/components/schemas/SecretItems1" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriod" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" }, "tty": { "$ref": "#/components/schemas/Tty" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" } ] }, "WorkspaceSpec": { "description": "The specifications of the workspace to be created.", "properties": { "spec": { "$ref": "#/components/schemas/WorkspaceSpecSpec" } } }, "WorkspaceCreationRequest": { "allOf": [ { "$ref": "#/components/schemas/WorkloadCreationMeta" }, { "$ref": "#/components/schemas/SubmitWithTemplateId" }, { "$ref": "#/components/schemas/WorkspaceSpec" } ] }, "WorkloadId2": { "description": "A unique ID of the workload.", "type": "string", "format": "uuid" }, "DepartmentId2": { "description": "The id of the department.", "type": "string", "minLength": 1, "example": 2, "pattern": ".*" }, "WorkloadMeta1": { "required": [ "name", "requestedName", "workloadId", "projectId", "clusterId", "createdBy", "createdAt", "desiredPhase" ], "properties": { "name": { "$ref": "#/components/schemas/WorkloadName" }, "requestedName": { "description": "The name as was requested for the workload. If useGivenNameAsPrefix, in the creation request, is false, name and requestedName should be identical. Otherwise, name should be composed of requestedName followed by a suffix of random characters.", "type": "string" }, "workloadId": { "$ref": "#/components/schemas/WorkloadId2" }, "projectId": { "$ref": "#/components/schemas/ProjectId" }, "departmentId": { "$ref": "#/components/schemas/DepartmentId2" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "createdBy": { "description": "The user who created the workload", "type": "string", "example": "test@lab.com" }, "createdAt": { "description": "The creation time of the workload.", "type": "string", "format": "date-time", "example": "2022-01-01T03:49:52.531Z" }, "deletedAt": { "description": "The deletion time of the workload.", "type": "string", "nullable": true, "format": "date-time", "example": "2022-01-01T03:49:52.531Z" }, "desiredPhase": { "$ref": "#/components/schemas/WorkloadDesiredPhase" }, "actualPhase": { "$ref": "#/components/schemas/Phase" } } }, "Workspace1": { "allOf": [ { "$ref": "#/components/schemas/WorkloadMeta1" }, { "$ref": "#/components/schemas/WorkspaceSpec" } ] }, "DistributedInferenceLeaderWorkerSpec1": { "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "args": { "$ref": "#/components/schemas/Args" }, "command": { "$ref": "#/components/schemas/Command" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResources" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariables" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecrets" }, "labels": { "$ref": "#/components/schemas/Labels" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodeType": { "$ref": "#/components/schemas/NodeType3" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "probes": { "$ref": "#/components/schemas/Probes" }, "security": { "nullable": true, "properties": { "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapItems" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirItems" }, "pvc": { "$ref": "#/components/schemas/PvcItems" }, "secretVolume": { "$ref": "#/components/schemas/SecretItems1" } }, "type": "object" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" }, "MasterSpecSameAsWorker": { "description": "used for distributed workloads to indicate that the master spec should be the same as the worker spec. in this case, masterSpec should not be specified.", "type": "boolean", "nullable": true }, "SupersetWorkload": { "allOf": [ { "$ref": "#/components/schemas/WorkloadMeta1" }, { "type": "object", "properties": { "spec": { "$ref": "#/components/schemas/SupersetSpec" }, "masterSpecSameAsWorker": { "$ref": "#/components/schemas/MasterSpecSameAsWorker" }, "masterSpec": { "$ref": "#/components/schemas/MasterSpec" } } } ] }, "TrainingSpecSpec": { "allOf": [ { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemption" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimit" }, "category": { "$ref": "#/components/schemas/Category" }, "command": { "$ref": "#/components/schemas/Command" }, "completions": { "$ref": "#/components/schemas/Completions" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResources" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariables" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrls" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecrets" }, "labels": { "$ref": "#/components/schemas/Labels" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType3" }, "parallelism": { "$ref": "#/components/schemas/Parallelism" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "ports": { "$ref": "#/components/schemas/Ports" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrls" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicy" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/AllowPrivilegeEscalation" }, "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "hostIpc": { "$ref": "#/components/schemas/HostIpc" }, "hostNetwork": { "$ref": "#/components/schemas/HostNetwork" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "stdin": { "$ref": "#/components/schemas/Stdin" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapItems" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumeItems" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirItems" }, "git": { "$ref": "#/components/schemas/GitItems" }, "hostPath": { "$ref": "#/components/schemas/HostPathItems" }, "nfs": { "$ref": "#/components/schemas/NfsItems" }, "pvc": { "$ref": "#/components/schemas/PvcItems" }, "s3": { "$ref": "#/components/schemas/S3Items" }, "secretVolume": { "$ref": "#/components/schemas/SecretItems1" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriod" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" }, "tty": { "$ref": "#/components/schemas/Tty" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" } ] }, "TrainingSpec": { "description": "The specifications of the training to be created.", "properties": { "spec": { "$ref": "#/components/schemas/TrainingSpecSpec" } } }, "TrainingCreationRequest": { "allOf": [ { "$ref": "#/components/schemas/WorkloadCreationMeta" }, { "$ref": "#/components/schemas/SubmitWithTemplateId" }, { "$ref": "#/components/schemas/TrainingSpec" } ] }, "Training1": { "allOf": [ { "$ref": "#/components/schemas/WorkloadMeta1" }, { "$ref": "#/components/schemas/TrainingSpec" } ] }, "DistributedSpecSpec": { "allOf": [ { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemption" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimit" }, "category": { "$ref": "#/components/schemas/Category" }, "cleanPodPolicy": { "$ref": "#/components/schemas/CleanPodPolicy" }, "command": { "$ref": "#/components/schemas/Command" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResources" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "distributedFramework": { "$ref": "#/components/schemas/DistributedFramework" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariables" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrls" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecrets" }, "labels": { "$ref": "#/components/schemas/Labels" }, "maxReplicas": { "$ref": "#/components/schemas/MaxReplicas" }, "minReplicas": { "$ref": "#/components/schemas/MinReplicas" }, "mpiLauncherCreationPolicy": { "$ref": "#/components/schemas/MpiLauncherCreationPolicy" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType3" }, "numWorkers": { "$ref": "#/components/schemas/NumWorkers" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "ports": { "$ref": "#/components/schemas/Ports" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrls" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicy" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/AllowPrivilegeEscalation" }, "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "hostIpc": { "$ref": "#/components/schemas/HostIpc" }, "hostNetwork": { "$ref": "#/components/schemas/HostNetwork" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "slotsPerWorker": { "$ref": "#/components/schemas/SlotsPerWorker" }, "sshAuthMountPath": { "$ref": "#/components/schemas/SshAuthMountPath" }, "stdin": { "$ref": "#/components/schemas/Stdin" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapItems" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumeItems" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirItems" }, "git": { "$ref": "#/components/schemas/GitItems" }, "hostPath": { "$ref": "#/components/schemas/HostPathItems" }, "nfs": { "$ref": "#/components/schemas/NfsItems" }, "pvc": { "$ref": "#/components/schemas/PvcItems" }, "s3": { "$ref": "#/components/schemas/S3Items" }, "secretVolume": { "$ref": "#/components/schemas/SecretItems1" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriod" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" }, "tty": { "$ref": "#/components/schemas/Tty" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" } ] }, "DistributedSpec": { "description": "The specifications of the training to be created.", "properties": { "spec": { "$ref": "#/components/schemas/DistributedSpecSpec" }, "masterSpecSameAsWorker": { "$ref": "#/components/schemas/MasterSpecSameAsWorker" }, "masterSpec": { "$ref": "#/components/schemas/MasterSpec" } } }, "DistributedCreationRequest": { "allOf": [ { "$ref": "#/components/schemas/WorkloadCreationMeta" }, { "$ref": "#/components/schemas/SubmitWithTemplateId" }, { "$ref": "#/components/schemas/DistributedSpec" } ] }, "DistributedWorkload": { "allOf": [ { "$ref": "#/components/schemas/WorkloadMeta1" }, { "$ref": "#/components/schemas/DistributedSpec" } ] }, "DistributedInferenceSpecSpec": { "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceCommonSpec" }, { "$ref": "#/components/schemas/DistributedInferenceLeaderSpecFields" }, { "$ref": "#/components/schemas/DistributedInferenceWorkerSpecFields" } ] }, "DistributedInferenceSpec": { "description": "The specifications of the distributed inference to be created.", "properties": { "spec": { "$ref": "#/components/schemas/DistributedInferenceSpecSpec" } } }, "DistributedInferenceCreationRequest": { "allOf": [ { "$ref": "#/components/schemas/WorkloadCreationMeta" }, { "$ref": "#/components/schemas/SubmitWithTemplateId" }, { "$ref": "#/components/schemas/DistributedInferenceSpec" } ] }, "DistributedInference": { "allOf": [ { "$ref": "#/components/schemas/WorkloadMeta1" }, { "$ref": "#/components/schemas/DistributedInferenceSpec" } ] }, "UpdateSpec": { "description": "The specifications of the inference to be updated.", "properties": { "spec": { "allOf": [ { "type": "object", "properties": { "replicas": { "description": "Specifies the number of leader-worker sets to deploy. Each replica represents a group consisting of one leader pod and multiple worker pods. For example, setting replicas to 3 will create 3 independent groups, each with its own leader and corresponding set of workers.", "type": "integer", "format": "int32", "minimum": 0, "maximum": 1000, "example": 2, "nullable": true } }, "nullable": true } ] } } }, "UpdateRequest": { "allOf": [ { "$ref": "#/components/schemas/UpdateSpec" } ] }, "InferenceSpecSpec": { "allOf": [ { "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "args": { "$ref": "#/components/schemas/Args" }, "category": { "$ref": "#/components/schemas/Category" }, "command": { "$ref": "#/components/schemas/Command" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResources" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariables" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrls" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecrets" }, "labels": { "$ref": "#/components/schemas/Labels" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType3" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "ports": { "$ref": "#/components/schemas/Ports" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrls" }, "security": { "nullable": true, "properties": { "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "servingPort": { "$ref": "#/components/schemas/ServingPort" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapItems" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumeItems" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirItems" }, "git": { "$ref": "#/components/schemas/GitItems" }, "hostPath": { "$ref": "#/components/schemas/HostPathItems" }, "nfs": { "$ref": "#/components/schemas/NfsItems" }, "pvc": { "$ref": "#/components/schemas/PvcItems" }, "secretVolume": { "$ref": "#/components/schemas/SecretItems1" } }, "type": "object" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" }, { "$ref": "#/components/schemas/InferenceFields" } ] }, "InferenceSpec": { "description": "The specifications of the inference to be created.", "properties": { "spec": { "$ref": "#/components/schemas/InferenceSpecSpec" } } }, "InferenceCreationRequest": { "allOf": [ { "$ref": "#/components/schemas/WorkloadCreationMeta" }, { "$ref": "#/components/schemas/SubmitWithTemplateId" }, { "$ref": "#/components/schemas/InferenceSpec" } ] }, "Inference1": { "allOf": [ { "$ref": "#/components/schemas/WorkloadMeta1" }, { "$ref": "#/components/schemas/InferenceSpec" } ] }, "InferenceUpdateSpecAutoscaling": { "properties": { "autoscaling": { "$ref": "#/components/schemas/AutoScaling" } } }, "InferenceUpdateSpecServingConfiguration": { "properties": { "servingConfiguration": { "$ref": "#/components/schemas/ServingConfiguration" } } }, "InferenceUpdateSpec": { "description": "The specifications of the inference to be updated.", "properties": { "spec": { "allOf": [ { "nullable": true, "properties": { "args": { "$ref": "#/components/schemas/Args" }, "category": { "$ref": "#/components/schemas/Category" }, "command": { "$ref": "#/components/schemas/Command" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResources" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariables" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecrets" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType3" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" }, { "$ref": "#/components/schemas/InferenceUpdateSpecAutoscaling" }, { "$ref": "#/components/schemas/InferenceUpdateSpecServingConfiguration" } ] } } }, "InferenceUpdateRequest": { "allOf": [ { "$ref": "#/components/schemas/InferenceUpdateSpec" } ] }, "InferenceWorkloadMetricType": { "type": "string", "description": "Specify which data to request.", "enum": [ "THROUGHPUT", "LATENCY" ] }, "InferencePodMetricType": { "type": "string", "description": "Specifies what data to request.", "enum": [ "THROUGHPUT", "LATENCY" ] }, "Revision": { "type": "object", "required": [ "type", "name", "id", "workloadId", "tenantId", "clusterId", "departmentId", "projectId", "createdAt", "phase" ], "properties": { "type": { "type": "string", "example": "runai-revision" }, "name": { "type": "string", "example": "very-important-job" }, "id": { "type": "string", "format": "uuid" }, "workloadId": { "type": "string", "format": "uuid" }, "tenantId": { "$ref": "#/components/schemas/TenantId" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "projectId": { "$ref": "#/components/schemas/ProjectId" }, "departmentId": { "$ref": "#/components/schemas/DepartmentId2" }, "createdAt": { "type": "string", "format": "date-time", "example": "2022-01-01T03:49:52.531Z" }, "deletedAt": { "type": "string", "format": "date-time", "example": "2022-08-12T19:28:24.131Z", "nullable": true }, "revisionRequestedResources": { "$ref": "#/components/schemas/WorkloadRequestResources" }, "podsRequestedResources": { "$ref": "#/components/schemas/WorkloadRequestResources" }, "requestedPods": { "$ref": "#/components/schemas/RequestedPods" }, "requestedNodePools": { "type": "array", "items": { "type": "string", "example": "default" } }, "allocatedResources": { "$ref": "#/components/schemas/WorkloadAllocatedResources" }, "currentNodePools": { "type": "array", "items": { "type": "string", "example": "default" } }, "runningPods": { "type": "integer", "format": "int32", "example": 1 }, "images": { "type": "array", "items": { "type": "string", "example": "alpine:latest" } }, "environmentVariables": { "type": "object", "additionalProperties": { "type": "string" } }, "command": { "type": "string", "example": "sleep" }, "arguments": { "type": "string", "example": "1000" }, "childrenIds": { "type": "array", "writeOnly": true, "items": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid" }, "type": { "type": "string" } } } }, "conditions": { "$ref": "#/components/schemas/Conditions" }, "phase": { "$ref": "#/components/schemas/Phase" }, "phaseMessage": { "type": "string", "example": "Not enough resources in the requested nodepool" }, "phaseUpdatedAt": { "type": "string", "format": "date-time", "example": "2022-06-08T11:28:24.131Z" }, "additionalFields": { "type": "object", "additionalProperties": true } } }, "TemplateId": { "description": "A unique ID of the template.", "type": "string", "format": "uuid", "example": "550e8400-e29b-41d4-a716-446655440000" }, "TemplateName": { "description": "The name of the template.", "type": "string", "minLength": 1, "example": "my-template-name" }, "TemplateDescription": { "description": "A description of the template.", "type": "string", "minLength": 1, "maxLength": 250, "example": "description of my template.", "nullable": true }, "TemplateMetaFields": { "required": [ "id", "name", "scopeType", "scopeId", "createdBy", "createdAt", "workloadType" ], "properties": { "id": { "$ref": "#/components/schemas/TemplateId" }, "name": { "$ref": "#/components/schemas/TemplateName" }, "description": { "$ref": "#/components/schemas/TemplateDescription" }, "workloadType": { "$ref": "#/components/schemas/WorkloadType" }, "scopeType": { "$ref": "#/components/schemas/ScopeType" }, "scopeId": { "$ref": "#/components/schemas/ScopeId" }, "clusterId": { "$ref": "#/components/schemas/ClusterIdOptional" }, "departmentId": { "$ref": "#/components/schemas/DepartmentIdOptional" }, "projectId": { "$ref": "#/components/schemas/ProjectIdOptional" }, "createdBy": { "description": "The user who created the template", "type": "string", "example": "test@lab.com" }, "createdAt": { "description": "The creation time of the template.", "type": "string", "format": "date-time", "example": "2022-01-01T03:49:52.531Z" }, "updatedBy": { "description": "The user who recently updated the template", "type": "string", "nullable": true, "example": "test@lab.com" }, "updatedAt": { "description": "The time of the recent update.", "type": "string", "nullable": true, "format": "date-time", "example": "2022-01-01T03:49:52.531Z" } } }, "TemplateMeta": { "required": [ "meta" ], "properties": { "meta": { "$ref": "#/components/schemas/TemplateMetaFields" } } }, "RunnableInfo": { "description": "whether the template can be submitted, as is", "properties": { "isRunnable": { "type": "boolean", "description": "indication if the template is runnable, as is", "example": false }, "issue": { "type": "string", "nullable": true, "description": "if the template is non runnable, specify a reason", "example": "mandatory image is not provided" } } }, "TemplateAssetsIdsOptional": { "type": "object", "nullable": true }, "MasterTemplateSpec": { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemptionMaster" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimitMaster" }, "category": { "$ref": "#/components/schemas/Category" }, "command": { "$ref": "#/components/schemas/Command" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResources" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariables" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrls" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "labels": { "$ref": "#/components/schemas/Labels" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType3" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "ports": { "$ref": "#/components/schemas/Ports" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClassMaster" }, "probes": { "$ref": "#/components/schemas/Probes" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrls" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicy" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/AllowPrivilegeEscalation" }, "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "hostIpc": { "$ref": "#/components/schemas/HostIpc" }, "hostNetwork": { "$ref": "#/components/schemas/HostNetwork" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "stdin": { "$ref": "#/components/schemas/Stdin" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapItems" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumeItems" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirItems" }, "git": { "$ref": "#/components/schemas/GitItems" }, "hostPath": { "$ref": "#/components/schemas/HostPathItems" }, "nfs": { "$ref": "#/components/schemas/NfsItems" }, "pvc": { "$ref": "#/components/schemas/PvcItems" }, "s3": { "$ref": "#/components/schemas/S3Items" }, "secretVolume": { "$ref": "#/components/schemas/SecretItems1" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriodMaster" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" }, "tty": { "$ref": "#/components/schemas/Tty" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" }, "TemplateMasterSection": { "properties": { "spec": { "$ref": "#/components/schemas/MasterTemplateSpec" }, "assets": { "$ref": "#/components/schemas/TemplateAssetsIdsOptional" } }, "nullable": true, "type": "object" }, "TemplateComplianceIssues": { "description": "A list of issues preventing the use of a template or asset for creating workloads in a given project.", "type": "array", "items": { "$ref": "#/components/schemas/ComplianceInfoReason" } }, "TemplateComplianceInfo": { "properties": { "complianceIssues": { "$ref": "#/components/schemas/TemplateComplianceIssues" } } }, "SupersetTemplate": { "allOf": [ { "$ref": "#/components/schemas/TemplateMeta" }, { "type": "object", "properties": { "runnable": { "$ref": "#/components/schemas/RunnableInfo" }, "spec": { "$ref": "#/components/schemas/SupersetSpec" }, "assets": { "$ref": "#/components/schemas/TemplateAssetsIdsOptional" }, "masterSpecSameAsWorker": { "$ref": "#/components/schemas/MasterSpecSameAsWorker" }, "master": { "$ref": "#/components/schemas/TemplateMasterSection" }, "combinedSpec": { "$ref": "#/components/schemas/SupersetSpec" }, "combinedMasterSpec": { "$ref": "#/components/schemas/MasterTemplateSpec" } }, "nullable": true }, { "$ref": "#/components/schemas/TemplateComplianceInfo" } ] }, "PaginationInfo": { "properties": { "limit": { "type": "number", "format": "int64", "description": "the number of entries included in this bulk of entries" }, "offset": { "type": "number", "format": "int64", "description": "the first entry that was requested to be included in this bulk" }, "nextOffset": { "type": "number", "format": "int64", "description": "the offset of the next bulk of entries" } } }, "TemplatesListResponse": { "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/SupersetTemplate" } }, "pagination": { "$ref": "#/components/schemas/PaginationInfo" } } }, "WorkspaceTemplateSpec": { "allOf": [ { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemption" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimit" }, "category": { "$ref": "#/components/schemas/Category" }, "command": { "$ref": "#/components/schemas/Command" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResources" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariables" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrls" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "labels": { "$ref": "#/components/schemas/Labels" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType3" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "ports": { "$ref": "#/components/schemas/Ports" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrls" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicy" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/AllowPrivilegeEscalation" }, "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "hostIpc": { "$ref": "#/components/schemas/HostIpc" }, "hostNetwork": { "$ref": "#/components/schemas/HostNetwork" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "stdin": { "$ref": "#/components/schemas/Stdin" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapItems" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumeItems" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirItems" }, "git": { "$ref": "#/components/schemas/GitItems" }, "hostPath": { "$ref": "#/components/schemas/HostPathItems" }, "nfs": { "$ref": "#/components/schemas/NfsItems" }, "pvc": { "$ref": "#/components/schemas/PvcItems" }, "s3": { "$ref": "#/components/schemas/S3Items" }, "secretVolume": { "$ref": "#/components/schemas/SecretItems1" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriod" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" }, "tty": { "$ref": "#/components/schemas/Tty" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" } ] }, "TemplateAssets": {}, "WorkspaceTemplate": { "allOf": [ { "$ref": "#/components/schemas/TemplateMeta" }, { "properties": { "spec": { "$ref": "#/components/schemas/WorkspaceTemplateSpec" } } }, { "$ref": "#/components/schemas/TemplateAssets" }, { "type": "object", "properties": { "runnable": { "$ref": "#/components/schemas/RunnableInfo" }, "combinedSpec": { "$ref": "#/components/schemas/WorkspaceTemplateSpec" } } } ] }, "WorkspaceTemplatesListResponseItem": { "allOf": [ { "$ref": "#/components/schemas/WorkspaceTemplate" }, { "$ref": "#/components/schemas/TemplateComplianceInfo" } ] }, "WorkspaceTemplatesListResponse": { "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/WorkspaceTemplatesListResponseItem" } }, "pagination": { "$ref": "#/components/schemas/PaginationInfo" } } }, "ScopeIdOptional": { "type": "string", "description": "The id of the cluster, department or project, depending on the scope type.", "nullable": true }, "TemplateCreationMetaFields": { "required": [ "name", "scopeType" ], "properties": { "name": { "$ref": "#/components/schemas/TemplateName" }, "description": { "$ref": "#/components/schemas/TemplateDescription" }, "scopeType": { "$ref": "#/components/schemas/ScopeType" }, "scopeId": { "$ref": "#/components/schemas/ScopeIdOptional" } } }, "TemplateCreationMeta": { "required": [ "meta" ], "properties": { "meta": { "$ref": "#/components/schemas/TemplateCreationMetaFields" } } }, "WorkspaceTemplateCreationRequest": { "allOf": [ { "$ref": "#/components/schemas/TemplateCreationMeta" }, { "properties": { "spec": { "$ref": "#/components/schemas/WorkspaceTemplateSpec" } } }, { "$ref": "#/components/schemas/TemplateAssets" } ] }, "TemplateUpdateMetaFields": { "required": [ "name" ], "properties": { "name": { "$ref": "#/components/schemas/TemplateName" }, "description": { "$ref": "#/components/schemas/TemplateDescription" } } }, "TemplateUpdateMeta": { "required": [ "meta" ], "properties": { "meta": { "$ref": "#/components/schemas/TemplateUpdateMetaFields" } } }, "WorkspaceTemplateUpdateRequest": { "allOf": [ { "$ref": "#/components/schemas/TemplateUpdateMeta" }, { "properties": { "spec": { "$ref": "#/components/schemas/WorkspaceTemplateSpec" } } }, { "$ref": "#/components/schemas/TemplateAssets" } ] }, "TemplateNameOptional": { "description": "The name of the template.", "type": "string", "example": "my-template-name", "nullable": true }, "TemplatePatchMetaFields": { "required": [ "name" ], "properties": { "name": { "$ref": "#/components/schemas/TemplateNameOptional" }, "description": { "$ref": "#/components/schemas/TemplateDescription" } }, "nullable": true, "type": "object" }, "TemplatePatchMeta": { "properties": { "meta": { "$ref": "#/components/schemas/TemplatePatchMetaFields" } }, "nullable": true, "type": "object" }, "FieldsToClear": { "description": "array of xpath expression with fields that their values should be cleared", "type": "object", "properties": { "fieldsToClear": { "items": { "type": "string", "example": "spec.image", "minLength": 1 } } }, "nullable": true }, "WorkspaceTemplatePatchRequest": { "allOf": [ { "$ref": "#/components/schemas/TemplatePatchMeta" }, { "properties": { "spec": { "$ref": "#/components/schemas/WorkspaceTemplateSpec" } } }, { "$ref": "#/components/schemas/FieldsToClear" }, { "$ref": "#/components/schemas/TemplateAssets" } ] }, "TrainingTemplateSpec": { "allOf": [ { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemption" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimit" }, "category": { "$ref": "#/components/schemas/Category" }, "command": { "$ref": "#/components/schemas/Command" }, "completions": { "$ref": "#/components/schemas/Completions" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResources" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariables" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrls" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "labels": { "$ref": "#/components/schemas/Labels" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType3" }, "parallelism": { "$ref": "#/components/schemas/Parallelism" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "ports": { "$ref": "#/components/schemas/Ports" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrls" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicy" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/AllowPrivilegeEscalation" }, "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "hostIpc": { "$ref": "#/components/schemas/HostIpc" }, "hostNetwork": { "$ref": "#/components/schemas/HostNetwork" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "stdin": { "$ref": "#/components/schemas/Stdin" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapItems" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumeItems" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirItems" }, "git": { "$ref": "#/components/schemas/GitItems" }, "hostPath": { "$ref": "#/components/schemas/HostPathItems" }, "nfs": { "$ref": "#/components/schemas/NfsItems" }, "pvc": { "$ref": "#/components/schemas/PvcItems" }, "s3": { "$ref": "#/components/schemas/S3Items" }, "secretVolume": { "$ref": "#/components/schemas/SecretItems1" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriod" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" }, "tty": { "$ref": "#/components/schemas/Tty" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" } ] }, "TrainingTemplate": { "allOf": [ { "$ref": "#/components/schemas/TemplateMeta" }, { "properties": { "spec": { "$ref": "#/components/schemas/TrainingTemplateSpec" } } }, { "$ref": "#/components/schemas/TemplateAssets" }, { "type": "object", "properties": { "runnable": { "$ref": "#/components/schemas/RunnableInfo" }, "combinedSpec": { "$ref": "#/components/schemas/TrainingTemplateSpec" } } } ] }, "TrainingTemplatesListResponseItem": { "allOf": [ { "$ref": "#/components/schemas/TrainingTemplate" }, { "$ref": "#/components/schemas/TemplateComplianceInfo" } ] }, "TrainingTemplatesListResponse": { "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/TrainingTemplatesListResponseItem" } }, "pagination": { "$ref": "#/components/schemas/PaginationInfo" } } }, "TrainingTemplateCreationRequest": { "allOf": [ { "$ref": "#/components/schemas/TemplateCreationMeta" }, { "properties": { "spec": { "$ref": "#/components/schemas/TrainingTemplateSpec" } } }, { "$ref": "#/components/schemas/TemplateAssets" } ] }, "TrainingTemplateUpdateRequest": { "allOf": [ { "$ref": "#/components/schemas/TemplateUpdateMeta" }, { "properties": { "spec": { "$ref": "#/components/schemas/TrainingTemplateSpec" } } }, { "$ref": "#/components/schemas/TemplateAssets" } ] }, "TrainingTemplatePatchRequest": { "allOf": [ { "$ref": "#/components/schemas/TemplatePatchMeta" }, { "properties": { "spec": { "$ref": "#/components/schemas/TrainingTemplateSpec" } } }, { "$ref": "#/components/schemas/FieldsToClear" }, { "$ref": "#/components/schemas/TemplateAssets" } ] }, "DistributedTemplateSpec": { "allOf": [ { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemption" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimit" }, "category": { "$ref": "#/components/schemas/Category" }, "cleanPodPolicy": { "$ref": "#/components/schemas/CleanPodPolicy" }, "command": { "$ref": "#/components/schemas/Command" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResources" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "distributedFramework": { "$ref": "#/components/schemas/DistributedFramework" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariables" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrls" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "labels": { "$ref": "#/components/schemas/Labels" }, "maxReplicas": { "$ref": "#/components/schemas/MaxReplicas" }, "minReplicas": { "$ref": "#/components/schemas/MinReplicas" }, "mpiLauncherCreationPolicy": { "$ref": "#/components/schemas/MpiLauncherCreationPolicy" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType3" }, "numWorkers": { "$ref": "#/components/schemas/NumWorkers" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "ports": { "$ref": "#/components/schemas/Ports" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrls" }, "restartPolicy": { "$ref": "#/components/schemas/RestartPolicy" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/AllowPrivilegeEscalation" }, "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "hostIpc": { "$ref": "#/components/schemas/HostIpc" }, "hostNetwork": { "$ref": "#/components/schemas/HostNetwork" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "slotsPerWorker": { "$ref": "#/components/schemas/SlotsPerWorker" }, "sshAuthMountPath": { "$ref": "#/components/schemas/SshAuthMountPath" }, "stdin": { "$ref": "#/components/schemas/Stdin" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapItems" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumeItems" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirItems" }, "git": { "$ref": "#/components/schemas/GitItems" }, "hostPath": { "$ref": "#/components/schemas/HostPathItems" }, "nfs": { "$ref": "#/components/schemas/NfsItems" }, "pvc": { "$ref": "#/components/schemas/PvcItems" }, "s3": { "$ref": "#/components/schemas/S3Items" }, "secretVolume": { "$ref": "#/components/schemas/SecretItems1" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriod" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" }, "tty": { "$ref": "#/components/schemas/Tty" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" } ] }, "DistributedTemplate": { "allOf": [ { "$ref": "#/components/schemas/TemplateMeta" }, { "type": "object", "properties": { "spec": { "$ref": "#/components/schemas/DistributedTemplateSpec" }, "masterSpecSameAsWorker": { "$ref": "#/components/schemas/MasterSpecSameAsWorker" }, "master": { "$ref": "#/components/schemas/TemplateMasterSection" }, "runnable": { "$ref": "#/components/schemas/RunnableInfo" }, "combinedSpec": { "$ref": "#/components/schemas/DistributedSpecSpec" }, "combinedMasterSpec": { "$ref": "#/components/schemas/MasterTemplateSpec" } } } ] }, "DistributedTemplatesListResponseItem": { "allOf": [ { "$ref": "#/components/schemas/DistributedTemplate" }, { "$ref": "#/components/schemas/TemplateComplianceInfo" } ] }, "DistributedTemplatesListResponse": { "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/DistributedTemplatesListResponseItem" } }, "pagination": { "$ref": "#/components/schemas/PaginationInfo" } } }, "DistributedTemplateCreationRequest": { "allOf": [ { "$ref": "#/components/schemas/TemplateCreationMeta" }, { "type": "object", "properties": { "spec": { "$ref": "#/components/schemas/DistributedTemplateSpec" } } }, { "$ref": "#/components/schemas/TemplateAssets" }, { "type": "object", "properties": { "masterSpecSameAsWorker": { "$ref": "#/components/schemas/MasterSpecSameAsWorker" }, "master": { "$ref": "#/components/schemas/TemplateMasterSection" } }, "nullable": true } ] }, "DistributedTemplateUpdateRequest": { "allOf": [ { "$ref": "#/components/schemas/TemplateUpdateMeta" }, { "type": "object", "properties": { "spec": { "$ref": "#/components/schemas/DistributedTemplateSpec" } } }, { "$ref": "#/components/schemas/TemplateAssets" }, { "type": "object", "properties": { "masterSpecSameAsWorker": { "$ref": "#/components/schemas/MasterSpecSameAsWorker" }, "master": { "$ref": "#/components/schemas/TemplateMasterSection" } }, "nullable": true } ] }, "DistributedTemplatePatchRequest": { "allOf": [ { "$ref": "#/components/schemas/TemplatePatchMeta" }, { "type": "object", "properties": { "spec": { "$ref": "#/components/schemas/DistributedTemplateSpec" } } }, { "$ref": "#/components/schemas/TemplateAssets" }, { "type": "object", "properties": { "masterSpecSameAsWorker": { "$ref": "#/components/schemas/MasterSpecSameAsWorker" }, "master": { "$ref": "#/components/schemas/TemplateMasterSection" } }, "nullable": true }, { "$ref": "#/components/schemas/FieldsToClear" } ] }, "InferenceTemplateSpec": { "allOf": [ { "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "args": { "$ref": "#/components/schemas/Args" }, "category": { "$ref": "#/components/schemas/Category" }, "command": { "$ref": "#/components/schemas/Command" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResources" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariables" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrls" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "labels": { "$ref": "#/components/schemas/Labels" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType3" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "ports": { "$ref": "#/components/schemas/Ports" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrls" }, "security": { "nullable": true, "properties": { "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "servingPort": { "$ref": "#/components/schemas/ServingPort" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapItems" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumeItems" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirItems" }, "git": { "$ref": "#/components/schemas/GitItems" }, "hostPath": { "$ref": "#/components/schemas/HostPathItems" }, "nfs": { "$ref": "#/components/schemas/NfsItems" }, "pvc": { "$ref": "#/components/schemas/PvcItems" }, "secretVolume": { "$ref": "#/components/schemas/SecretItems1" } }, "type": "object" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" }, { "$ref": "#/components/schemas/InferenceFields" } ] }, "InferenceTemplate": { "allOf": [ { "$ref": "#/components/schemas/TemplateMeta" }, { "type": "object", "properties": { "spec": { "$ref": "#/components/schemas/InferenceTemplateSpec" } } }, { "$ref": "#/components/schemas/TemplateAssets" }, { "type": "object", "properties": { "runnable": { "$ref": "#/components/schemas/RunnableInfo" }, "combinedSpec": { "$ref": "#/components/schemas/InferenceTemplateSpec" } }, "nullable": true } ] }, "InferenceTemplatesListResponseItem": { "allOf": [ { "$ref": "#/components/schemas/InferenceTemplate" }, { "$ref": "#/components/schemas/TemplateComplianceInfo" } ] }, "InferenceTemplatesListResponse": { "properties": { "entries": { "type": "array", "items": { "$ref": "#/components/schemas/InferenceTemplatesListResponseItem" } }, "pagination": { "$ref": "#/components/schemas/PaginationInfo" } } }, "InferenceTemplateCreationRequest": { "allOf": [ { "$ref": "#/components/schemas/TemplateCreationMeta" }, { "type": "object", "properties": { "spec": { "$ref": "#/components/schemas/InferenceTemplateSpec" } } }, { "$ref": "#/components/schemas/TemplateAssets" } ] }, "InferenceTemplateUpdateRequest": { "allOf": [ { "$ref": "#/components/schemas/TemplateUpdateMeta" }, { "type": "object", "properties": { "spec": { "$ref": "#/components/schemas/InferenceTemplateSpec" } } }, { "$ref": "#/components/schemas/TemplateAssets" } ] }, "InferenceTemplatePatchRequest": { "allOf": [ { "$ref": "#/components/schemas/TemplatePatchMeta" }, { "type": "object", "properties": { "spec": { "$ref": "#/components/schemas/InferenceTemplateSpec" } } }, { "$ref": "#/components/schemas/FieldsToClear" }, { "$ref": "#/components/schemas/TemplateAssets" } ] }, "DistributedInferenceLeaderWorkerTemplateSpec": { "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "args": { "$ref": "#/components/schemas/Args" }, "command": { "$ref": "#/components/schemas/Command" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResources" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariables" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "labels": { "$ref": "#/components/schemas/Labels" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodeType": { "$ref": "#/components/schemas/NodeType3" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "probes": { "$ref": "#/components/schemas/Probes" }, "security": { "nullable": true, "properties": { "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapItems" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirItems" }, "pvc": { "$ref": "#/components/schemas/PvcItems" }, "secretVolume": { "$ref": "#/components/schemas/SecretItems1" } }, "type": "object" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" }, "DistributedInferenceLeaderTemplateSpecFields": { "properties": { "leader": { "description": "Defines the pod specification for the leader.", "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceLeaderWorkerTemplateSpec" } ], "nullable": true, "type": "object" } } }, "DistributedInferenceWorkerTemplateSpecFields": { "properties": { "worker": { "description": "Defines the pod specification for the workers.", "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceLeaderWorkerTemplateSpec" } ], "nullable": true, "type": "object" } } }, "DistributedInferenceTemplateSpec": { "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceCommonSpec" }, { "$ref": "#/components/schemas/DistributedInferenceLeaderTemplateSpecFields" }, { "$ref": "#/components/schemas/DistributedInferenceWorkerTemplateSpecFields" } ] }, "DistributedInferenceTemplate": { "allOf": [ { "$ref": "#/components/schemas/TemplateMeta" }, { "type": "object", "properties": { "spec": { "$ref": "#/components/schemas/DistributedInferenceTemplateSpec" } } }, { "type": "object", "properties": { "runnable": { "$ref": "#/components/schemas/RunnableInfo" }, "combinedSpec": { "$ref": "#/components/schemas/DistributedInferenceTemplateSpec" } }, "nullable": true } ] }, "DistributedInferenceTemplatesListResponseItem": { "allOf": [ { "$ref": "#/components/schemas/DistributedInferenceTemplate" }, { "$ref": "#/components/schemas/TemplateComplianceInfo" } ] }, "DistributedInferenceTemplateCreationRequest": { "allOf": [ { "$ref": "#/components/schemas/TemplateCreationMeta" }, { "type": "object", "properties": { "spec": { "$ref": "#/components/schemas/DistributedInferenceTemplateSpec" } } } ] }, "DistributedInferenceTemplateUpdateRequest": { "allOf": [ { "$ref": "#/components/schemas/TemplateUpdateMeta" }, { "type": "object", "properties": { "spec": { "$ref": "#/components/schemas/DistributedInferenceTemplateSpec" } } } ] }, "DistributedInferenceTemplatePatchRequest": { "allOf": [ { "$ref": "#/components/schemas/TemplatePatchMeta" }, { "type": "object", "properties": { "spec": { "$ref": "#/components/schemas/DistributedInferenceTemplateSpec" } } }, { "$ref": "#/components/schemas/FieldsToClear" } ] }, "SupersetDefaults1": { "allOf": [ { "$ref": "#/components/schemas/InferenceFields" }, { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/AnnotationsDefaults" }, "args": { "$ref": "#/components/schemas/Args" }, "autoDeletionTimeAfterCompletionSeconds": { "$ref": "#/components/schemas/AutoDeletionTimeAfterPreemption" }, "backoffLimit": { "$ref": "#/components/schemas/BackoffLimit" }, "category": { "$ref": "#/components/schemas/Category" }, "cleanPodPolicy": { "$ref": "#/components/schemas/CleanPodPolicy" }, "command": { "$ref": "#/components/schemas/Command" }, "completions": { "$ref": "#/components/schemas/Completions" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "extendedResources": { "$ref": "#/components/schemas/ExtendedResourcesDefaults" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" }, "largeShmRequest": { "$ref": "#/components/schemas/LargeShmRequest" } }, "type": "object" }, "createHomeDir": { "$ref": "#/components/schemas/CreateHomeDir" }, "distributedFramework": { "$ref": "#/components/schemas/DistributedFramework" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariablesDefaults" }, "exposedUrls": { "$ref": "#/components/schemas/ExposedUrlsDefaults" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecretsDefaults" }, "labels": { "$ref": "#/components/schemas/LabelsDefaults" }, "maxReplicas": { "$ref": "#/components/schemas/MaxReplicas" }, "minReplicas": { "$ref": "#/components/schemas/MinReplicas" }, "mpiLauncherCreationPolicy": { "$ref": "#/components/schemas/MpiLauncherCreationPolicy" }, "nodeAffinityRequired": { "$ref": "#/components/schemas/NodeAffinityRequired" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "nodeType": { "$ref": "#/components/schemas/NodeType3" }, "numWorkers": { "$ref": "#/components/schemas/NumWorkers" }, "parallelism": { "$ref": "#/components/schemas/Parallelism" }, "podAffinity": { "$ref": "#/components/schemas/PodAffinity" }, "ports": { "$ref": "#/components/schemas/PortsDefaults" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "relatedUrls": { "$ref": "#/components/schemas/RelatedUrlsDefaults" }, "restartPolicy": { "$ref": "#/components/schemas/SupersetRestartPolicy" }, "security": { "nullable": true, "properties": { "allowPrivilegeEscalation": { "$ref": "#/components/schemas/AllowPrivilegeEscalation" }, "capabilities": { "$ref": "#/components/schemas/Capabilities" }, "hostIpc": { "$ref": "#/components/schemas/HostIpc" }, "hostNetwork": { "$ref": "#/components/schemas/HostNetwork" }, "readOnlyRootFilesystem": { "$ref": "#/components/schemas/ReadOnlyRootFileSystem" }, "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsNonRoot": { "$ref": "#/components/schemas/RunAsNonRoot" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" }, "seccompProfileType": { "$ref": "#/components/schemas/SeccompProfileType" }, "supplementalGroups": { "$ref": "#/components/schemas/SupplementalGroups" }, "uidGidSource": { "$ref": "#/components/schemas/UidGidSource" } }, "type": "object" }, "servingPort": { "$ref": "#/components/schemas/SupersetServingPort" }, "slotsPerWorker": { "$ref": "#/components/schemas/SlotsPerWorker" }, "sshAuthMountPath": { "$ref": "#/components/schemas/SshAuthMountPath" }, "stdin": { "$ref": "#/components/schemas/Stdin" }, "storage": { "nullable": true, "properties": { "configMapVolume": { "$ref": "#/components/schemas/ConfigMapsDefaults" }, "dataVolume": { "$ref": "#/components/schemas/DataVolumesDefaults" }, "emptyDirVolume": { "$ref": "#/components/schemas/EmptyDirsDefaults" }, "git": { "$ref": "#/components/schemas/GitsDefaults" }, "hostPath": { "$ref": "#/components/schemas/HostPathsDefaults" }, "nfs": { "$ref": "#/components/schemas/NfssDefaults" }, "pvc": { "$ref": "#/components/schemas/PvcsDefaults" }, "s3": { "$ref": "#/components/schemas/S3sDefaults" }, "secretVolume": { "$ref": "#/components/schemas/SecretsDefaults" } }, "type": "object" }, "terminateAfterPreemption": { "$ref": "#/components/schemas/TerminateAfterPreemption" }, "terminationGracePeriodSeconds": { "$ref": "#/components/schemas/TerminationGracePeriod" }, "tolerations": { "$ref": "#/components/schemas/TolerationsDefaults" }, "tty": { "$ref": "#/components/schemas/Tty" }, "workingDir": { "$ref": "#/components/schemas/WorkingDir" } }, "type": "object" } ] }, "Action1": { "type": "string", "description": "The action to perform on the list of ids.", "enum": [ "delete", "suspend", "resume" ] }, "WorkloadBatch": { "type": "object", "description": "The ids and action to perform on a batch of workloads. The number of ids is limited to 100.", "required": [ "ids", "action" ], "properties": { "ids": { "$ref": "#/components/schemas/IdsList" }, "action": { "$ref": "#/components/schemas/Action1" } } }, "WorkloadCategory": { "type": "object", "required": [ "id", "name" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "The unique identifier of the workload category." }, "name": { "type": "string", "description": "A unique, human-readable name for the workload category." }, "description": { "type": "string", "description": "An optional description providing additional details about the category." }, "createdAt": { "type": "string", "format": "date-time", "description": "The date and time when the workload category was created." }, "createdBy": { "type": "string", "description": "The user who created the workload category." } } }, "WorkloadCategories": { "type": "array", "items": { "$ref": "#/components/schemas/WorkloadCategory" }, "x-schema-name": "WorkloadCategories" }, "WorkloadTypeCreateUpdateInnerFields": { "type": "object", "properties": { "categoryId": { "type": "string", "format": "uuid", "description": "The unique identifier of the workload category." }, "priorityId": { "type": "string", "format": "uuid", "description": "The unique identifier of the workload priority." } } }, "WorkloadTypeAdditionalCreateFields": { "type": "object", "properties": { "name": { "type": "string", "example": "Deployment", "description": "The unique name of the workload type. This value must exactly match the Kubernetes Kind that represents the workload type.", "pattern": "^[A-Z][a-z0-9]*([A-Z][a-z0-9]*)*$" }, "group": { "type": "string", "example": "apps", "description": "The Kubernetes group associated with the workload resource.", "pattern": "^[a-z](?:[a-z0-9.-]*[a-z0-9])?$" } } }, "WorkloadTypeResourceInterface": { "type": "object", "description": "The resource interface for the workload type.", "additionalProperties": true, "example": { "spec": { "structureDefinition": { "rootComponent": { "kind": { "group": "apps", "version": "v1", "kind": "Deployment" } } } } } }, "WorkloadTypeResourceInterfacesWithVersion": { "type": "array", "description": "Lists the versions of the custom resource definition (CRD) supported for this workload type, such as v1, v1beta1, or v1alpha1. This enables the platform to correctly parse, interpret, and manage manifests for this workload type according to the specific structure and schema associated with each listed version.", "items": { "type": "object", "properties": { "version": { "type": "string", "example": "v1", "description": "The version of the resource definition k8s crd." }, "resourceInterface": { "$ref": "#/components/schemas/WorkloadTypeResourceInterface" } } } }, "WorkloadTypeStatusFields": { "type": "object", "properties": { "phase": { "type": "string", "description": "The current phase of the workload type in the cluster.", "example": "Ready" }, "conditions": { "$ref": "#/components/schemas/Conditions" }, "version": { "type": "string", "description": "The version of the resource definition's Kubernetes CRD.", "example": "v1" } } }, "WorkloadTypeStatus": { "allOf": [ { "$ref": "#/components/schemas/WorkloadTypeStatusFields" }, { "type": "object", "properties": { "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "updatedAt": { "type": "string", "format": "date-time", "description": "The date and time when the workload type status of this cluster was last updated." } } } ] }, "WorkloadTypeConfig": { "allOf": [ { "$ref": "#/components/schemas/WorkloadTypeCreateUpdateInnerFields" }, { "$ref": "#/components/schemas/WorkloadTypeAdditionalCreateFields" }, { "type": "object", "required": [ "name", "group", "categoryId", "priorityId" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "The unique identifier of the workload type." }, "categoryName": { "type": "string", "example": "Build", "description": "The name of the workload category." }, "priorityName": { "type": "string", "example": "medium", "description": "The name of the workload priority." }, "updatedAt": { "type": "string", "format": "date-time", "description": "The timestamp for the last time the workload type was updated." }, "updatedBy": { "type": "string", "description": "Identifier of the user who last updated the workload type." }, "createdAt": { "type": "string", "format": "date-time", "description": "The timestamp for when the workload type was created." }, "createdBy": { "type": "string", "description": "Identifier of the user who created the workload type." }, "resourceInterfaces": { "$ref": "#/components/schemas/WorkloadTypeResourceInterfacesWithVersion" }, "clusterStatuses": { "nullable": true, "type": "array", "items": { "$ref": "#/components/schemas/WorkloadTypeStatus" } } } } ] }, "WorkloadTypeConfigs": { "type": "array", "items": { "$ref": "#/components/schemas/WorkloadTypeConfig" }, "x-schema-name": "WorkloadTypes" }, "WorkloadTypeResourceInterfaces": { "type": "array", "description": "Lists the versions of the custom resource definition (CRD) supported for this workload type, such as v1, v1beta1, or v1alpha1. This enables the platform to correctly parse, interpret, and manage manifests for this workload type according to the specific structure and schema associated with each listed version. On update, you may only add or remove supported versions, modifying existing version entries is not allowed.", "maxItems": 4, "items": { "$ref": "#/components/schemas/WorkloadTypeResourceInterface" } }, "WorkloadTypeCreateFields": { "allOf": [ { "$ref": "#/components/schemas/WorkloadTypeCreateUpdateInnerFields" }, { "$ref": "#/components/schemas/WorkloadTypeAdditionalCreateFields" }, { "type": "object", "required": [ "name", "group", "categoryId", "priorityId" ], "properties": { "resourceInterfaces": { "$ref": "#/components/schemas/WorkloadTypeResourceInterfaces" } } } ] }, "WorkloadTypeUpdateFields": { "allOf": [ { "$ref": "#/components/schemas/WorkloadTypeCreateUpdateInnerFields" }, { "type": "object", "properties": { "resourceInterfaces": { "$ref": "#/components/schemas/WorkloadTypeResourceInterfaces" } } } ] }, "PriorityStatus": { "type": "object", "properties": { "clusterId": { "type": "string", "example": "d73a738f-fab3-430a-8fa3-5241493d7128", "description": "The unique identifier of the cluster" }, "phase": { "type": "string", "description": "Current phase of the priority in the specified cluster", "example": "Ready" } } }, "BasePriority": { "type": "object", "required": [ "id", "name", "value" ], "properties": { "id": { "type": "string", "example": "d73a738f-fab3-430a-8fa3-5241493d7128", "description": "The unique identifier of the workload priority" }, "source": { "description": "The source of the priority class. Indicates where the priority definition originated. Currently, the value is either Run:ai or empty.", "type": "string", "example": "Run:ai" }, "name": { "type": "string", "example": "medium", "description": "The name of the workload priority (e.g., low, medium, high)" }, "value": { "type": "integer", "minimum": 0, "example": 50, "description": "The scheduling value assigned to this priority" }, "createdAt": { "type": "string", "format": "date-time", "description": "The timestamp for when the priority was created", "example": "2022-01-01T03:49:52.531Z" }, "updatedAt": { "type": "string", "format": "date-time", "description": "The timestamp for when the priority was updated", "example": "2022-06-08T11:28:24.131Z" } } }, "WorkloadPriority": { "allOf": [ { "type": "object" }, { "properties": { "aggregatedPhase": { "type": "string", "example": "Ready", "description": "Combined status of the priority across all clusters" }, "status": { "type": "array", "description": "Per-cluster status details", "items": { "$ref": "#/components/schemas/PriorityStatus" } }, "scopeType": { "description": "The type of scope the workload priority applies to.", "type": "string", "example": "tenant" }, "scopeId": { "description": "The unique identifier of the scope the workload priority applies to.", "type": "string", "example": "1" } } }, { "$ref": "#/components/schemas/BasePriority" } ] }, "Priorities": { "type": "array", "items": { "$ref": "#/components/schemas/WorkloadPriority" } }, "SyncPriority": { "allOf": [ { "type": "object" }, { "properties": { "deletedAt": { "type": "string", "format": "date-time", "example": "2022-01-01T03:49:52.531Z", "nullable": true } } }, { "$ref": "#/components/schemas/BasePriority" } ] }, "ClusterPriority": { "allOf": [ { "type": "object" }, { "properties": { "phase": { "type": "string", "example": "Ready", "description": "Current phase of the priority in the specified cluster" } } }, { "$ref": "#/components/schemas/BasePriority" } ] }, "ApplicationVerbosity": { "type": "string", "enum": [ "brief", "full" ], "default": "brief" }, "ApplicationResource": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "name": { "type": "string" }, "kind": { "type": "string" } } }, "ApplicationAllocatedResources": { "type": "object", "nullable": true, "properties": { "gpu": { "type": "number", "nullable": true, "format": "double", "example": 1.5, "description": "States the number of GPUs allocated for the created workloads." }, "gpuMemory": { "type": "string", "pattern": "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$", "nullable": true, "example": "200Mi" }, "cpu": { "type": "number", "nullable": true, "format": "double", "description": "States the amount of CPU cores used by the workloads running.", "example": 0.5 }, "cpuMemory": { "type": "string", "pattern": "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$", "nullable": true, "example": "0B" } } }, "ApplicationRequestResources": { "type": "object", "nullable": true, "properties": { "gpu": { "$ref": "#/components/schemas/RequestResourceCores" }, "gpuMemory": { "$ref": "#/components/schemas/RequestResourceQuantity" }, "cpu": { "$ref": "#/components/schemas/RequestResourceCores" }, "cpuMemory": { "$ref": "#/components/schemas/RequestResourceQuantity" } } }, "Application1": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" }, "name": { "type": "string" }, "source": { "type": "string" }, "type": { "type": "string" }, "phase": { "type": "string" }, "projectId": { "type": "string" }, "projectName": { "type": "string" }, "resources": { "type": "array", "items": { "$ref": "#/components/schemas/ApplicationResource" } }, "allocatedResources": { "$ref": "#/components/schemas/ApplicationAllocatedResources" }, "requestedResources": { "$ref": "#/components/schemas/ApplicationRequestResources" } } }, "Applications1": { "type": "array", "items": { "$ref": "#/components/schemas/Application1" } }, "Priority1": { "$ref": "#/components/schemas/WorkloadPriority" }, "SupersetWorkloadSpec": { "$ref": "#/components/schemas/SupersetSpec" }, "WorkloadV2MetadataCreateParams": { "type": "object", "properties": { "name": { "description": "The name of the workload.", "type": "string", "example": "my-workload-name", "pattern": ".*" }, "useGivenNameAsPrefix": { "description": "When true, the requested name will be treated as a prefix. The final name of the workload will be composed of the name followed by a random set of characters.", "type": "boolean", "example": true, "default": false }, "projectId": { "$ref": "#/components/schemas/ProjectId" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "priority": { "$ref": "#/components/schemas/PriorityClass" }, "category": { "$ref": "#/components/schemas/Category" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" } } }, "Manifest": { "type": "object", "description": "The full Kubernetes manifest for the workload in JSON form. Mutually exclusive with manifestEncodedBase64.", "additionalProperties": true, "example": { "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "name": "my-app" }, "spec": { "replicas": 1, "selector": { "matchLabels": { "app": "my-app" } }, "template": { "metadata": { "labels": { "app": "my-app" } }, "spec": { "containers": [ { "name": "app", "image": "nginx:latest" } ] } } } } }, "ManifestEncoded": { "type": "string", "format": "byte", "example": "YXBpVmVyc2lvbjogdjEKa2luZDogUG9kCm1ldGFkYXRhOgogIG5hbWU6IG15LXBvZApzcGVjOgogIGNvbnRhaW5lcnM6CiAgLSBuYW1lOiBuZ2lueAogICAgaW1hZ2U6IG5naW54OmxhdGVzdAo=", "description": "Kubernetes YAML manifest encoded in base 64. Mutually exclusive with manifest." }, "WorkloadV2CreateRequest": { "type": "object", "required": [ "metadata" ], "properties": { "metadata": { "$ref": "#/components/schemas/WorkloadV2MetadataCreateParams" }, "manifest": { "$ref": "#/components/schemas/Manifest" }, "manifestBase64Encoded": { "$ref": "#/components/schemas/ManifestEncoded" } } }, "WorkloadV2MetadataResponse": { "type": "object", "required": [ "name", "projectId" ], "properties": { "name": { "$ref": "#/components/schemas/WorkloadName" }, "projectId": { "$ref": "#/components/schemas/ProjectId" }, "priority": { "$ref": "#/components/schemas/PriorityClass" }, "category": { "$ref": "#/components/schemas/Category" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" } } }, "WorkloadId3": { "description": "A unique ID of the workload.", "type": "string", "format": "uuid" }, "GVK": { "type": "object", "description": "Specifies the Group, Version, and Kind (GVK) of the Kubernetes resource that defines the workload.", "required": [ "group", "version", "kind" ], "properties": { "group": { "description": "The API group of the Kubernetes resource.", "type": "string", "example": "apps" }, "version": { "description": "The API version of the resource within the specified group.", "type": "string", "example": "v1" }, "kind": { "description": "The type of Kubernetes resource being referenced.", "type": "string", "example": "Deployment" } } }, "ProjectName2": { "type": "string", "description": "The name of the project", "example": "project-a", "minLength": 1, "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?$" }, "DepartmentId3": { "description": "The id of the department.", "type": "string", "minLength": 1, "example": 2, "pattern": ".*" }, "DepartmentName1": { "type": "string", "description": "The name of the department", "example": "default", "minLength": 1, "pattern": "^[a-z0-9]([a-z0-9-]*[a-z0-9])?$" }, "WorkloadV2MetadataAutoFill": { "type": "object", "required": [ "id", "gvk", "projectName", "clusterId", "tenantId", "departmentId", "departmentName", "createdAt", "createdBy", "updatedAt", "updatedBy" ], "properties": { "id": { "$ref": "#/components/schemas/WorkloadId3" }, "gvk": { "$ref": "#/components/schemas/GVK" }, "projectName": { "$ref": "#/components/schemas/ProjectName2" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" }, "tenantId": { "$ref": "#/components/schemas/TenantId" }, "departmentId": { "$ref": "#/components/schemas/DepartmentId3" }, "departmentName": { "$ref": "#/components/schemas/DepartmentName1" }, "createdAt": { "type": "string", "format": "date-time", "description": "The timestamp for when the workload was created.", "example": "2024-01-15T10:30:00Z" }, "createdBy": { "type": "string", "description": "Identifier of the user who created the workload.", "format": ".*", "example": "user@run.ai" }, "updatedAt": { "type": "string", "format": "date-time", "description": "The timestamp for the last time the workload was updated.", "example": "2024-01-15T10:35:00Z" }, "updatedBy": { "type": "string", "description": "Identifier of the user who last updated the workload.", "format": ".*", "example": "user@run.ai" }, "deletedAt": { "type": "string", "format": "date-time", "description": "The timestamp indicating when the workload was deleted.", "example": "2024-01-15T10:35:00Z", "nullable": true }, "deletedBy": { "type": "string", "format": ".*", "description": "Identifier of the user who deleted the workload.", "example": "user@run.ai", "nullable": true } } }, "WorkloadV2Metadata": { "allOf": [ { "$ref": "#/components/schemas/WorkloadV2MetadataResponse" }, { "$ref": "#/components/schemas/WorkloadV2MetadataAutoFill" } ] }, "DesiredPhase": { "description": "The desired phase of the workload.", "type": "string", "enum": [ "Running", "Stopped", "Deleted" ] }, "WorkloadV2": { "type": "object", "required": [ "metadata", "desiredPhase", "workloadManifest", "rawManifest" ], "properties": { "metadata": { "$ref": "#/components/schemas/WorkloadV2Metadata" }, "desiredPhase": { "$ref": "#/components/schemas/DesiredPhase" }, "workloadManifest": { "$ref": "#/components/schemas/Manifest" }, "rawManifest": { "$ref": "#/components/schemas/Manifest" } } }, "WorkloadV2SyncStatus": { "type": "string", "enum": [ "Queued", "Applying", "Deleting", "Synced", "Deleted", "Failed" ] }, "WorkloadV2SyncInfo": { "type": "object", "required": [ "status" ], "properties": { "status": { "$ref": "#/components/schemas/WorkloadV2SyncStatus" }, "message": { "type": "string", "pattern": ".*" } } }, "WorkloadV2GetResponse": { "type": "object", "required": [ "workload" ], "properties": { "workload": { "$ref": "#/components/schemas/WorkloadV2" }, "syncInfo": { "$ref": "#/components/schemas/WorkloadV2SyncInfo" } } }, "WorkloadV2MetadataUpdateParams": { "type": "object", "properties": { "priority": { "$ref": "#/components/schemas/PriorityClass" }, "category": { "$ref": "#/components/schemas/Category" } } }, "WorkloadV2UpdateRequest": { "type": "object", "properties": { "metadata": { "$ref": "#/components/schemas/WorkloadV2MetadataUpdateParams" }, "manifest": { "$ref": "#/components/schemas/Manifest" }, "manifestBase64Encoded": { "$ref": "#/components/schemas/ManifestEncoded" } } }, "NIMServiceMetadataCreateParams": { "type": "object", "required": [ "name", "projectId" ], "properties": { "name": { "$ref": "#/components/schemas/WorkloadName" }, "useGivenNameAsPrefix": { "description": "When true, the requested name will be treated as a prefix. The final name of the workload will be composed of the name followed by a random set of characters.", "type": "boolean", "example": true, "default": false }, "projectId": { "$ref": "#/components/schemas/ProjectId" } } }, "NimServiceSpec": { "allOf": [ { "nullable": true, "properties": { "annotations": { "$ref": "#/components/schemas/Annotations" }, "autoscaling": { "nullable": true, "properties": { "maxReplicas": { "$ref": "#/components/schemas/AutoScalingMaxReplicas" }, "metric": { "$ref": "#/components/schemas/AutoScalingMetricNim" }, "metricThreshold": { "$ref": "#/components/schemas/AutoScalingMetricThreshold" }, "minReplicas": { "$ref": "#/components/schemas/AutoScalingMinReplicas" }, "scaleWindowSeconds": { "$ref": "#/components/schemas/AutoScalingScaleWindowSeconds" } }, "type": "object" }, "category": { "$ref": "#/components/schemas/Category" }, "compute": { "nullable": true, "properties": { "cpuCoreLimit": { "$ref": "#/components/schemas/CpuCoreLimit" }, "cpuCoreRequest": { "$ref": "#/components/schemas/CpuCoreRequest" }, "cpuMemoryLimit": { "$ref": "#/components/schemas/CpuMemoryLimit" }, "cpuMemoryRequest": { "$ref": "#/components/schemas/CpuMemoryRequest" }, "gpuDevicesRequest": { "$ref": "#/components/schemas/GpuDevicesRequest" }, "gpuMemoryLimit": { "$ref": "#/components/schemas/GpuMemoryLimit" }, "gpuMemoryRequest": { "$ref": "#/components/schemas/GpuMemoryRequest" }, "gpuPortionLimit": { "$ref": "#/components/schemas/GpuPortionLimit" }, "gpuPortionRequest": { "$ref": "#/components/schemas/GpuPortionRequest" }, "gpuRequestType": { "$ref": "#/components/schemas/GpuRequestType" } }, "type": "object" }, "environmentVariables": { "$ref": "#/components/schemas/EnvironmentVariables" }, "image": { "$ref": "#/components/schemas/Image" }, "imagePullPolicy": { "$ref": "#/components/schemas/ImagePullPolicy" }, "imagePullSecrets": { "$ref": "#/components/schemas/ImagePullSecrets" }, "labels": { "$ref": "#/components/schemas/Labels" }, "modelStore": { "nullable": true, "properties": { "nimCache": { "$ref": "#/components/schemas/NimCache" }, "pvc": { "$ref": "#/components/schemas/NimServicePvcFields" } }, "type": "object" }, "multiNode": { "$ref": "#/components/schemas/NimServiceMultiNode" }, "ngcAuthSecret": { "$ref": "#/components/schemas/NimServiceNgcAuthSecret" }, "nodePools": { "$ref": "#/components/schemas/NodePools" }, "preemptibility": { "$ref": "#/components/schemas/Preemptibility" }, "priorityClass": { "$ref": "#/components/schemas/PriorityClass" }, "probes": { "$ref": "#/components/schemas/Probes" }, "replicas": { "$ref": "#/components/schemas/NimServiceReplicas" }, "security": { "nullable": true, "properties": { "runAsGid": { "$ref": "#/components/schemas/RunAsGid" }, "runAsUid": { "$ref": "#/components/schemas/RunAsUid" } }, "type": "object" }, "servingPort": { "$ref": "#/components/schemas/NimServiceServingPort" }, "tolerations": { "$ref": "#/components/schemas/Tolerations" } }, "type": "object" } ] }, "NimServiceCreateRequest": { "type": "object", "required": [ "metadata", "spec" ], "properties": { "metadata": { "$ref": "#/components/schemas/NIMServiceMetadataCreateParams" }, "spec": { "$ref": "#/components/schemas/NimServiceSpec" } } }, "NimServiceResponse": { "type": "object", "required": [ "spec", "metadata", "desiredPhase" ], "properties": { "metadata": { "$ref": "#/components/schemas/WorkloadV2Metadata" }, "desiredPhase": { "$ref": "#/components/schemas/DesiredPhase" }, "spec": { "$ref": "#/components/schemas/NimServiceSpec" } } }, "NimServiceUpdateRequest": { "type": "object", "required": [ "spec" ], "properties": { "spec": { "$ref": "#/components/schemas/NimServiceSpec" } } }, "LogoCreationRequest": { "type": "object", "required": [ "logo" ], "properties": { "logo": { "type": "string", "description": "Base64 logo file" } } }, "DatavolumeRequestType": { "type": "string", "description": "Which datavolumes to return in the GET datavolumes response. Originated - datavolumes that are originated in the permitted scopes of the caller. UsableInProject - datavolumes that can be used in a specific project; if you use this value, you must also provide the project ID in the \"usableInProjectId\" query param.", "example": "Originated", "enum": [ "Originated", "UsableInProject" ] }, "BaseFields": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "example": "71f69d83-ba66-4822-adf5-55ce55efd210" }, "createdAt": { "type": "string", "format": "date-time" }, "updatedAt": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string", "example": "user@run.ai" }, "updatedBy": { "type": "string", "example": "user@run.ai" } } }, "DatavolumeCreationFields": { "type": "object", "required": [ "name", "projectId", "originPvcName" ], "properties": { "name": { "type": "string", "maxLength": 63, "pattern": "^[a-z][-a-z0-9]{0,62}$", "example": "datavolume-a", "description": "The name of the new data volume." }, "description": { "type": "string", "maxLength": 127, "description": "A brief description of the data volume and its purpose.", "example": "Results of experiment X" }, "originPvcName": { "description": "The name of the existing PVC that the new data volume is based on.", "type": "string", "example": "pvc-a" }, "projectId": { "description": "The ID of the project whose namespace contains the origin PVC.", "type": "string", "example": "5" }, "shouldDeleteOriginalVolume": { "description": "True is not supported. This parameter will be removed in a future release.", "type": "boolean", "default": false, "example": false }, "useOriginalVolume": { "description": "If true, the original storage volume will be used together with the data volume. Default true as long as \"shouldDeleteOriginalVolume\" is false.", "type": "boolean", "default": true, "example": true, "nullable": true } } }, "EnrichmentDataFields1": { "type": "object", "required": [ "projectName" ], "properties": { "projectName": { "type": "string", "example": "project-a" }, "departmentId": { "type": "string", "example": "department-a" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" } } }, "DatavolumeInnerFields": { "allOf": [ { "$ref": "#/components/schemas/BaseFields" }, { "$ref": "#/components/schemas/DatavolumeCreationFields" }, { "$ref": "#/components/schemas/EnrichmentDataFields1" } ] }, "DatavolumePhase": { "type": "string", "description": "Phase of the Datavolume in the cluster", "example": "Ready", "enum": [ "Ready", "NotReady", "Creating", "Deleting", "Unknown" ] }, "Condition2": { "type": "object", "required": [ "type", "status" ], "properties": { "type": { "description": "The type of the condition, such as Failed or Available. See Types of domain status conditions.", "type": "string", "example": "PvcsCreated" }, "status": { "type": "string", "description": "The status of the condition, such as True, False or Unknown.", "example": "False" }, "message": { "type": "string", "description": "An optional, human-readable message providing more details about the condition.", "example": "Failed to create pvc in namespace 'runai-proj1'" }, "reason": { "type": "string", "description": "The reason for the Failed condition. Not applicable to other types of condition.", "example": "ErrorCreatingPvc" }, "lastTransitionTime": { "description": "A timestamp of when the condition was created or the last time time the condition transitioned from one status to another.", "type": "string", "nullable": true, "format": "date-time", "example": "2022-01-01T03:49:52.531Z" } } }, "Conditions1": { "type": "array", "items": { "$ref": "#/components/schemas/Condition2" }, "x-schema-name": "Conditions" }, "DatavolumeStatus": { "type": "object", "required": [ "phase" ], "properties": { "phase": { "$ref": "#/components/schemas/DatavolumePhase" }, "phaseMessage": { "type": "string", "description": "Message explaining the phase of the Datavolume in the cluster", "example": "Failed to copy pvc to project 'project-a'" }, "conditions": { "$ref": "#/components/schemas/Conditions1" }, "datavolumePvcName": { "type": "string", "description": "The name of the copied PVC that is created in the cluster in the project namespace", "example": "datavolume-pvc-1" }, "datavolumePvName": { "type": "string", "description": "The name of the PV that is created in the cluster - copied from the one that was attached to the original pvc", "example": "datavolume-pv-1" } } }, "DatavolumeNoSharedScopes": { "allOf": [ { "$ref": "#/components/schemas/DatavolumeInnerFields" }, { "type": "object", "required": [ "status" ], "properties": { "status": { "$ref": "#/components/schemas/DatavolumeStatus" } } } ] }, "DatavolumesNoSharedScopes": { "type": "array", "items": { "$ref": "#/components/schemas/DatavolumeNoSharedScopes" }, "x-schema-name": "DatavolumesNoSharedScopes" }, "ScopeType2": { "type": "string", "enum": [ "cluster", "department", "project" ] }, "SharedScopeBase": { "type": "object", "required": [ "scopeType", "scopeId" ], "properties": { "scopeType": { "$ref": "#/components/schemas/ScopeType2" }, "scopeId": { "type": "string", "example": "a418ed33-9399-48c0-a890-122cadd13bfd" } } }, "SharedScope": { "allOf": [ { "$ref": "#/components/schemas/SharedScopeBase" }, { "type": "object", "required": [ "scopeName" ], "properties": { "scopeName": { "type": "string", "description": "The name of the scope", "example": "project-a" }, "createdAt": { "type": "string", "format": "date-time" }, "createdBy": { "type": "string", "example": "user@run.ai" } } } ] }, "Datavolume": { "allOf": [ { "$ref": "#/components/schemas/DatavolumeInnerFields" }, { "type": "object", "required": [ "status" ], "properties": { "sharedScopes": { "description": "Will be returned only if the user has the required permissions to view those scopes", "type": "array", "items": { "$ref": "#/components/schemas/SharedScope" } }, "status": { "$ref": "#/components/schemas/DatavolumeStatus" } } } ] }, "DatavolumePatchFields": { "type": "object", "properties": { "description": { "type": "string", "maxLength": 127, "example": "Results of experiment X" } } }, "SharedScopes": { "type": "array", "items": { "$ref": "#/components/schemas/SharedScope" }, "x-schema-name": "SharedScopes" }, "SharedScopesPatchRequest": { "type": "object", "properties": { "add": { "type": "array", "items": { "$ref": "#/components/schemas/SharedScopeBase" }, "maxLength": 50 }, "remove": { "type": "array", "items": { "$ref": "#/components/schemas/SharedScopeBase" }, "maxLength": 50 } } }, "DatavolumeStatusInternal": { "allOf": [ { "$ref": "#/components/schemas/DatavolumeStatus" }, { "type": "object", "properties": { "isDeleted": { "type": "boolean", "description": "If true, the datavolume is deleted in the cluster and 'phase' field is irrelevant.", "example": false, "nullable": true } } } ] }, "DatavolumeInternal": { "allOf": [ { "$ref": "#/components/schemas/DatavolumeInnerFields" }, { "type": "object", "properties": { "sharedScopes": { "description": "Will be returned only if the user has the required permissions to view those scopes", "type": "array", "items": { "$ref": "#/components/schemas/SharedScope" } }, "phase": { "$ref": "#/components/schemas/DatavolumePhase" } } } ] }, "DatavolumeStatusForSync": { "allOf": [ { "$ref": "#/components/schemas/DatavolumeStatus" }, { "type": "object", "required": [ "datavolumeId" ], "properties": { "datavolumeId": { "type": "string", "format": "uuid", "description": "The id of the datavolume", "example": "71f69d83-ba66-4822-adf5-55ce55efd210" } } } ] }, "InternalDatavolumeCreationFields": { "type": "object", "required": [ "name", "scope", "originPvcName" ], "properties": { "name": { "type": "string", "maxLength": 63, "pattern": "^[a-z][-a-z0-9]{0,62}$", "example": "datavolume-a" }, "scope": { "$ref": "#/components/schemas/ScopeType2" }, "departmentId": { "description": "The ID of the department that in its namespace the origin pvc is located (mandatory if scope is department)", "type": "string", "example": "4500001" }, "clusterId": { "description": "The ID of the cluster that in its namespace the origin pvc is located (mandatory if scope is cluster)", "type": "string", "format": "uuid", "example": "cf8c8ea0-94e4-4177-a050-bbf9b10d9cc5" }, "description": { "type": "string", "maxLength": 127, "example": "Results of experiment X" }, "originPvcName": { "description": "The name of the PVC that the datavolume is based on", "type": "string", "example": "pvc-a" } } }, "InternalEnrichmentDataFields": { "type": "object", "properties": { "departmentId": { "type": "string", "example": "4500001" }, "clusterId": { "$ref": "#/components/schemas/ClusterId" } } }, "InternalDatavolume": { "allOf": [ { "$ref": "#/components/schemas/BaseFields" }, { "$ref": "#/components/schemas/InternalDatavolumeCreationFields" }, { "$ref": "#/components/schemas/InternalEnrichmentDataFields" }, { "type": "object", "required": [ "status" ], "properties": { "sharedScopes": { "description": "Will be returned only if the user has the required permissions to view those scopes", "type": "array", "items": { "$ref": "#/components/schemas/SharedScope" } }, "status": { "$ref": "#/components/schemas/DatavolumeStatus" } } } ] }, "Filters": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "string" } } }, "Quantile": { "type": "number", "nullable": true, "description": "the quantile value to calculate", "example": 0.5, "minimum": 0, "maximum": 1 }, "Label1": { "type": "object", "required": [ "name", "displayName" ], "properties": { "name": { "type": "string", "example": "nodepoolName" }, "displayName": { "type": "string", "example": "Node pool" } } }, "ReportCommonFields": { "type": "object", "required": [ "name", "range" ], "properties": { "name": { "type": "string", "example": "2023 GPU report" }, "description": { "type": "string", "example": "This report shows the GPU usage of all projects in the organization" }, "labels": { "type": "array", "items": { "$ref": "#/components/schemas/Label1" } }, "range": { "$ref": "#/components/schemas/Range" }, "additionalFields": { "type": "object", "additionalProperties": true } } }, "Report1": { "allOf": [ { "$ref": "#/components/schemas/ReportCommonFields" }, { "$ref": "#/components/schemas/ReportCalculatedFields" } ] }, "MetricInformationForReport": { "type": "object", "required": [ "name", "displayName" ], "properties": { "name": { "type": "string", "example": "gpu_allocation_hours" }, "displayName": { "type": "string", "example": "GPU allocation hours" }, "filters": { "$ref": "#/components/schemas/Filters" }, "quantile": { "$ref": "#/components/schemas/Quantile" } } }, "ReportRequestFields1": { "type": "object", "allOf": [ { "type": "object", "required": [ "metrics" ], "properties": { "metrics": { "type": "array", "items": { "$ref": "#/components/schemas/MetricInformationForReport" } } } }, { "$ref": "#/components/schemas/ReportCommonFields" } ] }, "MetricStoreType": { "type": "string", "enum": [ "grafanalabs", "mimir", "thanos" ] }, "MetricStoreEndpointAuthType": { "type": "string", "enum": [ "basic" ] }, "MetricStoreEndpointAuthBasic": { "type": "object", "nullable": true, "required": [ "username", "password" ], "properties": { "username": { "type": "string" }, "password": { "type": "string" } } }, "MetricStoreEndpoint2": { "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "format": "uri", "example": "http://mimir-nginx.mimir-test.svc:80/api/v1/query" }, "auth": { "nullable": true, "type": "object", "properties": { "type": { "$ref": "#/components/schemas/MetricStoreEndpointAuthType" }, "basic": { "$ref": "#/components/schemas/MetricStoreEndpointAuthBasic" } } }, "headers": { "type": "object", "additionalProperties": { "type": "string" }, "example": { "X-Scope-OrgID": "abcd" } } } }, "MetricStoreDetails": { "type": "object", "required": [ "type", "read", "write" ], "properties": { "type": { "$ref": "#/components/schemas/MetricStoreType" }, "read": { "$ref": "#/components/schemas/MetricStoreEndpoint2" }, "write": { "$ref": "#/components/schemas/MetricStoreEndpoint2" } } }, "MetricStore2": { "type": "object", "required": [ "tenantId", "datasourceId", "metricStoreDetails" ], "allOf": [ { "type": "object", "properties": { "tenantId": { "description": "The id of the tenant.", "type": "integer", "format": "int32" }, "datasourceId": { "description": "Id of datasource", "type": "string", "minLength": 1, "maxLength": 255 } } }, { "type": "object", "properties": { "metricStoreDetails": { "$ref": "#/components/schemas/MetricStoreDetails" } } } ] }, "Command1": { "type": "object", "required": [ "command" ], "properties": { "command": { "type": "string", "example": "runai version", "description": "The commands that can be used to install the Run:ai CLI." } } }, "AuditLog": { "type": "object", "required": [ "tenant_id", "subject", "subject_type", "action", "result" ], "properties": { "id": { "type": "string", "format": "uuid", "example": "0000-000000-00000-00000" }, "timestamp": { "type": "string", "format": "date-time", "example": "2022-01-01T03:49:52.531Z" }, "tenant_id": { "type": "string", "description": "the ID of the tenant", "example": 12345 }, "subject": { "type": "string", "description": "the user/app which triggered this API", "example": "researcher@run.ai" }, "subject_type": { "type": "string", "enum": [ "User", "App" ], "default": "User" }, "source_ip": { "type": "string", "format": "ipv4" }, "action": { "type": "string", "enum": [ "create", "update", "delete", "sign-in", "sign-out", "reset-password" ] }, "http_method": { "type": "string", "enum": [ "GET", "POST", "PUT", "PATCH", "DELETE", "CREATE" ] }, "url": { "type": "string", "format": "uri" }, "entity_type": { "type": "string", "example": "project" }, "entity_name": { "type": "string", "example": "project-1" }, "entity_id": { "type": "string", "example": "1234" }, "result": { "type": "string", "enum": [ "Succeeded", "Failed" ] }, "http_status_code": { "type": "integer", "example": 200 }, "cluster_name": { "type": "string", "example": "my favorite cluster" }, "cluster_id": { "type": "string", "format": "uuid" }, "request_id": { "type": "string", "format": "uuid", "example": "bb0c4742-e52f-4d5e-bfee-2c4ff57c339c" }, "metadata": { "type": "object", "maxProperties": 10, "additionalProperties": { "type": "string" } } } }, "AuditLogs": { "type": "array", "items": { "$ref": "#/components/schemas/AuditLog" }, "x-schema-name": "AuditLog" }, "NotificationType": { "type": "object", "required": [ "category", "type", "description" ], "properties": { "category": { "type": "string" }, "type": { "type": "string" }, "description": { "type": "string" } }, "example": { "category": "Workload status change", "type": "Creating", "description": "Workload and associated resources are being created in the cluster" } }, "NotificationTypes": { "type": "array", "items": { "$ref": "#/components/schemas/NotificationType" } }, "EmailNotificationsState": { "type": "object", "properties": { "enabled": { "type": "boolean", "nullable": true } } }, "SlackNotificationsState": { "type": "object", "properties": { "enabled": { "type": "boolean", "nullable": true }, "workspaceName": { "type": "string", "nullable": true } } }, "NotificationState": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": false, "readOnly": true }, "email": { "$ref": "#/components/schemas/EmailNotificationsState" }, "slack": { "$ref": "#/components/schemas/SlackNotificationsState" } }, "required": [ "enabled" ], "example": { "enabled": true, "email": { "enabled": true }, "slack": { "enabled": true, "workspaceName": "" } } }, "NotificationChannelMeta": { "type": "object", "required": [ "name", "type" ], "properties": { "name": { "type": "string" }, "type": { "type": "string", "enum": [ "email", "slack" ], "default": "email" } }, "example": { "name": "my-email", "type": "email" } }, "NotificationChannelType": { "type": "string", "enum": [ "email", "slack" ], "default": "email" }, "EmailAuthType": { "type": "string", "enum": [ "auth_login", "auth_plain", "auth_none", "" ], "default": "auth_login" }, "EmailNotificationChannelConfig": { "type": "object", "properties": { "username": { "type": "string" }, "password": { "type": "string" }, "smtpHost": { "type": "string" }, "from": { "type": "string" }, "smtpPort": { "type": "integer", "default": 587 }, "authType": { "$ref": "#/components/schemas/EmailAuthType" }, "smtpTlsEnabled": { "type": "boolean", "nullable": true }, "recipients": { "type": "array", "items": { "type": "string" }, "default": [] }, "fromDisplayName": { "type": "string", "default": "Run:ai" }, "directNotifications": { "type": "boolean", "nullable": true }, "useAttachments": { "type": "boolean", "nullable": true }, "subject": { "type": "string", "default": "Run:ai notification - {{ .category }} {{ .reason }}" } }, "example": { "username": "email@gmail.com", "password": 123456, "smtpHost": "smtp.gmail.com", "from": "email@gmail.com", "subject": "My subject" } }, "SlackNotificationChannelConfig": { "type": "object", "properties": { "recipients": { "type": "array", "items": { "type": "string" }, "default": [] }, "directNotifications": { "type": "boolean", "nullable": true }, "apiToken": { "type": "string" } }, "example": { "apiToken": "" } }, "NotificationChannelConfig": { "type": "object", "allOf": [ { "$ref": "#/components/schemas/EmailNotificationChannelConfig" }, { "$ref": "#/components/schemas/SlackNotificationChannelConfig" } ] }, "NotificationChannelForPatch": { "type": "object", "properties": { "type": { "$ref": "#/components/schemas/NotificationChannelType" }, "config": { "allOf": [ { "$ref": "#/components/schemas/NotificationChannelConfig" } ], "example": { "username": "email@gmail.com", "password": 123456, "smtpHost": "smtp.gmail.com", "from": "email@gmail.com", "subject": "My subject" } } } }, "NotificationChannel": { "type": "object", "required": [ "type", "config" ], "allOf": [ { "$ref": "#/components/schemas/NotificationChannelForPatch" } ] }, "CreateSlackAppRequestBody": { "type": "object", "required": [ "accessToken" ], "properties": { "accessToken": { "type": "string", "description": "The access token required for creating slack app" } }, "example": { "accessToken": "REDACTED_SLACK_TOKEN" } }, "CreateSlackAppResponse": { "type": "object", "required": [ "slackAppUrl" ], "properties": { "slackAppUrl": { "type": "string" } }, "example": { "slackAppUrl": "https://api.slack.com/apps/A089PHD5S0Q" } }, "NotificationChannelResponse": { "type": "object", "required": [ "type", "config", "name" ], "allOf": [ { "$ref": "#/components/schemas/NotificationChannel" }, { "type": "object", "properties": { "name": { "type": "string" } } } ] }, "NotificationChannelForValidate": { "type": "object", "required": [ "type", "config" ], "allOf": [ { "$ref": "#/components/schemas/NotificationChannelForPatch" } ] }, "SubscriptionEvent": { "type": "object", "required": [ "category", "types" ], "properties": { "category": { "type": "string" }, "types": { "type": "array", "items": { "type": "string" } } } }, "SubscriptionEvents": { "type": "array", "items": { "$ref": "#/components/schemas/SubscriptionEvent" } }, "SubscriptionForPut": { "type": "object", "required": [ "events", "channels" ], "properties": { "events": { "$ref": "#/components/schemas/SubscriptionEvents" }, "channels": { "type": "array", "items": { "type": "string" } } }, "example": { "events": [ { "category": "cat1", "types": [ "type1", "type2" ] }, { "category": "cat2", "types": [ "type3", "type4" ] } ], "channels": [ "email", "email1" ] } }, "Subscription": { "type": "object", "required": [ "events", "channels" ], "allOf": [ { "$ref": "#/components/schemas/SubscriptionForPut" }, { "type": "object", "properties": { "id": { "type": "string" } } } ], "example": { "id": 1234, "events": [ { "category": "cat1", "types": [ "type1", "type2" ] }, { "category": "cat2", "types": [ "type3", "type4" ] } ], "channels": [ "email", "email1" ] } }, "Subscriptions": { "type": "array", "items": { "$ref": "#/components/schemas/Subscription" } } }, "responses": { "404NotFound": { "description": "The specified resource was not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "example": { "code": 404, "message": "Resource id not found." } } } }, "500InternalServerError": { "description": "unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "example": { "code": 500, "message": "Something went wrong." } } } }, "503ServiceUnavailable": { "description": "unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "example": { "code": 503, "message": "Please try again in few minutes." } } } }, "401Unauthorized": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "example": { "code": 401, "message": "Issuer is not familiar." } } } }, "403Forbidden": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "example": { "code": 403, "message": "You do not have sufficient permissions." } } } }, "400BadRequest": { "description": "Bad request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "example": { "code": 400, "message": "Required parameter is missing" } } } }, "204NoContent": { "description": "No Content." }, "202Accepted": { "description": "Accepted.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HttpResponse" }, "example": { "code": 202, "message": "Request has been accepted." } } } }, "422UnprocessableEntity": { "description": "Unprocessable entity - The request was well-formed but contains semantic errors.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "example": { "code": 422, "message": "Validation failed - Invalid workload configuration" } } } }, "409Conflict": { "description": "The specified resource already exists", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "example": { "code": 409, "message": "Resource with this name already exists" } } } }, "412PreconditionFailed": { "description": "The specified resource was not found.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "example": { "code": 412, "message": "Precondition failed" } } } }, "413RequestEntityTooLarge": { "description": "Request entity too large", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "415UnsupportedMediaType": { "description": "Unsupported media type", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "501NotImplemented": { "description": "unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" }, "example": { "code": 501, "message": "Not implemented" } } } }, "BadRequest": { "description": "Bad request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "NotFound": { "description": "The specified resource was not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error1" } } } }, "Unauthorized": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "serviceUnavailable": { "description": "unexpected error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error1" } } } }, "Conflict": { "description": "conflict error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "OK": { "description": "OK", "content": { "application/json": { "schema": { "type": "string", "format": "text" } } } }, "BadRequest1": { "description": "Bad request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error1" } } } }, "CLIReleaseResponse": { "description": "Get the CLI release.", "content": { "application/x-tar": { "schema": { "type": "string", "format": "binary" } } } }, "ChecksumResponse": { "description": "return an object with hashes of a file for validation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ChecksumResponse" } } } }, "400SubmissionErrorV2": { "description": "Bad submission request.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubmissionErrorV2" }, "example": { "code": 400, "message": "The workload request does not comply with the policy set by the administrator" } } } }, "V1StorageClassNames": { "description": "Expected response to a valid request", "content": { "application/json": { "schema": { "type": "object", "properties": { "storageClasses": { "type": "array", "items": { "type": "string" }, "example": [ "standard" ] } }, "example": { "storageClasses": [ "standard" ] } } } } }, "V1Unauthorized": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1Error" } } } }, "V1NotFound": { "description": "The specified resource was not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/V1Error" } } } } }, "parameters": { "ClusterUuid": { "name": "clusterUuid", "in": "path", "required": true, "description": "The Universally Unique Identifier (UUID) of the cluster.", "schema": { "type": "string", "format": "uuid", "minLength": 1, "example": "9f55255e-11ed-47c7-acef-fc4054768dbc" } }, "QueryNodeName": { "name": "nodeName", "in": "query", "description": "Deprecated - use filterBy instead. The node name; Cannot be used together with filterBy, sort, offset, limit or search query params.", "schema": { "type": "string" }, "required": false }, "NodesFilter": { "name": "filterBy", "in": "query", "required": false, "description": "Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.", "schema": { "type": "array", "items": { "type": "string", "pattern": "^(name|status|nodePool|gpuType|nvLinkDomainUid|nvLinkCliqueId|clusterUuid)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$" }, "example": [ "name!=some-name" ] }, "explode": false }, "NodesSortBy": { "name": "sortBy", "in": "query", "required": false, "description": "Sort results by a parameters.", "schema": { "$ref": "#/components/schemas/NodeFilterSortFields" } }, "SortOrder": { "name": "sortOrder", "in": "query", "required": false, "description": "Sort results in descending or ascending order.", "schema": { "type": "string", "enum": [ "asc", "desc" ], "default": "asc" } }, "Offset": { "name": "offset", "in": "query", "required": false, "description": "The offset of the first item returned in the collection.", "schema": { "type": "integer", "format": "int32", "example": 100 } }, "Limit": { "name": "limit", "in": "query", "required": false, "description": "The maximum number of entries to return.", "schema": { "type": "integer", "format": "int32", "default": 50, "minimum": 1, "maximum": 500 } }, "Search": { "name": "search", "in": "query", "required": false, "description": "Filter results by a free text search.", "schema": { "type": "string", "example": "test project" } }, "NodeName": { "name": "nodeName", "in": "path", "description": "The node name.", "schema": { "type": "string" }, "required": true }, "QueryVerbosity": { "name": "verbosity", "in": "query", "required": false, "description": "response verbosity level.\n", "example": "full", "schema": { "type": "string", "enum": [ "metadata", "full" ], "default": "full" } }, "QueryIncludeRequestedForDelete": { "name": "includeRequestedForDelete", "in": "query", "required": false, "example": true, "schema": { "type": "boolean" }, "description": "When true, includes clusters that are marked for deletion" }, "QueryForceDelete": { "name": "force", "in": "query", "required": false, "description": "if true will force cluster instant deletion otherwise will start cluster graceful deletion process.\n", "example": true, "schema": { "type": "boolean", "default": false } }, "StartRequired": { "name": "start", "in": "query", "description": "Start date of time range to fetch data in ISO 8601 timestamp format.", "required": true, "schema": { "type": "string", "format": "date-time", "example": "2023-06-06T12:09:18.211Z" } }, "EndRequired": { "name": "end", "in": "query", "description": "End date of time range to fetch data in ISO 8601 timestamp format.", "required": true, "schema": { "type": "string", "format": "date-time", "example": "2023-06-07T12:09:18.211Z" } }, "NumberOfSamples": { "name": "numberOfSamples", "in": "query", "description": "The number of samples to take in the specified time range.", "required": false, "schema": { "type": "integer", "example": 20, "maximum": 1000, "minimum": 0, "default": 20 } }, "MetricsType": { "name": "metricType", "in": "query", "required": true, "description": "specifies what data to request", "explode": false, "schema": { "type": "array", "items": { "$ref": "#/components/schemas/MetricsType" } } }, "ClusterMetricsGroupBy": { "name": "groupBy", "in": "query", "description": "Labels to group the returned metrics data by. Grouping availability depends on the selected metric type. Supported values: \"category\" (workload category) or \"node pool\".\n", "explode": false, "required": false, "schema": { "type": "string", "enum": [ "Category", "Nodepool", "Project", "Department" ] }, "example": "Category" }, "FilterByNodepoolName": { "name": "nodepoolName", "in": "query", "description": "Filter using the nodepool.", "required": false, "schema": { "type": "string", "example": "default" } }, "NodepoolPath": { "in": "path", "name": "nodepoolName", "required": true, "description": "The unique nodepool name.", "schema": { "type": "string", "example": "default" } }, "NodepoolId": { "name": "nodepoolId", "in": "path", "required": true, "description": "The unique id identifying the Node Pool.", "schema": { "type": "string", "example": 17 } }, "NodepoolsFilterBy": { "name": "filterBy", "in": "query", "required": false, "description": "Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.", "schema": { "type": "array", "items": { "type": "string", "pattern": "^(name|clusterId|phase|createdAt|updatedAt|gpuNetworkAccelerationDetection|networkTopologyName|gpuNetworkAccelerationDetected|gpuNetworkAccelerationLabelKey|swapEnabled|nodeLevelSchedulerEnabled)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$" }, "example": [ "name!=some-name" ] }, "explode": false }, "NodepoolsSortBy": { "name": "sortBy", "in": "query", "required": false, "description": "Sort results by a parameters.", "schema": { "$ref": "#/components/schemas/NodepoolSortFilterFields" } }, "ClusterVersion": { "name": "version", "in": "query", "required": true, "description": "The cluster version to install", "schema": { "type": "string", "example": 2.16 } }, "ClusterRemoteURL": { "name": "remoteClusterUrl", "in": "query", "required": false, "description": "The remote URL of the runai cluster", "schema": { "type": "string", "example": "https://cluster.runai" } }, "FilterByCluster": { "name": "clusterId", "in": "query", "description": "Filter using the Universally Unique Identifier (UUID) of the cluster.", "required": false, "schema": { "type": "string", "format": "uuid", "example": "d73a738f-fab3-430a-8fa3-5241493d7128" } }, "TelemetryGroupBy": { "name": "groupBy", "in": "query", "description": "workload fields to group the data by", "explode": false, "required": false, "schema": { "type": "array", "maxItems": 2, "items": { "type": "string", "enum": [ "ClusterId", "Nodepool", "Node" ] } } }, "TelemetryType": { "name": "telemetryType", "in": "query", "required": true, "description": "specifies what data to request", "schema": { "$ref": "#/components/schemas/NodeTelemetryType" } }, "NodeId": { "name": "nodeId", "in": "path", "description": "The node UUID.", "schema": { "type": "string", "format": "uuid", "minLength": 1, "example": "9f55255e-11ed-47c7-acef-fc4054768dbc" }, "required": true }, "NodeMetricTypes": { "name": "metricType", "in": "query", "required": true, "description": "Specify which data to request.", "explode": false, "schema": { "type": "array", "items": { "$ref": "#/components/schemas/NodeMetricType" } } }, "NetworkTopologiesFilterBy": { "name": "filterBy", "in": "query", "required": false, "description": "Filter results by a parameter. Use the format field-name operator value. Supported operators: == Equals != Not equals <= Less than or equal >= Greater than or equal =@ Contains !@ Does not contain =^ Starts with =$ Ends with Date values must be in ISO 8601 timestamp format. Only the following operators support dates: ==, !=, <=, >=.", "schema": { "type": "array", "items": { "type": "string", "pattern": "^(name|clusterId|source|phase)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$" }, "example": [ "clusterId==123e4567-e89b-12d3-a456-426614174000", "source=@Run.ai" ] }, "explode": false }, "NetworkTopologyId": { "name": "networkTopologyId", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" }, "description": "The unique identifier for the network topology", "example": "123e4567-e89b-12d3-a456-426614174000" }, "nodeName": { "$ref": "#/components/parameters/NodeName" }, "queryNodeName": { "$ref": "#/components/parameters/QueryNodeName" }, "queryVerbosity": { "$ref": "#/components/parameters/QueryVerbosity" }, "DepartmentId": { "name": "departmentId", "in": "path", "required": true, "description": "The id of the department.", "schema": { "type": "string", "example": "1", "pattern": ".*" } }, "ProjectId": { "name": "projectId", "in": "path", "required": true, "description": "The project id", "example": "575c19e8-c7c3-45b0-8290-2f47397a8383", "schema": { "type": "string" } }, "ReportsFilterBy": { "name": "filterBy", "in": "query", "required": false, "description": "Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.", "schema": { "type": "array", "items": { "type": "string", "pattern": "^(name|createdAt|createdBy|status)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$" }, "example": [ "name!=some-name" ] }, "explode": false }, "ReportsSortBy": { "name": "sortBy", "in": "query", "required": false, "description": "Sort results by a parameters.", "schema": { "$ref": "#/components/schemas/ReportFilterAndSortFields" } }, "ReportId": { "name": "reportId", "in": "path", "required": true, "description": "The report id", "example": "575c19e8-c7c3-45b0-8290-2f47397a8383", "schema": { "type": "string", "format": "uuid" } }, "DepartmentsFilterBy": { "name": "filterBy", "in": "query", "required": false, "description": "Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.", "schema": { "type": "array", "items": { "type": "string", "pattern": "^(name|clusterId|totalGpuQuota|gpuAllocated|createdAt|avgGpuAllocation24h|avgGpuUtilization24h|avgGpuMemoryUtilization24h|avgGpuAllocation7d|avgGpuUtilization7d|avgGpuMemoryUtilization7d|avgGpuAllocation30d|avgGpuUtilization30d|avgGpuMemoryUtilization30d)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$" }, "example": [ "name!=some-name" ] }, "explode": false }, "DepartmentsSortBy": { "name": "sortBy", "in": "query", "required": false, "description": "Sort results by a parameters.", "schema": { "$ref": "#/components/schemas/DepartmentFilterSortFields" } }, "DepartmentsVerbosity": { "name": "verbosity", "in": "query", "required": false, "description": "Departments verbosity. If it is set to \"verbose\", status will be returned. If it is not defined or set to \"brief\" only unit specific data will be returned.", "example": "verbose", "schema": { "$ref": "#/components/schemas/Verbosity" } }, "OrgUnitMetricTypes": { "name": "metricType", "in": "query", "required": true, "description": "Specify which data to request.", "explode": false, "schema": { "type": "array", "items": { "$ref": "#/components/schemas/OrgUnitMetricType" } } }, "FilterByDepartment": { "name": "departmentId", "in": "query", "description": "Filter using the department id.", "required": false, "schema": { "type": "string", "example": "1" } }, "TelemetryGroupByDepartment": { "name": "groupBy", "in": "query", "description": "department fields to group the data by", "explode": false, "required": false, "schema": { "type": "array", "maxItems": 2, "items": { "type": "string", "enum": [ "CLUSTER_ID" ] } } }, "TelemetryType1": { "name": "telemetryType", "in": "query", "required": true, "description": "specifies what data to request", "schema": { "$ref": "#/components/schemas/OrgUnitTelemetryType" } }, "ProjectsFilterBy": { "name": "filterBy", "in": "query", "required": false, "description": "Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.", "schema": { "type": "array", "items": { "type": "string", "pattern": "^(name|clusterId|departmentId|parentId|parentName|phase|totalGpuQuota|gpuAllocated|createdAt|avgGpuAllocation24h|avgGpuUtilization24h|avgGpuMemoryUtilization24h|avgGpuAllocation7d|avgGpuUtilization7d|avgGpuMemoryUtilization7d|avgGpuAllocation30d|avgGpuUtilization30d|avgGpuMemoryUtilization30d)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$" }, "example": [ "name!=some-name" ] }, "explode": false }, "ProjectsSortBy": { "name": "sortBy", "in": "query", "required": false, "description": "Sort results by a parameters.", "schema": { "$ref": "#/components/schemas/ProjectFilterSortFields" } }, "FilterByNodepoolId": { "name": "nodepoolId", "in": "query", "description": "Filter using the nodepool.", "required": false, "schema": { "type": "string", "example": "1" } }, "TelemetryGroupByProject": { "name": "groupBy", "in": "query", "description": "project fields to group the data by", "explode": false, "required": false, "schema": { "type": "array", "maxItems": 2, "items": { "type": "string", "enum": [ "ClusterId", "NodepoolId", "ParentId" ] } } }, "NodeTypeId": { "name": "nodeTypeId", "in": "path", "required": true, "description": "The node-type id", "example": "575c19e8-c7c3-45b0-8290-2f47397a8383", "schema": { "type": "string" } }, "ClusterIdRequired": { "name": "clusterId", "in": "query", "description": "The id of the cluster", "required": true, "schema": { "type": "string", "format": "uuid", "example": "d73a738f-fab3-430a-8fa3-5241493d7128" } }, "Start": { "name": "start", "in": "query", "description": "Start of time range to fetch data from in UTC format.", "required": false, "schema": { "type": "string", "format": "date-time", "example": "2023-06-06 12:09:18.211" } }, "End": { "name": "end", "in": "query", "description": "End of time range to fetch data from in UTC format.", "required": false, "schema": { "type": "string", "format": "date-time", "example": "2023-06-07 12:09:18.211" } }, "projectId": { "$ref": "#/components/parameters/ProjectId" }, "nodeTypeId": { "$ref": "#/components/parameters/NodeTypeId" }, "uuid": { "in": "path", "name": "uuid", "description": "Unique identifier of the cluster", "required": true, "schema": { "type": "string", "format": "uuid" } }, "deploymentId": { "name": "deploymentId", "in": "path", "description": "the unique Id of the deployment (UUID)", "required": true, "schema": { "type": "string" } }, "NodepoolName": { "in": "query", "name": "nodepoolName", "schema": { "type": "string", "example": "default" }, "required": false, "description": "Filter by unique nodepool name." }, "ProjectId1": { "in": "path", "name": "projectId", "schema": { "type": "string" }, "required": true, "description": "The unique project-id of the project." }, "version": { "in": "path", "name": "version", "description": "run:ai version (semantic version)", "required": true, "schema": { "type": "string", "pattern": "^(v(0|[1-9]\\\\d*))\\\\.(0|[1-9]\\\\d*)\\\\.(0|[1-9]\\\\d*)(?:-((?:0|[1-9]\\\\d*|\\\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\\\.(?:0|[1-9]\\\\d*|\\\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\\\+([0-9a-zA-Z-]+(?:\\\\.[0-9a-zA-Z-]+)*))?$" } }, "os": { "in": "path", "name": "os", "description": "The operating system", "required": true, "schema": { "type": "string", "enum": [ "linux", "darwin" ] } }, "AssetNameFilter": { "name": "name", "in": "query", "required": false, "description": "Filter results by name.", "schema": { "type": "string" } }, "AssetScopeFilter": { "name": "scope", "in": "query", "required": false, "description": "Filters results by scope. Returns only assets that belong to the specified scope. Mutually exclusive with includeDescendants. Valid values: tenant, cluster, department, project.", "schema": { "type": "string" } }, "AssetProjectFilter": { "name": "projectId", "in": "query", "required": false, "description": "Filter results by project id. If scope filter is project, only assets from the specific project will be included in the response. Otherwise, the response will include project, department, cluster, tenant and system assets.", "schema": { "type": "integer", "format": "int32" } }, "IncludeUsageInfo": { "name": "usageInfo", "in": "query", "required": false, "description": "Whether the query should include asset usage information as part of the response.", "schema": { "type": "boolean" } }, "ComplyToProject": { "name": "complyToProject", "in": "query", "required": false, "description": "Include workload creation compliance information of an asset, for a given project, as part of the response. To check compliance, you need to provide both project id and workload type.", "schema": { "type": "integer", "format": "int32" } }, "ComplyToWorkloadType": { "name": "complyToWorkloadType", "in": "query", "required": false, "description": "Include workload creation compliance information of an asset, for a given workload type, as part of the response. To check compliance, you need to provide both project id and workload type.", "schema": { "type": "string", "enum": [ "Workspace", "Training", "Distributed", "Inference" ] } }, "ComplyToReplicaType": { "name": "complyToReplicaType", "in": "query", "required": false, "description": "Include workload creation compliance information of an asset, for a given replica type, as part of the response. To check compliance, you need to provide both project id and workload type. For distributed, replica type should be provided as well.", "schema": { "type": "string", "enum": [ "Worker", "Master" ] } }, "AssetDepartmentFilter": { "name": "departmentId", "in": "query", "description": "Filter results by department id. If scope filter is department, only assets from the specific department will be included in the response. Otherwise, the response will include department, cluster, tenant and system assets.", "required": false, "schema": { "type": "string", "example": "1" } }, "AssetClusterFilter": { "name": "clusterId", "in": "query", "description": "Filter results by Universally Unique Identifier (UUID) of the cluster. If scope filter is cluster, only assets from the specific cluster will be included in the response. Otherwise, the response will include cluster, tenant and system assets.", "required": false, "schema": { "type": "string", "format": "uuid", "example": "d73a738f-fab3-430a-8fa3-5241493d7128" } }, "includeDescendants": { "name": "includeDescendants", "in": "query", "required": false, "description": "Indicates whether to include assets from all descendant scopes under the specified scope. When set to true, and a specific scope identifier (for example, clusterId) is provided, the query also returns assets from all nested scopes within it (for example, departments and projects). Mutually exclusive with scope.", "schema": { "type": "boolean" } }, "AssetId": { "name": "AssetId", "in": "path", "required": true, "description": "Unique identifier of the asset.", "schema": { "type": "string", "format": "uuid", "minLength": 1 } }, "IncludeStatus": { "name": "statusInfo", "in": "query", "required": false, "description": "Whether the query should include asset status information as part of the response.", "schema": { "type": "boolean" } }, "SearchName": { "name": "searchName", "in": "query", "required": false, "description": "Filter results that contains searchName.", "schema": { "type": "string" }, "allowReserved": true }, "DistributedFrameworkQuery": { "name": "distributedFramework", "in": "query", "required": false, "description": "Filter results to workload of type distributed and distributedFramework.", "schema": { "type": "string" }, "allowReserved": true }, "IsDistributedQuery": { "name": "isDistributed", "in": "query", "required": false, "description": "Filter results to workload of type distributed.", "schema": { "type": "boolean" }, "allowReserved": true }, "IsTrainingQuery": { "name": "isTraining", "in": "query", "required": false, "description": "Filter results to workload of type training.", "schema": { "type": "boolean" }, "allowReserved": true }, "IsWorkspaceQuery": { "name": "isWorkspace", "in": "query", "required": false, "description": "Filter results to workload of type workspace.", "schema": { "type": "boolean" }, "allowReserved": true }, "IsInferenceQuery": { "name": "isInference", "in": "query", "required": false, "description": "Filter results to workload of type inference.", "schema": { "type": "boolean" }, "allowReserved": true }, "AssetIdsFilter": { "name": "assetIds", "in": "query", "required": false, "description": "Filter results by the ids of the assets. Provided value should be a comma separated string of UUIDs.", "schema": { "type": "string", "example": "dbf4767e-2fa1-43b0-97a2-7c0cecda180b,550e8400-e29b-41d4-a716-44665544000a", "pattern": "^\\b(?:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})(?:,(?:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}))*\\b$" } }, "WorkloadId": { "name": "workloadId", "in": "path", "required": true, "description": "The Universally Unique Identifier (UUID) of the workload.", "schema": { "type": "string", "format": "uuid" } }, "ScopeType": { "name": "scopeType", "in": "query", "required": true, "description": "The resource scope type to filter by.", "schema": { "type": "string", "enum": [ "tenant", "cluster", "department", "project" ] } }, "WorkloadType": { "name": "workloadType", "in": "query", "required": false, "description": "Policy for a specific workload type.", "schema": { "type": "string", "minLength": 1, "enum": [ "Workspace", "Training", "Distributed", "Inference", "DistributedInference" ] } }, "FilterByProject": { "name": "projectId", "in": "query", "description": "project id to filter by", "required": false, "schema": { "type": "string", "example": "1" } }, "IncludeFallbackPolicies": { "name": "includeFallbackPolicies", "in": "query", "required": false, "description": "whether to include fallback policies in the list. Default to false.", "schema": { "type": "boolean" } }, "PolicyScope": { "name": "scope", "in": "query", "required": true, "description": "The scope that the policy relates to.", "schema": { "type": "string", "enum": [ "tenant", "cluster", "department", "project" ] } }, "ValidateOnly": { "name": "validateOnly", "in": "query", "required": false, "description": "Validate the given policy payload without applying it", "schema": { "type": "boolean" } }, "ApproveClusterDeletion": { "name": "approveClusterDeletion", "in": "query", "required": false, "description": "Required when modifying or deleting a policy if the tenant includes one or more clusters running version 2.20 or earlier. In such cases, the platform must delete the policy from the affected clusters. This flag indicates that the administrator approves this deletion.", "schema": { "type": "boolean" } }, "ScopeId1": { "name": "scopeId", "in": "query", "description": "filter by scope id", "schema": { "type": "string" }, "required": false }, "nameFilter": { "name": "name", "in": "query", "description": "filter by name", "schema": { "type": "string" }, "required": false }, "originFilter": { "name": "origin", "in": "query", "description": "filter by the origin of the resource. by default, we have to list only customer existing resources (to preserve backward compatibility) to list both existing pvc and assets related pvcs use 'all'.", "schema": { "type": "string", "enum": [ "all", "assets", "existing" ] }, "required": false }, "PVCName": { "name": "pvcName", "in": "path", "description": "The pvc name.", "schema": { "type": "string" }, "required": true }, "Namespace": { "name": "namespace", "in": "path", "description": "The namespace of the project.", "schema": { "type": "string" }, "required": true }, "secretTypeFilter": { "name": "secretType", "in": "query", "description": "filter by secret type. supported values - password, access-key, docker-registry.", "schema": { "type": "string" }, "required": false }, "SecretName": { "name": "secretName", "in": "path", "description": "The secret name.", "schema": { "type": "string" }, "required": true }, "V1Storage_class_name": { "in": "path", "name": "storage_class_name", "description": "Unique identifier of the storageClass", "required": true, "schema": { "type": "string", "format": "string" } }, "StorageClassConfigurationFilterBy": { "name": "filterBy", "in": "query", "required": false, "description": "Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.", "schema": { "type": "array", "items": { "type": "string", "pattern": "^(name|tenantId|scopeType|scopeId)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$" }, "example": [ "name!=some-name" ] }, "explode": false }, "StorageClassConfigurationSortBy": { "name": "sortBy", "in": "query", "required": false, "description": "Sort results by a parameters.", "schema": { "type": "string", "enum": [ "name", "tenantId", "scopeType", "scopeId" ] } }, "StorageClassConfigurationId": { "name": "id", "in": "path", "required": true, "schema": { "type": "string" }, "description": "unique identifier of the storage class configuration" }, "kotClusterUuid": { "$ref": "#/components/parameters/ClusterUuid" }, "departmentId": { "$ref": "#/components/parameters/DepartmentId" }, "namespace1": { "$ref": "#/components/parameters/Namespace" }, "pvcName": { "$ref": "#/components/parameters/PVCName" }, "secretName": { "$ref": "#/components/parameters/SecretName" }, "name": { "$ref": "#/components/parameters/nameFilter" }, "type": { "$ref": "#/components/parameters/secretTypeFilter" }, "scopeId": { "$ref": "#/components/parameters/ScopeId1" }, "origin": { "$ref": "#/components/parameters/originFilter" }, "RoleIdPath": { "name": "roleIdPath", "in": "path", "required": true, "description": "The id of the role to retrieve", "example": 32, "schema": { "type": "integer", "format": "int32", "minimum": 0 } }, "SubjectTypeOptional": { "name": "subjectType", "in": "query", "required": false, "description": "The type of resource we want to filter by.", "schema": { "type": "string", "example": "user" } }, "SubjectIdOptional": { "name": "subjectIdFilter", "in": "query", "required": false, "description": "Part of the subject id that we want to filter by.", "deprecated": true, "schema": { "type": "string", "example": "some.user" } }, "SubjectIds": { "name": "subjectIds", "in": "query", "required": false, "description": "The ids of the subjects to filter the response for.", "explode": false, "schema": { "type": "array", "items": { "type": "string", "example": "some.user@run.ai" } } }, "LastUpdated": { "name": "lastUpdated", "in": "query", "required": false, "description": "Filter by last update time.", "schema": { "type": "string", "example": "2021-12-14T16:04:15.099Z" } }, "IncludeDeleted": { "name": "includeDeleted", "in": "query", "required": false, "description": "True to include deleted objects in the result.", "schema": { "type": "boolean", "example": false, "default": false } }, "ScopeTypeOptionalQueryDeprecated": { "name": "scopeType", "in": "query", "required": false, "description": "The type of resource we want to filter by.", "deprecated": true, "schema": { "type": "string", "example": "project" } }, "ScopeIdOptional": { "name": "scopeId", "in": "query", "required": false, "description": "The scope resource id that we want to filter by.", "schema": { "type": "string", "example": "2" } }, "RoleId": { "name": "roleId", "in": "query", "required": false, "description": "The role id we want to filter by.", "deprecated": true, "schema": { "type": "integer", "format": "int32", "minimum": 1 } }, "AccessRulesSort": { "name": "sortBy", "in": "query", "required": false, "description": "Sort results by a parameter.", "schema": { "$ref": "#/components/schemas/AccessRulesSortFilterFields" } }, "AccessRulesFilter": { "name": "filterBy", "in": "query", "required": false, "description": "Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.", "schema": { "type": "array", "items": { "type": "string", "pattern": "^(subjectId|subjectType|roleId|scopeId|scopeType|roleName|scopeName|createdAt|deletedAt|createdBy|phase)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$" } }, "example": [ "name!=some-access-rule-name", "createdAt>=2023-01-01T00:00:00Z" ], "explode": false }, "AccessRuleId": { "name": "accessRuleId", "in": "path", "required": true, "description": "The id of the access rule to retrieve", "example": 32, "schema": { "type": "integer", "format": "int32", "minimum": 0 } }, "ScopeTypeQuery": { "$ref": "#/components/parameters/ScopeTypeOptionalQueryDeprecated" }, "idp": { "name": "idp", "in": "path", "required": true, "description": "The alias of the idp", "schema": { "type": "string" } }, "usersFilterBy": { "name": "filterBy", "in": "query", "required": false, "description": "Filter results by a parameter. Use the format field-name operator value. Operators are <= Less than or equal, >= Greater than or equal, =@ contains. Dates are in ISO 8601 timestamp format and available for operators <=, >= and ==.", "schema": { "type": "array", "items": { "type": "string", "pattern": "^(username|createdBy|lastLogin|creationTime|lastUpdated|isLocal)(==|<=|>=|=@).+$" }, "example": [ "username=@test,lastLogin>=2024-09-24T00:00:00.00Z,isLocal==false" ] }, "explode": false }, "usersSortBy": { "name": "sortBy", "in": "query", "required": false, "description": "Sort results by a parameters.", "schema": { "$ref": "#/components/schemas/UsersFilterSortFields" } }, "limit": { "name": "limit", "in": "query", "required": false, "description": "The maximum number of entries to return.", "schema": { "type": "integer", "format": "int32", "default": 500, "minimum": 1, "maximum": 500 } }, "search": { "name": "search", "in": "query", "required": false, "description": "Filter results by a free text search.", "schema": { "type": "string", "example": "test@run" } }, "userId": { "name": "userId", "in": "path", "required": true, "description": "The id of the user", "schema": { "type": "string" } }, "appId": { "name": "appId", "in": "path", "required": true, "description": "The application id to retrieve", "schema": { "type": "string" } }, "serviceAccountId": { "name": "serviceAccountId", "in": "path", "required": true, "description": "Service account id", "schema": { "type": "string", "example": "6d2894ba-f998-4039-bba1-caba57caf681" } }, "accessKeyId": { "name": "accessKeyId", "in": "path", "required": true, "description": "The access key ID", "schema": { "type": "string" } }, "settingsKey": { "name": "key", "in": "path", "required": true, "description": "The settings key", "schema": { "$ref": "#/components/schemas/settingsKeyEnum" } }, "isHardDelete": { "name": "isHardDelete", "in": "query", "description": "Boolean indicator for soft/hard delete", "schema": { "type": "boolean" } }, "exchangeCode": { "name": "code", "in": "query", "required": true, "description": "The exchange code retrieved from the idp server", "schema": { "type": "string" } }, "redirectUri": { "name": "redirect_uri", "in": "query", "required": true, "description": "The redirect uri to redirect to after the authorization server completes the authorization flow", "schema": { "type": "string" } }, "refreshToken": { "name": "refresh_token", "in": "query", "required": true, "description": "The refresh token retrieved from the idp server", "schema": { "type": "string" } }, "appType": { "name": "appType", "in": "query", "required": true, "description": "The type of application", "schema": { "type": "string", "enum": [ "Agent", "MimirWriter" ] } }, "code": { "$ref": "#/components/parameters/exchangeCode" }, "redirect_url": { "$ref": "#/components/parameters/redirectUri" }, "refresh_token": { "$ref": "#/components/parameters/refreshToken" }, "app_type": { "$ref": "#/components/parameters/appType" }, "is_hard_delete": { "$ref": "#/components/parameters/isHardDelete" }, "WorkloadsFilter": { "name": "filterBy", "in": "query", "required": false, "description": "Filter results by a parameter. Use the format field-name operator value. Operators are `==` Equals, `!=` Not equals, `<=` Less than or equal, `>=` Greater than or equal, `=@` contains, `!@` Does not contain, `=^` Starts with and `=$` Ends with. Dates are in ISO 8601 timestamp format and available for operators `==`, `!=`, `<=` and `>=`.", "schema": { "type": "array", "items": { "type": "string", "pattern": "^(type|name|clusterId|projectId|projectName|departmentId|departmentName|createdAt|deletedAt|submittedBy|phase|completedAt|nodepool|distributedFramework|allocatedGPU|idleGpus|idleAllocatedGpus|phaseUpdatedAt|category|totalPendingTimeSeconds|totalRunningTimeSeconds|priority|priorityClassName|guaranteedRuntimeEndsAt|aiApplicationId|aiApplicationName)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$" }, "example": [ "name!=some-workload-name", "allocatedGPU>=2", "createdAt>=2021-01-01T00:00:00Z" ] }, "explode": false }, "Deleted": { "name": "deleted", "in": "query", "description": "Return only deleted resources when `true`.", "schema": { "type": "boolean" } }, "WorkloadsSort": { "name": "sortBy", "in": "query", "required": false, "description": "Sort results by a parameter.", "schema": { "type": "string", "enum": [ "type", "name", "clusterId", "projectId", "projectName", "departmentId", "departmentName", "createdAt", "deletedAt", "submittedBy", "phase", "completedAt", "nodepool", "distributedFramework", "allocatedGPU", "idleGpus", "idleAllocatedGpus", "phaseUpdatedAt", "category", "priority", "totalPendingTimeSeconds", "totalRunningTimeSeconds", "priorityClassName", "guaranteedRuntimeEndsAt", "aiApplicationId", "aiApplicationName" ] } }, "TelemetryGroupBy1": { "name": "groupBy", "in": "query", "description": "Group workloads by field.", "explode": false, "required": false, "schema": { "type": "array", "maxItems": 2, "items": { "type": "string", "enum": [ "ClusterId", "DepartmentId", "ProjectId", "Type", "CurrentNodepools", "Phase", "Category" ] } } }, "TelemetryType2": { "name": "telemetryType", "in": "query", "required": true, "description": "Specifies the telemetry type.", "schema": { "$ref": "#/components/schemas/WorkloadTelemetryType" } }, "FilterByPhases": { "name": "filterByPhases", "in": "query", "required": false, "description": "Filter workloads by specific phases. If not specified, all phases are included.", "explode": false, "schema": { "type": "array", "items": { "$ref": "#/components/schemas/Phase" }, "example": [ "Running", "Failed" ] } }, "PodsSort": { "name": "sortBy", "in": "query", "required": false, "description": "Sort results using a parameter.", "schema": { "type": "string", "enum": [ "clusterId", "workloadId", "revisionId", "nodeName", "currentNodepool", "createdAt", "completedAt", "deletedAt" ] } }, "PodsFilter": { "name": "filterBy", "in": "query", "required": false, "description": "Filter results using a parameter. Use the format field-name operator value. Operators are `==` Equals, `!=` Not equals, `<=` Less than or equal, `>=` Greater than or equal, `=@` contains, `!@` Does not contains, `=^` Starts with and `=$` Ends with. Dates are in ISO 8601 timestamp format and available for operators `==`, `!=`, `<=` and `>=`.", "schema": { "type": "array", "items": { "type": "string", "pattern": "^(clusterId|workloadId|revisionId|nodeName|currentNodepool|createdAt|completedAt|deletedAt)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$" }, "example": [ "nodeName!=some-node-name" ] }, "explode": false }, "PodsQueryVerbosity": { "name": "verbosity", "in": "query", "required": false, "description": "response verbosity level. if full, the response includes workloadName and projectName fields.\n", "example": "full", "schema": { "$ref": "#/components/schemas/PodVerbosity" } }, "Completed": { "name": "completed", "in": "query", "description": "Return only completed resources when 'true', return only non-completed resources when 'false'. By default, or when empty, returns all resources.", "schema": { "type": "string", "default": "all" } }, "PodId": { "name": "podId", "in": "path", "description": "The requested pod id.", "schema": { "type": "string", "format": "uuid" }, "required": true }, "PodMetricTypes": { "name": "metricType", "in": "query", "required": true, "description": "Specify which metric data to request. Advanced GPU metrics are only supported if the 'Advanced GPU Metrics' feature flag in the settings is enabled.", "explode": false, "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PodMetricType" } } }, "EventsSort": { "name": "sortOrder", "in": "query", "required": false, "description": "Sort results in descending or ascending order.", "schema": { "type": "string", "enum": [ "asc", "desc" ], "default": "desc" } }, "WorkloadMetricTypes": { "name": "metricType", "in": "query", "required": true, "description": "Specify which data to request.", "explode": false, "schema": { "type": "array", "items": { "$ref": "#/components/schemas/WorkloadMetricType" } } }, "InferenceWorkloadMetricTypes": { "name": "metricType", "in": "query", "required": true, "description": "Specify which data to request.", "explode": false, "schema": { "type": "array", "items": { "$ref": "#/components/schemas/InferenceWorkloadMetricType" } } }, "InferencePodMetricTypes": { "name": "metricType", "in": "query", "required": true, "description": "Specifies metrics data to request. Inference metrics are only available for inference workloads.", "explode": false, "schema": { "type": "array", "items": { "$ref": "#/components/schemas/InferencePodMetricType" } } }, "RevisionId": { "name": "revisionId", "in": "path", "required": true, "description": "The Universally Unique Identifier (UUID) of the revision.", "schema": { "type": "string", "format": "uuid" } }, "TemplatesSort": { "name": "sortBy", "in": "query", "required": false, "description": "Sort results by parameter.", "schema": { "type": "string", "enum": [ "name", "workloadType", "runnable", "scopeType", "clusterId", "projectId", "departmentId", "createdAt", "updatedAt", "createdBy", "updatedBy" ] } }, "TemplatesFilter": { "name": "filterBy", "in": "query", "required": false, "description": "Filter results by a parameter. Use the format field-name operator value. Operators are `==` Equals, `!=` Not equals, `<=` Less than or equal, `>=` Greater than or equal, `=@` contains, `!@` Does not contain, `=^` Starts with and `=$` Ends with. Dates are in ISO 8601 timestamp format and available for operators `==`, `!=`, `<=` and `>=`.", "schema": { "type": "array", "items": { "type": "string", "pattern": "^(name|workloadType|runnable|scopeType|clusterId|projectId|departmentId|createdAt|updatedAt|createdBy|updatedBy)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$" }, "example": [ "name!=some-template-name", "createdAt>=2021-01-01T00:00:00Z" ] }, "explode": false }, "TemplateName": { "name": "templateName", "in": "query", "description": "The name of the template.", "required": true, "schema": { "type": "string", "example": "my-template-name", "minLength": 1 } }, "ScopeId3": { "name": "scopeId", "in": "query", "description": "filter by scope id", "schema": { "type": "string" }, "required": false }, "TemplateId": { "name": "templateId", "in": "path", "required": true, "description": "The Universally Unique Identifier (UUID) of the template.", "schema": { "type": "string", "format": "uuid" }, "example": "550e8400-e29b-41d4-a716-446655440000" }, "ExternalTypesOnly": { "name": "externalTypesOnly", "in": "query", "required": false, "description": "Return only external and user_external sourced workload types.", "schema": { "type": "boolean", "default": false } }, "WorkloadTypesFilter": { "name": "filterBy", "in": "query", "required": false, "description": "Filter results by a parameter. Use the format field-name operator value. Operators are `==` Equals, `!=` Not equals, `<=` Less than or equal, `>=` Greater than or equal, `=@` contains, `!@` Does not contain, `=^` Starts with and `=$` Ends with. Dates are in ISO 8601 timestamp format and available for operators `==`, `!=`, `<=` and `>=`.", "schema": { "type": "array", "items": { "type": "string", "pattern": "^(name|group)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$" }, "example": [ "name==Deployment", "group==apps" ] }, "explode": false }, "WorkloadTypeId": { "name": "workloadTypeId", "in": "path", "required": true, "description": "The unique identifier of the workload type.", "schema": { "type": "string", "format": "uuid" } }, "WorkloadsPrioritiesSort": { "name": "sortBy", "description": "Defines the field to sort the results by", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "name", "source", "value" ] } }, "WorkloadsPrioritiesFilter": { "name": "filterBy", "description": "Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=", "in": "query", "required": false, "schema": { "type": "array", "items": { "type": "string", "pattern": "^(name|source|value)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$" }, "example": [ "name!=some-name" ] }, "explode": false }, "ApplicationQueryVerbosity": { "name": "verbosity", "in": "query", "required": false, "description": "response verbosity level.", "example": "full", "schema": { "$ref": "#/components/schemas/ApplicationVerbosity" } }, "ApplicationsSort": { "name": "sortBy", "in": "query", "required": false, "description": "Sort results by a parameter.", "schema": { "type": "string", "enum": [ "clusterId", "name", "projectId", "projectName", "source", "type" ] } }, "ApplicationsFilter": { "name": "filterBy", "in": "query", "required": false, "description": "Filter results by a parameter. Use the format field-name operator value. Operators are `==` Equals, `!=` Not equals, `<=` Less than or equal, `>=` Greater than or equal, `=@` contains, `!@` Does not contain, `=^` Starts with and `=$` Ends with. Dates are in ISO 8601 timestamp format and available for operators `==`, `!=`, `<=` and `>=`.", "schema": { "type": "array", "items": { "type": "string", "pattern": "^(clusterId|name|projectId|projectName|source|type)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$" }, "example": [ "name!=some-name" ] }, "explode": false }, "ApplicationId": { "name": "aiApplicationId", "in": "path", "required": true, "description": "The unique identifier of the application.", "schema": { "type": "string", "format": "uuid" } }, "workloadId": { "$ref": "#/components/parameters/WorkloadId" }, "podId": { "$ref": "#/components/parameters/PodId" }, "workloadTypeId": { "$ref": "#/components/parameters/WorkloadTypeId" }, "WorkloadV2Id": { "name": "WorkloadV2Id", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid", "description": "The ID of the workload." } }, "DatavolumesRequestType": { "name": "requestType", "in": "query", "required": true, "description": "Which datavolumes would be returned in the response. Originated - datavolumes that are originated in the permitted scopes of the caller. UsableInProject - datavolumes that can be used in a specific project; if you use this value, you must also provide the project ID in the \"usableInProjectId\" query param.", "schema": { "$ref": "#/components/schemas/DatavolumeRequestType" } }, "DatavolumesUsableInProjectId": { "name": "usableInProjectId", "in": "query", "required": false, "description": "Only when using \"UsableInProject\" requestType; Filter results for only datavolumes that are shared with - or originated in - the project.", "schema": { "type": "string", "example": "5" } }, "DatavolumesSortBy": { "name": "sortBy", "in": "query", "required": false, "description": "Sort results by a parameters.", "schema": { "type": "string", "enum": [ "name", "projectId", "clusterId", "departmentId", "projectName", "createdAt", "createdBy", "phase" ] } }, "DatavolumesFilter": { "name": "filterBy", "in": "query", "required": false, "description": "Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.", "schema": { "type": "array", "items": { "type": "string", "pattern": "^(name|projectId|clusterId|departmentId|projectName|createdAt|createdBy|phase)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$" }, "example": [ "name!=some-datavolume-name" ] }, "explode": false }, "DatavolumeId": { "name": "datavolumeId", "in": "path", "required": true, "description": "The id of the datavolume to retrieve", "example": "71f69d83-ba66-4822-adf5-55ce55efd210", "schema": { "type": "string", "format": "uuid" } }, "DataVolumeName": { "name": "dataName", "in": "query", "required": true, "description": "the name of the datavolume", "schema": { "type": "string", "minLength": 1 } }, "OperatingSystem": { "name": "operatingSystem", "in": "path", "required": true, "description": "The operating system name.", "schema": { "type": "string", "enum": [ "linux", "windows", "darwin" ], "minLength": 4, "example": "linux" } }, "Architecture": { "name": "architecture", "in": "path", "required": true, "description": "The architecture type.", "schema": { "type": "string", "minLength": 4, "example": "arm64" } }, "DocumentName": { "name": "documentName", "in": "path", "required": true, "description": "The manual document name.", "schema": { "type": "string", "minLength": 4, "pattern": "^[A-Za-z0-9_]+\\.md$", "example": "runai.md" } }, "AuditLogSort": { "name": "sortBy", "in": "query", "required": false, "description": "Sort results by a parameters.", "schema": { "type": "string", "enum": [ "timestamp", "subject", "subject_type", "source_ip", "action", "http_method", "result", "url", "entity_type", "entity_name", "entity_id" ] } }, "AuditLogFilter": { "name": "filterBy", "in": "query", "required": false, "explode": false, "description": "Filter results by a parameter. Use the format field-name operator value. Operators are == Equals, != Not equals, <= Less than or equal, >= Greater than or equal, =@ contains, !@ Does not contains, =^ Starts with and =$ Ends with. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.", "schema": { "type": "array", "items": { "type": "string", "pattern": "^(timestamp|subject|subject_type|source_ip|action|result|url|entity_type|entity_name|cluster_name)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$" }, "example": [ "cluster_name==my-cluster_name", "entity_type==cluster,entity_name==test" ] } }, "NotificationChannelName": { "name": "name", "in": "path", "description": "Notification Channel name", "required": true, "schema": { "type": "string" } }, "SubscriptionId": { "name": "id", "in": "path", "description": "Subscription id", "required": true, "schema": { "type": "string" } } }, "securitySchemes": { "bearerAuth": { "type": "http", "scheme": "bearer", "bearerFormat": "JWT", "description": "Bearer authentication" } } }, "x-tagGroups": [ { "name": "Organizations", "tags": [ "Clusters", "Departments", "Reports", "NodePools", "Nodes", "Projects", "Tenant", "Logo", "Researcher Command Line Interface", "Researcher Command Line Interface Deprecated", "Administrator Command Line Interface", "Network Topologies" ] }, { "name": "Authentication and Authorization", "tags": [ "Access Keys", "Access rules", "Permissions", "Applications", "Service Accounts", "Roles", "Tokens", "Users", "User Applications", "Idps", "Me", "Settings", "Org unit" ] }, { "name": "Audit", "tags": [ "AuditLogs" ] }, { "name": "Datavolumes", "tags": [ "Datavolumes" ] }, { "name": "Workloads", "tags": [ "Events", "Pods", "Workloads", "Workloads V2", "NVIDIA NIM", "Workspaces", "Trainings", "Inferences", "Revisions", "Distributed", "Workloads batch", "Workload properties", "Workload templates", "Distributed Inferences" ] }, { "name": "Workload assets", "tags": [ "Compute", "Credentials", "Datasources", "Environment", "Storage Classes", "Storage Class Configuration", "Git", "HostPath", "NFS", "PVC", "Registry", "S3", "ConfigMap", "Secret", "Template" ] }, { "name": "Policies", "tags": [ "Policy" ] }, { "name": "Notifications", "tags": [ "Notification State", "Notification Types", "NotificationChannels", "Subscriptions" ] }, { "name": "AI Applications", "tags": [ "AI Applications" ] } ] }