# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. openapi: 3.1.0 info: title: NVIDIA Infra Controller REST API version: 1.5.0 summary: NVIDIA Infra Controller REST API is the centralized RESTful gateway to access NVIDIA Infra Controller service description: 'NVIDIA Infra Controller REST API allows users to create and manage resources e.g. VPC, Subnets, Instances across all connected NVIDIA Infra Controller datacenters, also referred to as Sites.' license: name: Apache-2.0 url: 'https://www.apache.org/licenses/LICENSE-2.0' contact: name: NVIDIA Infra Controller Dev Team servers: - url: 'https://nico-rest-api.nico.svc.cluster.local' description: Kubernetes Cluster tags: - name: Getting Started description: |- This section provides a quick overview of the API and how to get started. ### Authentication The first step is to authenticate using a JWT bearer token. Organization structures and roles depend on the authentication configuration used. For details on authentication, please consult the NICo REST `auth` module [README](https://github.com/NVIDIA/infra-controller-rest/tree/main/auth). ### API Version The next step is to be aware of the API version being used. The API version can be retrieved by calling the [Retrieve Metadata endpoint](#tag/Metadata/operation/get-metadata). In general, the API maintains backward compatibility with the previous versions. Any breaking changes are announced using a deprecation notice. Current and past deprecations are listed in the [Deprecations](#tag/Deprecations) section. ### Service Account Mode Depending on the auth configuration used, the NICo REST API may be configured in Service Account mode. In this mode, API users can act as both Provider and Tenant as part of the same organization. If this is the case, the user must first retrieve the Service Account by making a call to the [Retrieve Service Account endpoint](#tag/Service-Account/operation/get-current-service-account). For service accounts, the Tenant entity is initialized as a privileged Tenant with `targetedInstanceCreation` capability enabled. ### Provider or Tenant Mode If NICo REST API is not configured in Service Account mode, the user should retrieve the Infrastructure Provider by making a call to the [Retrieve Infrastructure Provider endpoint](#tag/Infrastructure-Provider/operation/get-current-infrastructure-provider) or the Tenant by making a call to the [Retrieve Tenant endpoint](#tag/Tenant/operation/get-current-tenant). In both cases, these calls initialize Provider and Tenant entities for the organization. All resources created are anchored to either the Provider or Tenant entity. Once the Provider and the Tenant are initialized, the user can create resources by making calls to the appropriate endpoints. ### Creating Site Level IP Blocks To utilize a NICo Site, the Provider or Service Account holder must create IP Blocks for each network overlay defined in NICo Core [Site configuration toml file](https://github.com/NVIDIA/infra-controller-core/blob/v0.5.8/deploy/files/nico-api/nico-api-site-config.toml#L30). To create an IP Block, the user must make a call to the [Create IP Block endpoint](#tag/IP-Block/operation/create-ipblock). > **Note:** From this point onwards, a brief outline is provided for the typical API call flows for various use cases. ### Typical API Call Flow for Service Account - Retrieve available Sites using the [Retrieve All Sites endpoint](#tag/Site/operation/get-all-site) and choose a Site to create resources in. For _Disconnected_ NICo installations where NICo REST is deployed alongside NICo Core, typically there will be a single Site available. - For each Site IP Block, create a Network Allocation for the Tenant entity using the [Create Allocation endpoint](#tag/Allocation/operation/create-allocation) using the full prefix length. This will create a Tenant IP Block for each Site IP Block. - Creating an Allocation will create the Tenant in NICo Core. - Create a VPC using the [Create VPC endpoint](#tag/VPC/operation/create-vpc). - Create a VPC Prefix or Subnet referencing the VPC and a Tenant IP Block - If the Site supports Native Networking (FNN), create a VPC Prefix using the [Create VPC Prefix endpoint](#tag/VPC-Prefix/operation/create-vpc-prefix). Otherwise the user should create a Subnet using the [Create Subnet endpoint](#tag/Subnet/operation/create-subnet). - Create an Operating System using the [Create Operating System endpoint](#tag/Operating-System/operation/create-operating-system) specifying iPXE script and user data. - Retrieve available Machines on Site using the [Retrieve All Machines endpoint](#tag/Machine/operation/get-all-machine) - Create an Instance specifying the VPC, VPC Prefix or Subnet, Operating System, and Machine ### Typical API Call Flow for Provider - Create a Tenant Account using the [Create Tenant Account endpoint](#tag/Tenant-Account/operation/create-tenant-account). Provider must know the Tenant org name. - Once the Tenant has accepted the Tenant Account, the Provider can allocate resources to the Tenant. - Retrieve available Sites using the [Retrieve All Sites endpoint](#tag/Site/operation/get-all-site) and choose a Site to create resources in. - Create an Instance Type using the [Create Instance Type endpoint](#tag/Instance-Type/operation/create-instance-type) - Retrieve available Machines on Site using the [Retrieve All Machines endpoint](#tag/Machine/operation/get-all-machine) - Update a Machine's Instance Type using the [Update Machine endpoint](#tag/Machine/operation/update-machine) or assign multiple Machines to an Instance Type using the [Create Instance Type/Machine Association endpoint](#tag/Instance-Type/operation/create-instance-type-machine-association) - Create a Compute Allocation for Tenant using the [Create Compute Allocation endpoint](#tag/Allocation/operation/create-allocation) referencing the Instance Type - Creating any type of Allocation for a Tenant will create the Tenant in NICo Core. - Create a Network Allocation for Tenant using the [Create Allocation endpoint](#tag/Allocation/operation/create-allocation) referencing a Site IP Block - Creating a Network Allocation will create a Tenant IP Block ### Typical API Call Flow for Tenant - Accept the Tenant Account using the [Update Tenant Account endpoint](#tag/Tenant-Account/operation/update-tenant-account). - Retrieve available Sites using the [Retrieve All Sites endpoint](#tag/Site/operation/get-all-site) and choose a Site to create resources in. Any Site where the Tenant has an Allocation will be returned. - Create a VPC using the [Create VPC endpoint](#tag/VPC/operation/create-vpc). - Retrieve available Site IP Blocks using the [Retrieve All IP Blocks endpoint](#tag/IP-Block/operation/get-all-ipblock). Any IP Block for which the Tenant has received a Network Allocation from the Provider will be returned. - Create a VPC Prefix or Subnet referencing the VPC and a Tenant IP Block - Site supports Native Networking (FNN), create a VPC Prefix using the [Create VPC Prefix endpoint](#tag/VPC-Prefix/operation/create-vpc-prefix) - Otherwise the user should create a Subnet using the [Create Subnet endpoint](#tag/Subnet/operation/create-subnet) - Create an Operating System using the [Create Operating System endpoint](#tag/Operating-System/operation/create-operating-system) specifying iPXE script and user data. - Retrieve available Instance Types using the [Retrieve All Instance Types endpoint](#tag/Instance-Type/operation/get-all-instance-type). Any Instance Type for which the Tenant has received a Compute Allocation from the Provider will be returned. - Create an Instance specifying the VPC, VPC Prefix or Subnet, Operating System, and Instance Type - name: Service Account description: |- When API service is configured in Service Account mode, API users can act as both Provider and Tenant. For service accounts, the Tenant entity is initialized as a privileged Tenant with `targetedInstanceCreation` capability enabled. - name: Infrastructure Provider description: |- Infrastructure Provider is the anchor entity for an organization that owns and manages Site resources. Deprecation history: - `name` attribute was deprecated and was removed on August 17th, 2023 0:00 UTC. Please use `orgDisplayName` instead. - `POST /org/:orgName/nico/infrastructure-provider` endpoint was deprecated and was removed on August 17th, 2023 0:00 UTC. Infrastructure Providers are automatically created when retrieved by a Provider Admin. - `PATCH /org/:orgName/nico/infrastructure-provider/current` endpoint was deprecated and was removed on August 17th, 2023 0:00 UTC. Infrastructure Provider details are populated from Org information and cannot be updated by the user. - name: Tenant description: |- Tenant is the anchor entity for an organization that consumes Network and Compute resources on a Site. Deprecation history: - `name` attribute was deprecated and was removed on August 17th, 2023. Please use `orgDisplayName` instead. - `enableSSHAccess` attribute was deprecated and was removed on August 17th, 2023 0:00 UTC. Please use 'isSerialConsoleSSHKeysEnabled' attribute of Site instead. - `POST /org/:orgName/nico/tenant` endpoint was deprecated and was removed on August 17th, 2023 0:00 UTC. Tenants are automatically created when retrieved by a Tenant Admin. - `PATCH /org/:orgName/nico/tenant/current` endpoint was deprecated and was removed on August 17th, 2023 0:00 UTC. Tenant details are populated from Org information and cannot be updated by the user. - name: Tenant Account description: Tenant Account connects a Tenant with an Infrastructure Provider. It represents/contains any information pertaining to their relationship. - name: Site description: |- Site is a datacenter that contains physical hardware and networking resources. All resources created by Provider or Tenant are directly or indirectly anchored to the Site object. Deprecation history: - `rackLevelAdministration` capability attribute was deprecated in favor of `flow` and was removed on May 13th, 2026 0:00 UTC. Please use `flow` instead. - `isRackLevelAdministrationEnabled` query parameter was deprecated in favor of `isFlowEnabled` and was removed on May 13th, 2026 0:00 UTC. Please use `isFlowEnabled` instead. - name: Allocation description: |- Allocations are the mechanism by which Provider can delegate Network and Compute resources to Tenant. - name: VPC description: |- VPC defines the networking isolation boundary for Tenant's Instances. - name: VPC Peering description: |- VPC Peering allows Instances in one VPC to communicate with Instances in another VPC on the same Site. - name: VPC Prefix description: |- VPC Prefix is a network prefix belonging to an IP Block allocated to a Tenant. Tenant can use VPC Prefixes to enable network connectivity between their Instances. Only Sites that support Native Networking (FNN) offer VPC Prefix management. - name: Subnet description: |- Subnet is a network prefix belonging to an IP Block allocated to a Tenant. Tenant can use Subnets to enable network connectivity between their Instances. Subnets are used on Sites that do not support Native Networking (FNN). Deprecation history: - `ipBlockSize` was deprecated in favor of `prefixLength` and was removed on April 15th, 2023 0:00 UTC. Please use `prefixLength` instead. - name: Expected Machine description: |- Expected Machine identifies a Machine that is expected to be discovered at a Site. Infrastructure Providers can pre-register Expected Machines using BMC credentials and serial numbers to help with Machine discovery and ingestion. - name: Expected Power Shelf description: |- Expected Power Shelf identifies a Power Shelf that is expected to be discovered at a Site. Infrastructure Providers can pre-register Expected Power Shelves using BMC credentials and serial numbers to help with Power Shelf discovery and ingestion. - name: Expected Rack description: |- Expected Rack identifies a Rack that is expected to be discovered at a Site. Infrastructure Providers can pre-register Expected Racks with an operator-supplied rack identifier and a Rack Profile reference to help with Rack discovery and ingestion. Chassis identity and physical location information are conveyed via well-known label keys (`chassis.manufacturer`, `chassis.serial-number`, `chassis.model`, `location.region`, `location.datacenter`, `location.room`, `location.position`). - name: Expected Switch description: |- Expected Switch identifies a Switch that is expected to be discovered at a Site. Infrastructure Providers can pre-register Expected Switches using BMC, NvOS credentials and serial numbers to help with Switch discovery and ingestion. - name: SKU description: |- SKU (Stock Keeping Unit) defines one or more hardware configurations or Machine Bill of Materials (BOM). SKUs are automatically derived from machine hardware characteristics and used to group similar machines. SKUs are read-only and managed by the system. - name: InfiniBand Partition description: |- InfiniBand (IB) is a high-performance, low-latency networking standard designed for interconnecting servers and storage in HPC (High-Performance Computing) and AI systems, utilizing RDMA (Remote Direct Memory Access) to reduce CPU overhead. InfiniBand Partitions are used to group Machines into logical partitions for network isolation and load distribution. - name: NVLink Logical Partition description: |- NVLink Logical Partitions are used to group GPUs into logical partitions for shared memory and low-latency direct communication between GPUs. - name: Operating System description: |- Operating Systems in NICo are typically iPXE scripts that are used to boot Machines. - name: Instance Type description: |- Instance Types allow grouping Machines into a pool defined by their capabilities. Providers can then allocate a portion of the Instance Type pool to a Tenant. Deprecation history: - `includeMachineAssociation` was deprecated in favor of `includeMachineAssignment` and was removed on July 26th, 2023 0:00 UTC. Please use `includeMachineAssignment` instead. - `displayName` attribute was deprecated and removed on October 30, 2024 0:00 UTC. Please update your usage accordingly. - name: Instance description: |- Instance is a Machine provisioned with an Operating System by a Tenant and attached to one or more VPC Prefixes or Subnets. Deprecation history: - `sshUrl` was deprecated in favor of `serialConsoleUrl` and was removed on April 25th, 2023 0:00 UTC. Please use `serialConsoleUrl` instead. - `instanceSubnets` was deprecated in favor of `interfaces` and was removed on May 10th, 2023 0:00 UTC. Please use `interfaces` instead. - `sshkeygroups` was deprecated in favor of `sshKeyGroups` and was removed on September 4th, 2025 0:00 UTC. Please use `sshKeyGroups` instead. - name: Machine description: |- Machine is a physical server that contains CPUs, GPUs, memory, storage, and networking hardware. Machines are the physical building blocks of a Site. - name: Machine Capability description: |- Machine Capability defines the hardware capabilities of a Machine. Machine Capabilities can be used to group Machines into Instance Types. - name: Rack description: |- Rack is a physical enclosure that contains a number of Machines. Racks are the physical building blocks of a Site. - name: Tray description: |- Tray represents a component within a Rack. - name: Network Security Group description: |- Network Security Group is a security policy that controls the traffic flowing between Instances. - name: IP Block description: |- IP Block is a contiguous block of IP addresses defined by a prefix and prefix length. It can be used by the Provider to describe the overlay network of a particular Site. Providers can also use Allocations to delegate portions of these IP Blocks to Tenants. Deprecation history: - `blockSize` was deprecated in favor of `prefixLength` and was removed on April 15th, 2023 0:00 UTC. Please use `prefixLength` instead. - name: DPU Extension Service description: |- DPU Extension Service allows users to run custom services in the DPUs of their Instances. Currently K8s pods are the only supported service type. - name: SSH Key Group description: |- SSH Key Groups allow grouping several SSH Keys together so they can be synced to Sites and used to access the Serial Console of Instances. - name: SSH Key description: |- SSH Key is a public key that can be used to access the Serial Console of an Instance. - name: User description: |- User is a logical entity that identifies individuals operating on behalf of an organization. - name: Audit description: |- Audit is a record of actions taken by users on the API. - name: Metadata description: |- Metadata describes various system level attributes of the API service. - name: Deprecations description: |- NICo REST API maintains backward compatibility with the previous versions. Any breaking changes are announced using deprecation notices. Endpoints that have deprecations will be grouped here. Following deprecations are in effect or slated to be effective in future: Infrastructure Provider: - `name` attribute was deprecated and was removed on August 17th, 2023 0:00 UTC. Please use `orgDisplayName` instead. - `POST /org/:orgName/nico/infrastructure-provider` endpoint was deprecated and was removed on August 17th, 2023 0:00 UTC. Infrastructure Providers are automatically created when retrieved by a Provider Admin. - `PATCH /org/:orgName/nico/infrastructure-provider/current` endpoint was deprecated and was removed on August 17th, 2023 0:00 UTC. Infrastructure Provider details are populated from Org information and cannot be updated by user. Tenant: - `name` attribute was deprecated and was removed on August 17th, 2023. Please use `orgDisplayName` instead. - `enableSSHAccess` attribute was deprecated and was removed on August 17th, 2023 0:00 UTC. Please use 'isSerialConsoleSSHKeysEnabled' attribute of Site instead. - `POST /org/:orgName/nico/tenant` endpoint was deprecated and was removed on August 17th, 2023 0:00 UTC. Tenants are automatically created when retrieved by a Tenant Admin. - `PATCH /org/:orgName/nico/tenant/current` endpoint was deprecated and was removed on August 17th, 2023 0:00 UTC. Tenant details are populated from Org information and cannot be updated by user. Instance Type: - `includeMachineAssociation` was deprecated in favor of `includeMachineAssignment` and was removed on July 26th, 2023 0:00 UTC. Please use `includeMachineAssignment` instead. - `displayName` attribute was deprecated and removed on October 30, 2024 0:00 UTC. Please update your usage accordingly. Instance: - `sshUrl` was deprecated in favor of `serialConsoleUrl` and was removed on April 25th, 2023 0:00 UTC. Please use `serialConsoleUrl` instead. - `instanceSubnets` was deprecated in favor of `interfaces` and was removed on May 10th, 2023 0:00 UTC. Please use `interfaces` instead. - `sshkeygroups` was deprecated in favor of `sshKeyGroups` and was removed on September 4th, 2025 0:00 UTC. Please use `sshKeyGroups` instead. IP Block: - `blockSize` was deprecated in favor of `prefixLength` and was removed on April 15th, 2023 0:00 UTC. Please use `prefixLength` instead. Subnet: - `ipBlockSize` was deprecated in favor of `prefixLength` and was removed on April 15th, 2023 0:00 UTC. Please use `prefixLength` instead. Site: - `rackLevelAdministration` capability attribute was deprecated in favor of `flow` and was removed on May 13th, 2026 0:00 UTC. Please use `flow` instead. - `isRackLevelAdministrationEnabled` query parameter was deprecated in favor of `isFlowEnabled` and was removed on May 13th, 2026 0:00 UTC. Please use `isFlowEnabled` instead. paths: '/v2/org/{org}/nico/service-account/current': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve Service Account status for current org responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ServiceAccount' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-current-service-account description: |- Retrieve Service Account status for current org API service must be configured for Service Account access at the time of deployment. It cannot be enabled or disabled via API. parameters: [] tags: - Service Account '/v2/org/{org}/nico/infrastructure-provider/current': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve Infrastructure Provider for current Org responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/InfrastructureProvider' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 org: rf43bbtnb9c5 orgDisplayName: Dell Corporation created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-current-infrastructure-provider description: |- Retrieve Infrastructure Provider entity for current Org. User must have authorization role with `PROVIDER_ADMIN` suffix. parameters: [] tags: - Infrastructure Provider '/v2/org/{org}/nico/infrastructure-provider/current/stats': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve Stats for current Infrastructure Provider responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/InfrastructureProviderStats' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-current-infrastructure-provider-stats description: |- Retrieve stats for current Infrastructure Provider. User must have authorization role with `PROVIDER_ADMIN` suffix. parameters: [] tags: - Infrastructure Provider '/v2/org/{org}/nico/tenant/current': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve Tenant for current Org tags: - Tenant responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Tenant' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 org: qygdmg8oqik8 orgDisplayName: Echo Corporation created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' capabilities: targetedInstanceCreation: false '403': $ref: '#/components/responses/ForbiddenError' operationId: get-current-tenant description: |- Retrieve Tenant entity for current Org. User must have authorization role with `TENANT_ADMIN` suffix. parameters: [] '/v2/org/{org}/nico/tenant/current/stats': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve Stats for current Tenant tags: - Tenant responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/TenantStats' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-current-tenant-stats description: |- Retrieve stats for current Tenant. User must have authorization role with `TENANT_ADMIN` suffix. parameters: [] '/v2/org/{org}/nico/tenant/account': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all Tenant Accounts tags: - Tenant Account responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/TenantAccount' examples: example-1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf infrastructureProviderOrg: xskkpgqpeakn tenantId: f97df110-f4de-492e-8849-4a6af68026b0 tenantOrg: rf43bbtnb9c5 tenantContact: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 email: janed@nvidia.com firstName: Jane lastName: Doe created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' allocationCount: 0 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-tenant-account description: |- Retrieve all Tenant Accounts. Either `infrastructureProviderId` or `tenantId` query param must be specified. If `infrastructureProviderId` query param is provided, then org must have an Infrastructure Provider entity and its ID should match the query param value. User must have authorization role with `PROVIDER_ADMIN` suffix. If `tenantId` query param is provided, then org must have a Tenant entity and its ID should match the query param value. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string format: uuid in: query name: infrastructureProviderId description: Filter TenantAccounts by Infrastructure Provider ID - schema: type: string format: uuid in: query name: tenantId description: Filter TenantAccounts by Tenant ID - schema: type: string in: query name: query description: 'Search string to filter Tenant Accounts by account number, tenant org, or tenant org display name' - schema: type: string enum: - InfrastructureProvider - Tenant in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC - ACCOUNT_NUMBER_ASC - ACCOUNT_NUMBER_DESC - TENANT_ORG_NAME_ASC - TENANT_ORG_NAME_DESC - TENANT_ORG_DISPLAY_NAME_ASC - TENANT_ORG_DISPLAY_NAME_DESC - TENANT_CONTACT_EMAIL_ASC - TENANT_CONTACT_EMAIL_DESC - TENANT_CONTACT_FULL_NAME_ASC - TENANT_CONTACT_FULL_NAME_DESC in: query name: orderBy description: Ordering for pagination query post: summary: Create Tenant Account operationId: create-tenant-account responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/TenantAccount' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf infrastructureProviderOrg: xskkpgqpeakn tenantId: null tenantOrg: rf43bbtnb9c5 tenantContact: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 email: janed@nvidia.com firstName: Jane lastName: Doe created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' allocationCount: 0 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Create a Tenant Account. Org must have an Infrastructure Provider entity and its ID must match the Infrastructure Provider ID in request data. User must have authorization role with `PROVIDER_ADMIN` suffix Infrastructure Provider can create a Tenant Account by specifying the Tenant's UUID or Tenant's org name. This will set the status of the Tenant Account to "Invited". Then the Tenant can view this account information and are able to confirm/accept the account by updating the Tenant Account. requestBody: content: application/json: schema: $ref: '#/components/schemas/TenantAccountCreateRequest' examples: example-1: value: infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf tenantOrg: rf43bbtnb9c5 tags: - Tenant Account '/v2/org/{org}/nico/tenant/account/{accountId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: accountId in: path required: true description: ID of the Tenant Account get: summary: Retrieve Tenant Account tags: - Tenant Account responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/TenantAccount' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf infrastructureProviderOrg: xskkpgqpeakn tenantId: f97df110-f4de-492e-8849-4a6af68026b0 tenantOrg: rf43bbtnb9c5 tenantContact: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 email: janed@nvidia.com firstName: Jane lastName: Doe created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' allocationCount: 2 status: Ready statusHistory: - status: Ready message: 'Account ready, Tenant accepted invite' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - status: Invited message: 'Request received, pending Tenant acceptance' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-tenant-account description: |- Retrieve a Tenant Account by ID Either `infrastructureProviderId` or `tenantId` query param must be specified. If `infrastructureProviderId` query param is provided, then org must have an Infrastructure Provider entity and its ID should match the query param value. User must have authorization role with `PROVIDER_ADMIN` suffix. If `tenantId` query param is provided, then org must have a Tenant entity and its ID should match the query param value. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string format: uuid in: query name: infrastructureProviderId description: Filter Tenant Accounts by Infrastructure Provider ID - schema: type: string format: uuid in: query name: tenantId description: Filter Tenant Accounts by Tenant ID - schema: type: string enum: - InfrastructureProvider - Tenant in: query name: includeRelation description: Related entity to expand patch: summary: Update Tenant Account operationId: update-tenant-account responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/TenantAccount' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf infrastructureProviderOrg: xskkpgqpeakn tenantId: f97df110-f4de-492e-8849-4a6af68026b0 tenantOrg: rf43bbtnb9c5 tenantContact: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 email: janed@nvidia.com firstName: Jane lastName: Doe created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' allocationCount: 0 status: Ready statusHistory: - status: Ready message: 'Account ready, Tenant accepted invite' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - status: Invited message: 'Request received, pending Tenant acceptance' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Tenant Account description: |- Update a Tenant Account. Can be used to accept an invitation sent by Infrastructure Provider. Org must have a tenant entity whose ID matches the `tenantId` of the Tenant Account object. User must have authorization role with `TENANT_ADMIN` suffix. Can only update a TenantAccount that has `Invited` status. requestBody: content: application/json: schema: $ref: '#/components/schemas/TenantAccountUpdateRequest' examples: example-1: value: {} description: 'No params needed, an empty request body will suffice.' delete: summary: Delete Tenant Account operationId: delete-tenant-account responses: '202': description: Accepted '403': $ref: '#/components/responses/ForbiddenError' description: |- Delete a Tenant Account by ID. Org must have an Infrastructure Provider entity, specified Tenant Account must be created by said Provider. Requesting user must have `PROVIDER_ADMIN` role. Tenant cannot delete a Tenant Account. tags: - Tenant Account '/v2/org/{org}/nico/site': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all Sites tags: - Site responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Site' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-site description: |- Retrieve all Sites for org. User must have authorization role with `PROVIDER_ADMIN` or `TENANT_ADMIN` suffix. `infrastructureProviderId` or `tenantId` query param may be required for older API versions. parameters: - schema: type: string format: uuid in: query name: infrastructureProviderId description: Filter Sites by Infrastructure Provider ID - schema: type: string format: uuid in: query name: tenantId description: Filter Sites by Tenant ID - schema: type: string in: query name: status description: Filter Sites by Status. Can be specified multiple times to filter on more than one status - schema: type: boolean in: query name: isNativeNetworkingEnabled description: Filter Sites by native networking enabled flag. Requires Provider Admin role. - schema: type: boolean in: query name: isNetworkSecurityGroupEnabled description: Filter Sites by network security group enabled flag. Requires Provider Admin role. - schema: type: boolean in: query name: isNVLinkPartitionEnabled description: Filter Sites by NVLink partitioning enabled flag. Requires Provider Admin role. - schema: type: boolean in: query name: isFlowEnabled description: Filter Sites by NICo Flow enabled flag. Requires Provider Admin role. - schema: type: boolean in: query name: includeMachineStats description: Include a breakdown of Machine counts by life-cycle status and health. Requires Provider Admin role. - schema: type: string in: query name: query description: 'Search for matches across all Sites. Input will be matched against name, description, location, contact, and status fields' - schema: type: string enum: - InfrastructureProvider in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - NAME_ASC - NAME_DESC - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC - DESCRIPTION_ASC - DESCRIPTION_DESC - LOCATION_ASC - LOCATION_DESC - CONTACT_ASC - CONTACT_DESC in: query name: orderBy description: Ordering for pagination query post: summary: Create Site operationId: create-site responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/Site' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Create a Site for the org. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. Tenants cannot create Sites. requestBody: content: application/json: schema: $ref: '#/components/schemas/SiteCreateRequest' examples: example-1: value: name: San Jose Central 4 description: Datacenter serving San Jose central region location: city: San Jose state: CA country: USA contact: email: johndoe@nvidia.com tags: - Site '/v2/org/{org}/nico/site/{siteId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: siteId in: path required: true description: ID of the Site get: summary: Retrieve Site tags: - Site responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Site' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-site description: |- Retrieve a specific Site by ID. User must have authorization role with `PROVIDER_ADMIN` or `TENANT_ADMIN` suffix. Access is granted if: - The Site is owned by the org's Infrastructure Provider - The org's Tenant has an Allocation for Site - The org's Tenant is privileged and has Account with Site's Provider parameters: [] patch: summary: Update Site operationId: update-site responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Site' tags: - Site description: |- Update a specific Site User must have authorization role with `PROVIDER_ADMIN` suffix. Infrastructure Provider updating the Site must be the owner of the Site. At present, there are no other Site specific configurations modifiable by Tenant. requestBody: content: application/json: schema: $ref: '#/components/schemas/SiteUpdateRequest' examples: example-1: value: name: San Jose Central No.4 description: Datacenter 4 serving central San Jose renewRegistrationToken: true serialConsoleHostname: sol.nico.acme.com location: city: San Jose state: CA country: USA contact: email: johndoe@nvidia.com example-2: value: isSerialConsoleSSHKeysEnabled: true contact: email: janedoe@nvidia.com delete: summary: Delete Site operationId: delete-site responses: '202': description: Deletion request was accepted tags: - Site description: |- Delete a specific Site Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. Site can only be deleted if all Allocations have been deleted. parameters: - schema: type: boolean in: query name: purgeMachines description: Scrub all Machine data associated with this Site to re-pair '/v2/org/{org}/nico/site/{siteId}/status-history': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: siteId in: path required: true description: ID of the Site get: summary: Retrieve Site status history tags: - Site responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/StatusDetail' examples: Example 1: value: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-site-status-history description: |- Retrieve a specific Site status history User must have authorization role with `PROVIDER_ADMIN` or `TENANT_ADMIN` suffix. Access is granted if: - The Site is owned by the org's Infrastructure Provider - The org's Tenant has an Allocation for Site - The org's Tenant is privileged and has Account with Site's Provider parameters: - schema: type: integer in: query name: pageNumber description: Page number for pagination query - schema: type: integer in: query name: pageSize description: Page size for pagination query - schema: type: string in: query name: orderBy description: Ordering for pagination query '/v2/org/{org}/nico/allocation': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all Allocations tags: - Allocation responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Allocation' examples: example-1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: Echo Studios description: Echo Studios resource allocation in SJC4 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' allocationConstraints: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 allocationId: 9ec871ce-3363-4de2-8f79-062881067628 resourceType: InstanceType resourceTypeId: a59ee688-b5e5-4606-9891-f4a605edacd3 constraintType: Reserved constraintValue: 10 derivedResourceId: null instanceType: name: x3.large infrastructureProviderId: 63c29416-8833-4eaf-9e1c-7c0173cc3150 siteId: c9f4f276-6f7a-4209-953c-2b9870ce7cc1 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-allocation description: |- Retrieve all Allocations for the org. Provider and Tenant roles are inferred from the org's membership. User must have authorization role with `PROVIDER_ADMIN` or `TENANT_ADMIN` suffix. Results are returned from both Provider and Tenant perspectives when the org has both roles. parameters: - schema: type: string format: uuid in: query name: infrastructureProviderId deprecated: true description: Filter Allocations by Infrastructure Provider ID. - schema: type: string format: uuid in: query name: tenantId description: Filter Allocations by Tenant ID. - schema: type: string format: uuid in: query name: siteId description: Filter Allocations by Site ID. Can be specified multiple times to filter on more than one Site ID. - schema: type: string in: query name: id description: Filter Allocations by ID. Can be specified multiple times to filter on more than one ID. - schema: type: string enum: - InstanceType - IPBlock in: query name: resourceType description: Filter Allocations by Constraint Resource Type. Can be specified multiple times to filter on more than one Constraint Resource Type. - schema: type: string in: query name: status description: Filter Allocations by Status. Can be specified multiple times to filter on more than one Status. - schema: type: string in: query name: resourceTypeId description: Filter Allocations by Constraint Resource Type ID. Can be specified multiple times to filter on more than one Constraint Resource Type ID. - schema: type: string enum: - Reserved - OnDemand - Preemptible in: query name: constraintType description: Filter Allocations by Constraint Type. Can be specified multiple times to filter on more than one Constraint Type. - schema: type: integer in: query name: constraintValue description: Filter Allocations by Constraint Value. Can be specified multiple times to filter on more than one Constraint Value. - schema: type: string in: query name: query description: 'Search for matches across all Sites. Input will be matched against name, description and status fields' - schema: type: string enum: - InfrastructureProvider - Tenant - Site in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - NAME_ASC - NAME_DESC - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC - SITE_NAME_ASC - SITE_NAME_DESC - TENANT_ORG_DISPLAY_NAME_ASC - TENANT_ORG_DISPLAY_NAME_DESC - INSTANCE_TYPE_NAME_ASC - INSTANCE_TYPE_NAME_DESC - IP_BLOCK_NAME_ASC - IP_BLOCK_NAME_DESC - CONSTRAINT_VALUE_ASC - CONSTRAINT_VALUE_DESC in: query name: orderBy description: Ordering for pagination query post: summary: Create Allocation operationId: create-allocation responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/Allocation' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: Echo Studios description: Echo Studios resource allocation in SJC4 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' allocationConstraints: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 allocationId: 9ec871ce-3363-4de2-8f79-062881067628 resourceType: InstanceType resourceTypeId: bd5a0240-eb62-4bff-91f7-335e6bb86459 constraintType: Reserved constraintValue: 10 derivedResourceId: null created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Create an Allocation for the org. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. To successfully create a compute Allocation, there must be enough unallocated Machines associated with the Instance Type to satisfy the constraint value. For network Allocation, the source site-level IP Block must have an available prefix with length equal to constraint value. requestBody: content: application/json: schema: $ref: '#/components/schemas/AllocationCreateRequest' examples: example-1: value: name: Echo Studios description: Echo Studios resource allocation in SJC4 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 allocationConstraints: - resourceType: InstanceType resourceTypeId: bd5a0240-eb62-4bff-91f7-335e6bb86459 constraintType: Reserved constraintValue: 10 tags: - Allocation '/v2/org/{org}/nico/allocation/{allocationId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: allocationId in: path description: ID of the Allocation required: true get: summary: Retrieve Allocation tags: - Allocation responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Allocation' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: Echo Studios description: Echo Studios resource allocation in SJC4 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' allocationConstraints: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 allocationId: 9ec871ce-3363-4de2-8f79-062881067628 resourceType: InstanceType resourceTypeId: a59ee688-b5e5-4606-9891-f4a605edacd3 constraintType: Reserved constraintValue: 10 derivedResourceId: null instanceType: name: x3.large infrastructureProviderId: 63c29416-8833-4eaf-9e1c-7c0173cc3150 siteId: c9f4f276-6f7a-4209-953c-2b9870ce7cc1 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-allocation description: |- Retrieve Allocation by ID Provider and Tenant roles are inferred from the org's membership. Allocation must belong to the Provider or Tenant associated with the org. User must have authorization role with `PROVIDER_ADMIN` or `TENANT_ADMIN` suffix. parameters: - schema: type: string format: uuid in: query name: infrastructureProviderId deprecated: true description: Filter Allocations by Infrastructure Provider ID. - schema: type: string format: uuid in: query name: tenantId deprecated: true description: Filter Allocations by Tenant ID. - schema: type: string enum: - InfrastructureProvider - Tenant - Site in: query name: includeRelation description: Related entity to expand delete: summary: Delete Allocation operationId: delete-allocation responses: '202': description: Accepted description: |- Delete an Allocation by ID. Org must have an Infrastructure Provider entity, specified Allocation must be created by said Provider. Requesting user must have `PROVIDER_ADMIN` role. Tenant management of Allocation is not supported in MVP. tags: - Allocation patch: summary: Update Allocation operationId: update-allocation responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Allocation' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: Echo Studios Compute description: Echo Studios compute resource allocation in SJC4 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' allocationConstraints: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 allocationId: 9ec871ce-3363-4de2-8f79-062881067628 resourceType: InstanceType resourceTypeId: a59ee688-b5e5-4606-9891-f4a605edacd3 constraintType: Reserved constraintValue: 10 derivedResourceId: null created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' description: |- Update an existing Allocation Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. Provider must own the Allocation. Tenant management of Allocation is not supported in MVP. tags: - Allocation requestBody: content: application/json: schema: $ref: '#/components/schemas/AllocationUpdateRequest' examples: example-1: value: name: Echo Studios Compute description: Echo Studios compute resource allocation in SJC4 '/v2/org/{org}/nico/allocation/{allocationId}/constraint': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: allocationId in: path required: true description: ID of the Allocation get: summary: Retrieve all Allocation Constraints responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/AllocationConstraint' examples: example-1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 allocationId: 9ec871ce-3363-4de2-8f79-062881067628 resourceType: InstanceType resourceTypeId: a59ee688-b5e5-4606-9891-f4a605edacd3 constraintType: Reserved constraintValue: 10 derivedResourceId: null instanceType: name: x3.large infrastructureProviderId: 63c29416-8833-4eaf-9e1c-7c0173cc3150 siteId: c9f4f276-6f7a-4209-953c-2b9870ce7cc1 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-allocation-constraint description: |- Retrieve all Allocation Constraints for a given Allocation ID. If org has an Infrastructure Provider entity, then specified Allocation must have been created by the Provider and requesting user must have `PROVIDER_ADMIN` role. If org does not have an Infrastructure Provider entity but has a Tenant entity, then specified Allocation must belong to the Tenant and requesting user must have `TENANT_ADMIN` role. parameters: - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - RESOURCE_TYPE_ASC - RESOURCE_TYPE_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query tags: - Allocation post: summary: Create Allocation Constraint operationId: create-allocation-constraint responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/AllocationConstraint' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 allocationId: 9ec871ce-3363-4de2-8f79-062881067628 resourceType: InstanceType resourceTypeId: a59ee688-b5e5-4606-9891-f4a605edacd3 constraintType: Reserved constraintValue: 10 derivedResourceId: null instanceType: name: x3.large infrastructureProviderId: 63c29416-8833-4eaf-9e1c-7c0173cc3150 siteId: c9f4f276-6f7a-4209-953c-2b9870ce7cc1 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Create an Allocation Constraint for a given Allocation ID. Org must have an Infrastructure Provider entity and specified Allocation must have been created by the Provider. User must have authorization role with `PROVIDER_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/AllocationConstraintCreateRequest' examples: example-1: value: resourceType: InstanceType resourceTypeId: bd5a0240-eb62-4bff-91f7-335e6bb86459 constraintType: Reserved constraintValue: 10 tags: - Allocation '/v2/org/{org}/nico/allocation/{allocationId}/constraint/{allocationConstraintId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: allocationId in: path required: true description: ID of the Allocation - schema: type: string format: uuid name: allocationConstraintId in: path required: true description: ID of the Allocation Constraint get: summary: Retrieve Allocation Constraint tags: - Allocation responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/AllocationConstraint' examples: example-1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 allocationId: 9ec871ce-3363-4de2-8f79-062881067628 resourceType: InstanceType resourceTypeId: a59ee688-b5e5-4606-9891-f4a605edacd3 constraintType: Reserved constraintValue: 10 derivedResourceId: null instanceType: name: x3.large infrastructureProviderId: 63c29416-8833-4eaf-9e1c-7c0173cc3150 siteId: c9f4f276-6f7a-4209-953c-2b9870ce7cc1 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-allocation-constraint description: |- Retrieve an Allocation Constraint for a given Allocation ID. If org has an Infrastructure Provider entity, then specified Allocation must have been created by the Provider and requesting user must have `PROVIDER_ADMIN` role. If org does not have an Infrastructure Provider entity but has a Tenant entity, then specified Allocation must belong to the Tenant and requesting user must have `TENANT_ADMIN` role. parameters: [] patch: summary: Update Allocation Constraint operationId: update-allocation-constraint responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AllocationConstraint' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 allocationId: 9ec871ce-3363-4de2-8f79-062881067628 resourceType: InstanceType resourceTypeId: a59ee688-b5e5-4606-9891-f4a605edacd3 constraintType: Reserved constraintValue: 20 derivedResourceId: null instanceType: name: x3.large infrastructureProviderId: 63c29416-8833-4eaf-9e1c-7c0173cc3150 siteId: c9f4f276-6f7a-4209-953c-2b9870ce7cc1 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' description: | Update an existing Allocation Constraint by ID Org must have an Infrastructure Provider. Specified Allocation must have been created by the Provider and requesting user must have `PROVIDER_ADMIN` role. Modifying allocations may not be possible if Tenant has started utilizing resources from this allocation. In case of InstanceType resource, `constraintValue` can be incremented anytime, but not decremented if it requires decommissioning Tenant resources. In case of IPBlock resource, `constraintValue` can not be modified if Tenant resources are using IPs from the block. requestBody: content: application/json: schema: $ref: '#/components/schemas/AllocationConstraintUpdateRequest' examples: example-1: value: constraintValue: 20 tags: - Allocation delete: summary: Delete Allocation Constraint operationId: delete-allocation-constraint responses: '202': description: Accepted description: | Delete an existing Allocation Constraint by ID Org must have an Infrastructure Provider. Specified Allocation must have been created by the Provider and requesting user must have `PROVIDER_ADMIN` role. tags: - Allocation '/v2/org/{org}/nico/ipblock': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all IP Blocks tags: - IP Block responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/IpBlock' examples: example-1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: Public Network Overlay for Site SJC4 description: This is the primary IP overlay for SJC4. All IPs are publicly routable siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf tenantId: null routingType: Public prefix: 202.168.1.0 prefixLength: 24 protocolVersion: IPv4 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-ipblock description: |- Retrieve all IP blocks for the org. User must have authorization role with `PROVIDER_ADMIN` or `TENANT_ADMIN` suffix. `infrastructureProviderId` or `tenantId` query param may be required for older API versions. parameters: - schema: type: string format: uuid in: query name: infrastructureProviderId description: Filter IP Blocks by Infrastructure Provider ID - schema: type: string format: uuid in: query name: tenantId description: Filter IP Blocks by Tenant ID - schema: type: string format: uuid in: query name: siteId description: Filter IP Blocks by Site ID - schema: type: string in: query name: status description: Filter IP Blocks by Status - schema: type: boolean in: query name: includeUsageStats description: Include IP Block usage stats in response - schema: type: string in: query name: query description: 'Search for matches across all Sites. Input will be matched against name, description and status fields' - schema: type: string enum: - InfrastructureProvider - Tenant - Site in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - NAME_ASC - NAME_DESC - PREFIX_ASC - PREFIX_DESC - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query post: summary: Create IP Block operationId: create-ipblock responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/IpBlock' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: Public Network Overlay for Site SJC4 description: This is the primary IP overlay for SJC4. All IPs are publicly routable siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf tenantId: null routingType: Public prefix: 202.168.1.0 prefixLength: 24 protocolVersion: IPv4 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Create an IP block for the org. Only Infrastructure Providers can create a root IP Block. User must have authorization role with `PROVIDER_ADMIN` suffix. Tenant IP Blocks are created via Allocation. requestBody: content: application/json: schema: $ref: '#/components/schemas/IpBlockCreateRequest' examples: example-1: value: name: Public Network Overlay for Site SJC4 description: This is the primary IP overlay for SJC4. All IPs are publicly routable siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 routingType: Public prefix: 202.168.1.0 prefixLength: 24 protocolVersion: IPv4 tags: - IP Block '/v2/org/{org}/nico/ipblock/{ipBlockId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: ipBlockId in: path required: true description: ID of the IP Block get: summary: Retrieve IP Block tags: - IP Block responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/IpBlock' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: Public Network Overlay for Site SJC4 description: This is the primary IP overlay for SJC4. All IPs are publicly routable siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf tenantId: null routingType: Public prefix: 202.168.16.0 prefixLength: 20 protocolVersion: IPv4 usageStats: availableIPs: 256 acquiredIPs: 2 availablePrefixes: - 192.168.201.0/24 availableSmallestPrefixes: 64 acquiredPrefixes: 0 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-ipblock description: |- Retrieve an IP Block by ID. User must have authorization role with `PROVIDER_ADMIN` or `TENANT_ADMIN` suffix. parameters: - schema: type: string format: uuid in: query name: infrastructureProviderId description: Filter IP Blocks by Infrastructure Provider ID - schema: type: string format: uuid in: query name: tenantId description: Filter IP Blocks by Tenant ID - schema: type: boolean in: query name: includeUsageStats description: Include IP Block usage stats in response - schema: type: string enum: - InfrastructureProvider - Tenant - Site in: query name: includeRelation description: Related entity to expand delete: summary: Delete IP Block operationId: delete-ipblock responses: '202': description: Accepted '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Delete an IP block Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. Only root IP Blocks can be deleted if there are no allocations associated with it. Tenant IP Blocks are managed via Allocation. tags: - IP Block patch: summary: Update IP Block operationId: update-ipblock responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/IpBlock' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: Public Network Overlay for Site SJC-4 description: This is the primary IP overlay for SJC-4. All IPs are publicly routable siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf tenantId: null routingType: Public prefix: 202.168.16.0 prefixLength: 20 protocolVersion: IPv4 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' description: |- Update an existing IP Block Org must have an Infrastructure Provider. Specified IP Block must have been created by the Provider and requesting user must have `PROVIDER_ADMIN` role. Only root IP Blocks can be patched. Tenant IP Blocks are managed via Allocation. requestBody: content: application/json: schema: $ref: '#/components/schemas/IpBlockUpdateRequest' examples: example-1: value: name: Public Network Overlay for Site SJC-4 description: This is the primary IP overlay for SJC-4. All IPs are publicly routable tags: - IP Block '/v2/org/{org}/nico/ipblock/{ipBlockId}/derived': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: ipBlockId in: path required: true description: ID of the IP Block get: summary: Retrieve All Derived IP Blocks tags: - IP Block responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/IpBlock' examples: example-1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: Public Network Overlay for Site SJC4 description: This is the primary IP overlay for SJC4. All IPs are publicly routable siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf tenantId: 97c57510-b443-43b4-881c-974d4b86c87c routingType: Public prefix: 202.168.1.0 prefixLength: 24 protocolVersion: IPv4 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-derived-ipblock description: |- Retrieve all child IP Blocks allocated to Tenants from a specific Provider super IP Block. When allocations are created from a super block, individual Tenant IP Blocks are created as a result. The IP Block in URL must belong to the Infrastructure Provider associated with the Org. User must have authorization role with `PROVIDER_ADMIN` suffix. parameters: - schema: type: string in: query name: status description: Filter IP Blocks by Status - schema: type: string in: query name: query description: 'Search for matches across all Sites. Input will be matched against name, description and status fields' - schema: type: string enum: - InfrastructureProvider - Tenant - Site in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - NAME_ASC - NAME_DESC - PREFIX_ASC - PREFIX_DESC - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query '/v2/org/{org}/nico/vpc': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all VPCs tags: - VPC responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/VPC' examples: example-1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-vpc description: Virtual network for machines executing Spark jobs org: xskkpgqpeakn tenantId: 34f5c98e-f430-457b-a812-92637d0c6fd0 siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 controllerVpcId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 networkVirtualizationType: ETHERNET_VIRTUALIZER requestedVni: 12001 vni: 12001 networkSecurityGroupId: c602eb90-3039-11f0-997a-b38d4fc8389e networkSecurityGroupPropagationDetails: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 detailedStatus: Partial status: Synchronizing details: '' unpropagatedInstanceIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 relatedInstanceIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 nvLinkLogicalPartitionId: dd887330-dbd3-45ce-b400-c42fc8e47315 labels: region: us-west-1 env: dev status: Ready statusHistory: - status: Ready message: Vpc has been successfully provisioned on Site created: '2019-08-24T16:02:00Z' updated: '2019-08-24T16:02:00Z' - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-vpc description: |- Retrieve all VPCs for the org. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix parameters: - schema: type: string format: uuid in: query name: siteId description: Filter VPCs by Site ID. Can be specified multiple times to filter on more than one Site. - schema: type: string in: query name: status description: Filter VPCs by Status. Can be specified multiple times to filter on more than one Status. - schema: type: string in: query name: networkSecurityGroupId description: Filter VPCs by Network Security Group ID. Can be specified multiple times to filter on more than one Network Security Group. - schema: type: string format: uuid in: query name: nvLinkLogicalPartitionId description: Filter VPCs by NVLink Logical Partition ID. Can be specified multiple times to filter on more than one NVLink Logical Partition. - schema: type: string in: query name: query description: 'Search for matches across all VPCs. Input will be matched against name, description, labels and status fields' - schema: type: string enum: - InfrastructureProvider - Tenant - Site - NetworkSecurityGroup in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - NAME_ASC - NAME_DESC - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query post: summary: Create VPC operationId: create-vpc responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/VPC' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-vpc description: Virtual network for machines executing Spark jobs org: xskkpgqpeakn tenantId: 34f5c98e-f430-457b-a812-92637d0c6fd0 siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 controllerVpcId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 networkVirtualizationType: ETHERNET_VIRTUALIZER requestedVni: 12001 vni: 12001 nvLinkLogicalPartitionId: dd887330-dbd3-45ce-b400-c42fc8e47315 labels: region: us-west-1 env: dev status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Create a VPC for the org. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix requestBody: content: application/json: schema: $ref: '#/components/schemas/VpcCreateRequest' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-vpc description: Virtual network for machines executing Spark jobs siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 networkVirtualizationType: ETHERNET_VIRTUALIZER vni: 12001 nvLinkLogicalPartitionId: dd887330-dbd3-45ce-b400-c42fc8e47315 labels: region: us-west-1 env: dev description: '' tags: - VPC '/v2/org/{org}/nico/vpc/{vpcId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: vpcId in: path required: true description: ID of the VPC get: summary: Retrieve a VPC tags: - VPC responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/VPC' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-vpc description: Virtual network for machines executing Spark jobs org: xskkpgqpeakn tenantId: 34f5c98e-f430-457b-a812-92637d0c6fd0 siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 controllerVpcId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 networkVirtualizationType: ETHERNET_VIRTUALIZER requestedVni: 12001 vni: 12001 nvLinkLogicalPartitionId: dd887330-dbd3-45ce-b400-c42fc8e47315 labels: region: us-west-1 env: dev status: Ready networkSecurityGroupId: 'c602eb90-3039-11f0-997a-b38d4fc8389e,' networkSecurityGroupPropagationDetails: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 detailedStatus: Partial status: Synchronizing details: '' unpropagatedInstanceIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 relatedInstanceIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 statusHistory: - status: Ready message: Vpc has been successfully provisioned on Site created: '2019-08-24T16:02:00Z' updated: '2019-08-24T16:02:00Z' - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-vpc description: |- Retrieve a specific VPC by ID. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string enum: - InfrastructureProvider - Tenant - Site - NetworkSecurityGroup in: query name: includeRelation description: Related entity to expand delete: summary: Delete a VPC operationId: delete-vpc responses: '202': description: Accepted '403': $ref: '#/components/responses/ForbiddenError' description: |- Delete a specific VPC by ID. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. tags: - VPC patch: summary: Update VPC operationId: update-vpc responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/VPC' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-vpc-v1 description: Virtual network for machines executing Spark jobs v1 org: xskkpgqpeakn tenantId: 34f5c98e-f430-457b-a812-92637d0c6fd0 siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 controllerVpcId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 networkVirtualizationType: ETHERNET_VIRTUALIZER requestedVni: 12001 vni: 12001 nvLinkLogicalPartitionId: dd887330-dbd3-45ce-b400-c42fc8e47315 labels: region: us-west-1 env: dev status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - VPC description: |- Update an existing VPC Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix requestBody: content: application/json: schema: $ref: '#/components/schemas/VpcUpdateRequest' examples: example-1: value: name: spark-vpc-v1 description: Virtual network for machines executing Spark jobs v1 labels: region: us-west-1 env: dev '/v2/org/{org}/nico/vpc/{vpcId}/virtualization': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: vpcId in: path required: true description: ID of the VPC patch: summary: Update VPC Virtualization operationId: update-vpc-virtualization responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/VPC' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-vpc-v1 description: Virtual network for machines executing Spark jobs v1 org: xskkpgqpeakn tenantId: 34f5c98e-f430-457b-a812-92637d0c6fd0 siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 controllerVpcId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 networkVirtualizationType: FNN requestedVni: 12001 vni: 12001 nvLinkLogicalPartitionId: dd887330-dbd3-45ce-b400-c42fc8e47315 labels: region: us-west-1 env: dev status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - VPC description: |- Update network virtualization type for a VPC Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix Tenant must own the VPC Request is rejected if the VPC already has Subnets or Instances requestBody: content: application/json: schema: $ref: '#/components/schemas/VpcVirtualizationUpdateRequest' examples: Example 1: value: networkVirtualizationType: FNN '/v2/org/{org}/nico/vpc-peering': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all VPC peerings tags: - VPC Peering responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/VpcPeering' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-vpc-peering description: |- Get all VPC peerings. Tenant Admin can get all peerings where the tenant owns at least one VPC. Provider Admin can get all peerings in a site. User must have authorization role with `TENANT_ADMIN` or `PROVIDER_ADMIN` suffix. parameters: - schema: type: string format: uuid in: query name: siteId required: false description: Optional Site ID filter. If provided, caller must have access to the specified Site. - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string in: query name: orderBy description: Ordering for pagination query - schema: type: boolean in: query name: isMultiTenant required: false description: Optional filter by peering tenancy type (single-tenant or multi-tenant). - schema: type: string enum: - Vpc1 - Vpc2 - Site in: query name: includeRelation required: false description: Related entity to expand post: summary: Create VPC peering tags: - VPC Peering operationId: create-vpc-peering description: |- Create a VPC peering between two VPCs on the same site. Tenant Admin can create single-tenant peerings (both VPCs belong to their tenant). Provider Admin can create multi-tenant peerings (VPCs from different tenants). User must have authorization role with `TENANT_ADMIN` or `PROVIDER_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/VpcPeeringCreateRequest' examples: example-1: value: vpc1Id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 vpc2Id: 34f5c98e-f430-457b-a812-92637d0c6fd0 siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 required: true responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/VpcPeering' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' '/v2/org/{org}/nico/vpc-peering/{id}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: id in: path required: true description: VPC Peering ID get: summary: Retrieve a VPC peering tags: - VPC Peering operationId: get-vpc-peering description: |- Get details of a VPC peering by ID. Tenant Admin can get a peering if at least one VPC belongs to their tenant. Provider Admin can get a peering if it is in a site provided by their org. User must have authorization role with `TENANT_ADMIN` or `PROVIDER_ADMIN` suffix. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/VpcPeering' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' parameters: - schema: type: string enum: - Vpc1 - Vpc2 - Site in: query name: includeRelation required: false description: Related entity to expand delete: summary: Delete a VPC peering tags: - VPC Peering operationId: delete-vpc-peering description: |- Delete a VPC peering by ID. Tenant Admin can delete only peerings where both VPCs belong to their tenant. Provider Admin can delete only multi-tenant peerings in sites they provide. User must have authorization role with `TENANT_ADMIN` or `PROVIDER_ADMIN` suffix. responses: '204': description: No Content '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' '/v2/org/{org}/nico/vpc-prefix': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all VPC Prefixes tags: - VPC Prefix responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/VpcPrefix' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-vpc-prefix description: |- Retrieve all VPC Prefixes for the org Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string format: uuid in: query name: siteId description: 'Filter VPC Prefixes by Site, required if vpcId query param is not specified' - schema: type: string format: uuid in: query name: vpcId description: Filter VPC Prefixes by VPC - schema: type: string in: query name: status description: Filter VPC Prefixes by Status - schema: type: string in: query name: query description: Search for matches across all Sites. Input will be matched against name and status fields - schema: type: string enum: - VPC - Tenant - IPBlock in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - NAME_ASC - NAME_DESC - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query post: summary: Create VPC Prefix operationId: create-vpc-prefix responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/VpcPrefix' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Create a VPC Prefix for the org. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/VpcPrefixCreateRequest' tags: - VPC Prefix '/v2/org/{org}/nico/vpc-prefix/{vpcPrefixId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: vpcPrefixId in: path required: true description: ID of the VPC Prefix get: summary: Retrieve VPC Prefix tags: - VPC Prefix responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/VpcPrefix' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-vpc-prefix description: |- Retrieve a specific VPC Prefix Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string enum: - VPC - Tenant - IPBlock in: query name: includeRelation description: Related entity to expand delete: summary: Delete VPC Prefix operationId: delete-vpc-prefix responses: '204': description: No Content '403': $ref: '#/components/responses/ForbiddenError' description: |- Delete a specific VPC Prefix by ID. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. tags: - VPC Prefix patch: summary: Update VPC Prefix operationId: update-vpc-prefix responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/VpcPrefix' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - VPC Prefix description: | Update an existing VPC Prefix Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/VpcPrefixUpdateRequest' '/v2/org/{org}/nico/subnet': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all Subnets tags: - Subnet responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Subnet' examples: example-1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-gpu-net siteId: ea144def-d68f-44c3-9485-4b103fa2686f vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 controllerNetworkSegmentId: abe7b0e8-67db-4e89-903e-fc4f2bd7f034 ipv4Prefix: 202.168.16.0 ipv4BlockId: 8c1d1a06-90a2-4863-8ee1-6029265b9f0a ipv4Gateway: 202.168.0.1 ipv6Prefix: null ipv6BlockId: null ipv6Gateway: null prefixLength: 20 routingType: Public status: Ready statusHistory: - status: Ready message: Subnet has been successfully provisioned on Site created: '2019-08-24T16:02:38Z' updated: '2019-08-24T16:02:38Z' - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-subnet description: |- Retrieve all Subnets for the org Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string format: uuid in: query name: siteId description: 'Filter subnets by Site, required if vpcId query param is not specified' - schema: type: string format: uuid in: query name: vpcId description: Filter subnets by VPC - schema: type: string in: query name: status description: Filter Subnets by Status - schema: type: string in: query name: query description: 'Search for matches across all Sites. Input will be matched against name, description and status fields' - schema: type: string enum: - VPC - Tenant - IPv4Block - IPv6Block in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - NAME_ASC - NAME_DESC - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query post: summary: Create Subnet operationId: create-subnet responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/Subnet' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-gpu-net siteId: ea144def-d68f-44c3-9485-4b103fa2686f vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 controllerNetworkSegmentId: null ipv4Prefix: 202.168.16.0 ipv4BlockId: 8c1d1a06-90a2-4863-8ee1-6029265b9f0a ipv4Gateway: 202.168.0.1 ipv6Prefix: null ipv6BlockId: null ipv6Gateway: null prefixLength: 20 routingType: Public status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Create a Subnet for the org. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. At least 1 IPv4 IP block or 1 IPv6 IP block must be specified. requestBody: content: application/json: schema: $ref: '#/components/schemas/SubnetCreateRequest' examples: Example 1: value: name: spark-gpu-net vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 ipv4BlockId: 8c1d1a06-90a2-4863-8ee1-6029265b9f0a prefixLength: 20 tags: - Subnet '/v2/org/{org}/nico/subnet/{subnetId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: subnetId in: path required: true description: ID of the Subnet get: summary: Retrieve Subnet tags: - Subnet responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Subnet' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-gpu-net siteId: ea144def-d68f-44c3-9485-4b103fa2686f vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 controllerNetworkSegmentId: abe7b0e8-67db-4e89-903e-fc4f2bd7f034 ipv4Prefix: 202.168.16.0 ipv4BlockId: 8c1d1a06-90a2-4863-8ee1-6029265b9f0a ipv4Gateway: 202.168.0.1 ipv6Prefix: null ipv6BlockId: null ipv6Gateway: null prefixLength: 20 routingType: Public status: Ready statusHistory: - status: Ready message: Subnet has been successfully provisioned on Site created: '2019-08-24T16:02:38Z' updated: '2019-08-24T16:02:38Z' - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-subnet description: |- Retrieve a specific Subnet Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string enum: - VPC - Tenant - IPv4Block - IPv6Block in: query name: includeRelation description: Related entity to expand delete: summary: Delete Subnet operationId: delete-subnet responses: '204': description: No Content '403': $ref: '#/components/responses/ForbiddenError' description: |- Delete a specific Subnet by ID. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. tags: - Subnet patch: summary: Update Subnet operationId: update-subnet responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Subnet' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-gpu-subnet description: Subnet for dedicated GPU nodes siteId: ea144def-d68f-44c3-9485-4b103fa2686f vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 controllerNetworkSegmentId: null ipv4Prefix: 212.168.0.250 ipv4BlockId: 8c1d1a06-90a2-4863-8ee1-6029265b9f0a ipv4Gateway: 202.168.0.1 ipv6Prefix: null ipv6BlockId: null ipv6Gateway: null prefixLength: 20 routingType: Public status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Subnet description: | Update an existing Subnet Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/SubnetUpdateRequest' examples: example-1: value: name: spark-gpu-subnet description: Subnet for dedicated GPU nodes '/v2/org/{org}/nico/expected-machine': parameters: - schema: type: string name: org in: path required: true description: Name of the Org post: summary: Create Expected Machine operationId: create-expected-machine description: |- Create an Expected Machine to pre-register Machines expected to be discovered at a Site. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also create Expected Machines if they have an account with the Site's Infrastructure Provider. requestBody: content: application/json: schema: $ref: '#/components/schemas/ExpectedMachineCreateRequest' examples: example-1: value: siteId: f97df110-f4de-492e-8849-4a6af68026b0 bmcMacAddress: '00:1A:2B:3C:4D:5E' defaultBmcUsername: admin defaultBmcPassword: password123 chassisSerialNumber: CHASSIS-12345 fallbackDPUSerialNumbers: - DPU-001 - DPU-002 labels: environment: production rack: A1 description: Expected Machine creation request required: true responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/ExpectedMachine' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Expected Machine get: summary: Retrieve all Expected Machines operationId: get-all-expected-machine description: |- Retrieve all Expected Machines. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` or `PROVIDER_VIEWER` suffix. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also retrieve Expected Machines if they have an account with the Site's Infrastructure Provider (siteId query parameter is required for Tenants). parameters: - schema: type: string format: uuid name: siteId in: query description: ID of the Site to filter Expected Machines by - schema: type: string enum: - Site - Sku in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - BMC_MAC_ADDRESS_ASC - BMC_MAC_ADDRESS_DESC - CHASSIS_SERIAL_NUMBER_ASC - CHASSIS_SERIAL_NUMBER_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/ExpectedMachine' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Expected Machine '/v2/org/{org}/nico/expected-machine/{expectedMachineId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: expectedMachineId in: path required: true description: ID of the Expected Machine get: summary: Retrieve Expected Machine operationId: get-expected-machine description: |- Retrieve a specific Expected Machine by ID. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` or `PROVIDER_VIEWER` suffix. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also retrieve Expected Machines if they have an account with the Site's Infrastructure Provider. parameters: - schema: type: string enum: - Site - Sku in: query name: includeRelation description: Related entity to expand responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ExpectedMachine' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' tags: - Expected Machine patch: summary: Update Expected Machine operationId: update-expected-machine description: |- Update an existing Expected Machine by ID. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. Infrastructure Provider must own the Expected Machine. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also update Expected Machines if they have an account with the Site's Infrastructure Provider. parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/ExpectedMachineUpdateRequest' examples: example-1: value: defaultBmcUsername: newadmin defaultBmcPassword: newpassword123 chassisSerialNumber: CHASSIS-54321 labels: environment: staging rack: B2 description: Expected Machine update request required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ExpectedMachine' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' tags: - Expected Machine delete: summary: Delete Expected Machine operationId: delete-expected-machine description: |- Delete an existing Expected Machine by ID. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. Infrastructure Provider must own the Expected Machine. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also delete Expected Machines if they have an account with the Site's Infrastructure Provider. parameters: [] responses: '204': description: ExpectedMachine deleted successfully '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' tags: - Expected Machine '/v2/org/{org}/nico/expected-machine/batch': parameters: - schema: type: string name: org in: path required: true description: Name of the Org post: summary: Batch Create Expected Machines operationId: batch-create-expected-machines description: |- Create multiple Expected Machines in a single request. All machines must belong to the same site. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also create Expected Machines if they have an account with the Site's Infrastructure Provider. Maximum batch size: 100 Expected Machines per request. requestBody: content: application/json: schema: type: array minItems: 1 maxItems: 100 items: $ref: '#/components/schemas/ExpectedMachineCreateRequest' examples: example-1: value: - siteId: f97df110-f4de-492e-8849-4a6af68026b0 bmcMacAddress: '00:1A:2B:3C:4D:5E' defaultBmcUsername: admin defaultBmcPassword: password123 chassisSerialNumber: CHASSIS-12345 fallbackDPUSerialNumbers: - DPU-001 - DPU-002 labels: environment: production rack: A1 - siteId: f97df110-f4de-492e-8849-4a6af68026b0 bmcMacAddress: '00:1A:2B:3C:4D:5F' defaultBmcUsername: admin defaultBmcPassword: password456 chassisSerialNumber: CHASSIS-12346 fallbackDPUSerialNumbers: - DPU-003 - DPU-004 labels: environment: production rack: A2 description: Array of Expected Machine creation requests required: true responses: '201': description: Created content: application/json: schema: type: array items: $ref: '#/components/schemas/ExpectedMachine' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Expected Machine patch: summary: Batch Update Expected Machines operationId: batch-update-expected-machines description: |- Update multiple Expected Machines in a single request. All machines must belong to the same site. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. Infrastructure Provider must own the Expected Machines. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also update Expected Machines if they have an account with the Site's Infrastructure Provider. Maximum batch size: 100 Expected Machines per request. requestBody: content: application/json: schema: type: array minItems: 1 maxItems: 100 items: $ref: '#/components/schemas/ExpectedMachineUpdateRequest' examples: example-1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 defaultBmcUsername: newadmin defaultBmcPassword: newpassword123 chassisSerialNumber: CHASSIS-54321 labels: environment: staging rack: B2 - id: 597f6eca-6276-4993-bfeb-53cbbbba6f09 defaultBmcUsername: newadmin2 defaultBmcPassword: newpassword456 chassisSerialNumber: CHASSIS-54322 labels: environment: staging rack: B3 description: Array of Expected Machine update requests required: true responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/ExpectedMachine' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': description: One or more Expected Machines not found content: application/json: schema: $ref: '#/components/schemas/NICoAPIError' tags: - Expected Machine '/v2/org/{org}/nico/expected-power-shelf': parameters: - schema: type: string name: org in: path required: true description: Name of the Org post: summary: Create Expected Power Shelf operationId: create-expected-power-shelf description: |- Create an Expected Power Shelf to pre-register power shelves expected to be discovered at a Site. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also create Expected Power Shelves if they have an account with the Site's Infrastructure Provider. requestBody: content: application/json: schema: $ref: '#/components/schemas/ExpectedPowerShelfCreateRequest' examples: example-1: value: siteId: f97df110-f4de-492e-8849-4a6af68026b0 bmcMacAddress: '00:1A:2B:3C:4D:5E' defaultBmcUsername: admin defaultBmcPassword: password123 shelfSerialNumber: SHELF-12345 bmcIpAddress: '192.168.1.100' labels: environment: production rack: A1 description: Expected Power Shelf creation request required: true responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/ExpectedPowerShelf' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Expected Power Shelf get: summary: Retrieve all Expected Power Shelves operationId: get-all-expected-power-shelf description: |- Retrieve all Expected Power Shelves. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` or `PROVIDER_VIEWER` suffix. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also retrieve Expected Power Shelves if they have an account with the Site's Infrastructure Provider (siteId query parameter is required for Tenants). parameters: - schema: type: string format: uuid name: siteId in: query description: ID of the Site to filter Expected Power Shelves by - schema: type: string enum: - Site in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - BMC_MAC_ADDRESS_ASC - BMC_MAC_ADDRESS_DESC - SHELF_SERIAL_NUMBER_ASC - SHELF_SERIAL_NUMBER_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/ExpectedPowerShelf' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Expected Power Shelf '/v2/org/{org}/nico/expected-power-shelf/{expectedPowerShelfId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: expectedPowerShelfId in: path required: true description: ID of the Expected Power Shelf get: summary: Retrieve Expected Power Shelf operationId: get-expected-power-shelf description: |- Retrieve a specific Expected Power Shelf by ID. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` or `PROVIDER_VIEWER` suffix. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also retrieve Expected Power Shelves if they have an account with the Site's Infrastructure Provider. parameters: - schema: type: string enum: - Site in: query name: includeRelation description: Related entity to expand responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ExpectedPowerShelf' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' tags: - Expected Power Shelf patch: summary: Update Expected Power Shelf operationId: update-expected-power-shelf description: |- Update an existing Expected Power Shelf by ID. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. Infrastructure Provider must own the Expected Power Shelf. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also update Expected Power Shelves if they have an account with the Site's Infrastructure Provider. parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/ExpectedPowerShelfUpdateRequest' examples: example-1: value: defaultBmcUsername: newadmin defaultBmcPassword: newpassword123 shelfSerialNumber: SHELF-54321 bmcIpAddress: '192.168.1.200' labels: environment: staging rack: B2 description: Expected Power Shelf update request required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ExpectedPowerShelf' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' tags: - Expected Power Shelf delete: summary: Delete Expected Power Shelf operationId: delete-expected-power-shelf description: |- Delete an existing Expected Power Shelf by ID. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. Infrastructure Provider must own the Expected Power Shelf. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also delete Expected Power Shelves if they have an account with the Site's Infrastructure Provider. parameters: [] responses: '204': description: Expected Power Shelf deleted successfully '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' tags: - Expected Power Shelf '/v2/org/{org}/nico/expected-rack': parameters: - schema: type: string name: org in: path required: true description: Name of the Org post: summary: Create Expected Rack operationId: create-expected-rack description: |- Create an Expected Rack to pre-register a rack expected to be discovered at a Site. The `rackId` is an operator-supplied string identifier (not a UUID) that uniquely identifies the rack within the Site. Org must have an Infrastructure Provider entity. User must have `FORGE_PROVIDER_ADMIN` role. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also create Expected Racks if they have an account with the Site's Infrastructure Provider. Chassis identity and physical location information are conveyed via well-known label keys in `labels`: - `chassis.manufacturer`, `chassis.serial-number`, `chassis.model` - `location.region`, `location.datacenter`, `location.room`, `location.position` requestBody: content: application/json: schema: $ref: '#/components/schemas/ExpectedRackCreateRequest' examples: example-1: value: siteId: f97df110-f4de-492e-8849-4a6af68026b0 rackId: rack-01 rackProfileId: rp-standard-42u name: Rack 01 description: Production rack in row A labels: chassis.manufacturer: NVIDIA chassis.serial-number: NVRK0001001 chassis.model: GB200-NVL72 location.region: us-west-2 location.datacenter: phx-dc01 location.room: room-1 location.position: A1 description: Expected Rack creation request required: true responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/ExpectedRack' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Expected Rack get: summary: Retrieve all Expected Racks operationId: get-all-expected-rack description: |- Retrieve all Expected Racks. Org must have an Infrastructure Provider entity. User must have `FORGE_PROVIDER_ADMIN` or `FORGE_PROVIDER_VIEWER` role. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also retrieve Expected Racks if they have an account with the Site's Infrastructure Provider (siteId query parameter is required for Tenants). parameters: - schema: type: string format: uuid name: siteId in: query description: ID of the Site to filter Expected Racks by - schema: type: string enum: - Site in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - RACK_ID_ASC - RACK_ID_DESC - RACK_PROFILE_ID_ASC - RACK_PROFILE_ID_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/ExpectedRack' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Expected Rack put: summary: Replace all Expected Racks operationId: replace-all-expected-rack description: |- Replace the full set of Expected Racks for a Site with the provided list. All existing Expected Racks for the Site that are not in the request body will be deleted, and any new Expected Racks in the request will be created. Existing Expected Racks with matching `rackId` values will be updated. Every entry in `expectedRacks` must reference the same `siteId` as the top-level `siteId`. `rackId` values must be unique within the request. The `expectedRacks` array may be empty to clear all Expected Racks for the Site. Org must have an Infrastructure Provider entity. User must have `FORGE_PROVIDER_ADMIN` role. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also replace Expected Racks if they have an account with the Site's Infrastructure Provider. requestBody: content: application/json: schema: $ref: '#/components/schemas/ExpectedRackList' examples: example-1: value: siteId: f97df110-f4de-492e-8849-4a6af68026b0 expectedRacks: - siteId: f97df110-f4de-492e-8849-4a6af68026b0 rackId: rack-01 rackProfileId: rp-standard-42u name: Rack 01 description: Production rack in row A labels: chassis.manufacturer: NVIDIA chassis.serial-number: NVRK0001001 chassis.model: GB200-NVL72 location.datacenter: phx-dc01 location.position: A1 - siteId: f97df110-f4de-492e-8849-4a6af68026b0 rackId: rack-02 rackProfileId: rp-standard-42u name: Rack 02 description: Production rack in row A labels: chassis.manufacturer: NVIDIA chassis.serial-number: NVRK0001002 chassis.model: GB200-NVL72 location.datacenter: phx-dc01 location.position: A2 description: Replace-all Expected Racks request required: true responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/ExpectedRack' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Expected Rack '/v2/org/{org}/nico/expected-rack/all': parameters: - schema: type: string name: org in: path required: true description: Name of the Org delete: summary: Delete all Expected Racks operationId: delete-all-expected-rack description: |- Delete all Expected Racks for a Site. Org must have an Infrastructure Provider entity. User must have `FORGE_PROVIDER_ADMIN` role. Infrastructure Provider must own the Expected Racks. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also delete Expected Racks if they have an account with the Site's Infrastructure Provider. parameters: - schema: type: string format: uuid name: siteId in: query required: true description: ID of the Site whose Expected Racks should be deleted responses: '204': description: All Expected Racks deleted successfully '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Expected Rack '/v2/org/{org}/nico/expected-rack/{id}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: id in: path required: true description: ID of the Expected Rack get: summary: Retrieve Expected Rack operationId: get-expected-rack description: |- Retrieve a specific Expected Rack by its `id`. Org must have an Infrastructure Provider entity. User must have `FORGE_PROVIDER_ADMIN` or `FORGE_PROVIDER_VIEWER` role. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also retrieve Expected Racks if they have an account with the Site's Infrastructure Provider. parameters: - schema: type: string enum: - Site in: query name: includeRelation description: Related entity to expand responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ExpectedRack' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' tags: - Expected Rack patch: summary: Update Expected Rack operationId: update-expected-rack description: |- Update an existing Expected Rack identified by its `id`. Org must have an Infrastructure Provider entity. User must have `FORGE_PROVIDER_ADMIN` role. Infrastructure Provider must own the Expected Rack. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also update Expected Racks if they have an account with the Site's Infrastructure Provider. requestBody: content: application/json: schema: $ref: '#/components/schemas/ExpectedRackUpdateRequest' examples: example-1: value: rackProfileId: rp-standard-48u name: Rack 01 (updated) description: Production rack in row A, upgraded chassis labels: chassis.manufacturer: NVIDIA chassis.serial-number: NVRK0001001 chassis.model: GB200-NVL72 location.datacenter: phx-dc01 location.position: A1 description: Expected Rack update request required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ExpectedRack' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' tags: - Expected Rack delete: summary: Delete Expected Rack operationId: delete-expected-rack description: |- Delete an existing Expected Rack identified by its `id`. Org must have an Infrastructure Provider entity. User must have `FORGE_PROVIDER_ADMIN` role. Infrastructure Provider must own the Expected Rack. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also delete Expected Racks if they have an account with the Site's Infrastructure Provider. responses: '204': description: Expected Rack deleted successfully '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' tags: - Expected Rack '/v2/org/{org}/nico/expected-switch': parameters: - schema: type: string name: org in: path required: true description: Name of the Org post: summary: Create Expected Switch operationId: create-expected-switch description: |- Create an Expected Switch to pre-register network switches expected to be discovered at a Site. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also create Expected Switches if they have an account with the Site's Infrastructure Provider. requestBody: content: application/json: schema: $ref: '#/components/schemas/ExpectedSwitchCreateRequest' examples: example-1: value: siteId: f97df110-f4de-492e-8849-4a6af68026b0 bmcMacAddress: '00:1A:2B:3C:4D:5E' defaultBmcUsername: admin defaultBmcPassword: password123 switchSerialNumber: SWITCH-12345 nvOsUsername: nvadmin nvOsPassword: nvpassword123 labels: environment: production rack: A1 description: Expected Switch creation request required: true responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/ExpectedSwitch' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Expected Switch get: summary: Retrieve all Expected Switches operationId: get-all-expected-switch description: |- Retrieve all Expected Switches. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` or `PROVIDER_VIEWER` suffix. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also retrieve Expected Switches if they have an account with the Site's Infrastructure Provider (siteId query parameter is required for Tenants). parameters: - schema: type: string format: uuid name: siteId in: query description: ID of the Site to filter Expected Switches by - schema: type: string enum: - Site in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - BMC_MAC_ADDRESS_ASC - BMC_MAC_ADDRESS_DESC - SWITCH_SERIAL_NUMBER_ASC - SWITCH_SERIAL_NUMBER_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/ExpectedSwitch' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Expected Switch '/v2/org/{org}/nico/expected-switch/{expectedSwitchId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: expectedSwitchId in: path required: true description: ID of the Expected Switch get: summary: Retrieve Expected Switch operationId: get-expected-switch description: |- Retrieve a specific Expected Switch by ID. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` or `PROVIDER_VIEWER` suffix. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also retrieve Expected Switches if they have an account with the Site's Infrastructure Provider. parameters: - schema: type: string enum: - Site in: query name: includeRelation description: Related entity to expand responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ExpectedSwitch' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' tags: - Expected Switch patch: summary: Update Expected Switch operationId: update-expected-switch description: |- Update an existing Expected Switch by ID. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. Infrastructure Provider must own the Expected Switch. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also update Expected Switches if they have an account with the Site's Infrastructure Provider. parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/ExpectedSwitchUpdateRequest' examples: example-1: value: defaultBmcUsername: newadmin defaultBmcPassword: newpassword123 switchSerialNumber: SWITCH-54321 nvOsUsername: newnvadmin nvOsPassword: newnvpassword123 labels: environment: staging rack: B2 description: Expected Switch update request required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ExpectedSwitch' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' tags: - Expected Switch delete: summary: Delete Expected Switch operationId: delete-expected-switch description: |- Delete an existing Expected Switch by ID. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. Infrastructure Provider must own the Expected Switch. Alternatively, Tenant Admins with `TargetedInstanceCreation` capability can also delete Expected Switches if they have an account with the Site's Infrastructure Provider. parameters: [] responses: '204': description: Expected Switch deleted successfully '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' tags: - Expected Switch '/v2/org/{org}/nico/sku': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all SKUs operationId: get-all-sku description: |- Retrieve all SKUs (Stock Keeping Units) for the Infrastructure Provider or privileged Tenant. SKUs represent unique hardware configurations discovered at sites. They are automatically derived from machine characteristics. A `siteId` query parameter is required for all requests. For Infrastructure Providers: Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` or `PROVIDER_VIEWER` suffix. For Tenants: Org must have a Tenant with `TargetedInstanceCreation` capability enabled. User must have authorization role with `TENANT_ADMIN` suffix. The Tenant must have an account with the Site's Infrastructure Provider. parameters: - schema: type: string format: uuid name: siteId in: query required: true description: ID of the Site to retrieve SKUs from - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC - ID_ASC - ID_DESC in: query name: orderBy description: Ordering for pagination query responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Sku' examples: example-1: value: - id: lenovo.sr650v2.cpu.1 siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 deviceType: gpu associatedMachineIds: - fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g components: cpus: - vendor: Intel model: Xeon Platinum 8480+ threadCount: 112 count: 2 gpus: - vendor: NVIDIA model: H100 SXM5 totalMemory: 80GB HBM3 count: 8 memory: - capacityMb: 65536 memoryType: DDR5 count: 16 storage: - vendor: Samsung model: PM9A3 capacityMb: 7680000 count: 4 chassis: vendor: Supermicro model: SYS-420GP-TNR created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - SKU '/v2/org/{org}/nico/sku/{skuId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: skuId in: path required: true description: ID of the SKU get: summary: Retrieve SKU operationId: get-sku description: |- Retrieve a specific SKU (Stock Keeping Unit) by ID. SKUs represent unique hardware configurations discovered at sites. They are automatically derived from machine characteristics. For Infrastructure Providers: Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` or `PROVIDER_VIEWER` suffix. For Tenants: Org must have a Tenant with `TargetedInstanceCreation` capability enabled. User must have authorization role with `TENANT_ADMIN` suffix. The Tenant must have an account with the SKU's Site's Infrastructure Provider. responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Sku' examples: example-1: value: id: lenovo.sr650v2.cpu.1 siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 deviceType: gpu associatedMachineIds: - fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g components: cpus: - vendor: Intel model: Xeon Platinum 8480+ threadCount: 112 count: 2 gpus: - vendor: NVIDIA model: H100 SXM5 totalMemory: 80GB HBM3 count: 8 memory: - capacityMb: 65536 memoryType: DDR5 count: 16 storage: - vendor: Samsung model: PM9A3 capacityMb: 7680000 count: 4 chassis: vendor: Supermicro model: SYS-420GP-TNR created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' tags: - SKU '/v2/org/{org}/nico/infiniband-partition': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all InfiniBand Partitions responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/InfiniBandPartition' examples: Example 1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: turbo-net description: InfiniBand Partition for model training Instances siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 controllerIBPartitionId: 0e60d064-3d38-4812-84d9-c3353bd96eaf partitionKey: '0x1' partitionName: turbo-net serviceLevel: 5 rateLimit: 40 mtu: 4000 enableSharp: true labels: environment: production team: devops status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-infiniband-partition description: |- Retrieve all InfiniBand Partitions for the org Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string format: uuid in: query name: siteId description: Filter Partitions by Site - schema: type: string in: query name: status description: Filter Partitions by Status - schema: type: string in: query name: query description: 'Search for matches across all Sites. Input will be matched against name, description and status fields' - schema: type: string enum: - Site - VPC - Tenant in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - NAME_ASC - NAME_DESC - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query tags: - InfiniBand Partition post: summary: Create InfiniBand Partition operationId: create-infiniband-partition responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/InfiniBandPartition' examples: Example 1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: turbo-net description: InfiniBand Partition for model training Instances siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 controllerIBPartitionId: 0e60d064-3d38-4812-84d9-c3353bd96eaf partitionKey: '0x1' partitionName: turbo-net serviceLevel: 5 rateLimit: 40 mtu: 4000 enableSharp: true labels: environment: production team: devops status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Create an InfiniBand Partition for the org. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/InfiniBandPartitionCreateRequest' examples: Example 1: value: name: turbo-net siteId: 69dae3c8-3554-4a1f-b391-858c6dc47fff labels: environment: production team: devops tags: - InfiniBand Partition '/v2/org/{org}/nico/infiniband-partition/{infiniBandPartitionId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: infiniBandPartitionId in: path required: true description: ID of the InfiniBand Partition get: summary: Retrieve InfiniBand Partition responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/InfiniBandPartition' examples: Example 1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: turbo-net description: InfiniBand Partition for model training Instances siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 controllerIBPartitionId: 0e60d064-3d38-4812-84d9-c3353bd96eaf partitionKey: '0x1' partitionName: turbo-net serviceLevel: 5 rateLimit: 40 mtu: 4000 enableSharp: true labels: environment: production team: devops status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-infiniband-partition description: |- Retrieve a specific InfiniBand Partition Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. Tenant must own the Partition. parameters: - schema: type: string enum: - Site - VPC - Tenant in: query name: includeRelation description: Related entity to expand tags: - InfiniBand Partition delete: summary: Delete InfiniBand Partition operationId: delete-infiniband-partition responses: '202': description: Accepted '403': $ref: '#/components/responses/ForbiddenError' description: |- Delete a specific InfiniBand Partition by ID. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. Tenant must own the Partition. tags: - InfiniBand Partition patch: summary: Update InfiniBand Partition operationId: update-infiniband-partition responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/InfiniBandPartition' examples: Example 1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: turbo-net-v2 description: Second version of the model training network siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 controllerIBPartitionId: 0e60d064-3d38-4812-84d9-c3353bd96eaf partitionKey: '0x1' partitionName: turbo-net serviceLevel: 5 rateLimit: 40 mtu: 4000 enableSharp: true labels: environment: production team: devops status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Update an existing InfiniBand Partition Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. Tenant must own the Partition. requestBody: content: application/json: schema: $ref: '#/components/schemas/InfiniBandPartitionUpdateRequest' examples: Example 1: value: name: turbo-net-v2 description: Second version of the model training network labels: environment: production team: devops tags: - InfiniBand Partition '/v2/org/{org}/nico/nvlink-logical-partition': parameters: - schema: type: string name: org in: path required: true description: Name of the NGC Org get: summary: Retrieve all NVLink Logical Partitions responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/NVLinkLogicalPartition' examples: Example 1: value: - id: ded96bdf-905e-40dd-8a58-3472aab60042 name: partition-east-gpu description: NVLink Logical Partition for model training Instances siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-nvlink-logical-partition description: |- Retrieve all NVLink Logical Partitions for the org Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string format: uuid in: query name: siteId description: Filter NVLink Logical Partitions by Site - schema: type: string in: query name: status description: Filter NVLink Logical Partitions by Status - schema: type: string in: query name: query description: 'Search for matches across all Sites. Input will be matched against name, description and status fields' - schema: type: boolean in: query name: includeInterfaces description: Include NVLink Interfaces in response. - schema: type: boolean in: query name: includeStats description: Include NVLink Logical Partition Stats in response. - schema: type: boolean in: query name: includeVpcs description: Include VPCs in response. - schema: type: string enum: - Site - Tenant in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query tags: - NVLink Logical Partition post: summary: Create NVLink Logical Partition operationId: create-nvlink-logical-partition responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/NVLinkLogicalPartition' examples: Example 1: value: id: ded96bdf-905e-40dd-8a58-3472aab60042 name: partition-east-gpu description: NVLink Logical Partition for model training Instances siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Create an NVLink Logical Partition for the org. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/NVLinkLogicalPartitionCreateRequest' examples: Example 1: value: name: partition-east-gpu siteId: 69dae3c8-3554-4a1f-b391-858c6dc47fff tags: - NVLink Logical Partition '/v2/org/{org}/nico/nvlink-logical-partition/{nvLinkLogicalPartitionId}': parameters: - schema: type: string name: org in: path required: true description: Name of the NGC Org - schema: type: string name: nvLinkLogicalPartitionId in: path required: true description: ID of the NVLink Logical Partition get: summary: Retrieve NVLink Logical Partition responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/NVLinkLogicalPartition' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-nvlink-logical-partition description: |- Retrieve a specific NVLink Logical Partition by ID Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. tags: - NVLink Logical Partition parameters: - schema: type: string in: query name: includeInterfaces description: Include all attached NVLink Interfaces in response - schema: type: boolean in: query name: includeStats description: Include NVLink Logical Partition Stats in response - schema: type: boolean in: query name: includeVpcs description: Include all attached VPCs in response - schema: type: string enum: - Site - Tenant in: query name: includeRelation description: Related entity to expand patch: summary: Update NVLink Logical Partition operationId: update-nvlink-logical-partition responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/NVLinkLogicalPartition' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Update a specific NVLink Logical Partition Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/NVLinkLogicalPartitionUpdateRequest' tags: - NVLink Logical Partition delete: summary: Delete NVLink Logical Partition operationId: delete-nvlink-logical-partition responses: '202': description: Accepted '403': $ref: '#/components/responses/ForbiddenError' description: |- Delete an NVLink Logical Partition by ID Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. tags: - NVLink Logical Partition '/v2/org/{org}/nico/instance/type': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all Instance Types responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/InstanceType' examples: example-1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: x3.large description: 'Part of X family, the X3 Large features increased compute power' infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 machineCapabilities: - type: CPU name: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz frequency: 3.0GHz cores: 18 threads: 36 count: 2 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' deprecations: - queryParam: includeMachineAssociation replacedBy: includeMachineAssignment takeActionBy: '2023-07-26T00:00:00Z' notice: '''includeMachineAssociation'' has been deprecated in favor of ''includeMachineAssignment''. Please take action immediately.' - attribute: displayName takeActionBy: '2024-10-30T00:00:00Z' notice: '''displayName'' has been deprecated. Please take action immediately.' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' example-2: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: ib.general description: General Purpose InfiniBand Instances infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 machineCapabilities: - type: InfiniBand name: 'Mellanox Technologies MT28908 Family [ConnectX-6]' vendor: Mellanox Technologies count: 2 machineInstanceTypes: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' deprecations: - queryParam: includeMachineAssociation replacedBy: includeMachineAssignment takeActionBy: '2023-07-26T00:00:00Z' notice: '''includeMachineAssociation'' has been deprecated in favor of ''includeMachineAssignment''. Please take action immediately.' - attribute: displayName takeActionBy: '2024-10-30T00:00:00Z' notice: '''displayName'' has been deprecated. Please take action immediately.' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' example-3: value: - id: 0327339b-f3b7-4de3-9468-7dc29f9f6914 name: ib.multi-dpu description: Multi DPU Instances infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 machineCapabilities: - type: Network name: MT42822 BlueField-2 integrated ConnectX-6 Dx network controller vendor: Mellanox Technologies count: 2 deviceType: DPU machineInstanceTypes: - id: 0327339b-f3b7-4de3-9468-7dc29f9f6914 machineId: fm100dsg23d2f4tq4tt5m2hgib5pcldrm3gvefbduau7gj3itgc3iqg3lpg instanceTypeId: 771b066a-f2ff-4550-a65d-baef8551167d created: '2025-05-24T14:15:22Z' updated: '2025-05-24T14:15:22Z' status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2025-05-24T14:15:22Z' updated: '2025-05-24T14:15:22Z' deprecations: - queryParam: includeMachineAssociation replacedBy: includeMachineAssignment takeActionBy: '2023-07-26T00:00:00Z' notice: '''includeMachineAssociation'' has been deprecated in favor of ''includeMachineAssignment''. Please take action immediately.' - attribute: displayName takeActionBy: '2024-10-30T00:00:00Z' notice: '''displayName'' has been deprecated. Please take action immediately.' created: '2025-05-24T14:15:22Z' updated: '2025-05-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-instance-type description: | Get all Instance Types for the org. Provider and Tenant roles are inferred from the org's membership. User must have authorization role with `PROVIDER_ADMIN` or `TENANT_ADMIN` suffix. Results are returned from both Provider and Tenant perspectives when the org has both roles. parameters: - schema: type: string format: uuid in: query name: siteId description: Filter Instance Types by Site ID - schema: type: string format: uuid in: query name: infrastructureProviderId deprecated: true description: Filter Instance Types by Infrastructure Provider ID. - schema: type: string format: uuid in: query name: tenantId deprecated: true description: Filter Instance Types by Tenant ID. - schema: type: string in: query name: status description: Filter Instance Types by Status - schema: type: string in: query name: query description: 'Search for matches across all Sites. Input will be matched against name, display name, description, labels and status fields' - schema: type: string enum: - InfrastructureProvider - Site in: query name: includeRelation description: Related entity to expand - schema: type: boolean in: query name: includeMachineAssignment description: Include Machine assignments for each Instance Type. Can only be requested by Provider. - schema: type: boolean in: query name: includeAllocationStats description: Include Allocation stats. - schema: type: boolean in: query name: excludeUnallocated description: Excludes InstanceType records that have no allocations from being returned in the result set. Currently can only be requested by Tenant. - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - NAME_ASC - NAME_DESC - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query tags: - Instance Type post: summary: Create an Instance Type operationId: create-instance-type responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/InstanceType' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: x3.large description: 'Part of X family, the X3 Large features increased compute power' infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 labels: region: portland env: staging machineCapabilities: - type: CPU name: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz frequency: 3.0GHz cores: 18 threads: 36 count: 2 - type: Memory name: Corsair Vengeance LPX capacity: 32GB count: 4 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' deprecations: - queryParam: includeMachineAssociation replacedBy: includeMachineAssignment takeActionBy: '2023-07-26T00:00:00Z' notice: '''includeMachineAssociation'' has been deprecated in favor of ''includeMachineAssignment''. Please take action immediately.' - attribute: displayName takeActionBy: '2024-10-30T00:00:00Z' notice: '''displayName'' has been deprecated. Please take action immediately.' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: | Create an Instance Type for Infrastructure Provider. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/InstanceTypeCreateRequest' examples: example-1: value: name: x3.large description: 'Part of X family, the X3 Large features increased compute power' siteId: 8d97fa69-9199-49ff-bcf3-168c62d3874e labels: region: portland env: staging machineCapabilities: - type: CPU name: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz frequency: 3.0GHz count: 2 - type: Memory name: Corsair Vengeance LPX capacity: 32GB count: 4 example-2: value: name: infiniband-mt2910-4x2 description: Machines with 2 active InfiniBand MT2910 NICs siteId: 8d97fa69-9199-49ff-bcf3-168c62d3874e labels: region: portland env: dev machineCapabilities: - type: InfiniBand name: 'MT2910 Family [ConnectX-7]' vendor: Mellanox Technologies count: 4 inactiveDevices: - 1 - 3 tags: - Instance Type '/v2/org/{org}/nico/instance/type/{instanceTypeId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: instanceTypeId in: path required: true description: ID of the Instance Type get: summary: Retrieve an Instance Type tags: - Instance Type responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/InstanceType' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: x3.large description: 'Part of X family, the X3 Large features increased compute power' infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 labels: region: portland env: staging machineCapabilities: - type: CPU name: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz frequency: 3.0GHz cores: 18 threads: 36 count: 2 allocationStats: assigned: 30 total: 10 used: 3 unused: 7 unusedUsable: 7 maxAllocatable: 20 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' deprecations: - queryParam: includeMachineAssociation replacedBy: includeMachineAssignment takeActionBy: '2023-07-26T00:00:00Z' notice: '''includeMachineAssociation'' has been deprecated in favor of ''includeMachineAssignment''. Please take action immediately.' - attribute: displayName takeActionBy: '2024-10-30T00:00:00Z' notice: '''displayName'' has been deprecated. Please take action immediately.' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-instance-type description: |- Get an Instance Type by ID. If the org has an Infrastructure Provider entity that owns the Instance Type, then the Instance Type detail is returned. User must have authorization role with `PROVIDER_ADMIN` suffix. If the org has a Tenant entity and it has a Tenant Account with the Infrastructure Provider of the Instance Type, then the Instance Type detail is returned. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: boolean in: query name: includeMachineAssociation description: Include Machine associations for each Instance Type. Can only be requested by Provider - schema: type: boolean in: query name: includeAllocationStats description: Include Allocation stats. Currently can only be requested by Tenant - schema: type: string enum: - InfrastructureProvider - Site in: query name: includeRelation description: Related entity to expand delete: summary: Delete Instance Type operationId: delete-instance-type responses: '202': description: Accepted '403': $ref: '#/components/responses/ForbiddenError' description: |- Delete an Instance Type by ID. Org must have an Infrastructure Provider entity that owns the Instance Type. User must have authorization role with `PROVIDER_ADMIN` suffix. tags: - Instance Type patch: summary: Update Instance Type operationId: update-instance-type responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/InstanceType' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: x3.large description: Updated version of the X3 Large family of machines infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 labels: region: portland env: staging machineCapabilities: - type: CPU name: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz frequency: 3.0GHz cores: 18 threads: 36 count: 2 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' deprecations: - queryParam: includeMachineAssociation replacedBy: includeMachineAssignment takeActionBy: '2023-07-26T00:00:00Z' notice: '''includeMachineAssociation'' has been deprecated in favor of ''includeMachineAssignment''. Please take action immediately.' - attribute: displayName takeActionBy: '2024-10-30T00:00:00Z' notice: '''displayName'' has been deprecated. Please take action immediately.' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '403': $ref: '#/components/responses/ForbiddenError' description: |- Update an Instance Type by ID. Org must have an Infrastructure Provider entity that owns the Instance Type. User must have authorization role with `PROVIDER_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/InstanceTypeUpdateRequest' examples: example-1: value: description: Updated version of the X3 Large family of machines labels: region: portland env: staging machineCapabilities: - type: CPU name: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz frequency: 3.0GHz cores: 18 threads: 36 count: 2 description: '' tags: - Instance Type '/v2/org/{org}/nico/instance/type/{instanceTypeId}/machine': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: instanceTypeId in: path required: true description: ID of the Instance Type get: summary: Retrieve all Machines/Instance Type associations tags: - Instance Type responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/MachineInstanceType' examples: example-1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: f690ffcd-06b7-430c-9c2a-b9afd18d77c3 machineId: fm100htrh18t1lrjg2pqagkh3sfigr9m65dejvkq168ako07sc0uibpp5q0 instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-instance-type-machine-association description: |- Get all Machines for a given Instance Type Org must have an Infrastructure Provider entity that owns the Instance Type and the Machine. User must have authorization role with `PROVIDER_ADMIN` suffix. parameters: - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query post: summary: Create a Machine/Instance Type association operationId: create-instance-type-machine-association responses: '201': description: Created content: application/json: schema: type: array items: $ref: '#/components/schemas/MachineInstanceType' examples: example-1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: f690ffcd-06b7-430c-9c2a-b9afd18d77c3 machineId: fm100ht68sf2m52idrpslcjkpdj5r3tb3j5o0bkfubhoglbq47u18nknfog instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: f690ffcd-06b7-430c-9c2a-b9afd18d77c3 machineId: fm100htrh18t1lrjg2pqagkh3sfigr9m65dejvkq168ako07sc0uibpp5q0 instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Instance Type description: |- Associate a Machine to an Instance Type Org must have an Infrastructure Provider entity that owns the Instance Type and the Machine. User must have authorization role with `PROVIDER_ADMIN` suffix. The Machine's capabilities must be a superset of the Instance Type's required capabilities for the association to succeed. requestBody: content: application/json: schema: $ref: '#/components/schemas/MachineInstanceTypeCreateRequest' examples: example-1: value: machineIds: - fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g - fm100htrh18t1lrjg2pqagkh3sfigr9m65dejvkq168ako07sc0uibpp5q0 - fm100ht68sf2m52idrpslcjkpdj5r3tb3j5o0bkfubhoglbq47u18nknfog '/v2/org/{org}/nico/instance/type/{instanceTypeId}/machine/{machineAssociationId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: instanceTypeId in: path required: true description: ID of the Instance Type - schema: type: string name: machineAssociationId in: path required: true description: Can be ID of the Machine (`machineId`) or ID of Machine/Instance Type Association (`machineAssociationId`). Use of `machineAssociationId` is now deprecated and will no longer be accepted after July 9th, 2026 00:00 UTC. delete: summary: Delete a Machine/Instance Type association operationId: delete-instance-type-machine-association responses: '202': description: Accepted '403': $ref: '#/components/responses/ForbiddenError' description: |- Delete a Machine's association with an Instance Type. `machineAssociationId` path parameter has been renamed to `machineId`. The path parameter will continue to accept both Machine ID and Machine/Instance Type ID until July 9th, 2026 00:00 UTC. After that time, Machine/Instance Type ID will no longer be accepted. Org must have an Infrastructure Provider entity that owns the Instance Type and the Machine. User must have authorization role with `PROVIDER_ADMIN` suffix. tags: - Instance Type '/v2/org/{org}/nico/instance': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all Instances tags: - Instance responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Instance' examples: example-1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-monitor-1 description: Node for monitoring Spark tenantId: f97df110-f4de-492e-8849-4a6af68026b0 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b controllerInstanceId: 158fc2bc-f2fb-4e1f-a5a4-2211062d14df ipxeScript: null alwaysBootWithCustomIpxe: false userData: null labels: region: portland env: staging isUpdatePending: false networkSecurityGroupId: 'c602eb90-3039-11f0-997a-b38d4fc8389e,' networkSecurityGroupPropagationDetails: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 detailedStatus: Partial status: Synchronizing details: '' unpropagatedInstanceIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 relatedInstanceIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 networkSecurityGroupInherited: false serialConsoleUrl: 'ssh://user@nico.acme.com' interfaces: - id: 64d2028c-ae87-4069-a624-66089d957ef9 instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a isPhysical: true device: null deviceInstance: null virtualFunctionId: null macAddress: 2F-FC-34-AE-9C-2A ipAddresses: - 200.32.11.190 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' infinibandInterfaces: - id: c518a0e8-3f49-4a1a-8935-a6d3dee6911e instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 partitionId: 05ef7e84-1d4e-4e4d-980d-38589479a0fe device: 'MT2910 Family [ConnectX-7]' deviceInstance: 0 isPhysical: true virtualFunctionId: null guid: 946dae0300339498 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' nvLinkInterfaces: - id: fc19ab3f-1e52-4846-91bd-98743ff2752c instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 nvLinkDomainId: 59202b81-65fb-45ec-b3b8-91ab0ad3f34a deviceInstance: 0 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: c0ae6ec4-9a77-4358-baad-ee8cc3332c91 instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 nvLinkDomainId: 59202b81-65fb-45ec-b3b8-91ab0ad3f34a deviceInstance: 1 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: aa44ff62-d86b-4db6-9fa4-90a19b05be01 instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 nvLinkDomainId: 59202b81-65fb-45ec-b3b8-91ab0ad3f34a deviceInstance: 2 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: a403d1ca-2c07-410a-9678-3eb44d570ad9 instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 nvLinkDomainId: 59202b81-65fb-45ec-b3b8-91ab0ad3f34a deviceInstance: 3 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' dpuExtensionServiceDeployments: [] sshKeyGroupIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 sshKeyGroups: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: reno-integration-sre description: SRE access SSH keys for Reno Integration version: fbc692b61ffef6fbfc38a3833f6b7e7ae508da75 status: Syncing created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' tpmEkCertificate: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMxVENDQWJ5Z0F3SUJBZ0lVTEE1ZHFPK1E5OXZQM3VYRTRKcjBncVRtOW93d0RRWUpLb1pJaHZjTkFRRUwKQlFBd0xqRUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2s1MmFXUnBZU0JEYjNKNw== status: Ready statusHistory: - status: BootCompleted message: The Instance successfully completed boot up created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' deprecations: - attribute: sshkeygroups replacedBy: sshKeyGroups takeActionBy: '2025-09-04T00:00:00Z' notice: '''sshkeygroups'' is being deprecated in favor of ''sshKeyGroups''. Please take action prior to the specified date.' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' example-2: value: - id: 37804b21-0a00-4668-81cb-af9e1b07ad3e name: spark-monitor-vpc-prefix-1 description: Node for monitoring Spark VPC prefix region tenantId: f97df110-f4de-492e-8849-4a6af68026b0 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b controllerInstanceId: 37804b21-0a00-4668-81cb-af9e1b07ad3e ipxeScript: null alwaysBootWithCustomIpxe: false userData: null networkSecurityGroupId: c602eb90-3039-11f0-997a-b38d4fc8389e networkSecurityGroupPropagationDetails: id: 37804b21-0a00-4668-81cb-af9e1b07ad3e detailedStatus: Partial status: Synchronizing details: '' unpropagatedInstanceIds: - 37804b21-0a00-4668-81cb-af9e1b07ad3e relatedInstanceIds: - 37804b21-0a00-4668-81cb-af9e1b07ad3e networkSecurityGroupInherited: false labels: region: portland env: staging isUpdatePending: false serialConsoleUrl: 'ssh://user@nico.acme.com' interfaces: - id: 07cd865e-5512-4fe9-8063-8f4c8f442b1a instanceId: 37804b21-0a00-4668-81cb-af9e1b07ad3e vpcPrefixId: 915443b6-d164-48d4-89dd-041968e1f9d7 isPhysical: true virtualFunctionId: null macAddress: 2F-FC-34-AE-9C-2A ipAddresses: - 200.32.11.190 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' infinibandInterfaces: - id: c518a0e8-3f49-4a1a-8935-a6d3dee6911e instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 partitionId: 05ef7e84-1d4e-4e4d-980d-38589479a0fe device: 'MT2910 Family [ConnectX-7]' deviceInstance: 0 isPhysical: true virtualFunctionId: null guid: 946dae0300339498 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' dpuExtensionServiceDeployments: - id: 3951ec37-d78f-4ad7-92e1-3fdc76ccf246 dpuExtensionService: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: busybox serviceType: KubernetesPod latestVersion: V1-T1761856992374052 status: Ready version: V1-T1761856992374052 status: Running created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' sshKeyGroupIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 sshKeyGroups: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: reno-integration-sre description: SRE access SSH keys for Reno Integration version: fbc692b61ffef6fbfc38a3833f6b7e7ae508da75 status: Syncing created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' status: Ready statusHistory: - status: BootCompleted message: The Instance successfully completed boot up created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' deprecations: - attribute: sshkeygroups replacedBy: sshKeyGroups takeActionBy: '2025-09-04T00:00:00Z' notice: '''sshkeygroups'' is being deprecated in favor of ''sshKeyGroups'' and will be removed on September 9th, 2025. Please update your usage accordingly.' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' example-3: value: - id: bba44e11-facc-4d7f-a2b5-ffdca3935b8b name: spark-monitor-vpc-prefix-multi-dpu description: Node for monitoring Spark VPC prefix region with Multi DPU tenantId: f97df110-f4de-492e-8849-4a6af68026b0 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 instanceTypeId: 9fda8e2b-9656-4f96-9d79-14d03951e2d2 vpcId: 745f757f-894b-45ef-be63-b1044e76a87d machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b controllerInstanceId: 8d76c56e-4a1c-4862-bf1c-8c2b794f3315 ipxeScript: null alwaysBootWithCustomIpxe: false userData: null networkSecurityGroupId: c602eb90-3039-11f0-997a-b38d4fc8389e networkSecurityGroupPropagationDetails: id: 37804b21-0a00-4668-81cb-af9e1b07ad3e detailedStatus: Partial status: Synchronizing details: '' unpropagatedInstanceIds: - 37804b21-0a00-4668-81cb-af9e1b07ad3e relatedInstanceIds: - 37804b21-0a00-4668-81cb-af9e1b07ad3e networkSecurityGroupInherited: false labels: region: portland env: staging isUpdatePending: false serialConsoleUrl: 'ssh://user@nico.acme.com' interfaces: - id: fa84f327-cad4-458b-94b7-c320cdf48d4d instanceId: bba44e11-facc-4d7f-a2b5-ffdca3935b8b vpcPrefixId: 915443b6-d164-48d4-89dd-041968e1f9d7 isPhysical: true device: MT42822 BlueField-2 integrated ConnectX-6 Dx network controller deviceInstance: 0 virtualFunctionId: null macAddress: 'A0:88:C2:0C:91:B8' ipAddresses: - 10.217.98.143 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: fa84f327-cad4-458b-94b7-c320cdf48d4d instanceId: bba44e11-facc-4d7f-a2b5-ffdca3935b8b vpcPrefixId: 56944877-3bc0-48c9-8290-21f9e0e31eca isPhysical: true device: MT42822 BlueField-2 integrated ConnectX-6 Dx network controller deviceInstance: 1 virtualFunctionId: null macAddress: 'A0:88:C2:0C:91:20' ipAddresses: - 10.217.98.149 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' infinibandInterfaces: [] dpuExtensionServiceDeployments: [] sshKeyGroupIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 sshKeyGroups: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: reno-integration-sre description: SRE access SSH keys for Reno Integration version: fbc692b61ffef6fbfc38a3833f6b7e7ae508da75 status: Syncing created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' status: Ready statusHistory: - status: BootCompleted message: The Instance successfully completed boot up created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' deprecations: - attribute: sshkeygroups replacedBy: sshKeyGroups takeActionBy: '2025-09-04T00:00:00Z' notice: '''sshkeygroups'' is being deprecated in favor of ''sshKeyGroups'' and will be removed on September 9th, 2025. Please update your usage accordingly.' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-instance description: | Get all Instances for Tenant. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string format: uuid in: query name: infrastructureProviderId description: Filter by Infrastructure Provider ID - schema: type: string format: uuid in: query name: siteId description: Filter by Site ID. Can be specified multiple times to filter on more than one site. - schema: type: string format: uuid in: query name: vpcId description: Filter by VPC ID. Can be specified multiple times to filter on more than one VPC. - schema: type: string format: uuid in: query name: instanceTypeId description: Filter by instance type ID. Can be specified multiple times to filter on more than one instance type. - schema: type: string format: uuid in: query name: operatingSystemId description: Filter by operating system ID. Can be specified multiple times to filter on more than one operating system. - schema: type: string in: query name: machineId description: Filter by machine ID. Can be specified multiple times to filter on more than one machine. - schema: type: string in: query name: name description: Filter by Instance name - schema: type: string in: query name: status description: Filter Instances by Status. Can be specified multiple times to filter on more than one status. - schema: type: string in: query name: ipAddress description: Filter by IP address. Can be specified multiple times to filter on more than one IP address. - schema: type: string in: query name: query description: 'Search for matches across all Sites. Input will be matched against name, description, status, and labels fields' - schema: type: string enum: - InfrastructureProvider - Tenant - Site - InstanceType - Allocation - VPC - Machine - OperatingSystem - NetworkSecurityGroup in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - NAME_ASC - NAME_DESC - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC - MACHINE_ID_ASC - MACHINE_ID_DESC - TENANT_ORG_DISPLAY_NAME_ASC - TENANT_ORG_DISPLAY_NAME_DESC - INSTANCE_TYPE_NAME_ASC - INSTANCE_TYPE_NAME_DESC - HAS_INFINIBAND_ASC - HAS_INFINIBAND_DESC in: query name: orderBy description: Ordering for pagination query - schema: type: string in: query name: networkSecurityGroupId description: Filter by NetworkSecurityGroup ID. Can be specified multiple times to filter on more than one Network Security Group. post: summary: Create an Instance operationId: create-instance responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/Instance' examples: With iPXE override and Ethernet/InfiniBand Interfaces: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-monitor-1 description: Node for monitoring Spark tenantId: f97df110-f4de-492e-8849-4a6af68026b0 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b controllerInstanceId: null ipxeScript: |- #!ipxe kernel http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux initrd=initrd.gz initrd http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz boot || imgfree shell alwaysBootWithCustomIpxe: true userData: |- #cloud-config autoinstall: apt: geoip: true preserve_sources_list: false primary: - arches: [amd64, i386] uri: http://archive.ubuntu.com/ubuntu - arches: [default] uri: http://ports.ubuntu.com/ubuntu-ports labels: region: portland env: staging isUpdatePending: false serialConsoleUrl: 'ssh://user@nico.acme.com' interfaces: - id: 64d2028c-ae87-4069-a624-66089d957ef9 instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a isPhysical: true virtualFunctionId: null macAddress: null ipAddresses: [] status: Pending created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' infinibandInterfaces: - id: c518a0e8-3f49-4a1a-8935-a6d3dee6911e instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 partitionId: 05ef7e84-1d4e-4e4d-980d-38589479a0fe device: 'MT2910 Family [ConnectX-7]' deviceInstance: 0 isPhysical: true virtualFunctionId: null guid: 946dae0300339498 status: Pending created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' nvLinkInterfaces: - id: fc19ab3f-1e52-4846-91bd-98743ff2752c instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 nvLinkDomainId: 59202b81-65fb-45ec-b3b8-91ab0ad3f34a deviceInstance: 0 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' dpuExtensionServiceDeployments: [] sshKeyGroupIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 sshKeyGroups: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: reno-integration-sre description: SRE access SSH keys for Reno Integration version: fbc692b61ffef6fbfc38a3833f6b7e7ae508da75 status: Syncing created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' deprecations: - attribute: sshkeygroups replacedBy: sshKeyGroups takeActionBy: '2025-09-04T00:00:00Z' notice: '''sshkeygroups'' is being deprecated in favor of ''sshKeyGroups''. Please take action prior to the specified date.' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' With DPU Extension Service Deployments: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-monitor-1 description: Node for monitoring Spark tenantId: f97df110-f4de-492e-8849-4a6af68026b0 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b controllerInstanceId: null labels: region: portland env: staging isUpdatePending: false serialConsoleUrl: 'ssh://user@nico.acme.com' interfaces: - id: 64d2028c-ae87-4069-a624-66089d957ef9 instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a isPhysical: true virtualFunctionId: null macAddress: null ipAddresses: [] status: Pending created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' dpuExtensionServiceDeployments: - id: 3951ec37-d78f-4ad7-92e1-3fdc76ccf246 dpuExtensionService: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: busybox serviceType: KubernetesPod latestVersion: V1-T1761856992374052 status: Ready version: V1-T1761856992374052 status: Running created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' sshKeyGroupIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 sshKeyGroups: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: reno-integration-sre description: SRE access SSH keys for Reno Integration version: fbc692b61ffef6fbfc38a3833f6b7e7ae508da75 status: Syncing created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: | Create an Instance for Tenant. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/InstanceCreateRequest' examples: With Subnet/InfiniBand Interfaces & iPXE Override: value: name: spark-monitor-1 description: Node for monitoring Spark tenantId: f97df110-f4de-492e-8849-4a6af68026b0 instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b ipxeScript: |- #!ipxe kernel http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux initrd=initrd.gz initrd http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz boot || imgfree shell alwaysBootWithCustomIpxe: true userData: |- #cloud-config autoinstall: apt: geoip: true preserve_sources_list: false primary: - arches: [amd64, i386] uri: http://archive.ubuntu.com/ubuntu - arches: [default] uri: http://ports.ubuntu.com/ubuntu-ports labels: region: portland env: staging interfaces: - subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a isPhysical: true infinibandInterfaces: - partitionId: 4f4decba-7d7f-46b9-9e5f-e5d71c2e0666 device: 'MT2910 Family [ConnectX-7]' deviceInstance: 0 isPhysical: true virtualFunctionId: null nvLinkInterfaces: - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 0 - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 1 - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 2 - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 3 sshKeyGroupIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 With Machine ID & VPC Prefix Interface: value: name: spark-monitor-3 description: Node for monitoring Spark tenantId: f97df110-f4de-492e-8849-4a6af68026b0 machineId: fm100htq4o8j3bere298as19mdgnbu6hg6guiqp32tghj7gogv05hlr7lgg vpcId: ebcd2d2a-deca-4ac4-b079-d7a97fff8a6b operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b labels: region: portland env: staging interfaces: - vpcPrefixId: 000bc42b-f946-472e-83d4-ddf7e365e148 isPhysical: true sshKeyGroupIds: - a7bf2f9c-12f0-4673-be47-12be6d9e16c8 With Multiple Ethernet Device Interfaces: value: name: spark-monitor-3 description: Node for monitoring Spark tenantId: f97df110-f4de-492e-8849-4a6af68026b0 machineId: fm100htq4o8j3bere298as19mdgnbu6hg6guiqp32tghj7gogv05hlr7lgg vpcId: ebcd2d2a-deca-4ac4-b079-d7a97fff8a6b operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b labels: region: portland env: staging interfaces: - vpcPrefixId: 8c7422d7-abf5-41ae-8b6d-9d62442a8b31 isPhysical: true device: MT43244 BlueField-3 integrated ConnectX-7 network controller deviceInstance: 0 - vpcPrefixId: 8988dbd3-f038-4338-b961-8e5cbf89a77e isPhysical: true device: MT43244 BlueField-3 integrated ConnectX-7 network controller deviceInstance: 1 sshKeyGroupIds: - a7bf2f9c-12f0-4673-be47-12be6d9e16c8 With DPU Extension Services: value: name: llm-training-1 description: Node for training LLMs tenantId: f97df110-f4de-492e-8849-4a6af68026b0 machineId: fm100htq4o8j3bere298as19mdgnbu6hg6guiqp32tghj7gogv05hlr7lgg vpcId: ebcd2d2a-deca-4ac4-b079-d7a97fff8a6b operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b labels: region: portland env: staging interfaces: - vpcPrefixId: 8c7422d7-abf5-41ae-8b6d-9d62442a8b31 isPhysical: true device: MT43244 BlueField-3 integrated ConnectX-7 network controller deviceInstance: 0 - vpcPrefixId: 8988dbd3-f038-4338-b961-8e5cbf89a77e isPhysical: true device: MT43244 BlueField-3 integrated ConnectX-7 network controller deviceInstance: 1 dpuExtensionServiceDeployments: - dpuExtensionServiceId: 3bddb7b4-0963-4278-b311-c212dc758357 version: V1-T1761856992374052 - dpuExtensionServiceId: cd4a8168-c206-430a-9a4b-bf7dbbac3b40 version: V1-T1762294647497908 sshKeyGroupIds: - a7bf2f9c-12f0-4673-be47-12be6d9e16c8 tags: - Instance '/v2/org/{org}/nico/instance/batch': parameters: - schema: type: string name: org in: path required: true description: Name of the Org post: summary: Batch Create Instances operationId: batch-create-instance responses: '201': description: Created content: application/json: schema: type: array items: $ref: '#/components/schemas/Instance' examples: Batch created Instances: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: worker-abc123 description: Worker node for distributed training tenantId: f97df110-f4de-492e-8849-4a6af68026b0 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b controllerInstanceId: null status: Pending created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: 85c5e7b2-89f1-4e32-9d3a-8e1f5a2c7d90 name: worker-def456 description: Worker node for distributed training tenantId: f97df110-f4de-492e-8849-4a6af68026b0 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 machineId: gn200iu5w5ndf3rtukol9081ook4jf7fdfl5nuok38qfb5lsf6hub50kh1h operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b controllerInstanceId: null status: Pending created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: | Batch create multiple Instances for Tenant with NVLink domain-aware machine allocation. This endpoint creates multiple instances in a single atomic transaction. All instances share the same configuration (interfaces, OS, SSH keys, etc.) but are assigned different machines. When `topologyOptimized` is true (default), all instances must be allocated on machines within the same NVLink domain. If insufficient machines are available in a single NVLink domain, the request will fail. When `topologyOptimized` is false, instances can be spread across different NVLink domains. Instance names are automatically generated using the `namePrefix` with a random 6-character suffix (e.g., "worker" becomes "worker-abc123", "worker-def456"). Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchInstanceCreateRequest' examples: Topology-optimized batch with InfiniBand: value: namePrefix: gpu-worker count: 4 description: GPU worker nodes for distributed training tenantId: f97df110-f4de-492e-8849-4a6af68026b0 instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b topologyOptimized: true interfaces: - subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a isPhysical: true infinibandInterfaces: - partitionId: 4f4decba-7d7f-46b9-9e5f-e5d71c2e0666 device: 'MT2910 Family [ConnectX-7]' deviceInstance: 0 isPhysical: true nvLinkInterfaces: - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 0 - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 1 sshKeyGroupIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 Cross-domain batch with VPC Prefix: value: namePrefix: inference-node count: 8 description: Inference nodes spread across NVLink domains tenantId: f97df110-f4de-492e-8849-4a6af68026b0 instanceTypeId: 83e71f8f-65d3-44ba-92ba-19daac2e497a vpcId: ebcd2d2a-deca-4ac4-b079-d7a97fff8a6b operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b topologyOptimized: false labels: workload: inference tier: production interfaces: - vpcPrefixId: 000bc42b-f946-472e-83d4-ddf7e365e148 isPhysical: true sshKeyGroupIds: - a7bf2f9c-12f0-4673-be47-12be6d9e16c8 tags: - Instance '/v2/org/{org}/nico/instance/{instanceId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: instanceId in: path required: true description: ID of the Instance get: summary: Retrieve Instance tags: - Instance responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Instance' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-monitor-1 description: Node for monitoring Spark tenantId: f97df110-f4de-492e-8849-4a6af68026b0 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b controllerInstanceId: null ipxeScript: null alwaysBootWithCustomIpxe: false userData: null networkSecurityGroupId: c602eb90-3039-11f0-997a-b38d4fc8389e networkSecurityGroupPropagationDetails: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 detailedStatus: Partial status: Synchronizing details: '' unpropagatedInstanceIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 relatedInstanceIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 networkSecurityGroupInherited: false labels: region: portland env: staging isUpdatePending: false serialConsoleUrl: 'ssh://user@nico.acme.com' interfaces: - id: 64d2028c-ae87-4069-a624-66089d957ef9 instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a isPhysical: true virtualFunctionId: null macAddress: 2F-FC-34-AE-9C-2A ipAddresses: - 200.32.11.190 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' infinibandInterfaces: - id: c518a0e8-3f49-4a1a-8935-a6d3dee6911e instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 partitionId: 4f4decba-7d7f-46b9-9e5f-e5d71c2e0666 device: 'MT2910 Family [ConnectX-7]' deviceInstance: 0 isPhysical: true virtualFunctionId: null guid: 946dae0300339498 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' nvLinkInterfaces: - id: fc19ab3f-1e52-4846-91bd-98743ff2752c instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 nvLinkDomainId: 59202b81-65fb-45ec-b3b8-91ab0ad3f34a deviceInstance: 0 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: c0ae6ec4-9a77-4358-baad-ee8cc3332c91 instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 nvLinkDomainId: 59202b81-65fb-45ec-b3b8-91ab0ad3f34a deviceInstance: 1 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: aa44ff62-d86b-4db6-9fa4-90a19b05be01 instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 nvLinkDomainId: 59202b81-65fb-45ec-b3b8-91ab0ad3f34a deviceInstance: 2 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: a403d1ca-2c07-410a-9678-3eb44d570ad9 instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 nvLinkDomainId: 59202b81-65fb-45ec-b3b8-91ab0ad3f34a deviceInstance: 3 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' dpuExtensionServiceDeployments: - id: 3951ec37-d78f-4ad7-92e1-3fdc76ccf246 dpuExtensionService: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: busybox serviceType: KubernetesPod latestVersion: V1-T1761856992374052 status: Ready version: V1-T1761856992374052 status: Running created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' sshKeyGroupIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 sshKeyGroups: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: reno-integration-sre description: SRE access SSH keys for Reno Integration version: fbc692b61ffef6fbfc38a3833f6b7e7ae508da75 status: Syncing created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' tpmEkCertificate: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMxVENDQWJ5Z0F3SUJBZ0lVTEE1ZHFPK1E5OXZQM3VYRTRKcjBncVRtOW93d0RRWUpLb1pJaHZjTkFRRUwKQlFBd0xqRUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2s1MmFXUnBZU0JEYjNKNw== status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' deprecations: - attribute: sshkeygroups replacedBy: sshKeyGroups takeActionBy: '2025-09-04T00:00:00Z' notice: '''sshkeygroups'' is being deprecated in favor of ''sshKeyGroups''. Please take action prior to the specified date.' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-instance description: | Get an Instance by ID Org must have a Tenant entity. Instance must belong to Tenant. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string enum: - InfrastructureProvider - Tenant - Site - InstanceType - Allocation - VPC - OperatingSystem - NetworkSecurityGroup in: query name: includeRelation description: Related entity to expand delete: summary: Delete Instance operationId: delete-instance responses: '202': description: Accepted description: |- Delete an Instance by ID Org must have a Tenant entity. Instance must belong to Tenant. User must have authorization role with `TENANT_ADMIN` suffix. tags: - Instance requestBody: content: application/json: schema: $ref: '#/components/schemas/InstanceDeleteRequest' examples: Example 1: value: machineHealthIssue: category: Network summary: Machine has DPU connectivity error isRepairTenant: false description: Optional request data to report health issues with the underlying Machine patch: summary: Update Instance operationId: update-instance responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Instance' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-monitor-2 description: Spark Monitor Node 1 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b controllerInstanceId: 158fc2bc-f2fb-4e1f-a5a4-2211062d14df ipxeScript: null alwaysBootWithCustomIpxe: false userData: null labels: region: portland env: staging isUpdatePending: false serialConsoleUrl: 'ssh://user@nico.acme.com' interfaces: - id: 64d2028c-ae87-4069-a624-66089d957ef9 instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a isPhysical: true virtualFunctionId: null macAddress: 2F-FC-34-AE-9C-2A ipAddresses: - 200.32.11.190 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' infinibandInterfaces: - id: c518a0e8-3f49-4a1a-8935-a6d3dee6911e instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 partitionId: 550e8400-e29b-41d4-a716-446655440000 device: 'MT2910 Family [ConnectX-7]' deviceInstance: 0 isPhysical: true virtualFunctionId: null guid: 946dae0300339498 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: 3cc0206e-8ac9-4572-8f72-e1dd124c4351 instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 partitionId: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 device: 'MT2910 Family [ConnectX-7]' deviceInstance: 1 isPhysical: true virtualFunctionId: null guid: 946dae0300339498 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: 84a2cf1e-73fc-42f4-974e-33a4e9889eb9 instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 partitionId: 8b05d5c3-8de4-48c8-8d1c-399a8abc3ab8 device: 'MT2910 Family [ConnectX-7]' deviceInstance: 2 isPhysical: true virtualFunctionId: null guid: 946dae0300339498 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' dpuExtensionServiceDeployments: - id: 3951ec37-d78f-4ad7-92e1-3fdc76ccf246 dpuExtensionService: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: busybox serviceType: KubernetesPod latestVersion: V1-T1761856992374052 status: Ready version: V1-T1761856992374052 status: Running created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: 60d3ad40-62c6-44ca-b6b1-74bc6dd04f1c dpuExtensionService: id: cd4a8168-c206-430a-9a4b-bf7dbbac3b40 name: openssh-server serviceType: KubernetesPod latestVersion: V1-T1762294647497908 status: Ready version: V1-T1762294647497908 status: Running created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' sshKeyGroupIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 sshKeyGroups: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: reno-integration-sre description: SRE access SSH keys for Reno Integration version: fbc692b61ffef6fbfc38a3833f6b7e7ae508da75 status: Syncing created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' tpmEkCertificate: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMxVENDQWJ5Z0F3SUJBZ0lVTEE1ZHFPK1E5OXZQM3VYRTRKcjBncVRtOW93d0RRWUpLb1pJaHZjTkFRRUwKQlFBd0xqRUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2s1MmFXUnBZU0JEYjNKNw== status: Rebooting statusHistory: - status: Rebooting message: 'Reboot request received, processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - status: Provisioning message: Instance is being provisioned on Site created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' deprecations: - attribute: sshkeygroups replacedBy: sshKeyGroups takeActionBy: '2025-09-04T00:00:00Z' notice: '''sshkeygroups'' is being deprecated in favor of ''sshKeyGroups''. Please take action prior to the specified date.' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Update an Instance by ID Org must have a Tenant entity. Instance must belong to Tenant. User must have authorization role with `TENANT_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/InstanceUpdateRequest' examples: example-1: value: name: spark-monitor-1 description: Spark Monitor Node 1 triggerReboot: true rebootWithCustomIpxe: true applyUpdatesOnReboot: true sshKeyGroupIds: - a7bf2f9c-12f0-4673-be47-12be6d9e16c8 labels: region: portland env: staging interfaces: - vpcPrefixId: 1f492faa-2963-4f21-aab5-9f00b2e40119 device: MT42822 BlueField-2 integrated ConnectX-6 Dx network controller deviceInstance: 0 virtualFunctionId: null isPhysical: true - vpcPrefixId: 1f3677dd-5794-4e57-b9b0-aebaf49b84fe device: MT42822 BlueField-2 integrated ConnectX-6 Dx network controller deviceInstance: 0 virtualFunctionId: 1 isPhysical: false - vpcPrefixId: 29e6f51b-145c-4f89-8c26-accaa8328398 device: MT42822 BlueField-2 integrated ConnectX-6 Dx network controller deviceInstance: 0 virtualFunctionId: 2 isPhysical: false infinibandInterfaces: - partitionId: 550e8400-e29b-41d4-a716-446655440000 device: 'MT2910 Family [ConnectX-7]' deviceInstance: 0 isPhysical: true - partitionId: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 device: 'MT2910 Family [ConnectX-7]' deviceInstance: 1 isPhysical: false - partitionId: 8b05d5c3-8de4-48c8-8d1c-399a8abc3ab8 device: 'MT2910 Family [ConnectX-7]' deviceInstance: 2 isPhysical: false nvLinkInterfaces: - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 0 - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 1 - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 2 - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 3 dpuExtensionServiceDeployments: - dpuExtensionServiceId: 3bddb7b4-0963-4278-b311-c212dc758357 version: V1-T1761856992374052 - dpuExtensionServiceId: cd4a8168-c206-430a-9a4b-bf7dbbac3b40 version: V1-T1762294647497908 description: '' tags: - Instance '/v2/org/{org}/nico/instance/{instanceId}/status-history': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: instanceId in: path required: true description: ID of the Instance get: summary: Retrieve Instance status history tags: - Instance responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/StatusDetail' examples: Example 1: value: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-instance-status-history description: | Get Instance status history Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: integer in: query name: pageNumber description: Page number for pagination query - schema: type: integer in: query name: pageSize description: Page size for pagination query - schema: type: string in: query name: orderBy description: Ordering for pagination query '/v2/org/{org}/nico/instance/{instanceId}/interface': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: instanceId in: path required: true description: ID of the Instance get: summary: Retrieve all Interfaces tags: - Instance responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Interface' examples: Example 1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 instanceId: 64d2028c-ae87-4069-a624-66089d957ef9 subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a isPhysical: true virtualFunctionId: null macAddress: 2F-FC-34-AE-9C-2A ipAddresses: - 200.32.11.190 status: Pending created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 instanceId: d57b373a-5a59-4fa4-b080-50e9a1095aeb vpcPrefixId: 26be5f71-3d51-487b-a940-6513c7725cfd isPhysical: true virtualFunctionId: null macAddress: 2F-FC-34-AE-9C-2A ipAddresses: - 200.32.11.190 status: Pending created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-interface description: |- Get all Interfaces for an Instance Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string in: query name: status description: Filter Interfaces by Status - schema: type: string enum: - Instance - Subnet in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query '/v2/org/{org}/nico/instance/{instanceId}/infiniband-interface': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: instanceId in: path required: true description: ID of the Instance get: summary: Retrieve all Instance InfiniBand Interfaces tags: - Instance responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/InfiniBandInterface' examples: Example 1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 instanceId: 64d2028c-ae87-4069-a624-66089d957ef9 partitionId: 05ef7e84-1d4e-4e4d-980d-38589479a0fe device: 'MT2910 Family [ConnectX-7]' deviceInstance: 0 isPhysical: true virtualFunctionId: null guid: 946dae0300339498 status: Provisioning created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: c518a0e8-3f49-4a1a-8935-a6d3dee6911e instanceId: 64d2028c-ae87-4069-a624-66089d957ef9 partitionId: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 device: 'MT2910 Family [ConnectX-7]' deviceInstance: 1 isPhysical: false virtualFunctionId: 1 guid: 946dae0300339499 status: Provisioning created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-instance-infiniband-interface description: |- Get all InfiniBand Interfaces for an Instance Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string in: query name: status description: Filter InfiniBand Interfaces by Status - schema: type: string enum: - Instance - InfiniBandPartition in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query '/v2/org/{org}/nico/instance/{instanceId}/nvlink-interface': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: instanceId in: path required: true description: ID of the Instance get: summary: Retrieve all Instance NVLink Interfaces tags: - Instance responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/NVLinkInterface' examples: Example 1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 instanceId: 64d2028c-ae87-4069-a624-66089d957ef9 nvLinkLogicalPartitionId: 05ef7e84-1d4e-4e4d-980d-38589479a0fe nvLinkDomainId: 4b145552-0d8f-45ff-b652-eed105f93e50 deviceInstance: 0 gpuGuid: '5108732638879268442' status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: 8a7c3b21-1ffc-4c78-9a00-2a6f3859d099 instanceId: 64d2028c-ae87-4069-a624-66089d957ef9 nvLinkLogicalPartitionId: 05ef7e84-1d4e-4e4d-980d-38589479a0fe nvLinkDomainId: 4b145552-0d8f-45ff-b652-eed105f93e50 deviceInstance: 1 gpuGuid: '5108732638879268443' status: Provisioning created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-instance-nvlink-interface description: |- Get all NVLink Interfaces for an Instance Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string in: query name: status description: Filter NVLink Interfaces by Status. Can be specified multiple times to filter on more than one status. - schema: type: string enum: - Instance - NVLinkLogicalPartition in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query '/v2/org/{org}/nico/infiniband-interface': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all InfiniBand Interfaces tags: - InfiniBand Partition responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/InfiniBandInterface' examples: Example 1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 instanceId: 64d2028c-ae87-4069-a624-66089d957ef9 partitionId: 05ef7e84-1d4e-4e4d-980d-38589479a0fe device: 'MT2910 Family [ConnectX-7]' deviceInstance: 0 isPhysical: true virtualFunctionId: null guid: 946dae0300339498 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-infiniband-interface description: |- Get all InfiniBand Interfaces Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string in: query name: siteId description: Filter InfiniBand Interfaces by Site ID. Can be specified multiple times to filter on more than one ID. - schema: type: string in: query name: instanceId description: Filter InfiniBand Interfaces by Instance ID. Can be specified multiple times to filter on more than one ID. - schema: type: string in: query name: infinibandPartitionId description: Filter InfiniBand Interfaces by InfiniBand Partition ID. Can be specified multiple times to filter on more than one ID. - schema: type: string in: query name: status description: Filter InfiniBand Interfaces by Status. Can be specified multiple times to filter on more than one status. - schema: type: string enum: - Instance - InfiniBandPartition - Site in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query '/v2/org/{org}/nico/nvlink-interface': parameters: - schema: type: string name: org in: path required: true description: Name of the NGC Org get: summary: Retrieve all NVLink Interfaces tags: - NVLink Logical Partition responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/NVLinkInterface' examples: Example 1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 instanceId: 64d2028c-ae87-4069-a624-66089d957ef9 nvLinkLogicalPartitionId: 05ef7e84-1d4e-4e4d-980d-38589479a0fe nvLinkDomainId: 4b145552-0d8f-45ff-b652-eed105f93e50 deviceInstance: 0 gpuGuid: '5108732638879268442' status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-nvlink-interface description: |- Get all NVLink Interfaces Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string in: query name: status description: Filter NVLink Interfaces by Status. Can be specified multiple times to filter on more than one status. - schema: type: string in: query name: siteId description: Filter NVLink Interfaces by Site ID. Can be specified multiple times to filter on more than one ID. - schema: type: string in: query name: instanceId description: Filter NVLink Interfaces by Instance ID. Can be specified multiple times to filter on more than one ID. - schema: type: string in: query name: nvLinkLogicalPartitionId description: Filter NVLink Interfaces by NVLink Logical Partition ID. Can be specified multiple times to filter on more than one ID. - schema: type: string in: query name: nvLinkDomainId description: Filter NVLink Interfaces by NVLink Domain ID. Can be specified multiple times to filter on more than one ID. - schema: type: string enum: - Instance - NVLinkLogicalPartition in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query '/v2/org/{org}/nico/operating-system': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all Operating Systems tags: - Operating System responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/OperatingSystem' examples: example-1: value: - id: 42b0f982-5c61-4d2f-a018-41ece61f4641 name: debian-12-amd64 description: Official Debian 12 for AMD/Intel infrastructureProviderId: null tenantId: f97df110-f4de-492e-8849-4a6af68026b0 type: Image imageUrl: 'https://saimei.ftp.acc.umu.se/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2' imageSha: 2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae imageAuthType: Bearer imageAuthToken: acbd18db4cc2f85cedef654fccc4a4d8 imageDisk: /dev/sda rootFsId: 6c2ac315-3040-4728-94eb-b66d320206c1 ipxeScript: null userData: null isCloudInit: true phoneHomeEnabled: false allowOverride: false siteAssociations: - site: id: 4b36152c-f48d-4bcc-a722-0fd8e2ad209a name: sjc-central-1 infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e isSerialConsoleEnabled: true isOnline: true capabilities: nativeNetworking: false networkSecurityGroup: true nvLinkPartition: false flow: false imageBasedOperatingSystem: false status: Registered status: Syncing version: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - site: id: 219b7913-4494-4589-940e-e78ca879b302 name: sc-west-4 infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e isSerialConsoleEnabled: true isOnline: true capabilities: nativeNetworking: false networkSecurityGroup: false nvLinkPartition: false flow: false imageBasedOperatingSystem: false status: Registered status: Syncing version: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' isActive: true deactivationNote: null status: Syncing statusHistory: - status: Syncing message: 'received Operating System creation request, syncing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' example-2: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: ubuntu-22.04 description: Ubuntu 22.04 infrastructureProviderId: null tenantId: f97df110-f4de-492e-8849-4a6af68026b0 type: iPXE ipxeScript: |- #!ipxe kernel http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux initrd=initrd.gz initrd http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz boot || imgfree shell userData: |- #cloud-config autoinstall: apt: geoip: true preserve_sources_list: false primary: - arches: [amd64, i386] uri: http://archive.ubuntu.com/ubuntu - arches: [default] uri: http://ports.ubuntu.com/ubuntu-ports isCloudInit: true phoneHomeEnabled: false allowOverride: false imageAuthToken: null imageAuthType: null imageDisk: null imageSha: null imageUrl: null rootFsId: null rootFsLabel: null isActive: true deactivationNote: null status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-operating-system description: |- Get an Operating System by ID If the Operating System has `infrastructureProviderId` set, then org must have an Infrastructure Provider entity and its ID should match the Operating System Infrastructure Provider ID. User must have authorization role with `PROVIDER_ADMIN` suffix. If the Operating System has `tenantId` set, then org must have a Tenant entity and its ID should match the Operating System Tenant ID. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string in: query name: siteId description: Filter Operating Systems by Site ID. Can be specified multiple times to filter on more than one ID. - schema: type: string enum: - Image - iPXE in: query name: type description: Filter Operating Systems by Type - schema: type: string in: query name: status description: Filter Operating Systems by Status. Can be specified multiple times to filter on more than one status. - schema: type: string in: query name: query description: 'Provide query to search for matches. Input will be matched against name, description and status fields' - schema: type: string enum: - InfrastructureProvider - Tenant in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - NAME_ASC - NAME_DESC - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query post: summary: Create Operating System operationId: create-operating-system responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/OperatingSystem' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: ubuntu-22.04 description: Ubuntu 22.04 infrastructureProviderId: null tenantId: f97df110-f4de-492e-8849-4a6af68026b0 type: iPXE ipxeScript: |- #!ipxe kernel http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux initrd=initrd.gz initrd http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz boot || imgfree shell userData: |- #cloud-config autoinstall: apt: geoip: true preserve_sources_list: false primary: - arches: [amd64, i386] uri: http://archive.ubuntu.com/ubuntu - arches: [default] uri: http://ports.ubuntu.com/ubuntu-ports isCloudInit: true phoneHomeEnabled: false allowOverride: false imageAuthToken: null imageAuthType: null imageDisk: null imageSha: null imageUrl: null rootFsId: null rootFsLabel: null siteAssociations: [] isActive: true deactivationNote: null status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Create an Operating System for the org. Either `infrastructureProviderId` or `tenantId` must be provided in request data. Both cannot be provided at the same time. If `infrastructureProviderId` is provided in request data, then org must have an Infrastructure Provider entity and its ID should match the query param value. User must have authorization role with `PROVIDER_ADMIN` suffix. If `tenantId` is provided in request data, then org must have a Tenant entity and its ID should match the query param value. User must have authorization role with `TENANT_ADMIN` suffix. Only Tenants are allowed to create Operating System for MVP. requestBody: content: application/json: schema: $ref: '#/components/schemas/OperatingSystemCreateRequest' examples: example-1: value: name: ubuntu-official-22.04 description: Official Ubuntu 22.04 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 ipxeScript: |- #!ipxe kernel http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux initrd=initrd.gz initrd http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz boot || imgfree shell userData: |- #cloud-config autoinstall: apt: geoip: true preserve_sources_list: false primary: - arches: [amd64, i386] uri: http://archive.ubuntu.com/ubuntu - arches: [default] uri: http://ports.ubuntu.com/ubuntu-ports isCloudInit: true phoneHomeEnabled: true allowOverride: false example-2: value: name: debian-12-amd64 description: Official Debian 12 for AMD/Intel tenantId: f97df110-f4de-492e-8849-4a6af68026b0 siteIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 imageUrl: 'https://saimei.ftp.acc.umu.se/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2' imageSha: 2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae imageAuthType: Bearer imageAuthToken: acbd18db4cc2f85cedef654fccc4a4d8 imageDisk: /dev/sda rootFsId: 6c2ac315-3040-4728-94eb-b66d320206c1 rootFsLabel: null userData: null isCloudInit: true phoneHomeEnabled: false allowOverride: false tags: - Operating System '/v2/org/{org}/nico/operating-system/{operatingSystemId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: operatingSystemId in: path required: true description: ID of the Operating System get: summary: Retrieve Operating System tags: - Operating System responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/OperatingSystem' examples: Image Based OS: value: id: 42b0f982-5c61-4d2f-a018-41ece61f4641 name: debian-12-amd64 description: Official Debian 12 for AMD/Intel infrastructureProviderId: null tenantId: f97df110-f4de-492e-8849-4a6af68026b0 type: Image imageUrl: 'https://saimei.ftp.acc.umu.se/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2' imageSha: 2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae imageAuthType: Bearer imageAuthToken: acbd18db4cc2f85cedef654fccc4a4d8 imageDisk: /dev/sda rootFsId: 6c2ac315-3040-4728-94eb-b66d320206c1 rootFsLabel: null ipxeScript: null userData: null isCloudInit: true phoneHomeEnabled: false allowOverride: false siteAssociations: - site: id: 4b36152c-f48d-4bcc-a722-0fd8e2ad209a name: sjc-central-1 infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e isSerialConsoleEnabled: true isOnline: true capabilities: nativeNetworking: false networkSecurityGroup: true nvLinkPartition: false flow: false imageBasedOperatingSystem: false status: Registered status: Syncing version: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - site: id: 219b7913-4494-4589-940e-e78ca879b302 name: sc-west-4 infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e isSerialConsoleEnabled: true isOnline: true capabilities: nativeNetworking: false networkSecurityGroup: false nvLinkPartition: false flow: false imageBasedOperatingSystem: false status: Registered status: Syncing version: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' isActive: true deactivationNote: null status: Syncing statusHistory: - status: Syncing message: 'received Operating System creation request, syncing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' iPXE OS: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: ubuntu-22.04 description: Ubuntu 22.04 infrastructureProviderId: null tenantId: f97df110-f4de-492e-8849-4a6af68026b0 type: iPXE ipxeScript: |- #!ipxe kernel http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux initrd=initrd.gz initrd http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz boot || imgfree shell userData: |- #cloud-config autoinstall: apt: geoip: true preserve_sources_list: false primary: - arches: [amd64, i386] uri: http://archive.ubuntu.com/ubuntu - arches: [default] uri: http://ports.ubuntu.com/ubuntu-ports isCloudInit: true phoneHomeEnabled: false allowOverride: false imageAuthToken: null imageAuthType: null imageDisk: null imageSha: null imageUrl: null rootFsId: null rootFsLabel: null siteAssociations: [] isActive: true deactivationNote: null status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-operating-system description: |- Get an Operating System by ID If the Operating System has `infrastructureProviderId` set, then org must have an Infrastructure Provider entity and its ID should match the Operating System Infrastructure Provider ID. User must have authorization role with `PROVIDER_ADMIN` suffix. If the Operating System has `tenantId` set, then org must have a Tenant entity and its ID should match the Operating System Tenant ID. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string enum: - InfrastructureProvider - Tenant in: query name: includeRelation description: Related entity to expand delete: summary: Delete Operating System operationId: delete-operating-system responses: '202': description: Accepted '403': $ref: '#/components/responses/ForbiddenError' description: |- Delete an Operating System by ID If the Operating System has `infrastructureProviderId` set, then org must have an Infrastructure Provider entity and its ID should match the Operating System Infrastructure Provider ID. User must have authorization role with `PROVIDER_ADMIN` suffix. If the Operating System has `tenantId` set, then org must have a Tenant entity and its ID should match the Operating System Tenant ID. User must have authorization role with `TENANT_ADMIN` suffix. tags: - Operating System patch: summary: Update Operating System operationId: update-operating-system responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/OperatingSystem' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: ubuntu-22.04-lts description: Ubuntu 22.04 LTS infrastructureProviderId: null tenantId: f97df110-f4de-492e-8849-4a6af68026b0 type: iPXE ipxeScript: |- #!ipxe kernel http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux initrd=initrd.gz initrd http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz boot || imgfree shell userData: |- #cloud-config autoinstall: apt: geoip: true preserve_sources_list: false primary: - arches: [amd64, i386] uri: http://archive.ubuntu.com/ubuntu - arches: [default] uri: http://ports.ubuntu.com/ubuntu-ports isCloudInit: true allowOverride: true phoneHomeEnabled: true imageAuthToken: null imageAuthType: null imageDisk: null imageSha: null imageUrl: null rootFsId: null rootFsLabel: null siteAssociations: [] isActive: true deactivationNote: null status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Update an Operating System by ID If the Operating System has `infrastructureProviderId` set, then org must have an Infrastructure Provider entity and its ID should match the Operating System Infrastructure Provider ID. User must have authorization role with `PROVIDER_ADMIN` suffix. Provider must own the Operating System. If the Operating System has `tenantId` set, then org must have a Tenant entity and its ID should match the Operating System Tenant ID. User must have authorization role with `TENANT_ADMIN` suffix. Tenant must own the Operating System. tags: - Operating System requestBody: content: application/json: schema: $ref: '#/components/schemas/OperatingSystemUpdateRequest' examples: example-1: value: name: ubuntu-22.04-lts description: Ubuntu 22.04 LTS allowOverride: true '/v2/org/{org}/nico/machine': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all Machines tags: - Machine responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Machine' examples: example-1: value: - id: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 instanceTypeId: null instanceId: null tenantId: null controllerMachineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g controllerMachineType: x86_64 hwSkuDeviceType: cpu vendor: Lenovo productName: ThinkSystem SR670 V2 serialNumber: J1060ACR.D3KS2CS001G machineCapabilities: - type: CPU name: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz frequency: 3.0GHz cores: 18 threads: 36 count: 2 - type: Memory name: Corsair Vengeance LPX capacity: 32GB count: 4 machineInterfaces: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g controllerInterfaceId: ad3dac49-741d-4c1f-815c-c020127c532f controllerSegmentId: f2207a3c-1847-42e5-bf2c-cd015f87a2bc subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a hostname: example.com isPrimary: true macAddress: '00:00:5e:00:53:af' ipAddresses: - 192.156.7.23 - 202.88.37.112 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' maintenanceMessage: null health: source: aggregate-host-health observedAt: null successes: - id: BgpDaemonEnabled target: null - id: BgpStats target: null - id: DhcpServer target: null - id: DpuDiskUtilizationCheck target: null - id: FanSpeed target: System Board Fan1A - id: PowerSupply target: PS1 Status - id: Temperature target: CPU1 Temp - id: Temperature target: System Board Exhaust Temp - id: Voltage target: CPU1 1P8 PG alerts: [] labels: RackIdentifier: GVX11F01C02 ServerName: SITE1-C03-Server-02 status: Ready isUsableByTenant: true statusHistory: - status: Ready message: Machine is online and ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-machine description: | Get all Machines for Infrastructure Provider. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. parameters: - schema: type: string in: query name: siteId description: Filter Machines by Site ID - schema: type: string in: query name: id description: Filter Machines by ID. Can be specified multiple times to filter on more than one ID. - schema: type: boolean in: query name: hasInstanceType description: Filter Machines that have been assigned an Instance Type. - schema: type: string in: query name: instanceTypeId description: Filter Machines by Instance Type ID. Can be specified multiple times to filter on more than one Instance Type ID. - schema: type: string in: query name: tenantId description: Filter Machines by ID of tenant of assigned instance. Can be specified multiple times to filter on more than one Tenant ID. - schema: type: boolean in: query name: hasInstance description: Filter Machines that are assigned to an Instance. siteId must be specified when using this param. - schema: type: boolean in: query name: isMissingOnSite description: Filter Machines that are missing on Site. - schema: type: boolean in: query name: includeMetadata description: 'Include Machine metadata e.g. BMC, DPU, GPU and Interface data. Can only be requested by Provider.' - schema: type: string in: query name: status description: Filter Machines by Status. Can be specified multiple times to filter on more than one Status. - schema: type: string in: query name: capabilityType description: Filter Machines by Capability Type - schema: type: string in: query name: capabilityName description: Filter Machines by Capability Name. Can be specified multiple times to filter on more than one Capability Name. - schema: type: string in: query name: hwSkuDeviceType description: 'Filter Machines by hardware SKU Device Type. Example values: "gpu", "cpu", "storage", "cache"' - schema: type: string in: query name: query description: 'Provide query to search for matches. Input will be matched against Machine ID, vendor, product name, hostname and status' - schema: type: string enum: - InfrastructureProvider - Site - InstanceType in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC - ID_ASC - ID_DESC in: query name: orderBy description: Ordering for pagination query '/v2/org/{org}/nico/machine/{machineId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: machineId in: path required: true description: ID of the Machine get: summary: Retrieve a Machine tags: - Machine responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Machine' examples: Without Metadata: value: id: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 instanceTypeId: 2e016c02-2c67-48aa-b289-5d3ca6320c52 instanceId: 59bdaaff-3998-4fd9-a140-8749beeb605e tenantId: 99819e6e-4017-4021-9edd-ea1bdf4dbd59 controllerMachineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g controllerMachineType: x86_64 hwSkuDeviceType: cpu vendor: Lenovo productName: ThinkSystem SR670 V2 serialNumber: J1060ACR.D3KS2CS001G machineCapabilities: - type: CPU name: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz frequency: 3.0GHz cores: 18 threads: 36 count: 2 - type: Memory name: Corsair Vengeance LPX capacity: 32GB count: 4 - type: Network name: MT42822 BlueField-2 integrated ConnectX-6 Dx network controller count: 2 deviceType: DPU - type: Storage name: Dell Ent NVMe CM6 RI 1.92TB capacity: 1.92TB count: 2 - type: GPU name: NVIDIA A100 PCIe capacity: 80GB count: 2 - type: InfiniBand name: 'MT28908 Family [ConnectX-6]' vendor: Mellanox Technologies count: 2 machineInterfaces: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g controllerInterfaceId: ad3dac49-741d-4c1f-815c-c020127c532f controllerSegmentId: f2207a3c-1847-42e5-bf2c-cd015f87a2bc attachedDpuMachineID: 'fm100dsg4ekcb4sdi6hkqn0iojhj18okrr8vct64luh8957lfe8e69vme20,' subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a hostname: example.com isPrimary: true macAddress: '00:00:5e:00:53:af' ipAddresses: - 192.156.7.23 - 202.88.37.112 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' maintenanceMessage: null health: source: aggregate-host-health observedAt: null successes: - id: BgpDaemonEnabled target: null - id: BgpStats target: null - id: DhcpServer target: null - id: DpuDiskUtilizationCheck target: null - id: FanSpeed target: System Board Fan1A - id: PowerSupply target: PS1 Status - id: Temperature target: CPU1 Temp - id: Temperature target: System Board Exhaust Temp - id: Voltage target: CPU1 1P8 PG alerts: [] labels: RackIdentifier: GVX11F01C02 ServerName: SITE1-C03-Server-02 status: Ready isUsableByTenant: true statusHistory: - status: Ready message: Machine is online and ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' With Metadata: value: id: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 instanceTypeId: 2e016c02-2c67-48aa-b289-5d3ca6320c52 instanceId: 59bdaaff-3998-4fd9-a140-8749beeb605e tenantId: 99819e6e-4017-4021-9edd-ea1bdf4dbd59 controllerMachineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g controllerMachineType: x86_64 hwSkuDeviceType: cpu vendor: Lenovo productName: ThinkSystem SR670 V2 serialNumber: J1060ACR.D3KS2CS001G machineCapabilities: - type: CPU name: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz frequency: 3.0GHz cores: 18 threads: 36 count: 2 - type: Memory name: Corsair Vengeance LPX capacity: 32GB count: 4 - type: Network name: MT42822 BlueField-2 integrated ConnectX-6 Dx network controller count: 2 deviceType: DPU - type: Storage name: Dell Ent NVMe CM6 RI 1.92TB capacity: 1.92TB count: 2 deviceType: DPU - type: GPU name: NVIDIA A100 PCIe capacity: 80GB count: 2 - type: InfiniBand name: 'MT28908 Family [ConnectX-6]' vendor: Mellanox Technologies count: 2 machineInterfaces: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g controllerInterfaceId: ad3dac49-741d-4c1f-815c-c020127c532f controllerSegmentId: f2207a3c-1847-42e5-bf2c-cd015f87a2bc attachedDpuMachineID: 'fm100dsg4ekcb4sdi6hkqn0iojhj18okrr8vct64luh8957lfe8e69vme20,' subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a hostname: example.com isPrimary: true macAddress: '00:00:5e:00:53:af' ipAddresses: - 192.156.7.23 - 202.88.37.112 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' maintenanceMessage: null labels: RackIdentifier: GVX11F01C02 ServerName: SITE1-C03-Server-02 health: source: aggregate-host-health observedAt: null successes: - id: BgpDaemonEnabled target: null - id: BgpStats target: null - id: DhcpServer target: null - id: DpuDiskUtilizationCheck target: null - id: FanSpeed target: System Board Fan1A - id: PowerSupply target: PS1 Status - id: Temperature target: CPU1 Temp - id: Temperature target: System Board Exhaust Temp - id: Voltage target: CPU1 1P8 PG alerts: [] metadata: dmiData: boardName: 7Z23CTOLWB boardSerial: .C1KS2CS002G. boardVersion: '06' biosDate: 03/30/2023 biosVersion: U8E122J-1.51 productSerial: J1050ACR chassisSerial: J1050ACR bmcInfo: ip: 10.217.133.5 mac: 'C8:4B:D6:7A:C9:8A' version: '1' firmwareRevision: '6.00' gpus: - name: NVIDIA H100 PCIe serial: '1654422006434' driverVersion: 530.30.02s vbiosVersion: 96.00.30.00.01 inforomVersion: 1010.0200.00.02 totalMemory: 81559 MiB frequency: 1755 MHz pciBusId: '00000000:17:00.0' networkInterfaces: - macAddress: 'c8:4b:d6:7b:ac:a8' vendor: Broadcom Inc. and subsidiaries device: NetXtreme BCM5720 Gigabit Ethernet PCIe (PowerEdge Rx5xx LOM Board) path: '/devices/pci0000:00/0000:00:1c.5/0000:04:00.0/net/eno8303' numaNode: 0 description: NetXtreme BCM5720 Gigabit Ethernet PCIe (PowerEdge Rx5xx LOM Board) slot: '0000:04:00.0' infinibandInterfaces: - guid: 1070fd0300bd43ac vendor: Mellanox Technologies device: 'MT28908 Family [ConnectX-6]' path: '/devices/pci0000:c9/0000:c9:02.0/0000:ca:00.0/infiniband/ibp202s0f0' numaNode: 1 description: 'MT28908 Family [ConnectX-6]' slot: '0000:ca:00.0' status: Ready isUsableByTenant: true statusHistory: - status: Ready message: Machine is online and ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' With Machine Health Alerts: value: id: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 instanceTypeId: 2e016c02-2c67-48aa-b289-5d3ca6320c52 instanceId: 59bdaaff-3998-4fd9-a140-8749beeb605e tenantId: 99819e6e-4017-4021-9edd-ea1bdf4dbd59 controllerMachineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g controllerMachineType: x86_64 hwSkuDeviceType: cpu vendor: Lenovo productName: ThinkSystem SR670 V2 serialNumber: J1060ACR.D3KS2CS001G machineCapabilities: - type: CPU name: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz frequency: 3.0GHz cores: 18 threads: 36 count: 2 - type: Memory name: Corsair Vengeance LPX capacity: 32GB count: 4 - type: Network name: MT42822 BlueField-2 integrated ConnectX-6 Dx network controller count: 2 deviceType: DPU - type: Storage name: Dell Ent NVMe CM6 RI 1.92TB capacity: 1.92TB count: 2 - type: GPU name: NVIDIA A100 PCIe capacity: 80GB count: 2 - type: InfiniBand name: 'MT28908 Family [ConnectX-6]' vendor: Mellanox Technologies count: 2 machineInterfaces: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g controllerInterfaceId: ad3dac49-741d-4c1f-815c-c020127c532f controllerSegmentId: f2207a3c-1847-42e5-bf2c-cd015f87a2bc attachedDpuMachineID: 'fm100dsg4ekcb4sdi6hkqn0iojhj18okrr8vct64luh8957lfe8e69vme20,' subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a hostname: example.com isPrimary: true macAddress: '00:00:5e:00:53:af' ipAddresses: - 192.156.7.23 - 202.88.37.112 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' maintenanceMessage: null labels: RackIdentifier: GVX11F01C02 ServerName: SITE1-C03-Server-02 health: source: aggregate-host-health observedAt: '2024-10-07T18:08:46.715956831Z' successes: - id: BgpDaemonEnabled target: null - id: FanSpeed target: System Board Fan1A - id: FanSpeed target: System Board Fan2A - id: FanSpeed target: System Board Fan3A - id: FanSpeed target: System Board Fan4A - id: FanSpeed target: System Board Fan5A - id: FanSpeed target: System Board Fan6A - id: FileExists target: /var/lib/hbn/etc/frr/daemons - id: PowerSupply target: PS2 Status - id: Voltage target: System Board PS1 PG FAIL - id: Temperature target: GPU Temp 2 - id: Temperature target: CPU1 Temp alerts: - id: HeartbeatTimeout target: hardware-health inAlertSince: '2024-10-07T18:08:46.715149530Z' message: '' tenantMessage: nil classifications: - PreventAllocations - PreventHostStateChanges - id: HeartbeatTimeout target: nico-dpu-agent inAlertSince: '2024-10-07T18:08:46.716147472Z' message: '' tenantMessage: nil classifications: - PreventAllocations - PreventHostStateChanges status: Error isUsableByTenant: false statusHistory: - status: Error message: Machine has one or more health alerts that prevent allocation created: '2019-08-28T14:15:22Z' updated: '2019-08-28T14:15:22Z' - status: Ready message: Machine is online and ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-machine description: | Org must have either an Infrastructure Provider entity or a Tenant entity. If org has an Infrastructure Provider entity, then a user with `PROVIDER_ADMIN` role can request details for any Machine on any Site owned by the Provider. If org has a Tenant entity, then a user with `TENANT_ADMIN` role can request details for any Machine associated with Tenant's active Instances. parameters: - schema: type: string enum: - InfrastructureProvider - Site - InstanceType in: query name: includeRelation description: Related entity to expand - schema: type: boolean in: query name: includeMetadata description: 'Include Machine metadata e.g. BMC, DPU, GPU and Interface data. Can only be requested by Provider.' patch: summary: Update Machine operationId: update-machine responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Machine' examples: Example 1: value: id: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 instanceTypeId: 2e016c02-2c67-48aa-b289-5d3ca6320c52 instanceId: 59bdaaff-3998-4fd9-a140-8749beeb605e tenantId: 99819e6e-4017-4021-9edd-ea1bdf4dbd59 controllerMachineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g controllerMachineType: x86_64 hwSkuDeviceType: cpu vendor: Lenovo productName: ThinkSystem SR670 V2 serialNumber: J1060ACR.D3KS2CS001G machineCapabilities: - type: CPU name: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz frequency: 3.0GHz cores: 18 threads: 36 count: 2 - type: Memory name: Corsair Vengeance LPX capacity: 32GB count: 4 machineInterfaces: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g controllerInterfaceId: ad3dac49-741d-4c1f-815c-c020127c532f controllerSegmentId: f2207a3c-1847-42e5-bf2c-cd015f87a2bc subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a hostname: example.com isPrimary: true macAddress: '00:00:5e:00:53:af' ipAddresses: - 192.156.7.23 - 202.88.37.112 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' maintenanceMessage: null health: source: aggregate-host-health observedAt: null successes: - id: BgpDaemonEnabled target: null - id: BgpStats target: null - id: DhcpServer target: null - id: DpuDiskUtilizationCheck target: null - id: FanSpeed target: System Board Fan1A - id: PowerSupply target: PS1 Status - id: Temperature target: CPU1 Temp - id: Temperature target: System Board Exhaust Temp - id: Voltage target: CPU1 1P8 PG alerts: [] labels: RackIdentifier: GVX11F01C02 ServerName: SITE1-C03-Server-02 status: Ready isUsableByTenant: true statusHistory: - status: Ready message: Machine is online and ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' tags: - Machine description: | Update a Machine Instance Type attribute updates, maintenance attribute updates and labels updates must be specified in separate requests. They cannot be processed at the same time. Some attributes can only be updated by Provider, while others can be updated by Provider or a Privileged Tenant. requestBody: content: application/json: schema: $ref: '#/components/schemas/MachineUpdateRequest' examples: Update Instance Type: value: instanceTypeId: 2e016c02-2c67-48aa-b289-5d3ca6320c52 Clear Instance Type: value: clearInstanceType: true Set Maintenance Message: value: setMaintenanceMode: true maintenanceMessage: Machine requires re-cabling to connect with revised underlay network. Estimated maintenance time is 2 days Remove Maintenance Message: value: setMaintenanceMode: false Update Labels: value: labels: RackIdentifier: GVX11F01C02 ServerName: SITE1-C03-Server-02 RepairStatus: InProgress delete: tags: - Machine summary: Delete a Machine from a Site operationId: delete-machine responses: '202': description: Accepted '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': description: Describes an error response for 404 Not Found $ref: '#/components/responses/GenericHttpError' '422': description: Describes an error response for 422 Unprocessable Content $ref: '#/components/responses/GenericHttpError' '500': description: Describes an error response for 500 Internal Server Error $ref: '#/components/responses/GenericHttpError' description: Org must have an Infrastructure Provider entity. Machine must belong to the Provider. User must have authorization role with `PROVIDER_ADMIN` suffix. Machine must meet certain criteria to be eligible for deletion. '/v2/org/{org}/nico/machine/{machineId}/status-history': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: machineId in: path required: true description: ID of the Machine get: summary: Retrieve Machine status history tags: - Machine responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/StatusDetail' examples: Example 1: value: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' headers: X-Pagination: schema: type: string description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-machine-status-history description: | Org must have either an Infrastructure Provider entity or a Tenant entity. If org has an Infrastructure Provider entity, then a user with `PROVIDER_ADMIN` role can request details for any Machine on any Site owned by the Provider. If org has a Tenant entity, then a user with `TENANT_ADMIN` role can request details for any Machine associated with Tenant's active Instances. parameters: - schema: type: integer in: query name: pageNumber description: Page number for pagination query - schema: type: integer in: query name: pageSize description: Page size for pagination query - schema: type: string in: query name: orderBy description: Ordering for pagination query '/v2/org/{org}/nico/machine/gpu/stats': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve GPU stats for machines at a site tags: - Machine responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/MachineGPUStats' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-machine-gpu-stats description: |- Returns GPU summary stats grouped by GPU name for machines at the specified site. User must have authorization role with `PROVIDER_ADMIN` suffix. The specified site must belong to the Provider. parameters: - schema: type: string format: uuid in: query name: siteId required: true description: ID of the Site '/v2/org/{org}/nico/machine/instance-type/stats/summary': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve machine instance type assignment summary for a site tags: - Machine responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/MachineInstanceTypeSummary' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-machine-instance-type-stats-summary description: |- Returns machine counts grouped by assigned (has instance type) vs unassigned, broken down by status. User must have authorization role with `PROVIDER_ADMIN` suffix. The specified site must belong to the Provider. parameters: - schema: type: string format: uuid in: query name: siteId required: true description: ID of the Site '/v2/org/{org}/nico/machine/instance-type/stats': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve detailed per-instance-type machine stats for a site tags: - Machine responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/MachineInstanceTypeStats' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-machine-instance-type-stats description: |- Returns machine stats for each instance type including allocation details and tenant breakdown. User must have authorization role with `PROVIDER_ADMIN` suffix. The specified site must belong to the Provider. parameters: - schema: type: string format: uuid in: query name: siteId required: true description: ID of the Site '/v2/org/{org}/nico/tenant/instance-type/stats': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve per-tenant instance type allocation stats for a site tags: - Tenant responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/TenantInstanceTypeStats' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-tenant-instance-type-stats description: |- Returns instance type allocation stats grouped by tenant for the specified site. User must have authorization role with `PROVIDER_ADMIN` suffix. The specified site must belong to the Provider. parameters: - schema: type: string format: uuid in: query name: siteId required: true description: ID of the Site '/v2/org/{org}/nico/machine-capability': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all Machine Capabilities tags: - Machine responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/MachineCapability' examples: Example 1: value: - type: CPU name: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz cores: 18 threads: 36 count: 2 - name: Intel(R) Xeon(R) Platinum 8362 CPU @ 2.80GHz cores: 32 threads: 64 count: 2 - type: Network name: MT42822 BlueField-2 integrated ConnectX-6 Dx network controller count: 2 - type: Storage name: Dell Ent NVMe v2 AGN RI U.2 1.92TB capacity: 1.92TB count: 2 - type: Storage name: Dell Ent NVMe CM6 RI 1.92TB capacity: 1.92TB count: 2 - type: InfiniBand name: 'MT28908 Family [ConnectX-6]' vendor: Mellanox Technologies count: 2 headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-machine-capabilities description: | Get all distinct Machine Capabilities across all Machines Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. parameters: - schema: type: string in: query name: siteId description: Filter Capabilities by Machines from a particular Site required: true - schema: type: boolean in: query name: hasInstanceType description: Filter Capabilities by Machines that have an Instance Type - schema: type: string in: query name: type description: Filter Capabilities by Type - schema: type: string in: query name: name description: Filter Capabilities by Name - schema: type: string in: query name: frequency description: Filter Capabilities by Frequency value - schema: type: string in: query name: capacity description: Filter Capabilities by Capacity value - schema: type: string in: query name: vendor description: Filter Capabilities by Vendor - schema: type: string in: query name: inactiveDevices description: 'Filter Capabilities by Inactive Devices value. Since the value is an array, multiple query params should be specified in correct order in order to filter. For example, to filter for [1, 3], specify inactiveDevices=1&inactiveDevices=3' - schema: type: string in: query name: count description: Filter Capabilities by Count - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query '/v2/org/{org}/nico/rack': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all Racks operationId: get-all-rack description: |- Get all Racks for the specified Site. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. parameters: - schema: type: string format: uuid name: siteId in: query required: true description: ID of the Site to retrieve Racks from - schema: type: boolean in: query name: includeComponents description: Include rack components in response - schema: type: string in: query name: name description: Filter by rack name - schema: type: string in: query name: manufacturer description: Filter by manufacturer - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - NAME_ASC - NAME_DESC - MANUFACTURER_ASC - MANUFACTURER_DESC - MODEL_ASC - MODEL_DESC in: query name: orderBy description: Ordering for pagination query responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Rack' examples: example-1: value: - id: 550e8400-e29b-41d4-a716-446655440000 name: Rack-01 manufacturer: Dell model: PowerEdge R750 serialNumber: SN-RACK-001 description: Primary compute rack location: region: us-east-1 datacenter: DC-01 room: Room-A position: A1 components: - id: 660e8400-e29b-41d4-a716-446655440001 componentId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g type: ComponentTypeCompute name: Server-01 serialNumber: SN-SRV-001 manufacturer: Dell firmwareVersion: 2.1.0 slotId: 1 trayIdx: 0 hostId: 0 bmcs: - type: BmcTypeHost macAddress: 'AA:BB:CC:DD:EE:01' ipAddress: 10.0.0.101 powerState: 'on' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy":"NAME_ASC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' tags: - Rack '/v2/org/{org}/nico/rack/{id}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: id in: path required: true description: ID of the Rack get: summary: Retrieve a Rack operationId: get-rack description: |- Get a Rack by ID. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. parameters: - schema: type: string format: uuid name: siteId in: query required: true description: ID of the Site - schema: type: boolean in: query name: includeComponents description: Include rack components in response responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Rack' examples: example-1: value: id: 550e8400-e29b-41d4-a716-446655440000 name: Rack-01 manufacturer: Dell model: PowerEdge R750 serialNumber: SN-RACK-001 description: Primary compute rack location: region: us-east-1 datacenter: DC-01 room: Room-A position: A1 components: - id: 660e8400-e29b-41d4-a716-446655440001 componentId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g type: ComponentTypeCompute name: Server-01 serialNumber: SN-SRV-001 manufacturer: Dell firmwareVersion: 2.1.0 slotId: 1 trayIdx: 0 hostId: 0 bmcs: - type: BmcTypeHost macAddress: 'AA:BB:CC:DD:EE:01' ipAddress: 10.0.0.101 powerState: 'on' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' tags: - Rack '/v2/org/{org}/nico/rack/validation': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Validate Racks operationId: validate-racks description: |- Validate Rack components by comparing expected vs actual state. If no filter is specified, validates all racks in the Site. Filters can narrow the scope to specific racks by name or manufacturer. Compares the expected component configuration against the actual state. Returns a detailed diff report showing missing, extra, and drifted components. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. parameters: - schema: type: string format: uuid name: siteId in: query required: true description: ID of the Site - schema: type: string name: name in: query required: false description: Filter racks by name - schema: type: string name: manufacturer in: query required: false description: Filter racks by manufacturer responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RackValidationResult' examples: example-no-diffs: value: diffs: [] totalDiffs: 0 missingCount: 0 unexpectedCount: 0 driftCount: 0 matchCount: 10 example-with-diffs: value: diffs: - type: Missing id: 660e8400-e29b-41d4-a716-446655440001 componentId: comp-1 expected: id: 660e8400-e29b-41d4-a716-446655440001 componentId: comp-1 type: ComponentTypeCompute name: Server-01 serialNumber: SN-SRV-001 manufacturer: Dell firmwareVersion: 2.1.0 slotId: 1 trayIdx: 0 hostId: 0 bmcs: - type: BmcTypeHost macAddress: 'AA:BB:CC:DD:EE:01' ipAddress: 10.0.0.101 powerState: 'on' - type: Drift id: 770e8400-e29b-41d4-a716-446655440002 componentId: comp-2 fieldDiffs: - fieldName: firmware_version expectedValue: '1.0.0' actualValue: '2.0.0' totalDiffs: 2 missingCount: 1 unexpectedCount: 0 driftCount: 1 matchCount: 8 '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Rack '/v2/org/{org}/nico/rack/{id}/validation': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: id in: path required: true description: ID of the Rack get: summary: Validate a Rack operationId: validate-rack description: |- Validate a Rack's components by comparing expected vs actual state. Compares the rack's expected component configuration against the actual state. Returns a detailed diff report showing missing, extra, and drifted components. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. parameters: - schema: type: string format: uuid name: siteId in: query required: true description: ID of the Site responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RackValidationResult' examples: example-no-diffs: value: diffs: [] totalDiffs: 0 missingCount: 0 unexpectedCount: 0 driftCount: 0 matchCount: 5 example-with-diffs: value: diffs: - type: Missing id: 660e8400-e29b-41d4-a716-446655440001 componentId: comp-1 expected: id: 660e8400-e29b-41d4-a716-446655440001 componentId: comp-1 type: ComponentTypeCompute name: Server-01 serialNumber: SN-SRV-001 manufacturer: Dell firmwareVersion: 2.1.0 slotId: 1 trayIdx: 0 hostId: 0 bmcs: - type: BmcTypeHost macAddress: 'AA:BB:CC:DD:EE:01' ipAddress: 10.0.0.101 powerState: 'on' - type: Drift id: 770e8400-e29b-41d4-a716-446655440002 componentId: comp-2 fieldDiffs: - fieldName: firmware_version expectedValue: '1.0.0' actualValue: '2.0.0' totalDiffs: 2 missingCount: 1 unexpectedCount: 0 driftCount: 1 matchCount: 3 '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Rack '/v2/org/{org}/nico/rack/power': parameters: - schema: type: string name: org in: path required: true description: Name of the Org patch: summary: Power control Racks operationId: power-control-racks description: |- Power control Racks with optional filters. If no filter is specified, targets all racks in the Site. Supported power states: `on`, `off`, `cycle`, `forceoff`, `forcecycle`. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BatchUpdateRackPowerStateRequest' examples: power-off-all: value: siteId: 550e8400-e29b-41d4-a716-446655440000 state: 'off' power-on-filtered: value: siteId: 550e8400-e29b-41d4-a716-446655440000 filter: names: - Rack-001 - Rack-002 state: 'on' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdatePowerStateResponse' examples: example-1: value: taskIds: - 550e8400-e29b-41d4-a716-446655440000 - 660e8400-e29b-41d4-a716-446655440001 '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Rack '/v2/org/{org}/nico/rack/{id}/power': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: id in: path required: true description: ID of the Rack patch: summary: Power control a Rack operationId: power-control-rack description: |- Power control a Rack identified by Rack UUID. Supported power states: `on`, `off`, `cycle`, `forceoff`, `forcecycle`. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePowerStateRequest' examples: power-on: value: siteId: 550e8400-e29b-41d4-a716-446655440000 state: 'on' power-cycle: value: siteId: 550e8400-e29b-41d4-a716-446655440000 state: cycle force-cycle: value: siteId: 550e8400-e29b-41d4-a716-446655440000 state: forcecycle responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdatePowerStateResponse' examples: example-1: value: taskIds: - 550e8400-e29b-41d4-a716-446655440000 '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Rack '/v2/org/{org}/nico/rack/firmware': parameters: - schema: type: string name: org in: path required: true description: Name of the Org patch: summary: Firmware update Racks operationId: firmware-update-racks description: |- Update firmware on Racks with optional name filter. If no filter is specified, targets all racks in the Site. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BatchRackFirmwareUpdateRequest' examples: all-racks-latest: value: siteId: 550e8400-e29b-41d4-a716-446655440000 filtered-with-version: value: siteId: 550e8400-e29b-41d4-a716-446655440000 filter: names: - Rack-001 version: '24.11.0' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/FirmwareUpdateResponse' examples: example-1: value: taskIds: - 550e8400-e29b-41d4-a716-446655440000 - 660e8400-e29b-41d4-a716-446655440001 '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Rack '/v2/org/{org}/nico/rack/{id}/firmware': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: id in: path required: true description: ID of the Rack patch: summary: Firmware update a Rack operationId: firmware-update-rack description: |- Update firmware on a Rack identified by Rack UUID. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FirmwareUpdateRequest' examples: with-version: value: siteId: 550e8400-e29b-41d4-a716-446655440000 version: '24.11.0' without-version: value: siteId: 550e8400-e29b-41d4-a716-446655440000 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/FirmwareUpdateResponse' examples: example-1: value: taskIds: - 550e8400-e29b-41d4-a716-446655440000 '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Rack '/v2/org/{org}/nico/rack/bringup': parameters: - schema: type: string name: org in: path required: true description: Name of the Org post: summary: Bring up Racks operationId: bringup-racks description: |- Bring up Racks with optional name filter. If no filter is specified, targets all racks in the Site. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BatchBringUpRackRequest' examples: all-racks: value: siteId: 550e8400-e29b-41d4-a716-446655440000 filtered: value: siteId: 550e8400-e29b-41d4-a716-446655440000 filter: names: - Rack-001 description: Bring up Rack-001 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BringUpRackResponse' examples: example-1: value: taskIds: - 550e8400-e29b-41d4-a716-446655440000 - 660e8400-e29b-41d4-a716-446655440001 '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Rack '/v2/org/{org}/nico/rack/{id}/bringup': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: id in: path required: true description: ID of the Rack post: summary: Bring up a Rack operationId: bringup-rack description: |- Bring up a Rack identified by Rack UUID. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BringUpRackRequest' examples: basic: value: siteId: 550e8400-e29b-41d4-a716-446655440000 with-description: value: siteId: 550e8400-e29b-41d4-a716-446655440000 description: Initial bring up for production rack responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BringUpRackResponse' examples: example-1: value: taskIds: - 550e8400-e29b-41d4-a716-446655440000 '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Rack '/v2/org/{org}/nico/rack/task/{id}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: id in: path required: true description: UUID of the Task get: summary: Retrieve a Task operationId: get-rack-task description: |- Get a Task by UUID. Tasks are site-scoped; `siteId` must be the Site where the task was created. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. parameters: - schema: type: string format: uuid name: siteId in: query required: true description: ID of the Site that owns the task (tasks are site-scoped). responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RackTask' examples: example-1: value: id: 550e8400-e29b-41d4-a716-446655440000 status: Running description: Power on rack components message: 'Processing 3 of 5 components' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' tags: - Rack '/v2/org/{org}/nico/rack/task/{id}/cancel': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: id in: path required: true description: UUID of the Task post: summary: Cancel a Task operationId: cancel-rack-task description: |- Cancel a Task. Cancellation is best-effort and idempotent: tasks in non-terminal states (`Pending`, `Running`, `Waiting`) are marked `Terminated` and any underlying Temporal workflow is terminated. Cancelling an already-`Terminated` task returns the same task without changes. Tasks that have already finished (`Succeeded` or `Failed`) cannot be cancelled. Tasks are site-scoped; `siteId` must be the Site where the task was created. Org must have an Infrastructure Provider entity. User must have `FORGE_PROVIDER_ADMIN` authorization role. requestBody: required: true content: application/json: schema: type: object required: - siteId properties: siteId: type: string format: uuid description: ID of the Site that owns the task (tasks are site-scoped). examples: example-1: value: siteId: 660e8400-e29b-41d4-a716-446655440000 responses: '202': description: |- Accepted. The cancellation request was accepted and the task as last reported by Flow is returned. Clients should `GET` the task to observe the final state, since cancellation is best-effort and the underlying workflow may still be terminating. content: application/json: schema: $ref: '#/components/schemas/RackTask' examples: example-1: value: id: 550e8400-e29b-41d4-a716-446655440000 status: Terminated description: Power on rack components message: Cancelled by user '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' tags: - Rack '/v2/org/{org}/nico/tray': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all Trays operationId: get-all-tray description: |- Get all Trays (components) for the specified Site. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. **Filter constraints:** - `rackId` and `rackName` are mutually exclusive - `rackId`/`rackName` cannot be combined with `id`/`componentId` (rack-level vs component-level targeting) - `componentId` requires `type` to be specified parameters: - schema: type: string format: uuid name: siteId in: query required: true description: ID of the Site to retrieve Trays from - schema: type: string format: uuid name: rackId in: query description: Filter by Rack ID - schema: type: string name: rackName in: query description: Filter by Rack name - schema: type: string enum: - compute - switch - powershelf name: type in: query description: Filter by tray type - schema: type: string name: componentId in: query description: Filter by component ID. Can be specified multiple times to filter on more than one component ID. Requires 'type' parameter. - schema: type: string format: uuid name: id in: query description: Filter by tray UUID. Can be specified multiple times to filter on more than one tray ID. - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - NAME_ASC - NAME_DESC - MANUFACTURER_ASC - MANUFACTURER_DESC - MODEL_ASC - MODEL_DESC - TYPE_ASC - TYPE_DESC in: query name: orderBy description: Ordering for pagination query responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/Tray' examples: example-1: value: - id: 660e8400-e29b-41d4-a716-446655440001 componentId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g type: compute name: compute-tray-1 manufacturer: NVIDIA model: GB200 serialNumber: TSN001 description: Compute tray in slot 1 firmwareVersion: 2.1.0 powerState: 'on' position: slotId: 1 trayIdx: 0 hostId: 1 rackId: 550e8400-e29b-41d4-a716-446655440000 headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy":"NAME_ASC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' tags: - Tray '/v2/org/{org}/nico/tray/{id}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: id in: path required: true description: ID of the Tray get: summary: Retrieve a Tray operationId: get-tray description: |- Get a Tray by ID. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. parameters: - schema: type: string format: uuid name: siteId in: query required: true description: ID of the Site responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Tray' examples: example-1: value: id: 660e8400-e29b-41d4-a716-446655440001 componentId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g type: compute name: compute-tray-1 manufacturer: NVIDIA model: GB200 serialNumber: TSN001 description: Compute tray in slot 1 firmwareVersion: 2.1.0 powerState: 'on' position: slotId: 1 trayIdx: 0 hostId: 1 rackId: 550e8400-e29b-41d4-a716-446655440000 '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' tags: - Tray '/v2/org/{org}/nico/tray/validation': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Validate Trays operationId: validate-trays description: |- Validate Tray components by comparing expected vs actual state. If no filter is specified, validates all trays in the Site. Use rackId/rackName to scope to a specific rack, and name/manufacturer/type to filter by tray attributes. Compares the expected component configuration against the actual state. Returns a detailed diff report showing missing, extra, and drifted components. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. parameters: - schema: type: string format: uuid name: siteId in: query required: true description: ID of the Site - schema: type: string format: uuid name: rackId in: query required: false description: Scope to a specific Rack by ID (mutually exclusive with rackName) - schema: type: string name: rackName in: query required: false description: Scope to a specific Rack by name (mutually exclusive with rackId) - schema: type: string name: name in: query required: false description: Filter trays by name - schema: type: string name: manufacturer in: query required: false description: Filter trays by manufacturer - schema: type: string enum: - compute - switch - powershelf name: type in: query required: false description: Filter trays by type - schema: type: string name: componentId in: query required: false description: Filter by external component ID (requires type; mutually exclusive with rackId/rackName; use repeated params for multiple values) responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RackValidationResult' examples: example-no-diffs: value: diffs: [] totalDiffs: 0 missingCount: 0 unexpectedCount: 0 driftCount: 0 matchCount: 10 '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Tray '/v2/org/{org}/nico/tray/{id}/validation': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: id in: path required: true description: ID of the Tray get: summary: Validate a Tray operationId: validate-tray description: |- Validate a Tray by comparing expected vs actual state. Compares the expected component configuration against the actual state. Returns a detailed diff report showing missing, extra, and drifted components. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. parameters: - schema: type: string format: uuid name: siteId in: query required: true description: ID of the Site responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/RackValidationResult' examples: example-no-diffs: value: diffs: [] totalDiffs: 0 missingCount: 0 unexpectedCount: 0 driftCount: 0 matchCount: 5 '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Tray '/v2/org/{org}/nico/tray/power': parameters: - schema: type: string name: org in: path required: true description: Name of the Org patch: summary: Power control Trays operationId: power-control-trays description: |- Power control Trays with optional filters. If no filter is specified, targets all trays in the Site. Supported power states: `on`, `off`, `cycle`, `forceoff`, `forcecycle`. **Filter constraints:** - `rackId` and `rackName` are mutually exclusive - `rackId`/`rackName` cannot be combined with `ids`/`componentIds` (rack-level vs component-level targeting) - `componentIds` requires `type` to be specified Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BatchUpdateTrayPowerStateRequest' examples: power-on-all: value: siteId: 550e8400-e29b-41d4-a716-446655440000 state: 'on' power-off-by-rack: value: siteId: 550e8400-e29b-41d4-a716-446655440000 filter: rackId: 660e8400-e29b-41d4-a716-446655440001 state: 'off' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdatePowerStateResponse' examples: example-1: value: taskIds: - 550e8400-e29b-41d4-a716-446655440000 '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Tray '/v2/org/{org}/nico/tray/{id}/power': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: id in: path required: true description: ID of the Tray patch: summary: Power control a Tray operationId: power-control-tray description: |- Power control a Tray identified by Tray UUID. Supported power states: `on`, `off`, `cycle`, `forceoff`, `forcecycle`. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePowerStateRequest' examples: power-on: value: siteId: 550e8400-e29b-41d4-a716-446655440000 state: 'on' power-off: value: siteId: 550e8400-e29b-41d4-a716-446655440000 state: 'off' power-cycle: value: siteId: 550e8400-e29b-41d4-a716-446655440000 state: cycle responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/UpdatePowerStateResponse' examples: example-1: value: taskIds: - 550e8400-e29b-41d4-a716-446655440000 '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Tray '/v2/org/{org}/nico/tray/firmware': parameters: - schema: type: string name: org in: path required: true description: Name of the Org patch: summary: Firmware update Trays operationId: firmware-update-trays description: |- Update firmware on Trays with optional filters. If no filter is specified, targets all trays in the Site. **Filter constraints:** - `rackId` and `rackName` are mutually exclusive - `rackId`/`rackName` cannot be combined with `ids`/`componentIds` (rack-level vs component-level targeting) - `componentIds` requires `type` to be specified Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BatchTrayFirmwareUpdateRequest' examples: all-trays-latest: value: siteId: 550e8400-e29b-41d4-a716-446655440000 filtered-with-version: value: siteId: 550e8400-e29b-41d4-a716-446655440000 filter: rackId: 660e8400-e29b-41d4-a716-446655440001 version: '24.11.0' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/FirmwareUpdateResponse' examples: example-1: value: taskIds: - 550e8400-e29b-41d4-a716-446655440000 '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Tray '/v2/org/{org}/nico/tray/{id}/firmware': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string format: uuid name: id in: path required: true description: ID of the Tray patch: summary: Firmware update a Tray operationId: firmware-update-tray description: |- Update firmware on a Tray identified by Tray UUID. Org must have an Infrastructure Provider entity. User must have authorization role with `PROVIDER_ADMIN` suffix. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FirmwareUpdateRequest' examples: with-version: value: siteId: 550e8400-e29b-41d4-a716-446655440000 version: '24.11.0' without-version: value: siteId: 550e8400-e29b-41d4-a716-446655440000 responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/FirmwareUpdateResponse' examples: example-1: value: taskIds: - 550e8400-e29b-41d4-a716-446655440000 '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - Tray '/v2/org/{org}/nico/network-security-group': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all Network Security Groups responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/NetworkSecurityGroup' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '412': description: Precondition Failed '500': description: Describes an error response for 500 Internal Server Error $ref: '#/components/responses/GenericHttpError' '501': description: Describes an error response for 501 Not Implemented $ref: '#/components/responses/GenericHttpError' operationId: get-all-network-security-group description: | Get all Network Security Groups for Tenant Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string format: uuid in: query name: siteId description: Filter By Site ID - schema: type: string in: query name: status description: Filter Network Security Groups by Status - schema: type: string in: query name: query description: 'Search for matches across all Sites. Input will be matched against name, description and status fields' - schema: type: string enum: - Tenant - Site in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - NAME_ASC - NAME_DESC - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query - schema: type: boolean in: query name: includeAttachmentStats description: Include counts for the number objects that have attached the Network Security Group tags: - Network Security Group post: summary: Create Network Security Group operationId: create-network-security-group responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/NetworkSecurityGroup' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': description: Describes an error response for 404 Not Found $ref: '#/components/responses/GenericHttpError' '412': description: Describes an error response for 412 Precondition Failed $ref: '#/components/responses/GenericHttpError' '500': description: Describes an error response for 500 Internal Server Error $ref: '#/components/responses/GenericHttpError' '501': description: Describes an error response for 501 Not Implemented $ref: '#/components/responses/GenericHttpError' description: | Create a Network Security Group for Tenant. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkSecurityGroupCreateRequest' tags: - Network Security Group '/v2/org/{org}/nico/network-security-group/{networkSecurityGroupId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: networkSecurityGroupId in: path required: true description: ID of the Network Security Group get: summary: Retrieve Network Security Group responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/NetworkSecurityGroup' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': description: Describes an error response for 404 Not Found $ref: '#/components/responses/NotFoundError' '500': description: Describes an error response for 500 Internal Server Error $ref: '#/components/responses/GenericHttpError' '501': description: Describes an error response for 501 Not Implemented $ref: '#/components/responses/GenericHttpError' operationId: get-network-security-group description: | Get a Network Security Group by ID Org must have a Tenant entity. Instance must belong to Tenant. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string enum: - Tenant - Site in: query name: includeRelation description: Related entity to expand tags: - Network Security Group patch: summary: Update Network Security Group operationId: update-network-security-group responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/NetworkSecurityGroup' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': description: Describes an error response for 404 Not Found $ref: '#/components/responses/GenericHttpError' '500': description: Describes an error response for 500 Internal Server Error $ref: '#/components/responses/GenericHttpError' '501': description: Describes an error response for 501 Not Implemented $ref: '#/components/responses/GenericHttpError' description: |- Update a Network Security Group by ID Org must have a Tenant entity. Instance must belong to Tenant. User must have authorization role with `TENANT_ADMIN` suffix. After a group has been created, policy updates are absolute. The complete desired policy set must be specified. requestBody: content: application/json: schema: $ref: '#/components/schemas/NetworkSecurityGroupUpdateRequest' tags: - Network Security Group delete: summary: Delete Network Security Group operationId: delete-network-security-group responses: '202': description: Accepted '400': $ref: '#/components/responses/ValidationError' '403': description: Describes an error response for 403 Forbidden $ref: '#/components/responses/GenericHttpError' '404': description: Describes an error response for 404 Not Found $ref: '#/components/responses/GenericHttpError' '412': description: Describes an error response for 412 Precondition Failed $ref: '#/components/responses/GenericHttpError' '500': description: Describes an error response for 500 Internal Server Error $ref: '#/components/responses/GenericHttpError' '501': description: Describes an error response for 501 Not Implemented $ref: '#/components/responses/GenericHttpError' description: |- Delete a Network Security Group by ID Org must have a Tenant entity. Instance must belong to Tenant. User must have authorization role with `TENANT_ADMIN` suffix. Deleting a Network Security Group will also delete all the associations and all policies. tags: - Network Security Group '/v2/org/{org}/nico/dpu-extension-service': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all DPU Extension Services responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/DpuExtensionService' headers: X-Pagination: schema: type: string example: '{"pageNumber":1,"pageSize":20,"total":30,"orderBy": "CREATED_DESC"}' description: Pagination result in JSON format '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-dpu-extension-service description: |- Retrieve all DPU Extension Services for the current Tenant Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string in: query name: siteId description: Filter DPU Extension Services by Site ID - schema: type: string enum: - Pending - Ready - Error - Deleting in: query name: status description: Status filter for the DPU Extension Services - schema: type: string in: query name: query description: 'Search for matches across all Sites. Input will be matched against name, description and status' - schema: type: string enum: - Site - Tenant in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - NAME_ASC - NAME_DESC - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query tags: - DPU Extension Service post: summary: Create DPU Extension Service operationId: create-dpu-extension-service responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/DpuExtensionService' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Create a DPU Extension Service for the current Tenant. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/DpuExtensionServiceCreateRequest' tags: - DPU Extension Service '/v2/org/{org}/nico/dpu-extension-service/{dpuExtensionServiceId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: dpuExtensionServiceId in: path required: true description: ID of the DPU Extension Service get: summary: Retrieve DPU Extension Service operationId: get-dpu-extension-service responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/DpuExtensionService' '403': $ref: '#/components/responses/ForbiddenError' description: |- Retrieve a DPU Extension Service for the current Tenant by ID DPU Extension Service must be owned by current Tenant. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. tags: - DPU Extension Service delete: summary: Delete DPU Extension Service operationId: delete-dpu-extension-service responses: '204': description: No Content '403': $ref: '#/components/responses/ForbiddenError' description: |- Delete a specific DPU Extension Service by ID. All versions will be deleted. DPU Extension Service must be owned by current Tenant. No versions of the DPU Extension Service can have active deployments. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. tags: - DPU Extension Service patch: summary: Update DPU Extension Service operationId: update-dpu-extension-service responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DpuExtensionService' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' description: |- Update a specific DPU Extension Service. DPU Extension Service must be owned by current Tenant. A new version will be created if data or credentials are modified. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/DpuExtensionServiceUpdateRequest' tags: - DPU Extension Service '/v2/org/{org}/nico/dpu-extension-service/{dpuExtensionServiceId}/version/{version}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: dpuExtensionServiceId in: path required: true description: ID of the DPU Extension Service - schema: type: string name: version in: path required: true description: Version of the DPU Extension Service get: summary: Retrieve DPU Extension Service Version operationId: get-dpu-extension-service-version responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/DpuExtensionServiceVersionInfo' '403': $ref: '#/components/responses/ForbiddenError' '404': $ref: '#/components/responses/NotFoundError' description: |- Retrieve details for a specific version of a DPU Extension Service. DPU Extension Service must be owned by current Tenant. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. tags: - DPU Extension Service delete: summary: Delete DPU Extension Service Version operationId: delete-dpu-extension-service-version responses: '204': description: No Content '403': $ref: '#/components/responses/ForbiddenError' description: |- Delete a specific version of a DPU Extension Service. DPU Extension Service must be owned by current Tenant. The version being deleted cannot have active deployments. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. tags: - DPU Extension Service '/v2/org/{org}/nico/sshkeygroup': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all SSH Key Groups responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/SshKeyGroup' examples: Example 1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: reno-integration-sre description: SRE access SSH keys for Reno Integration org: wdksahew1rqf tenantId: f97df110-f4de-492e-8849-4a6af68026b0 version: fbc692b61ffef6fbfc38a3833f6b7e7ae508da75 siteAssociations: - site: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: sjc-central-1 infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e isSerialConsoleEnabled: true isOnline: true capabilities: nativeNetworking: false networkSecurityGroup: true nvLinkPartition: false flow: false imageBasedOperatingSystem: false status: Registered status: Syncing version: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' sshKeys: - id: ff06da79-707a-4069-8623-211d49ae96c8 name: sre-ssh-reno org: wdksahew1rqf tenantId: f97df110-f4de-492e-8849-4a6af68026b0 fingerprint: CaK2yoj5fDOhf1swM2kFyjQrd3bwZfDYlWnVjBHgveQ created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' status: Syncing statusHistory: - status: Syncing message: Group is being synced to Sites created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-ssh-key-group description: |- Retrieve all SSH Key Groups for the current Tenant. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. parameters: - schema: type: string in: query name: siteId description: Filter SSH Key Groups by Site ID - schema: type: string in: query name: instanceId description: Filter SSH Key Groups by Instance ID - schema: type: string enum: - Syncing - Synced - Error - Deleting in: query name: status description: Status filter for the SSH Key Groups - schema: type: string in: query name: query description: Search for matches across all Sites. Input will be matched against name field - schema: type: string enum: - Tenant in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - NAME_ASC - NAME_DESC - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query tags: - SSH Key Group post: summary: Create SSH Key Group operationId: create-ssh-key-group responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/SshKeyGroup' examples: Example 1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: reno-integration-sre description: SRE access SSH keys for Reno Integration org: wdksahew1rqf tenantId: f97df110-f4de-492e-8849-4a6af68026b0 version: fbc692b61ffef6fbfc38a3833f6b7e7ae508da75 siteAssociations: - site: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: sjc-central-1 infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e isSerialConsoleEnabled: true isOnline: true capabilities: nativeNetworking: true networkSecurityGroup: true status: Registered status: Syncing version: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' sshKeys: - id: ff06da79-707a-4069-8623-211d49ae96c8 name: sre-ssh-reno org: wdksahew1rqf tenantId: f97df110-f4de-492e-8849-4a6af68026b0 fingerprint: CaK2yoj5fDOhf1swM2kFyjQrd3bwZfDYlWnVjBHgveQ created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' status: Syncing statusHistory: - status: Syncing message: Group is being synced to Sites created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Create an SSH Key Group for the current Tenant. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/SshKeyGroupCreateRequest' examples: Example 1: value: name: reno-integration-sre description: SRE access SSH keys for Reno Integration siteIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 sshKeyIds: - ff06da79-707a-4069-8623-211d49ae96c8 tags: - SSH Key Group '/v2/org/{org}/nico/sshkeygroup/{sshKeyGroupId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: sshKeyGroupId in: path required: true description: ID of the SSH Key Group get: summary: Retrieve an SSH Key Group responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/SshKeyGroup' examples: Example 1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: reno-integration-sre description: SRE access SSH keys for Reno Integration org: wdksahew1rqf tenantId: f97df110-f4de-492e-8849-4a6af68026b0 version: fbc692b61ffef6fbfc38a3833f6b7e7ae508da75 siteAssociations: - site: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: sjc-central-1 infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e isSerialConsoleEnabled: true isOnline: true capabilities: nativeNetworking: true networkSecurityGroup: true nvLinkPartition: false flow: false imageBasedOperatingSystem: false status: Registered status: Syncing version: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' sshKeys: - id: ff06da79-707a-4069-8623-211d49ae96c8 name: sre-ssh-reno org: wdksahew1rqf tenantId: f97df110-f4de-492e-8849-4a6af68026b0 fingerprint: CaK2yoj5fDOhf1swM2kFyjQrd3bwZfDYlWnVjBHgveQ created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' status: Syncing statusHistory: - status: Syncing message: Group is being synced to Sites created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-ssh-key-group description: |- Retrieve an SSH Key Group for the current Tenant by ID SSH Key Group must be owned by current Tenant. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. tags: - SSH Key Group delete: summary: Delete an SSH Key Group operationId: delete-ssh-key-group responses: '202': description: Accepted '403': $ref: '#/components/responses/ForbiddenError' description: |- Delete a specific SSH key Group. SSH Key Group must be owned by current Tenant. All Sites associated must be online to proceed. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. tags: - SSH Key Group patch: summary: Update an SSH Key Group operationId: update-ssh-key-group responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SshKeyGroup' examples: Example 1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: reno-int-sre description: SRE access SSH keys for Reno Integration Site org: wdksahew1rqf tenantId: f97df110-f4de-492e-8849-4a6af68026b0 version: fbc692b61ffef6fbfc38a3833f6b7e7ae508da75 siteAssociations: - site: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: sjc-central-1 infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e isSerialConsoleEnabled: true isOnline: true capabilities: nativeNetworking: true networkSecurityGroup: true status: Registered status: Syncing version: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - site: id: 05d6e108-9f06-44c9-be47-7ab4d62b20d0 name: Reno Integration infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e isSerialConsoleEnabled: true isOnline: true capabilities: nativeNetworking: true networkSecurityGroup: true status: Registered status: Syncing version: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' sshKeys: - id: ff06da79-707a-4069-8623-211d49ae96c8 name: sre-ssh-reno org: wdksahew1rqf tenantId: f97df110-f4de-492e-8849-4a6af68026b0 fingerprint: CaK2yoj5fDOhf1swM2kFyjQrd3bwZfDYlWnVjBHgveQ created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: 30fc7238-133d-42f7-8d29-866658b0c019 name: sre-ssh-reno-ext org: wdksahew1rqf tenantId: f97df110-f4de-492e-8849-4a6af68026b0 fingerprint: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' status: Syncing statusHistory: - status: Syncing message: Group is being synced to Sites created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Update a specific SSH Key Group. SSH Key Group must be owned by current Tenant. All Sites being added or removed must be online to proceed. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/SshKeyGroupUpdateRequest' examples: Example 1: value: name: reno-int-sre description: SRE access SSH keys for Reno Integration Site siteIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 - 05d6e108-9f06-44c9-be47-7ab4d62b20d0 sshKeyIds: - ff06da79-707a-4069-8623-211d49ae96c8 - 30fc7238-133d-42f7-8d29-866658b0c019 version: fbc692b61ffef6fbfc38a3833f6b7e7ae508da75 tags: - SSH Key Group '/v2/org/{org}/nico/sshkey': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all SSH Keys responses: '200': description: '' content: application/json: schema: type: array items: $ref: '#/components/schemas/SshKey' examples: Example 1: value: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: staging-sre-access org: xskkpgqpeakn tenantId: f97df110-f4de-492e-8849-4a6af68026b0 fingerprint: CaK2yoj5fDOhf1swM2kFyjQrd3bwZfDYlWnVjBHgveQ created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-ssh-key description: |- Retrieve all SSH Keys for the current Tenant. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. tags: - SSH Key parameters: - schema: type: string in: query name: sshKeyGroupId description: ID of the SSH Key Group - schema: type: string in: query name: query description: Search for matches across all Sites. Input will be matched against name field - schema: type: string enum: - Tenant in: query name: includeRelation description: Related entity to expand - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - NAME_ASC - NAME_DESC - STATUS_ASC - STATUS_DESC - CREATED_ASC - CREATED_DESC - UPDATED_ASC - UPDATED_DESC in: query name: orderBy description: Ordering for pagination query post: summary: Create SSH Key operationId: create-ssh-key responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/SshKey' examples: Example 1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: reno-sre-access org: xskkpgqpeakn tenantId: f97df110-f4de-492e-8849-4a6af68026b0 fingerprint: CaK2yoj5fDOhf1swM2kFyjQrd3bwZfDYlWnVjBHgveQ created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' tags: - SSH Key description: |- Create an SSH Key for the current Tenant. If an SSH Key Group is specified, all Sites associated with the SSH Key Group must be online. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. requestBody: content: application/json: schema: $ref: '#/components/schemas/SshKeyCreateRequest' examples: Example 1: value: name: reno-sre-access publicKey: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICip4hl6WjuVHs60PeikVUs0sWE/kPhk2D0rRHWsIuyL jdoe@test.com sshKeyGroupId: 86ca8cab-b285-4c2d-9e00-25c88810dc2e '/v2/org/{org}/nico/sshkey/{sshKeyId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: sshKeyId in: path required: true description: ID of the SSH Key get: summary: Retrieve an SSH key responses: '200': description: '' content: application/json: schema: $ref: '#/components/schemas/SshKey' examples: Example 1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: staging-sre-access org: xskkpgqpeakn tenantId: f97df110-f4de-492e-8849-4a6af68026b0 fingerprint: CaK2yoj5fDOhf1swM2kFyjQrd3bwZfDYlWnVjBHgveQ created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '403': $ref: '#/components/responses/ForbiddenError' operationId: get-ssh-key description: |- Retrieve an SSH key for the current Tenant by ID SSH Key must be owned by current Tenant. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. tags: - SSH Key delete: summary: Delete an SSH Key operationId: delete-ssh-key responses: '202': description: Accepted '403': $ref: '#/components/responses/ForbiddenError' description: |- Delete an SSH key for the current Tenant by ID. SSH Key must be owned by current Tenant. All Site associated with the SSH Key Groups this SSH Key is part of must be online to proceed. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. tags: - SSH Key patch: summary: Update an SSH Key operationId: update-ssh-key responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/SshKey' examples: Example 1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: reno-sre-access-v2 org: xskkpgqpeakn tenantId: f97df110-f4de-492e-8849-4a6af68026b0 fingerprint: CaK2yoj5fDOhf1swM2kFyjQrd3bwZfDYlWnVjBHgveQ created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' '400': $ref: '#/components/responses/ValidationError' '403': $ref: '#/components/responses/ForbiddenError' description: |- Update an SSH Key for the current Tenant by ID. SSH Key must be owned by current Tenant. Org must have a Tenant entity. User must have authorization role with `TENANT_ADMIN` suffix. To add this SSH Key to various SSH Key Groups or remove it from an SSH Key Group, please use SSH Key Group update endpoint. requestBody: content: application/json: schema: $ref: '#/components/schemas/SshKeyUpdateRequest' examples: Example 1: value: name: reno-sre-access-v2 tags: - SSH Key '/v2/org/{org}/nico/user/current': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve Current User tags: - User responses: '200': description: User Found content: application/json: schema: $ref: '#/components/schemas/User' examples: example-1: value: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 email: janed@nvidia.com firstName: Jane lastName: Doe created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' operationId: get-user description: Retrieve details of the current user. '/v2/org/{org}/nico/metadata': get: summary: Retrieve metadata about the API server tags: - Metadata responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Metadata' examples: example-1: value: version: 0.1.24 buildTime: '2019-08-24T14:15:22Z' operationId: get-metadata description: Retrieve system metadata providing information about the API server parameters: - schema: type: string name: org in: path required: true description: Name of the Org '/v2/org/{org}/nico/audit': parameters: - schema: type: string name: org in: path required: true description: Name of the Org get: summary: Retrieve all Audit Log Entries tags: - Audit responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/AuditEntry' examples: Example 1: value: - id: e313b3ca-c47a-4ec1-a79b-a147fad51a50 endpoint: /v2/org/test-org-1/nico/ep queryParams: '{"test":["1234"]}' method: POST body: '{"key1":"value1"}' statusCode: 200 clientIP: 12.123.43.112 userID: 5d9fe319-14d4-40e3-8e5a-7d79e680d55b user: id: 5d9fe319-14d4-40e3-8e5a-7d79e680d55b firstName: John lastName: Doe email: jdoe@test.com orgName: test-org-1 timestamp: '2024-12-04T21:06:33.849293-08:00' durationMs: 250 apiVersion: 0.1.91 - id: e313b3ca-c47a-4ec1-a79b-a147fad51a50 endpoint: /v2/org/test-org-1/nico/ep queryParams: '{"test":["1234"]}' method: POST body: '{"key1":"value1"}' statusCode: 403 statusMessage: User does not have permissions clientIP: 12.123.43.112 userID: 5d9fe319-14d4-40e3-8e5a-7d79e680d55b user: id: 5d9fe319-14d4-40e3-8e5a-7d79e680d55b firstName: John lastName: Doe email: jdoe@test.com orgName: test-org-1 timestamp: '2024-12-04T21:06:33.849293-08:00' durationMs: 50 apiVersion: 0.1.91 '403': $ref: '#/components/responses/ForbiddenError' operationId: get-all-audit-entry description: | Get all Audit Log entries User must have authorization role with `PROVIDER_ADMIN` or `TENANT_ADMIN` suffix. parameters: - schema: type: boolean in: query name: failedOnly description: Return only audit log entries that have failed status code (>= 400) - schema: type: integer example: 1 default: 1 minimum: 1 in: query name: pageNumber description: Page number for pagination query - schema: type: integer minimum: 1 maximum: 100 example: 20 in: query name: pageSize description: Page size for pagination query - schema: type: string enum: - TIMESTAMP_ASC - TIMESTAMP_DESC in: query name: orderBy description: Ordering for pagination query '/v2/org/{org}/nico/audit/{auditEntryId}': parameters: - schema: type: string name: org in: path required: true description: Name of the Org - schema: type: string name: auditEntryId in: path required: true description: ID of the Audit Log Entry get: summary: Retrieve Audit Log Entry tags: - Audit responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AuditEntry' examples: example-1: value: id: e313b3ca-c47a-4ec1-a79b-a147fad51a50 endpoint: /v2/org/test-org-1/nico/ep queryParams: '{"test":["1234"]}' method: POST body: '{"key1":"value1"}' statusCode: 200 clientIP: 12.123.43.112 userID: 5d9fe319-14d4-40e3-8e5a-7d79e680d55b user: id: 5d9fe319-14d4-40e3-8e5a-7d79e680d55b firstName: John lastName: Doe email: jdoe@test.com orgName: test-org-1 timestamp: '2024-12-04T21:06:33.849293-08:00' durationMs: 250 apiVersion: 0.1.91 '403': $ref: '#/components/responses/ForbiddenError' operationId: get-audit-entry description: |- Retrieve a specific Audit Log Entry by ID User must have authorization role with `PROVIDER_ADMIN` or `TENANT_ADMIN` suffix components: schemas: InfrastructureProvider: description: Infrastructure providers own and manage datacenters type: object title: InfrastructureProvider examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 org: rf43bbtnb9c5 orgDisplayName: Dell Corporation created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid readOnly: true org: type: string orgDisplayName: type: - string - 'null' created: type: string format: date-time readOnly: true updated: type: string format: date-time readOnly: true InfrastructureProviderStats: title: InfrastructureProviderStats type: object description: Provide operational stats for Infrastructure Provider examples: - machine: total: 27 initializing: 8 assigned: 12 ready: 5 error: 2 decommissioned: 0 unknown: 0 ipBlock: total: 4 pending: 1 provisioning: 1 ready: 2 deleting: 0 error: 0 tenantAccount: total: 8 pending: 0 invited: 3 ready: 5 error: 0 properties: machine: $ref: '#/components/schemas/MachineCountByStatus' ipBlock: $ref: '#/components/schemas/IpBlockCountByStatus' tenantAccount: $ref: '#/components/schemas/TenantAccountCountByStatus' MachineCountByStatus: title: MachineCountByStatus type: object description: Describes count of Machines in various statuses examples: - total: 27 initializing: 8 assigned: 12 ready: 5 error: 2 decommissioned: 0 unknown: 0 properties: total: type: integer initializing: type: integer reset: type: integer assigned: type: integer ready: type: integer error: type: integer decommissioned: type: integer unknown: type: integer IpBlockCountByStatus: title: IpBlockCountByStatus type: object description: Describes counts of IP Blocks in various statuses examples: - total: 4 pending: 1 provisioning: 1 ready: 2 deleting: 0 error: 0 properties: total: type: integer pending: type: integer provisioning: type: integer ready: type: integer deleting: type: integer error: type: integer TenantAccountCountByStatus: title: TenantAccountCountByStatus type: object description: Describes counts of Tenant Accounts in various statuses examples: - total: 8 pending: 0 invited: 3 ready: 5 error: 0 properties: total: type: integer pending: type: integer invited: type: integer ready: type: integer error: type: integer Tenant: title: Tenant type: object description: Tenant is the consumer of resources that Infrastructure Providers serve examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 org: qygdmg8oqik8 orgDisplayName: Echo Corporation created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' capabilities: targetedInstanceCreation: false properties: id: type: string format: uuid description: Unique ID of the Tenant readOnly: true org: type: string description: Name/external ID of Tenant's organization orgDisplayName: type: - string - 'null' description: Display name of Tenant's organization created: type: string format: date-time description: Date/time the Tenant was created readOnly: true updated: type: string format: date-time description: Date/time when Tenant was last updated capabilities: $ref: '#/components/schemas/TenantCapabilities' description: Features that are enabled/disabled for Tenant TenantCapabilities: title: TenantCapabilities type: object description: TenantCapabilities defines the set of features enabled for Tenant examples: - targetedInstanceCreation: false properties: targetedInstanceCreation: type: boolean format: uuid description: Indicates whether Tenant can create Instances by specifying Machine ID readOnly: true TenantStats: title: TenantStats type: object description: Provide operational stats for Tenant examples: - instance: total: 12 pending: 2 provisioning: 1 ready: 8 repairing: 1 terminating: 2 error: 1 vpc: total: 4 pending: 1 provisioning: 1 ready: 2 deleting: 0 error: 0 subnet: total: 4 pending: 1 provisioning: 1 ready: 2 deleting: 0 error: 0 properties: instance: $ref: '#/components/schemas/InstanceCountByStatus' vpc: $ref: '#/components/schemas/VpcCountByStatus' subnet: $ref: '#/components/schemas/SubnetCountByStatus' InstanceCountByStatus: title: InstanceCountByStatus type: object description: Describes count of Instances in various statuses examples: - total: 12 pending: 2 provisioning: 1 ready: 8 repairing: 1 terminating: 2 error: 1 properties: total: type: integer pending: type: integer provisioning: type: integer ready: type: integer repairing: type: integer terminating: type: integer error: type: integer VpcCountByStatus: title: VpcCountByStatus type: object description: Describes counts of VPCs in various statuses examples: - total: 4 pending: 1 provisioning: 1 ready: 2 deleting: 0 error: 0 properties: total: type: integer pending: type: integer provisioning: type: integer ready: type: integer deleting: type: integer error: type: integer SubnetCountByStatus: title: SubnetCountByStatus type: object description: Describes counts of Subnets in various statuses examples: - total: 4 pending: 1 provisioning: 1 ready: 2 deleting: 0 error: 0 properties: total: type: integer pending: type: integer provisioning: type: integer ready: type: integer deleting: type: integer error: type: integer TenantAccount: title: TenantAccount type: object description: Associates a Tenant with an Infrastructure Provider examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf infrastructureProviderOrg: xskkpgqpeakn tenantId: f97df110-f4de-492e-8849-4a6af68026b0 tenantOrg: rf43bbtnb9c5 tenantContact: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 email: janed@nvidia.com firstName: Jane lastName: Doe created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' allocationCount: 0 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid readOnly: true infrastructureProviderId: type: string format: uuid infrastructureProviderOrg: type: string tenantId: type: - string - 'null' format: uuid tenantOrg: type: - string - 'null' tenantContact: $ref: '#/components/schemas/User' allocationCount: type: integer status: $ref: '#/components/schemas/TenantAccountStatus' statusHistory: type: array items: $ref: '#/components/schemas/StatusDetail' created: type: string format: date-time readOnly: true updated: type: string format: date-time readOnly: true TenantAccountStatus: title: TenantAccountStatus type: string description: Status values for Tenant Account objects enum: - Pending - Invited - Ready - Error TenantAccountCreateRequest: title: TenantAccountCreateRequest type: object description: Request data to create a TenantAccount examples: - infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf tenantOrg: rf43bbtnb9c5 properties: infrastructureProviderId: type: string format: uuid tenantOrg: type: string pattern: '^[A-Za-z0-9-_]+$' minLength: 1 description: Must be a valid Org name required: - infrastructureProviderId - tenantOrg TenantAccountUpdateRequest: title: TenantAccountUpdateRequest type: object description: |- Request data to update a TenantAccount. No params needed, an empty request will suffice. examples: - {} Site: title: Site type: object description: Site is a datacenter that is running NVIDIA Infra Controller (NICo) services examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: San Jose Central 4 description: Datacenter serving the San Jose central region org: qygdmg8oqik8 infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e siteControllerVersion: '0.1' siteAgentVersion: '0.1' registrationToken: J7KO-89RR-Y7WQ-AD90 registrationTokenExpiration: '2019-08-25T12:00:00Z' serialConsoleHostname: sjc.nico.acme.com isSerialConsoleEnabled: true serialConsoleIdleTimeout: 60 serialConsoleMaxSessionLength: 3600 isSerialConsoleSSHKeysEnabled: true machineStats: total: 15 totalByStatus: Initializing: 0 Ready: 7 Reset: 0 Maintenance: 0 InUse: 3 Error: 5 Decommissioned: 0 Unknown: 0 totalByHealth: healthy: 12 unhealthy: 3 totalByStatusAndHealth: Initializing: healthy: 0 unhealthy: 0 Ready: healthy: 5 unhealthy: 0 Reset: healthy: 0 unhealthy: 0 Maintenance: healthy: 5 unhealthy: 0 InUse: healthy: 3 unhealthy: 0 Error: healthy: 2 unhealthy: 3 Decommissioned: healthy: 0 unhealthy: 0 Unknown: healthy: 0 unhealthy: 0 totalByAllocation: allocatedInUse: 3 allocatedNotInUse: 3 unallocated: 5 capabilities: nativeNetworking: true networkSecurityGroup: true nvLinkPartition: false flow: false imageBasedOperatingSystem: false isOnline: false status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' location: city: San Jose state: CA country: USA contact: email: johndoe@nvidia.com properties: id: type: string format: uuid readOnly: true name: type: string minLength: 2 maxLength: 256 description: Name of the Site description: type: - string - 'null' description: Optional description for the Site org: type: string infrastructureProviderId: type: string format: uuid siteControllerVersion: type: - string - 'null' description: Version of the Site Controller software siteAgentVersion: type: - string - 'null' description: Version of the Site Agent software registrationToken: type: - string - 'null' description: Token that can be used to register a Site. Value only exposed to Provider registrationTokenExpiration: type: - string - 'null' format: date-time description: Date/time when registration token expires. Value only exposed to Provider readOnly: true serialConsoleHostname: type: - string - 'null' format: hostname isSerialConsoleEnabled: type: boolean description: Indicates if Serial Console is enabled for the Site by the Provider serialConsoleIdleTimeout: type: - integer - 'null' description: Maximum idle time in seconds before Serial Console is disconnected serialConsoleMaxSessionLength: type: - integer - 'null' description: Maximum length of Serial Console session in seconds isSerialConsoleSSHKeysEnabled: type: boolean description: Only visible to Tenant retrieving the Site. Indicates if Serial Console access using SSH Keys is enabled by Tenant isOnline: type: boolean description: Indicates if the Site is currently reachable from Cloud status: $ref: '#/components/schemas/SiteStatus' readOnly: true statusHistory: type: array items: $ref: '#/components/schemas/StatusDetail' created: type: string format: date-time updated: type: string format: date-time location: $ref: '#/components/schemas/SiteLocation' contact: $ref: '#/components/schemas/SiteContact' capabilities: $ref: '#/components/schemas/SiteCapabilities' machineStats: $ref: '#/components/schemas/SiteMachineStats' SiteSummary: title: SiteSummary type: object description: 'SiteSummary contains a subset of data for Site object, used when nesting in other objects' examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: San Jose Central 4 infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e isSerialConsoleEnabled: true isOnline: false capabilities: nativeNetworking: false networkSecurityGroup: true nvLinkPartition: false flow: false imageBasedOperatingSystem: false status: Pending properties: id: type: string format: uuid readOnly: true name: type: string minLength: 2 maxLength: 256 description: Name of the Site infrastructureProviderId: type: string format: uuid isSerialConsoleEnabled: type: boolean description: Indicates if Serial Console is enabled for the Site by the Provider isOnline: type: boolean description: Indicates if the Site is currently reachable from Cloud capabilities: $ref: '#/components/schemas/SiteCapabilities' status: $ref: '#/components/schemas/SiteStatus' readOnly: true SiteStatus: title: SiteStatus type: string description: Status values for Site objects enum: - Pending - Registered - Error SiteCapabilities: title: SiteCapabilities type: object description: Boolean flags to indicate features supported by a Site properties: nativeNetworking: type: boolean networkSecurityGroup: type: boolean nvLinkPartition: type: boolean flow: type: boolean imageBasedOperatingSystem: type: boolean SiteMachineStats: title: SiteMachineStats type: object description: Machine stats for a Site properties: total: type: integer totalByStatus: $ref: '#/components/schemas/SiteMachineStatsByStatus' totalByHealth: $ref: '#/components/schemas/SiteMachineStatsByHealth' totalByStatusAndHealth: $ref: '#/components/schemas/SiteMachineStatsByStatusAndHealth' totalByAllocation: $ref: '#/components/schemas/SiteMachineStatsByAllocation' SiteMachineStatsByAllocation: title: SiteMachineStatsByAllocation type: object description: Machine stats for a Site by allocation properties: allocatedInUse: type: integer allocatedNotInUse: type: integer unallocated: type: integer SiteMachineStatsByHealth: title: SiteMachineStatsByHealth type: object description: Machine stats for a Site by health properties: healthy: type: integer unhealthy: type: integer SiteMachineStatsByStatus: title: SiteMachineStatsByStatus type: object description: Machine stats for a Site by status properties: Decommissioned: type: integer Error: type: integer Initializing: type: integer InUse: type: integer Maintenance: type: integer Ready: type: integer Reset: type: integer Unknown: type: integer SiteMachineStatsByStatusAndHealth: title: SiteMachineStatsByStatusAndHealth type: object description: Machine stats for a Site by status and health properties: Decommissioned: $ref: '#/components/schemas/SiteMachineStatsByHealth' Error: $ref: '#/components/schemas/SiteMachineStatsByHealth' Initializing: $ref: '#/components/schemas/SiteMachineStatsByHealth' InUse: $ref: '#/components/schemas/SiteMachineStatsByHealth' Maintenance: $ref: '#/components/schemas/SiteMachineStatsByHealth' Ready: $ref: '#/components/schemas/SiteMachineStatsByHealth' Reset: $ref: '#/components/schemas/SiteMachineStatsByHealth' Unknown: $ref: '#/components/schemas/SiteMachineStatsByHealth' SiteCreateRequest: title: SiteCreateRequest type: object description: Request data to create a Site examples: - name: sjc4 description: Datacenter serving San Jose central region, zone 4 serialConsoleHostname: nico.acme.com location: city: San Jose state: CA country: USA contact: email: johndoe@nvidia.com properties: name: type: string description: Name for the Site minLength: 2 maxLength: 256 description: type: - string - 'null' description: Description for the Site serialConsoleHostname: type: - string - 'null' description: Hostname to reach Serial Console for the Site format: hostname location: $ref: '#/components/schemas/SiteLocation' contact: $ref: '#/components/schemas/SiteContact' required: - name SiteCapabilitiesUpdateRequest: title: SiteCapabilitiesUpdateRequest type: object description: Request to modify Site's capabilities. Partial update allowed, only specify capabilities that should be updated. properties: nativeNetworking: type: - boolean - 'null' description: Enable or disable native networking for the Site networkSecurityGroup: type: - boolean - 'null' description: Enable or disable network security groups for the Site nvLinkPartition: type: - boolean - 'null' description: Enable or disable NVLink partition support for the Site flow: type: - boolean - 'null' description: Enable or disable NICo Flow for the Site imageBasedOperatingSystem: type: - boolean - 'null' description: Enable or disable image-based operating system support for the Site SiteUpdateRequest: title: SiteUpdateRequest type: object description: Request data to update a Site examples: - name: sjc04 description: Datacenter 4 serving central San Jose renewRegistrationToken: true serialConsoleHostname: sol.nico.acme.com location: city: San Jose state: CA country: USA contact: email: johndoe@nvidia.com properties: name: type: - string - 'null' description: Update name of the Site. Can only be updated by Provider description: type: - string - 'null' description: Update description for the Site. Can only be updated by Provider renewRegistrationToken: type: boolean description: Set to true to issue a new registration token. Can only be updated by Provider serialConsoleHostname: type: - string - 'null' description: Hostname to reach Serial Console for the Site. Can only be updated by Provider format: hostname isSerialConsoleEnabled: type: boolean description: Enable/disable Serial Console. Can only be updated by Provider. Modifying this attribute has no actual effect on SOL. It will be removed in a future API version. deprecated: true serialConsoleIdleTimeout: type: integer description: Maximum idle time in seconds before Serial Console is disconnected. Can only be updated by Provider. Modifying this attribute has no actual effect on SOL. It will be removed in a future API version. deprecated: true serialConsoleMaxSessionLength: type: integer description: Maximum length of Serial Console session in seconds. Can only be updated by Provider. Modifying this attribute has no actual effect on SOL. It will be removed in a future API version. deprecated: true isSerialConsoleSSHKeysEnabled: type: boolean description: Enable/disable Serial Console access using SSH Keys. Previously updateable only by Tenants, modifying this value is no longer supported, update SSH Key Groups to remove Site instead. deprecated: true location: $ref: '#/components/schemas/SiteLocation' contact: $ref: '#/components/schemas/SiteContact' capabilities: $ref: '#/components/schemas/SiteCapabilitiesUpdateRequest' description: Modify Site capabilities. Can only be updated by Provider. Partial update allowed, only specify capabilities that should be updated. SiteLocation: title: SiteLocation type: object description: Location of the Site examples: - city: San Jose state: CA country: USA properties: city: type: string description: City where the site is located state: type: string description: State where the site is located country: type: string description: Country where the site is located SiteContact: title: SiteContact type: object description: Contact for the Site examples: - email: johndoe@nvidia.com properties: email: type: string description: Email address of the Site contact Allocation: title: Allocation type: object description: Specifies a group of resources on a Site that has been allocated to a Tenant examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: Echo Studios Allocations description: Echo Studios resource allocation in SJC4 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' allocationConstraints: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 allocationId: 9ec871ce-3363-4de2-8f79-062881067628 resourceType: InstanceType resourceTypeId: a59ee688-b5e5-4606-9891-f4a605edacd3 constraintType: Reserved constraintValue: 10 derivedResourceId: null created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string description: ID of the Allocation format: uuid readOnly: true name: type: string description: Concise and descriptive name of the Allocation minLength: 2 maxLength: 256 description: type: - string - 'null' description: Detailed description of the Allocation infrastructureProviderId: type: string description: ID of the Infrastructure Provider that created the Allocation format: uuid tenantId: type: string description: ID of the Tenant that received the Allocation format: uuid siteId: type: string description: ID of the Site where resources are allocated format: uuid status: $ref: '#/components/schemas/AllocationStatus' readOnly: true statusHistory: type: array items: $ref: '#/components/schemas/StatusDetail' readOnly: true allocationConstraints: type: array items: $ref: '#/components/schemas/AllocationConstraint' created: type: string description: Date/time when the Allocation was created format: date-time readOnly: true updated: type: string description: Date/time when the Allocation was last updated format: date-time readOnly: true AllocationStatus: title: AllocationStatus type: string description: Status values for Allocation objects enum: - Pending - Registered - Deleting - Error AllocationCreateRequest: title: AllocationCreateRequest type: object description: Request data to create an Allocation examples: - name: Echo Studios description: Echo Studios resource allocation in SJC4 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 allocationConstraints: - resourceType: InstanceType resourceTypeId: bd5a0240-eb62-4bff-91f7-335e6bb86459 constraintType: Reserved constraintValue: 10 properties: name: type: string description: Concise and descriptive name for the Allocation minLength: 2 maxLength: 256 description: type: - string - 'null' description: Detailed description for the Allocation tenantId: type: string format: uuid description: ID of the Tenant that should receive the Allocation siteId: type: string format: uuid description: ID of the Site where resources should be allocated allocationConstraints: type: array items: $ref: '#/components/schemas/AllocationConstraintCreateRequest' required: - name - tenantId - siteId AllocationUpdateRequest: title: AllocationUpdateRequest type: object description: Request data to update an Allocation examples: - name: Echo Studios Compute description: Echo Studios resource allocation in SJC4 properties: name: type: - string - 'null' description: Update name of the Allocation minLength: 2 maxLength: 256 description: type: - string - 'null' description: Update description of the Allocation AllocationConstraint: title: AllocationConstraint type: object description: Constraints on an Allocation that specify limits for different resource types examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 allocationId: 9ec871ce-3363-4de2-8f79-062881067628 resourceType: InstanceType resourceTypeId: a59ee688-b5e5-4606-9891-f4a605edacd3 constraintType: Reserved constraintValue: 10 derivedResourceId: null instanceType: name: x3.large infrastructureProviderId: 63c29416-8833-4eaf-9e1c-7c0173cc3150 siteId: c9f4f276-6f7a-4209-953c-2b9870ce7cc1 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 allocationId: 9ec871ce-3363-4de2-8f79-062881067628 resourceType: IPBlock resourceTypeId: a59ee688-b5e5-4606-9891-f4a605edacd3 constraintType: Reserved constraintValue: 20 derivedResourceId: 6b7d0abe-8403-4e9f-9300-a788d6377648 ipBlock: name: Public Network Overlay for Site SJC4 routingType: Public prefix: 202.168.16.0 prefixLength: 20 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string description: ID of the Allocation Constraint format: uuid readOnly: true allocationId: type: string format: uuid description: ID of the Allocation that contains the Allocation Constraint resourceType: type: string description: Type of the Resource that the Allocation Constraint applies to enum: - InstanceType - IPBlock resourceTypeId: type: string format: uuid description: 'ID of the Resource Type that acts as the source of the Allocation. For resource type: `InstanceType`, this is the ID of the Instance Type whose associated Machines are allocated to the Tenant. For resource type `IPBlock`, this is the ID of the Site level IP Block from where a prefix is allocated to the Tenant.' constraintType: type: string description: 'Type of the Allocation Constraint. `Reserved` is the only constraint type supported by current implementation.' enum: - Reserved - OnDemand - Preemptible constraintValue: type: integer description: |- Value of the Allocation Constraint. For resource type: `InstanceType`, this value represents number of Machines associated with the Instance Type that is allocated to the Tenant. For resource type `IPBlock`, this value represents the prefix length of the IP Block allocated to the Tenant. derivedResourceId: type: - string - 'null' description: ID of the allocated Tenant IP Block when resource type is IPBlock instanceType: $ref: '#/components/schemas/InstanceTypeSummary' ipBlock: $ref: '#/components/schemas/IpBlockSummary' created: type: string description: Date/time when the Allocation Constraint was created format: date-time readOnly: true updated: type: string description: Date/time when the Allocation Constraint was last updated format: date-time readOnly: true AllocationConstraintCreateRequest: title: AllocationConstraintCreateRequest type: object description: Request data to create an AllocationConstraint examples: - resourceType: InstanceType resourceTypeId: bd5a0240-eb62-4bff-91f7-335e6bb86459 constraintType: Reserved constraintValue: 10 - resourceType: IPBlock resourceTypeId: 67de813e-37ec-4ff3-ae38-c22351855de8 constraintType: Reserved constraintValue: 24 properties: resourceType: type: string description: Type of the Resource that the Allocation Constraint applies to enum: - InstanceType - IPBlock resourceTypeId: type: string format: uuid description: ID of the Resource Type that the Allocation Constraint applies to. For InstanceType, this is the ID of the Instance Type. For IPBlock, this is the ID of the IP Block. constraintType: type: string description: Type of the Allocation Constraint. Please note that OnDemand and Preemptible are not supported by current implementation. enum: - Reserved - OnDemand - Preemptible constraintValue: type: integer description: Value of the Allocation Constraint. For InstanceType, this value represents number of Machines allocated for Tenant. For IPBlock, this value represents the prefix Length of the IP Block. required: - resourceType - resourceTypeId - constraintType - constraintValue AllocationConstraintUpdateRequest: title: AllocationConstraintUpdateRequest type: object description: Request data to update an AllocationConstraint examples: - constraintValue: 10 properties: constraintValue: type: integer description: Value of the Allocation Constraint. For InstanceType, this value represents number of Machines allocated for Tenant. For IPBlock, this value represents the prefix Length of the IP Block. required: - constraintValue VPC: title: VPC type: object description: VPCs are grouping constructs that bind resources together examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-vpc description: Virtual network for machines executing Spark jobs org: xskkpgqpeakn tenantId: 34f5c98e-f430-457b-a812-92637d0c6fd0 siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 labels: region: us-west-1 env: dev controllerVpcId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 networkVirtualizationType: ETHERNET_VIRTUALIZER requestedVni: 12001 vni: 12001 networkSecurityGroupId: c602eb90-3039-11f0-997a-b38d4fc8389e networkSecurityGroupPropagationDetails: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 detailedStatus: Partial status: Synchronizing details: '' unpropagatedInstanceIds: - b1a5a05e-303c-11f0-b618-7f2e7f9b64ed relatedInstanceIds: - b1a5a05e-303c-11f0-b618-7f2e7f9b64ed nvLinkLogicalPartitionId: dd887330-dbd3-45ce-b400-c42fc8e47315 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid readOnly: true description: ID of the VPC name: type: string minLength: 2 maxLength: 256 description: Name of the VPC description: type: - string - 'null' description: 'Description of the VPC, can be empty' org: type: string readOnly: true description: Organization the VPC belongs to tenantId: type: string format: uuid readOnly: true description: ID of the Tenant the VPC belongs to siteId: type: string format: uuid description: ID of the Site the VPC belongs to controllerVpcId: type: - string - 'null' format: uuid description: 'Legacy attribute, contains the same value as ID' networkVirtualizationType: type: - string - 'null' enum: - ETHERNET_VIRTUALIZER - FNN description: Network virtualization type of the VPC routingProfile: type: - string - 'null' minLength: 3 maxLength: 64 description: Routing profile type for the VPC. Populated when Site has Native Networking enabled and network virtualization type is `FNN`. requestedVni: type: - integer - 'null' minimum: 1 maximum: 65535 readOnly: true description: Explicitly requested VNI for the VPC if one was requested at creation time vni: type: - integer - 'null' minimum: 1 maximum: 65535 readOnly: true description: Active VNI assigned to the VPC networkSecurityGroupId: type: - string - 'null' description: ID of the Network Security Group attached to the VPC networkSecurityGroupPropagationDetails: $ref: '#/components/schemas/NetworkSecurityGroupPropagationDetails' description: Propagation details for the attached Network Security Group nvLinkLogicalPartitionId: type: - string - 'null' format: uuid description: ID of the default NVLink Logical Partition that GPUs for all Instances in the VPC will attach to labels: $ref: '#/components/schemas/Labels' description: String key value pairs describing VPC labels status: $ref: '#/components/schemas/VpcStatus' readOnly: true description: Status of the VPC statusHistory: type: array items: $ref: '#/components/schemas/StatusDetail' readOnly: true description: History of status changes for the VPC created: type: string format: date-time readOnly: true description: Date/time when VPC was created updated: type: string format: date-time readOnly: true description: Date/time when VPC was last updated VpcStatus: title: VpcStatus type: string description: Status values for VPC objects enum: - Pending - Provisioning - Ready - Configuring - Deleting - Error VpcCreateRequest: title: VpcCreateRequest type: object description: Request data to create a VPC examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-id-vpc description: Virtual network with user-specified VPC ID siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 networkVirtualizationType: ETHERNET_VIRTUALIZER vni: 12001 - name: spark-ethernet-virtualization-vpc description: Virtual network for machines executing Spark jobs siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 networkVirtualizationType: ETHERNET_VIRTUALIZER vni: 12001 networkSecurityGroupId: c602eb90-3039-11f0-997a-b38d4fc8389e - name: spark-fnn-vpc description: Virtual network for machines executing Spark jobs siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 networkVirtualizationType: FNN routingProfile: internal vni: 12001 nvLinkLogicalPartitionId: dd887330-dbd3-45ce-b400-c42fc8e47315 labels: region: us-west-1 env: dev properties: id: type: string format: uuid description: Optional user-specified UUID for the VPC name: type: string minLength: 2 maxLength: 256 description: Name of the VPC description: type: - string - 'null' description: Optional description for the VPC siteId: type: string format: uuid description: ID of the Site where the VPC should be created networkVirtualizationType: type: - string - 'null' enum: - ETHERNET_VIRTUALIZER - FNN description: 'Network virtualization type of the VPC. If no value is specified, then defaults to `FNN` if Site has native networking enabled, or ETHERNET_VIRTUALIZER if native networking is disabled' routingProfile: type: - string - 'null' minLength: 3 maxLength: 64 description: Specify routing profile for the VPC. Only supported when `networkVirtualizationType` is set to `FNN`, or when `networkVirtualizationType` is omitted and Site has Native Networking enabled. Requires Tenant to have elevated privilege. Current accepted values are `privileged-internal`, `internal`, and `external`. networkSecurityGroupId: type: - string - 'null' description: ID of the Network Security Group to attach to the VPC vni: type: - integer - 'null' minimum: 1 maximum: 65535 description: Explicitly requested VNI for the VPC nvLinkLogicalPartitionId: type: - string - 'null' format: uuid description: ID of the default NVLink Logical Partition that GPUs for all Instances in the VPC will attach to labels: $ref: '#/components/schemas/Labels' description: String key value pairs describing VPC labels. Up to 10 key value pairs can be specified required: - name - siteId VpcUpdateRequest: title: VpcUpdateRequest type: object description: Request data to update a VPC examples: - name: spark-vpc-v1 description: Virtual network for machines executing Spark jobs v1 properties: name: type: - string - 'null' minLength: 2 maxLength: 256 description: Updated name of the VPC description: type: - string - 'null' description: Updated description of the VPC networkSecurityGroupId: type: - string - 'null' description: ID of the Network Security Group to attach to the VPC nvLinkLogicalPartitionId: type: - string - 'null' format: uuid description: ID of the default NVLink Logical Partition that GPUs for all Instances in the VPC will attach to. Can only be updated if VPC currently has no active Instances labels: $ref: '#/components/schemas/Labels' description: 'Update labels of the VPC. Up to 10 key value pairs can be specified. The labels will be entirely replaced by those sent in the request. Any labels not included in the request will be removed. To retain existing labels, first fetch them and include them along with this request.' VpcVirtualizationUpdateRequest: title: VpcVirtualizationUpdateRequest type: object description: Request data to update network virtualization type for VPC. Requests are rejected if the VPC already has Subnets or Instances. examples: - networkVirtualizationType: FNN properties: networkVirtualizationType: type: string enum: - FNN description: Network virtualization type of the VPC. Can only be updated to `FNN` VpcPeeringCreateRequest: title: VpcPeeringCreateRequest type: object description: Request data to create a VPC peering between two VPCs, the ordering of VPCs is not important required: - vpc1Id - vpc2Id - siteId properties: vpc1Id: type: string format: uuid description: ID of the first VPC in the peering vpc2Id: type: string format: uuid description: ID of the second VPC to peer with siteId: type: string format: uuid description: ID of the Site where the peering exists VpcPeering: title: VpcPeering type: object description: VPC peering connection between two VPCs on the same site properties: id: type: string format: uuid readOnly: true description: Unique identifier of the VPC peering vpc1Id: type: string format: uuid readOnly: true description: ID of the first VPC in the peering vpc2Id: type: string format: uuid readOnly: true description: ID of the second VPC in the peering siteId: type: string format: uuid readOnly: true description: ID of the Site where the peering exists isMultiTenant: type: boolean readOnly: true description: Indicates if this is a multi-tenant peering (VPCs from different tenants) status: $ref: '#/components/schemas/VpcPeeringStatus' readOnly: true description: Status of the VPC peering created: type: string format: date-time readOnly: true description: Date and time when the VPC peering was created updated: type: string format: date-time readOnly: true description: Date and time when the VPC peering was last updated VpcPeeringStatus: title: VpcPeeringStatus type: string description: Status values for VPC peering objects enum: - Pending - Configuring - Requested - Ready - Deleting - Error VpcPrefix: title: VpcPrefix type: object description: VPC Prefixes are network grouping constructs for baremetal machines. examples: - id: 0c03ba01-d86b-4a57-a41e-cc359b380a6f name: east-vpc-traffic-net siteId: ea144def-d68f-44c3-9485-4b103fa2686f vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 prefix: 192.168.1.0/24 ipBlockId: 8c1d1a06-90a2-4863-8ee1-6029265b9f0a prefixLength: 20 status: Ready statusHistory: - status: Ready message: 'Received VPC prefix creation request, ready' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid readOnly: true name: type: string minLength: 2 maxLength: 256 description: Name of the VPC Prefix siteId: type: string format: uuid description: ID of the Site the VPC Prefix belongs to vpcId: type: string format: uuid description: ID of the VPC the VPC Prefix belongs to tenantId: type: string format: uuid description: ID of the Tenant the VPC Prefix belongs to ipBlockId: type: - string - 'null' format: uuid description: ID of the IP Block that contains the prefix of the VPC Prefix prefix: type: - string - 'null' description: The network prefix including prefix length in CIDR notation prefixLength: type: integer minimum: 8 maximum: 31 example: 24 description: Length of the prefix. Valid range is 8 to 31, and max usable value depends on prefix length of parent IP Block. status: $ref: '#/components/schemas/VpcPrefixStatus' readOnly: true description: Status of the VPC Prefix statusHistory: type: array items: $ref: '#/components/schemas/StatusDetail' readOnly: true description: Details of 20 most recent status changes created: type: string format: date-time readOnly: true description: Date and time when the VPC Prefix was created updated: type: string format: date-time readOnly: true description: Date and time when the VPC Prefix was updated VpcPrefixStatus: title: VpcPrefixStatus type: string description: Status values for VPC Prefix objects enum: - Ready - Deleting - Error VpcPrefixCreateRequest: title: VpcPrefixCreateRequest type: object examples: - name: east-vpc-traffic-net vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 ipBlockId: 8c1d1a06-90a2-4863-8ee1-6029265b9f0a prefixLength: 20 description: Request data for creating VPC Prefix properties: name: type: string minLength: 2 maxLength: 256 description: Human readable name for the VPC Prefix vpcId: type: string format: uuid description: ID of the VPC ipBlockId: type: string format: uuid description: ID of the IP Block to allocate the VPC Prefix from prefixLength: type: integer minimum: 8 maximum: 31 description: Prefix length for the VPC Prefix. Valid range is 8 to 31, and max usable value depends on prefix length of parent IP Block. required: - name - vpcId - ipBlockId - prefixLength VpcPrefixUpdateRequest: title: VpcPrefixUpdateRequest type: object examples: - name: east-vpc-traffic-net description: Request data for updating a VPC Prefix properties: name: type: string minLength: 2 maxLength: 256 required: - name Subnet: title: Subnet type: object description: Subnets are network grouping constructs for baremetal machines. examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-gpu-net description: Subnet for GPU nodes siteId: ea144def-d68f-44c3-9485-4b103fa2686f vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 controllerNetworkSegmentId: abe7b0e8-67db-4e89-903e-fc4f2bd7f034 ipv4Prefix: 204.168.0.250 ipv4BlockId: 8c1d1a06-90a2-4863-8ee1-6029265b9f0a ipv4Gateway: 204.168.0.1 ipv6Prefix: null ipv6BlockId: null ipv6Gateway: null prefixLength: 20 routingType: Public status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid readOnly: true name: type: string minLength: 2 maxLength: 256 description: type: - string - 'null' siteId: type: string format: uuid vpcId: type: string format: uuid tenantId: type: string format: uuid controllerNetworkSegmentId: type: - string - 'null' format: uuid ipv4Prefix: type: - string - 'null' format: ipv4 description: The prefix that gets assigned to the subnet if ipv4 block is chosen ipv4BlockId: type: - string - 'null' format: uuid ipv4Gateway: type: - string - 'null' format: ipv4 ipv6Prefix: type: - string - 'null' format: ipv6 ipv6BlockId: type: - string - 'null' format: uuid ipv6Gateway: type: - string - 'null' format: ipv6 mtu: type: integer description: Maximum Transmission Unit size in bytes. This property is system-determined and read-only. readOnly: true prefixLength: type: integer example: 24 description: Max value depends on prefix length of parent IP Block routingType: type: - string - 'null' enum: - Public - DatacenterOnly status: $ref: '#/components/schemas/SubnetStatus' readOnly: true statusHistory: type: array items: $ref: '#/components/schemas/StatusDetail' readOnly: true created: type: string format: date-time readOnly: true updated: type: string format: date-time readOnly: true deprecations: type: array items: $ref: '#/components/schemas/Deprecation' SubnetStatus: title: SubnetStatus type: string description: Status values for Subnet objects enum: - Pending - Provisioning - Ready - Deleting - Error SubnetCreateRequest: title: SubnetCreateRequest type: object examples: - name: spark-gpu-net vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 ipv4BlockId: 8c1d1a06-90a2-4863-8ee1-6029265b9f0a prefixLength: 20 description: Request data for creating Subnet properties: name: type: string minLength: 2 maxLength: 256 description: type: - string - 'null' vpcId: type: string format: uuid ipv4BlockId: type: - string - 'null' format: uuid ipv6BlockId: type: - string - 'null' format: uuid prefixLength: type: integer required: - name - vpcId - prefixLength SubnetUpdateRequest: title: SubnetUpdateRequest type: object examples: - name: spark-gpu-subnet description: Subnet for dedicated GPU nodes description: Request data for updating a Subnet properties: name: type: string minLength: 2 maxLength: 256 description: type: - string - 'null' required: - name InfiniBandPartition: title: InfiniBandPartition type: object description: InfiniBand Partitions are network segments utilizing InfiniBand topology examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: turbo-net description: InfiniBand Partition for model training Instances siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 controllerIBPartitionId: 0e60d064-3d38-4812-84d9-c3353bd96eaf partitionKey: '0x1' partitionName: turbo-net serviceLevel: 5 rateLimit: 40 mtu: 4000 enableSharp: true status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid readOnly: true name: type: string minLength: 2 maxLength: 256 description: type: - string - 'null' siteId: type: string format: uuid tenantId: type: string format: uuid controllerIBPartitionId: type: - string - 'null' format: uuid partitionKey: type: - string - 'null' readOnly: true partitionName: type: - string - 'null' readOnly: true serviceLevel: type: - integer - 'null' minimum: 0 maximum: 15 readOnly: true rateLimit: type: - number - 'null' enum: - 2 - 5 - 10 - 14 - 20 - 25 - 30 - 40 - 56 - 60 - 80 - 100 - 112 - 120 - 168 - 200 - 300 readOnly: true mtu: type: - integer - 'null' enum: - 4000 - 8000 readOnly: true enableSharp: type: boolean readOnly: true labels: $ref: '#/components/schemas/Labels' description: String key value pairs describing InfiniBand Partition labels. Up to 10 key value pairs can be specified status: $ref: '#/components/schemas/InfiniBandPartitionStatus' readOnly: true statusHistory: type: array items: $ref: '#/components/schemas/StatusDetail' readOnly: true created: type: string format: date-time readOnly: true updated: type: string format: date-time readOnly: true InfiniBandPartitionStatus: title: InfiniBandPartitionStatus type: string description: Status values for InfiniBand Partition objects enum: - Pending - Provisioning - Ready - Configuring - Deleting - Error InfiniBandPartitionCreateRequest: title: InfiniBandPartitionCreateRequest type: object examples: - name: turbo-net siteId: 8c43e859-d301-4ecf-9d0e-46bf374473c4 description: Request data to create an InfiniBand Partition properties: name: type: string minLength: 2 maxLength: 256 description: Name of the Partition to create description: type: - string - 'null' description: Optional description of the Partition siteId: type: string format: uuid description: ID of the Site the Partition should belong to labels: $ref: '#/components/schemas/Labels' description: String key value pairs describing Partition labels. Up to 10 key value pairs can be specified required: - name - siteId InfiniBandPartitionUpdateRequest: title: InfiniBandPartitionUpdateRequest type: object examples: - name: turbo-net description: InfiniBand Partition for model training Instances description: Request data to update an InfiniBand Partition properties: name: type: string minLength: 2 maxLength: 256 description: type: - string - 'null' labels: $ref: '#/components/schemas/Labels' description: String key value pairs describing Partition labels. Up to 10 key value pairs can be specified required: - name NVLinkLogicalPartition: title: NVLinkLogicalPartition type: object description: NVLink Logical Partitions are logical GPU fabric segments for high bandwidth communication among selective GPUs examples: - id: ded96bdf-905e-40dd-8a58-3472aab60042 name: partition-east-gpu description: Partition for model training Instances siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid readOnly: true description: Unique ID of the NVLink Logical Partition name: type: string minLength: 2 maxLength: 256 description: Name of the NVLink Logical Partition description: type: - string - 'null' description: Optional description of the NVLink Logical Partition siteId: type: string format: uuid description: ID of the Site the NVLink Logical Partition belongs to tenantId: type: string format: uuid description: ID of the Tenant the NVLink Logical Partition belongs to status: $ref: '#/components/schemas/NVLinkLogicalPartitionStatus' readOnly: true description: Status of the NVLink Logical Partition statusHistory: type: array items: $ref: '#/components/schemas/StatusDetail' description: Details of status changes for the NVLink Logical Partition over time readOnly: true created: type: string format: date-time readOnly: true description: Date and time the NVLink Logical Partition was created updated: type: string format: date-time readOnly: true description: Date and time the NVLink Logical Partition was last updated NVLinkLogicalPartitionStatus: title: NVLinkLogicalPartitionStatus type: string description: Status values for NVLink Logical Partition objects enum: - Pending - Provisioning - Configuring - Ready - Deleting - Error NVLinkLogicalPartitionCreateRequest: title: NVLinkLogicalPartitionCreateRequest type: object examples: - name: partition-east-gpu siteId: 69dae3c8-3554-4a1f-b391-858c6dc47fff description: Request data to create an NVLink Logical Partition properties: name: type: string minLength: 2 maxLength: 256 description: Name of the NVLink Logical Partition to create description: type: - string - 'null' description: Optional description of the NVLink Logical Partition siteId: type: string format: uuid description: ID of the Site the NVLink Logical Partition should belong to required: - name - siteId NVLinkLogicalPartitionUpdateRequest: title: NVLinkLogicalPartitionUpdateRequest type: object examples: - name: partition-east-gpu description: NVLink Logical Partition for model training Instances description: Request data to update an NVLink Logical Partition properties: name: type: - string - 'null' minLength: 2 maxLength: 256 description: Updated name for the NVLink Logical Partition description: type: - string - 'null' description: Updated description for the NVLink Logical Partition OperatingSystem: title: OperatingSystem type: object description: Describes the attributes of the operating system/bootloader that can be used on instances examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: ubuntu-22.04 description: Ubuntu 22.04 infrastructureProviderId: null tenantId: f97df110-f4de-492e-8849-4a6af68026b0 ipxeScript: |- #!ipxe kernel http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux initrd=initrd.gz initrd http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz boot || imgfree shell userData: |- #cloud-config autoinstall: apt: geoip: true preserve_sources_list: false primary: - arches: [amd64, i386] uri: http://archive.ubuntu.com/ubuntu - arches: [default] uri: http://ports.ubuntu.com/ubuntu-ports phone_home: url: http://169.254.169.254:7777/latest/meta-data/phone_home post: all isCloudInit: true phoneHomeEnabled: true isActive: true deactivationNote: null allowOverride: false status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: 42b0f982-5c61-4d2f-a018-41ece61f4641 name: debian-12-amd64 description: Official Debian 12 for AMD/Intel infrastructureProviderId: null tenantId: f97df110-f4de-492e-8849-4a6af68026b0 type: Image imageUrl: 'https://saimei.ftp.acc.umu.se/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2' imageSha: 2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae imageAuthType: Bearer imageAuthToken: acbd18db4cc2f85cedef654fccc4a4d8 imageDisk: /dev/sda rootFsId: 6c2ac315-3040-4728-94eb-b66d320206c1 rootFsLabel: null ipxeScript: null userData: null isCloudInit: true phoneHomeEnabled: false isActive: true deactivationNote: null allowOverride: false siteAssociations: - site: id: 4b36152c-f48d-4bcc-a722-0fd8e2ad209a name: sjc-central-1 infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e isSerialConsoleEnabled: true isOnline: true capabilities: nativeNetworking: false networkSecurityGroup: true nvLinkPartition: false flow: false imageBasedOperatingSystem: false status: Registered status: Syncing version: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - site: id: 219b7913-4494-4589-940e-e78ca879b302 name: sc-west-4 infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e isSerialConsoleEnabled: true isOnline: true capabilities: nativeNetworking: false networkSecurityGroup: false nvLinkPartition: false flow: false imageBasedOperatingSystem: false status: Registered status: Syncing version: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: ubuntu-22.04 description: Ubuntu 22.04 infrastructureProviderId: null tenantId: f97df110-f4de-492e-8849-4a6af68026b0 ipxeScript: |- #!ipxe kernel http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux initrd=initrd.gz initrd http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz boot || imgfree shell userData: |- #cloud-config autoinstall: apt: geoip: true preserve_sources_list: false primary: - arches: [amd64, i386] uri: http://archive.ubuntu.com/ubuntu - arches: [default] uri: http://ports.ubuntu.com/ubuntu-ports phone_home: url: http://169.254.169.254:7777/latest/meta-data/phone_home post: all isCloudInit: true phoneHomeEnabled: true isActive: false deactivationNote: 'iPXE script is referencing a URL that is unreachable, needs to be researched' allowOverride: false status: Deactivated statusHistory: - status: Deactivated message: Operating System has been deactivated created: '2019-08-24T20:25:17Z' updated: '2019-08-24T20:25:17Z' - status: Ready message: Operating System is now ready to use created: '2019-08-24T14:17:34Z' updated: '2019-08-24T14:17:34Z' - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid description: ID of the Operating System readOnly: true name: type: string minLength: 2 maxLength: 256 description: Name of the Operating System description: type: - string - 'null' description: Optional description of the Operating System infrastructureProviderId: type: - string - 'null' format: uuid description: Specified if a Provider owns the Operating System tenantId: type: - string - 'null' format: uuid description: Specified if a Tenant owns the Operating System type: type: - string - 'null' description: Type of the Operating System enum: - iPXE - Image imageUrl: type: - string - 'null' format: uri description: Original URL from where the Operating System image can be retrieved imageSha: type: - string - 'null' description: 'SHA hash of the image file, only present for image based OS' imageAuthType: type: - string - 'null' description: Authentication type for image URL e.g. 'Basic' or 'Bearer' imageAuthToken: type: - string - 'null' description: Auth token to retrieve the image from image URL imageDisk: type: - string - 'null' description: Disk path where the image should be monuted rootFsId: type: - string - 'null' description: 'Root filesystem UUID, only applicable for image based Operating System' rootFsLabel: type: - string - 'null' description: 'Root filesystem label, only applicable for image based Operating System' ipxeScript: type: - string - 'null' description: 'iPXE script or URL, only applicable for iPXE based Operating System' userData: type: - string - 'null' description: User data for the Operating System isCloudInit: type: boolean description: Specified when the Operating System is Cloud Init based phoneHomeEnabled: type: boolean description: Indicates whether the Phone Home service should be enabled or disabled for Operating System isActive: type: boolean description: Indicates if the Operating System is active deactivationNote: type: - string - 'null' description: Optional deactivation note if OS is inactive allowOverride: type: boolean description: Indicates if the user data can be overridden at Instance creation time siteAssociations: type: array description: Sites the Operating System is synced to items: $ref: '#/components/schemas/OperatingSystemSiteAssociation' status: $ref: '#/components/schemas/OperatingSystemStatus' description: Status of the Operating System statusHistory: type: array description: History of status changes over time items: $ref: '#/components/schemas/StatusDetail' created: type: string format: date-time description: Date/time when the Operating System was created readOnly: true updated: type: string format: date-time description: Date/time when the Operating System was updated readOnly: true OperatingSystemStatus: title: OperatingSystemStatus type: string description: Status values for Operating System objects enum: - Pending - Provisioning - Syncing - Ready - Deleting - Error - Deactivated OperatingSystemSiteAssociation: title: OperatingSystemSiteAssociation type: object description: Describes the relationship between Operating Systems and Sites examples: - site: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: sjc-central4 infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e isSerialConsoleEnabled: true isOnline: false capabilities: nativeNetworking: false networkSecurityGroup: false nvLinkPartition: false flow: false imageBasedOperatingSystem: false status: Pending status: Syncing version: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: site: $ref: '#/components/schemas/SiteSummary' status: $ref: '#/components/schemas/SshKeyGroupStatus' version: type: - string - 'null' description: Version of the Key Group on Site example: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 created: type: string format: date-time readOnly: true updated: type: string format: date-time readOnly: true OperatingSystemCreateRequest: title: OperatingSystemCreateRequest type: object examples: - name: ubuntu-official-22.04 description: Official Ubuntu 22.04 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 ipxeScript: |- #!ipxe kernel http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux initrd=initrd.gz initrd http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz boot || imgfree shell userData: |- #cloud-config autoinstall: apt: geoip: true preserve_sources_list: false primary: - arches: [amd64, i386] uri: http://archive.ubuntu.com/ubuntu - arches: [default] uri: http://ports.ubuntu.com/ubuntu-ports phoneHomeEnabled: true isCloudInit: true allowOverride: false - name: debian-12-amd64 description: Official Debian 12 for AMD/Intel tenantId: f97df110-f4de-492e-8849-4a6af68026b0 siteIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 imageUrl: 'https://saimei.ftp.acc.umu.se/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2' imageSha: 2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae imageAuthType: Bearer imageAuthToken: acbd18db4cc2f85cedef654fccc4a4d8 imageDisk: /dev/sda rootFsId: 6c2ac315-3040-4728-94eb-b66d320206c1 isCloudInit: true allowOverride: false description: Request data to create an OperatingSystem properties: name: type: string minLength: 2 maxLength: 256 description: Name of the Operating System description: type: - string - 'null' description: Optional description of the Operating System infrastructureProviderId: type: - string - 'null' format: uuid description: 'Deprecated: Infrastructure Provider is now inferred from org membership.' deprecated: true tenantId: type: - string - 'null' format: uuid description: 'Deprecated: Tenant is now inferred from org membership.' deprecated: true siteIds: type: array items: type: string format: uuid description: 'Specified only one Site if an Operating System is Image based, more than one Site is not supported"' ipxeScript: type: - string - 'null' description: 'iPXE script or URL, only applicable for iPXE based OS. Cannot be specified if imageUrl is specified' imageUrl: type: - string - 'null' format: uri description: 'Original URL from where the Operating System image can be retreived from, required for image based OS. Cannot be specified if ipxeScript is specified' imageSha: type: - string - 'null' description: 'SHA hash of the image file, required for image based OS' imageAuthType: type: - string - 'null' description: 'Authentication type for image URL if needed e.g. basic/bearer/token, required is imageAuthToken is specified' imageAuthToken: type: - string - 'null' description: 'Auth token to retrieve the image from image URL, required if imageAuthType is specified' imageDisk: type: - string - 'null' description: 'Disk path where the image should be mounted, optional' rootFsId: type: - string - 'null' description: 'Root filesystem UUID, this or `rootFsLabel` required for image based OS' rootFsLabel: type: - string - 'null' description: 'Root filesystem label, this or `rootFsId` required for image based OS' phoneHomeEnabled: type: - boolean - 'null' description: Indicates whether the Phone Home service should be enabled or disabled for Operating System userData: type: - string - 'null' description: User data for the Operating System isCloudInit: type: boolean description: Specified when the Operating System is Cloud Init based allowOverride: type: boolean description: Indicates if the user data can be overridden at Instance creation time required: - name OperatingSystemUpdateRequest: title: OperatingSystemUpdateRequest type: object examples: - name: ubuntu-22.04 description: Ubuntu 22.04 phoneHomeEnabled: true allowOverride: false - name: debian-12-amd64 description: Official Debian 12 for AMD/Intel imageUrl: 'https://saimei.ftp.acc.umu.se/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2' imageSha: 2c26b46b68ffc68ff99b453c1d30413413422d706483bfa0f98a5e886266e7ae imageAuthType: Bearer imageAuthToken: acbd18db4cc2f85cedef654fccc4a4d8 imageDisk: /dev/sda rootFsId: 6c2ac315-3040-4728-94eb-b66d320206c1 isCloudInit: true allowOverride: false - isActive: false deactivationNote: 'iPXE script is referencing a URL that is unreachable, needs to be researched' description: Request data to update an OperatingSystem. Only image related attributes can be updated for image based OS and only iPXE attributes can be updated for iPXE based OS properties: name: type: - string - 'null' minLength: 2 maxLength: 256 description: Name of the Operating System description: type: - string - 'null' description: Optional description of the Operating System ipxeScript: type: - string - 'null' description: 'iPXE script or URL, only applicable for iPXE based OS. Cannot be specified if imageUrl is specified' imageUrl: type: - string - 'null' format: uri description: 'Original URL from where the Operating System image can be retreived from, required for image based OS' imageSha: type: - string - 'null' description: 'SHA hash of the image file, required for image based OS' imageAuthType: type: - string - 'null' description: 'Authentication type for image URL if needed e.g. basic/bearer/token, required is imageAuthToken is specified' imageAuthToken: type: - string - 'null' description: 'Auth token to retrieve the image from image URL, required if imageAuthType is specified' imageDisk: type: - string - 'null' description: 'Disk path where the image should be mounted, optional' rootFsId: type: - string - 'null' description: 'Root filesystem UUID, this or `rootFsLabel` required for image based OS' rootFsLabel: type: - string - 'null' description: 'Root filesystem label, this or `rootFsId` required for image based OS' phoneHomeEnabled: type: - boolean - 'null' description: Indicates whether the Phone Home service should be enabled or disabled for Operating System userData: type: - string - 'null' description: User data for the Operating System isCloudInit: type: - boolean - 'null' description: Specified when the Operating System is Cloud Init based allowOverride: type: - boolean - 'null' description: Indicates if the user data can be overridden at Instance creation time isActive: type: - boolean - 'null' description: Indicates if the Operating System is active deactivationNote: type: - string - 'null' description: Optional deactivation note if OS is inactive InstanceType: title: InstanceType type: object description: Instance types describe a set of machines that match a certain criteria examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: x3.large description: 'Part of X family, the X3 Large features increased compute power' infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 labels: region: portland env: staging machineCapabilities: - type: CPU name: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz frequency: 3.0GHz cores: 18 threads: 36 count: 2 machineInstanceTypes: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' deprecations: - queryParam: includeMachineAssociation replacedBy: includeMachineAssignment takeActionBy: '2023-07-26T00:00:00Z' notice: '''includeMachineAssociation'' has been deprecated in favor of ''includeMachineAssignment''. Please take action immediately.' - attribute: displayName takeActionBy: '2024-10-30T00:00:00Z' notice: '''displayName'' has been deprecated. Please take action immediately.' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid readOnly: true name: type: string minLength: 2 maxLength: 256 description: type: - string - 'null' controllerMachineType: type: - string - 'null' infrastructureProviderId: type: string format: uuid siteId: type: string format: uuid labels: $ref: '#/components/schemas/Labels' machineCapabilities: type: array items: $ref: '#/components/schemas/MachineCapability' machineInstanceTypes: type: array description: Available only for Providers items: $ref: '#/components/schemas/MachineInstanceType' allocationStats: $ref: '#/components/schemas/InstanceTypeAllocationStats' description: summary of machine counts by allocation status status: $ref: '#/components/schemas/InstanceTypeStatus' statusHistory: type: array items: $ref: '#/components/schemas/StatusDetail' deprecations: type: array items: $ref: '#/components/schemas/Deprecation' created: type: string format: date-time readOnly: true updated: type: string format: date-time readOnly: true InstanceTypeSummary: title: InstanceTypeSummary type: object description: Describes a subset of core attributes of an Instance Type examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: x3.large infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e siteId: 72771e6a-6f5e-4de4-a5b9-1266c4197811 status: Pending properties: id: type: string format: uuid readOnly: true name: type: string minLength: 2 maxLength: 256 infrastructureProviderId: type: string format: uuid siteId: type: string format: uuid status: $ref: '#/components/schemas/InstanceTypeStatus' InstanceTypeStatus: title: InstanceTypeStatus type: string description: Status values for Instance Type objects enum: - Pending - Registering - Ready - Deleting - Error InstanceTypeAllocationStats: title: InstanceTypeAllocationStats type: object examples: - assigned: 30 total: 10 used: 3 unused: 7 unusedUsable: 7 maxAllocatable: 20 description: Allocation statistics for Instance Type properties: assigned: type: integer description: Total number of Machines assigned to this Instance Type total: type: integer description: Total number of Machines allocated to different Tenants for this Instance Type used: type: integer description: Total number of allocated Machines of this Instance Type currently being used by Tenants unused: type: integer description: Total number of allocated Machines of this Instance Type that is currently not being used by Tenants unusedUsable: type: integer description: 'Total number of allocated Machines of this Instance Type that is currently not in use but in Ready state, therefore can be provisioned by Tenant' maxAllocatable: type: integer description: Maximum number of Machines of this Instance Type that can be allocated to a Tenant InstanceTypeCreateRequest: title: InstanceTypeCreateRequest type: object examples: - name: x3.large description: 'Part of X family, the X3 Large features increased compute power' siteId: 8d97fa69-9199-49ff-bcf3-168c62d3874e labels: region: portland env: staging machineCapabilities: - type: CPU name: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz frequency: 3.0GHz count: 2 - type: Memory name: Corsair Vengeance LPX capacity: 32GB count: 4 description: Request data to create an Instance Type properties: name: type: string minLength: 2 maxLength: 256 description: type: - string - 'null' siteId: type: string format: uuid labels: $ref: '#/components/schemas/Labels' controllerMachineType: type: - string - 'null' machineCapabilities: type: array items: $ref: '#/components/schemas/InstanceTypeCapabilityCreateRequest' required: - name - siteId InstanceTypeUpdateRequest: title: InstanceTypeUpdateRequest type: object examples: - description: Updated version of the X3 Large family of machines description: Request data to update an Instance Type properties: name: type: - string - 'null' minLength: 2 maxLength: 256 description: type: - string - 'null' labels: $ref: '#/components/schemas/Labels' machineCapabilities: type: array items: $ref: '#/components/schemas/MachineCapability' InstanceTypeCapabilityCreateRequest: title: InstanceTypeCapabilityCreateRequest type: object description: Describes request attributes for Instance Type Capability examples: - type: CPU name: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz frequency: 3.0GHz count: 2 - type: Memory name: DDR4 capacity: 131072GB count: 4 - type: Network name: MT42822 BlueField-2 integrated ConnectX-6 Dx network controller deviceType: DPU count: 2 - type: Storage name: Dell Ent NVMe CM6 RI 1.92TB capacity: 1.92TB count: 2 - type: GPU name: NVIDIA A100 PCIe capacity: 80GB count: 2 - type: InfiniBand name: 'MT2910 Family [ConnectX-7]' vendor: Mellanox Technologies inactiveDevices: - 1 - 3 count: 4 - type: DPU name: DPU count: 2 properties: type: type: string enum: - CPU - Memory - Storage - Network - GPU - InfiniBand - DPU description: Type of the Capability name: type: - string description: Name of the Capability component frequency: type: - string - 'null' description: 'Frequency of the Capability component, if available' capacity: type: - string - 'null' description: 'Capacity of the Capability component, if applicable' vendor: type: - string - 'null' description: 'Vendor of the Capability component, if available' count: type: - integer - 'null' description: Count of the Capability component inactiveDevices: type: array description: 'Indices of those devices that are inactive, only valid for InfiniBand Capability type' items: type: integer deviceType: type: - string - 'null' description: 'Device Type of the Capability component, if available' Instance: title: Instance type: object description: Instance is a baremetal Machine that has been provisioned for a Tenant examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: spark-monitor-1 description: Node for monitoring Spark tenantId: f97df110-f4de-492e-8849-4a6af68026b0 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b controllerInstanceId: null ipxeScript: null alwaysBootWithCustomIpxe: false networkSecurityGroupId: c602eb90-3039-11f0-997a-b38d4fc8389e networkSecurityGroupPropagationDetails: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 detailedStatus: Partial status: Synchronizing details: '' unpropagatedInstanceIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 relatedInstanceIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 networkSecurityGroupInherited: false userData: null labels: region: portland env: staging isUpdatePending: false serialConsoleUrl: 'ssh://user@nico.acme.com' interfaces: - id: 64d2028c-ae87-4069-a624-66089d957ef9 instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a isPhysical: true virtualFunctionId: null macAddress: null ipAddresses: [] status: Pending created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' infinibandInterfaces: - id: c518a0e8-3f49-4a1a-8935-a6d3dee6911e instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 partitionId: 05ef7e84-1d4e-4e4d-980d-38589479a0fe device: 'MT2910 Family [ConnectX-7]' deviceInstance: 0 isPhysical: true virtualFunctionId: null guid: 946dae0300339498 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' nvLinkInterfaces: - id: fc19ab3f-1e52-4846-91bd-98743ff2752c instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 nvLinkDomainId: 59202b81-65fb-45ec-b3b8-91ab0ad3f34a deviceInstance: 0 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: fc19ab3f-1e52-4846-91bd-98743ff2752c instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 nvLinkDomainId: 59202b81-65fb-45ec-b3b8-91ab0ad3f34a deviceInstance: 1 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: fc19ab3f-1e52-4846-91bd-98743ff2752c instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 nvLinkDomainId: 59202b81-65fb-45ec-b3b8-91ab0ad3f34a deviceInstance: 2 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: fc19ab3f-1e52-4846-91bd-98743ff2752c instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 nvLinkDomainId: 59202b81-65fb-45ec-b3b8-91ab0ad3f34a deviceInstance: 3 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' dpuExtensionServiceDeployments: [] sshKeyGroupIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 sshKeyGroups: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: reno-integration-sre description: SRE access SSH keys for Reno Integration version: fbc692b61ffef6fbfc38a3833f6b7e7ae508da75 status: Syncing created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' tpmEkCertificate: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMxVENDQWJ5Z0F3SUJBZ0lVTEE1ZHFPK1E5OXZQM3VYRTRKcjBncVRtOW93d0RRWUpLb1pJaHZjTkFRRUwKQlFBd0xqRUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2s1MmFXUnBZU0JEYjNKNw== status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' deprecations: - attribute: sshkeygroups replacedBy: sshKeyGroups takeActionBy: '2025-09-04T00:00:00Z' notice: '''sshkeygroups'' is being deprecated in favor of ''sshKeyGroups''. Please take action prior to the specified date.' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: f61fbc1b-ba32-4476-aab5-5ac7c64c3f26 name: spark-monitor-2 description: Node for monitoring Spark tenantId: f97df110-f4de-492e-8849-4a6af68026b0 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 vpcId: ebcd2d2a-deca-4ac4-b079-d7a97fff8a6b secondaryVpcIds: - 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b controllerInstanceId: null ipxeScript: null alwaysBootWithCustomIpxe: false userData: null labels: region: portland env: staging isUpdatePending: false serialConsoleUrl: 'ssh://user@nico.acme.com' interfaces: - id: 64d2028c-ae87-4069-a624-66089d957ef9 instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 vpcPrefixId: 000bc42b-f946-472e-83d4-ddf7e365e148 isPhysical: true virtualFunctionId: null macAddress: null ipAddresses: [] status: Pending created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' infinibandInterfaces: - id: c518a0e8-3f49-4a1a-8935-a6d3dee6911e instanceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 partitionId: 05ef7e84-1d4e-4e4d-980d-38589479a0fe device: 'MT2910 Family [ConnectX-7]' deviceInstance: 0 isPhysical: true virtualFunctionId: null guid: 946dae0300339498 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' dpuExtensionServiceDeployments: - id: 3951ec37-d78f-4ad7-92e1-3fdc76ccf246 dpuExtensionService: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: busybox serviceType: KubernetesPod latestVersion: V1-T1761856992374052 status: Ready version: V1-T1761856992374052 status: Running created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' sshKeyGroupIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 sshKeyGroups: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: reno-integration-sre description: SRE access SSH keys for Reno Integration version: fbc692b61ffef6fbfc38a3833f6b7e7ae508da75 status: Syncing created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' tpmEkCertificate: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMxVENDQWJ5Z0F3SUJBZ0lVTEE1ZHFPK1E5OXZQM3VYRTRKcjBncVRtOW93d0RRWUpLb1pJaHZjTkFRRUwKQlFBd0xqRUxNQWtHQTFVRUJoTUNWVk14RXpBUkJnTlZCQW9NQ2s1MmFXUnBZU0JEYjNKNw== status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' deprecations: - attribute: sshkeygroups replacedBy: sshKeyGroups takeActionBy: '2025-09-04T00:00:00Z' notice: '''sshkeygroups'' is being deprecated in favor of ''sshKeyGroups''. Please take action prior to the specified date.' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid description: Unique identifier for the Instance readOnly: true name: type: string description: Name for the Instance minLength: 2 maxLength: 256 description: type: - string - 'null' description: Description for the Instance tenantId: type: string format: uuid description: ID of the Tenant the Instance belongs to infrastructureProviderId: type: string format: uuid description: ID of the Infrastructure Provider that owns the Site where the Instance is located siteId: type: string format: uuid description: ID of the Site where the Instance is located instanceTypeId: type: - string - 'null' format: uuid vpcId: type: string format: uuid secondaryVpcIds: type: array description: IDs of VPCs attached to the Instance through non-primary interfaces items: type: string format: uuid machineId: type: - string - 'null' operatingSystemId: type: - string - 'null' format: uuid networkSecurityGroupId: type: - string - 'null' networkSecurityGroupPropagationDetails: $ref: '#/components/schemas/NetworkSecurityGroupPropagationDetails' description: Propagation details for the attached Network Security Group networkSecurityGroupInherited: type: boolean description: Indicates if the Network Security Group is inherited from VPC controllerInstanceId: type: - string - 'null' format: uuid ipxeScript: type: - string - 'null' alwaysBootWithCustomIpxe: type: boolean description: Indicates whether the Instance should always execute custom iPXE script when rebooting phoneHomeEnabled: type: boolean description: Indicates whether the Phone Home service should be enabled or disabled for Instance userData: type: - string - 'null' labels: $ref: '#/components/schemas/Labels' isUpdatePending: type: boolean description: Indicates whether an update is available for the Instance. Updates can be applied on reboot serialConsoleUrl: type: - string - 'null' description: 'Serial Console URL for the Instance. Format: ssh://@siteSerialConsoleHostname' interfaces: type: array items: $ref: '#/components/schemas/Interface' infinibandInterfaces: type: array items: $ref: '#/components/schemas/InfiniBandInterface' nvLinkInterfaces: type: array items: $ref: '#/components/schemas/NVLinkInterface' dpuExtensionServiceDeployments: type: array description: DPU Extension Services deployed on DPUs of this Instance items: $ref: '#/components/schemas/DpuExtensionServiceDeployment' sshKeyGroupIds: type: array description: IDs of SSH Key Groups associated with this Instance items: type: string format: uuid sshKeyGroups: type: array description: IDs of SSH Key Groups associated with this Instance items: $ref: '#/components/schemas/SshKeyGroup' tpmEkCertificate: type: - string - 'null' description: base64 encoded TPM EK Certificate associated with this Instance status: $ref: '#/components/schemas/InstanceStatus' readOnly: true statusHistory: type: array items: $ref: '#/components/schemas/StatusDetail' deprecations: type: array items: $ref: '#/components/schemas/Deprecation' created: type: string format: date-time readOnly: true updated: type: string format: date-time readOnly: true InstanceStatus: title: InstanceStatus type: string description: Status values for Instance objects enum: - Pending - Provisioning - Configuring - Ready - Updating - Repairing - Rebooting - Terminating - Error InstanceCreateRequest: title: InstanceCreateRequest type: object examples: - name: spark-monitor-1 description: Node for monitoring Spark tenantId: f97df110-f4de-492e-8849-4a6af68026b0 instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b ipxeScript: |- #!ipxe kernel http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux initrd=initrd.gz initrd http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz boot || imgfree shell alwaysBootWithCustomIpxe: true phoneHomeEnabled: true userData: |- #cloud-config autoinstall: apt: geoip: true preserve_sources_list: false primary: - arches: [amd64, i386] uri: http://archive.ubuntu.com/ubuntu - arches: [default] uri: http://ports.ubuntu.com/ubuntu-ports phone_home: url: http://169.254.169.254:7777/latest/meta-data/phone_home post: all labels: region: portland env: staging interfaces: - subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a isPhysical: false - subnetId: 31074c90-3061-4d90-bc62-eaf479989b97 isPhysical: true infinibandInterfaces: - partitionId: 4f4decba-7d7f-46b9-9e5f-e5d71c2e0666 device: 'MT2910 Family [ConnectX-7]' deviceInstance: 0 isPhysical: true virtualFunctionId: null nvLinkInterfaces: - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 0 - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 1 - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 2 - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 3 sshKeyGroupIds: - a7bf2f9c-12f0-4673-be47-12be6d9e16c8 - name: spark-monitor-2 description: Node for monitoring Spark tenantId: f97df110-f4de-492e-8849-4a6af68026b0 instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 vpcId: ebcd2d2a-deca-4ac4-b079-d7a97fff8a6b operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b ipxeScript: |- #!ipxe kernel http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux initrd=initrd.gz initrd http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz boot || imgfree shell alwaysBootWithCustomIpxe: true phoneHomeEnabled: true userData: |- #cloud-config autoinstall: apt: geoip: true preserve_sources_list: false primary: - arches: [amd64, i386] uri: http://archive.ubuntu.com/ubuntu - arches: [default] uri: http://ports.ubuntu.com/ubuntu-ports phone_home: url: http://169.254.169.254:7777/latest/meta-data/phone_home post: all labels: region: portland env: staging interfaces: - vpcPrefixId: 000bc42b-f946-472e-83d4-ddf7e365e148 isPhysical: true - vpcPrefixId: 72bfbc86-34eb-4108-8509-2ffd7ca45e04 isPhysical: true sshKeyGroupIds: - a7bf2f9c-12f0-4673-be47-12be6d9e16c8 - name: llm-training-1 description: Node for LLM Training tenantId: f97df110-f4de-492e-8849-4a6af68026b0 vpcId: ebcd2d2a-deca-4ac4-b079-d7a97fff8a6b instanceTypeId: 83e71f8f-65d3-44ba-92ba-19daac2e497a operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b labels: region: portland env: staging interfaces: - vpcPrefixId: 000bc42b-f946-472e-83d4-ddf7e365e148 isPhysical: true dpuExtensionServiceDeployments: - dpuExtensionServiceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 version: V1-T1761856992374052 sshKeyGroupIds: - a7bf2f9c-12f0-4673-be47-12be6d9e16c8 - name: gitlab-runner-1 description: Node for GitLab Runner tenantId: f97df110-f4de-492e-8849-4a6af68026b0 machineId: fm100htq4o8j3bere298as19mdgnbu6hg6guiqp32tghj7gogv05hlr7lgg vpcId: ebcd2d2a-deca-4ac4-b079-d7a97fff8a6b operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b labels: region: portland env: staging interfaces: - vpcPrefixId: 000bc42b-f946-472e-83d4-ddf7e365e148 isPhysical: true sshKeyGroupIds: - a7bf2f9c-12f0-4673-be47-12be6d9e16c8 allowUnhealthyMachine: true description: Request data to create Instance properties: name: type: string minLength: 2 maxLength: 256 description: Name of the Instance description: type: - string - 'null' description: 'Description of the Instance, optional' maxLength: 1024 tenantId: type: string format: uuid description: ID of the Tenant creating the Instance instanceTypeId: type: - string - 'null' format: uuid description: ID of the Instance Type to use for Instance machineId: type: - string - 'null' description: ID of of specific Machine to use for Instance. Requires Targeted Instance Creation capability enabled for Tenant vpcId: type: string format: uuid description: ID of the VPC the Instance should belong to secondaryVpcIds: type: array uniqueItems: true description: IDs of additional VPCs the Instance should attach to through non-primary interfaces. This field may only be specified when every entry in `interfaces` uses `vpcPrefixId`. IDs must be unique, must be valid UUIDs, and must not include the primary `vpcId`. items: type: string format: uuid userData: type: - string - 'null' description: Can only be specified if allowOverride is set to true in Operating System operatingSystemId: type: - string - 'null' format: uuid description: Must be specified if iPXE Script field is empty networkSecurityGroupId: type: - string - 'null' ipxeScript: type: - string - 'null' description: 'Override iPXE script specified in OS, must be specified if Operating System is not specified' alwaysBootWithCustomIpxe: type: boolean description: 'When set to true, the iPXE script specified by OS or overridden here will always be run when rebooting the Instance. OS must be of iPXE type.' phoneHomeEnabled: type: boolean description: 'When set to true, the Instance will be enabled with the Phone Home service.' labels: $ref: '#/components/schemas/Labels' interfaces: type: array description: 'At least one interface must be specified. Either Subnet or VPC Prefix interfaces allowed. Only one of the Subnets or VPC Prefixes can be attached over Physical interface. If only one Subnet is specified, then it will be attached over physical interface regardless of the value of isPhysical. In case of VPC Prefix, isPhysical will always be true' items: $ref: '#/components/schemas/InterfaceCreateRequest' infinibandInterfaces: type: array description: Associate one or more Partitions with this Instance items: $ref: '#/components/schemas/InfiniBandInterfaceCreateRequest' dpuExtensionServiceDeployments: type: array description: DPU Extension Services to deploy to the DPUs of this Instance items: $ref: '#/components/schemas/DpuExtensionServiceDeploymentRequest' nvLinkInterfaces: type: array description: Define Interfaces to associate Instance GPUs with NVLink Logical Partitions. A subset of GPUs may be specified (it is not required to include all GPUs). Each item references one GPU index (`deviceInstance`) and one NVLink Logical Partition. Different interfaces may reference different NVLink Logical Partitions. items: $ref: '#/components/schemas/NVLinkInterfaceCreateOrUpdateRequest' sshKeyGroupIds: type: array description: Specify list of SSH Key Group IDs that will provide Serial over LAN access items: type: string format: uuid allowUnhealthyMachine: type: boolean description: Set to true in order to target Machines are in maintenance or have health alerts preventing regular provision flow. Requires Targeted Instance Creation capability enabled for Tenant required: - name - tenantId - vpcId - interfaces BatchInstanceCreateRequest: title: BatchInstanceCreateRequest type: object description: Request data to batch create multiple Instances with topology-optimized machine allocation. Explicit interface `ipAddress` values are not supported in batch requests. examples: - namePrefix: gpu-worker count: 4 description: GPU worker nodes for distributed training tenantId: f97df110-f4de-492e-8849-4a6af68026b0 instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 vpcId: 5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3 operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b topologyOptimized: true labels: workload: training env: production interfaces: - subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a isPhysical: true infinibandInterfaces: - partitionId: 4f4decba-7d7f-46b9-9e5f-e5d71c2e0666 device: 'MT2910 Family [ConnectX-7]' deviceInstance: 0 isPhysical: true nvLinkInterfaces: - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 0 - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 1 sshKeyGroupIds: - a7bf2f9c-12f0-4673-be47-12be6d9e16c8 - namePrefix: inference-node count: 8 description: Inference nodes spread across racks tenantId: f97df110-f4de-492e-8849-4a6af68026b0 instanceTypeId: 83e71f8f-65d3-44ba-92ba-19daac2e497a vpcId: ebcd2d2a-deca-4ac4-b079-d7a97fff8a6b operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b topologyOptimized: false interfaces: - vpcPrefixId: 000bc42b-f946-472e-83d4-ddf7e365e148 isPhysical: true dpuExtensionServiceDeployments: - dpuExtensionServiceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 version: V1-T1761856992374052 sshKeyGroupIds: - a7bf2f9c-12f0-4673-be47-12be6d9e16c8 properties: namePrefix: type: string minLength: 2 maxLength: 240 description: Prefix for instance names. Instances will be named with this prefix followed by a random 6-character suffix (e.g., "worker" becomes "worker-abc123") count: type: integer minimum: 2 maximum: 18 description: Number of instances to create in this batch. Minimum 2, maximum 18 (limited by topology domain size) description: type: - string - 'null' description: 'Description applied to all instances in the batch, optional' maxLength: 1024 tenantId: type: string format: uuid description: ID of the Tenant creating the Instances instanceTypeId: type: string format: uuid description: ID of the Instance Type to use for all Instances in the batch vpcId: type: string format: uuid description: ID of the VPC the Instances should belong to secondaryVpcIds: type: array uniqueItems: true description: IDs of additional VPCs the Instances should attach to through non-primary interfaces. This field may only be specified when every entry in `interfaces` uses `vpcPrefixId`. IDs must be unique, must be valid UUIDs, and must not include the primary `vpcId`. items: type: string format: uuid userData: type: - string - 'null' description: User data applied to all instances. Can only be specified if allowOverride is set to true in Operating System operatingSystemId: type: - string - 'null' format: uuid description: Must be specified if iPXE Script field is empty networkSecurityGroupId: type: - string - 'null' format: uuid description: ID of a Network Security Group to attach to all instances ipxeScript: type: - string - 'null' description: 'Override iPXE script specified in OS, must be specified if Operating System is not specified' alwaysBootWithCustomIpxe: type: boolean description: 'When set to true, the iPXE script specified by OS or overridden here will always be run when rebooting the Instances. OS must be of iPXE type.' phoneHomeEnabled: type: boolean description: 'When set to true, the Instances will be enabled with the Phone Home service.' labels: $ref: '#/components/schemas/Labels' interfaces: type: array description: 'Interface configuration shared across all instances. At least one interface must be specified. Either Subnet or VPC Prefix interfaces allowed, only one of the Subnets or VPC Prefixes can be attached over Physical interface. Interface `ipAddress` is not supported for batch instance creation requests.' items: $ref: '#/components/schemas/InterfaceCreateRequest' infinibandInterfaces: type: array description: InfiniBand interface configuration shared across all instances items: $ref: '#/components/schemas/InfiniBandInterfaceCreateRequest' dpuExtensionServiceDeployments: type: array description: DPU Extension Services to deploy to all instances in the batch items: $ref: '#/components/schemas/DpuExtensionServiceDeploymentRequest' nvLinkInterfaces: type: array description: NVLink interface configuration shared across all instances. A subset of GPUs may be specified. Each item references one GPU index (`deviceInstance`) and one NVLink Logical Partition. Different interfaces may reference different NVLink Logical Partitions. items: $ref: '#/components/schemas/NVLinkInterfaceCreateOrUpdateRequest' sshKeyGroupIds: type: array description: SSH Key Group IDs that will provide Serial over LAN access to all instances items: type: string format: uuid topologyOptimized: type: boolean default: true description: 'When true (default), all instances must be allocated on machines within the same NVLink domain. When false, instances can be spread across different NVLink domains.' required: - namePrefix - count - tenantId - instanceTypeId - vpcId - interfaces InstanceUpdateRequest: title: InstanceUpdateRequest type: object examples: - name: spark-monitor-1 description: Spark Monitor Node 1 alwaysBootWithCustomIpxe: true sshKeyGroupIds: - a7bf2f9c-12f0-4673-be47-12be6d9e16c8 operatingSystemId: eaeb86ee-c435-444e-9e01-8346f67f194b ipxeScript: |- #!ipxe kernel http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/linux initrd=initrd.gz initrd http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/ubuntu-installer/amd64/initrd.gz boot || imgfree shell userData: |- #cloud-config autoinstall: apt: geoip: true preserve_sources_list: false primary: - arches: [amd64, i386] uri: http://archive.ubuntu.com/ubuntu - arches: [default] uri: http://ports.ubuntu.com/ubuntu-ports phone_home: url: http://169.254.169.254:7777/latest/meta-data/phone_home post: all labels: region: portland env: staging interfaces: - subnetId: 1f492faa-2963-4f21-aab5-9f00b2e40119 isPhysical: true infinibandInterfaces: - partitionId: 550e8400-e29b-41d4-a716-446655440000 device: 'MT2910 Family [ConnectX-7]' deviceInstance: 0 isPhysical: true virtualFunctionId: null - partitionId: 6ba7b810-9dad-11d1-80b4-00c04fd430c8 device: 'MT2910 Family [ConnectX-7]' deviceInstance: 1 isPhysical: false virtualFunctionId: null - partitionId: 8b05d5c3-8de4-48c8-8d1c-399a8abc3ab8 device: 'MT2910 Family [ConnectX-7]' deviceInstance: 2 isPhysical: false virtualFunctionId: null dpuExtensionServiceDeployments: - dpuExtensionServiceId: 497f6eca-6276-4993-bfeb-53cbbbba6f08 version: V1-T1761856992374052 nvLinkInterfaces: - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 0 - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 1 - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 2 - nvLinkLogicalPartitionId: 2f8676fd-d228-4db5-ac76-1cfc74f48a23 deviceInstance: 3 - triggerReboot: true rebootWithCustomIpxe: true applyUpdatesOnReboot: true description: Request data to update Instance properties: name: type: - string - 'null' minLength: 2 maxLength: 256 description: Updated name for the Instance description: type: - string - 'null' description: Updated description of the Instance maxLength: 1024 triggerReboot: type: - boolean - 'null' description: Trigger power cycle for Instance rebootWithCustomIpxe: type: - boolean - 'null' description: 'When specified along with triggerReboot, the Instance will boot using the custom iPXE specified by OS. If Instance has alwaysBootWithCustomIpxe flag set then this value will be ignored.' applyUpdatesOnReboot: type: - boolean - 'null' description: 'When specified, any updates pending for the Instance e.g. DPU reprovisioning, will be applied on reboot' operatingSystemId: type: - string - 'null' description: The UUID of the desired operating system. ipxeScript: type: - string - 'null' description: The iPXE script content to be used for booting. sshKeyGroupIds: type: array description: Specify a new list of SSH Key Group IDs that will provide Serial over LAN and SSH access. This will overwrite an existing list. items: type: string format: uuid networkSecurityGroupId: type: - string - 'null' userData: type: - string - 'null' description: 'Any user-data to be sent to the booting OS. For example, cloud-init data.' alwaysBootWithCustomIpxe: type: - boolean - 'null' description: Whether the custom iPXE data should be used for every boot. phoneHomeEnabled: type: - boolean - 'null' description: Indicates whether the Phone Home service should be enabled or disabled for Instance labels: $ref: '#/components/schemas/Labels' description: 'Update labels of the Instance. The labels will be entirely replaced by those sent in the request. Any labels not included in the request will be removed. To retain existing labels, first fetch them and include them along with this request.' secondaryVpcIds: type: array uniqueItems: true description: IDs of additional VPCs the Instance should attach to through non-primary interfaces. This field may only be specified when every entry in `interfaces` uses `vpcPrefixId`. IDs must be unique, must be valid UUIDs, and must not include the primary `vpcId`. items: type: string format: uuid interfaces: type: array description: Update Interfaces of the Instance items: $ref: '#/components/schemas/InterfaceCreateRequest' infinibandInterfaces: type: array description: Update InfiniBand Interfaces of the Instance items: $ref: '#/components/schemas/InfiniBandInterfaceCreateRequest' nvLinkInterfaces: type: array description: Update NVLink Interfaces of the Instance. A subset of GPUs may be specified. Each item references a GPU index (`deviceInstance`) and an NVLink Logical Partition. Different interfaces may reference different NVLink Logical Partitions. Partial updates are not allowed, specified interfaces will delete or replace existing Interfaces. Updating is not allowed if Instance's VPC has `nvLinkLogicalPartitionId` attribute set. items: $ref: '#/components/schemas/NVLinkInterfaceCreateOrUpdateRequest' dpuExtensionServiceDeployments: type: array description: Updated set of DPU Extension Services to deploy to the DPUs of this Instance items: $ref: '#/components/schemas/DpuExtensionServiceDeploymentRequest' InstanceDeleteRequest: title: InstanceDeleteRequest type: object examples: - machineHealthIssue: category: Network summary: Machine has DPU connectivity error isRepairTenant: false description: Request data to delete Instance properties: machineHealthIssue: $ref: '#/components/schemas/MachineHealthIssue' description: Information regarding issue with the underlying Machine experienced by Tenant isRepairTenant: type: - boolean - 'null' description: Should be set to true for Tenants who are performing investigation/repairing the Machine. Otherwise omit or set to false MachineHealthIssue: title: MachineHealthIssue type: object examples: - category: Network summary: Machine has DPU connectivity error description: Data describing health issue with a Machine properties: category: type: string enum: - Hardware - Network - Performance - Other description: Category of the issue summary: type: - string - 'null' description: Short summary describing the issue details: type: - string - 'null' description: Details about the issue helpful for diagnosis Interface: title: Interface type: object examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 instanceId: 64d2028c-ae87-4069-a624-66089d957ef9 subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a isPhysical: true virtualFunctionId: null macAddress: 2F-FC-34-AE-9C-2A ipAddresses: - 200.32.11.190 status: Pending created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: 94c4c8c0-c3c4-4a52-9518-3e165b1de036 instanceId: 371ddf80-a7ff-4ff6-9a37-0557cec8b9be vpcPrefixId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a requestedIpAddress: 10.0.0.191 isPhysical: true device: MT42822 BlueField-2 integrated ConnectX-6 Dx network controller deviceInstance: 0 virtualFunctionId: null macAddress: 2F-FC-34-AE-9C-2B ipAddresses: - 200.32.11.191 status: Pending created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: 45d89d4f-2dde-4fc5-a20d-9f96faa4e9fa instanceId: 371ddf80-a7ff-4ff6-9a37-0557cec8b9be vpcPrefixId: d89d8cc6-d66e-4bf2-bf62-40238837cc90 requestedIpAddress: 10.0.0.193 isPhysical: false device: MT42822 BlueField-2 integrated ConnectX-6 Dx network controller deviceInstance: 0 virtualFunctionId: 1 macAddress: 2F-FC-34-AM-9C-2C ipAddresses: - 200.32.11.193 status: Pending created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - id: 236ee9d1-5f61-4aaa-abf3-0f72693e1189 instanceId: 371ddf80-a7ff-4ff6-9a37-0557cec8b9be vpcPrefixId: d5dd56e2-1b0b-4913-927e-b5896d7aca7b requestedIpAddress: 10.0.0.195 isPhysical: true device: MT42822 BlueField-2 integrated ConnectX-6 Dx network controller deviceInstance: 1 virtualFunctionId: null macAddress: 2F-FC-34-AM-9C-2C ipAddresses: - 200.32.11.194 status: Pending created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' description: Associates an Instance with a Subnet properties: id: type: string minLength: 1 format: uuid instanceId: type: string format: uuid subnetId: type: - string - 'null' format: uuid vpcPrefixId: type: - string - 'null' format: uuid isPhysical: type: boolean device: type: - string - 'null' description: Name of the device to use deviceInstance: type: - integer - 'null' description: 'Index of the device, used to identify which interface card to attache the Partition to' virtualFunctionId: type: - integer - 'null' description: Must be specified if isPhysical is false macAddress: type: - string - 'null' ipAddresses: type: array description: A list of IPv4 or IPv6 addresses items: type: string requestedIpAddress: type: - string - 'null' description: Explicitly requested IP address for the interface. This is only used for VPC Prefix based interfaces and is not valid for Subnet based interfaces. The least-significant host bit must be 1. status: $ref: '#/components/schemas/InterfaceStatus' created: type: string format: date-time readOnly: true updated: type: string format: date-time readOnly: true InterfaceStatus: title: InterfaceStatus type: string description: Status values for Interface objects enum: - Pending - Provisioning - Ready - Deleting - Error InterfaceCreateRequest: title: InterfaceCreateRequest type: object examples: - subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a isPhysical: true - vpcPrefixId: 000bc42b-f946-472e-83d4-ddf7e365e148 ipAddress: 10.0.0.11 isPhysical: true description: |- Request data to create an Interface for an Instance by associating it with a Subnet or VPC Prefix. If VPC specified in request has FNN virtualization type, then all interfaces must specify VPC Prefix. If the VPC has Ethernet network virtualization type then all interfaces must specify Subnet. properties: subnetId: type: string format: uuid vpcPrefixId: type: string format: uuid ipAddress: type: - string - 'null' description: Explicitly requested IP address for the interface. It cannot be specified for Subnet based interfaces. The least-significant host bit must be 1. isPhysical: type: boolean description: Specifies whether this Subnet or VPC Prefix should be attached to the Instance over physical interface. device: type: string description: Name of the device to use deviceInstance: type: integer description: 'Index of the device, used to identify which interface card to attache the Partition to' virtualFunctionId: type: - integer - 'null' description: 'Index of the virtual function to use, must be specified if isPhysical is false' minimum: 1 maximum: 16 InfiniBandInterface: title: InfiniBandInterface type: object examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 instanceId: 64d2028c-ae87-4069-a624-66089d957ef9 partitionId: 05ef7e84-1d4e-4e4d-980d-38589479a0fe device: 'MT2910 Family [ConnectX-7]' deviceInstance: 0 isPhysical: true virtualFunctionId: null guid: 946dae0300339498 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' description: Defines an interface created by associating an Instance with an InfiniBand Partition properties: id: type: string minLength: 1 format: uuid instanceId: type: string format: uuid partitionId: type: string format: uuid description: ID of the InfiniBand Partition associated with this interface device: type: string description: Name of the InfiniBand device associated with this interface deviceInstance: type: integer isPhysical: type: boolean description: Indicates whether this is a physical interface virtualFunctionId: type: - integer - 'null' guid: type: - string - 'null' status: $ref: '#/components/schemas/InfiniBandInterfaceStatus' created: type: string format: date-time readOnly: true updated: type: string format: date-time readOnly: true InfiniBandInterfaceStatus: title: InfiniBandInterfaceStatus type: string description: Status values for InfiniBand Interface objects enum: - Pending - Provisioning - Ready - Deleting - Error InfiniBandInterfaceCreateRequest: title: InfiniBandInterfaceCreateRequest type: object examples: - partitionId: 4f4decba-7d7f-46b9-9e5f-e5d71c2e0666 device: 'MT2910 Family [ConnectX-7]' deviceInstance: 0 isPhysical: true virtualFunctionId: null - partitionId: 4f4decba-7d7f-46b9-9e5f-e5d71c2e0666 device: 'MT2910 Family [ConnectX-7]' deviceInstance: 3 isPhysical: false virtualFunctionId: 2 description: Request data to create an InfiniBand Interface for an Instance by associating it with an InfiniBand Partition properties: partitionId: type: string format: uuid description: ID of the Partition the Interface should attach to device: type: string description: Name of the InfiniBand device to use vendor: type: - string - 'null' description: 'Name of the InfiniBand device vendor, optional' deviceInstance: type: integer description: 'Index of the device, used to identify which interface card to attache the Partition to' isPhysical: type: boolean description: Specifies whether this Partition should be attached to the Instance over physical interface virtualFunctionId: type: - integer - 'null' description: Must be specified if isPhysical is false NVLinkInterface: title: NVLinkInterface type: object examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 instanceId: 64d2028c-ae87-4069-a624-66089d957ef9 nvLinklogicalPartitionId: 05ef7e84-1d4e-4e4d-980d-38589479a0fe nvLinkDomainId: 59202b81-65fb-45ec-b3b8-91ab0ad3f34a deviceInstance: 0 gpuGuid: 4fe82bc6-1e30-4dfd-8839-996596209883 status: Ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' description: Defines an interface created by associating a GPU of an Instance with an NVLink Logical Partition properties: id: type: string minLength: 1 format: uuid instanceId: type: string format: uuid nvLinkLogicalPartitionId: type: string format: uuid description: ID of the NVLink Logical Partition associated with this interface nvLinkDomainId: type: - string - 'null' format: uuid description: ID of the NVLink Domain associated with this Interface deviceInstance: type: integer description: 'Index of the device, used to identify the GPU associated with this Interface' gpuGuid: type: - string - 'null' description: Unique ID of the GPU status: $ref: '#/components/schemas/NVLinkInterfaceStatus' created: type: string format: date-time readOnly: true updated: type: string format: date-time readOnly: true NVLinkInterfaceStatus: title: NVLinkInterfaceStatus type: string description: Status values for NVLink Interface objects enum: - Pending - Provisioning - Ready - Deleting - Error NVLinkInterfaceCreateOrUpdateRequest: title: NVLinkInterfaceCreateOrUpdateRequest type: object examples: - nvLinklogicalPartitionId: 505e07bc-86bf-489a-807d-92dc8b80e6ff deviceInstance: 0 - nvLinklogicalPartitionId: 4f4decba-7d7f-46b9-9e5f-e5d71c2e0666 deviceInstance: 1 description: Request data to create an NVLink Interface for an Instance by associating a specific GPU index with an NVLink Logical Partition. properties: nvLinklogicalPartitionId: type: string format: uuid description: ID of the NVLink Logical Partition the Interface should attach to deviceInstance: type: integer minimum: 0 description: GPU index for this NVLink interface. Must be non-negative, unique within the request, and within the GPU count exposed by the selected Machine or Instance Type. MachineCapability: title: MachineCapability type: object description: Describes capabilities of a Machine examples: - type: CPU name: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz frequency: 3.0GHz cores: 18 threads: 36 count: 2 - type: Memory name: DDR4 capacity: 131072GB count: 4 - type: Network name: MT43244 BlueField-3 integrated ConnectX-7 network controller vendor: Mellanox Technologies deviceType: DPU count: 2 - type: Storage name: Dell Ent NVMe CM6 RI 1.92TB capacity: 1.92TB count: 2 - type: GPU name: NVIDIA A100 PCIe capacity: 80GB count: 2 - type: InfiniBand name: 'MT28908 Family [ConnectX-6]' vendor: Mellanox Technologies count: 2 - type: DPU name: DPU count: 2 properties: type: type: string enum: - CPU - Memory - Storage - Network - GPU - InfiniBand - DPU description: Type of the Capability name: type: - string description: Name of the Capability component frequency: type: - string - 'null' description: 'Frequency of the Capability component, if available' cores: type: - integer - 'null' description: 'Number of Cores in the Capability component, if applicable' threads: type: - integer - 'null' description: 'Number of Threads in the Capability component, if applicable' capacity: type: - string - 'null' description: 'Capacity of the Capability component, if applicable' vendor: type: - string - 'null' description: 'Vendor of the Capability component, if available' inactiveDevices: type: array description: A list of inactive devices items: type: integer count: type: - integer - 'null' description: Count of the Capability component deviceType: type: - string - 'null' description: 'Device Type of the Capability component, if available' Rack: title: Rack type: object description: Rack represents a physical rack in the datacenter examples: - id: 550e8400-e29b-41d4-a716-446655440000 name: Rack-01 manufacturer: Dell model: PowerEdge R750 serialNumber: SN-RACK-001 description: Primary compute rack location: region: us-east-1 datacenter: DC-01 room: Room-A position: A1 components: - id: 660e8400-e29b-41d4-a716-446655440001 componentId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g type: ComponentTypeCompute name: Server-01 serialNumber: SN-SRV-001 manufacturer: Dell firmwareVersion: 2.1.0 slotId: 1 trayIdx: 0 hostId: 0 bmcs: - type: BmcTypeHost macAddress: 'AA:BB:CC:DD:EE:01' ipAddress: 10.0.0.101 powerState: 'on' properties: id: type: string format: uuid description: Unique identifier of the Rack name: type: string description: Name of the Rack manufacturer: type: string description: Manufacturer of the Rack model: type: string description: Model of the Rack serialNumber: type: string description: Serial number of the Rack description: type: string description: Description of the Rack location: $ref: '#/components/schemas/RackLocation' components: type: array description: Components within the Rack. Only returned when includeComponents is true. items: $ref: '#/components/schemas/RackComponent' RackLocation: title: RackLocation type: object description: Physical location of a Rack properties: region: type: string description: Region where the rack is located datacenter: type: string description: Datacenter where the rack is located room: type: string description: Room within the datacenter position: type: string description: Position of the rack within the room RackValidationResult: title: RackValidationResult type: object description: Result of validating a rack's components by comparing expected vs actual state properties: diffs: type: array description: List of component differences found during validation items: $ref: '#/components/schemas/ComponentDiff' totalDiffs: type: integer description: Total number of component differences found missingCount: type: integer description: Number of components expected but missing from the source system unexpectedCount: type: integer description: Number of components found in the source system but not expected driftCount: type: integer description: Number of components present in both but with field differences matchCount: type: integer description: Number of components that match between expected and actual ComponentDiff: title: ComponentDiff type: object description: A single component difference found during rack validation properties: type: type: string description: 'Type of difference: Unknown, Missing, Unexpected, or Drift' enum: - Unknown - Missing - Unexpected - Drift id: type: string format: uuid description: Flow internal component UUID componentId: type: string description: Component ID assigned by the component manager service expected: $ref: '#/components/schemas/RackComponent' actual: $ref: '#/components/schemas/RackComponent' fieldDiffs: type: array description: List of field differences (populated when type is DiffTypeDrift) items: $ref: '#/components/schemas/FieldDiff' FieldDiff: title: FieldDiff type: object description: A single field difference between expected and actual component state properties: fieldName: type: string description: 'Name of the field that differs (e.g. firmware_version, position.slot_id)' expectedValue: type: string description: Expected value of the field actualValue: type: string description: Actual value of the field RackComponent: title: RackComponent type: object description: A component within a Rack (e.g. compute node, switch, PDU) properties: id: type: string format: uuid description: Unique identifier of the component componentId: type: string description: ID of the component rackId: type: string format: uuid description: ID of the rack this component belongs to type: type: string description: Type of the component (e.g. ComponentTypeCompute, ComponentTypeNvlswitch) name: type: string description: Name of the component serialNumber: type: string description: Serial number of the component manufacturer: type: string description: Manufacturer of the component model: type: string description: Model of the component description: type: string description: Description of the component (JSON string) firmwareVersion: type: string description: Firmware version of the component slotId: type: integer description: Slot ID of the component within the rack trayIdx: type: integer description: Tray index of the component hostId: type: integer description: Host ID of the component bmcs: type: array description: BMC (Baseboard Management Controller) entries for the component items: $ref: '#/components/schemas/BMCInfo' powerState: type: string description: Current power state of the component BMCInfo: title: BMCInfo type: object description: BMC (Baseboard Management Controller) information properties: type: type: string description: BMC type (e.g. BmcTypeHost, BmcTypeDpu) macAddress: type: string description: MAC address of the BMC ipAddress: type: string description: IP address of the BMC Tray: title: Tray type: object description: 'Tray represents a component within a rack (e.g. compute node, NVL switch, power shelf)' examples: - id: 660e8400-e29b-41d4-a716-446655440001 componentId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g type: compute name: compute-tray-1 manufacturer: NVIDIA model: GB200 serialNumber: TSN001 description: Compute tray in slot 1 firmwareVersion: 2.1.0 powerState: 'on' position: slotId: 1 trayIdx: 0 hostId: 1 bmcs: - type: BmcTypeHost macAddress: '00:11:22:33:44:55' ipAddress: 192.168.1.100 rackId: 550e8400-e29b-41d4-a716-446655440000 properties: id: type: string format: uuid description: Unique identifier of the Tray componentId: type: string description: ID of the component type: type: string enum: - compute - switch - powershelf description: Type of the tray name: type: string description: Name of the tray manufacturer: type: string description: Manufacturer of the tray model: type: string description: Model of the tray serialNumber: type: string description: Serial number of the tray description: type: string description: Description of the tray firmwareVersion: type: string description: Firmware version of the tray powerState: type: string description: Current power state of the tray position: $ref: '#/components/schemas/TrayPosition' bmcs: type: array description: BMC (Baseboard Management Controller) entries for the tray items: $ref: '#/components/schemas/BMCInfo' rackId: type: string format: uuid description: ID of the rack this tray belongs to TrayPosition: title: TrayPosition type: object description: Position of a tray within a rack properties: slotId: type: integer description: Slot number of the tray in the rack trayIdx: type: integer description: Index of the tray within its slot hostId: type: integer description: Host ID associated with the tray RackFilter: title: RackFilter type: object description: Filter criteria for selecting racks in batch operations. If omitted or empty, all racks in the site are targeted. properties: names: type: array items: type: string description: Filter racks by name TrayFilter: title: TrayFilter type: object description: |- Filter criteria for selecting trays in batch operations. If omitted or empty, all trays in the site are targeted. Constraints: `rackId` and `rackName` are mutually exclusive. `rackId`/`rackName` cannot be combined with `ids`/`componentIds`. `componentIds` requires `type`. properties: rackId: type: string format: uuid description: Filter by Rack ID rackName: type: string description: Filter by Rack name type: type: string enum: - compute - switch - powershelf description: Filter by tray type componentIds: type: array items: type: string description: Filter by component ID. Requires 'type'. ids: type: array items: type: string format: uuid description: Filter by tray UUID BatchUpdateRackPowerStateRequest: title: BatchUpdateRackPowerStateRequest type: object description: Request body for batch rack power control operations required: - siteId - state properties: siteId: type: string format: uuid description: ID of the Site filter: $ref: '#/components/schemas/RackFilter' state: type: string enum: - 'on' - 'off' - cycle - forceoff - forcecycle description: Target power state BatchUpdateTrayPowerStateRequest: title: BatchUpdateTrayPowerStateRequest type: object description: Request body for batch tray power control operations required: - siteId - state properties: siteId: type: string format: uuid description: ID of the Site filter: $ref: '#/components/schemas/TrayFilter' state: type: string enum: - 'on' - 'off' - cycle - forceoff - forcecycle description: Target power state BatchRackFirmwareUpdateRequest: title: BatchRackFirmwareUpdateRequest type: object description: Request body for batch rack firmware update operations required: - siteId properties: siteId: type: string format: uuid description: ID of the Site filter: $ref: '#/components/schemas/RackFilter' version: type: - string - 'null' description: Target firmware version. BringUpRackRequest: title: BringUpRackRequest type: object description: Request body for single-rack bring up operations required: - siteId properties: siteId: type: string format: uuid description: ID of the Site description: type: string description: Optional description for the bring up operation examples: - siteId: 550e8400-e29b-41d4-a716-446655440000 - siteId: 550e8400-e29b-41d4-a716-446655440000 description: Initial bring up for production rack BatchBringUpRackRequest: title: BatchBringUpRackRequest type: object description: Request body for batch rack bring up operations required: - siteId properties: siteId: type: string format: uuid description: ID of the Site filter: $ref: '#/components/schemas/RackFilter' description: type: string description: Optional description for the bring up operation BringUpRackResponse: title: BringUpRackResponse type: object description: Response for bring up operations containing task IDs for tracking properties: taskIds: type: array items: type: string format: uuid description: List of task IDs created for the bring up operation (one per rack) examples: - taskIds: - 550e8400-e29b-41d4-a716-446655440000 RackTask: title: RackTask type: object description: A task representing an asynchronous operation on rack infrastructure. properties: id: type: string format: uuid description: Unique identifier of the task. status: type: string enum: - Unknown - Pending - Waiting - Running - Succeeded - Failed - Terminated description: Current state of the task. description: type: string description: Human-readable description provided when the task was created. message: type: string description: Optional status or error message describing the current state or result. started: type: string format: date-time description: Timestamp when the task started execution. finished: type: string format: date-time description: Timestamp when the task finished (succeeded, failed or terminated). created: type: string format: date-time description: Timestamp when the task was created. updated: type: string format: date-time description: Timestamp when the task was last updated. examples: - id: 550e8400-e29b-41d4-a716-446655440000 status: Running description: Power on rack components message: 'Processing 3 of 5 components' BatchTrayFirmwareUpdateRequest: title: BatchTrayFirmwareUpdateRequest type: object description: Request body for batch tray firmware update operations required: - siteId properties: siteId: type: string format: uuid description: ID of the Site filter: $ref: '#/components/schemas/TrayFilter' version: type: - string - 'null' description: Target firmware version. UpdatePowerStateRequest: title: UpdatePowerStateRequest type: object description: Request body for single-resource power control operations required: - siteId - state properties: siteId: type: string format: uuid description: ID of the Site state: type: string enum: - 'on' - 'off' - cycle - forceoff - forcecycle description: |- Power control state to apply: - `on`: Power on the target(s) - `off`: Graceful power off - `cycle`: Graceful power cycle (restart) - `forceoff`: Forced power off (immediate) - `forcecycle`: Forced power cycle (immediate restart) examples: - siteId: 550e8400-e29b-41d4-a716-446655440000 state: 'on' - siteId: 550e8400-e29b-41d4-a716-446655440000 state: 'off' - siteId: 550e8400-e29b-41d4-a716-446655440000 state: cycle UpdatePowerStateResponse: title: UpdatePowerStateResponse type: object description: Response for power control operations containing task IDs for tracking properties: taskIds: type: array items: type: string format: uuid description: List of task IDs created for the power control operation (one per rack) examples: - taskIds: - 550e8400-e29b-41d4-a716-446655440000 FirmwareUpdateRequest: title: FirmwareUpdateRequest type: object description: Request body for firmware update operations. required: - siteId properties: siteId: type: string format: uuid description: ID of the Site version: type: - string - 'null' description: Target firmware version. examples: - siteId: 550e8400-e29b-41d4-a716-446655440000 version: '24.11.0' - siteId: 550e8400-e29b-41d4-a716-446655440000 FirmwareUpdateResponse: title: FirmwareUpdateResponse type: object description: Response for firmware update operations containing task IDs for tracking properties: taskIds: type: array items: type: string format: uuid description: List of task IDs created for the firmware update operation examples: - taskIds: - 550e8400-e29b-41d4-a716-446655440000 Machine: title: Machine type: object description: Machine is the baremetal server that sits in the datacenter examples: - id: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 instanceTypeId: 2e016c02-2c67-48aa-b289-5d3ca6320c52 instanceId: 59bdaaff-3998-4fd9-a140-8749beeb605e tenantId: 99819e6e-4017-4021-9edd-ea1bdf4dbd59 controllerMachineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g controllerMachineType: x86_64 hwSkuDeviceType: cpu vendor: Lenovo productName: ThinkSystem SR670 V2 serialNumber: J1060ACR.D3KS2CS001G machineCapabilities: - type: CPU name: Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz frequency: 3.0GHz cores: 18 threads: 36 count: 2 - type: Memory name: Corsair Vengeance LPX capacity: 32GB count: 4 machineInterfaces: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g controllerInterfaceId: ad3dac49-741d-4c1f-815c-c020127c532f controllerSegmentId: f2207a3c-1847-42e5-bf2c-cd015f87a2bc subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a hostname: example.com isPrimary: true macAddress: '00:00:5e:00:53:af' ipAddresses: - 192.156.7.23 - 202.88.37.112 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' maintenanceMessage: null health: source: aggregate-host-health observedAt: null successes: - id: BgpDaemonEnabled target: null - id: BgpStats target: null - id: DhcpServer target: null - id: DpuDiskUtilizationCheck target: null - id: FanSpeed target: System Board Fan1A - id: PowerSupply target: PS1 Status - id: Temperature target: CPU1 Temp - id: Temperature target: System Board Exhaust Temp - id: Voltage target: CPU1 1P8 PG alerts: - id: FailedValidationTest target: DcgmFullShort inAlertSince: null message: |- Failed validation test: Name:DcgmFullShort Command:dcgmi Args:diag -r 2 tenantMessage: null classifications: - PreventAllocations labels: RackIdentifier: GVX11F01C02 ServerName: SITE1-C03-Server-02 status: Ready isUsableByTenant: true statusHistory: - status: Ready message: Machine is online and ready created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string description: Unique ID of Machine readOnly: true infrastructureProviderId: type: string format: uuid description: ID of the Provider that owns the Machine readOnly: true siteId: type: string format: uuid description: ID of the Site the Machine belongs to instanceTypeId: type: - string - 'null' format: uuid description: 'ID of the Instance Type, if assigned' instanceId: type: - string - 'null' format: uuid description: ID of the Instance if this Machine is assigned to one tenantId: type: - string - 'null' format: uuid description: ID of the Tenant that owns the Instance if the Machine is assigned to one controllerMachineId: type: string description: 'ID of the Machine at Site, now same as the primary ID' controllerMachineType: type: - string - 'null' description: Denotes architecture (x86 vs ARM) of the Machine hwSkuDeviceType: type: - string - 'null' description: 'SKU derived device type of the machine, e.g. cpu, gpu, cache, storage, etc.' vendor: type: - string - 'null' description: Name of the vendor of the Machine productName: type: - string - 'null' description: Product name of the Machine serialNumber: type: - string - 'null' description: 'Serial number of the Machine, only visible to Provider' machineCapabilities: type: array items: $ref: '#/components/schemas/MachineCapability' machineInterfaces: type: array items: $ref: '#/components/schemas/MachineInterface' maintenanceMessage: type: - string - 'null' description: 'If the Machine is in maintenance mode, this message will typically describe the reason and how long it is expected to be in maintenance' health: $ref: '#/components/schemas/MachineHealth' metadata: $ref: '#/components/schemas/MachineMetadata' description: Only available to Providers. Returned if includeMetadata query param is specified. Otherwise attribute is omitted from response. labels: $ref: '#/components/schemas/Labels' status: $ref: '#/components/schemas/MachineStatus' readOnly: true isUsableByTenant: type: boolean description: Indicates whether the machine is usable by or currently in use by a tenant. readOnly: true statusHistory: type: array items: $ref: '#/components/schemas/StatusDetail' created: type: string format: date-time readOnly: true updated: type: string format: date-time readOnly: true MachineStatus: title: MachineStatus type: string description: Status values for Machine objects enum: - Initializing - Ready - Reset - Maintenance - InUse - Error - Decommissioned - Unknown MachineSummary: title: MachineSummary type: object description: Describes a subset of core attributes for a Machine examples: - id: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g controllerMachineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g controllerMachineType: x86_64 hwSkuDeviceType: cpu vendor: Lenovo productName: ThinkSystem SR670 V2 maintenanceMessage: null status: Ready properties: id: type: string description: Unique ID of Machine readOnly: true controllerMachineId: type: string description: 'ID of the Machine at Site, now same as the primary ID' controllerMachineType: type: - string - 'null' description: Denotes architecture (x86 vs ARM) of the Machine hwSkuDeviceType: type: - string - 'null' description: 'SKU derived device type of the machine, e.g. cpu, gpu, cache, storage, etc.' vendor: type: - string - 'null' description: Name of the vendor of the Machine productName: type: - string - 'null' description: Product name of the Machine maintenanceMessage: type: - string - 'null' description: 'If the Machine is in maintenance mode, this message will typically describe the reason and how long it is expected to be in maintenance' status: $ref: '#/components/schemas/MachineStatus' readOnly: true MachineUpdateRequest: title: MachineUpdateRequest type: object examples: - instanceTypeId: 2e016c02-2c67-48aa-b289-5d3ca6320c52 - clearInstanceType: true - setMaintenanceMode: true maintenanceMessage: Machine requires re-cabling to connect with revised underlay network. Estimated maintenance time is 2 days - setMaintenanceMode: false - labels: RackIdentifier: GVX11F01C02 ServerName: SITE1-C03-Server-02 RepairStatus: InProgress description: 'Request data to update Machine. Instance Type attribute updates, maintenance attribute updates and labels updates must be specified in separate requests. They cannot be proceessed at the same time.' properties: instanceTypeId: type: - string - 'null' minLength: 2 maxLength: 256 format: uuid description: Update the Instance Type of the Machine. Cannot be specified when clearing Instance Type. Can only be updated by Provider. clearInstanceType: type: - boolean - 'null' description: Set to true to clear the existing Instance Type. Cannot be specified if Instance Type ID is specified. Can only be set by Provider. setMaintenanceMode: type: - boolean - 'null' description: Set to `true` to enable maintenance mode and to `false` to disable maintenance mode. Can be set by Provider or Privileged Tenant. maintenanceMessage: type: - string - 'null' description: Optional message describing the reason for moving Machine into maintenance mode. Can be updated by Provider or Privileged Tenant. minLength: 5 maxLength: 256 labels: description: 'Machine labels will be overwritten, include existing labels to preserve them. Can be updated by Provider or Privileged Tenant.' $ref: '#/components/schemas/Labels' MachineInterface: title: MachineInterface type: object description: Describes an interface attached to a machine examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g controllerInterfaceId: ad3dac49-741d-4c1f-815c-c020127c532f controllerSegmentId: f2207a3c-1847-42e5-bf2c-cd015f87a2bc attachedDpuMachineID: fm100dsg4ekcb4sdi6hkqn0iojhj18okrr8vct64luh8957lfe8e69vme20 subnetId: 1f232bf0-7b90-456e-b9b0-38d9fea4171a hostname: example.com isPrimary: true macAddress: '00:00:5e:00:53:af' ipAddresses: - 192.156.7.23 - 202.88.37.112 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid machineId: type: string controllerInterfaceId: type: - string - 'null' format: uuid controllerSegmentId: type: - string - 'null' format: uuid attachedDpuMachineID: type: - string - 'null' subnetId: type: - string - 'null' format: uuid hostname: type: - string - 'null' format: hostname isPrimary: type: boolean macAddress: type: - string - 'null' ipAddresses: type: array description: Array of IP addresses items: type: string created: type: string format: date-time readOnly: true updated: type: string format: date-time readOnly: true MachineMetadata: title: MachineMetadata type: object description: Describes metadata for various Machine components examples: - dmiData: boardName: 7Z23CTOLWB boardSerial: .C1KS2CS002G. boardVersion: '06' biosDate: 03/30/2023 biosVersion: U8E122J-1.51 productSerial: J1050ACR chassisSerial: J1050ACR bmcInfo: ip: 10.217.133.5 mac: 'C8:4B:D6:7A:C9:8A' version: '1' firmwareRevision: '6.00' gpus: - name: NVIDIA H100 PCIe serial: '1654422006434' driverVersion: 530.30.02 vbiosVersion: 96.00.30.00.01 inforomVersion: 1010.0200.00.02 totalMemory: 81559 MiB frequency: 1755 MHz pciBusId: '00000000:17:00.0' networkInterfaces: - macAddress: 'c8:4b:d6:7b:ac:a8' vendor: Broadcom Inc. and subsidiaries device: NetXtreme BCM5720 Gigabit Ethernet PCIe (PowerEdge Rx5xx LOM Board) path: '/devices/pci0000:00/0000:00:1c.5/0000:04:00.0/net/eno8303' numaNode: 0 description: NetXtreme BCM5720 Gigabit Ethernet PCIe (PowerEdge Rx5xx LOM Board) slot: '0000:04:00.0' infinibandInterfaces: - guid: 1070fd0300bd43ac vendor: Mellanox Technologies device: 'MT28908 Family [ConnectX-6]' path: '/devices/pci0000:c9/0000:c9:02.0/0000:ca:00.0/infiniband/ibp202s0f0' numaNode: 1 description: 'MT28908 Family [ConnectX-6]' slot: '0000:ca:00.0' properties: dmiData: $ref: '#/components/schemas/MachineDMIData' bmcInfo: $ref: '#/components/schemas/MachineBMCInfo' gpus: type: array items: $ref: '#/components/schemas/MachineGPUInfo' networkInterfaces: type: array items: $ref: '#/components/schemas/MachineNetworkInterface' infinibandInterfaces: type: array items: $ref: '#/components/schemas/MachineInfiniBandInterface' MachineBMCInfo: title: MachineBMCInfo type: object description: Describes BMC information of a Machine examples: - ip: 10.217.133.5 mac: 'C8:4B:D6:7A:C9:8A' version: '1' firmwareRevision: '6.00' properties: ip: type: - string - 'null' format: ipv4 mac: type: - string - 'null' version: type: - string - 'null' firmwareRevision: type: - string - 'null' MachineDMIData: title: MachineDMIData type: object description: Describes DMI data of a Machine examples: - boardName: 7Z23CTOLWB boardSerial: .C1KS2CS002G. boardVersion: '06' biosDate: 03/30/2023 biosVersion: U8E122J-1.51 productSerial: J1050ACR chassisSerial: J1050ACR properties: boardName: type: - string - 'null' boardSerial: type: - string - 'null' boardVersion: type: - string - 'null' biosDate: type: - string - 'null' biosVersion: type: - string - 'null' productSerial: type: - string - 'null' chassisSerial: type: - string - 'null' MachineGPUInfo: title: MachineGPUInfo type: object description: Describes information about GPU of a Machine examples: - name: NVIDIA H100 PCIe serial: '1654422006434' driverVersion: 530.30.02 vbiosVersion: 96.00.30.00.01 inforomVersion: 1010.0200.00.02 totalMemory: 81559 MiB frequency: 1755 MHz pciBusId: '00000000:17:00.0' properties: name: type: - string - 'null' serial: type: - string - 'null' driverVersion: type: - string - 'null' vbiosVersion: type: - string - 'null' inforomVersion: type: - string - 'null' totalMemory: type: - string - 'null' frequency: type: - string - 'null' pciBusId: type: - string - 'null' MachineHealth: title: MachineHealth type: object description: Describes results of various Machine health probes and alerts examples: - source: aggregate-host-health observedAt: null successes: - id: BgpDaemonEnabled target: null - id: BgpStats target: null - id: DhcpServer target: null - id: DpuDiskUtilizationCheck target: null - id: FanSpeed target: System Board Fan1A - id: PowerSupply target: PS1 Status - id: Temperature target: CPU1 Temp - id: Temperature target: System Board Exhaust Temp - id: Voltage target: CPU1 1P8 PG alerts: - id: FailedValidationTest target: DcgmFullShort inAlertSince: null message: |- Failed validation test: Name:DcgmFullShort Command:dcgmi Args:diag -r 2 tenantMessage: null classifications: - PreventAllocations properties: source: type: string description: Describes how the health report was generated observedAt: type: - string - 'null' description: Date/time when health report was generated successes: type: array items: $ref: '#/components/schemas/MachineHealthProbeSuccess' description: Results from successful health probes for the Machine alerts: type: array items: $ref: '#/components/schemas/MachineHealthProbeAlert' description: Results from failed health probes for the Machine MachineHealthProbeSuccess: title: MachineHealthProbeSuccess type: object description: Describes results of successful Machine health probe examples: - id: FanSpeed target: System Board Fan1A properties: id: type: string description: Health probe identifier target: type: - string - 'null' description: Specific component targeted by health probe MachineHealthProbeAlert: title: MachineHealthProbeAlert type: object description: Describes results of a failed Machine health probe examples: - id: FailedValidationTest target: DcgmFullShort inAlertSince: null message: |- Failed validation test: Name:DcgmFullShort Command:dcgmi Args:diag -r 2 tenantMessage: null classifications: - PreventAllocations properties: id: type: string description: Health probe identifier target: type: - string - 'null' description: Specific component targeted by health probe inAlertSince: type: - string - 'null' description: Date/time since the alert has been in effect message: type: string description: Details of the failed health probe result tenantMessage: type: - string - 'null' description: 'Information provided by Tenant, if any' classifications: type: array items: type: string description: 'Classifications for this alert, category or impact' MachineNetworkInterface: title: MachineNetworkInterface type: object description: Describes information about an Ethernet Interface of a Machine examples: - macAddress: 'c8:4b:d6:7b:ac:a8' vendor: Broadcom Inc. and subsidiaries device: NetXtreme BCM5720 Gigabit Ethernet PCIe (PowerEdge Rx5xx LOM Board) path: '/devices/pci0000:00/0000:00:1c.5/0000:04:00.0/net/eno8303' numaNode: 0 description: NetXtreme BCM5720 Gigabit Ethernet PCIe (PowerEdge Rx5xx LOM Board) slot: '0000:04:00.0' properties: macAddress: type: - string - 'null' vendor: type: - string - 'null' device: type: - string - 'null' path: type: - string - 'null' numaNode: type: integer description: type: - string - 'null' slot: type: - string - 'null' MachineInfiniBandInterface: title: MachineInfiniBandInterface description: Describes information about an Infiniband Interface of a Machine type: object examples: - guid: 1070fd0300bd43ac vendor: Mellanox Technologies device: 'MT28908 Family [ConnectX-6]' path: '/devices/pci0000:c9/0000:c9:02.0/0000:ca:00.0/infiniband/ibp202s0f0' numaNode: 1 description: 'MT28908 Family [ConnectX-6]' slot: '0000:ca:00.0' properties: guid: type: - string - 'null' vendor: type: - string - 'null' device: type: - string - 'null' path: type: - string - 'null' numaNode: type: integer description: type: - string - 'null' slot: type: - string - 'null' MachineInstanceType: title: MachineInstanceType type: object description: Associates a machine with an Instance Type examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g instanceTypeId: 41e36058-8403-4086-a9b8-39cb5bc9cb98 deprecations: - attribute: id replacedBy: machineId takeActionBy: '2026-07-09T00:00:00Z' notice: '''id'' is being deprecated in favor of ''machineId''. Please take action prior to the specified date.' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid readOnly: true description: 'Deprecated: Use `machineId` when identifying a Machine/Instance Type association. This field will be removed on July 9th, 2026 0:00 UTC.' deprecated: true machineId: type: string instanceTypeId: type: string format: uuid deprecations: type: array items: $ref: '#/components/schemas/Deprecation' created: type: string format: date-time readOnly: true updated: type: string format: date-time MachineInstanceTypeCreateRequest: title: MachineInstanceTypeCreateRequest type: object description: |- Associates one or more Machines with an Instance Type. The Machine's capabilities must be a superset of the Instance Type's required capabilities for the association to succeed. examples: - machineIds: - fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g - fm100htrh18t1lrjg2pqagkh3sfigr9m65dejvkq168ako07sc0uibpp5q0 - fm100ht68sf2m52idrpslcjkpdj5r3tb3j5o0bkfubhoglbq47u18nknfog properties: machineIds: type: array minItems: 1 items: type: string required: - machineIds ExpectedMachine: title: ExpectedMachine type: object description: |- An Expected Machine represents a physical machine that is expected to be discovered at a site, with hardware identifiers and metadata. Note: BMC credentials (username/password) are only accepted during creation and updates but are not returned in responses. examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 siteId: f97df110-f4de-492e-8849-4a6af68026b0 bmcMacAddress: '00:1A:2B:3C:4D:5E' bmcIpAddress: '192.168.1.100' chassisSerialNumber: CHASSIS-12345 fallbackDPUSerialNumbers: - DPU-001 - DPU-002 skuId: lenovo.sr650v2.cpu.1 machineId: fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g rackId: rack-01 manufacturer: Lenovo labels: environment: production rack: A1 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid description: Unique identifier for the Expected Machine readOnly: true siteId: type: string format: uuid description: ID of the site the Expected Machine belongs to readOnly: true bmcMacAddress: type: string pattern: '^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$' description: MAC address of the Expected Machine's BMC (Baseboard Management Controller) chassisSerialNumber: type: string description: Serial number of the Expected Machine's chassis fallbackDPUSerialNumbers: type: array description: Serial numbers of the Expected Machine's fallback DPUs (Data Processing Units) items: type: string skuId: type: - string - 'null' description: Optional ID of the SKU associated with this Expected Machine sku: $ref: '#/components/schemas/Sku' description: SKU information for this Expected Machine (populated when includeRelation=Sku is specified) machineId: type: - string - 'null' description: Optional ID of the Machine associated with this Expected Machine machine: $ref: '#/components/schemas/MachineSummary' description: Machine information for this Expected Machine (populated when includeRelation=Machine is specified) rackId: type: - string - 'null' description: Optional rack identifier for this component bmcIpAddress: type: - string - 'null' description: Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC. name: type: - string - 'null' description: Display name for this component manufacturer: type: - string - 'null' description: Manufacturer of this component model: type: - string - 'null' description: Model of this component description: type: - string - 'null' description: Description of this component firmwareVersion: type: - string - 'null' description: Firmware version of this component slotId: type: - integer - 'null' format: int32 description: Slot ID within the rack trayIdx: type: - integer - 'null' format: int32 description: Tray index within the rack hostId: type: - integer - 'null' format: int32 description: Host ID within the tray labels: $ref: '#/components/schemas/Labels' description: User-defined key-value pairs for organizing and categorizing Expected Machines created: type: string format: date-time description: ISO 8601 datetime when the Expected Machine was created readOnly: true updated: type: string format: date-time description: ISO 8601 datetime when the Expected Machine was last updated readOnly: true ExpectedMachineCreateRequest: title: ExpectedMachineCreateRequest type: object description: |- Request data to create a new ExpectedMachine. Note: BMC credentials (username/password) are only accepted during creation and updates but are not returned in responses. examples: - siteId: f97df110-f4de-492e-8849-4a6af68026b0 bmcMacAddress: '00:1A:2B:3C:4D:5E' bmcIpAddress: '192.168.1.100' defaultBmcUsername: admin defaultBmcPassword: password123 chassisSerialNumber: CHASSIS-12345 fallbackDPUSerialNumbers: - DPU-001 - DPU-002 skuId: lenovo.sr650v2.cpu.1 rackId: rack-01 manufacturer: Lenovo labels: environment: production rack: A1 properties: siteId: type: string format: uuid description: ID of the site the Expected Machine belongs to bmcMacAddress: type: string pattern: '^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$' description: MAC address of the Expected Machine's BMC (Baseboard Management Controller) defaultBmcUsername: type: - string - 'null' maxLength: 20 description: Username for accessing the Expected Machine's BMC defaultBmcPassword: type: - string - 'null' maxLength: 50 description: Password for accessing the Expected Machine's BMC chassisSerialNumber: type: string minLength: 1 maxLength: 100 description: Serial number of the Expected Machine's chassis fallbackDPUSerialNumbers: type: - array - 'null' description: Serial numbers of the Expected Machine's fallback DPUs (Data Processing Units) items: type: string skuId: type: - string - 'null' description: Optional ID of the SKU to associate with this Expected Machine rackId: type: - string - 'null' description: Optional rack identifier for this component bmcIpAddress: type: - string - 'null' description: Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC. name: type: - string - 'null' description: Display name for this component manufacturer: type: - string - 'null' description: Manufacturer of this component model: type: - string - 'null' description: Model of this component description: type: - string - 'null' description: Description of this component firmwareVersion: type: - string - 'null' description: Firmware version of this component slotId: type: - integer - 'null' format: int32 description: Slot ID within the rack trayIdx: type: - integer - 'null' format: int32 description: Tray index within the rack hostId: type: - integer - 'null' format: int32 description: Host ID within the tray labels: $ref: '#/components/schemas/Labels' description: User-defined key-value pairs for organizing and categorizing Expected Machines required: - siteId - bmcMacAddress - chassisSerialNumber ExpectedMachineUpdateRequest: title: ExpectedMachineUpdateRequest type: object description: |- Request data to update an existing Expected Machine. Note: BMC credentials (username/password) are only accepted during creation and updates but are not returned in responses. For single updates (PATCH /expected-machine/{id}), the id field is optional in body and will be ignored if provided (the ID from the URL path is used). For batch updates (PATCH /expected-machine/batch), the id field is required to identify which Expected Machine to update. examples: - defaultBmcUsername: newadmin defaultBmcPassword: newpassword123 chassisSerialNumber: CHASSIS-54321 skuId: sku-xyz789 rackId: rack-02 manufacturer: Lenovo labels: environment: staging rack: B2 properties: id: type: - string - 'null' format: uuid description: |- ID of the Expected Machine to update. Optional for individual Expected Machine update (ignored if provided, ID from URL path is used). Required for batch update operations. bmcMacAddress: type: - string - 'null' pattern: '^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$' description: MAC address of the Expected Machine's BMC (Baseboard Management Controller) defaultBmcUsername: type: - string - 'null' maxLength: 20 description: Username for accessing the Expected Machine's BMC defaultBmcPassword: type: - string - 'null' maxLength: 50 description: Password for accessing the Expected Machine's BMC chassisSerialNumber: type: - string - 'null' minLength: 1 maxLength: 100 description: Serial number of the Expected Machine's chassis fallbackDPUSerialNumbers: type: - array - 'null' description: Serial numbers of the Expected Machine's fallback DPUs (Data Processing Units) items: type: string skuId: type: - string - 'null' description: Optional ID of the SKU to associate with this Expected Machine rackId: type: - string - 'null' description: Optional rack identifier for this component bmcIpAddress: type: - string - 'null' description: Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC. name: type: - string - 'null' description: Display name for this component manufacturer: type: - string - 'null' description: Manufacturer of this component model: type: - string - 'null' description: Model of this component description: type: - string - 'null' description: Description of this component firmwareVersion: type: - string - 'null' description: Firmware version of this component slotId: type: - integer - 'null' format: int32 description: Slot ID within the rack trayIdx: type: - integer - 'null' format: int32 description: Tray index within the rack hostId: type: - integer - 'null' format: int32 description: Host ID within the tray labels: $ref: '#/components/schemas/Labels' description: User-defined key-value pairs for organizing and categorizing Expected Machines ExpectedPowerShelf: title: ExpectedPowerShelf type: object description: |- An Expected Power Shelf represents a power shelf that is expected to be discovered at a site, with hardware identifiers and metadata. Note: BMC credentials (username/password) are only accepted during creation and updates but are not returned in responses. examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 siteId: f97df110-f4de-492e-8849-4a6af68026b0 bmcMacAddress: '00:1A:2B:3C:4D:5E' shelfSerialNumber: SHELF-12345 bmcIpAddress: '192.168.1.100' rackId: rack-01 manufacturer: Delta labels: environment: production rack: A1 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid description: Unique identifier for the Expected Power Shelf readOnly: true siteId: type: string format: uuid description: ID of the site the Expected Power Shelf belongs to readOnly: true bmcMacAddress: type: string pattern: '^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$' description: MAC address of the Expected Power Shelf's BMC (Baseboard Management Controller) shelfSerialNumber: type: string description: Serial number of the Expected Power Shelf bmcIpAddress: type: - string - 'null' description: Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC. rackId: type: - string - 'null' description: Optional rack identifier for this component name: type: - string - 'null' description: Display name for this component manufacturer: type: - string - 'null' description: Manufacturer of this component model: type: - string - 'null' description: Model of this component description: type: - string - 'null' description: Description of this component firmwareVersion: type: - string - 'null' description: Firmware version of this component slotId: type: - integer - 'null' format: int32 description: Slot ID within the rack trayIdx: type: - integer - 'null' format: int32 description: Tray index within the rack hostId: type: - integer - 'null' format: int32 description: Host ID within the tray labels: $ref: '#/components/schemas/Labels' description: User-defined key-value pairs for organizing and categorizing Expected Power Shelves created: type: string format: date-time description: ISO 8601 datetime when the Expected Power Shelf was created readOnly: true updated: type: string format: date-time description: ISO 8601 datetime when the Expected Power Shelf was last updated readOnly: true ExpectedPowerShelfCreateRequest: title: ExpectedPowerShelfCreateRequest type: object description: |- Request data to create a new Expected Power Shelf. Note: BMC credentials (username/password) are only accepted during creation and updates but are not returned in responses. examples: - siteId: f97df110-f4de-492e-8849-4a6af68026b0 bmcMacAddress: '00:1A:2B:3C:4D:5E' defaultBmcUsername: admin defaultBmcPassword: password123 shelfSerialNumber: SHELF-12345 bmcIpAddress: '192.168.1.100' rackId: rack-01 manufacturer: Delta labels: environment: production rack: A1 properties: siteId: type: string format: uuid description: ID of the site the Expected Power Shelf belongs to bmcMacAddress: type: string pattern: '^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$' description: MAC address of the Expected Power Shelf's BMC (Baseboard Management Controller) defaultBmcUsername: type: - string - 'null' maxLength: 16 description: Username for accessing the Expected Power Shelf's BMC defaultBmcPassword: type: - string - 'null' maxLength: 20 description: Password for accessing the Expected Power Shelf's BMC shelfSerialNumber: type: string minLength: 1 maxLength: 32 description: Serial number of the Expected Power Shelf bmcIpAddress: type: - string - 'null' description: Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC. rackId: type: - string - 'null' description: Optional rack identifier for this component name: type: - string - 'null' description: Display name for this component manufacturer: type: - string - 'null' description: Manufacturer of this component model: type: - string - 'null' description: Model of this component description: type: - string - 'null' description: Description of this component firmwareVersion: type: - string - 'null' description: Firmware version of this component slotId: type: - integer - 'null' format: int32 description: Slot ID within the rack trayIdx: type: - integer - 'null' format: int32 description: Tray index within the rack hostId: type: - integer - 'null' format: int32 description: Host ID within the tray labels: $ref: '#/components/schemas/Labels' description: User-defined key-value pairs for organizing and categorizing Expected Power Shelves required: - siteId - bmcMacAddress - shelfSerialNumber ExpectedPowerShelfUpdateRequest: title: ExpectedPowerShelfUpdateRequest type: object description: |- Request data to update an existing Expected Power Shelf. Note: BMC credentials (username/password) are only accepted during creation and updates but are not returned in responses. examples: - defaultBmcUsername: newadmin defaultBmcPassword: newpassword123 shelfSerialNumber: SHELF-54321 bmcIpAddress: '192.168.1.200' rackId: rack-02 manufacturer: Delta labels: environment: staging rack: B2 properties: id: type: - string - 'null' format: uuid description: ID of the Expected Power Shelf to update (ignored for single update, used for identification in batch operations). bmcMacAddress: type: - string - 'null' pattern: '^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$' description: MAC address of the Expected Power Shelf's BMC (Baseboard Management Controller) defaultBmcUsername: type: - string - 'null' maxLength: 16 description: Username for accessing the Expected Power Shelf's BMC defaultBmcPassword: type: - string - 'null' maxLength: 20 description: Password for accessing the Expected Power Shelf's BMC shelfSerialNumber: type: - string - 'null' minLength: 1 maxLength: 32 description: Serial number of the Expected Power Shelf bmcIpAddress: type: - string - 'null' description: Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC. rackId: type: - string - 'null' description: Optional rack identifier for this component name: type: - string - 'null' description: Display name for this component manufacturer: type: - string - 'null' description: Manufacturer of this component model: type: - string - 'null' description: Model of this component description: type: - string - 'null' description: Description of this component firmwareVersion: type: - string - 'null' description: Firmware version of this component slotId: type: - integer - 'null' format: int32 description: Slot ID within the rack trayIdx: type: - integer - 'null' format: int32 description: Tray index within the rack hostId: type: - integer - 'null' format: int32 description: Host ID within the tray labels: $ref: '#/components/schemas/Labels' description: User-defined key-value pairs for organizing and categorizing Expected Power Shelves ExpectedRack: title: ExpectedRack type: object description: |- An Expected Rack represents a rack that is expected to be discovered at a Site. The `rackId` is an operator-supplied string identifier (not a UUID) that uniquely identifies the rack within the Site. Each Expected Rack references a Rack Profile that describes the rack's expected layout and capabilities. Chassis identity and physical location information are conveyed via well-known label keys in `labels`: - `chassis.manufacturer`, `chassis.serial-number`, `chassis.model` - `location.region`, `location.datacenter`, `location.room`, `location.position` examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 rackId: rack-01 siteId: f97df110-f4de-492e-8849-4a6af68026b0 rackProfileId: rp-standard-42u name: Rack 01 description: Production rack in row A labels: chassis.manufacturer: NVIDIA chassis.serial-number: NVRK0001001 chassis.model: GB200-NVL72 location.region: us-west-2 location.datacenter: phx-dc01 location.room: room-1 location.position: A1 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid description: Unique identifier (UUID) for the Expected Rack readOnly: true rackId: type: string description: Operator-supplied identifier for the rack (string, not UUID). Unique within a Site. readOnly: true siteId: type: string format: uuid description: ID of the Site the Expected Rack belongs to readOnly: true rackProfileId: type: string description: Identifier of the Rack Profile this rack conforms to name: type: string description: Human-readable name of the Expected Rack description: type: string description: Human-readable description of the Expected Rack labels: $ref: '#/components/schemas/Labels' description: |- User-defined key-value pairs for organizing and categorizing Expected Racks. Well-known keys (`chassis.*`, `location.*`) are used to convey chassis identity and physical location. created: type: string format: date-time description: ISO 8601 datetime when the Expected Rack was created readOnly: true updated: type: string format: date-time description: ISO 8601 datetime when the Expected Rack was last updated readOnly: true ExpectedRackCreateRequest: title: ExpectedRackCreateRequest type: object description: |- Request data to create a new Expected Rack. The `rackId` is an operator-supplied string identifier (not a UUID) that must be unique within the Site. Chassis identity and physical location information are conveyed via well-known label keys in `labels`: - `chassis.manufacturer`, `chassis.serial-number`, `chassis.model` - `location.region`, `location.datacenter`, `location.room`, `location.position` examples: - siteId: f97df110-f4de-492e-8849-4a6af68026b0 rackId: rack-01 rackProfileId: rp-standard-42u name: Rack 01 description: Production rack in row A labels: chassis.manufacturer: NVIDIA chassis.serial-number: NVRK0001001 chassis.model: GB200-NVL72 location.region: us-west-2 location.datacenter: phx-dc01 location.room: room-1 location.position: A1 properties: siteId: type: string format: uuid description: ID of the Site the Expected Rack belongs to rackId: type: string minLength: 1 description: Operator-supplied identifier for the rack (string, not UUID). Must be non-empty and unique within the Site. rackProfileId: type: string minLength: 1 description: Identifier of the Rack Profile this rack conforms to. Must be non-empty. name: type: - string - 'null' minLength: 1 description: Human-readable name of the Expected Rack description: type: - string - 'null' minLength: 1 description: Human-readable description of the Expected Rack labels: $ref: '#/components/schemas/Labels' description: |- User-defined key-value pairs for organizing and categorizing Expected Racks. Well-known keys (`chassis.*`, `location.*`) are used to convey chassis identity and physical location. required: - siteId - rackId - rackProfileId ExpectedRackList: title: ExpectedRackList type: object description: |- Replace-all request body for Expected Racks. The `expectedRacks` array contains the full desired set of Expected Racks for the Site identified by `siteId`. All entries must reference the same `siteId` as the top-level field, and `rackId` values must be unique within the request. The array may be empty to clear all Expected Racks for the Site. examples: - siteId: f97df110-f4de-492e-8849-4a6af68026b0 expectedRacks: - siteId: f97df110-f4de-492e-8849-4a6af68026b0 rackId: rack-01 rackProfileId: rp-standard-42u name: Rack 01 description: Production rack in row A labels: chassis.manufacturer: NVIDIA chassis.serial-number: NVRK0001001 chassis.model: GB200-NVL72 location.datacenter: phx-dc01 location.position: A1 - siteId: f97df110-f4de-492e-8849-4a6af68026b0 rackId: rack-02 rackProfileId: rp-standard-42u name: Rack 02 description: Production rack in row A labels: chassis.manufacturer: NVIDIA chassis.serial-number: NVRK0001002 chassis.model: GB200-NVL72 location.datacenter: phx-dc01 location.position: A2 properties: siteId: type: string format: uuid description: ID of the Site whose Expected Racks should be replaced expectedRacks: type: array description: |- The full desired set of Expected Racks for the Site. Every entry must reference the same `siteId` as the top-level field, and `rackId` values must be unique within the request. May be empty to clear all Expected Racks for the Site. items: $ref: '#/components/schemas/ExpectedRackCreateRequest' required: - siteId - expectedRacks ExpectedRackUpdateRequest: title: ExpectedRackUpdateRequest type: object description: |- Request data to update an existing Expected Rack. For single updates (PATCH /expected-rack/{id}), the `id` field is optional in the body and will be ignored if provided (the `id` from the URL path is used). Chassis identity and physical location information are conveyed via well-known label keys in `labels`: - `chassis.manufacturer`, `chassis.serial-number`, `chassis.model` - `location.region`, `location.datacenter`, `location.room`, `location.position` examples: - rackProfileId: rp-standard-48u name: Rack 01 (updated) description: Production rack in row A, upgraded chassis labels: chassis.manufacturer: NVIDIA chassis.serial-number: NVRK0001001 chassis.model: GB200-NVL72 location.datacenter: phx-dc01 location.position: A1 properties: id: type: - string - 'null' format: uuid description: |- Unique identifier (UUID) of the Expected Rack to update. Optional for single Expected Rack update (must be empty or match the id from the URL path). rackId: type: - string - 'null' minLength: 1 description: Optional new operator-supplied rack identifier. If provided, must be non-empty and unique within the Site. rackProfileId: type: - string - 'null' minLength: 1 description: Optional new Rack Profile identifier. If provided, must be non-empty. name: type: - string - 'null' minLength: 1 description: Human-readable name of the Expected Rack description: type: - string - 'null' minLength: 1 description: Human-readable description of the Expected Rack labels: $ref: '#/components/schemas/Labels' description: |- User-defined key-value pairs for organizing and categorizing Expected Racks. Well-known keys (`chassis.*`, `location.*`) are used to convey chassis identity and physical location. ExpectedSwitch: title: ExpectedSwitch type: object description: |- An Expected Switch represents a network switch that is expected to be discovered at a site, with hardware identifiers and metadata. Note: BMC and NvOS credentials (username/password) are only accepted during creation and updates but are not returned in responses. examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 siteId: f97df110-f4de-492e-8849-4a6af68026b0 bmcMacAddress: '00:1A:2B:3C:4D:5E' bmcIpAddress: '192.168.1.100' switchSerialNumber: SWITCH-12345 rackId: rack-01 manufacturer: NVIDIA labels: environment: production rack: A1 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid description: Unique identifier for the Expected Switch readOnly: true siteId: type: string format: uuid description: ID of the site the Expected Switch belongs to readOnly: true bmcMacAddress: type: string pattern: '^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$' description: MAC address of the Expected Switch's BMC (Baseboard Management Controller) switchSerialNumber: type: string description: Serial number of the Expected Switch rackId: type: - string - 'null' description: Optional rack identifier for this component bmcIpAddress: type: - string - 'null' description: Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC. name: type: - string - 'null' description: Display name for this component manufacturer: type: - string - 'null' description: Manufacturer of this component model: type: - string - 'null' description: Model of this component description: type: - string - 'null' description: Description of this component firmwareVersion: type: - string - 'null' description: Firmware version of this component slotId: type: - integer - 'null' format: int32 description: Slot ID within the rack trayIdx: type: - integer - 'null' format: int32 description: Tray index within the rack hostId: type: - integer - 'null' format: int32 description: Host ID within the tray labels: $ref: '#/components/schemas/Labels' description: User-defined key-value pairs for organizing and categorizing Expected Switches created: type: string format: date-time description: ISO 8601 datetime when the Expected Switch was created readOnly: true updated: type: string format: date-time description: ISO 8601 datetime when the Expected Switch was last updated readOnly: true ExpectedSwitchCreateRequest: title: ExpectedSwitchCreateRequest type: object description: |- Request data to create a new Expected Switch. Note: BMC and NvOS credentials (username/password) are only accepted during creation and updates but are not returned in responses. examples: - siteId: f97df110-f4de-492e-8849-4a6af68026b0 bmcMacAddress: '00:1A:2B:3C:4D:5E' bmcIpAddress: '192.168.1.100' defaultBmcUsername: admin defaultBmcPassword: password123 switchSerialNumber: SWITCH-12345 nvOsUsername: nvadmin nvOsPassword: nvpassword123 rackId: rack-01 manufacturer: NVIDIA labels: environment: production rack: A1 properties: siteId: type: string format: uuid description: ID of the site the Expected Switch belongs to bmcMacAddress: type: string pattern: '^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$' description: MAC address of the Expected Switch's BMC (Baseboard Management Controller) defaultBmcUsername: type: - string - 'null' maxLength: 16 description: Username for accessing the Expected Switch's BMC defaultBmcPassword: type: - string - 'null' maxLength: 20 description: Password for accessing the Expected Switch's BMC switchSerialNumber: type: string minLength: 1 maxLength: 32 description: Serial number of the Expected Switch nvOsUsername: type: - string - 'null' description: NvOS username for the Expected Switch nvOsPassword: type: - string - 'null' description: NvOS password for the Expected Switch rackId: type: - string - 'null' description: Optional rack identifier for this component bmcIpAddress: type: - string - 'null' description: Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC. name: type: - string - 'null' description: Display name for this component manufacturer: type: - string - 'null' description: Manufacturer of this component model: type: - string - 'null' description: Model of this component description: type: - string - 'null' description: Description of this component firmwareVersion: type: - string - 'null' description: Firmware version of this component slotId: type: - integer - 'null' format: int32 description: Slot ID within the rack trayIdx: type: - integer - 'null' format: int32 description: Tray index within the rack hostId: type: - integer - 'null' format: int32 description: Host ID within the tray labels: $ref: '#/components/schemas/Labels' description: User-defined key-value pairs for organizing and categorizing Expected Switches required: - siteId - bmcMacAddress - switchSerialNumber ExpectedSwitchUpdateRequest: title: ExpectedSwitchUpdateRequest type: object description: |- Request data to update an existing Expected Switch. Note: BMC and NvOS credentials (username/password) are only accepted during creation and updates but are not returned in responses. examples: - defaultBmcUsername: newadmin defaultBmcPassword: newpassword123 switchSerialNumber: SWITCH-54321 nvOsUsername: newnvadmin nvOsPassword: newnvpassword123 rackId: rack-02 manufacturer: NVIDIA labels: environment: staging rack: B2 properties: id: type: - string - 'null' format: uuid description: ID of the Expected Switch to update (ignored for single update, used for identification in batch operations). bmcMacAddress: type: - string - 'null' pattern: '^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$' description: MAC address of the Expected Switch's BMC (Baseboard Management Controller) defaultBmcUsername: type: - string - 'null' maxLength: 16 description: Username for accessing the Expected Switch's BMC defaultBmcPassword: type: - string - 'null' maxLength: 20 description: Password for accessing the Expected Switch's BMC switchSerialNumber: type: - string - 'null' minLength: 1 maxLength: 32 description: Serial number of the Expected Switch nvOsUsername: type: - string - 'null' description: NvOS username for the Expected Switch nvOsPassword: type: - string - 'null' description: NvOS password for the Expected Switch rackId: type: - string - 'null' description: Optional rack identifier for this component bmcIpAddress: type: - string - 'null' description: Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC. name: type: - string - 'null' description: Display name for this component manufacturer: type: - string - 'null' description: Manufacturer of this component model: type: - string - 'null' description: Model of this component description: type: - string - 'null' description: Description of this component firmwareVersion: type: - string - 'null' description: Firmware version of this component slotId: type: - integer - 'null' format: int32 description: Slot ID within the rack trayIdx: type: - integer - 'null' format: int32 description: Tray index within the rack hostId: type: - integer - 'null' format: int32 description: Host ID within the tray labels: $ref: '#/components/schemas/Labels' description: User-defined key-value pairs for organizing and categorizing Expected Switches Sku: title: Sku type: object description: |- A SKU (Stock Keeping Unit) represents a unique hardware configuration discovered at a site. SKUs are automatically derived from machine hardware characteristics and used to group similar machines. examples: - id: lenovo.sr650v2.cpu.1 siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 deviceType: gpu associatedMachineIds: - fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g components: cpus: - vendor: Intel model: Xeon Platinum 8480+ threadCount: 112 count: 2 gpus: - vendor: NVIDIA model: H100 SXM5 totalMemory: 80GB HBM3 count: 8 memory: - capacityMb: 65536 memoryType: DDR5 count: 16 storage: - vendor: Samsung model: PM9A3 capacityMb: 7680000 count: 4 chassis: vendor: Supermicro model: SYS-420GP-TNR created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string description: Unique identifier for the SKU readOnly: true siteId: type: string format: uuid description: ID of the Site this SKU belongs to readOnly: true deviceType: type: - string - 'null' description: 'Optional device type identifier (e.g. "gpu", "cpu", "storage")' readOnly: true associatedMachineIds: type: array description: List of machine IDs associated with this SKU items: type: string readOnly: true components: $ref: '#/components/schemas/SkuComponents' description: Hardware components of this SKU created: type: string format: date-time description: ISO 8601 datetime when the SKU was created readOnly: true updated: type: string format: date-time description: ISO 8601 datetime when the SKU was last updated readOnly: true SkuComponents: title: SkuComponents type: object description: Hardware components that make up a SKU properties: cpus: type: array description: CPU components items: $ref: '#/components/schemas/SkuCpu' gpus: type: array description: GPU components items: $ref: '#/components/schemas/SkuGpu' memory: type: array description: Memory components items: $ref: '#/components/schemas/SkuMemory' storage: type: array description: Storage components items: $ref: '#/components/schemas/SkuStorage' chassis: $ref: '#/components/schemas/SkuChassis' description: Chassis component ethernetDevices: type: array description: Ethernet device components items: $ref: '#/components/schemas/SkuEthernetDevice' infinibandDevices: type: array description: Infiniband device components items: $ref: '#/components/schemas/SkuInfinibandDevice' tpm: type: array description: TPM components items: $ref: '#/components/schemas/SkuTpm' SkuCpu: title: SkuCpu type: object description: CPU component in a SKU properties: vendor: type: string description: Vendor of the CPU model: type: string description: Model of the CPU threadCount: type: integer format: uint32 description: Number of threads for the CPU count: type: integer format: uint32 description: Number of CPUs present SkuGpu: title: SkuGpu type: object description: GPU component in a SKU properties: vendor: type: string description: Vendor of the GPU model: type: string description: Model of the GPU totalMemory: type: string description: Total memory of the GPU (e.g. "80GB HBM3") count: type: integer format: uint32 description: Number of GPUs present SkuMemory: title: SkuMemory type: object description: Memory component in a SKU properties: capacityMb: type: integer format: uint32 description: Capacity in megabytes memoryType: type: string description: 'Type of memory (e.g. "DDR4", "DDR5")' count: type: integer format: uint32 description: Number of memory modules present SkuStorage: title: SkuStorage type: object description: Storage component in a SKU properties: vendor: type: string description: Vendor of the storage device model: type: string description: Model of the storage device capacityMb: type: integer format: uint32 description: Capacity in megabytes count: type: integer format: uint32 description: Number of storage devices present SkuChassis: title: SkuChassis type: object description: Chassis component in a SKU properties: vendor: type: string description: Vendor of the chassis model: type: string description: Model of the chassis SkuEthernetDevice: title: SkuEthernetDevice type: object description: Ethernet device component in a SKU properties: vendor: type: string description: Vendor of the ethernet device model: type: string description: Model of the ethernet device count: type: integer format: uint32 description: Number of ethernet devices present SkuInfinibandDevice: title: SkuInfinibandDevice type: object description: Infiniband device component in a SKU properties: vendor: type: string description: Vendor of the infiniband device model: type: string description: Model of the infiniband device count: type: integer format: uint32 description: Number of infiniband devices present SkuTpm: title: SkuTpm type: object description: TPM component in a SKU properties: vendor: type: string description: Vendor of the TPM model: type: string description: Model of the TPM count: type: integer format: uint32 description: Number of TPMs present IpBlock: title: IpBlock type: object description: IP block contains information about an IPv4 address pool owned by the Infrastructure Provider and assigned as an overlay network for a particular Site. It is equivalent to Network Resource in product terminology. examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: Public Network Overlay for Site SJC4 description: This is the primary IP overlay for SJC4. All IPs are publicly routable siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf tenantId: null routingType: Public prefix: 202.168.16.0 prefixLength: 20 protocolVersion: IPv4 status: Pending statusHistory: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid readOnly: true name: type: string minLength: 2 maxLength: 256 description: type: - string - 'null' siteId: type: string format: uuid infrastructureProviderId: type: string format: uuid tenantId: type: - string - 'null' format: uuid routingType: type: string enum: - Public - DatacenterOnly prefix: type: string description: Either IPv4 or IPv6 address prefixLength: type: integer example: 24 description: 'Min: 1, Max: 32 for ipv4, 128 for ipv6' protocolVersion: type: string enum: - IPv4 - IPv6 usageStats: $ref: '#/components/schemas/IpBlockUsageStats' status: $ref: '#/components/schemas/IpBlockStatus' statusHistory: type: array items: $ref: '#/components/schemas/StatusDetail' deprecations: type: array items: $ref: '#/components/schemas/Deprecation' created: type: string format: date-time readOnly: true updated: type: string format: date-time readOnly: true IpBlockSummary: title: IpBlockSummary type: object description: Describes a subset of core attributes of an IP block examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: Public Network Overlay for Site SJC4 routingType: Public prefix: 202.168.16.0 prefixLength: 20 status: Pending properties: id: type: string format: uuid readOnly: true name: type: string minLength: 2 maxLength: 256 routingType: type: string enum: - Public - DatacenterOnly prefix: type: string description: Either IPv4 or IPv6 address prefixLength: type: integer example: 24 description: 'Min: 1, Max: 32 for ipv4, 128 for ipv6' status: $ref: '#/components/schemas/IpBlockStatus' IpBlockStatus: title: IpBlockStatus type: string description: Status values for IP Block objects enum: - Pending - Provisioning - Ready - Deleting - Error IpBlockUsageStats: title: IpBlockUsageStats type: object examples: - availableIPs: 256 acquiredIPs: 2 availablePrefixes: - 192.168.201.0/24 availableSmallestPrefixes: 64 acquiredPrefixes: 0 properties: availableIPs: type: integer format: int64 description: Number of IP addresses available in the block readOnly: true acquiredIPs: type: integer format: int64 description: Number of individual IP addresses acquired from the block readOnly: true availablePrefixes: type: array format: uuid description: Example prefixes available to acquire items: type: string readOnly: true availableSmallestPrefixes: type: integer description: Number of smallest prefixes available to acquire format: int64 readOnly: true acquiredPrefixes: type: integer format: int64 description: Number of prefixes acquired from this block description: Usa statistics for an IP Block IpBlockCreateRequest: title: IpBlockCreateRequest type: object description: Request data for creating IP block examples: - name: Public Network Overlay for Site SJC4 description: This is the primary IP overlay for SJC4. All IPs are publicly routable siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 routingType: Public prefix: 202.168.1.0 prefixLength: 24 protocolVersion: IPv4 properties: name: type: string minLength: 2 maxLength: 256 description: type: - string - 'null' siteId: type: string format: uuid routingType: type: string enum: - Public - DatacenterOnly prefix: type: string description: Either IPv4 or IPv6 address prefixLength: type: integer description: 'Min: 1, Max: 32 for IPv4, 128 for IPv6' protocolVersion: type: string enum: - IPv4 - IPv6 required: - name - siteId - routingType - prefix - prefixLength - protocolVersion IpBlockUpdateRequest: title: IpBlockUpdateRequest type: object description: Request data for editing IP block examples: - name: Public Network Overlay for Site SJC4 description: This is the primary IP overlay for SJC4. All IPs are publicly routable properties: name: type: - string - 'null' minLength: 2 maxLength: 256 description: type: - string - 'null' NetworkSecurityGroup: type: object examples: - id: 2a21cf79-ea5e-4d28-b585-2e78948fcefb name: Spark VPC Firewall description: Security policies for machines in Spark VPC siteId: 56f1a3ed-3653-454f-b861-9136207be660 tenantId: 79595ebe-934f-4f19-bc74-c16aefd0c57a status: Pending statusHistory: - status: Ready message: processed network security group creation request created: '2025-02-26T18:17:44.862879-05:00' updated: '2025-02-26T18:17:44.862879-05:00' rules: - name: allow-http-from-public direction: INGRESS sourcePortRange: 80-81 destinationPortRange: 180-181 protocol: TCP action: PERMIT priority: 55 sourcePrefix: 0.0.0.0/0 destinationPrefix: 1.1.1.1/0 labels: flavor: coconut created: '2025-02-26T18:17:44.861317-05:00' updated: '2025-02-26T18:17:44.861317-05:00' description: Network Security Group is an aggregate of security policies properties: id: type: string name: type: string minLength: 2 maxLength: 256 description: type: - string - 'null' siteId: type: string format: uuid tenantId: type: string format: uuid status: $ref: '#/components/schemas/NetworkSecurityGroupStatus' statusHistory: type: array items: $ref: '#/components/schemas/StatusDetail' statefulEgress: type: boolean rules: type: array items: $ref: '#/components/schemas/NetworkSecurityGroupRule' labels: $ref: '#/components/schemas/Labels' created: type: string format: date-time updated: type: string format: date-time NetworkSecurityGroupStatus: title: NetworkSecurityGroupStatus type: string description: Status values for Network Security Group objects enum: - Pending - Provisioning - Ready - Deleting - Error NetworkSecurityGroupCreateRequest: type: object examples: - name: Spark VPC Firewall description: Security policies for machines in Spark VPC siteId: 188a8f32-0001-45cf-b243-f62720a22cc4 rules: - name: allow-http-from-public direction: INGRESS sourcePortRange: 80-81 destinationPortRange: 180-181 protocol: TCP action: PERMIT priority: 55 sourcePrefix: 0.0.0.0/0 destinationPrefix: 1.1.1.1/0 labels: flavor: coconut description: Request data to create a Network Security Group properties: name: type: string minLength: 2 maxLength: 256 description: type: - string - 'null' siteId: type: string format: uuid statefulEgress: type: boolean description: Egress rules with protocol and destination ports defined but without source ports defined should automatically be made stateful. rules: type: array items: $ref: '#/components/schemas/NetworkSecurityGroupRule' labels: $ref: '#/components/schemas/Labels' required: - name - siteId NetworkSecurityGroupUpdateRequest: type: object examples: - name: Spark VPC Firewall description: Security policies for machines in Spark VPC rules: - name: allow-http-from-public direction: INGRESS sourcePortRange: 80-81 destinationPortRange: 180-181 protocol: TCP action: PERMIT priority: 55 sourcePrefix: 0.0.0.0/0 destinationPrefix: 1.1.1.1/0 labels: flavor: coconut description: Request data to update a Network Security Group properties: name: type: - string - 'null' minLength: 2 maxLength: 256 description: type: - string - 'null' statefulEgress: type: boolean description: Egress rules with protocol and destination ports defined but without source ports defined should automatically be made stateful. rules: type: array description: 'Update rules of the NetworkSecurityGroup. The rules will be entirely replaced by those sent in the request. Any rules not included in the request will be removed. To retain existing rules, first fetch them and include them. ' items: $ref: '#/components/schemas/NetworkSecurityGroupRule' labels: $ref: '#/components/schemas/Labels' NetworkSecurityGroupRule: title: NetworkSecurityGroupRule type: object description: Aggregation of Network Security Group rules properties: name: type: - string - 'null' direction: type: string enum: - INGRESS - EGRESS example: INGRESS sourcePortRange: type: - string - 'null' example: 80-81 destinationPortRange: type: - string - 'null' example: 80-81 protocol: type: string enum: - TCP - UDP - ICMP - ANY example: TCP action: type: string enum: - PERMIT - DENY example: PERMIT priority: type: integer sourcePrefix: type: string example: 10.5.44.0/24 destinationPrefix: type: string example: 10.5.44.0/24 required: - direction - protocol - action - sourcePrefix - destinationPrefix NetworkSecurityGroupPropagationDetails: title: NetworkSecurityGroupPropagationDetails type: object description: The Network Security Group propagation details for a VPC or Instance properties: id: type: string format: uuid description: The VPC or Instance ID detailedStatus: type: string enum: - None - Partial - Full - Unknown - Error status: $ref: '#/components/schemas/NetworkSecurityGroupPropagationStatus' details: type: - string - 'null' unpropagatedInstanceIds: type: array items: type: string format: uuid relatedInstanceIds: type: array items: type: string format: uuid NetworkSecurityGroupPropagationStatus: title: NetworkSecurityGroupPropagationStatus type: string description: Status values for Network Security Group propagation enum: - Synchronizing - Synchronized - Error StatusDetail: title: StatusDetail type: object description: Describes the details of a status transition for a resource properties: status: type: string message: type: - string - 'null' created: type: string format: date-time readOnly: true updated: type: string format: date-time readOnly: true examples: - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' SshKeyGroup: title: SshKeyGroup type: object description: Describes the model that groups SSH Keys examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: reno-integration-sre description: SRE access SSH keys for Reno Integration org: wdksahew1rqf tenantId: f97df110-f4de-492e-8849-4a6af68026b0 version: fbc692b61ffef6fbfc38a3833f6b7e7ae508da75 siteAssociations: - site: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: sjc-central-1 infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e isSerialConsoleEnabled: true isOnline: true capabilities: nativeNetworking: false networkSecurityGroup: true nvLinkPartition: false flow: false imageBasedOperatingSystem: false status: Registered status: Syncing version: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' sshKeys: - id: ff06da79-707a-4069-8623-211d49ae96c8 name: sre-ssh-reno org: wdksahew1rqf tenantId: f97df110-f4de-492e-8849-4a6af68026b0 fingerprint: CaK2yoj5fDOhf1swM2kFyjQrd3bwZfDYlWnVjBHgveQ created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' status: Syncing statusHistory: - status: Syncing message: Group is being synced to Sites created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string description: Unique identifier for the SSH Key Group format: uuid readOnly: true name: type: string description: Name of the SSH Key Group description: type: - string - 'null' description: 'Description for the SSH Key Group, optional' org: type: string description: Organization this SSH Key Group belongs to tenantId: type: string format: uuid description: ID of the Tenane the SSH Key Group belongs to version: type: - string - 'null' description: Version of the SSH Key Group example: fbc692b61ffef6fbfc38a3833f6b7e7ae508da75 sshKeys: type: array description: SSH Keys associated with this SSH Key Group items: $ref: '#/components/schemas/SshKey' siteAssociations: type: array description: Sites the SSH Key Group is synced to items: $ref: '#/components/schemas/SshKeyGroupSiteAssociation' status: $ref: '#/components/schemas/SshKeyGroupStatus' description: Status of the SSH Key Group statusHistory: type: array description: History of the SSH Key Group states items: $ref: '#/components/schemas/StatusDetail' created: type: string format: date-time description: Date/time when the SSH key was created readOnly: true updated: type: string format: date-time description: Date/time when the SSH key was last updated readOnly: true SshKeyGroupStatus: title: SshKeyGroupStatus type: string description: Status values for SSH Key Group objects enum: - Syncing - Synced - Error - Deleting SshKeyGroupSiteAssociation: title: SshKeyGroupSiteAssociation type: object description: Describes the relationship between an SSH Key Group and a Site examples: - site: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: sjc-central-1 infrastructureProviderId: 5f2cc306-76e9-4fca-9186-950c9ef9a74e isSerialConsoleEnabled: true isOnline: false capabilities: nativeNetworking: false networkSecurityGroup: true nvLinkPartition: false flow: false imageBasedOperatingSystem: false status: Pending status: Syncing version: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: site: $ref: '#/components/schemas/SiteSummary' status: $ref: '#/components/schemas/SshKeyGroupSiteAssociationStatus' version: type: - string - 'null' description: Version of the Key Group on Site example: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3 created: type: string format: date-time readOnly: true updated: type: string format: date-time readOnly: true SshKeyGroupSiteAssociationStatus: title: SshKeyGroupSiteAssociationStatus type: string description: Status values for SSH Key Group Site Association objects enum: - Syncing - Synced - Pending - Error - Deleting SshKeyGroupCreateRequest: title: SshKeyGroupCreateRequest type: object description: Request data to create an SSH Key Group examples: - name: reno-integration-sre description: SRE access SSH keys for Reno Integration siteIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 sshKeyIds: - ff06da79-707a-4069-8623-211d49ae96c8 properties: name: type: string description: type: - string - 'null' siteIds: type: array items: type: string format: uuid sshKeyIds: type: array items: type: string format: uuid required: - name SshKeyGroupUpdateRequest: title: SshKeyGroupUpdateRequest type: object description: Request data to update an SSH Key Group examples: - name: reno-int-sre description: SRE access SSH keys for Reno Integration Site siteIds: - 497f6eca-6276-4993-bfeb-53cbbbba6f08 - 05d6e108-9f06-44c9-be47-7ab4d62b20d0 sshKeyIds: - ff06da79-707a-4069-8623-211d49ae96c8 - 30fc7238-133d-42f7-8d29-866658b0c019 version: 098f6bcd4621d373cade4e832627b4f6 properties: name: type: - string - 'null' description: type: - string - 'null' siteIds: type: array description: 'When specified, replaces existing Site associations' items: type: string format: uuid sshKeyIds: type: array description: 'When specified, replaces existing SSH Key associations' items: type: string format: uuid version: type: string description: Version of the SSH Key Group being modified must be provided required: - version SshKey: title: SshKey type: object description: Details of SSH public key examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: sre-ssh-reno org: wdksahew1rqf tenantId: f97df110-f4de-492e-8849-4a6af68026b0 fingerprint: CaK2yoj5fDOhf1swM2kFyjQrd3bwZfDYlWnVjBHgveQ created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string description: Unique identifier for the key format: uuid readOnly: true name: type: string org: type: string tenantId: type: string format: uuid fingerprint: type: string description: SHA256 fingerprint of the public key created: type: string format: date-time description: Date/time when the SSH key was created readOnly: true updated: type: string format: date-time description: Date/time when the SSH key was last updated readOnly: true SshKeyCreateRequest: title: SshKeyCreateRequest type: object description: Request data to create an SSH key examples: - name: sre-ssh-reno publicKey: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICip4hl6WjuVHs60PeikVUs0sWE/kPhk2D0rRHWsIuyL jdoe@test.com sshKeyGroupId: 0b5be54a-65ee-4a85-9928-90e6bca22dac properties: name: type: string description: Name cannot match that name an existing SSH Key publicKey: type: string description: 'Must be an SSH key of type: RSA, ECDSA or ED25519' pattern: '^ssh-(rsa|ecdsa|ed25519) AAAA[0-9A-Za-z+/]+[=]{0,3}(\s+.+)?$' sshKeyGroupId: type: - string - 'null' format: uuid description: ID of the SSH Key Group this key should be attached to required: - name - publicKey SshKeyUpdateRequest: title: SshKeyUpdateRequest type: object description: Request data to update an SSH key examples: - name: sre-ssh-reno-integration properties: name: type: - string - 'null' DpuExtensionService: title: DpuExtensionService type: object description: DPU Extension Service allows user defined services to run on DPUs of their Instances examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: busybox description: 'Single, multi-call executable that contains stripped-down versions of common Unix utilities' serviceType: KubernetesPod siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 tenantId: f97df110-f4de-492e-8849-4a6af68026b0 version: V1-T1761856992374052 versionInfo: version: V1-T1761856992374052 data: 'apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: busybox-deployment\n labels:\n app: busybox\nspec:\n replicas: 1 # You can adjust the number of desired replicas here\n selector:\n matchLabels:\n app: busybox\n template:\n metadata:\n labels:\n app: busybox\n spec:\n containers:\n - name: busybox-container\n image: busybox:latest # You can specify a different BusyBox image tag\n command: ["sh", "-c", "echo \''BusyBox container running\'' && sleep 3600"]' hasCredentials: true created: '2019-08-24T14:15:22Z' observability: configs: - name: busybox-metrics prometheus: scrapeIntervalSeconds: 30 endpoint: busybox:9090 activeVersions: - V1-T1761857134382532 - V1-T1761856992374052 status: Ready statusHistory: - status: Pending message: DPU Service Extension is ready for use created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' - status: Pending message: 'Request received, pending processing' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string description: Unique identifier for the DPU Extension Service format: uuid readOnly: true name: type: string description: Name for the DPU Extension Service. Must be unique for a given Tenant description: type: - string - 'null' description: Optional description for the DPU Extension Service serviceType: type: string description: Type of the DPU Extension Service enum: - KubernetesPod siteId: type: string format: uuid description: ID for the Site the DPU Extension Service belongs to tenantId: type: string format: uuid description: ID for the Tenant the DPU Extension Service belongs to version: type: - string - 'null' description: Latest version of the DPU Extension Service versionInfo: $ref: '#/components/schemas/DpuExtensionServiceVersionInfo' description: Details for the latest version of the DPU Extension Service activeVersions: type: array description: Latest and past versions of this DPU Extension Service that have not been deleted and are available for deployment items: type: string status: $ref: '#/components/schemas/DpuExtensionServiceStatus' description: Status of the DPU Extension Service statusHistory: type: array description: History of the DPU Extension Service statuses items: $ref: '#/components/schemas/StatusDetail' created: type: string format: date-time description: Date/time when the DPU Extension Service was created readOnly: true updated: type: string format: date-time description: Date/time when the DPU Extension Service was last updated readOnly: true DpuExtensionServiceStatus: title: DpuExtensionServiceStatus type: string description: Status values for DPU Extension Service objects enum: - Pending - Ready - Error - Deleting DpuExtensionServiceSummary: title: DpuExtensionServiceSummary type: object description: DPU Extension Service allows user defined services to run on DPUs of their Instances examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: busybox serviceType: KubernetesPod latestVersion: V1-T1761856992374052 status: Ready properties: id: type: string description: Unique identifier for the DPU Extension Service format: uuid readOnly: true name: type: string description: Name for the DPU Extension Service. Must be unique for a given Tenant serviceType: type: string description: Type of the DPU Extension Service enum: - KubernetesPod latestVersion: type: - string - 'null' description: Latest version of the DPU Extension Service status: $ref: '#/components/schemas/DpuExtensionServiceStatus' description: Status of the DPU Extension Service DpuExtensionServiceVersionInfo: title: DpuExtensionServiceVersionInfo type: object description: Information about a specific version of DPU Extension Service examples: - version: V1-T1761856992374052 data: 'apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: busybox-deployment\n labels:\n app: busybox\nspec:\n replicas: 1 # You can adjust the number of desired replicas here\n selector:\n matchLabels:\n app: busybox\n template:\n metadata:\n labels:\n app: busybox\n spec:\n containers:\n - name: busybox-container\n image: busybox:latest # You can specify a different BusyBox image tag\n command: ["sh", "-c", "echo \''BusyBox container running\'' && sleep 3600"]' hasCredentials: true created: '2019-08-24T14:15:22Z' observability: configs: - name: busybox-metrics prometheus: scrapeIntervalSeconds: 30 endpoint: busybox:9090 properties: version: type: - string - 'null' description: Current version of the DPU Extension Service data: type: string description: Deployment spec for the DPU Extension Service hasCredentials: type: boolean description: Indicates whether this version was created with credentials created: type: string format: date-time description: Date/time when this version of the DPU Extension Service was created readOnly: true observability: $ref: '#/components/schemas/DpuExtensionServiceObservability' description: Observability configuration for this DPU Extension Service version DpuExtensionServiceCreateRequest: title: DpuExtensionServiceCreateRequest type: object description: Request data to create a new DPU Extension Service examples: - name: busybox description: 'Single, multi-call executable that contains stripped-down versions of common Unix utilities' serviceType: KubernetesPod siteId: 60189e9c-7d12-438c-b9ca-6998d9c364b1 data: 'apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: busybox-deployment\n labels:\n app: busybox\nspec:\n replicas: 1 # You can adjust the number of desired replicas here\n selector:\n matchLabels:\n app: busybox\n template:\n metadata:\n labels:\n app: busybox\n spec:\n containers:\n - name: busybox-container\n image: busybox:latest # You can specify a different BusyBox image tag\n command: ["sh", "-c", "echo \''BusyBox container running\'' && sleep 3600"]' credentials: registryUrl: 'https://registry.hub.docker.com' username: johndoe password: password123 observability: configs: - name: busybox-metrics prometheus: scrapeIntervalSeconds: 30 endpoint: busybox:9090 properties: name: type: string description: Name for the DPU Extension Service. Must be unique for a given Tenant description: type: - string - 'null' description: Optional description for the DPU Extension Service serviceType: type: string description: Type of the DPU Extension Service enum: - KubernetesPod siteId: type: string format: uuid description: ID for the Site the DPU Extension Service belongs to data: type: string description: Deployment spec for the DPU Extension Service credentials: $ref: '#/components/schemas/DpuExtensionServiceCredentials' description: Credentials to download resources specified in DPU Extension Service data observability: $ref: '#/components/schemas/DpuExtensionServiceObservability' description: Observability configuration for the DPU Extension Service version required: - name - serviceType - siteId - data DpuExtensionServiceUpdateRequest: title: DpuExtensionServiceUpdateRequest type: object description: Request data to update an existing DPU Extension Service examples: - name: busybox-ha data: 'apiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: busybox-deployment\n labels:\n app: busybox\nspec:\n replicas: 3 # You can adjust the number of desired replicas here\n selector:\n matchLabels:\n app: busybox\n template:\n metadata:\n labels:\n app: busybox\n spec:\n containers:\n - name: busybox-container\n image: busybox:latest # You can specify a different BusyBox image tag\n command: ["sh", "-c", "echo \''BusyBox container running\'' && sleep 3600"]' credentials: registryUrl: 'https://registry.hub.docker.com' username: johndoe password: password123 observability: configs: - name: busybox-logs logging: path: /var/log/busybox.log properties: name: type: - string - 'null' description: Name for the DPU Extension Service. Must be unique for a given Tenant description: type: - string - 'null' description: Optional description for the DPU Extension Service data: type: - string - 'null' description: Deployment spec for the DPU Extension Service credentials: $ref: '#/components/schemas/DpuExtensionServiceCredentials' description: Credentials to download resources specified in DPU Extension Service data observability: $ref: '#/components/schemas/DpuExtensionServiceObservability' description: Observability configuration for the DPU Extension Service version DpuExtensionServiceCredentials: title: DpuExtensionServiceCredentials type: object description: Credentials for retreiving resources specified in DPU Extension Service data examples: - registryUrl: 'https://registry.hub.docker.com' username: johndoe password: password123 properties: registryUrl: type: string description: URL for the registry the credential should be used for username: type: - string - 'null' description: Username for the registry. Must be specified if registry URL is specified password: type: - string - 'null' description: Password for the registry. Must be specified if registry URL is specified DpuExtensionServiceObservability: title: DpuExtensionServiceObservability type: object description: Observability configuration for a DPU Extension Service version examples: - configs: - name: busybox-metrics prometheus: scrapeIntervalSeconds: 30 endpoint: busybox:9090 - name: busybox-logs logging: path: /var/log/busybox.log properties: configs: type: array maxItems: 20 description: Observability configurations to apply to the service version items: $ref: '#/components/schemas/DpuExtensionServiceObservabilityConfig' DpuExtensionServiceObservabilityConfig: title: DpuExtensionServiceObservabilityConfig type: object description: A single observability configuration for a DPU Extension Service version properties: name: type: - string - 'null' description: Optional name of the service or component being monitored prometheus: $ref: '#/components/schemas/DpuExtensionServiceObservabilityPrometheus' logging: $ref: '#/components/schemas/DpuExtensionServiceObservabilityLogging' oneOf: - required: - prometheus - required: - logging DpuExtensionServiceObservabilityPrometheus: title: DpuExtensionServiceObservabilityPrometheus type: object description: Prometheus scrape configuration for a DPU Extension Service version properties: scrapeIntervalSeconds: type: integer format: uint32 minimum: 0 maximum: 4294967295 description: How often Prometheus should scrape the endpoint endpoint: type: string description: Prometheus scrape endpoint required: - scrapeIntervalSeconds - endpoint DpuExtensionServiceObservabilityLogging: title: DpuExtensionServiceObservabilityLogging type: object description: Logging configuration for a DPU Extension Service version properties: path: type: string description: Path to the log file to collect required: - path DpuExtensionServiceDeployment: title: DpuExtensionServiceDeployment type: object description: Describes a deployment of a DPU Extension Service on DPUs of an Instance examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 dpuExtensionService: id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 name: busybox serviceType: KubernetesPod latestVersion: V1-T1761856992374052 status: Ready version: V1-T1761856992374052 status: Running created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string format: uuid description: Unique identifier for the DPU Extension Service Deployment readOnly: true dpuExtensionService: $ref: '#/components/schemas/DpuExtensionServiceSummary' description: Summary of the DPU Extension Service. Deployed version may be different version: type: string description: Deployed version of the DPU Extension Service status: $ref: '#/components/schemas/DpuExtensionServiceDeploymentStatus' description: Status of the DPU Extension Service Deployment created: type: string format: date-time description: Date/time when this version of the DPU Extension Service Deployment was created updated: type: string format: date-time description: Date/time when this version of the DPU Extension Service Deployment was updated DpuExtensionServiceDeploymentStatus: title: DpuExtensionServiceDeploymentStatus type: string description: Status values for DPU Extension Service Deployment objects enum: - Pending - Running - Error - Failed - Terminating DpuExtensionServiceDeploymentRequest: title: DpuExtensionServiceDeploymentRequest type: object description: Request data to deploy of a specific version of a DPU Extension Service on DPUs of an Instance examples: - dpuExtensionServiceId: 3bddb7b4-0963-4278-b311-c212dc758357 version: V1-T1761856992374052 properties: dpuExtensionServiceId: type: string description: ID of the DPU Extension Service to deploy format: uuid version: type: string description: Version of the DPU Extension Service to deploy User: title: User type: object description: Details of the user collected from authentication tokens examples: - id: 497f6eca-6276-4993-bfeb-53cbbbba6f08 email: janed@nvidia.com firstName: Jane lastName: Doe created: '2019-08-24T14:15:22Z' updated: '2019-08-24T14:15:22Z' properties: id: type: string description: Unique identifier for the given user. format: uuid readOnly: true email: type: - string - 'null' format: email firstName: type: - string - 'null' lastName: type: - string - 'null' created: type: string format: date-time description: The date that the user was created. readOnly: true updated: type: string format: date-time readOnly: true AuditEntry: title: AuditEntry type: object description: Describes Audit Log Entry examples: - id: e313b3ca-c47a-4ec1-a79b-a147fad51a50 endpoint: /v2/org/test-org-1/nico/ep queryParams: '{"test":["1234"]}' method: POST body: '{"key1":"value1"}' statusCode: 200 clientIP: 12.123.43.112 userID: 5d9fe319-14d4-40e3-8e5a-7d79e680d55b user: id: 5d9fe319-14d4-40e3-8e5a-7d79e680d55b firstName: John lastName: Doe email: jdoe@test.com orgName: test-org-1 timestamp: '2024-12-04T21:06:33.849293-08:00' durationMs: 250 apiVersion: 0.1.91 - id: e313b3ca-c47a-4ec1-a79b-a147fad51a50 endpoint: /v2/org/test-org-1/nico/ep queryParams: '{"test":["1234"]}' method: POST body: '{"key1":"value1"}' statusCode: 403 statusMessage: User does not have permissions clientIP: 12.123.43.112 userID: 5d9fe319-14d4-40e3-8e5a-7d79e680d55b user: id: 5d9fe319-14d4-40e3-8e5a-7d79e680d55b firstName: John lastName: Doe email: jdoe@test.com orgName: test-org-1 timestamp: '2024-12-04T21:06:33.849293-08:00' durationMs: 50 apiVersion: 0.1.91 properties: id: type: string description: Unique identifier format: uuid readOnly: true endpoint: type: string description: API endpoint queryParams: type: string description: Query parameters method: type: string description: HTTP method body: type: string description: HTTP body in JSON format statusCode: type: integer description: HTTP response status code statusMessage: type: string description: HTTP response status message clientIP: type: string description: Client IP address userID: type: - string - 'null' format: uuid description: User ID that executed the API call user: $ref: '#/components/schemas/User' description: User that executed the API call orgName: type: string description: Organization name extraData: type: object description: Extra data in JSON format timestamp: type: string format: date-time description: API execution time durationMs: type: integer description: API execution duration in milliseconds apiVersion: type: string description: API version Metadata: title: Metadata type: object description: Metadata about the API server examples: - version: 0.1.24 buildTime: '2019-08-24T14:15:22Z' properties: version: type: string description: Current version of the API readOnly: true buildTime: type: string description: Date/time when the API was built readOnly: true Deprecation: title: Deprecation type: object description: Details of a particular deprecation in NVIDIA Infra Controller (NICo) API examples: - attribute: blockSize replacedBy: prefixLength takeActionBy: '2023-04-15T00:00:00Z' notice: blockSize' has been deprecated in favor of 'prefixLength'. Please take action as soon as possible properties: attribute: type: - string - 'null' queryParam: type: - string - 'null' endpoint: type: - string - 'null' replacedBy: type: - string - 'null' takeActionBy: type: string format: date-time notice: type: string NICoAPIError: title: NICoAPIError type: object description: Describes the error response from NVIDIA Infra Controller REST API properties: source: type: string description: Source of the error. enum: - nico message: type: string description: Message describing the error data: type: - object - 'null' description: Additional data about the error ServiceAccount: title: ServiceAccount type: object description: Describes Service Account status and related entities properties: enabled: type: boolean description: Indicates whether Service Account is enabled infrastructureProviderId: type: - string - 'null' format: uuid description: ID of the Infrastructure Provider associated with Service Account tenantId: type: - string - 'null' format: uuid description: ID of the Tenant associated with Service Account examples: - enabled: true infrastructureProviderId: e94bcfda-f6cb-42e4-80ec-516811e5abbf tenantId: f97df110-f4de-492e-8849-4a6af68026b0 Labels: title: Labels type: object maxProperties: 10 additionalProperties: type: string MachineGPUStats: title: MachineGPUStats description: GPU summary stats for a single GPU type across machines at a site type: object properties: name: type: string description: GPU name from the MachineCapability record gpus: type: integer description: Total number of GPUs (summation of all Machine GPU capability counts) machines: type: integer description: Number of machines that have this GPU capability MachineStatusBreakdown: title: MachineStatusBreakdown description: Machine counts broken down by status type: object properties: total: type: integer initializing: type: integer ready: type: integer inUse: type: integer error: type: integer maintenance: type: integer unknown: type: integer MachineInstanceTypeSummary: title: MachineInstanceTypeSummary description: Summary of machines grouped by assigned vs unassigned instance type type: object properties: assigned: description: Machines that have been assigned to an instance type $ref: '#/components/schemas/MachineStatusBreakdown' unassigned: description: Machines that have not been assigned to any instance type $ref: '#/components/schemas/MachineStatusBreakdown' MachineInstanceTypeStats: title: MachineInstanceTypeStats description: Detailed stats for machines of a specific instance type type: object properties: id: type: string format: uuid description: Unique identifier for the InstanceType name: type: string description: Name of the InstanceType assignedMachineStats: $ref: '#/components/schemas/MachineStatusBreakdown' allocated: type: integer description: Number of Machines of this Instance Type allocated to Tenants maxAllocatable: type: integer description: Number of Ready Machines of this Instance Type available for additional allocation to Tenants usedMachineStats: $ref: '#/components/schemas/MachineStatusBreakdown' tenants: type: array items: $ref: '#/components/schemas/InstanceTypeStats' InstanceTypeStats: title: InstanceTypeStats description: Stats for an instance type including allocation details type: object properties: id: type: string format: uuid name: type: string allocated: type: integer usedMachineStats: $ref: '#/components/schemas/MachineStatusBreakdown' maxAllocatable: type: integer allocations: type: array items: $ref: '#/components/schemas/AllocationStats' AllocationStats: title: AllocationStats description: Stats for a single allocation within an instance type type: object properties: id: type: string format: uuid name: type: string total: type: integer TenantInstanceTypeStats: title: TenantInstanceTypeStats description: Per-tenant instance type allocation stats type: object properties: id: type: string format: uuid description: Unique identifier for the Tenant org: type: string description: Organization name for the Tenant orgDisplayName: type: string description: Display name for the Tenant's organization instanceTypes: type: array items: $ref: '#/components/schemas/InstanceTypeStats' securitySchemes: JWTBearerToken: type: http scheme: Bearer description: |- ``` export JWT_BEARER_TOKEN="" # Example org name: "acme-inc export ORG_NAME= # Use the JWT bearer token in your API request auth header: curl -v -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $JWT_BEARER_TOKEN" https://nico-rest-api.nico.svc.cluster.local/v2/org/$ORG_NAME/nico/user/current ``` responses: GenericHttpError: description: Response when the API handler encounters an unexpected error content: application/json: schema: $ref: '#/components/schemas/NICoAPIError' examples: Example 1: value: source: nico message: Error handling API request data: null NotFoundError: description: Error response when requested object is not found content: application/json: schema: $ref: '#/components/schemas/NICoAPIError' examples: example-1: value: source: nico message: Could not find resource with specified ID data: null ForbiddenError: description: Error response when user is not authorized to call an endpoint or retrieve/modify objects content: application/json: schema: $ref: '#/components/schemas/NICoAPIError' examples: example-1: value: source: nico message: User is not allowed to perform this action data: null ValidationError: description: Error response when request data cannot be validated content: application/json: schema: $ref: '#/components/schemas/NICoAPIError' examples: example-1: value: source: nico message: Error validating request data data: name: A value is required parameters: {} requestBodies: {} security: - JWTBearerToken: []