# NodePools

Node pools assist in managing heterogeneous resources effectively. A node pool is a set of nodes grouped into a bucket of resources using a predefined (for example, GPU-Type) or administrator-defined label (for example, key & value). For more information, see [Node Pools](https://run-ai-docs.nvidia.com/self-hosted/2.24/platform-management/aiinitiatives/resources/node-pools/#introduction).

## Get the node pool metrics data.

> Retrieve the node pool metrics data by Universally Unique Identifier (UUID).

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.24"},"tags":[{"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/self-hosted/2.24/platform-management/aiinitiatives/resources/node-pools/#introduction).\n"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"parameters":{"ClusterUuid":{"name":"clusterUuid","in":"path","required":true,"description":"The Universally Unique Identifier (UUID) of the cluster.","schema":{"type":"string","format":"uuid","minLength":1}},"NodepoolPath":{"in":"path","name":"nodepoolName","required":true,"description":"The unique nodepool name.","schema":{"type":"string"}},"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"}},"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"}},"NumberOfSamples":{"name":"numberOfSamples","in":"query","description":"The number of samples to take in the specified time range.","required":false,"schema":{"type":"integer","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"}}}},"schemas":{"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"]},"MetricsResponse":{"type":"object","required":["measurements"],"properties":{"measurements":{"type":"array","items":{"$ref":"#/components/schemas/MeasurementResponse"}}}},"MeasurementResponse":{"type":"object","required":["type","values"],"properties":{"type":{"type":"string","description":"specifies what data returned"},"labels":{"type":"object","nullable":true,"description":"labels of the metric measurement","additionalProperties":{"type":"string"}},"values":{"type":"array","nullable":true,"items":{"type":"object","required":["value","timestamp"],"properties":{"value":{"type":"string"},"timestamp":{"type":"string","format":"date-time","nullable":true}}}}}},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}},"responses":{"400BadRequest":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500InternalServerError":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/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"}}}}}}
```

## Get nodepools

> Get nodepools

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.24"},"tags":[{"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/self-hosted/2.24/platform-management/aiinitiatives/resources/node-pools/#introduction).\n"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"parameters":{"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)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$"}},"explode":false},"NodepoolsSortBy":{"name":"sortBy","in":"query","required":false,"description":"Sort results by a parameters.","schema":{"$ref":"#/components/schemas/NodepoolSortFilterFields"}},"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"}},"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}}},"schemas":{"NodepoolSortFilterFields":{"type":"string","enum":["name","phase","clusterId","createdAt","updatedAt","networkTopologyName","gpuNetworkAccelerationDetection","gpuNetworkAccelerationDetected","gpuNetworkAccelerationLabelKey","swapEnabled","nodeLevelSchedulerEnabled"]},"Nodepool":{"allOf":[{"$ref":"#/components/schemas/NodepoolCreateResponseFields"},{"$ref":"#/components/schemas/NodepoolSyncFields"},{"$ref":"#/components/schemas/NodepoolCalculatedFields"}]},"NodepoolCreateResponseFields":{"type":"object","required":["name","labelKey","labelValue","clusterId"],"properties":{"name":{"type":"string","minLength":1},"labelKey":{"type":"string","description":"Label key for associated nodes to the Node Pool (with value as in labelValue)","minLength":1},"labelValue":{"type":"string","description":"Label value for associated nodes to the Node Pool (with key as in labelKey)","minLength":1},"clusterId":{"type":"string","format":"uuid"},"overProvisioningRatio":{"type":"integer","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"}}},"PlacementStrategy":{"type":"string","enum":["spread","binpack"],"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])?$"},"NetworkTopologyIdOptional":{"type":"string","format":"uuid","nullable":true,"description":"The unique identifier for the network topology"},"GPUResourceOptimization":{"type":"object","nullable":true,"properties":{"swapEnabled":{"type":"boolean","description":"Indicates if swap is enabled on the node pool","default":false,"nullable":true},"cpuSwapMemorySize":{"type":"string","description":"Size of the swap cpu memory. Only allowed when swapEnabled is true","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","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","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","nullable":true,"pattern":"^(0|[+]?((\\d+(\\.\\d+)?)(ns|us|µs|μs|ms|s|m|h|d|w))+$)"},"timeBasedFairShare":{"$ref":"#/components/schemas/TimeBasedFairShare"}}},"TimeBasedFairShare":{"type":"object","nullable":true,"description":"Time-based fairshare configuration for the node pool. [Experimental].","properties":{"enabled":{"type":"boolean","nullable":true,"default":false,"description":"Enables time-based fairshare for the node pool. When true, the Scheduler adjusts fairshare based on historical resource usage over a defined time window, allowing past consumption to influence scheduling order. When false, scheduling is based only on the current queue state. [Experimental]\n"},"historicalUsageWeight":{"type":"number","format":"float","nullable":true,"default":1,"description":"Set the weight value that determines how a project’s historical resource usage affects its fairshare.\n\n\n\n\n\n\n - 0.0: Ignore historical usage data (100% current usage).\n - 1.0: Historical usage data has higher impact, it may cause fairshare to be 0.\n - Values between 0.0 and 1.0 combine historical and current usage to maintain a balanced fairshare\n - Values above 1 will cause historical usage to have an even higher impact on fairshare.\n"},"decayHalfLife":{"type":"string","nullable":true,"default":"0h","pattern":"^(0|[+]?((\\d+(\\.\\d+)?)(m|h|d))+$)","description":"Set the half-life time to define the decay rate of a project’s historical resource usage. The half-life defines how long it takes for past usage to diminish to half of its original influence on a project's fairshare.\n\n\n\n\n\n\n - 0: disables decay; all historical usage is weighted equally.\n - > 0: older usage gradually contributes less over time (e.g., with a 24-hour half-life, usage from 24 hours ago contributes 50%, from 48 hours ago 25%, and so on).\n"},"windowType":{"$ref":"#/components/schemas/TimeBasedFairShareWindowType"},"windowDuration":{"type":"string","nullable":true,"default":"7d","pattern":"^(0|[+]?((\\d+(\\.\\d+)?)(m|h|d))+$)","description":"The time period over which historical usage is evaluated. Only usage within this window contributes to fairshare. For sliding windows, this is a moving period (e.g., 7d = always the last 7 days). For tumbling windows, this is the fixed cycle duration after which the window resets.\n"},"tumblingWindowStartTime":{"type":"string","format":"date-time","nullable":true,"description":"An RFC-3339 timestamp that defines the start time for all tumbling windows. Used only when windowType = Tumbling. This timestamp marks the beginning of the first fixed window, and subsequent windows repeat at intervals equal to the configured WindowDuration.\nFor example, with a 7-day window, an anchor of 2025-01-06T08:00:00Z produces weekly windows starting every Monday at 08:00 UTC.\n"}}},"TimeBasedFairShareWindowType":{"type":"string","enum":["sliding","tumbling"],"nullable":true,"default":"sliding","description":"The method for evaluating the usage window.\n - sliding: A moving window that always evaluates the most recent time period. For example, a 7-day sliding window always considers the last 7 days.\n - tumbling: Fixed, non-overlapping intervals that reset at the end of each cycle. Requires tumblingWindowStartTime to define the cycle anchor.\n"},"NodepoolSyncFields":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"phase":{"$ref":"#/components/schemas/NodepoolPhase"},"phaseMessage":{"type":"string","description":"Message for status of Node Pool"},"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"}}}}]}}},"NodepoolPhase":{"type":"string","enum":["Creating","Updating","Deleting","Empty","Unschedulable","Ready","Deleted"],"description":"Phase of Node Pool"},"NodepoolSyncUpdateFields":{"type":"object","properties":{"labelKey":{"type":"string","description":"Label key for associated nodes to the Node Pool (with value as in labelValue)","minLength":1,"nullable":true},"labelValue":{"type":"string","description":"Label value for associated nodes to the Node Pool (with key as in labelKey)","minLength":1,"nullable":true},"overProvisioningRatio":{"type":"integer","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."},"message":{"type":"string","description":"Human readable message indicating details about last transition."},"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"}}}},"NodepoolCalculatedFields":{"type":"object","required":["id","tenantId","clusterName","createdBy","createdAt","updatedBy","updatedAt","isDefault"],"properties":{"id":{"type":"string","description":"The NodePool id","readOnly":true},"tenantId":{"description":"The id of the tenant.","type":"integer","format":"int32"},"clusterName":{"type":"string"},"createdBy":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedBy":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"},"deletedBy":{"type":"string"},"deletedAt":{"type":"string","nullable":true,"format":"date-time"},"isDefault":{"type":"boolean","description":"Is the Node Pool is the cluster default"}}},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}},"responses":{"400BadRequest":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/node-pools":{"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"}}}}}}
```

## Create nodepool

> Create nodepool

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.24"},"tags":[{"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/self-hosted/2.24/platform-management/aiinitiatives/resources/node-pools/#introduction).\n"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"schemas":{"NodepoolCreateFields":{"type":"object","required":["name","labelKey","labelValue","clusterId"],"properties":{"name":{"type":"string","minLength":1},"labelKey":{"type":"string","description":"Label key for associated nodes to the Node Pool (with value as in labelValue)","minLength":1},"labelValue":{"type":"string","description":"Label value for associated nodes to the Node Pool (with key as in labelKey)","minLength":1},"clusterId":{"type":"string","format":"uuid"},"overProvisioningRatio":{"type":"integer","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"}}},"PlacementStrategy":{"type":"string","enum":["spread","binpack"],"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"},"GPUResourceOptimization":{"type":"object","nullable":true,"properties":{"swapEnabled":{"type":"boolean","description":"Indicates if swap is enabled on the node pool","default":false,"nullable":true},"cpuSwapMemorySize":{"type":"string","description":"Size of the swap cpu memory. Only allowed when swapEnabled is true","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","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","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","nullable":true,"pattern":"^(0|[+]?((\\d+(\\.\\d+)?)(ns|us|µs|μs|ms|s|m|h|d|w))+$)"},"timeBasedFairShare":{"$ref":"#/components/schemas/TimeBasedFairShare"}}},"TimeBasedFairShare":{"type":"object","nullable":true,"description":"Time-based fairshare configuration for the node pool. [Experimental].","properties":{"enabled":{"type":"boolean","nullable":true,"default":false,"description":"Enables time-based fairshare for the node pool. When true, the Scheduler adjusts fairshare based on historical resource usage over a defined time window, allowing past consumption to influence scheduling order. When false, scheduling is based only on the current queue state. [Experimental]\n"},"historicalUsageWeight":{"type":"number","format":"float","nullable":true,"default":1,"description":"Set the weight value that determines how a project’s historical resource usage affects its fairshare.\n\n\n\n\n\n\n - 0.0: Ignore historical usage data (100% current usage).\n - 1.0: Historical usage data has higher impact, it may cause fairshare to be 0.\n - Values between 0.0 and 1.0 combine historical and current usage to maintain a balanced fairshare\n - Values above 1 will cause historical usage to have an even higher impact on fairshare.\n"},"decayHalfLife":{"type":"string","nullable":true,"default":"0h","pattern":"^(0|[+]?((\\d+(\\.\\d+)?)(m|h|d))+$)","description":"Set the half-life time to define the decay rate of a project’s historical resource usage. The half-life defines how long it takes for past usage to diminish to half of its original influence on a project's fairshare.\n\n\n\n\n\n\n - 0: disables decay; all historical usage is weighted equally.\n - > 0: older usage gradually contributes less over time (e.g., with a 24-hour half-life, usage from 24 hours ago contributes 50%, from 48 hours ago 25%, and so on).\n"},"windowType":{"$ref":"#/components/schemas/TimeBasedFairShareWindowType"},"windowDuration":{"type":"string","nullable":true,"default":"7d","pattern":"^(0|[+]?((\\d+(\\.\\d+)?)(m|h|d))+$)","description":"The time period over which historical usage is evaluated. Only usage within this window contributes to fairshare. For sliding windows, this is a moving period (e.g., 7d = always the last 7 days). For tumbling windows, this is the fixed cycle duration after which the window resets.\n"},"tumblingWindowStartTime":{"type":"string","format":"date-time","nullable":true,"description":"An RFC-3339 timestamp that defines the start time for all tumbling windows. Used only when windowType = Tumbling. This timestamp marks the beginning of the first fixed window, and subsequent windows repeat at intervals equal to the configured WindowDuration.\nFor example, with a 7-day window, an anchor of 2025-01-06T08:00:00Z produces weekly windows starting every Monday at 08:00 UTC.\n"}}},"TimeBasedFairShareWindowType":{"type":"string","enum":["sliding","tumbling"],"nullable":true,"default":"sliding","description":"The method for evaluating the usage window.\n - sliding: A moving window that always evaluates the most recent time period. For example, a 7-day sliding window always considers the last 7 days.\n - tumbling: Fixed, non-overlapping intervals that reset at the end of each cycle. Requires tumblingWindowStartTime to define the cycle anchor.\n"},"NetworkTopologyIdOptional":{"type":"string","format":"uuid","nullable":true,"description":"The unique identifier for the network topology"},"Nodepool":{"allOf":[{"$ref":"#/components/schemas/NodepoolCreateResponseFields"},{"$ref":"#/components/schemas/NodepoolSyncFields"},{"$ref":"#/components/schemas/NodepoolCalculatedFields"}]},"NodepoolCreateResponseFields":{"type":"object","required":["name","labelKey","labelValue","clusterId"],"properties":{"name":{"type":"string","minLength":1},"labelKey":{"type":"string","description":"Label key for associated nodes to the Node Pool (with value as in labelValue)","minLength":1},"labelValue":{"type":"string","description":"Label value for associated nodes to the Node Pool (with key as in labelKey)","minLength":1},"clusterId":{"type":"string","format":"uuid"},"overProvisioningRatio":{"type":"integer","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"}}},"NetworkTopologyNameOptional":{"type":"string","nullable":true,"description":"Name of the network topology","maxLength":63,"minLength":1,"pattern":"^[a-z]([a-z0-9-]*[a-z0-9])?$"},"NodepoolSyncFields":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"phase":{"$ref":"#/components/schemas/NodepoolPhase"},"phaseMessage":{"type":"string","description":"Message for status of Node Pool"},"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"}}}}]}}},"NodepoolPhase":{"type":"string","enum":["Creating","Updating","Deleting","Empty","Unschedulable","Ready","Deleted"],"description":"Phase of Node Pool"},"NodepoolSyncUpdateFields":{"type":"object","properties":{"labelKey":{"type":"string","description":"Label key for associated nodes to the Node Pool (with value as in labelValue)","minLength":1,"nullable":true},"labelValue":{"type":"string","description":"Label value for associated nodes to the Node Pool (with key as in labelKey)","minLength":1,"nullable":true},"overProvisioningRatio":{"type":"integer","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."},"message":{"type":"string","description":"Human readable message indicating details about last transition."},"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"}}}},"NodepoolCalculatedFields":{"type":"object","required":["id","tenantId","clusterName","createdBy","createdAt","updatedBy","updatedAt","isDefault"],"properties":{"id":{"type":"string","description":"The NodePool id","readOnly":true},"tenantId":{"description":"The id of the tenant.","type":"integer","format":"int32"},"clusterName":{"type":"string"},"createdBy":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedBy":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"},"deletedBy":{"type":"string"},"deletedAt":{"type":"string","nullable":true,"format":"date-time"},"isDefault":{"type":"boolean","description":"Is the Node Pool is the cluster default"}}},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}},"responses":{"400BadRequest":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/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"}}}}}}
```

## Count nodepools

> Count nodepools

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.24"},"tags":[{"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/self-hosted/2.24/platform-management/aiinitiatives/resources/node-pools/#introduction).\n"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"parameters":{"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)(==|!=|<=|>=|=@|!@|=\\^|=\\$).+$"}},"explode":false}},"responses":{"400BadRequest":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}}},"paths":{"/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"}}}}}}
```

## Get nodepools minimal

> Retrieve essential node pool data required for common operations (e.g., workload submission)

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.24"},"tags":[{"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/self-hosted/2.24/platform-management/aiinitiatives/resources/node-pools/#introduction).\n"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"parameters":{"NodepoolsMinimalFilterBy":{"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. Dates are in ISO 8601 timestamp format and available for operators ==, !=, <= and >=.","schema":{"type":"array","items":{"type":"string","pattern":"^(clusterId)(==|!=|<=|>=).+$"}},"explode":false},"NodepoolsMinimalSortBy":{"name":"sortBy","in":"query","required":false,"description":"Sort results by a parameter.","schema":{"$ref":"#/components/schemas/NodepoolMinimalSortFields"}},"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"}},"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}}},"schemas":{"NodepoolMinimalSortFields":{"type":"string","enum":["clusterId"],"description":"Fields available for sorting nodepool metadata"},"NodepoolMinimal":{"type":"object","required":["id","name","clusterId"],"properties":{"id":{"$ref":"#/components/schemas/NodepoolId"},"name":{"type":"string","minLength":1},"clusterId":{"$ref":"#/components/schemas/ClusterId"},"phase":{"$ref":"#/components/schemas/NodepoolPhase"}}},"NodepoolId":{"type":"string","description":"The NodePool id","readOnly":true},"ClusterId":{"description":"The id of the cluster.","type":"string","format":"uuid"},"NodepoolPhase":{"type":"string","enum":["Creating","Updating","Deleting","Empty","Unschedulable","Ready","Deleted"],"description":"Phase of Node Pool"},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}},"responses":{"400BadRequest":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/node-pools/minimal":{"get":{"summary":"Get nodepools minimal","operationId":"get_nodepools_minimal","description":"Retrieve essential node pool data required for common operations (e.g., workload submission)","tags":["NodePools"],"parameters":[{"$ref":"#/components/parameters/NodepoolsMinimalFilterBy"},{"$ref":"#/components/parameters/NodepoolsMinimalSortBy"},{"$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/NodepoolMinimal"}}}}}}},"400":{"$ref":"#/components/responses/400BadRequest"},"503":{"$ref":"#/components/responses/503ServiceUnavailable"}}}}}}
```

## Get nodepool

> Get nodepool

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.24"},"tags":[{"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/self-hosted/2.24/platform-management/aiinitiatives/resources/node-pools/#introduction).\n"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"parameters":{"NodepoolId":{"name":"nodepoolId","in":"path","required":true,"description":"The unique id identifying the Node Pool.","schema":{"type":"string"}}},"schemas":{"Nodepool":{"allOf":[{"$ref":"#/components/schemas/NodepoolCreateResponseFields"},{"$ref":"#/components/schemas/NodepoolSyncFields"},{"$ref":"#/components/schemas/NodepoolCalculatedFields"}]},"NodepoolCreateResponseFields":{"type":"object","required":["name","labelKey","labelValue","clusterId"],"properties":{"name":{"type":"string","minLength":1},"labelKey":{"type":"string","description":"Label key for associated nodes to the Node Pool (with value as in labelValue)","minLength":1},"labelValue":{"type":"string","description":"Label value for associated nodes to the Node Pool (with key as in labelKey)","minLength":1},"clusterId":{"type":"string","format":"uuid"},"overProvisioningRatio":{"type":"integer","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"}}},"PlacementStrategy":{"type":"string","enum":["spread","binpack"],"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])?$"},"NetworkTopologyIdOptional":{"type":"string","format":"uuid","nullable":true,"description":"The unique identifier for the network topology"},"GPUResourceOptimization":{"type":"object","nullable":true,"properties":{"swapEnabled":{"type":"boolean","description":"Indicates if swap is enabled on the node pool","default":false,"nullable":true},"cpuSwapMemorySize":{"type":"string","description":"Size of the swap cpu memory. Only allowed when swapEnabled is true","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","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","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","nullable":true,"pattern":"^(0|[+]?((\\d+(\\.\\d+)?)(ns|us|µs|μs|ms|s|m|h|d|w))+$)"},"timeBasedFairShare":{"$ref":"#/components/schemas/TimeBasedFairShare"}}},"TimeBasedFairShare":{"type":"object","nullable":true,"description":"Time-based fairshare configuration for the node pool. [Experimental].","properties":{"enabled":{"type":"boolean","nullable":true,"default":false,"description":"Enables time-based fairshare for the node pool. When true, the Scheduler adjusts fairshare based on historical resource usage over a defined time window, allowing past consumption to influence scheduling order. When false, scheduling is based only on the current queue state. [Experimental]\n"},"historicalUsageWeight":{"type":"number","format":"float","nullable":true,"default":1,"description":"Set the weight value that determines how a project’s historical resource usage affects its fairshare.\n\n\n\n\n\n\n - 0.0: Ignore historical usage data (100% current usage).\n - 1.0: Historical usage data has higher impact, it may cause fairshare to be 0.\n - Values between 0.0 and 1.0 combine historical and current usage to maintain a balanced fairshare\n - Values above 1 will cause historical usage to have an even higher impact on fairshare.\n"},"decayHalfLife":{"type":"string","nullable":true,"default":"0h","pattern":"^(0|[+]?((\\d+(\\.\\d+)?)(m|h|d))+$)","description":"Set the half-life time to define the decay rate of a project’s historical resource usage. The half-life defines how long it takes for past usage to diminish to half of its original influence on a project's fairshare.\n\n\n\n\n\n\n - 0: disables decay; all historical usage is weighted equally.\n - > 0: older usage gradually contributes less over time (e.g., with a 24-hour half-life, usage from 24 hours ago contributes 50%, from 48 hours ago 25%, and so on).\n"},"windowType":{"$ref":"#/components/schemas/TimeBasedFairShareWindowType"},"windowDuration":{"type":"string","nullable":true,"default":"7d","pattern":"^(0|[+]?((\\d+(\\.\\d+)?)(m|h|d))+$)","description":"The time period over which historical usage is evaluated. Only usage within this window contributes to fairshare. For sliding windows, this is a moving period (e.g., 7d = always the last 7 days). For tumbling windows, this is the fixed cycle duration after which the window resets.\n"},"tumblingWindowStartTime":{"type":"string","format":"date-time","nullable":true,"description":"An RFC-3339 timestamp that defines the start time for all tumbling windows. Used only when windowType = Tumbling. This timestamp marks the beginning of the first fixed window, and subsequent windows repeat at intervals equal to the configured WindowDuration.\nFor example, with a 7-day window, an anchor of 2025-01-06T08:00:00Z produces weekly windows starting every Monday at 08:00 UTC.\n"}}},"TimeBasedFairShareWindowType":{"type":"string","enum":["sliding","tumbling"],"nullable":true,"default":"sliding","description":"The method for evaluating the usage window.\n - sliding: A moving window that always evaluates the most recent time period. For example, a 7-day sliding window always considers the last 7 days.\n - tumbling: Fixed, non-overlapping intervals that reset at the end of each cycle. Requires tumblingWindowStartTime to define the cycle anchor.\n"},"NodepoolSyncFields":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"phase":{"$ref":"#/components/schemas/NodepoolPhase"},"phaseMessage":{"type":"string","description":"Message for status of Node Pool"},"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"}}}}]}}},"NodepoolPhase":{"type":"string","enum":["Creating","Updating","Deleting","Empty","Unschedulable","Ready","Deleted"],"description":"Phase of Node Pool"},"NodepoolSyncUpdateFields":{"type":"object","properties":{"labelKey":{"type":"string","description":"Label key for associated nodes to the Node Pool (with value as in labelValue)","minLength":1,"nullable":true},"labelValue":{"type":"string","description":"Label value for associated nodes to the Node Pool (with key as in labelKey)","minLength":1,"nullable":true},"overProvisioningRatio":{"type":"integer","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."},"message":{"type":"string","description":"Human readable message indicating details about last transition."},"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"}}}},"NodepoolCalculatedFields":{"type":"object","required":["id","tenantId","clusterName","createdBy","createdAt","updatedBy","updatedAt","isDefault"],"properties":{"id":{"type":"string","description":"The NodePool id","readOnly":true},"tenantId":{"description":"The id of the tenant.","type":"integer","format":"int32"},"clusterName":{"type":"string"},"createdBy":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedBy":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"},"deletedBy":{"type":"string"},"deletedAt":{"type":"string","nullable":true,"format":"date-time"},"isDefault":{"type":"boolean","description":"Is the Node Pool is the cluster default"}}},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}},"responses":{"400BadRequest":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500InternalServerError":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/node-pools/{nodepoolId}":{"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"}}}}}}
```

## Update nodepool

> Update nodepool

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.24"},"tags":[{"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/self-hosted/2.24/platform-management/aiinitiatives/resources/node-pools/#introduction).\n"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"parameters":{"NodepoolId":{"name":"nodepoolId","in":"path","required":true,"description":"The unique id identifying the Node Pool.","schema":{"type":"string"}}},"schemas":{"NodepoolUpdateFields":{"type":"object","properties":{"labelKey":{"type":"string","description":"Label key for associated nodes to the Node Pool (with value as in labelValue)","minLength":1,"nullable":true},"labelValue":{"type":"string","description":"Label value for associated nodes to the Node Pool (with key as in labelKey)","minLength":1,"nullable":true},"overProvisioningRatio":{"type":"integer","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"}}},"PlacementStrategy":{"type":"string","enum":["spread","binpack"],"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"},"GPUResourceOptimization":{"type":"object","nullable":true,"properties":{"swapEnabled":{"type":"boolean","description":"Indicates if swap is enabled on the node pool","default":false,"nullable":true},"cpuSwapMemorySize":{"type":"string","description":"Size of the swap cpu memory. Only allowed when swapEnabled is true","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","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","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","nullable":true,"pattern":"^(0|[+]?((\\d+(\\.\\d+)?)(ns|us|µs|μs|ms|s|m|h|d|w))+$)"},"timeBasedFairShare":{"$ref":"#/components/schemas/TimeBasedFairShare"}}},"TimeBasedFairShare":{"type":"object","nullable":true,"description":"Time-based fairshare configuration for the node pool. [Experimental].","properties":{"enabled":{"type":"boolean","nullable":true,"default":false,"description":"Enables time-based fairshare for the node pool. When true, the Scheduler adjusts fairshare based on historical resource usage over a defined time window, allowing past consumption to influence scheduling order. When false, scheduling is based only on the current queue state. [Experimental]\n"},"historicalUsageWeight":{"type":"number","format":"float","nullable":true,"default":1,"description":"Set the weight value that determines how a project’s historical resource usage affects its fairshare.\n\n\n\n\n\n\n - 0.0: Ignore historical usage data (100% current usage).\n - 1.0: Historical usage data has higher impact, it may cause fairshare to be 0.\n - Values between 0.0 and 1.0 combine historical and current usage to maintain a balanced fairshare\n - Values above 1 will cause historical usage to have an even higher impact on fairshare.\n"},"decayHalfLife":{"type":"string","nullable":true,"default":"0h","pattern":"^(0|[+]?((\\d+(\\.\\d+)?)(m|h|d))+$)","description":"Set the half-life time to define the decay rate of a project’s historical resource usage. The half-life defines how long it takes for past usage to diminish to half of its original influence on a project's fairshare.\n\n\n\n\n\n\n - 0: disables decay; all historical usage is weighted equally.\n - > 0: older usage gradually contributes less over time (e.g., with a 24-hour half-life, usage from 24 hours ago contributes 50%, from 48 hours ago 25%, and so on).\n"},"windowType":{"$ref":"#/components/schemas/TimeBasedFairShareWindowType"},"windowDuration":{"type":"string","nullable":true,"default":"7d","pattern":"^(0|[+]?((\\d+(\\.\\d+)?)(m|h|d))+$)","description":"The time period over which historical usage is evaluated. Only usage within this window contributes to fairshare. For sliding windows, this is a moving period (e.g., 7d = always the last 7 days). For tumbling windows, this is the fixed cycle duration after which the window resets.\n"},"tumblingWindowStartTime":{"type":"string","format":"date-time","nullable":true,"description":"An RFC-3339 timestamp that defines the start time for all tumbling windows. Used only when windowType = Tumbling. This timestamp marks the beginning of the first fixed window, and subsequent windows repeat at intervals equal to the configured WindowDuration.\nFor example, with a 7-day window, an anchor of 2025-01-06T08:00:00Z produces weekly windows starting every Monday at 08:00 UTC.\n"}}},"TimeBasedFairShareWindowType":{"type":"string","enum":["sliding","tumbling"],"nullable":true,"default":"sliding","description":"The method for evaluating the usage window.\n - sliding: A moving window that always evaluates the most recent time period. For example, a 7-day sliding window always considers the last 7 days.\n - tumbling: Fixed, non-overlapping intervals that reset at the end of each cycle. Requires tumblingWindowStartTime to define the cycle anchor.\n"},"NetworkTopologyIdOptional":{"type":"string","format":"uuid","nullable":true,"description":"The unique identifier for the network topology"},"Nodepool":{"allOf":[{"$ref":"#/components/schemas/NodepoolCreateResponseFields"},{"$ref":"#/components/schemas/NodepoolSyncFields"},{"$ref":"#/components/schemas/NodepoolCalculatedFields"}]},"NodepoolCreateResponseFields":{"type":"object","required":["name","labelKey","labelValue","clusterId"],"properties":{"name":{"type":"string","minLength":1},"labelKey":{"type":"string","description":"Label key for associated nodes to the Node Pool (with value as in labelValue)","minLength":1},"labelValue":{"type":"string","description":"Label value for associated nodes to the Node Pool (with key as in labelKey)","minLength":1},"clusterId":{"type":"string","format":"uuid"},"overProvisioningRatio":{"type":"integer","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"}}},"NetworkTopologyNameOptional":{"type":"string","nullable":true,"description":"Name of the network topology","maxLength":63,"minLength":1,"pattern":"^[a-z]([a-z0-9-]*[a-z0-9])?$"},"NodepoolSyncFields":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"phase":{"$ref":"#/components/schemas/NodepoolPhase"},"phaseMessage":{"type":"string","description":"Message for status of Node Pool"},"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"}}}}]}}},"NodepoolPhase":{"type":"string","enum":["Creating","Updating","Deleting","Empty","Unschedulable","Ready","Deleted"],"description":"Phase of Node Pool"},"NodepoolSyncUpdateFields":{"type":"object","properties":{"labelKey":{"type":"string","description":"Label key for associated nodes to the Node Pool (with value as in labelValue)","minLength":1,"nullable":true},"labelValue":{"type":"string","description":"Label value for associated nodes to the Node Pool (with key as in labelKey)","minLength":1,"nullable":true},"overProvisioningRatio":{"type":"integer","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."},"message":{"type":"string","description":"Human readable message indicating details about last transition."},"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"}}}},"NodepoolCalculatedFields":{"type":"object","required":["id","tenantId","clusterName","createdBy","createdAt","updatedBy","updatedAt","isDefault"],"properties":{"id":{"type":"string","description":"The NodePool id","readOnly":true},"tenantId":{"description":"The id of the tenant.","type":"integer","format":"int32"},"clusterName":{"type":"string"},"createdBy":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedBy":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"},"deletedBy":{"type":"string"},"deletedAt":{"type":"string","nullable":true,"format":"date-time"},"isDefault":{"type":"boolean","description":"Is the Node Pool is the cluster default"}}},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}},"responses":{"400BadRequest":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500InternalServerError":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/node-pools/{nodepoolId}":{"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"}}}}}}
```

## Delete nodepool

> Delete nodepool

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.24"},"tags":[{"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/self-hosted/2.24/platform-management/aiinitiatives/resources/node-pools/#introduction).\n"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"parameters":{"NodepoolId":{"name":"nodepoolId","in":"path","required":true,"description":"The unique id identifying the Node Pool.","schema":{"type":"string"}}},"responses":{"202Accepted":{"description":"Accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HttpResponse"}}}},"204NoContent":{"description":"No Content."},"400BadRequest":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500InternalServerError":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"HttpResponse":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"}}},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}}},"paths":{"/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"}}}}}}
```

## Patch nodepool fields

> Update only specific fields of a nodepool

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.24"},"tags":[{"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/self-hosted/2.24/platform-management/aiinitiatives/resources/node-pools/#introduction).\n"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"parameters":{"NodepoolId":{"name":"nodepoolId","in":"path","required":true,"description":"The unique id identifying the Node Pool.","schema":{"type":"string"}}},"schemas":{"NodepoolUpdateFields":{"type":"object","properties":{"labelKey":{"type":"string","description":"Label key for associated nodes to the Node Pool (with value as in labelValue)","minLength":1,"nullable":true},"labelValue":{"type":"string","description":"Label value for associated nodes to the Node Pool (with key as in labelKey)","minLength":1,"nullable":true},"overProvisioningRatio":{"type":"integer","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"}}},"PlacementStrategy":{"type":"string","enum":["spread","binpack"],"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"},"GPUResourceOptimization":{"type":"object","nullable":true,"properties":{"swapEnabled":{"type":"boolean","description":"Indicates if swap is enabled on the node pool","default":false,"nullable":true},"cpuSwapMemorySize":{"type":"string","description":"Size of the swap cpu memory. Only allowed when swapEnabled is true","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","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","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","nullable":true,"pattern":"^(0|[+]?((\\d+(\\.\\d+)?)(ns|us|µs|μs|ms|s|m|h|d|w))+$)"},"timeBasedFairShare":{"$ref":"#/components/schemas/TimeBasedFairShare"}}},"TimeBasedFairShare":{"type":"object","nullable":true,"description":"Time-based fairshare configuration for the node pool. [Experimental].","properties":{"enabled":{"type":"boolean","nullable":true,"default":false,"description":"Enables time-based fairshare for the node pool. When true, the Scheduler adjusts fairshare based on historical resource usage over a defined time window, allowing past consumption to influence scheduling order. When false, scheduling is based only on the current queue state. [Experimental]\n"},"historicalUsageWeight":{"type":"number","format":"float","nullable":true,"default":1,"description":"Set the weight value that determines how a project’s historical resource usage affects its fairshare.\n\n\n\n\n\n\n - 0.0: Ignore historical usage data (100% current usage).\n - 1.0: Historical usage data has higher impact, it may cause fairshare to be 0.\n - Values between 0.0 and 1.0 combine historical and current usage to maintain a balanced fairshare\n - Values above 1 will cause historical usage to have an even higher impact on fairshare.\n"},"decayHalfLife":{"type":"string","nullable":true,"default":"0h","pattern":"^(0|[+]?((\\d+(\\.\\d+)?)(m|h|d))+$)","description":"Set the half-life time to define the decay rate of a project’s historical resource usage. The half-life defines how long it takes for past usage to diminish to half of its original influence on a project's fairshare.\n\n\n\n\n\n\n - 0: disables decay; all historical usage is weighted equally.\n - > 0: older usage gradually contributes less over time (e.g., with a 24-hour half-life, usage from 24 hours ago contributes 50%, from 48 hours ago 25%, and so on).\n"},"windowType":{"$ref":"#/components/schemas/TimeBasedFairShareWindowType"},"windowDuration":{"type":"string","nullable":true,"default":"7d","pattern":"^(0|[+]?((\\d+(\\.\\d+)?)(m|h|d))+$)","description":"The time period over which historical usage is evaluated. Only usage within this window contributes to fairshare. For sliding windows, this is a moving period (e.g., 7d = always the last 7 days). For tumbling windows, this is the fixed cycle duration after which the window resets.\n"},"tumblingWindowStartTime":{"type":"string","format":"date-time","nullable":true,"description":"An RFC-3339 timestamp that defines the start time for all tumbling windows. Used only when windowType = Tumbling. This timestamp marks the beginning of the first fixed window, and subsequent windows repeat at intervals equal to the configured WindowDuration.\nFor example, with a 7-day window, an anchor of 2025-01-06T08:00:00Z produces weekly windows starting every Monday at 08:00 UTC.\n"}}},"TimeBasedFairShareWindowType":{"type":"string","enum":["sliding","tumbling"],"nullable":true,"default":"sliding","description":"The method for evaluating the usage window.\n - sliding: A moving window that always evaluates the most recent time period. For example, a 7-day sliding window always considers the last 7 days.\n - tumbling: Fixed, non-overlapping intervals that reset at the end of each cycle. Requires tumblingWindowStartTime to define the cycle anchor.\n"},"NetworkTopologyIdOptional":{"type":"string","format":"uuid","nullable":true,"description":"The unique identifier for the network topology"},"Nodepool":{"allOf":[{"$ref":"#/components/schemas/NodepoolCreateResponseFields"},{"$ref":"#/components/schemas/NodepoolSyncFields"},{"$ref":"#/components/schemas/NodepoolCalculatedFields"}]},"NodepoolCreateResponseFields":{"type":"object","required":["name","labelKey","labelValue","clusterId"],"properties":{"name":{"type":"string","minLength":1},"labelKey":{"type":"string","description":"Label key for associated nodes to the Node Pool (with value as in labelValue)","minLength":1},"labelValue":{"type":"string","description":"Label value for associated nodes to the Node Pool (with key as in labelKey)","minLength":1},"clusterId":{"type":"string","format":"uuid"},"overProvisioningRatio":{"type":"integer","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"}}},"NetworkTopologyNameOptional":{"type":"string","nullable":true,"description":"Name of the network topology","maxLength":63,"minLength":1,"pattern":"^[a-z]([a-z0-9-]*[a-z0-9])?$"},"NodepoolSyncFields":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"phase":{"$ref":"#/components/schemas/NodepoolPhase"},"phaseMessage":{"type":"string","description":"Message for status of Node Pool"},"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"}}}}]}}},"NodepoolPhase":{"type":"string","enum":["Creating","Updating","Deleting","Empty","Unschedulable","Ready","Deleted"],"description":"Phase of Node Pool"},"NodepoolSyncUpdateFields":{"type":"object","properties":{"labelKey":{"type":"string","description":"Label key for associated nodes to the Node Pool (with value as in labelValue)","minLength":1,"nullable":true},"labelValue":{"type":"string","description":"Label value for associated nodes to the Node Pool (with key as in labelKey)","minLength":1,"nullable":true},"overProvisioningRatio":{"type":"integer","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."},"message":{"type":"string","description":"Human readable message indicating details about last transition."},"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"}}}},"NodepoolCalculatedFields":{"type":"object","required":["id","tenantId","clusterName","createdBy","createdAt","updatedBy","updatedAt","isDefault"],"properties":{"id":{"type":"string","description":"The NodePool id","readOnly":true},"tenantId":{"description":"The id of the tenant.","type":"integer","format":"int32"},"clusterName":{"type":"string"},"createdBy":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedBy":{"type":"string"},"updatedAt":{"type":"string","format":"date-time"},"deletedBy":{"type":"string"},"deletedAt":{"type":"string","nullable":true,"format":"date-time"},"isDefault":{"type":"boolean","description":"Is the Node Pool is the cluster default"}}},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}},"responses":{"400BadRequest":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403Forbidden":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500InternalServerError":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/node-pools/{nodepoolId}":{"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 nodepool minimal data by ID

> Retrieve essential data for a specific node pool by ID required for common operations (e.g., workload submission)

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.24"},"tags":[{"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/self-hosted/2.24/platform-management/aiinitiatives/resources/node-pools/#introduction).\n"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"parameters":{"NodepoolId":{"name":"nodepoolId","in":"path","required":true,"description":"The unique id identifying the Node Pool.","schema":{"type":"string"}}},"schemas":{"NodepoolMinimal":{"type":"object","required":["id","name","clusterId"],"properties":{"id":{"$ref":"#/components/schemas/NodepoolId"},"name":{"type":"string","minLength":1},"clusterId":{"$ref":"#/components/schemas/ClusterId"},"phase":{"$ref":"#/components/schemas/NodepoolPhase"}}},"NodepoolId":{"type":"string","description":"The NodePool id","readOnly":true},"ClusterId":{"description":"The id of the cluster.","type":"string","format":"uuid"},"NodepoolPhase":{"type":"string","enum":["Creating","Updating","Deleting","Empty","Unschedulable","Ready","Deleted"],"description":"Phase of Node Pool"},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}},"responses":{"400BadRequest":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503ServiceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/api/v1/node-pools/{nodepoolId}/minimal":{"get":{"summary":"Get nodepool minimal data by ID","operationId":"get_nodepool_minimal","description":"Retrieve essential data for a specific node pool by ID required for common operations (e.g., workload submission)","tags":["NodePools"],"parameters":[{"$ref":"#/components/parameters/NodepoolId"}],"responses":{"200":{"description":"ok","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NodepoolMinimal"}}}},"400":{"$ref":"#/components/responses/400BadRequest"},"404":{"$ref":"#/components/responses/404NotFound"},"503":{"$ref":"#/components/responses/503ServiceUnavailable"}}}}}}
```

## Get the cluster's Node Pools.

> Retrieve all the node pools with details from the cluster by Universally Unique Identifier (UUID). Deprecated, please use /api/v1/node-pools instead.

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.24"},"tags":[{"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/self-hosted/2.24/platform-management/aiinitiatives/resources/node-pools/#introduction).\n"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"schemas":{"NodePool1":{"allOf":[{"$ref":"#/components/schemas/NodePoolCreateRequest"},{"properties":{"id":{"type":"number","description":"Node Pool unique id","readOnly":true},"clusterId":{"type":"string","format":"uuid","description":"Node Pool cluster id"},"createdAt":{"type":"string","description":"Node Pool creation time","format":"date-time"},"updatedAt":{"type":"string","description":"Node Pool update time","format":"date-time"},"deletedAt":{"type":"string","description":"Node Pool delete time","format":"date-time"},"status":{"type":"string","enum":["Creating","Updating","Deleting","Empty","Unschedulable","Ready","Deleted"],"description":"Node Pool status"},"statusMessage":{"type":"string","description":"Node Pool status details"},"nodes":{"type":"string","description":"List of Nodes that are assigned to this nodepool - as json string"},"createdBy":{"type":"string","description":"Node Pool creator"},"updatedBy":{"type":"string","description":"Node Pool updater"},"isDefault":{"type":"boolean","description":"Is the Node Pool the default Node Pool for all nodes not assigned to any other Node Pool"}}}]},"NodePoolCreateRequest":{"properties":{"name":{"type":"string","description":"Node Pool Name"},"overProvisioningRatio":{"type":"integer","default":1},"labelKey":{"type":"string","description":"Label key for associated nodes to the Node Pool (with value as in labelValue)"},"labelValue":{"type":"string","description":"Label value for associated nodes to the Node Pool (with key as in labelKey)"},"placementStrategy":{"$ref":"#/components/schemas/PlacementStrategy1"}}},"PlacementStrategy1":{"properties":{"cpu":{"type":"string","enum":["spread","binpack"],"description":"scheduling strategy for cpu"},"gpu":{"type":"string","enum":["spread","binpack"],"description":"scheduling strategy for gpu"}}},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}},"Error1":{"required":["code","message"],"properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}},"responses":{"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error1"}}}}}},"paths":{"/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"}}}}}}}}}
```

## Create a Node Pool.

> Use to create a node pool in a cluster by Universally Unique Identifier (UUID). Deprecated, please use /api/v1/node-pools instead.

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.24"},"tags":[{"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/self-hosted/2.24/platform-management/aiinitiatives/resources/node-pools/#introduction).\n"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"schemas":{"NodePoolCreateRequest":{"properties":{"name":{"type":"string","description":"Node Pool Name"},"overProvisioningRatio":{"type":"integer","default":1},"labelKey":{"type":"string","description":"Label key for associated nodes to the Node Pool (with value as in labelValue)"},"labelValue":{"type":"string","description":"Label value for associated nodes to the Node Pool (with key as in labelKey)"},"placementStrategy":{"$ref":"#/components/schemas/PlacementStrategy1"}}},"PlacementStrategy1":{"properties":{"cpu":{"type":"string","enum":["spread","binpack"],"description":"scheduling strategy for cpu"},"gpu":{"type":"string","enum":["spread","binpack"],"description":"scheduling strategy for gpu"}}},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Conflict":{"description":"conflict error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"paths":{"/v1/k8s/clusters/{clusterId}/node-pools":{"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"}}}}}}}}}
```

## Update labels of a Node Pool.

> Use to update the labels of a node pool. Deprecated, please use PATCH /api/v1/node-pools/{id} instead.

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.24"},"tags":[{"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/self-hosted/2.24/platform-management/aiinitiatives/resources/node-pools/#introduction).\n"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"schemas":{"NodePoolLabelsRequest":{"properties":{"labelKey":{"type":"string","description":"key of node label for pool"},"labelValue":{"type":"string","description":"value of node label for pool"}}},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}},"Error1":{"required":["code","message"],"properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error1"}}}},"serviceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error1"}}}}}},"paths":{"/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"}}}}}}
```

## Update a Node Pool.

> Use to update the details of a node pool by Universally Unique Identifier (UUID). Deprecated, please use PATCH /api/v1/node-pools/{id} instead.

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.24"},"tags":[{"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/self-hosted/2.24/platform-management/aiinitiatives/resources/node-pools/#introduction).\n"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"schemas":{"UpdateNodePoolRequest":{"properties":{"labelKey":{"type":"string","description":"key of node label for pool"},"labelValue":{"type":"string","description":"value of node label for pool"},"overProvisioningRatio":{"type":"integer","default":1},"placementStrategy":{"$ref":"#/components/schemas/PlacementStrategy1"}}},"PlacementStrategy1":{"properties":{"cpu":{"type":"string","enum":["spread","binpack"],"description":"scheduling strategy for cpu"},"gpu":{"type":"string","enum":["spread","binpack"],"description":"scheduling strategy for gpu"}}},"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}},"Error1":{"required":["code","message"],"properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}},"responses":{"BadRequest":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error1"}}}},"serviceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error1"}}}}}},"paths":{"/v1/k8s/clusters/{clusterId}/node-pools/{id}":{"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"}}}}}}
```

## Delete a Node Pool by id.§

> Use to delete a node pool by Universally Unique Identifier (UUID). Deprecated, please use /api/v1/node-pools/{id} instead.

```json
{"openapi":"3.0.3","info":{"title":"NVIDIA Run:ai","version":"2.24"},"tags":[{"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/self-hosted/2.24/platform-management/aiinitiatives/resources/node-pools/#introduction).\n"}],"servers":[{"url":"https://app.run.ai"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"Bearer authentication"}},"responses":{"BadRequest":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error1"}}}},"serviceUnavailable":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error1"}}}}},"schemas":{"Error":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"},"details":{"type":"string"}}},"Error1":{"required":["code","message"],"properties":{"code":{"type":"integer","format":"int32"},"message":{"type":"string"}}}}},"paths":{"/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"}}}}}}
```
