# 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/saas/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":"latest"},"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/saas/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":"latest"},"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/saas/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","maxItems":10,"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":"latest"},"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/saas/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,"maxLength":63},"labelKey":{"description":"Label key for associated nodes to the Node Pool (with value as in labelValue)","allOf":[{"$ref":"#/components/schemas/LabelKey"}]},"labelValue":{"description":"Label value for associated nodes to the Node Pool (with key as in labelKey)","allOf":[{"$ref":"#/components/schemas/LabelValue"}]},"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"}}},"LabelKey":{"type":"string","minLength":1,"maxLength":253},"LabelValue":{"type":"string","pattern":"^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$","minLength":1,"maxLength":63},"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":"latest"},"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/saas/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","maxItems":10,"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":"latest"},"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/saas/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","maxItems":10,"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"},"gpuNetworkAccelerationDetected":{"type":"boolean","description":"Signals to all relevant parties about GPUNetworkAcceleration being detected in some nodepool's nodes"}}},"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":"latest"},"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/saas/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":"latest"},"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/saas/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","nullable":true,"description":"Label key for associated nodes to the Node Pool (with value as in labelValue)","allOf":[{"$ref":"#/components/schemas/LabelKey"}]},"labelValue":{"type":"string","nullable":true,"description":"Label value for associated nodes to the Node Pool (with key as in labelKey)","allOf":[{"$ref":"#/components/schemas/LabelValue"}]},"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"}}},"LabelKey":{"type":"string","minLength":1,"maxLength":253},"LabelValue":{"type":"string","pattern":"^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$","minLength":1,"maxLength":63},"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":"latest"},"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/saas/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":"latest"},"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/saas/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","nullable":true,"description":"Label key for associated nodes to the Node Pool (with value as in labelValue)","allOf":[{"$ref":"#/components/schemas/LabelKey"}]},"labelValue":{"type":"string","nullable":true,"description":"Label value for associated nodes to the Node Pool (with key as in labelKey)","allOf":[{"$ref":"#/components/schemas/LabelValue"}]},"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"}}},"LabelKey":{"type":"string","minLength":1,"maxLength":253},"LabelValue":{"type":"string","pattern":"^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$","minLength":1,"maxLength":63},"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":"latest"},"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/saas/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"},"gpuNetworkAccelerationDetected":{"type":"boolean","description":"Signals to all relevant parties about GPUNetworkAcceleration being detected in some nodepool's nodes"}}},"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"}}}}}}
```

## 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":"latest"},"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/saas/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":{"LegacyUpdateNodePoolRequest":{"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/LegacyPlacementStrategy"}}},"LegacyPlacementStrategy":{"properties":{"cpu":{"type":"string","enum":["spread","binpack"],"description":"scheduling strategy for cpu"},"gpu":{"type":"string","enum":["spread","binpack"],"description":"scheduling strategy for gpu"}}},"LegacyError":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"}}},"LegacyErrorInt32":{"required":["code","message"],"properties":{"code":{"type":"integer","format":"int32","minimum":100,"maximum":599},"message":{"type":"string"}}}}},"paths":{"/api/v1/clusters/{clusterId}/node-pools/{nodepoolId}":{"put":{"summary":"Update a Node Pool.","operationId":"legacy_update_nodepool","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,"tags":["NodePools"],"parameters":[{"name":"clusterId","in":"path","description":"Unique identifier of the cluster","required":true,"style":"simple","explode":false,"schema":{"type":"string","format":"uuid"}},{"$ref":"#/components/parameters/NodepoolId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyUpdateNodePoolRequest"}}},"required":true},"responses":{"202":{"description":"Node Pool update accepted."},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}}},"403":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}}},"404":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyErrorInt32"}}}},"503":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyErrorInt32"}}}}}}}}}
```

## 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":"latest"},"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/saas/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":{"LegacyError":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"}}},"LegacyErrorInt32":{"required":["code","message"],"properties":{"code":{"type":"integer","format":"int32","minimum":100,"maximum":599},"message":{"type":"string"}}}}},"paths":{"/api/v1/clusters/{clusterId}/node-pools/{nodepoolId}":{"delete":{"summary":"Delete a Node Pool by id.","operationId":"legacy_delete_nodepool","description":"Use to delete a node pool by Universally Unique Identifier (UUID). Deprecated, please use /api/v1/node-pools/{id} instead.","deprecated":true,"tags":["NodePools"],"parameters":[{"name":"clusterId","in":"path","description":"Unique identifier of the cluster","required":true,"style":"simple","explode":false,"schema":{"type":"string","format":"uuid"}},{"$ref":"#/components/parameters/NodepoolId"}],"responses":{"202":{"description":"Node Pool deletion accepted"},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}}},"403":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}}},"404":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyErrorInt32"}}}},"503":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyErrorInt32"}}}}}}}}}
```

## 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":"latest"},"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/saas/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":{"LegacyNodePoolLabelsRequest":{"properties":{"labelKey":{"type":"string","description":"key of node label for pool"},"labelValue":{"type":"string","description":"value of node label for pool"}}},"LegacyError":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"}}},"LegacyErrorInt32":{"required":["code","message"],"properties":{"code":{"type":"integer","format":"int32","minimum":100,"maximum":599},"message":{"type":"string"}}}}},"paths":{"/api/v1/clusters/{clusterId}/node-pools/{nodepoolId}/labels":{"put":{"summary":"Update labels of a Node Pool.","operationId":"legacy_update_nodepool_labels","description":"Use to update the labels of a node pool. Deprecated, please use PATCH /api/v1/node-pools/{id} instead.","deprecated":true,"tags":["NodePools"],"parameters":[{"name":"clusterId","in":"path","description":"Unique identifier of the cluster","required":true,"style":"simple","explode":false,"schema":{"type":"string","format":"uuid"}},{"$ref":"#/components/parameters/NodepoolId"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyNodePoolLabelsRequest"}}},"required":true},"responses":{"202":{"description":"Node Pool update accepted."},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}}},"403":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}}},"404":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyErrorInt32"}}}},"503":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyErrorInt32"}}}}}}}}}
```

## 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":"latest"},"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/saas/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":{"LegacyNodePool":{"allOf":[{"$ref":"#/components/schemas/LegacyNodePoolCreateRequest"},{"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"}}}]},"LegacyNodePoolCreateRequest":{"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/LegacyPlacementStrategy"}}},"LegacyPlacementStrategy":{"properties":{"cpu":{"type":"string","enum":["spread","binpack"],"description":"scheduling strategy for cpu"},"gpu":{"type":"string","enum":["spread","binpack"],"description":"scheduling strategy for gpu"}}},"LegacyError":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"}}},"LegacyErrorInt32":{"required":["code","message"],"properties":{"code":{"type":"integer","format":"int32","minimum":100,"maximum":599},"message":{"type":"string"}}}}},"paths":{"/api/v1/clusters/{clusterId}/node-pools":{"get":{"summary":"Get the cluster's Node Pools.","operationId":"legacy_get_nodepools","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,"tags":["NodePools"],"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/LegacyNodePool"}}}}},"403":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}}},"404":{"description":"The specified resource was not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyErrorInt32"}}}},"default":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}}}}}}}}
```

## 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":"latest"},"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/saas/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":{"LegacyNodePoolCreateRequest":{"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/LegacyPlacementStrategy"}}},"LegacyPlacementStrategy":{"properties":{"cpu":{"type":"string","enum":["spread","binpack"],"description":"scheduling strategy for cpu"},"gpu":{"type":"string","enum":["spread","binpack"],"description":"scheduling strategy for gpu"}}},"LegacyError":{"required":["code","message"],"properties":{"code":{"type":"integer","minimum":100,"maximum":599},"message":{"type":"string"}}}}},"paths":{"/api/v1/clusters/{clusterId}/node-pools":{"post":{"summary":"Create a Node Pool.","operationId":"legacy_create_nodepool","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,"tags":["NodePools"],"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/LegacyNodePoolCreateRequest"}}}},"responses":{"201":{"description":"Created"},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}}},"409":{"description":"conflict error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}}},"default":{"description":"unexpected error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyError"}}}}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://run-ai-docs.nvidia.com/api/organizations/nodepools.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
