From 6e6643eb7a61a9d7264bfda800f45247977ef8bc Mon Sep 17 00:00:00 2001 From: Tareque Hossain Date: Wed, 10 Jun 2026 17:34:02 -0700 Subject: [PATCH 1/3] docs(rest-api): Add missing attribute descriptions in OpenAPI schema, fix all lint errors Signed-off-by: Tareque Hossain --- rest-api/api/pkg/api/handler/instancetype.go | 4 +- rest-api/api/pkg/api/handler/stats.go | 4 +- rest-api/api/pkg/api/handler/stats_test.go | 4 +- rest-api/api/pkg/api/handler/subnet_test.go | 10 - .../api/pkg/api/handler/util/common/common.go | 8 +- .../api/handler/util/common/common_test.go | 12 +- .../api/pkg/api/model/allocationconstraint.go | 30 +- rest-api/api/pkg/api/model/deprecation.go | 2 +- rest-api/api/pkg/api/model/instancetype.go | 6 +- rest-api/api/pkg/api/model/ipblock.go | 3 - rest-api/api/pkg/api/model/ipblock_test.go | 5 - .../api/pkg/api/model/networksecuritygroup.go | 31 +- rest-api/api/pkg/api/model/nvlinkinterface.go | 29 +- .../api/pkg/api/model/nvlinkinterface_test.go | 12 +- rest-api/api/pkg/api/model/stats.go | 20 +- rest-api/api/pkg/api/model/stats_test.go | 10 +- rest-api/api/pkg/api/model/subnet.go | 3 - rest-api/api/pkg/api/model/tenant.go | 3 +- rest-api/api/pkg/api/model/tenantaccount.go | 44 +- .../api/pkg/api/model/tenantaccount_test.go | 25 +- rest-api/docs/index.html | 4810 +++++++++++++---- rest-api/openapi/spec.yaml | 592 +- rest-api/sdk/simple/instance.go | 2 +- rest-api/sdk/standard/model_allocation.go | 9 +- .../standard/model_allocation_constraint.go | 10 +- .../model_allocation_create_request.go | 3 +- .../model_batch_bring_up_rack_request.go | 3 +- .../model_batch_instance_create_request.go | 5 +- ...odel_batch_rack_firmware_update_request.go | 3 +- ...odel_batch_tray_firmware_update_request.go | 3 +- ...l_batch_update_rack_power_state_request.go | 3 +- ...l_batch_update_tray_power_state_request.go | 3 +- rest-api/sdk/standard/model_component_diff.go | 8 +- rest-api/sdk/standard/model_deprecation.go | 2 +- ..._extension_service_observability_config.go | 6 +- .../standard/model_infini_band_interface.go | 74 +- .../standard/model_infini_band_partition.go | 50 +- ...el_infini_band_partition_update_request.go | 4 +- .../standard/model_infrastructure_provider.go | 13 +- .../model_infrastructure_provider_stats.go | 7 +- rest-api/sdk/standard/model_instance.go | 57 +- .../model_instance_count_by_status.go | 16 +- .../standard/model_instance_create_request.go | 8 +- rest-api/sdk/standard/model_instance_type.go | 39 +- .../model_instance_type_create_request.go | 18 +- .../sdk/standard/model_instance_type_stats.go | 26 +- .../standard/model_instance_type_summary.go | 15 +- .../model_instance_type_update_request.go | 10 +- .../standard/model_instance_update_request.go | 5 +- rest-api/sdk/standard/model_interface.go | 27 +- .../model_interface_create_request.go | 4 +- rest-api/sdk/standard/model_ip_block.go | 77 +- .../model_ip_block_count_by_status.go | 16 +- .../standard/model_ip_block_create_request.go | 13 +- .../sdk/standard/model_ip_block_summary.go | 12 +- .../standard/model_ip_block_update_request.go | 4 +- rest-api/sdk/standard/model_machine.go | 28 +- .../sdk/standard/model_machine_bmc_info.go | 10 +- .../sdk/standard/model_machine_capability.go | 48 + .../standard/model_machine_count_by_status.go | 22 +- .../sdk/standard/model_machine_dmi_data.go | 113 +- .../sdk/standard/model_machine_gpu_info.go | 22 +- .../model_machine_infini_band_interface.go | 19 +- .../standard/model_machine_instance_type.go | 17 +- ...el_machine_instance_type_create_request.go | 1 + .../model_machine_instance_type_stats.go | 9 +- .../sdk/standard/model_machine_interface.go | 33 +- .../sdk/standard/model_machine_metadata.go | 13 +- .../model_machine_network_interface.go | 19 +- .../standard/model_machine_online_repair.go | 6 +- .../model_machine_status_breakdown.go | 19 +- .../sdk/standard/model_machine_summary.go | 3 +- .../standard/model_machine_update_request.go | 3 +- .../standard/model_network_security_group.go | 110 +- ...l_network_security_group_create_request.go | 15 +- ...work_security_group_propagation_details.go | 88 +- .../model_network_security_group_rule.go | 25 +- .../model_network_security_group_stats.go | 239 + ...l_network_security_group_update_request.go | 9 +- .../sdk/standard/model_nv_link_interface.go | 52 +- ...link_interface_create_or_update_request.go | 34 +- .../model_nv_link_logical_partition.go | 37 + .../model_nv_link_logical_partition_stats.go | 165 + .../standard/model_open_id_configuration.go | 16 +- ...model_operating_system_site_association.go | 10 +- rest-api/sdk/standard/model_rack.go | 5 +- rest-api/sdk/standard/model_site.go | 40 +- .../sdk/standard/model_site_capabilities.go | 13 +- .../sdk/standard/model_site_create_request.go | 6 +- .../sdk/standard/model_site_machine_stats.go | 13 +- .../model_site_machine_stats_by_allocation.go | 7 +- .../model_site_machine_stats_by_health.go | 4 +- .../model_site_machine_stats_by_status.go | 22 +- ...site_machine_stats_by_status_and_health.go | 22 +- rest-api/sdk/standard/model_site_summary.go | 10 +- .../sdk/standard/model_site_update_request.go | 8 +- rest-api/sdk/standard/model_sku_tpm.go | 73 +- rest-api/sdk/standard/model_ssh_key.go | 9 +- .../model_ssh_key_group_create_request.go | 10 +- .../model_ssh_key_group_site_association.go | 10 +- .../model_ssh_key_group_update_request.go | 4 +- .../standard/model_ssh_key_update_request.go | 1 + rest-api/sdk/standard/model_status_detail.go | 10 +- rest-api/sdk/standard/model_subnet.go | 116 +- .../standard/model_subnet_count_by_status.go | 16 +- .../standard/model_subnet_create_request.go | 18 +- .../standard/model_subnet_update_request.go | 4 +- rest-api/sdk/standard/model_tenant_account.go | 33 +- .../model_tenant_account_count_by_status.go | 11 +- .../model_tenant_account_create_request.go | 1 + ...nt_identity_basic_client_secret_request.go | 1 + ...t_identity_basic_client_secret_response.go | 1 + .../standard/model_tenant_identity_config.go | 19 +- .../model_tenant_identity_token_delegation.go | 15 +- ...ken_delegation_create_or_update_request.go | 3 +- ...l_tenant_instance_type_allocation_stats.go | 202 + .../model_tenant_instance_type_stats.go | 5 +- rest-api/sdk/standard/model_tenant_stats.go | 44 +- rest-api/sdk/standard/model_tray.go | 5 +- rest-api/sdk/standard/model_user.go | 10 +- .../sdk/standard/model_vpc_count_by_status.go | 16 +- rest-api/sdk/standard/model_vpc_prefix.go | 38 +- .../model_vpc_prefix_update_request.go | 1 + 123 files changed, 6533 insertions(+), 1700 deletions(-) create mode 100644 rest-api/sdk/standard/model_network_security_group_stats.go create mode 100644 rest-api/sdk/standard/model_nv_link_logical_partition_stats.go create mode 100644 rest-api/sdk/standard/model_tenant_instance_type_allocation_stats.go diff --git a/rest-api/api/pkg/api/handler/instancetype.go b/rest-api/api/pkg/api/handler/instancetype.go index 99bffd12e6..b820eb1017 100644 --- a/rest-api/api/pkg/api/handler/instancetype.go +++ b/rest-api/api/pkg/api/handler/instancetype.go @@ -650,7 +650,7 @@ func (gaith GetAllInstanceTypeHandler) Handle(c echo.Context) error { instanceTypeIDsToMachineInstanceTypeMap[mi.InstanceTypeID] = append(instanceTypeIDsToMachineInstanceTypeMap[mi.InstanceTypeID], cmi) } - var instantTypeIDsToAllocStatsMap map[uuid.UUID]*model.APIAllocationStats + var instantTypeIDsToAllocStatsMap map[uuid.UUID]*model.APIInstanceTypeAllocationStats if includeAllocationStats { instantTypeIDsToAllocStatsMap, apiErr = common.GetAllInstanceTypeAllocationStats(ctx, gaith.dbSession, stID, itIDs, logger, tenantID) if apiErr != nil { @@ -844,7 +844,7 @@ func (gith GetInstanceTypeHandler) Handle(c echo.Context) error { } // Allocation stats info for this Tnstance Type - var aas *model.APIAllocationStats + var aas *model.APIInstanceTypeAllocationStats if includeAllocationStats { aas, apiErr = common.GetInstanceTypeAllocationStats(ctx, gith.dbSession, logger, *it, tenantID) diff --git a/rest-api/api/pkg/api/handler/stats.go b/rest-api/api/pkg/api/handler/stats.go index 5076a43d56..1d1195993f 100644 --- a/rest-api/api/pkg/api/handler/stats.go +++ b/rest-api/api/pkg/api/handler/stats.go @@ -305,8 +305,8 @@ func (gtitsh GetTenantInstanceTypeStatsHandler) Handle(c echo.Context) error { return acc + ac.ConstraintValue }, 0) - apiAllocs := lo.Map(details, func(ac cdbm.AllocationConstraint, _ int) model.APITenantInstanceTypeAllocation { - return model.APITenantInstanceTypeAllocation{ + apiAllocs := lo.Map(details, func(ac cdbm.AllocationConstraint, _ int) model.APITenantInstanceTypeAllocationStats { + return model.APITenantInstanceTypeAllocationStats{ ID: ac.Allocation.ID.String(), Name: ac.Allocation.Name, Total: ac.ConstraintValue, diff --git a/rest-api/api/pkg/api/handler/stats_test.go b/rest-api/api/pkg/api/handler/stats_test.go index d65b07e827..22b7a23554 100644 --- a/rest-api/api/pkg/api/handler/stats_test.go +++ b/rest-api/api/pkg/api/handler/stats_test.go @@ -522,7 +522,7 @@ func TestStatsHandlers(t *testing.T) { assert.Equal(t, 0, gpuLStats.UsedMachineStats.Unknown) assert.Equal(t, 2, len(gpuLStats.Tenants)) // alpha, beta - gpuLTenantByName := make(map[string]model.APIMachineInstanceTypeTenant) + gpuLTenantByName := make(map[string]model.APIMachineInstanceTypeTenantStats) for _, tn := range gpuLStats.Tenants { gpuLTenantByName[tn.Name] = tn } @@ -563,7 +563,7 @@ func TestStatsHandlers(t *testing.T) { assert.Equal(t, 1, gpuSStats.UsedMachineStats.Initializing) assert.Equal(t, 3, len(gpuSStats.Tenants)) // alpha, beta, gamma - gpuSTenantByName := make(map[string]model.APIMachineInstanceTypeTenant) + gpuSTenantByName := make(map[string]model.APIMachineInstanceTypeTenantStats) for _, tn := range gpuSStats.Tenants { gpuSTenantByName[tn.Name] = tn } diff --git a/rest-api/api/pkg/api/handler/subnet_test.go b/rest-api/api/pkg/api/handler/subnet_test.go index d78d190b0d..485675f2ea 100644 --- a/rest-api/api/pkg/api/handler/subnet_test.go +++ b/rest-api/api/pkg/api/handler/subnet_test.go @@ -213,9 +213,6 @@ func TestSubnetHandler_Create(t *testing.T) { okBody, err := json.Marshal(model.APISubnetCreateRequest{Name: "ok1", Description: cutil.GetPtr(""), VpcID: vpc1.ID.String(), IPv4BlockID: cutil.GetPtr(ipb1.ID.String()), PrefixLength: prefixLen}) assert.Nil(t, err) - errBodyIPBlockSize, err := json.Marshal(model.APISubnetCreateRequest{Name: "okipb", Description: cutil.GetPtr(""), VpcID: vpc1.ID.String(), IPv4BlockID: cutil.GetPtr(ipb1.ID.String()), IPBlockSize: &prefixLen}) - assert.Nil(t, err) - prefixLen = 16 okBodyFG, err := json.Marshal(model.APISubnetCreateRequest{Name: "okFG", Description: cutil.GetPtr(""), VpcID: vpc1.ID.String(), IPv4BlockID: cutil.GetPtr(ipbFG.ID.String()), PrefixLength: prefixLen}) assert.Nil(t, err) @@ -407,13 +404,6 @@ func TestSubnetHandler_Create(t *testing.T) { expectedStatus: http.StatusCreated, expectedGateway: "192.168.0.1", expectedPrefix: "192.168.0.0", - }, { - name: "error when ipBlockSize is specified", - reqOrgName: tnOrg1, - reqBody: string(errBodyIPBlockSize), - user: tnu, - expectedErr: true, - expectedStatus: http.StatusBadRequest, }, { name: "success case with Full Grant", diff --git a/rest-api/api/pkg/api/handler/util/common/common.go b/rest-api/api/pkg/api/handler/util/common/common.go index 2d3f471538..5ff0859e5f 100644 --- a/rest-api/api/pkg/api/handler/util/common/common.go +++ b/rest-api/api/pkg/api/handler/util/common/common.go @@ -607,7 +607,7 @@ func GetAndValidateQueryRelations(qParams url.Values, relatedEntities map[string } // GetAllInstanceTypeAllocationStats is a utility function to get all instance type allocation stats -func GetAllInstanceTypeAllocationStats(ctx context.Context, dbSession *cdb.Session, siteID *uuid.UUID, instanceTypeIDs []uuid.UUID, logger zerolog.Logger, tenantID *uuid.UUID) (map[uuid.UUID]*cam.APIAllocationStats, *cutil.APIError) { +func GetAllInstanceTypeAllocationStats(ctx context.Context, dbSession *cdb.Session, siteID *uuid.UUID, instanceTypeIDs []uuid.UUID, logger zerolog.Logger, tenantID *uuid.UUID) (map[uuid.UUID]*cam.APIInstanceTypeAllocationStats, *cutil.APIError) { var instances []cdbm.Instance var serr error @@ -704,10 +704,10 @@ func GetAllInstanceTypeAllocationStats(ctx context.Context, dbSession *cdb.Sessi } // Build allocation stats map for each instance type ID with total, used, max allocatable - allocAPIStatsMap := make(map[uuid.UUID]*cam.APIAllocationStats) + allocAPIStatsMap := make(map[uuid.UUID]*cam.APIInstanceTypeAllocationStats) for _, instanceTypeID := range instanceTypeIDs { - aas := &cam.APIAllocationStats{} + aas := &cam.APIInstanceTypeAllocationStats{} aas.Assigned = instanceTypeIDToMachinesMap[instanceTypeID] aas.Total = instanceTypeToSumConstraintValue[instanceTypeID] @@ -739,7 +739,7 @@ func GetAllInstanceTypeAllocationStats(ctx context.Context, dbSession *cdb.Sessi } // GetInstanceTypeAllocationStats is a utility function to get the allocation stats from allocation constraints and instances based on instancetype -func GetInstanceTypeAllocationStats(ctx context.Context, dbSession *cdb.Session, logger zerolog.Logger, it cdbm.InstanceType, tenantID *uuid.UUID) (*cam.APIAllocationStats, *cutil.APIError) { +func GetInstanceTypeAllocationStats(ctx context.Context, dbSession *cdb.Session, logger zerolog.Logger, it cdbm.InstanceType, tenantID *uuid.UUID) (*cam.APIInstanceTypeAllocationStats, *cutil.APIError) { mstats, err := GetAllInstanceTypeAllocationStats(ctx, dbSession, it.SiteID, []uuid.UUID{it.ID}, logger, tenantID) if err != nil { return nil, err diff --git a/rest-api/api/pkg/api/handler/util/common/common_test.go b/rest-api/api/pkg/api/handler/util/common/common_test.go index aacb306685..5c9358ade0 100644 --- a/rest-api/api/pkg/api/handler/util/common/common_test.go +++ b/rest-api/api/pkg/api/handler/util/common/common_test.go @@ -1443,7 +1443,7 @@ func TestGetInstanceTypeAllocationStats(t *testing.T) { it *cdbm.InstanceType tnas []cdbm.Allocation instances []cdbm.Instance - expectStats *cam.APIAllocationStats + expectStats *cam.APIInstanceTypeAllocationStats expectErr bool logger zerolog.Logger }{ @@ -1452,7 +1452,7 @@ func TestGetInstanceTypeAllocationStats(t *testing.T) { tenantID: cutil.GetPtr(tn1.ID), instances: tn1inss, it: it1, - expectStats: &cam.APIAllocationStats{ + expectStats: &cam.APIInstanceTypeAllocationStats{ Assigned: len(m1s), Total: alc1.ConstraintValue, Used: len(tn1inss), @@ -1467,7 +1467,7 @@ func TestGetInstanceTypeAllocationStats(t *testing.T) { tenantID: cutil.GetPtr(tn2.ID), instances: tn2inss, it: it1, - expectStats: &cam.APIAllocationStats{ + expectStats: &cam.APIInstanceTypeAllocationStats{ Assigned: len(m1s), Total: alc2.ConstraintValue, Used: len(tn2inss), @@ -1482,7 +1482,7 @@ func TestGetInstanceTypeAllocationStats(t *testing.T) { tenantID: cutil.GetPtr(tn3.ID), instances: tn3inss, it: it1, - expectStats: &cam.APIAllocationStats{ + expectStats: &cam.APIInstanceTypeAllocationStats{ Assigned: len(m1s), Total: alc3.ConstraintValue, Used: len(tn3inss), @@ -1497,7 +1497,7 @@ func TestGetInstanceTypeAllocationStats(t *testing.T) { tenantID: nil, instances: it1inss, it: it1, - expectStats: &cam.APIAllocationStats{ + expectStats: &cam.APIInstanceTypeAllocationStats{ Assigned: len(m1s), Total: alc1.ConstraintValue + alc2.ConstraintValue + alc3.ConstraintValue, Used: len(it1inss), @@ -1512,7 +1512,7 @@ func TestGetInstanceTypeAllocationStats(t *testing.T) { tenantID: nil, instances: []cdbm.Instance{}, it: it2, - expectStats: &cam.APIAllocationStats{ + expectStats: &cam.APIInstanceTypeAllocationStats{ Assigned: len(m2s), Total: 0, Used: 0, diff --git a/rest-api/api/pkg/api/model/allocationconstraint.go b/rest-api/api/pkg/api/model/allocationconstraint.go index 7e58c0e8b8..e5fc8006fb 100644 --- a/rest-api/api/pkg/api/model/allocationconstraint.go +++ b/rest-api/api/pkg/api/model/allocationconstraint.go @@ -7,6 +7,7 @@ import ( "time" "github.com/NVIDIA/infra-controller/rest-api/api/pkg/api/model/util" + cutil "github.com/NVIDIA/infra-controller/rest-api/common/pkg/util" cdbm "github.com/NVIDIA/infra-controller/rest-api/db/pkg/db/model" validation "github.com/go-ozzo/ozzo-validation/v4" validationis "github.com/go-ozzo/ozzo-validation/v4/is" @@ -19,6 +20,21 @@ const ( ValidationErrorAllocationConstraintConstraintType = "Constraint Type should be Reserved, OnDemand or Preemptible" ) +var ( + // resourceTypeIDDeprecationTime is the time when the ResourceTypeID attribute will be no longer be available in the API + resourceTypeIDDeprecationTime, _ = time.Parse(time.RFC1123, "Thu, 09 Jul 2026 00:00:00 UTC") + + // resourceTypeIDDeprecations is a list of deprecated entities for the ResourceTypeID attribute + allocationConstraintDeprecations = []DeprecatedEntity{ + { + OldValue: "ResourceTypeID", + NewValue: cutil.GetPtr("resourceTypeId"), + Type: DeprecationTypeAttribute, + TakeActionBy: resourceTypeIDDeprecationTime, + }, + } +) + // APIAllocationConstraintCreateRequest captures user request to create a new Allocation Constraint type APIAllocationConstraintCreateRequest struct { // ResourceType is the type of the resource for the Allocation Constraint @@ -82,8 +98,10 @@ type APIAllocationConstraint struct { AllocationID string `json:"allocationId"` // ResourceType is the type of the Resource ResourceType string `json:"resourceType"` + // ResourceTypeIDDeprecated is the deprecated improperly cased attribute + ResourceTypeIDDeprecated *string `json:"ResourceTypeID,omitempty"` // ResourceTypeID is the ID of the resource corresponding to the Allocation Constraint - ResourceTypeID string `bun:"resource_type_id,type:uuid,notnull"` + ResourceTypeID string `json:"resourceTypeId"` // ConstraintType is the type of the Allocation Constraint ConstraintType string `json:"constraintType"` // ConstraintValue is the value of the Allocation Constraint @@ -98,6 +116,8 @@ type APIAllocationConstraint struct { Created time.Time `json:"created"` // UpdatedAt indicates the ISO datetime string for when the entity was last updated Updated time.Time `json:"updated"` + // Deprecations is the list of deprecations for the Allocation Constraint + Deprecations []APIDeprecation `json:"deprecations,omitempty"` } // NewAPIAllocationConstraint accepts a DB layer Allocation Constraint object and returns an API object @@ -122,5 +142,13 @@ func NewAPIAllocationConstraint(cdbm *cdbm.AllocationConstraint, dbinstp *cdbm.I apiac.IPBlock = NewAPIIPBlockSummary(dbipb) } + if time.Now().Before(resourceTypeIDDeprecationTime) { + apiac.ResourceTypeIDDeprecated = cutil.GetPtr(cdbm.ResourceTypeID.String()) + } + + for _, deprecation := range allocationConstraintDeprecations { + apiac.Deprecations = append(apiac.Deprecations, NewAPIDeprecation(deprecation)) + } + return apiac } diff --git a/rest-api/api/pkg/api/model/deprecation.go b/rest-api/api/pkg/api/model/deprecation.go index dec90d2f81..2048f48bae 100644 --- a/rest-api/api/pkg/api/model/deprecation.go +++ b/rest-api/api/pkg/api/model/deprecation.go @@ -36,7 +36,7 @@ type APIDeprecation struct { QueryParam *string `json:"queryParam,omitempty"` // Endpoint denotes the endpoint that is deprecated (optional) Endpoint *string `json:"endpoint,omitempty"` - // ReplacedBy denotes the field that replaces the deprecated field + // ReplacedBy denotes the field that replaces the deprecated field (optional) ReplacedBy *string `json:"replacedBy,omitempty"` // TakeActionBy indicates the ISO datetime string for when the deprecated field will no longer be accepted or available in the API TakeActionBy time.Time `json:"takeActionBy"` diff --git a/rest-api/api/pkg/api/model/instancetype.go b/rest-api/api/pkg/api/model/instancetype.go index 8c0f404abc..fb9fa4babd 100644 --- a/rest-api/api/pkg/api/model/instancetype.go +++ b/rest-api/api/pkg/api/model/instancetype.go @@ -133,7 +133,7 @@ type APIInstanceType struct { // MachineInstanceTypes is the list of machines that are associated to this Instance Type MachineInstanceTypes []APIMachineInstanceType `json:"machineInstanceTypes,omitempty"` // AllocationStats is the stats of allocation that are associated to this Instance Type - AllocationStats *APIAllocationStats `json:"allocationStats,omitempty"` + AllocationStats *APIInstanceTypeAllocationStats `json:"allocationStats,omitempty"` // Deprecations is the list of deprecation messages denoting fields which are being deprecated Deprecations []APIDeprecation `json:"deprecations,omitempty"` // Status is the status of the Instance Type @@ -147,7 +147,7 @@ type APIInstanceType struct { } // NewAPIInstanceType accepts a DB layer Instance Type object returns an API layer object -func NewAPIInstanceType(dbit *cdbm.InstanceType, dbsds []cdbm.StatusDetail, mcs []cdbm.MachineCapability, mit []cdbm.MachineInstanceType, aas *APIAllocationStats) *APIInstanceType { +func NewAPIInstanceType(dbit *cdbm.InstanceType, dbsds []cdbm.StatusDetail, mcs []cdbm.MachineCapability, mit []cdbm.MachineInstanceType, aas *APIInstanceTypeAllocationStats) *APIInstanceType { if dbit == nil { return nil } @@ -223,7 +223,7 @@ func NewAPIInstanceTypeSummary(dbist *cdbm.InstanceType) *APIInstanceTypeSummary } // APIAllocationStats is the data structure to capture API representation of an InstanceType allocation stats -type APIAllocationStats struct { +type APIInstanceTypeAllocationStats struct { // Assigned is the total number of Machines assigned to this Instance Type Assigned int `json:"assigned"` // Total is the total number of Machines allocated to different Tenants for this Instance Type diff --git a/rest-api/api/pkg/api/model/ipblock.go b/rest-api/api/pkg/api/model/ipblock.go index 2c37330c46..1899dacc96 100644 --- a/rest-api/api/pkg/api/model/ipblock.go +++ b/rest-api/api/pkg/api/model/ipblock.go @@ -46,9 +46,6 @@ type APIIPBlockCreateRequest struct { RoutingType string `json:"routingType"` // Prefix is the prefix of the network in CIDR notation Prefix string `json:"prefix"` - // BlockSize is the legacy field for prefixLength - // NOTE: This field has been deprecated - BlockSize *int `json:"blockSize"` // PrefixLength is the length of the prefix PrefixLength int `json:"prefixLength"` // ProtocolVersion is the version of the ip network ipv4 or ipv6 diff --git a/rest-api/api/pkg/api/model/ipblock_test.go b/rest-api/api/pkg/api/model/ipblock_test.go index b7158e2d35..5066f3a4a9 100644 --- a/rest-api/api/pkg/api/model/ipblock_test.go +++ b/rest-api/api/pkg/api/model/ipblock_test.go @@ -94,11 +94,6 @@ func TestAPIIPBlockCreateRequest_Validate(t *testing.T) { obj: APIIPBlockCreateRequest{Name: "ab", Description: cutil.GetPtr("abc"), SiteID: uuid.New().String(), RoutingType: cdbm.IPBlockRoutingTypePublic, Prefix: "192.164.10.0", PrefixLength: prefLen, ProtocolVersion: "ipv4"}, expectErr: true, }, - { - desc: "error when neither BlockSize is specified", - obj: APIIPBlockCreateRequest{Name: "ab", Description: cutil.GetPtr("abc"), SiteID: uuid.New().String(), RoutingType: cdbm.IPBlockRoutingTypePublic, Prefix: "192.164.10.0", BlockSize: cutil.GetPtr(28), ProtocolVersion: cdbm.IPBlockProtocolVersionV4}, - expectErr: true, - }, { desc: "error when prefixLength is not specified", obj: APIIPBlockCreateRequest{Name: "ab", Description: cutil.GetPtr("abc"), SiteID: uuid.New().String(), RoutingType: cdbm.IPBlockRoutingTypePublic, Prefix: "192.164.10.0", ProtocolVersion: cdbm.IPBlockProtocolVersionV4}, diff --git a/rest-api/api/pkg/api/model/networksecuritygroup.go b/rest-api/api/pkg/api/model/networksecuritygroup.go index 2d1794c36a..260ca700e4 100644 --- a/rest-api/api/pkg/api/model/networksecuritygroup.go +++ b/rest-api/api/pkg/api/model/networksecuritygroup.go @@ -105,6 +105,21 @@ var NetworkSecurityGroupRuleAPIPropagationStatusFromProtobufPropagationStatus = cwssaws.NetworkSecurityGroupPropagationStatus_NSG_PROP_STATUS_ERROR: APINetworkSecurityGroupPropagationStatusError, } +var ( + // Time when the NetworkSecurityGroup propagation object_id attribute will be deprecated + networkSecurityGroupPropagationObjectIDDeprecationTime, _ = time.Parse(time.RFC1123, "Thu, 09 Jul 2026 00:00:00 UTC") + + // Deprecations for the NetworkSecurityGroup model + networkSecurityGroupPropagationDetailsDeprecations = []DeprecatedEntity{ + { + OldValue: "object_id", + NewValue: cutil.GetPtr("objectId"), + Type: DeprecationTypeAttribute, + TakeActionBy: networkSecurityGroupPropagationObjectIDDeprecationTime, + }, + } +) + // APINetworkSecurityGroupCreateRequest is the data structure to capture instance request to create a new NetworkSecurityGroup type APINetworkSecurityGroupCreateRequest struct { // Name is the name of the NetworkSecurityGroup @@ -117,7 +132,7 @@ type APINetworkSecurityGroupCreateRequest struct { Rules []APINetworkSecurityGroupRule `json:"rules"` // StatefulEgress defines whether a NetworkSecurityGroup's egress rules will be automatically stateful StatefulEgress bool `json:"statefulEgress"` - // Labels to be associted with the NetworkSecurityGroup + // Labels to be associated with the NetworkSecurityGroup Labels map[string]string `json:"labels"` } @@ -624,7 +639,9 @@ func NewAPINetworkSecurityGroupSummary(dbsg *cdbm.NetworkSecurityGroup) *APINetw type APINetworkSecurityGroupPropagationDetails struct { // The ID of the object (VPC/Instance/etc) for these details - ObjectID string `json:"object_id"` + ObjectIDDeprecated *string `json:"object_id,omitempty"` + // The ID of the object (VPC/Instance/etc) for these details + ObjectID string `json:"objectId"` // The detailed propagation status that was // actually returned from NICo DetailedStatus string `json:"detailedStatus"` @@ -640,6 +657,8 @@ type APINetworkSecurityGroupPropagationDetails struct { // IDs of any instances associated with the ObjectID that have // not yet updated their NSG rules. UnpropagatedInstanceIds []string `json:"unpropagatedInstanceIds"` + // Deprecations is the list of deprecations for the NetworkSecurityGroupPropagationDetails + Deprecations []APIDeprecation `json:"deprecations,omitempty"` } func NewAPINetworkSecurityGroupPropagationDetails(s *cdbm.NetworkSecurityGroupPropagationDetails) *APINetworkSecurityGroupPropagationDetails { @@ -654,6 +673,10 @@ func NewAPINetworkSecurityGroupPropagationDetails(s *cdbm.NetworkSecurityGroupPr UnpropagatedInstanceIds: s.NetworkSecurityGroupPropagationObjectStatus.UnpropagatedInstanceIds, } + if time.Now().Before(networkSecurityGroupPropagationObjectIDDeprecationTime) { + details.ObjectIDDeprecated = cutil.GetPtr(s.NetworkSecurityGroupPropagationObjectStatus.Id) + } + status, found := NetworkSecurityGroupRuleAPIPropagationDetailedStatusFromProtobufPropagationStatus[s.Status] if !found { // We could return an error, but we should probably _not_ fail @@ -675,5 +698,9 @@ func NewAPINetworkSecurityGroupPropagationDetails(s *cdbm.NetworkSecurityGroupPr details.Status = status + for _, deprecation := range networkSecurityGroupPropagationDetailsDeprecations { + details.Deprecations = append(details.Deprecations, NewAPIDeprecation(deprecation)) + } + return details } diff --git a/rest-api/api/pkg/api/model/nvlinkinterface.go b/rest-api/api/pkg/api/model/nvlinkinterface.go index 280d2a54bb..652ebfcd59 100644 --- a/rest-api/api/pkg/api/model/nvlinkinterface.go +++ b/rest-api/api/pkg/api/model/nvlinkinterface.go @@ -13,6 +13,21 @@ import ( cdbm "github.com/NVIDIA/infra-controller/rest-api/db/pkg/db/model" ) +var ( + // Time when nvLinklogicalPartitionId attribute will be deprecated + nvLinkLogicalPartitionIDDeprecationTime, _ = time.Parse(time.RFC1123, "Thu, 09 Jul 2026 00:00:00 UTC") + + // Deprecations for the NVLinkInterface model + nvLinkLogicalPartitionIDDeprecations = []DeprecatedEntity{ + { + OldValue: "nvLinklogicalPartitionId", + NewValue: cutil.GetPtr("nvLinkLogicalPartitionId"), + Type: DeprecationTypeAttribute, + TakeActionBy: nvLinkLogicalPartitionIDDeprecationTime, + }, + } +) + // APINVLinkInterfaceCreateRequest is the data structure to capture user request to create a new NVLinkInterface type APINVLinkInterfaceCreateOrUpdateRequest struct { // NVLinkLogicalPartitionID is the ID of the NVLinkLogicalPartition @@ -47,8 +62,10 @@ type APINVLinkInterface struct { InstanceID string `json:"instanceId"` // Instance is the summary of the Instance Instance *APIInstanceSummary `json:"instance,omitempty"` + // NVLinkLogicalPartitionIDDeprecated is the ID of the associated NVLinkLogicalPartition (deprecated) + NVLinkLogicalPartitionIDDeprecated *string `json:"nvLinklogicalPartitionId,omitempty"` // NVLinkLogicalPartitionID is the ID of the associated NVLinkLogicalPartition - NVLinkLogicalPartitionID string `json:"nvLinklogicalPartitionId"` + NVLinkLogicalPartitionID string `json:"nvLinkLogicalPartitionId"` // NVLinkLogicalPartition is the summary of the NVLinkLogicalPartition NVLinkLogicalPartition *APINVLinkLogicalPartitionSummary `json:"nvLinkLogicalPartition,omitempty"` // NVLinkDomainID is the id of the physical NVLink domain that the interface is attached to @@ -63,6 +80,8 @@ type APINVLinkInterface struct { Created time.Time `json:"created"` // Updated is the date and time the entity was last updated Updated time.Time `json:"updated"` + // Deprecations is the list of deprecations for the NVLinkInterface + Deprecations []APIDeprecation `json:"deprecations,omitempty"` } // NewAPINVLinkInterface creates a new APINVLinkInterface @@ -93,6 +112,14 @@ func NewAPINVLinkInterface(dbnvli *cdbm.NVLinkInterface) *APINVLinkInterface { apiNVLinkInterface.NVLinkLogicalPartition = NewAPINVLinkLogicalPartitionSummary(dbnvli.NVLinkLogicalPartition) } + if time.Now().Before(nvLinkLogicalPartitionIDDeprecationTime) { + apiNVLinkInterface.NVLinkLogicalPartitionIDDeprecated = cutil.GetPtr(dbnvli.NVLinkLogicalPartitionID.String()) + } + + for _, deprecation := range nvLinkLogicalPartitionIDDeprecations { + apiNVLinkInterface.Deprecations = append(apiNVLinkInterface.Deprecations, NewAPIDeprecation(deprecation)) + } + return apiNVLinkInterface } diff --git a/rest-api/api/pkg/api/model/nvlinkinterface_test.go b/rest-api/api/pkg/api/model/nvlinkinterface_test.go index 1bf20d47e1..8a5ba2fdba 100644 --- a/rest-api/api/pkg/api/model/nvlinkinterface_test.go +++ b/rest-api/api/pkg/api/model/nvlinkinterface_test.go @@ -5,7 +5,6 @@ package model import ( "encoding/json" - "reflect" "testing" "time" @@ -54,9 +53,14 @@ func TestNewAPINVLinkInterface(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if got := NewAPINVLinkInterface(tt.args.dbnvli); !reflect.DeepEqual(got, tt.want) { - t.Errorf("NewAPINVLinkInterface() = %v, want %v", got, tt.want) - } + got := NewAPINVLinkInterface(tt.args.dbnvli) + assert.Equal(t, tt.want.ID, got.ID) + assert.Equal(t, tt.want.InstanceID, got.InstanceID) + assert.Equal(t, tt.want.NVLinkLogicalPartitionID, got.NVLinkLogicalPartitionID) + assert.Equal(t, tt.want.DeviceInstance, got.DeviceInstance) + assert.Equal(t, tt.want.Status, got.Status) + assert.Equal(t, tt.want.Created, got.Created) + assert.Equal(t, tt.want.Updated, got.Updated) }) } } diff --git a/rest-api/api/pkg/api/model/stats.go b/rest-api/api/pkg/api/model/stats.go index 89beac9a9f..7053aa2530 100644 --- a/rest-api/api/pkg/api/model/stats.go +++ b/rest-api/api/pkg/api/model/stats.go @@ -83,11 +83,11 @@ type APITenantInstanceTypeStatsEntry struct { // MaxAllocatable is the number of Ready Machines of this Instance Type available for additional allocation to Tenants MaxAllocatable int `json:"maxAllocatable"` // Allocations is the list of individual allocations for this instance type within the tenant - Allocations []APITenantInstanceTypeAllocation `json:"allocations"` + Allocations []APITenantInstanceTypeAllocationStats `json:"allocations"` } // APITenantInstanceTypeAllocation represents a single allocation's stats for an instance type -type APITenantInstanceTypeAllocation struct { +type APITenantInstanceTypeAllocationStats struct { // ID is the unique identifier for the Allocation ID string `json:"id"` // Name is the name of the Allocation @@ -161,11 +161,11 @@ type APIMachineInstanceTypeStats struct { // that are currently associated with Tenant Instances UsedMachineStats APIMachineStatusBreakdown `json:"usedMachineStats"` // Tenants is the per-tenant breakdown for this instance type - Tenants []APIMachineInstanceTypeTenant `json:"tenants"` + Tenants []APIMachineInstanceTypeTenantStats `json:"tenants"` } // APIMachineInstanceTypeTenant represents per-tenant allocation stats within an instance type -type APIMachineInstanceTypeTenant struct { +type APIMachineInstanceTypeTenantStats struct { // ID is the unique identifier for the Tenant ID string `json:"id"` // Name is the name of the Tenant @@ -175,11 +175,11 @@ type APIMachineInstanceTypeTenant struct { // UsedMachineStats captures the usage status of machines for this tenant and instance type UsedMachineStats APIMachineStatusBreakdown `json:"usedMachineStats"` // Allocations is the list of individual allocations for this tenant and instance type - Allocations []APIMachineInstanceTypeTenantAllocation `json:"allocations"` + Allocations []APIMachineInstanceTypeTenantAllocationStats `json:"allocations"` } // APIMachineInstanceTypeTenantAllocation represents a single allocation within a tenant's instance type stats -type APIMachineInstanceTypeTenantAllocation struct { +type APIMachineInstanceTypeTenantAllocationStats struct { // ID is the unique identifier for the Allocation ID string `json:"id"` // Name is the name of the Allocation @@ -213,19 +213,19 @@ func NewAPIMachineInstanceTypeStats( // ready machines minus those already reserved (allocated but not yet in use) maxAlloc := max(0, assignedStats.Ready-(allocated-used.Total)) - tenantMap := make(map[uuid.UUID]*APIMachineInstanceTypeTenant) + tenantMap := make(map[uuid.UUID]*APIMachineInstanceTypeTenantStats) for _, ac := range itConstraints { tID := ac.Allocation.TenantID tenantEntry, exists := tenantMap[tID] if !exists { - tenantEntry = &APIMachineInstanceTypeTenant{ + tenantEntry = &APIMachineInstanceTypeTenantStats{ ID: tID.String(), Name: ac.Allocation.Tenant.Org, } tenantMap[tID] = tenantEntry } tenantEntry.Allocated += ac.ConstraintValue - tenantEntry.Allocations = append(tenantEntry.Allocations, APIMachineInstanceTypeTenantAllocation{ + tenantEntry.Allocations = append(tenantEntry.Allocations, APIMachineInstanceTypeTenantAllocationStats{ ID: ac.Allocation.ID.String(), Name: ac.Allocation.Name, Allocated: ac.ConstraintValue, @@ -238,7 +238,7 @@ func NewAPIMachineInstanceTypeStats( } } - tenants := lo.MapToSlice(tenantMap, func(_ uuid.UUID, t *APIMachineInstanceTypeTenant) APIMachineInstanceTypeTenant { + tenants := lo.MapToSlice(tenantMap, func(_ uuid.UUID, t *APIMachineInstanceTypeTenantStats) APIMachineInstanceTypeTenantStats { return *t }) diff --git a/rest-api/api/pkg/api/model/stats_test.go b/rest-api/api/pkg/api/model/stats_test.go index 45983d0199..79797964a6 100644 --- a/rest-api/api/pkg/api/model/stats_test.go +++ b/rest-api/api/pkg/api/model/stats_test.go @@ -125,7 +125,7 @@ func TestAPIMachineInstanceTypeStats_JSON(t *testing.T) { UsedMachineStats: APIMachineStatusBreakdown{ Total: 4, InUse: 2, Error: 1, Maintenance: 1, }, - Tenants: []APIMachineInstanceTypeTenant{ + Tenants: []APIMachineInstanceTypeTenantStats{ { ID: "t-alpha", Name: "alpha-org", @@ -133,7 +133,7 @@ func TestAPIMachineInstanceTypeStats_JSON(t *testing.T) { UsedMachineStats: APIMachineStatusBreakdown{ Total: 3, InUse: 2, Error: 1, }, - Allocations: []APIMachineInstanceTypeTenantAllocation{ + Allocations: []APIMachineInstanceTypeTenantAllocationStats{ {ID: "a-1", Name: "training-reserved", Allocated: 4}, {ID: "a-2", Name: "inference-ondemand", Allocated: 2}, }, @@ -145,7 +145,7 @@ func TestAPIMachineInstanceTypeStats_JSON(t *testing.T) { UsedMachineStats: APIMachineStatusBreakdown{ Total: 1, Maintenance: 1, }, - Allocations: []APIMachineInstanceTypeTenantAllocation{ + Allocations: []APIMachineInstanceTypeTenantAllocationStats{ {ID: "a-3", Name: "simulation-pool", Allocated: 1}, }, }, @@ -233,7 +233,7 @@ func TestAPITenantInstanceTypeStats_JSON(t *testing.T) { Total: 3, InUse: 2, Error: 1, }, MaxAllocatable: 2, - Allocations: []APITenantInstanceTypeAllocation{ + Allocations: []APITenantInstanceTypeAllocationStats{ {ID: "a-1", Name: "training-reserved", Total: 4}, {ID: "a-2", Name: "inference-ondemand", Total: 2}, }, @@ -246,7 +246,7 @@ func TestAPITenantInstanceTypeStats_JSON(t *testing.T) { Total: 2, InUse: 2, }, MaxAllocatable: 1, - Allocations: []APITenantInstanceTypeAllocation{ + Allocations: []APITenantInstanceTypeAllocationStats{ {ID: "a-1", Name: "training-reserved", Total: 3}, }, }, diff --git a/rest-api/api/pkg/api/model/subnet.go b/rest-api/api/pkg/api/model/subnet.go index 874186c1c0..94f2e312c8 100644 --- a/rest-api/api/pkg/api/model/subnet.go +++ b/rest-api/api/pkg/api/model/subnet.go @@ -39,9 +39,6 @@ type APISubnetCreateRequest struct { IPv4BlockID *string `json:"ipv4BlockId"` // IPv6BlockID is the derived IPv6BlockId for the tenant from an allocation IPv6BlockID *string `json:"ipv6BlockId"` - // IPBlockSize the block size for the Subnet - // NOTE: This field has been deprecated - IPBlockSize *int `json:"ipBlockSize"` // PrefixLength is the length of the prefix PrefixLength int `json:"prefixLength"` } diff --git a/rest-api/api/pkg/api/model/tenant.go b/rest-api/api/pkg/api/model/tenant.go index 18f47f51a7..f39e5983ad 100644 --- a/rest-api/api/pkg/api/model/tenant.go +++ b/rest-api/api/pkg/api/model/tenant.go @@ -28,7 +28,8 @@ type APITenant struct { // CreatedAt indicates the ISO datetime string for when the entity was created Created time.Time `json:"created"` // UpdatedAt indicates the ISO datetime string for when the entity was last updated - Updated time.Time `json:"updated"` + Updated time.Time `json:"updated"` + // Capabilities describes tenant-level feature flags Capabilities *APITenantCapabilities `json:"capabilities"` } diff --git a/rest-api/api/pkg/api/model/tenantaccount.go b/rest-api/api/pkg/api/model/tenantaccount.go index 0fc59efc0e..da0191739c 100644 --- a/rest-api/api/pkg/api/model/tenantaccount.go +++ b/rest-api/api/pkg/api/model/tenantaccount.go @@ -18,6 +18,29 @@ const ( validationErrorTenantIDOrOrgRequired = "Either Tenant ID or Tenant Org must be specified" ) +var ( + // Time when the AccountNumber, SubscriptionID, and SubscriptionTier attributes will be deprecated + accountNumberSubscriptionIDTierDeprecationTime, _ = time.Parse(time.RFC1123, "Thu, 09 Jul 2026 00:00:00 UTC") + + tenantAccountDeprecations = []DeprecatedEntity{ + { + OldValue: "accountNumber", + Type: DeprecationTypeAttribute, + TakeActionBy: accountNumberSubscriptionIDTierDeprecationTime, + }, + { + OldValue: "subscriptionId", + Type: DeprecationTypeAttribute, + TakeActionBy: accountNumberSubscriptionIDTierDeprecationTime, + }, + { + OldValue: "subscriptionTier", + Type: DeprecationTypeAttribute, + TakeActionBy: accountNumberSubscriptionIDTierDeprecationTime, + }, + } +) + // APITenantAccountCreateRequest is the data structure to capture user request to create a new Tenant type APITenantAccountCreateRequest struct { // InfrastructureProviderID is the ID of the infrastructureProvider in the org @@ -62,7 +85,7 @@ type APITenantAccount struct { // ID is the unique UUID v4 identifier for the TenantAccount ID string `json:"id"` // AccountNumber is the account number of the TenantAccount - AccountNumber string `json:"accountNumber"` + AccountNumberDeprecated *string `json:"accountNumber,omitempty"` // InfrastructureProviderID is the ID of the InfrastructureProvider InfrastructureProviderID string `json:"infrastructureProviderId"` // InfrastructureProvider is the summary of the InfrastructureProvider @@ -70,9 +93,9 @@ type APITenantAccount struct { // InfrastructureProviderOrg is the org of the InfrastructureProvider InfrastructureProviderOrg string `json:"infrastructureProviderOrg"` // SubscriptionID is the ID of the subscription - SubscriptionID *string `json:"subscriptionId"` + SubscriptionIDDeprecated *string `json:"subscriptionId,omitempty"` // SubscriptionTier is the tier of the subscription - SubscriptionTier *string `json:"subscriptionTier"` + SubscriptionTierDeprecated *string `json:"subscriptionTier,omitempty"` // TenantID is the ID of the Tenant TenantID *string `json:"tenantId"` // Tenant is the summary of the Tenant @@ -91,6 +114,8 @@ type APITenantAccount struct { Created time.Time `json:"created"` // UpdatedAt indicates the ISO datetime string for when the entity was last updated Updated time.Time `json:"updated"` + // Deprecations is the list of deprecations for the TenantAccount + Deprecations []APIDeprecation `json:"deprecations"` } // APITenantAccountStats is a data structure to capture information about a TenantAccount stats at the API layer @@ -111,11 +136,8 @@ type APITenantAccountStats struct { func NewAPITenantAccount(dbta *cdbm.TenantAccount, dbsds []cdbm.StatusDetail, allocationCount int) *APITenantAccount { apiTenantAccount := APITenantAccount{ ID: dbta.ID.String(), - AccountNumber: dbta.AccountNumber, InfrastructureProviderID: dbta.InfrastructureProviderID.String(), InfrastructureProviderOrg: dbta.InfrastructureProviderOrg, - SubscriptionID: dbta.SubscriptionID, - SubscriptionTier: dbta.SubscriptionTier, TenantOrg: dbta.TenantOrg, AllocationCount: allocationCount, Status: dbta.Status, @@ -143,5 +165,15 @@ func NewAPITenantAccount(dbta *cdbm.TenantAccount, dbsds []cdbm.StatusDetail, al apiTenantAccount.StatusHistory = append(apiTenantAccount.StatusHistory, NewAPIStatusDetail(dbsd)) } + if time.Now().Before(accountNumberSubscriptionIDTierDeprecationTime) { + apiTenantAccount.AccountNumberDeprecated = cutil.GetPtr(dbta.AccountNumber) + apiTenantAccount.SubscriptionIDDeprecated = dbta.SubscriptionID + apiTenantAccount.SubscriptionTierDeprecated = dbta.SubscriptionTier + } + + for _, deprecation := range tenantAccountDeprecations { + apiTenantAccount.Deprecations = append(apiTenantAccount.Deprecations, NewAPIDeprecation(deprecation)) + } + return &apiTenantAccount } diff --git a/rest-api/api/pkg/api/model/tenantaccount_test.go b/rest-api/api/pkg/api/model/tenantaccount_test.go index 368bcdaf02..99fa3045bc 100644 --- a/rest-api/api/pkg/api/model/tenantaccount_test.go +++ b/rest-api/api/pkg/api/model/tenantaccount_test.go @@ -4,7 +4,6 @@ package model import ( - "reflect" "testing" "time" @@ -112,13 +111,10 @@ func TestAPITenantAccountUpdateRequest_Validate(t *testing.T) { func TestAPITenantAccountNew(t *testing.T) { dbObj := &cdbm.TenantAccount{ ID: uuid.New(), - AccountNumber: "acctNum", TenantID: cutil.GetPtr(uuid.New()), TenantOrg: "testOrg", InfrastructureProviderID: uuid.New(), InfrastructureProviderOrg: "testIPOrg", - SubscriptionID: cutil.GetPtr(uuid.New().String()), - SubscriptionTier: cutil.GetPtr("someTier"), TenantContactID: cutil.GetPtr(uuid.New()), Status: "Invited", Created: cdb.GetCurTime(), @@ -134,13 +130,10 @@ func TestAPITenantAccountNew(t *testing.T) { } dbObj2 := &cdbm.TenantAccount{ ID: uuid.New(), - AccountNumber: "acctNum", TenantID: cutil.GetPtr(uuid.New()), TenantOrg: "testOrg", InfrastructureProviderID: uuid.New(), InfrastructureProviderOrg: "testIPOrg", - SubscriptionID: cutil.GetPtr(uuid.New().String()), - SubscriptionTier: cutil.GetPtr("someTier"), TenantContact: dbUsr, TenantContactID: cutil.GetPtr(uuid.New()), Status: "Invited", @@ -173,11 +166,8 @@ func TestAPITenantAccountNew(t *testing.T) { sdObj: dbsds, apiObj: &APITenantAccount{ ID: dbObj.ID.String(), - AccountNumber: dbObj.AccountNumber, InfrastructureProviderID: dbObj.InfrastructureProviderID.String(), InfrastructureProviderOrg: dbObj.InfrastructureProviderOrg, - SubscriptionID: dbObj.SubscriptionID, - SubscriptionTier: dbObj.SubscriptionTier, TenantID: cutil.GetPtr(dbObj.TenantID.String()), TenantOrg: dbObj.TenantOrg, TenantContact: nil, @@ -194,11 +184,8 @@ func TestAPITenantAccountNew(t *testing.T) { sdObj: dbsds, apiObj: &APITenantAccount{ ID: dbObj2.ID.String(), - AccountNumber: dbObj2.AccountNumber, InfrastructureProviderID: dbObj2.InfrastructureProviderID.String(), - InfrastructureProviderOrg: dbObj.InfrastructureProviderOrg, - SubscriptionID: dbObj2.SubscriptionID, - SubscriptionTier: dbObj2.SubscriptionTier, + InfrastructureProviderOrg: dbObj2.InfrastructureProviderOrg, TenantID: cutil.GetPtr(dbObj2.TenantID.String()), TenantOrg: dbObj.TenantOrg, TenantContact: apiUsr, @@ -213,7 +200,15 @@ func TestAPITenantAccountNew(t *testing.T) { for _, tc := range tests { t.Run(tc.desc, func(t *testing.T) { got := NewAPITenantAccount(tc.dbObj, tc.sdObj, 2) - assert.Equal(t, true, reflect.DeepEqual(got, tc.apiObj)) + assert.Equal(t, tc.apiObj.ID, got.ID) + assert.Equal(t, tc.apiObj.InfrastructureProviderID, got.InfrastructureProviderID) + assert.Equal(t, tc.apiObj.InfrastructureProviderOrg, got.InfrastructureProviderOrg) + assert.Equal(t, tc.apiObj.TenantID, got.TenantID) + assert.Equal(t, tc.apiObj.TenantOrg, got.TenantOrg) + assert.Equal(t, tc.apiObj.TenantContact, got.TenantContact) + assert.Equal(t, tc.apiObj.AllocationCount, got.AllocationCount) + assert.Equal(t, tc.apiObj.Status, got.Status) + assert.Equal(t, tc.apiObj.StatusHistory, got.StatusHistory) }) } } diff --git a/rest-api/docs/index.html b/rest-api/docs/index.html index 0716e03784..2763315bc9 100644 --- a/rest-api/docs/index.html +++ b/rest-api/docs/index.html @@ -702,7 +702,17 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Name of the Org

Responses

Response Schema: application/json
id
string <uuid>
org
string
orgDisplayName
string or null
created
string <date-time>
updated
string <date-time>

Responses

Response Schema: application/json
object (MachineCountByStatus)

Describes count of Machines in various statuses

-
total
integer
initializing
integer
reset
integer
assigned
integer
ready
integer
error
integer
decommissioned
integer
unknown
integer
object (IpBlockCountByStatus)

Describes counts of IP Blocks in various statuses

-
total
integer
pending
integer
provisioning
integer
ready
integer
deleting
integer
error
integer
object (TenantAccountCountByStatus)

Describes counts of Tenant Accounts in various statuses

-
total
integer
pending
integer
invited
integer
ready
integer
error
integer

Responses

Response Schema: application/json
object (InstanceCountByStatus)

Describes count of Instances in various statuses

-
total
integer
pending
integer
provisioning
integer
ready
integer
terminating
integer
error
integer
object (VpcCountByStatus)

Describes counts of VPCs in various statuses

-
total
integer
pending
integer
provisioning
integer
ready
integer
deleting
integer
error
integer
object (SubnetCountByStatus)

Describes counts of Subnets in various statuses

-
total
integer
pending
integer
provisioning
integer
ready
integer
deleting
integer
error
integer

Response samples

Content type
application/json
{
  • "instance": {
    },
  • "vpc": {
    },
  • "subnet": {
    }
}

Retrieve per-tenant instance type allocation stats for a site

https://nico-rest-api.nico.svc.cluster.local/v2/org/{org}/nico/tenant/current/stats

Response samples

Content type
application/json
{
  • "instance": {
    },
  • "vpc": {
    },
  • "subnet": {
    },
  • "tenantAccount": {
    }
}

Retrieve per-tenant instance type allocation stats for a site

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.

@@ -786,14 +882,34 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Organization name for the Tenant

orgDisplayName
string

Display name for the Tenant's organization

-
Array of objects (InstanceTypeStats)
Array
id
string <uuid>
name
string
allocated
integer
object (MachineStatusBreakdown)

Machine counts broken down by status

-
maxAllocatable
integer
Array of objects (AllocationStats)
Array of objects (InstanceTypeStats)

Instance Type statistics for this Tenant

+
Array
id
string <uuid>

Unique UUID v4 identifier for the Instance Type

+
name
string

Name of the Instance Type

+
allocated
integer

Number of Machines allocated for this Instance Type

+
object (MachineStatusBreakdown)

Usage statistics for Machines allocated to this Instance Type

+
maxAllocatable
integer

Maximum number of Machines of this Instance Type that can be allocated

+
Array of objects (TenantInstanceTypeAllocationStats)

Allocation statistics for this Instance Type

+

Response samples

Content type
application/json
[
  • {
    }
]

Tenant Account

Tenant Account connects a Tenant with an Infrastructure Provider. It represents/contains any information pertaining to their relationship.

+

Deprecation history:

+
    +
  • accountNumber, subscriptionId, and subscriptionTier attributes were deprecated and will be removed on July 9th, 2026 0:00 UTC. Please update your usage accordingly.
  • +

Retrieve all Tenant Accounts

Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB sc-cittYi iNuSsz eBjiEo hynizp">

OK

Response Headers
X-Pagination
string
Example: "{\"pageNumber\":1,\"pageSize\":20,\"total\":30,\"orderBy\": \"CREATED_DESC\"}"

Pagination result in JSON format

-
Response Schema: application/json
Array
id
string <uuid>
infrastructureProviderId
string <uuid>
infrastructureProviderOrg
string
tenantId
string or null <uuid>
tenantOrg
string or null
object (User)

Details of the user collected from authentication tokens

+
Response Schema: application/json
Array
id
string <uuid>

Unique UUID v4 identifier for the Tenant Account

+
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider

+
infrastructureProviderOrg
string

Organization name of the Infrastructure Provider

+
tenantId
string or null <uuid>

ID of the Tenant

+
tenantOrg
string or null

Org of the Tenant

+
object (User)

Contact user for the Tenant

id
string <uuid>

Unique identifier for the given user.

-
email
string or null <email>
firstName
string or null
lastName
string or null
created
string <date-time>
email
string or null <email>

Email used by the user to register with NGC

+
firstName
string or null

First name of the user

+
lastName
string or null

Surname of the user

+
created
string <date-time>

The date that the user was created.

-
updated
string <date-time>
allocationCount
integer
status
string (TenantAccountStatus)
Enum: "Pending" "Invited" "Ready" "Error"

Status values for Tenant Account objects

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
updated
string <date-time>
Array of objects (StatusDetail)

Chronological status history for the Tenant Account

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the Tenant Account was created

+
updated
string <date-time>

Date/time when the Tenant Account was last updated

+

Responses

Response Schema: application/json
id
string <uuid>
infrastructureProviderId
string <uuid>
infrastructureProviderOrg
string
tenantId
string or null <uuid>
tenantOrg
string or null
object (User)

Details of the user collected from authentication tokens

+
Response Schema: application/json
id
string <uuid>

Unique UUID v4 identifier for the Tenant Account

+
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider

+
infrastructureProviderOrg
string

Organization name of the Infrastructure Provider

+
tenantId
string or null <uuid>

ID of the Tenant

+
tenantOrg
string or null

Org of the Tenant

+
object (User)

Contact user for the Tenant

id
string <uuid>

Unique identifier for the given user.

-
email
string or null <email>
firstName
string or null
lastName
string or null
created
string <date-time>
email
string or null <email>

Email used by the user to register with NGC

+
firstName
string or null

First name of the user

+
lastName
string or null

Surname of the user

+
created
string <date-time>

The date that the user was created.

-
updated
string <date-time>
allocationCount
integer
status
string (TenantAccountStatus)
Enum: "Pending" "Invited" "Ready" "Error"

Status values for Tenant Account objects

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
updated
string <date-time>
updated
string <date-time>

Date/time when the user was last updated in NICo

+
allocationCount
integer

Number of Allocations for the Tenant Account

+
status
string (TenantAccountStatus)
Enum: "Pending" "Invited" "Ready" "Error"

Status of the Tenant Account

+
Array of objects (StatusDetail)

Chronological status history for the Tenant Account

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the Tenant Account was created

+
updated
string <date-time>

Date/time when the Tenant Account was last updated

+

Responses

Response Schema: application/json
id
string <uuid>
infrastructureProviderId
string <uuid>
infrastructureProviderOrg
string
tenantId
string or null <uuid>
tenantOrg
string or null
object (User)

Details of the user collected from authentication tokens

+
Response Schema: application/json
id
string <uuid>

Unique UUID v4 identifier for the Tenant Account

+
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider

+
infrastructureProviderOrg
string

Organization name of the Infrastructure Provider

+
tenantId
string or null <uuid>

ID of the Tenant

+
tenantOrg
string or null

Org of the Tenant

+
object (User)

Contact user for the Tenant

id
string <uuid>

Unique identifier for the given user.

-
email
string or null <email>
firstName
string or null
lastName
string or null
created
string <date-time>
email
string or null <email>

Email used by the user to register with NGC

+
firstName
string or null

First name of the user

+
lastName
string or null

Surname of the user

+
created
string <date-time>

The date that the user was created.

-
updated
string <date-time>
allocationCount
integer
status
string (TenantAccountStatus)
Enum: "Pending" "Invited" "Ready" "Error"

Status values for Tenant Account objects

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
updated
string <date-time>
updated
string <date-time>

Date/time when the user was last updated in NICo

+
allocationCount
integer

Number of Allocations for the Tenant Account

+
status
string (TenantAccountStatus)
Enum: "Pending" "Invited" "Ready" "Error"

Status of the Tenant Account

+
Array of objects (StatusDetail)

Chronological status history for the Tenant Account

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the Tenant Account was created

+
updated
string <date-time>

Date/time when the Tenant Account was last updated

+
Response Headers
X-Pagination
string
Example: "{\"pageNumber\":1,\"pageSize\":20,\"total\":30,\"orderBy\": \"CREATED_DESC\"}"

Pagination result in JSON format

-
Response Schema: application/json
Array
id
string <uuid>
name
string [ 2 .. 256 ] characters
Response Schema: application/json
Array
id
string <uuid>

Unique UUID v4 identifier for the Site in NICo Cloud

+
name
string [ 2 .. 256 ] characters

Name of the Site

description
string or null

Optional description for the Site

-
org
string
infrastructureProviderId
string <uuid>
siteControllerVersion
string or null
org
string

NGC organization ID of the Infrastructure Provider that owns the Site

+
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider that owns the Site

+
siteControllerVersion
string or null

Version of the Site Controller software

siteAgentVersion
string or null

Version of the Site Agent software

@@ -1000,7 +1260,9 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Token that can be used to register a Site. Value only exposed to Provider

registrationTokenExpiration
string or null <date-time>

Date/time when registration token expires. Value only exposed to Provider

-
serialConsoleHostname
string or null <hostname>
isSerialConsoleEnabled
boolean
serialConsoleHostname
string or null <hostname>

Serial console hostname of the site controller

+
isSerialConsoleEnabled
boolean

Indicates if Serial Console is enabled for the Site by the Provider

serialConsoleIdleTimeout
integer or null

Maximum idle time in seconds before Serial Console is disconnected

@@ -1010,32 +1272,58 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Only visible to Tenant retrieving the Site. Indicates if Serial Console access using SSH Keys is enabled by Tenant

isOnline
boolean

Indicates if the Site is currently reachable from Cloud

-
status
string (SiteStatus)
Enum: "Pending" "Registered" "Error"

Status values for Site objects

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
updated
string <date-time>
object (SiteLocation)

Location of the Site

+
status
string (SiteStatus)
Enum: "Pending" "Registered" "Error"

Status of the Site

+
Array of objects (StatusDetail)

Chronological status history for the Site

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the Site was created

+
updated
string <date-time>

Date/time when the Site was last updated

+
object (SiteLocation)

Site location information

city
string

City where the site is located

state
string

State where the site is located

country
string

Country where the site is located

-
object (SiteContact)

Contact for the Site

+
object (SiteContact)

Site contact information

email
string

Email address of the Site contact

-
object (SiteCapabilities)

Boolean flags to indicate features supported by a Site

-
nativeNetworking
boolean
networkSecurityGroup
boolean
nvLinkPartition
boolean
flow
boolean
imageBasedOperatingSystem
boolean
object (SiteMachineStats)

Machine stats for a Site

-
total
integer
object (SiteMachineStatsByStatus)

Machine stats for a Site by status

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByStatusAndHealth)

Machine stats for a Site by status and health

-
object (SiteMachineStatsByAllocation)

Machine stats for a Site by allocation

+
object (SiteCapabilities)

Site capabilities used for feature availability and configuration

+
nativeNetworking
boolean

Whether the Site supports native networking

+
networkSecurityGroup
boolean

Whether the Site supports Network Security Groups

+
nvLinkPartition
boolean

Whether the Site supports NVLink partitioning

+
flow
boolean

Whether the Site supports Flow-based operations

+
imageBasedOperatingSystem
boolean

Whether the Site supports image-based operating system provisioning

+
object (SiteMachineStats)

Machine counts by status for the Site

+
total
integer

Total number of Machines at the Site

+
object (SiteMachineStatsByStatus)

Machine counts grouped by Machine status

+
object (SiteMachineStatsByHealth)

Machine counts grouped by health state

+
object (SiteMachineStatsByStatusAndHealth)

Machine health counts grouped by Machine status

+
object (SiteMachineStatsByAllocation)

Machine counts grouped by allocation and usage state

serialConsoleHostname
string or null <hostname>

Hostname to reach Serial Console for the Site

-
object (SiteLocation)

Location of the Site

+
object (SiteLocation)

Site location information

city
string

City where the site is located

state
string

State where the site is located

country
string

Country where the site is located

-
object (SiteContact)

Contact for the Site

+
object (SiteContact)

Site contact information

email
string

Email address of the Site contact

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
Response Schema: application/json
id
string <uuid>

Unique UUID v4 identifier for the Site in NICo Cloud

+
name
string [ 2 .. 256 ] characters

Name of the Site

description
string or null

Optional description for the Site

-
org
string
infrastructureProviderId
string <uuid>
siteControllerVersion
string or null
org
string

NGC organization ID of the Infrastructure Provider that owns the Site

+
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider that owns the Site

+
siteControllerVersion
string or null

Version of the Site Controller software

siteAgentVersion
string or null

Version of the Site Agent software

@@ -1080,7 +1374,9 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Token that can be used to register a Site. Value only exposed to Provider

registrationTokenExpiration
string or null <date-time>

Date/time when registration token expires. Value only exposed to Provider

-
serialConsoleHostname
string or null <hostname>
isSerialConsoleEnabled
boolean
serialConsoleHostname
string or null <hostname>

Serial console hostname of the site controller

+
isSerialConsoleEnabled
boolean

Indicates if Serial Console is enabled for the Site by the Provider

serialConsoleIdleTimeout
integer or null

Maximum idle time in seconds before Serial Console is disconnected

@@ -1090,49 +1386,101 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Only visible to Tenant retrieving the Site. Indicates if Serial Console access using SSH Keys is enabled by Tenant

isOnline
boolean

Indicates if the Site is currently reachable from Cloud

-
status
string (SiteStatus)
Enum: "Pending" "Registered" "Error"

Status values for Site objects

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
updated
string <date-time>
object (SiteLocation)

Location of the Site

+
status
string (SiteStatus)
Enum: "Pending" "Registered" "Error"

Status of the Site

+
Array of objects (StatusDetail)

Chronological status history for the Site

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the Site was created

+
updated
string <date-time>

Date/time when the Site was last updated

+
object (SiteLocation)

Site location information

city
string

City where the site is located

state
string

State where the site is located

country
string

Country where the site is located

-
object (SiteContact)

Contact for the Site

+
object (SiteContact)

Site contact information

email
string

Email address of the Site contact

-
object (SiteCapabilities)

Boolean flags to indicate features supported by a Site

-
nativeNetworking
boolean
networkSecurityGroup
boolean
nvLinkPartition
boolean
flow
boolean
imageBasedOperatingSystem
boolean
object (SiteMachineStats)

Machine stats for a Site

-
total
integer
object (SiteMachineStatsByStatus)

Machine stats for a Site by status

-
Decommissioned
integer
Error
integer
Initializing
integer
InUse
integer
Maintenance
integer
Ready
integer
Reset
integer
Unknown
integer
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
healthy
integer
unhealthy
integer
object (SiteMachineStatsByStatusAndHealth)

Machine stats for a Site by status and health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByAllocation)

Machine stats for a Site by allocation

-
allocatedInUse
integer
allocatedNotInUse
integer
unallocated
integer
object (SiteCapabilities)

Site capabilities used for feature availability and configuration

+
nativeNetworking
boolean

Whether the Site supports native networking

+
networkSecurityGroup
boolean

Whether the Site supports Network Security Groups

+
nvLinkPartition
boolean

Whether the Site supports NVLink partitioning

+
flow
boolean

Whether the Site supports Flow-based operations

+
imageBasedOperatingSystem
boolean

Whether the Site supports image-based operating system provisioning

+
object (SiteMachineStats)

Machine counts by status for the Site

+
total
integer

Total number of Machines at the Site

+
object (SiteMachineStatsByStatus)

Machine counts grouped by Machine status

+
Decommissioned
integer

Number of Machines in Decommissioned status

+
Error
integer

Number of Machines in Error status

+
Initializing
integer

Number of Machines in Initializing status

+
InUse
integer

Number of Machines in InUse status

+
Maintenance
integer

Number of Machines in Maintenance status

+
Ready
integer

Number of Machines in Ready status

+
Reset
integer

Number of Machines in Reset status

+
Unknown
integer

Number of Machines in Unknown status

+
object (SiteMachineStatsByHealth)

Machine counts grouped by health state

+
healthy
integer

Number of healthy Machines

+
unhealthy
integer

Number of unhealthy Machines

+
object (SiteMachineStatsByStatusAndHealth)

Machine health counts grouped by Machine status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Decommissioned status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Error status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Initializing status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in InUse status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Maintenance status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Ready status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Reset status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Unknown status

+
object (SiteMachineStatsByAllocation)

Machine counts grouped by allocation and usage state

+
allocatedInUse
integer

Number of allocated Machines currently in use

+
allocatedNotInUse
integer

Number of allocated Machines not currently in use

+
unallocated
integer

Number of Machines not currently allocated

+

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
Response Schema: application/json
id
string <uuid>

Unique UUID v4 identifier for the Site in NICo Cloud

+
name
string [ 2 .. 256 ] characters

Name of the Site

description
string or null

Optional description for the Site

-
org
string
infrastructureProviderId
string <uuid>
siteControllerVersion
string or null
org
string

NGC organization ID of the Infrastructure Provider that owns the Site

+
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider that owns the Site

+
siteControllerVersion
string or null

Version of the Site Controller software

siteAgentVersion
string or null

Version of the Site Agent software

@@ -1172,7 +1526,9 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Token that can be used to register a Site. Value only exposed to Provider

registrationTokenExpiration
string or null <date-time>

Date/time when registration token expires. Value only exposed to Provider

-
serialConsoleHostname
string or null <hostname>
isSerialConsoleEnabled
boolean
serialConsoleHostname
string or null <hostname>

Serial console hostname of the site controller

+
isSerialConsoleEnabled
boolean

Indicates if Serial Console is enabled for the Site by the Provider

serialConsoleIdleTimeout
integer or null

Maximum idle time in seconds before Serial Console is disconnected

@@ -1182,49 +1538,101 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Only visible to Tenant retrieving the Site. Indicates if Serial Console access using SSH Keys is enabled by Tenant

isOnline
boolean

Indicates if the Site is currently reachable from Cloud

-
status
string (SiteStatus)
Enum: "Pending" "Registered" "Error"

Status values for Site objects

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
updated
string <date-time>
object (SiteLocation)

Location of the Site

+
status
string (SiteStatus)
Enum: "Pending" "Registered" "Error"

Status of the Site

+
Array of objects (StatusDetail)

Chronological status history for the Site

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the Site was created

+
updated
string <date-time>

Date/time when the Site was last updated

+
object (SiteLocation)

Site location information

city
string

City where the site is located

state
string

State where the site is located

country
string

Country where the site is located

-
object (SiteContact)

Contact for the Site

+
object (SiteContact)

Site contact information

email
string

Email address of the Site contact

-
object (SiteCapabilities)

Boolean flags to indicate features supported by a Site

-
nativeNetworking
boolean
networkSecurityGroup
boolean
nvLinkPartition
boolean
flow
boolean
imageBasedOperatingSystem
boolean
object (SiteMachineStats)

Machine stats for a Site

-
total
integer
object (SiteMachineStatsByStatus)

Machine stats for a Site by status

-
Decommissioned
integer
Error
integer
Initializing
integer
InUse
integer
Maintenance
integer
Ready
integer
Reset
integer
Unknown
integer
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
healthy
integer
unhealthy
integer
object (SiteMachineStatsByStatusAndHealth)

Machine stats for a Site by status and health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByAllocation)

Machine stats for a Site by allocation

-
allocatedInUse
integer
allocatedNotInUse
integer
unallocated
integer
object (SiteCapabilities)

Site capabilities used for feature availability and configuration

+
nativeNetworking
boolean

Whether the Site supports native networking

+
networkSecurityGroup
boolean

Whether the Site supports Network Security Groups

+
nvLinkPartition
boolean

Whether the Site supports NVLink partitioning

+
flow
boolean

Whether the Site supports Flow-based operations

+
imageBasedOperatingSystem
boolean

Whether the Site supports image-based operating system provisioning

+
object (SiteMachineStats)

Machine counts by status for the Site

+
total
integer

Total number of Machines at the Site

+
object (SiteMachineStatsByStatus)

Machine counts grouped by Machine status

+
Decommissioned
integer

Number of Machines in Decommissioned status

+
Error
integer

Number of Machines in Error status

+
Initializing
integer

Number of Machines in Initializing status

+
InUse
integer

Number of Machines in InUse status

+
Maintenance
integer

Number of Machines in Maintenance status

+
Ready
integer

Number of Machines in Ready status

+
Reset
integer

Number of Machines in Reset status

+
Unknown
integer

Number of Machines in Unknown status

+
object (SiteMachineStatsByHealth)

Machine counts grouped by health state

+
healthy
integer

Number of healthy Machines

+
unhealthy
integer

Number of unhealthy Machines

+
object (SiteMachineStatsByStatusAndHealth)

Machine health counts grouped by Machine status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Decommissioned status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Error status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Initializing status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in InUse status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Maintenance status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Ready status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Reset status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Unknown status

+
object (SiteMachineStatsByAllocation)

Machine counts grouped by allocation and usage state

+
allocatedInUse
integer

Number of allocated Machines currently in use

+
allocatedNotInUse
integer

Number of allocated Machines not currently in use

+
unallocated
integer

Number of Machines not currently allocated

+
isSerialConsoleSSHKeysEnabled
boolean
Deprecated

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.

-
object (SiteLocation)

Location of the Site

+
object (SiteLocation)

Updated Site location information

city
string

City where the site is located

state
string

State where the site is located

country
string

Country where the site is located

-
object (SiteContact)

Contact for the Site

+
object (SiteContact)

Updated Site contact information

email
string

Email address of the Site contact

object (SiteCapabilitiesUpdateRequest)
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Enable or disable image-based operating system support for the Site

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
Response Schema: application/json
id
string <uuid>

Unique UUID v4 identifier for the Site in NICo Cloud

+
name
string [ 2 .. 256 ] characters

Name of the Site

description
string or null

Optional description for the Site

-
org
string
infrastructureProviderId
string <uuid>
siteControllerVersion
string or null
org
string

NGC organization ID of the Infrastructure Provider that owns the Site

+
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider that owns the Site

+
siteControllerVersion
string or null

Version of the Site Controller software

siteAgentVersion
string or null

Version of the Site Agent software

@@ -1292,7 +1706,9 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Token that can be used to register a Site. Value only exposed to Provider

registrationTokenExpiration
string or null <date-time>

Date/time when registration token expires. Value only exposed to Provider

-
serialConsoleHostname
string or null <hostname>
isSerialConsoleEnabled
boolean
serialConsoleHostname
string or null <hostname>

Serial console hostname of the site controller

+
isSerialConsoleEnabled
boolean

Indicates if Serial Console is enabled for the Site by the Provider

serialConsoleIdleTimeout
integer or null

Maximum idle time in seconds before Serial Console is disconnected

@@ -1302,49 +1718,101 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Only visible to Tenant retrieving the Site. Indicates if Serial Console access using SSH Keys is enabled by Tenant

isOnline
boolean

Indicates if the Site is currently reachable from Cloud

-
status
string (SiteStatus)
Enum: "Pending" "Registered" "Error"

Status values for Site objects

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
updated
string <date-time>
object (SiteLocation)

Location of the Site

+
status
string (SiteStatus)
Enum: "Pending" "Registered" "Error"

Status of the Site

+
Array of objects (StatusDetail)

Chronological status history for the Site

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the Site was created

+
updated
string <date-time>

Date/time when the Site was last updated

+
object (SiteLocation)

Site location information

city
string

City where the site is located

state
string

State where the site is located

country
string

Country where the site is located

-
object (SiteContact)

Contact for the Site

+
object (SiteContact)

Site contact information

email
string

Email address of the Site contact

-
object (SiteCapabilities)

Boolean flags to indicate features supported by a Site

-
nativeNetworking
boolean
networkSecurityGroup
boolean
nvLinkPartition
boolean
flow
boolean
imageBasedOperatingSystem
boolean
object (SiteMachineStats)

Machine stats for a Site

-
total
integer
object (SiteMachineStatsByStatus)

Machine stats for a Site by status

-
Decommissioned
integer
Error
integer
Initializing
integer
InUse
integer
Maintenance
integer
Ready
integer
Reset
integer
Unknown
integer
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
healthy
integer
unhealthy
integer
object (SiteMachineStatsByStatusAndHealth)

Machine stats for a Site by status and health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByHealth)

Machine stats for a Site by health

-
object (SiteMachineStatsByAllocation)

Machine stats for a Site by allocation

-
allocatedInUse
integer
allocatedNotInUse
integer
unallocated
integer
object (SiteCapabilities)

Site capabilities used for feature availability and configuration

+
nativeNetworking
boolean

Whether the Site supports native networking

+
networkSecurityGroup
boolean

Whether the Site supports Network Security Groups

+
nvLinkPartition
boolean

Whether the Site supports NVLink partitioning

+
flow
boolean

Whether the Site supports Flow-based operations

+
imageBasedOperatingSystem
boolean

Whether the Site supports image-based operating system provisioning

+
object (SiteMachineStats)

Machine counts by status for the Site

+
total
integer

Total number of Machines at the Site

+
object (SiteMachineStatsByStatus)

Machine counts grouped by Machine status

+
Decommissioned
integer

Number of Machines in Decommissioned status

+
Error
integer

Number of Machines in Error status

+
Initializing
integer

Number of Machines in Initializing status

+
InUse
integer

Number of Machines in InUse status

+
Maintenance
integer

Number of Machines in Maintenance status

+
Ready
integer

Number of Machines in Ready status

+
Reset
integer

Number of Machines in Reset status

+
Unknown
integer

Number of Machines in Unknown status

+
object (SiteMachineStatsByHealth)

Machine counts grouped by health state

+
healthy
integer

Number of healthy Machines

+
unhealthy
integer

Number of unhealthy Machines

+
object (SiteMachineStatsByStatusAndHealth)

Machine health counts grouped by Machine status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Decommissioned status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Error status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Initializing status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in InUse status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Maintenance status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Ready status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Reset status

+
object (SiteMachineStatsByHealth)

Health breakdown for Machines in Unknown status

+
object (SiteMachineStatsByAllocation)

Machine counts grouped by allocation and usage state

+
allocatedInUse
integer

Number of allocated Machines currently in use

+
allocatedNotInUse
integer

Number of allocated Machines not currently in use

+
unallocated
integer

Number of Machines not currently allocated

+
Response Headers
X-Pagination
string

Pagination result in JSON format

-
Response Schema: application/json
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>

Response samples

Content type
application/json
[
  • {
    }
]

Allocation

Allocations are the mechanism by which Provider can delegate Network and Compute resources to Tenant.

+

Deprecation history:

+
    +
  • ResourceTypeID attribute on Allocation Constraint was deprecated in favor of resourceTypeId and will be removed on July 9th, 2026 0:00 UTC. Please use resourceTypeId instead.
  • +

Retrieve all Allocations

Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

ID of the Tenant that received the Allocation

siteId
string <uuid>

ID of the Site where resources are allocated

-
status
string (AllocationStatus)
Enum: "Pending" "Registered" "Deleting" "Error"

Status values for Allocation objects

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
Array of objects (AllocationConstraint)
Array
id
string <uuid>
status
string (AllocationStatus)
Enum: "Pending" "Registered" "Deleting" "Error"

Status of the Allocation

+
Array of objects (StatusDetail)

Chronological status history for the Allocation

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
Array of objects (AllocationConstraint)

List of Allocation Constraints for the Allocation

+
Array
id
string <uuid>

ID of the Allocation Constraint

allocationId
string <uuid>

ID of the Allocation that contains the Allocation Constraint

resourceType
string
Enum: "InstanceType" "IPBlock"

Type of the Resource that the Allocation Constraint applies to

-
resourceTypeId
string <uuid>

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.

+
resourceTypeId
string <uuid>

ID of the resource 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 which a prefix is allocated to the Tenant.

constraintType
string
Enum: "Reserved" "OnDemand" "Preemptible"

Type of the Allocation Constraint. Reserved is the only constraint type supported by current implementation.

constraintValue
integer

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
string or null

ID of the allocated Tenant IP Block when resource type is IPBlock

-
object (InstanceTypeSummary)

Describes a subset of core attributes of an Instance Type

-
object (IpBlockSummary)

Describes a subset of core attributes of an IP block

+
object (InstanceTypeSummary)

Summary of the Instance Type

+
object (IpBlockSummary)

Summary of the IP Block

created
string <date-time>

Date/time when the Allocation Constraint was created

updated
string <date-time>
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

ID of the Tenant that should receive the Allocation

siteId
required
string <uuid>

ID of the Site where resources should be allocated

-
Array of objects (AllocationConstraintCreateRequest)
Array
resourceType
required
string
Enum: "InstanceType" "IPBlock"
Array of objects (AllocationConstraintCreateRequest)

List of Allocation Constraint objects

+
Array
resourceType
required
string
Enum: "InstanceType" "IPBlock"

Type of the Resource that the Allocation Constraint applies to

resourceTypeId
required
string <uuid>

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.

@@ -1528,26 +2026,38 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

ID of the Tenant that received the Allocation

siteId
string <uuid>

ID of the Site where resources are allocated

-
status
string (AllocationStatus)
Enum: "Pending" "Registered" "Deleting" "Error"

Status values for Allocation objects

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
Array of objects (AllocationConstraint)
Array
id
string <uuid>
status
string (AllocationStatus)
Enum: "Pending" "Registered" "Deleting" "Error"

Status of the Allocation

+
Array of objects (StatusDetail)

Chronological status history for the Allocation

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
Array of objects (AllocationConstraint)

List of Allocation Constraints for the Allocation

+
Array
id
string <uuid>

ID of the Allocation Constraint

allocationId
string <uuid>

ID of the Allocation that contains the Allocation Constraint

resourceType
string
Enum: "InstanceType" "IPBlock"

Type of the Resource that the Allocation Constraint applies to

-
resourceTypeId
string <uuid>

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.

+
resourceTypeId
string <uuid>

ID of the resource 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 which a prefix is allocated to the Tenant.

constraintType
string
Enum: "Reserved" "OnDemand" "Preemptible"

Type of the Allocation Constraint. Reserved is the only constraint type supported by current implementation.

constraintValue
integer

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
string or null

ID of the allocated Tenant IP Block when resource type is IPBlock

-
object (InstanceTypeSummary)

Describes a subset of core attributes of an Instance Type

-
object (IpBlockSummary)

Describes a subset of core attributes of an IP block

+
object (InstanceTypeSummary)

Summary of the Instance Type

+
object (IpBlockSummary)

Summary of the IP Block

created
string <date-time>

Date/time when the Allocation Constraint was created

updated
string <date-time>
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

ID of the Tenant that received the Allocation

siteId
string <uuid>

ID of the Site where resources are allocated

-
status
string (AllocationStatus)
Enum: "Pending" "Registered" "Deleting" "Error"

Status values for Allocation objects

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
Array of objects (AllocationConstraint)
Array
id
string <uuid>
status
string (AllocationStatus)
Enum: "Pending" "Registered" "Deleting" "Error"

Status of the Allocation

+
Array of objects (StatusDetail)

Chronological status history for the Allocation

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
Array of objects (AllocationConstraint)

List of Allocation Constraints for the Allocation

+
Array
id
string <uuid>

ID of the Allocation Constraint

allocationId
string <uuid>

ID of the Allocation that contains the Allocation Constraint

resourceType
string
Enum: "InstanceType" "IPBlock"

Type of the Resource that the Allocation Constraint applies to

-
resourceTypeId
string <uuid>

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.

+
resourceTypeId
string <uuid>

ID of the resource 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 which a prefix is allocated to the Tenant.

constraintType
string
Enum: "Reserved" "OnDemand" "Preemptible"

Type of the Allocation Constraint. Reserved is the only constraint type supported by current implementation.

constraintValue
integer

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
string or null

ID of the allocated Tenant IP Block when resource type is IPBlock

-
object (InstanceTypeSummary)

Describes a subset of core attributes of an Instance Type

-
object (IpBlockSummary)

Describes a subset of core attributes of an IP block

+
object (InstanceTypeSummary)

Summary of the Instance Type

+
object (IpBlockSummary)

Summary of the IP Block

created
string <date-time>

Date/time when the Allocation Constraint was created

updated
string <date-time>
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

ID of the Tenant that received the Allocation

siteId
string <uuid>

ID of the Site where resources are allocated

-
status
string (AllocationStatus)
Enum: "Pending" "Registered" "Deleting" "Error"

Status values for Allocation objects

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
Array of objects (AllocationConstraint)
Array
id
string <uuid>
status
string (AllocationStatus)
Enum: "Pending" "Registered" "Deleting" "Error"

Status of the Allocation

+
Array of objects (StatusDetail)

Chronological status history for the Allocation

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
Array of objects (AllocationConstraint)

List of Allocation Constraints for the Allocation

+
Array
id
string <uuid>

ID of the Allocation Constraint

allocationId
string <uuid>

ID of the Allocation that contains the Allocation Constraint

resourceType
string
Enum: "InstanceType" "IPBlock"

Type of the Resource that the Allocation Constraint applies to

-
resourceTypeId
string <uuid>

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.

+
resourceTypeId
string <uuid>

ID of the resource 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 which a prefix is allocated to the Tenant.

constraintType
string
Enum: "Reserved" "OnDemand" "Preemptible"

Type of the Allocation Constraint. Reserved is the only constraint type supported by current implementation.

constraintValue
integer

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
string or null

ID of the allocated Tenant IP Block when resource type is IPBlock

-
object (InstanceTypeSummary)

Describes a subset of core attributes of an Instance Type

-
object (IpBlockSummary)

Describes a subset of core attributes of an IP block

+
object (InstanceTypeSummary)

Summary of the Instance Type

+
object (IpBlockSummary)

Summary of the IP Block

created
string <date-time>

Date/time when the Allocation Constraint was created

updated
string <date-time>
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

ID of the Allocation that contains the Allocation Constraint

resourceType
string
Enum: "InstanceType" "IPBlock"

Type of the Resource that the Allocation Constraint applies to

-
resourceTypeId
string <uuid>

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.

+
resourceTypeId
string <uuid>

ID of the resource 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 which a prefix is allocated to the Tenant.

constraintType
string
Enum: "Reserved" "OnDemand" "Preemptible"

Type of the Allocation Constraint. Reserved is the only constraint type supported by current implementation.

constraintValue
integer

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
string or null

ID of the allocated Tenant IP Block when resource type is IPBlock

-
object (InstanceTypeSummary)

Describes a subset of core attributes of an Instance Type

-
id
string <uuid>
name
string [ 2 .. 256 ] characters
infrastructureProviderId
string <uuid>
siteId
string <uuid>
status
string (InstanceTypeStatus)
Enum: "Pending" "Registering" "Ready" "Deleting" "Error"

Status values for Instance Type objects

-
object (IpBlockSummary)

Describes a subset of core attributes of an IP block

-
id
string <uuid>
name
string [ 2 .. 256 ] characters
routingType
string
Enum: "Public" "DatacenterOnly"
prefix
string
object (InstanceTypeSummary)

Summary of the Instance Type

+
id
string <uuid>

ID of the Instance Type

+
name
string [ 2 .. 256 ] characters

Name of the Instance Type, only lowercase characters, digits, hyphens and cannot begin/end with hyphen

+
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider that owns the Instance Type

+
siteId
string <uuid>

ID of the Site that owns the Instance Type

+
status
string (InstanceTypeStatus)
Enum: "Pending" "Registering" "Ready" "Deleting" "Error"

Status of the Instance Type

+
object (IpBlockSummary)

Summary of the IP Block

+
id
string <uuid>

ID of the IP Block

+
name
string [ 2 .. 256 ] characters

Name of the IP Block, only lowercase characters, digits, hyphens and cannot begin/end with hyphen

+
routingType
string
Enum: "Public" "DatacenterOnly"

RoutingType of the IP Block

+
prefix
string

Either IPv4 or IPv6 address

prefixLength
integer

Min: 1, Max: 32 for ipv4, 128 for ipv6

-
status
string (IpBlockStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status values for IP Block objects

+
status
string (IpBlockStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status of the IP Block

created
string <date-time>

Date/time when the Allocation Constraint was created

updated
string <date-time>
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

ID of the Network Security Group attached to the VPC

object (NetworkSecurityGroupPropagationDetails)

Propagation details for the attached Network Security Group

-
id
string <uuid>

The VPC or Instance ID

-
detailedStatus
string
Enum: "None" "Partial" "Full" "Unknown" "Error"
status
string (NetworkSecurityGroupPropagationStatus)
Enum: "Synchronizing" "Synchronized" "Error"

Status values for Network Security Group propagation

-
details
string or null
unpropagatedInstanceIds
Array of strings <uuid> [ items <uuid > ]
relatedInstanceIds
Array of strings <uuid> [ items <uuid > ]
nvLinkLogicalPartitionId
string or null <uuid>
objectId
string <uuid>

The ID of the object (VPC/Instance etc.)

+
detailedStatus
string
Enum: "None" "Partial" "Full" "Unknown" "Error"

The detailed propagation status that was actually returned from NICo

+
status
string (NetworkSecurityGroupPropagationStatus)
Enum: "Synchronizing" "Synchronized" "Error"

The simplified propagation status that reduces the actual status to just a few values

+
details
string or null

Additional details for the status

+
unpropagatedInstanceIds
Array of strings <uuid> [ items <uuid > ]

IDs of Instances associated with the object that have not yet updated their Network Security Group rules

+
relatedInstanceIds
Array of strings <uuid> [ items <uuid > ]

IDs of the instances involved in determining the propagation status

+
Array of objects (Deprecation)

Deprecation notices for fields returned by this propagation detail

+
nvLinkLogicalPartitionId
string or null <uuid>

ID of the default NVLink Logical Partition that GPUs for all Instances in the VPC will attach to

object (Labels) <= 10 properties

String key value pairs describing VPC labels

@@ -1826,7 +2384,15 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Status of the VPC

Array of objects (StatusDetail)

History of status changes for the VPC

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when VPC was created

updated
string <date-time>

Date/time when VPC was last updated

@@ -1888,11 +2454,33 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

ID of the Network Security Group attached to the VPC

object (NetworkSecurityGroupPropagationDetails)

Propagation details for the attached Network Security Group

-
id
string <uuid>

The VPC or Instance ID

-
detailedStatus
string
Enum: "None" "Partial" "Full" "Unknown" "Error"
status
string (NetworkSecurityGroupPropagationStatus)
Enum: "Synchronizing" "Synchronized" "Error"

Status values for Network Security Group propagation

-
details
string or null
unpropagatedInstanceIds
Array of strings <uuid> [ items <uuid > ]
relatedInstanceIds
Array of strings <uuid> [ items <uuid > ]
nvLinkLogicalPartitionId
string or null <uuid>
objectId
string <uuid>

The ID of the object (VPC/Instance etc.)

+
detailedStatus
string
Enum: "None" "Partial" "Full" "Unknown" "Error"

The detailed propagation status that was actually returned from NICo

+
status
string (NetworkSecurityGroupPropagationStatus)
Enum: "Synchronizing" "Synchronized" "Error"

The simplified propagation status that reduces the actual status to just a few values

+
details
string or null

Additional details for the status

+
unpropagatedInstanceIds
Array of strings <uuid> [ items <uuid > ]

IDs of Instances associated with the object that have not yet updated their Network Security Group rules

+
relatedInstanceIds
Array of strings <uuid> [ items <uuid > ]

IDs of the instances involved in determining the propagation status

+
Array of objects (Deprecation)

Deprecation notices for fields returned by this propagation detail

+
Array
attribute
string or null

Name of the attribute that is deprecated. Omitted if queryParam or endpoint is being deprecated.

+
queryParam
string or null

Query parameter that is deprecated. Omitted if attribute or endpoint is being deprecated.

+
endpoint
string or null

API endpoint that is deprecated. Omitted if attribute or queryParam is being deprecated.

+
replacedBy
string or null

Name of the attribute, query parameter, or endpoint that replaces the deprecated item. Omitted if no replacement is available.

+
takeActionBy
string <date-time>

Date/time by which clients should migrate away from the deprecated API surface

+
notice
string

Message describing the deprecation

+
nvLinkLogicalPartitionId
string or null <uuid>

ID of the default NVLink Logical Partition that GPUs for all Instances in the VPC will attach to

object (Labels) <= 10 properties

String key value pairs describing VPC labels

@@ -1900,7 +2488,15 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Status of the VPC

Array of objects (StatusDetail)

History of status changes for the VPC

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when VPC was created

updated
string <date-time>

Date/time when VPC was last updated

@@ -1948,11 +2544,33 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

ID of the Network Security Group attached to the VPC

object (NetworkSecurityGroupPropagationDetails)

Propagation details for the attached Network Security Group

-
id
string <uuid>

The VPC or Instance ID

-
detailedStatus
string
Enum: "None" "Partial" "Full" "Unknown" "Error"
status
string (NetworkSecurityGroupPropagationStatus)
Enum: "Synchronizing" "Synchronized" "Error"

Status values for Network Security Group propagation

-
details
string or null
unpropagatedInstanceIds
Array of strings <uuid> [ items <uuid > ]
relatedInstanceIds
Array of strings <uuid> [ items <uuid > ]
nvLinkLogicalPartitionId
string or null <uuid>
objectId
string <uuid>

The ID of the object (VPC/Instance etc.)

+
detailedStatus
string
Enum: "None" "Partial" "Full" "Unknown" "Error"

The detailed propagation status that was actually returned from NICo

+
status
string (NetworkSecurityGroupPropagationStatus)
Enum: "Synchronizing" "Synchronized" "Error"

The simplified propagation status that reduces the actual status to just a few values

+
details
string or null

Additional details for the status

+
unpropagatedInstanceIds
Array of strings <uuid> [ items <uuid > ]

IDs of Instances associated with the object that have not yet updated their Network Security Group rules

+
relatedInstanceIds
Array of strings <uuid> [ items <uuid > ]

IDs of the instances involved in determining the propagation status

+
Array of objects (Deprecation)

Deprecation notices for fields returned by this propagation detail

+
Array
attribute
string or null

Name of the attribute that is deprecated. Omitted if queryParam or endpoint is being deprecated.

+
queryParam
string or null

Query parameter that is deprecated. Omitted if attribute or endpoint is being deprecated.

+
endpoint
string or null

API endpoint that is deprecated. Omitted if attribute or queryParam is being deprecated.

+
replacedBy
string or null

Name of the attribute, query parameter, or endpoint that replaces the deprecated item. Omitted if no replacement is available.

+
takeActionBy
string <date-time>

Date/time by which clients should migrate away from the deprecated API surface

+
notice
string

Message describing the deprecation

+
nvLinkLogicalPartitionId
string or null <uuid>

ID of the default NVLink Logical Partition that GPUs for all Instances in the VPC will attach to

object (Labels) <= 10 properties

String key value pairs describing VPC labels

@@ -1960,7 +2578,15 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Status of the VPC

Array of objects (StatusDetail)

History of status changes for the VPC

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when VPC was created

updated
string <date-time>

Date/time when VPC was last updated

@@ -2028,11 +2654,33 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

ID of the Network Security Group attached to the VPC

object (NetworkSecurityGroupPropagationDetails)

Propagation details for the attached Network Security Group

-
id
string <uuid>

The VPC or Instance ID

-
detailedStatus
string
Enum: "None" "Partial" "Full" "Unknown" "Error"
status
string (NetworkSecurityGroupPropagationStatus)
Enum: "Synchronizing" "Synchronized" "Error"

Status values for Network Security Group propagation

-
details
string or null
unpropagatedInstanceIds
Array of strings <uuid> [ items <uuid > ]
relatedInstanceIds
Array of strings <uuid> [ items <uuid > ]
nvLinkLogicalPartitionId
string or null <uuid>
objectId
string <uuid>

The ID of the object (VPC/Instance etc.)

+
detailedStatus
string
Enum: "None" "Partial" "Full" "Unknown" "Error"

The detailed propagation status that was actually returned from NICo

+
status
string (NetworkSecurityGroupPropagationStatus)
Enum: "Synchronizing" "Synchronized" "Error"

The simplified propagation status that reduces the actual status to just a few values

+
details
string or null

Additional details for the status

+
unpropagatedInstanceIds
Array of strings <uuid> [ items <uuid > ]

IDs of Instances associated with the object that have not yet updated their Network Security Group rules

+
relatedInstanceIds
Array of strings <uuid> [ items <uuid > ]

IDs of the instances involved in determining the propagation status

+
Array of objects (Deprecation)

Deprecation notices for fields returned by this propagation detail

+
Array
attribute
string or null

Name of the attribute that is deprecated. Omitted if queryParam or endpoint is being deprecated.

+
queryParam
string or null

Query parameter that is deprecated. Omitted if attribute or endpoint is being deprecated.

+
endpoint
string or null

API endpoint that is deprecated. Omitted if attribute or queryParam is being deprecated.

+
replacedBy
string or null

Name of the attribute, query parameter, or endpoint that replaces the deprecated item. Omitted if no replacement is available.

+
takeActionBy
string <date-time>

Date/time by which clients should migrate away from the deprecated API surface

+
notice
string

Message describing the deprecation

+
nvLinkLogicalPartitionId
string or null <uuid>

ID of the default NVLink Logical Partition that GPUs for all Instances in the VPC will attach to

object (Labels) <= 10 properties

String key value pairs describing VPC labels

@@ -2040,7 +2688,15 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Status of the VPC

Array of objects (StatusDetail)

History of status changes for the VPC

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when VPC was created

updated
string <date-time>

Date/time when VPC was last updated

@@ -2092,11 +2748,33 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

ID of the Network Security Group attached to the VPC

object (NetworkSecurityGroupPropagationDetails)

Propagation details for the attached Network Security Group

-
id
string <uuid>

The VPC or Instance ID

-
detailedStatus
string
Enum: "None" "Partial" "Full" "Unknown" "Error"
status
string (NetworkSecurityGroupPropagationStatus)
Enum: "Synchronizing" "Synchronized" "Error"

Status values for Network Security Group propagation

-
details
string or null
unpropagatedInstanceIds
Array of strings <uuid> [ items <uuid > ]
relatedInstanceIds
Array of strings <uuid> [ items <uuid > ]
nvLinkLogicalPartitionId
string or null <uuid>
objectId
string <uuid>

The ID of the object (VPC/Instance etc.)

+
detailedStatus
string
Enum: "None" "Partial" "Full" "Unknown" "Error"

The detailed propagation status that was actually returned from NICo

+
status
string (NetworkSecurityGroupPropagationStatus)
Enum: "Synchronizing" "Synchronized" "Error"

The simplified propagation status that reduces the actual status to just a few values

+
details
string or null

Additional details for the status

+
unpropagatedInstanceIds
Array of strings <uuid> [ items <uuid > ]

IDs of Instances associated with the object that have not yet updated their Network Security Group rules

+
relatedInstanceIds
Array of strings <uuid> [ items <uuid > ]

IDs of the instances involved in determining the propagation status

+
Array of objects (Deprecation)

Deprecation notices for fields returned by this propagation detail

+
Array
attribute
string or null

Name of the attribute that is deprecated. Omitted if queryParam or endpoint is being deprecated.

+
queryParam
string or null

Query parameter that is deprecated. Omitted if attribute or endpoint is being deprecated.

+
endpoint
string or null

API endpoint that is deprecated. Omitted if attribute or queryParam is being deprecated.

+
replacedBy
string or null

Name of the attribute, query parameter, or endpoint that replaces the deprecated item. Omitted if no replacement is available.

+
takeActionBy
string <date-time>

Date/time by which clients should migrate away from the deprecated API surface

+
notice
string

Message describing the deprecation

+
nvLinkLogicalPartitionId
string or null <uuid>

ID of the default NVLink Logical Partition that GPUs for all Instances in the VPC will attach to

object (Labels) <= 10 properties

String key value pairs describing VPC labels

@@ -2104,7 +2782,15 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Status of the VPC

Array of objects (StatusDetail)

History of status changes for the VPC

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when VPC was created

updated
string <date-time>

Date/time when VPC was last updated

@@ -2300,14 +2986,14 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB sc-cittYi iNuSsz eBjiEo hynizp">

OK

Response Headers
X-Pagination
string
Example: "{\"pageNumber\":1,\"pageSize\":20,\"total\":30,\"orderBy\": \"CREATED_DESC\"}"

Pagination result in JSON format

-
Response Schema: application/json
Array
id
string <uuid>
name
string [ 2 .. 256 ] characters
Response Schema: application/json
Array
id
string <uuid>

Unique UUID v4 identifier for the VPCPrefix

+
name
string [ 2 .. 256 ] characters

Name of the VPC Prefix

siteId
string <uuid>

ID of the Site the VPC Prefix belongs to

vpcId
string <uuid>

ID of the VPC the VPC Prefix belongs to

-
tenantId
string <uuid>

ID of the Tenant the VPC Prefix belongs to

ipBlockId
string or null <uuid>

ID of the IP Block that contains the prefix of the VPC Prefix

prefix
string or null
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Total number of prefixes (of any size) acquired from this block

Array of objects (StatusDetail)

Details of 20 most recent status changes

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date and time when the VPC Prefix was created

updated
string <date-time>

Date and time when the VPC Prefix was updated

@@ -2338,7 +3032,7 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB sc-cittYi iNuSsz eBjiEo hynizp">

Error response when user is not authorized to call an endpoint or retrieve/modify objects

Response samples

Content type
application/json
[
  • {
    }
]

Create VPC Prefix

https://nico-rest-api.nico.svc.cluster.local/v2/org/{org}/nico/vpc-prefix

Response samples

Content type
application/json
[
  • {
    }
]

Create VPC Prefix

Create a VPC Prefix for the org.

Org must have a Tenant entity. User must have authorization role with TENANT_ADMIN suffix.

@@ -2354,14 +3048,14 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Prefix length for the VPC Prefix. Valid range is 8 to 31, and max usable value depends on prefix length of parent IP Block.

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
Response Schema: application/json
id
string <uuid>

Unique UUID v4 identifier for the VPCPrefix

+
name
string [ 2 .. 256 ] characters

Name of the VPC Prefix

siteId
string <uuid>

ID of the Site the VPC Prefix belongs to

vpcId
string <uuid>

ID of the VPC the VPC Prefix belongs to

-
tenantId
string <uuid>

ID of the Tenant the VPC Prefix belongs to

ipBlockId
string or null <uuid>

ID of the IP Block that contains the prefix of the VPC Prefix

prefix
string or null
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Total number of prefixes (of any size) acquired from this block

Array of objects (StatusDetail)

Details of 20 most recent status changes

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date and time when the VPC Prefix was created

updated
string <date-time>

Date and time when the VPC Prefix was updated

@@ -2394,7 +3096,7 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB sc-cittYi iNuSsz eBjiEo hynizp">

Error response when user is not authorized to call an endpoint or retrieve/modify objects

Request samples

Content type
application/json
{
  • "name": "east-vpc-traffic-net",
  • "vpcId": "5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3",
  • "ipBlockId": "8c1d1a06-90a2-4863-8ee1-6029265b9f0a",
  • "prefixLength": 20
}

Response samples

Content type
application/json
{
  • "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": 24,
  • "status": "Ready",
  • "usageStats": {
    },
  • "statusHistory": [
    ],
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Retrieve VPC Prefix

https://nico-rest-api.nico.svc.cluster.local/v2/org/{org}/nico/vpc-prefix

Request samples

Content type
application/json
{
  • "name": "east-vpc-traffic-net",
  • "vpcId": "5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3",
  • "ipBlockId": "8c1d1a06-90a2-4863-8ee1-6029265b9f0a",
  • "prefixLength": 20
}

Response samples

Content type
application/json
{
  • "id": "0c03ba01-d86b-4a57-a41e-cc359b380a6f",
  • "name": "east-vpc-traffic-net",
  • "siteId": "ea144def-d68f-44c3-9485-4b103fa2686f",
  • "vpcId": "5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3",
  • "prefix": "192.168.1.0/24",
  • "ipBlockId": "8c1d1a06-90a2-4863-8ee1-6029265b9f0a",
  • "prefixLength": 24,
  • "status": "Ready",
  • "usageStats": {
    },
  • "statusHistory": [
    ],
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Retrieve VPC Prefix

Retrieve a specific VPC Prefix

Org must have a Tenant entity. User must have authorization role with TENANT_ADMIN suffix.

@@ -2410,14 +3112,14 @@

Typical API Call Flow for Tenant

Prefix and IP usage data is derived by evaluating associated Ethernet interfaces. Each Interface associated with a VPC Prefix consumes a /31 prefix.

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
Response Schema: application/json
id
string <uuid>

Unique UUID v4 identifier for the VPCPrefix

+
name
string [ 2 .. 256 ] characters

Name of the VPC Prefix

siteId
string <uuid>

ID of the Site the VPC Prefix belongs to

vpcId
string <uuid>

ID of the VPC the VPC Prefix belongs to

-
tenantId
string <uuid>

ID of the Tenant the VPC Prefix belongs to

ipBlockId
string or null <uuid>

ID of the IP Block that contains the prefix of the VPC Prefix

prefix
string or null
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Total number of prefixes (of any size) acquired from this block

Array of objects (StatusDetail)

Details of 20 most recent status changes

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date and time when the VPC Prefix was created

updated
string <date-time>

Date and time when the VPC Prefix was updated

@@ -2448,7 +3158,7 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB sc-cittYi iNuSsz eBjiEo hynizp">

Error response when user is not authorized to call an endpoint or retrieve/modify objects

Response samples

Content type
application/json
{
  • "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": 24,
  • "status": "Ready",
  • "usageStats": {
    },
  • "statusHistory": [
    ],
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Delete VPC Prefix

https://nico-rest-api.nico.svc.cluster.local/v2/org/{org}/nico/vpc-prefix/{vpcPrefixId}

Response samples

Content type
application/json
{
  • "id": "0c03ba01-d86b-4a57-a41e-cc359b380a6f",
  • "name": "east-vpc-traffic-net",
  • "siteId": "ea144def-d68f-44c3-9485-4b103fa2686f",
  • "vpcId": "5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3",
  • "prefix": "192.168.1.0/24",
  • "ipBlockId": "8c1d1a06-90a2-4863-8ee1-6029265b9f0a",
  • "prefixLength": 24,
  • "status": "Ready",
  • "usageStats": {
    },
  • "statusHistory": [
    ],
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Delete VPC Prefix

Delete a specific VPC Prefix by ID.

Org must have a Tenant entity. User must have authorization role with TENANT_ADMIN suffix.

@@ -2470,16 +3180,18 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Name of the Org

vpcPrefixId
required
string <uuid>

ID of the VPC Prefix

-
Request Body schema: application/json
name
required
string [ 2 .. 256 ] characters

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
Response Schema: application/json
id
string <uuid>

Unique UUID v4 identifier for the VPCPrefix

+
name
string [ 2 .. 256 ] characters

Name of the VPC Prefix

siteId
string <uuid>

ID of the Site the VPC Prefix belongs to

vpcId
string <uuid>

ID of the VPC the VPC Prefix belongs to

-
tenantId
string <uuid>

ID of the Tenant the VPC Prefix belongs to

ipBlockId
string or null <uuid>

ID of the IP Block that contains the prefix of the VPC Prefix

prefix
string or null
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Total number of prefixes (of any size) acquired from this block

Array of objects (StatusDetail)

Details of 20 most recent status changes

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date and time when the VPC Prefix was created

updated
string <date-time>

Date and time when the VPC Prefix was updated

@@ -2512,7 +3232,7 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB sc-cittYi iNuSsz eBjiEo hynizp">

Error response when user is not authorized to call an endpoint or retrieve/modify objects

Request samples

Content type
application/json
{
  • "name": "east-vpc-traffic-net"
}

Response samples

Content type
application/json
{
  • "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": 24,
  • "status": "Ready",
  • "usageStats": {
    },
  • "statusHistory": [
    ],
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Subnet

https://nico-rest-api.nico.svc.cluster.local/v2/org/{org}/nico/vpc-prefix/{vpcPrefixId}

Request samples

Content type
application/json
{
  • "name": "east-vpc-traffic-net"
}

Response samples

Content type
application/json
{
  • "id": "0c03ba01-d86b-4a57-a41e-cc359b380a6f",
  • "name": "east-vpc-traffic-net",
  • "siteId": "ea144def-d68f-44c3-9485-4b103fa2686f",
  • "vpcId": "5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3",
  • "prefix": "192.168.1.0/24",
  • "ipBlockId": "8c1d1a06-90a2-4863-8ee1-6029265b9f0a",
  • "prefixLength": 24,
  • "status": "Ready",
  • "usageStats": {
    },
  • "statusHistory": [
    ],
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Subnet

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).

@@ -2546,14 +3266,38 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB sc-cittYi iNuSsz eBjiEo hynizp">

OK

Response Headers
X-Pagination
string
Example: "{\"pageNumber\":1,\"pageSize\":20,\"total\":30,\"orderBy\": \"CREATED_DESC\"}"

Pagination result in JSON format

-
Response Schema: application/json
Array
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string or null
siteId
string <uuid>
vpcId
string <uuid>
tenantId
string <uuid>
controllerNetworkSegmentId
string or null <uuid>
ipv4Prefix
string or null <ipv4>
Response Schema: application/json
Array
id
string <uuid>

Unique UUID v4 identifier for the Subnet

+
name
string [ 2 .. 256 ] characters

Name of the Subnet

+
description
string or null

Description of the Subnet

+
siteId
string <uuid>

ID of the Site containing the Subnet

+
vpcId
string <uuid>

ID of the VPC containing the Subnet

+
controllerNetworkSegmentId
string or null <uuid>

ID of the Site Controller network segment corresponding to the Subnet

+
ipv4Prefix
string or null <ipv4>

The prefix that gets assigned to the subnet if ipv4 block is chosen

-
ipv4BlockId
string or null <uuid>
ipv4Gateway
string or null <ipv4>
ipv6Prefix
string or null <ipv6>
ipv6BlockId
string or null <uuid>
ipv6Gateway
string or null <ipv6>
mtu
integer
ipv4BlockId
string or null <uuid>

ID of the derived Tenant IPv4 Block from an Allocation

+
ipv4Gateway
string or null <ipv4>

Address of the IPv4 gateway in the Subnet

+
ipv6Prefix
string or null <ipv6>

Prefix of the network in CIDR notation

+
ipv6BlockId
string or null <uuid>

ID of the derived Tenant IPv6 Block from an Allocation

+
ipv6Gateway
string or null <ipv6>

Address of the IPv6 gateway in the Subnet

+
mtu
integer

Maximum Transmission Unit size in bytes. This property is system-determined and read-only.

prefixLength
integer

Max value depends on prefix length of parent IP Block

-
routingType
string or null
Enum: "Public" "DatacenterOnly"
status
string (SubnetStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status values for Subnet objects

+
routingType
string or null
Enum: "Public" "DatacenterOnly"

Routing type of the Subnet

+
status
string (SubnetStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status of the Subnet

object (IpBlockUsageStats)

Present when query param includeUsageStats=true. Prefix and IP usage data is derived by evaluating associated Ethernet interfaces. Each Interface associated with a Subnet consumes a single IP. In addition, 1 gateway and 1 broadcast IP address is reserved per Subnet.

availableIPs
integer <int64>
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Total number of /30 prefixes that can still be acquired from this block (only reduced if prefixes are acquired, not reduced by acquired IPs)

acquiredPrefixes
integer <int64>

Total number of prefixes (of any size) acquired from this block

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
updated
string <date-time>
Array of objects (Deprecation)
Array
attribute
string or null

Name of the attribute that is deprecated. Omitted if queryParam or endpoint is being deprecated.

-
queryParam
string or null

Query parameter that is deprecated. Omitted if attribute or endpoint is being deprecated.

-
endpoint
string or null

API endpoint that is deprecated. Omitted if attribute or queryParam is being deprecated.

-
replacedBy
string or null

Name of the attribute, query parameter, or endpoint that replaces the deprecated item. Omitted if no replacement is available.

-
takeActionBy
string <date-time>

ISO datetime string for when the deprecated field will no longer be accepted or available in the API

-
notice
string

Message describing the deprecation

-
Array of objects (StatusDetail)

Chronological status history for the Subnet

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the Subnet was created

+
updated
string <date-time>

Date/time when the Subnet was last updated

+

Response samples

Content type
application/json
[
  • {
    }
]

Create Subnet

https://nico-rest-api.nico.svc.cluster.local/v2/org/{org}/nico/subnet

Response samples

Content type
application/json
[
  • {
    }
]

Create Subnet

Create a Subnet for the org.

@@ -2590,16 +3336,52 @@

Typical API Call Flow for Tenant

At least 1 IPv4 IP block or 1 IPv6 IP block must be specified.

Authorizations:
JWTBearerToken
path Parameters
org
required
string

Name of the Org

-
Request Body schema: application/json
name
required
string [ 2 .. 256 ] characters
description
string or null
vpcId
required
string <uuid>
ipv4BlockId
string or null <uuid>
ipv6BlockId
string or null <uuid>
prefixLength
required
integer

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string or null
siteId
string <uuid>
vpcId
string <uuid>
tenantId
string <uuid>
controllerNetworkSegmentId
string or null <uuid>
ipv4Prefix
string or null <ipv4>
Response Schema: application/json
id
string <uuid>

Unique UUID v4 identifier for the Subnet

+
name
string [ 2 .. 256 ] characters

Name of the Subnet

+
description
string or null

Description of the Subnet

+
siteId
string <uuid>

ID of the Site containing the Subnet

+
vpcId
string <uuid>

ID of the VPC containing the Subnet

+
controllerNetworkSegmentId
string or null <uuid>

ID of the Site Controller network segment corresponding to the Subnet

+
ipv4Prefix
string or null <ipv4>

The prefix that gets assigned to the subnet if ipv4 block is chosen

-
ipv4BlockId
string or null <uuid>
ipv4Gateway
string or null <ipv4>
ipv6Prefix
string or null <ipv6>
ipv6BlockId
string or null <uuid>
ipv6Gateway
string or null <ipv6>
mtu
integer
ipv4BlockId
string or null <uuid>

ID of the derived Tenant IPv4 Block from an Allocation

+
ipv4Gateway
string or null <ipv4>

Address of the IPv4 gateway in the Subnet

+
ipv6Prefix
string or null <ipv6>

Prefix of the network in CIDR notation

+
ipv6BlockId
string or null <uuid>

ID of the derived Tenant IPv6 Block from an Allocation

+
ipv6Gateway
string or null <ipv6>

Address of the IPv6 gateway in the Subnet

+
mtu
integer

Maximum Transmission Unit size in bytes. This property is system-determined and read-only.

prefixLength
integer

Max value depends on prefix length of parent IP Block

-
routingType
string or null
Enum: "Public" "DatacenterOnly"
status
string (SubnetStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status values for Subnet objects

+
routingType
string or null
Enum: "Public" "DatacenterOnly"

Routing type of the Subnet

+
status
string (SubnetStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status of the Subnet

object (IpBlockUsageStats)

Present when query param includeUsageStats=true. Prefix and IP usage data is derived by evaluating associated Ethernet interfaces. Each Interface associated with a Subnet consumes a single IP. In addition, 1 gateway and 1 broadcast IP address is reserved per Subnet.

availableIPs
integer <int64>
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Total number of /30 prefixes that can still be acquired from this block (only reduced if prefixes are acquired, not reduced by acquired IPs)

acquiredPrefixes
integer <int64>

Total number of prefixes (of any size) acquired from this block

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
updated
string <date-time>
Array of objects (Deprecation)
Array
attribute
string or null

Name of the attribute that is deprecated. Omitted if queryParam or endpoint is being deprecated.

-
queryParam
string or null

Query parameter that is deprecated. Omitted if attribute or endpoint is being deprecated.

-
endpoint
string or null

API endpoint that is deprecated. Omitted if attribute or queryParam is being deprecated.

-
replacedBy
string or null

Name of the attribute, query parameter, or endpoint that replaces the deprecated item. Omitted if no replacement is available.

-
takeActionBy
string <date-time>

ISO datetime string for when the deprecated field will no longer be accepted or available in the API

-
notice
string

Message describing the deprecation

-
Array of objects (StatusDetail)

Chronological status history for the Subnet

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the Subnet was created

+
updated
string <date-time>

Date/time when the Subnet was last updated

+

Request samples

Content type
application/json
{
  • "name": "spark-gpu-net",
  • "vpcId": "5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3",
  • "ipv4BlockId": "8c1d1a06-90a2-4863-8ee1-6029265b9f0a",
  • "prefixLength": 20
}

Response samples

Content type
application/json
{
  • "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": [
    ],
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Retrieve Subnet

https://nico-rest-api.nico.svc.cluster.local/v2/org/{org}/nico/subnet

Request samples

Content type
application/json
{
  • "name": "spark-gpu-net",
  • "vpcId": "5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3",
  • "ipv4BlockId": "8c1d1a06-90a2-4863-8ee1-6029265b9f0a",
  • "prefixLength": 20
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "name": "spark-gpu-net",
  • "siteId": "ea144def-d68f-44c3-9485-4b103fa2686f",
  • "vpcId": "5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3",
  • "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": [
    ],
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Retrieve Subnet

Retrieve a specific Subnet

Org must have a Tenant entity. User must have authorization role with TENANT_ADMIN suffix.

@@ -2646,14 +3430,38 @@

Typical API Call Flow for Tenant

Prefix and IP usage data is derived by evaluating associated Ethernet interfaces. Each Interface associated with a Subnets consumes a single IP. In addition, 1 gateway and 1 broadcast IP address is reserved per Subnet.

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string or null
siteId
string <uuid>
vpcId
string <uuid>
tenantId
string <uuid>
controllerNetworkSegmentId
string or null <uuid>
ipv4Prefix
string or null <ipv4>
Response Schema: application/json
id
string <uuid>

Unique UUID v4 identifier for the Subnet

+
name
string [ 2 .. 256 ] characters

Name of the Subnet

+
description
string or null

Description of the Subnet

+
siteId
string <uuid>

ID of the Site containing the Subnet

+
vpcId
string <uuid>

ID of the VPC containing the Subnet

+
controllerNetworkSegmentId
string or null <uuid>

ID of the Site Controller network segment corresponding to the Subnet

+
ipv4Prefix
string or null <ipv4>

The prefix that gets assigned to the subnet if ipv4 block is chosen

-
ipv4BlockId
string or null <uuid>
ipv4Gateway
string or null <ipv4>
ipv6Prefix
string or null <ipv6>
ipv6BlockId
string or null <uuid>
ipv6Gateway
string or null <ipv6>
mtu
integer
ipv4BlockId
string or null <uuid>

ID of the derived Tenant IPv4 Block from an Allocation

+
ipv4Gateway
string or null <ipv4>

Address of the IPv4 gateway in the Subnet

+
ipv6Prefix
string or null <ipv6>

Prefix of the network in CIDR notation

+
ipv6BlockId
string or null <uuid>

ID of the derived Tenant IPv6 Block from an Allocation

+
ipv6Gateway
string or null <ipv6>

Address of the IPv6 gateway in the Subnet

+
mtu
integer

Maximum Transmission Unit size in bytes. This property is system-determined and read-only.

prefixLength
integer

Max value depends on prefix length of parent IP Block

-
routingType
string or null
Enum: "Public" "DatacenterOnly"
status
string (SubnetStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status values for Subnet objects

+
routingType
string or null
Enum: "Public" "DatacenterOnly"

Routing type of the Subnet

+
status
string (SubnetStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status of the Subnet

object (IpBlockUsageStats)

Present when query param includeUsageStats=true. Prefix and IP usage data is derived by evaluating associated Ethernet interfaces. Each Interface associated with a Subnet consumes a single IP. In addition, 1 gateway and 1 broadcast IP address is reserved per Subnet.

availableIPs
integer <int64>
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Total number of /30 prefixes that can still be acquired from this block (only reduced if prefixes are acquired, not reduced by acquired IPs)

acquiredPrefixes
integer <int64>

Total number of prefixes (of any size) acquired from this block

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
updated
string <date-time>
Array of objects (Deprecation)
Array
attribute
string or null

Name of the attribute that is deprecated. Omitted if queryParam or endpoint is being deprecated.

-
queryParam
string or null

Query parameter that is deprecated. Omitted if attribute or endpoint is being deprecated.

-
endpoint
string or null

API endpoint that is deprecated. Omitted if attribute or queryParam is being deprecated.

-
replacedBy
string or null

Name of the attribute, query parameter, or endpoint that replaces the deprecated item. Omitted if no replacement is available.

-
takeActionBy
string <date-time>

ISO datetime string for when the deprecated field will no longer be accepted or available in the API

-
notice
string

Message describing the deprecation

-
Array of objects (StatusDetail)

Chronological status history for the Subnet

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the Subnet was created

+
updated
string <date-time>

Date/time when the Subnet was last updated

+

Response samples

Content type
application/json
{
  • "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": [
    ],
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Delete Subnet

https://nico-rest-api.nico.svc.cluster.local/v2/org/{org}/nico/subnet/{subnetId}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "name": "spark-gpu-net",
  • "siteId": "ea144def-d68f-44c3-9485-4b103fa2686f",
  • "vpcId": "5e28ad7c-5fb7-46d6-a28a-fc0ba6fdc4a3",
  • "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": [
    ],
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Delete Subnet

Delete a specific Subnet by ID.

Org must have a Tenant entity. User must have authorization role with TENANT_ADMIN suffix.

@@ -2704,16 +3514,44 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Name of the Org

subnetId
required
string <uuid>

ID of the Subnet

-
Request Body schema: application/json
name
required
string [ 2 .. 256 ] characters
description
string or null

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string or null
siteId
string <uuid>
vpcId
string <uuid>
tenantId
string <uuid>
controllerNetworkSegmentId
string or null <uuid>
ipv4Prefix
string or null <ipv4>
Response Schema: application/json
id
string <uuid>

Unique UUID v4 identifier for the Subnet

+
name
string [ 2 .. 256 ] characters

Name of the Subnet

+
description
string or null

Description of the Subnet

+
siteId
string <uuid>

ID of the Site containing the Subnet

+
vpcId
string <uuid>

ID of the VPC containing the Subnet

+
controllerNetworkSegmentId
string or null <uuid>

ID of the Site Controller network segment corresponding to the Subnet

+
ipv4Prefix
string or null <ipv4>

The prefix that gets assigned to the subnet if ipv4 block is chosen

-
ipv4BlockId
string or null <uuid>
ipv4Gateway
string or null <ipv4>
ipv6Prefix
string or null <ipv6>
ipv6BlockId
string or null <uuid>
ipv6Gateway
string or null <ipv6>
mtu
integer
ipv4BlockId
string or null <uuid>

ID of the derived Tenant IPv4 Block from an Allocation

+
ipv4Gateway
string or null <ipv4>

Address of the IPv4 gateway in the Subnet

+
ipv6Prefix
string or null <ipv6>

Prefix of the network in CIDR notation

+
ipv6BlockId
string or null <uuid>

ID of the derived Tenant IPv6 Block from an Allocation

+
ipv6Gateway
string or null <ipv6>

Address of the IPv6 gateway in the Subnet

+
mtu
integer

Maximum Transmission Unit size in bytes. This property is system-determined and read-only.

prefixLength
integer

Max value depends on prefix length of parent IP Block

-
routingType
string or null
Enum: "Public" "DatacenterOnly"
status
string (SubnetStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status values for Subnet objects

+
routingType
string or null
Enum: "Public" "DatacenterOnly"

Routing type of the Subnet

+
status
string (SubnetStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status of the Subnet

object (IpBlockUsageStats)

Present when query param includeUsageStats=true. Prefix and IP usage data is derived by evaluating associated Ethernet interfaces. Each Interface associated with a Subnet consumes a single IP. In addition, 1 gateway and 1 broadcast IP address is reserved per Subnet.

availableIPs
integer <int64>
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Total number of /30 prefixes that can still be acquired from this block (only reduced if prefixes are acquired, not reduced by acquired IPs)

acquiredPrefixes
integer <int64>

Total number of prefixes (of any size) acquired from this block

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
updated
string <date-time>
Array of objects (Deprecation)
Array
attribute
string or null

Name of the attribute that is deprecated. Omitted if queryParam or endpoint is being deprecated.

-
queryParam
string or null

Query parameter that is deprecated. Omitted if attribute or endpoint is being deprecated.

-
endpoint
string or null

API endpoint that is deprecated. Omitted if attribute or queryParam is being deprecated.

-
replacedBy
string or null

Name of the attribute, query parameter, or endpoint that replaces the deprecated item. Omitted if no replacement is available.

-
takeActionBy
string <date-time>

ISO datetime string for when the deprecated field will no longer be accepted or available in the API

-
notice
string

Message describing the deprecation

-
Array of objects (StatusDetail)

Chronological status history for the Subnet

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the Subnet was created

+
updated
string <date-time>

Date/time when the Subnet was last updated

+

Request samples

Content type
application/json
{
  • "name": "spark-gpu-subnet",
  • "description": "Subnet for dedicated GPU nodes"
}

Response samples

Content type
application/json
{
  • "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": [
    ],
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Expected Machine

https://nico-rest-api.nico.svc.cluster.local/v2/org/{org}/nico/subnet/{subnetId}

Request samples

Content type
application/json
{
  • "name": "spark-gpu-subnet",
  • "description": "Subnet for dedicated GPU nodes"
}

Response samples

Content type
application/json
{
  • "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",
  • "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": [
    ],
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Expected Machine

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.

@@ -2858,8 +3698,8 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Product name of the Machine

maintenanceMessage
string or null

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
string (MachineStatus)
Enum: "Initializing" "Ready" "Reset" "Maintenance" "InUse" "Error" "Decommissioned" "Unknown"

Status values for Machine objects

+
status
string (MachineStatus)
Enum: "Initializing" "Ready" "Reset" "Maintenance" "InUse" "Error" "Decommissioned" "Unknown"

Status represents the status of the machine

rackId
string or null

Optional rack identifier for this component

bmcIpAddress
string or null
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Product name of the Machine

maintenanceMessage
string or null

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
string (MachineStatus)
Enum: "Initializing" "Ready" "Reset" "Maintenance" "InUse" "Error" "Decommissioned" "Unknown"

Status values for Machine objects

+
status
string (MachineStatus)
Enum: "Initializing" "Ready" "Reset" "Maintenance" "InUse" "Error" "Decommissioned" "Unknown"

Status represents the status of the machine

rackId
string or null

Optional rack identifier for this component

bmcIpAddress
string or null
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Product name of the Machine

maintenanceMessage
string or null

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
string (MachineStatus)
Enum: "Initializing" "Ready" "Reset" "Maintenance" "InUse" "Error" "Decommissioned" "Unknown"

Status values for Machine objects

+
status
string (MachineStatus)
Enum: "Initializing" "Ready" "Reset" "Maintenance" "InUse" "Error" "Decommissioned" "Unknown"

Status represents the status of the machine

rackId
string or null

Optional rack identifier for this component

bmcIpAddress
string or null
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Product name of the Machine

maintenanceMessage
string or null

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
string (MachineStatus)
Enum: "Initializing" "Ready" "Reset" "Maintenance" "InUse" "Error" "Decommissioned" "Unknown"

Status values for Machine objects

+
status
string (MachineStatus)
Enum: "Initializing" "Ready" "Reset" "Maintenance" "InUse" "Error" "Decommissioned" "Unknown"

Status represents the status of the machine

rackId
string or null

Optional rack identifier for this component

bmcIpAddress
string or null
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Product name of the Machine

maintenanceMessage
string or null

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
string (MachineStatus)
Enum: "Initializing" "Ready" "Reset" "Maintenance" "InUse" "Error" "Decommissioned" "Unknown"

Status values for Machine objects

+
status
string (MachineStatus)
Enum: "Initializing" "Ready" "Reset" "Maintenance" "InUse" "Error" "Decommissioned" "Unknown"

Status represents the status of the machine

rackId
string or null

Optional rack identifier for this component

bmcIpAddress
string or null
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Product name of the Machine

maintenanceMessage
string or null

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
string (MachineStatus)
Enum: "Initializing" "Ready" "Reset" "Maintenance" "InUse" "Error" "Decommissioned" "Unknown"

Status values for Machine objects

+
status
string (MachineStatus)
Enum: "Initializing" "Ready" "Reset" "Maintenance" "InUse" "Error" "Decommissioned" "Unknown"

Status represents the status of the machine

rackId
string or null

Optional rack identifier for this component

bmcIpAddress
string or null
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB sc-cittYi iNuSsz eBjiEo hynizp">

Error response when requested object is not found

Response samples

Content type
application/json
{
  • "source": "nico",
  • "message": "Error validating request data",
  • "data": {
    }
}

Expected Switch

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.

+
https://nico-rest-api.nico.svc.cluster.local/v2/org/{org}/nico/expected-rack/{id}

Response samples

Content type
application/json
{
  • "source": "nico",
  • "message": "Error validating request data",
  • "data": {
    }
}

Expected Switch

Expected Switch identifies an NVLink 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 NVLink Switch discovery and ingestion.

Create Expected Switch

Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

TPM components

Array
vendor
string

Vendor of the TPM

-
model
string

Model of the TPM

-
count
integer <uint32>

Number of TPMs present

+
version
string

Version of the TPM

created
string <date-time>

ISO 8601 datetime when the SKU was created

updated
string <date-time>
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB sc-cittYi iNuSsz eBjiEo hynizp">

OK

Response Headers
X-Pagination
string
Example: "{\"pageNumber\":1,\"pageSize\":20,\"total\":30,\"orderBy\": \"CREATED_DESC\"}"

Pagination result in JSON format

-
Response Schema: application/json
Array
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string or null
siteId
string <uuid>
tenantId
string <uuid>
controllerIBPartitionId
string or null <uuid>
partitionKey
string or null
partitionName
string or null
serviceLevel
integer or null [ 0 .. 15 ]
rateLimit
number or null
Enum: 2 5 10 14 20 25 30 40 56 60 80 100 112 120 168 200 300
mtu
integer or null
Enum: 4000 8000
enableSharp
boolean
object (Labels) <= 10 properties
Response Schema: application/json
Array
id
string <uuid>

Unique UUID v4 identifier for the InfiniBand Partition

+
name
string [ 2 .. 256 ] characters

Name of the InfiniBand Partition

+
description
string or null

Description of the InfiniBand Partition

+
siteId
string <uuid>

ID of the Site

+
tenantId
string <uuid>

ID of the Tenant

+
controllerIBPartitionId
string or null <uuid>

ID of the Site Controller InfiniBand partition corresponding to this InfiniBand Partition

+
partitionKey
string or null

Partition key assigned to the InfiniBand Partition

+
partitionName
string or null

Partition name assigned to the InfiniBand Partition

+
serviceLevel
integer or null [ 0 .. 15 ]

Service level configured for the InfiniBand Partition

+
rateLimit
number or null
Enum: 2 5 10 14 20 25 30 40 56 60 80 100 112 120 168 200 300

Rate limit configured for the InfiniBand Partition

+
mtu
integer or null
Enum: 4000 8000

MTU configured for the InfiniBand Partition

+
enableSharp
boolean

Whether SHARP is enabled for the InfiniBand Partition

+
object (Labels) <= 10 properties

String key value pairs describing InfiniBand Partition labels. Up to 10 key value pairs can be specified

-
property name*
additional property
string
status
string (InfiniBandPartitionStatus)
Enum: "Pending" "Provisioning" "Ready" "Configuring" "Deleting" "Error"

Status values for InfiniBand Partition objects

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
updated
string <date-time>
status
string (InfiniBandPartitionStatus)
Enum: "Pending" "Provisioning" "Ready" "Configuring" "Deleting" "Error"

Status of the InfiniBand Partition

+
Array of objects (StatusDetail)

Chronological status history for the InfiniBand Partition

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the InfiniBand Partition was created

+
updated
string <date-time>

Date/time when the InfiniBand Partition was last updated

+
property name*
additional property
string

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string or null
siteId
string <uuid>
tenantId
string <uuid>
controllerIBPartitionId
string or null <uuid>
partitionKey
string or null
partitionName
string or null
serviceLevel
integer or null [ 0 .. 15 ]
rateLimit
number or null
Enum: 2 5 10 14 20 25 30 40 56 60 80 100 112 120 168 200 300
mtu
integer or null
Enum: 4000 8000
enableSharp
boolean
object (Labels) <= 10 properties
Response Schema: application/json
id
string <uuid>

Unique UUID v4 identifier for the InfiniBand Partition

+
name
string [ 2 .. 256 ] characters

Name of the InfiniBand Partition

+
description
string or null

Description of the InfiniBand Partition

+
siteId
string <uuid>

ID of the Site

+
tenantId
string <uuid>

ID of the Tenant

+
controllerIBPartitionId
string or null <uuid>

ID of the Site Controller InfiniBand partition corresponding to this InfiniBand Partition

+
partitionKey
string or null

Partition key assigned to the InfiniBand Partition

+
partitionName
string or null

Partition name assigned to the InfiniBand Partition

+
serviceLevel
integer or null [ 0 .. 15 ]

Service level configured for the InfiniBand Partition

+
rateLimit
number or null
Enum: 2 5 10 14 20 25 30 40 56 60 80 100 112 120 168 200 300

Rate limit configured for the InfiniBand Partition

+
mtu
integer or null
Enum: 4000 8000

MTU configured for the InfiniBand Partition

+
enableSharp
boolean

Whether SHARP is enabled for the InfiniBand Partition

+
object (Labels) <= 10 properties

String key value pairs describing InfiniBand Partition labels. Up to 10 key value pairs can be specified

-
property name*
additional property
string
status
string (InfiniBandPartitionStatus)
Enum: "Pending" "Provisioning" "Ready" "Configuring" "Deleting" "Error"

Status values for InfiniBand Partition objects

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
updated
string <date-time>
status
string (InfiniBandPartitionStatus)
Enum: "Pending" "Provisioning" "Ready" "Configuring" "Deleting" "Error"

Status of the InfiniBand Partition

+
Array of objects (StatusDetail)

Chronological status history for the InfiniBand Partition

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the InfiniBand Partition was created

+
updated
string <date-time>

Date/time when the InfiniBand Partition was last updated

+

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string or null
siteId
string <uuid>
tenantId
string <uuid>
controllerIBPartitionId
string or null <uuid>
partitionKey
string or null
partitionName
string or null
serviceLevel
integer or null [ 0 .. 15 ]
rateLimit
number or null
Enum: 2 5 10 14 20 25 30 40 56 60 80 100 112 120 168 200 300
mtu
integer or null
Enum: 4000 8000
enableSharp
boolean
object (Labels) <= 10 properties
Response Schema: application/json
id
string <uuid>

Unique UUID v4 identifier for the InfiniBand Partition

+
name
string [ 2 .. 256 ] characters

Name of the InfiniBand Partition

+
description
string or null

Description of the InfiniBand Partition

+
siteId
string <uuid>

ID of the Site

+
tenantId
string <uuid>

ID of the Tenant

+
controllerIBPartitionId
string or null <uuid>

ID of the Site Controller InfiniBand partition corresponding to this InfiniBand Partition

+
partitionKey
string or null

Partition key assigned to the InfiniBand Partition

+
partitionName
string or null

Partition name assigned to the InfiniBand Partition

+
serviceLevel
integer or null [ 0 .. 15 ]

Service level configured for the InfiniBand Partition

+
rateLimit
number or null
Enum: 2 5 10 14 20 25 30 40 56 60 80 100 112 120 168 200 300

Rate limit configured for the InfiniBand Partition

+
mtu
integer or null
Enum: 4000 8000

MTU configured for the InfiniBand Partition

+
enableSharp
boolean

Whether SHARP is enabled for the InfiniBand Partition

+
object (Labels) <= 10 properties

String key value pairs describing InfiniBand Partition labels. Up to 10 key value pairs can be specified

-
property name*
additional property
string
status
string (InfiniBandPartitionStatus)
Enum: "Pending" "Provisioning" "Ready" "Configuring" "Deleting" "Error"

Status values for InfiniBand Partition objects

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
updated
string <date-time>
status
string (InfiniBandPartitionStatus)
Enum: "Pending" "Provisioning" "Ready" "Configuring" "Deleting" "Error"

Status of the InfiniBand Partition

+
Array of objects (StatusDetail)

Chronological status history for the InfiniBand Partition

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the InfiniBand Partition was created

+
updated
string <date-time>

Date/time when the InfiniBand Partition was last updated

+
infiniBandPartitionId
required
string

ID of the InfiniBand Partition

-
Request Body schema: application/json
name
required
string [ 2 .. 256 ] characters
description
string or null
object (Labels) <= 10 properties
Request Body schema: application/json
name
required
string [ 2 .. 256 ] characters

Name of the InfiniBand Partition

+
description
string or null

Description of the InfiniBand Partition

+
object (Labels) <= 10 properties

String key value pairs describing Partition labels. Up to 10 key value pairs can be specified

property name*
additional property
string

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string or null
siteId
string <uuid>
tenantId
string <uuid>
controllerIBPartitionId
string or null <uuid>
partitionKey
string or null
partitionName
string or null
serviceLevel
integer or null [ 0 .. 15 ]
rateLimit
number or null
Enum: 2 5 10 14 20 25 30 40 56 60 80 100 112 120 168 200 300
mtu
integer or null
Enum: 4000 8000
enableSharp
boolean
object (Labels) <= 10 properties
Response Schema: application/json
id
string <uuid>

Unique UUID v4 identifier for the InfiniBand Partition

+
name
string [ 2 .. 256 ] characters

Name of the InfiniBand Partition

+
description
string or null

Description of the InfiniBand Partition

+
siteId
string <uuid>

ID of the Site

+
tenantId
string <uuid>

ID of the Tenant

+
controllerIBPartitionId
string or null <uuid>

ID of the Site Controller InfiniBand partition corresponding to this InfiniBand Partition

+
partitionKey
string or null

Partition key assigned to the InfiniBand Partition

+
partitionName
string or null

Partition name assigned to the InfiniBand Partition

+
serviceLevel
integer or null [ 0 .. 15 ]

Service level configured for the InfiniBand Partition

+
rateLimit
number or null
Enum: 2 5 10 14 20 25 30 40 56 60 80 100 112 120 168 200 300

Rate limit configured for the InfiniBand Partition

+
mtu
integer or null
Enum: 4000 8000

MTU configured for the InfiniBand Partition

+
enableSharp
boolean

Whether SHARP is enabled for the InfiniBand Partition

+
object (Labels) <= 10 properties

String key value pairs describing InfiniBand Partition labels. Up to 10 key value pairs can be specified

-
property name*
additional property
string
status
string (InfiniBandPartitionStatus)
Enum: "Pending" "Provisioning" "Ready" "Configuring" "Deleting" "Error"

Status values for InfiniBand Partition objects

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
updated
string <date-time>
status
string (InfiniBandPartitionStatus)
Enum: "Pending" "Provisioning" "Ready" "Configuring" "Deleting" "Error"

Status of the InfiniBand Partition

+
Array of objects (StatusDetail)

Chronological status history for the InfiniBand Partition

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the InfiniBand Partition was created

+
updated
string <date-time>

Date/time when the InfiniBand Partition was last updated

+
Response Headers
X-Pagination
string
Example: "{\"pageNumber\":1,\"pageSize\":20,\"total\":30,\"orderBy\": \"CREATED_DESC\"}"

Pagination result in JSON format

-
Response Schema: application/json
Array
id
string <uuid> non-empty
instanceId
string <uuid>
partitionId
string <uuid>
Response Schema: application/json
Array
id
string <uuid> non-empty

Unique UUID v4 identifier for the InfiniBandInterface

+
instanceId
string <uuid>

ID of the associated Instance

+
partitionId
string <uuid>

ID of the InfiniBand Partition associated with this interface

device
string

Name of the InfiniBand device associated with this interface

-
deviceInstance
integer
isPhysical
boolean
vendor
string or null

Name of the InfiniBand device vendor associated with this interface

+
deviceInstance
integer

Index of the device where partition attach to

+
isPhysical
boolean

Indicates whether this is a physical interface

-
virtualFunctionId
integer or null
guid
string or null
status
string (InfiniBandInterfaceStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status values for InfiniBand Interface objects

-
created
string <date-time>
updated
string <date-time>
virtualFunctionId
integer or null

Must be specified if isPhysical is false

+
guid
string or null

Must be specified if isPhysical is false

+
status
string (InfiniBandInterfaceStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status of the InfiniBandInterface

+
created
string <date-time>

Date/time when the InfiniBandInterface was created

+
updated
string <date-time>

Date/time when the InfiniBandInterface was last updated

+

Response samples

Content type
application/json
[
  • {
    }
]
Array of objects (StatusDetail)

Details of status changes for the NVLink Logical Partition over time

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
object (NVLinkLogicalPartitionStats)

GPU and Instance usage counts for the NVLink Logical Partition. Returned if includeStats query param is set to true in retrieval endpoints

+
totalGpus
integer

Total number of GPUs associated with the NVLink Logical Partition

+
totalDistinctInstances
integer

Total number of distinct Instances associated with the NVLink Logical Partition

+
created
string <date-time>

Date and time the NVLink Logical Partition was created

updated
string <date-time>

Date and time the NVLink Logical Partition was last updated

@@ -4906,7 +5938,21 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Status of the NVLink Logical Partition

Array of objects (StatusDetail)

Details of status changes for the NVLink Logical Partition over time

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
object (NVLinkLogicalPartitionStats)

GPU and Instance usage counts for the NVLink Logical Partition. Returned if includeStats query param is set to true in retrieval endpoints

+
totalGpus
integer

Total number of GPUs associated with the NVLink Logical Partition

+
totalDistinctInstances
integer

Total number of distinct Instances associated with the NVLink Logical Partition

+
created
string <date-time>

Date and time the NVLink Logical Partition was created

updated
string <date-time>

Date and time the NVLink Logical Partition was last updated

@@ -4948,7 +5994,21 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Status of the NVLink Logical Partition

Array of objects (StatusDetail)

Details of status changes for the NVLink Logical Partition over time

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
object (NVLinkLogicalPartitionStats)

GPU and Instance usage counts for the NVLink Logical Partition. Returned if includeStats query param is set to true in retrieval endpoints

+
totalGpus
integer

Total number of GPUs associated with the NVLink Logical Partition

+
totalDistinctInstances
integer

Total number of distinct Instances associated with the NVLink Logical Partition

+
created
string <date-time>

Date and time the NVLink Logical Partition was created

updated
string <date-time>

Date and time the NVLink Logical Partition was last updated

@@ -4984,7 +6044,21 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Status of the NVLink Logical Partition

Array of objects (StatusDetail)

Details of status changes for the NVLink Logical Partition over time

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
object (NVLinkLogicalPartitionStats)

GPU and Instance usage counts for the NVLink Logical Partition. Returned if includeStats query param is set to true in retrieval endpoints

+
totalGpus
integer

Total number of GPUs associated with the NVLink Logical Partition

+
totalDistinctInstances
integer

Total number of distinct Instances associated with the NVLink Logical Partition

+
created
string <date-time>

Date and time the NVLink Logical Partition was created

updated
string <date-time>

Date and time the NVLink Logical Partition was last updated

@@ -5036,7 +6110,11 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB sc-cittYi iNuSsz eBjiEo hynizp">

OK

Response Headers
X-Pagination
string
Example: "{\"pageNumber\":1,\"pageSize\":20,\"total\":30,\"orderBy\": \"CREATED_DESC\"}"

Pagination result in JSON format

-
Response Schema: application/json
Array
id
string <uuid> non-empty
instanceId
string <uuid>
nvLinkLogicalPartitionId
string <uuid>
Response Schema: application/json
Array
id
string <uuid> non-empty

Unique UUID v4 identifier for the NVLinkInterface

+
instanceId
string <uuid>

ID of the associated Instance

+
nvLinkLogicalPartitionId
string <uuid>

ID of the NVLink Logical Partition associated with this interface

nvLinkDomainId
string or null <uuid>

ID of the NVLink Domain associated with this Interface

@@ -5044,9 +6122,27 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Index of the device, used to identify the GPU associated with this Interface

gpuGuid
string or null

Unique ID of the GPU

-
status
string (NVLinkInterfaceStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status values for NVLink Interface objects

-
created
string <date-time>
updated
string <date-time>
status
string (NVLinkInterfaceStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status of the NVLinkInterface

+
created
string <date-time>

Date/time when the NVLinkInterface was created

+
updated
string <date-time>

Date/time when the NVLinkInterface was last updated

+
Array of objects (Deprecation)

List of deprecations for NVLinkInterface API object

+
Array
attribute
string or null

Name of the attribute that is deprecated. Omitted if queryParam or endpoint is being deprecated.

+
queryParam
string or null

Query parameter that is deprecated. Omitted if attribute or endpoint is being deprecated.

+
endpoint
string or null

API endpoint that is deprecated. Omitted if attribute or queryParam is being deprecated.

+
replacedBy
string or null

Name of the attribute, query parameter, or endpoint that replaces the deprecated item. Omitted if no replacement is available.

+
takeActionBy
string <date-time>

Date/time by which clients should migrate away from the deprecated API surface

+
notice
string

Message describing the deprecation

+
Array of objects (OperatingSystemSiteAssociation)

Sites the Operating System is synced to

-
Array
object (SiteSummary)

SiteSummary contains a subset of data for Site object, used when nesting in other objects

-
status
string (SshKeyGroupStatus)
Enum: "Syncing" "Synced" "Error" "Deleting"

Status values for SSH Key Group objects

+
Array
object (SiteSummary)

Summary of the Site

+
status
string (SshKeyGroupStatus)
Enum: "Syncing" "Synced" "Error" "Deleting"

Status of the Operating SystemSiteAssociation

version
string or null

Version of the Key Group on Site

-
created
string <date-time>
updated
string <date-time>
status
string (OperatingSystemStatus)
Enum: "Pending" "Provisioning" "Syncing" "Ready" "Deleting" "Error" "Deactivated"
created
string <date-time>

Date/time when the Site was created

+
updated
string <date-time>

Date/time when the Site was last updated

+
status
string (OperatingSystemStatus)
Enum: "Pending" "Provisioning" "Syncing" "Ready" "Deleting" "Error" "Deactivated"

Status of the Operating System

Array of objects (StatusDetail)

History of status changes over time

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the Operating System was created

updated
string <date-time>

Date/time when the Operating System was updated

@@ -5230,17 +6338,29 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Indicates if the user data can be overridden at Instance creation time

Array of objects (OperatingSystemSiteAssociation)

Sites the Operating System is synced to

-
Array
object (SiteSummary)

SiteSummary contains a subset of data for Site object, used when nesting in other objects

-
status
string (SshKeyGroupStatus)
Enum: "Syncing" "Synced" "Error" "Deleting"

Status values for SSH Key Group objects

+
Array
object (SiteSummary)

Summary of the Site

+
status
string (SshKeyGroupStatus)
Enum: "Syncing" "Synced" "Error" "Deleting"

Status of the Operating SystemSiteAssociation

version
string or null

Version of the Key Group on Site

-
created
string <date-time>
updated
string <date-time>
status
string (OperatingSystemStatus)
Enum: "Pending" "Provisioning" "Syncing" "Ready" "Deleting" "Error" "Deactivated"
created
string <date-time>

Date/time when the Site was created

+
updated
string <date-time>

Date/time when the Site was last updated

+
status
string (OperatingSystemStatus)
Enum: "Pending" "Provisioning" "Syncing" "Ready" "Deleting" "Error" "Deactivated"

Status of the Operating System

Array of objects (StatusDetail)

History of status changes over time

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the Operating System was created

updated
string <date-time>

Date/time when the Operating System was updated

@@ -5306,17 +6426,29 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Indicates if the user data can be overridden at Instance creation time

Array of objects (OperatingSystemSiteAssociation)

Sites the Operating System is synced to

-
Array
object (SiteSummary)

SiteSummary contains a subset of data for Site object, used when nesting in other objects

-
status
string (SshKeyGroupStatus)
Enum: "Syncing" "Synced" "Error" "Deleting"

Status values for SSH Key Group objects

+
Array
object (SiteSummary)

Summary of the Site

+
status
string (SshKeyGroupStatus)
Enum: "Syncing" "Synced" "Error" "Deleting"

Status of the Operating SystemSiteAssociation

version
string or null

Version of the Key Group on Site

-
created
string <date-time>
updated
string <date-time>
status
string (OperatingSystemStatus)
Enum: "Pending" "Provisioning" "Syncing" "Ready" "Deleting" "Error" "Deactivated"
created
string <date-time>

Date/time when the Site was created

+
updated
string <date-time>

Date/time when the Site was last updated

+
status
string (OperatingSystemStatus)
Enum: "Pending" "Provisioning" "Syncing" "Ready" "Deleting" "Error" "Deactivated"

Status of the Operating System

Array of objects (StatusDetail)

History of status changes over time

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the Operating System was created

updated
string <date-time>

Date/time when the Operating System was updated

@@ -5426,17 +6558,29 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Indicates if the user data can be overridden at Instance creation time

Array of objects (OperatingSystemSiteAssociation)

Sites the Operating System is synced to

-
Array
object (SiteSummary)

SiteSummary contains a subset of data for Site object, used when nesting in other objects

-
status
string (SshKeyGroupStatus)
Enum: "Syncing" "Synced" "Error" "Deleting"

Status values for SSH Key Group objects

+
Array
object (SiteSummary)

Summary of the Site

+
status
string (SshKeyGroupStatus)
Enum: "Syncing" "Synced" "Error" "Deleting"

Status of the Operating SystemSiteAssociation

version
string or null

Version of the Key Group on Site

-
created
string <date-time>
updated
string <date-time>
status
string (OperatingSystemStatus)
Enum: "Pending" "Provisioning" "Syncing" "Ready" "Deleting" "Error" "Deactivated"
created
string <date-time>

Date/time when the Site was created

+
updated
string <date-time>

Date/time when the Site was last updated

+
status
string (OperatingSystemStatus)
Enum: "Pending" "Provisioning" "Syncing" "Ready" "Deleting" "Error" "Deactivated"

Status of the Operating System

Array of objects (StatusDetail)

History of status changes over time

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the Operating System was created

updated
string <date-time>

Date/time when the Operating System was updated

@@ -5484,7 +6628,23 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB sc-cittYi iNuSsz eBjiEo hynizp">

OK

Response Headers
X-Pagination
string
Example: "{\"pageNumber\":1,\"pageSize\":20,\"total\":30,\"orderBy\": \"CREATED_DESC\"}"

Pagination result in JSON format

-
Response Schema: application/json
Array
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string or null
controllerMachineType
string or null
infrastructureProviderId
string <uuid>
siteId
string <uuid>
object (Labels) <= 10 properties
property name*
additional property
string
Array of objects (MachineCapability)
Array
type
string
Enum: "CPU" "Memory" "Storage" "Network" "GPU" "InfiniBand" "DPU"
Response Schema: application/json
Array
id
string <uuid>

Unique UUID v4 identifier for the Instance Type

+
name
string [ 2 .. 256 ] characters

Name of the Instance Type

+
description
string or null

Description of the Instance Type

+
controllerMachineType
string or null

Machine type assigned by Site Controller

+
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider that owns the Instance Type

+
siteId
string <uuid>

ID of the Site that owns the Instance Type

+
object (Labels) <= 10 properties

User-defined key-value labels for the Instance Type

+
property name*
additional property
string
Array of objects (MachineCapability)

List of capabilities that are supported by the Machine's of this Instance Type

+
Array
type
string
Enum: "CPU" "Memory" "Storage" "Network" "GPU" "InfiniBand" "DPU"

Type of the Capability

name
string

Name of the Capability component

@@ -5498,6 +6658,8 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Capacity of the Capability component, if applicable

vendor
string or null

Vendor of the Capability component, if available

+
hardwareRevision
string or null

Hardware revision of the Capability component, if available

inactiveDevices
Array of integers

A list of inactive devices

count
integer or null
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Available only for Providers

Array
id
string <uuid>
Deprecated

Deprecated: Use machineId when identifying a Machine/Instance Type association. This field will be removed on July 9th, 2026 0:00 UTC.

-
machineId
string
instanceTypeId
string <uuid>
Array of objects (Deprecation)
created
string <date-time>
updated
string <date-time>
object (InstanceTypeAllocationStats)
machineId
string

ID of the associated Machine

+
instanceTypeId
string <uuid>

ID of the associated Instance Type

+
Array of objects (Deprecation)

Deprecation notices for fields returned by this resource

+
created
string <date-time>

Date and time the Machine Instance Type was created

+
updated
string <date-time>

Date and time the Machine Instance Type was last updated

+
object (InstanceTypeAllocationStats)

summary of machine counts by allocation status

assigned
integer

Total number of Machines assigned to this Instance Type

@@ -5522,9 +6694,21 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

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
integer

Maximum number of Machines of this Instance Type that can be allocated to a Tenant

-
status
string (InstanceTypeStatus)
Enum: "Pending" "Registering" "Ready" "Deleting" "Error"

Status values for Instance Type objects

-
Array of objects (StatusDetail)
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
Array of objects (Deprecation)
Array
attribute
string or null
status
string (InstanceTypeStatus)
Enum: "Pending" "Registering" "Ready" "Deleting" "Error"

Status of the Instance Type

+
Array of objects (StatusDetail)

Chronological status history for the Instance Type

+
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
Array of objects (Deprecation)

Deprecation notices for fields returned by this resource

+
Array
attribute
string or null

Name of the attribute that is deprecated. Omitted if queryParam or endpoint is being deprecated.

queryParam
string or null

Query parameter that is deprecated. Omitted if attribute or endpoint is being deprecated.

@@ -5532,11 +6716,15 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

API endpoint that is deprecated. Omitted if attribute or queryParam is being deprecated.

replacedBy
string or null

Name of the attribute, query parameter, or endpoint that replaces the deprecated item. Omitted if no replacement is available.

-
takeActionBy
string <date-time>

ISO datetime string for when the deprecated field will no longer be accepted or available in the API

+
takeActionBy
string <date-time>

Date/time by which clients should migrate away from the deprecated API surface

notice
string

Message describing the deprecation

-
created
string <date-time>
updated
string <date-time>
created
string <date-time>

Date/time when the InstanceType was created

+
updated
string <date-time>

Date/time when the InstanceType was last updated

+
Array
id
string <uuid>

Unique identifier for the key

-
name
string
org
string
tenantId
string <uuid>
fingerprint
string
name
string

Name of the SSHKey

+
org
string

Organization the SSHKey belongs to

+
tenantId
string <uuid>

ID of the Tenant

+
fingerprint
string

SHA256 fingerprint of the public key

created
string <date-time>

Date/time when the SSH key was created

@@ -9994,17 +12744,29 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Date/time when the SSH key was last updated

Array of objects (SshKeyGroupSiteAssociation)

Sites the SSH Key Group is synced to

-
Array
object (SiteSummary)

SiteSummary contains a subset of data for Site object, used when nesting in other objects

-
status
string (SshKeyGroupSiteAssociationStatus)
Enum: "Syncing" "Synced" "Pending" "Error" "Deleting"

Status values for SSH Key Group Site Association objects

+
Array
object (SiteSummary)

Summary of the Site

+
status
string (SshKeyGroupSiteAssociationStatus)
Enum: "Syncing" "Synced" "Pending" "Error" "Deleting"

Status of the SSHKeyGroupSiteAssociation

version
string or null

Version of the Key Group on Site

-
created
string <date-time>
updated
string <date-time>
status
string (SshKeyGroupStatus)
Enum: "Syncing" "Synced" "Error" "Deleting"
created
string <date-time>

Date/time when the Site was created

+
updated
string <date-time>

Date/time when the Site was last updated

+
status
string (SshKeyGroupStatus)
Enum: "Syncing" "Synced" "Error" "Deleting"

Status of the SSH Key Group

Array of objects (StatusDetail)

History of the SSH Key Group states

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the SSH key was created

updated
string <date-time>

Date/time when the SSH key was last updated

@@ -10018,7 +12780,15 @@

Typical API Call Flow for Tenant

Org must have a Tenant entity. User must have authorization role with TENANT_ADMIN suffix.

Authorizations:
JWTBearerToken
path Parameters
org
required
string

Name of the Org

-
Request Body schema: application/json
name
required
string
description
string or null
siteIds
Array of strings <uuid> [ items <uuid > ]
sshKeyIds
Array of strings <uuid> [ items <uuid > ]

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the SSH Key Group

@@ -10036,7 +12806,13 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

SSH Keys associated with this SSH Key Group

Array
id
string <uuid>

Unique identifier for the key

-
name
string
org
string
tenantId
string <uuid>
fingerprint
string
name
string

Name of the SSHKey

+
org
string

Organization the SSHKey belongs to

+
tenantId
string <uuid>

ID of the Tenant

+
fingerprint
string

SHA256 fingerprint of the public key

created
string <date-time>

Date/time when the SSH key was created

@@ -10044,17 +12820,29 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Date/time when the SSH key was last updated

Array of objects (SshKeyGroupSiteAssociation)

Sites the SSH Key Group is synced to

-
Array
object (SiteSummary)

SiteSummary contains a subset of data for Site object, used when nesting in other objects

-
status
string (SshKeyGroupSiteAssociationStatus)
Enum: "Syncing" "Synced" "Pending" "Error" "Deleting"

Status values for SSH Key Group Site Association objects

+
Array
object (SiteSummary)

Summary of the Site

+
status
string (SshKeyGroupSiteAssociationStatus)
Enum: "Syncing" "Synced" "Pending" "Error" "Deleting"

Status of the SSHKeyGroupSiteAssociation

version
string or null

Version of the Key Group on Site

-
created
string <date-time>
updated
string <date-time>
status
string (SshKeyGroupStatus)
Enum: "Syncing" "Synced" "Error" "Deleting"
created
string <date-time>

Date/time when the Site was created

+
updated
string <date-time>

Date/time when the Site was last updated

+
status
string (SshKeyGroupStatus)
Enum: "Syncing" "Synced" "Error" "Deleting"

Status of the SSH Key Group

Array of objects (StatusDetail)

History of the SSH Key Group states

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the SSH key was created

updated
string <date-time>

Date/time when the SSH key was last updated

@@ -10090,7 +12878,13 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

SSH Keys associated with this SSH Key Group

Array
id
string <uuid>

Unique identifier for the key

-
name
string
org
string
tenantId
string <uuid>
fingerprint
string
name
string

Name of the SSHKey

+
org
string

Organization the SSHKey belongs to

+
tenantId
string <uuid>

ID of the Tenant

+
fingerprint
string

SHA256 fingerprint of the public key

created
string <date-time>

Date/time when the SSH key was created

@@ -10098,17 +12892,29 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Date/time when the SSH key was last updated

Array of objects (SshKeyGroupSiteAssociation)

Sites the SSH Key Group is synced to

-
Array
object (SiteSummary)

SiteSummary contains a subset of data for Site object, used when nesting in other objects

-
status
string (SshKeyGroupSiteAssociationStatus)
Enum: "Syncing" "Synced" "Pending" "Error" "Deleting"

Status values for SSH Key Group Site Association objects

+
Array
object (SiteSummary)

Summary of the Site

+
status
string (SshKeyGroupSiteAssociationStatus)
Enum: "Syncing" "Synced" "Pending" "Error" "Deleting"

Status of the SSHKeyGroupSiteAssociation

version
string or null

Version of the Key Group on Site

-
created
string <date-time>
updated
string <date-time>
status
string (SshKeyGroupStatus)
Enum: "Syncing" "Synced" "Error" "Deleting"
created
string <date-time>

Date/time when the Site was created

+
updated
string <date-time>

Date/time when the Site was last updated

+
status
string (SshKeyGroupStatus)
Enum: "Syncing" "Synced" "Error" "Deleting"

Status of the SSH Key Group

Array of objects (StatusDetail)

History of the SSH Key Group states

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the SSH key was created

updated
string <date-time>

Date/time when the SSH key was last updated

@@ -10142,7 +12948,11 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Name of the Org

sshKeyGroupId
required
string

ID of the SSH Key Group

-
Request Body schema: application/json
name
string or null
description
string or null
siteIds
Array of strings <uuid> [ items <uuid > ]
Request Body schema: application/json
name
string or null

Name of the SSHKeyGroup

+
description
string or null

Description of the SSHKeyGroup

+
siteIds
Array of strings <uuid> [ items <uuid > ]

When specified, replaces existing Site associations

sshKeyIds
Array of strings <uuid> [ items <uuid > ]

When specified, replaces existing SSH Key associations

@@ -10166,7 +12976,13 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

SSH Keys associated with this SSH Key Group

Array
id
string <uuid>

Unique identifier for the key

-
name
string
org
string
tenantId
string <uuid>
fingerprint
string
name
string

Name of the SSHKey

+
org
string

Organization the SSHKey belongs to

+
tenantId
string <uuid>

ID of the Tenant

+
fingerprint
string

SHA256 fingerprint of the public key

created
string <date-time>

Date/time when the SSH key was created

@@ -10174,17 +12990,29 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Date/time when the SSH key was last updated

Array of objects (SshKeyGroupSiteAssociation)

Sites the SSH Key Group is synced to

-
Array
object (SiteSummary)

SiteSummary contains a subset of data for Site object, used when nesting in other objects

-
status
string (SshKeyGroupSiteAssociationStatus)
Enum: "Syncing" "Synced" "Pending" "Error" "Deleting"

Status values for SSH Key Group Site Association objects

+
Array
object (SiteSummary)

Summary of the Site

+
status
string (SshKeyGroupSiteAssociationStatus)
Enum: "Syncing" "Synced" "Pending" "Error" "Deleting"

Status of the SSHKeyGroupSiteAssociation

version
string or null

Version of the Key Group on Site

-
created
string <date-time>
updated
string <date-time>
status
string (SshKeyGroupStatus)
Enum: "Syncing" "Synced" "Error" "Deleting"
created
string <date-time>

Date/time when the Site was created

+
updated
string <date-time>

Date/time when the Site was last updated

+
status
string (SshKeyGroupStatus)
Enum: "Syncing" "Synced" "Error" "Deleting"

Status of the SSH Key Group

Array of objects (StatusDetail)

History of the SSH Key Group states

-
Array
status
string
message
string or null
created
string <date-time>
updated
string <date-time>
created
string <date-time>
Array
status
string

State of the associated entity at a particular time

+
message
string or null

Description of the state and cause/remedy in case of error

+
created
string <date-time>

Date/time when the associated entity assumed the status

+
updated
string <date-time>

Date/time when the associated entity was last observed with this status

+
created
string <date-time>

Date/time when the SSH key was created

updated
string <date-time>

Date/time when the SSH key was last updated

@@ -10216,7 +13044,13 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Ordering for pagination query

Responses

Response Schema: application/json
Array
id
string <uuid>

Unique identifier for the key

-
name
string
org
string
tenantId
string <uuid>
fingerprint
string
name
string

Name of the SSHKey

+
org
string

Organization the SSHKey belongs to

+
tenantId
string <uuid>

ID of the Tenant

+
fingerprint
string

SHA256 fingerprint of the public key

created
string <date-time>

Date/time when the SSH key was created

@@ -10242,7 +13076,13 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB sc-cittYi iNuSsz eBjiEo hynizp">

Created

Response Schema: application/json
id
string <uuid>

Unique identifier for the key

-
name
string
org
string
tenantId
string <uuid>
fingerprint
string
name
string

Name of the SSHKey

+
org
string

Organization the SSHKey belongs to

+
tenantId
string <uuid>

ID of the Tenant

+
fingerprint
string

SHA256 fingerprint of the public key

created
string <date-time>

Date/time when the SSH key was created

@@ -10266,7 +13106,13 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

ID of the SSH Key

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the key

-
name
string
org
string
tenantId
string <uuid>
fingerprint
string
name
string

Name of the SSHKey

+
org
string

Organization the SSHKey belongs to

+
tenantId
string <uuid>

ID of the Tenant

+
fingerprint
string

SHA256 fingerprint of the public key

created
string <date-time>

Date/time when the SSH key was created

@@ -10304,11 +13150,19 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Name of the Org

sshKeyId
required
string

ID of the SSH Key

-
Request Body schema: application/json
name
string or null

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the key

-
name
string
org
string
tenantId
string <uuid>
fingerprint
string
name
string

Name of the SSHKey

+
org
string

Organization the SSHKey belongs to

+
tenantId
string <uuid>

ID of the Tenant

+
fingerprint
string

SHA256 fingerprint of the public key

created
string <date-time>

Date/time when the SSH key was created

@@ -10330,9 +13184,17 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB sc-cittYi iNuSsz eBjiEo hynizp">

User Found

Response Schema: application/json
id
string <uuid>

Unique identifier for the given user.

-
email
string or null <email>
firstName
string or null
lastName
string or null
created
string <date-time>
email
string or null <email>

Email used by the user to register with NGC

+
firstName
string or null

First name of the user

+
lastName
string or null

Surname of the user

+
created
string <date-time>

The date that the user was created.

-
updated
string <date-time>
updated
string <date-time>

Date/time when the user was last updated in NICo

+
id
string <uuid>

Unique identifier for the given user.

-
email
string or null <email>
firstName
string or null
lastName
string or null
created
string <date-time>
email
string or null <email>

Email used by the user to register with NGC

+
firstName
string or null

First name of the user

+
lastName
string or null

Surname of the user

+
created
string <date-time>

The date that the user was created.

-
updated
string <date-time>
orgName
string
updated
string <date-time>

Date/time when the user was last updated in NICo

+
orgName
string

Organization name

extraData
object

Extra data in JSON format

@@ -10424,9 +13294,17 @@

Typical API Call Flow for Tenant

" class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

User that executed the API call

id
string <uuid>

Unique identifier for the given user.

-
email
string or null <email>
firstName
string or null
lastName
string or null
created
string <date-time>
email
string or null <email>

Email used by the user to register with NGC

+
firstName
string or null

First name of the user

+
lastName
string or null

Surname of the user

+
created
string <date-time>

The date that the user was created.

-
updated
string <date-time>
orgName
string
updated
string <date-time>

Date/time when the user was last updated in NICo

+
orgName
string

Organization name

extraData
object

Extra data in JSON format

@@ -10596,7 +13474,15 @@

Typical API Call Flow for Tenant

keypair and arm a JWKS overlap window.

Responses

Response Schema: application/json
org
string
enabled
boolean
issuer
string
defaultAudience
string
allowedAudiences
Array of strings
Response Schema: application/json
org
string

Organization that owns the Tenant identity configuration

+
enabled
boolean

Whether Tenant identity token delegation is enabled

+
issuer
string

Issuer URL for Tenant identity tokens

+
defaultAudience
string

Default audience used for Tenant identity tokens

+
allowedAudiences
Array of strings
Typical API Call Flow for Tenant PUT supplied an empty list, the Core gRPC API substituted [defaultAudience] before persisting. Issuance rejects audiences outside this list.

-
tokenTtlSeconds
integer
subjectPrefix
string
tokenTtlSeconds
integer

Lifetime of issued Tenant identity tokens, in seconds

+
subjectPrefix
string
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Set on the inactive (previous) key during the JWKS overlap window; the Core gRPC API deletes the inactive slot once now >= expireAt. Null on the current signer.

-
created
string <date-time>
updated
string <date-time>
created
string <date-time>

Date/time when the Tenant identity configuration was created

+
updated
string <date-time>

Date/time when the Tenant identity configuration was last updated

+
Response Schema: application/json
org
string
enabled
boolean
issuer
string
defaultAudience
string
allowedAudiences
Array of strings
Response Schema: application/json
org
string

Organization that owns the Tenant identity configuration

+
enabled
boolean

Whether Tenant identity token delegation is enabled

+
issuer
string

Issuer URL for Tenant identity tokens

+
defaultAudience
string

Default audience used for Tenant identity tokens

+
allowedAudiences
Array of strings
Typical API Call Flow for Tenant PUT supplied an empty list, the Core gRPC API substituted [defaultAudience] before persisting. Issuance rejects audiences outside this list.

-
tokenTtlSeconds
integer
subjectPrefix
string
tokenTtlSeconds
integer

Lifetime of issued Tenant identity tokens, in seconds

+
subjectPrefix
string
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Set on the inactive (previous) key during the JWKS overlap window; the Core gRPC API deletes the inactive slot once now >= expireAt. Null on the current signer.

-
created
string <date-time>
updated
string <date-time>
created
string <date-time>

Date/time when the Tenant identity configuration was created

+
updated
string <date-time>

Date/time when the Tenant identity configuration was last updated

+

Responses

Response Schema: application/json
org
string
enabled
boolean
issuer
string
defaultAudience
string
allowedAudiences
Array of strings
Response Schema: application/json
org
string

Organization that owns the Tenant identity configuration

+
enabled
boolean

Whether Tenant identity token delegation is enabled

+
issuer
string

Issuer URL for Tenant identity tokens

+
defaultAudience
string

Default audience used for Tenant identity tokens

+
allowedAudiences
Array of strings
Typical API Call Flow for Tenant PUT supplied an empty list, the Core gRPC API substituted [defaultAudience] before persisting. Issuance rejects audiences outside this list.

-
tokenTtlSeconds
integer
subjectPrefix
string
tokenTtlSeconds
integer

Lifetime of issued Tenant identity tokens, in seconds

+
subjectPrefix
string
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Set on the inactive (previous) key during the JWKS overlap window; the Core gRPC API deletes the inactive slot once now >= expireAt. Null on the current signer.

-
created
string <date-time>
updated
string <date-time>
created
string <date-time>

Date/time when the Tenant identity configuration was created

+
updated
string <date-time>

Date/time when the Tenant identity configuration was last updated

+
object (TenantIdentityBasicClientSecretRequest)

Raw OAuth2 client_secret_basic credentials. clientSecret is accepted on input but never returned in responses.

-
clientId
required
string
clientSecret
required
string
object (TenantIdentityBasicClientSecretRequest)

Client-secret basic authentication settings for token delegation

+
clientId
required
string

Client identifier used for basic client-secret authentication

+
clientSecret
required
string
Typical API Call Flow for Tenant " class="sc-iJuXkV sc-cBNeAB iNuSsz dyntKg">

Audience value placed on the intermediate JWT-SVID posted to the exchange endpoint.

Responses

Response Schema: application/json
tokenEndpoint
string <uri>
object (TenantIdentityBasicClientSecretResponse)

Public half of client_secret_basic credentials. Only the SHA-256 hash of the secret is returned.

-
clientId
string
clientSecretHash
string
Response Schema: application/json
tokenEndpoint
string <uri>

Token endpoint used to exchange delegated Tenant identity tokens

+
object (TenantIdentityBasicClientSecretResponse)

Client-secret basic authentication settings for token delegation

+
clientId
string

Client identifier used for basic client-secret authentication

+
clientSecretHash
string

SHA-256 hash of the raw secret.

-
subjectTokenAudience
string
created
string <date-time>
updated
string <date-time>
subjectTokenAudience
string

Audience value expected on the subject token

+
created
string <date-time>

Date/time when the token delegation configuration was created

+
updated
string <date-time>

Date/time when the token delegation configuration was last updated

+
Response Schema: application/json
tokenEndpoint
string <uri>
object (TenantIdentityBasicClientSecretResponse)

Public half of client_secret_basic credentials. Only the SHA-256 hash of the secret is returned.

-
clientId
string
clientSecretHash
string
Response Schema: application/json
tokenEndpoint
string <uri>

Token endpoint used to exchange delegated Tenant identity tokens

+
object (TenantIdentityBasicClientSecretResponse)

Client-secret basic authentication settings for token delegation

+
clientId
string

Client identifier used for basic client-secret authentication

+
clientSecretHash
string

SHA-256 hash of the raw secret.

-
subjectTokenAudience
string
created
string <date-time>
updated
string <date-time>
subjectTokenAudience
string

Audience value expected on the subject token

+
created
string <date-time>

Date/time when the token delegation configuration was created

+
updated
string <date-time>

Date/time when the token delegation configuration was last updated

+

Responses

Response Schema: application/json
tokenEndpoint
string <uri>
object (TenantIdentityBasicClientSecretResponse)

Public half of client_secret_basic credentials. Only the SHA-256 hash of the secret is returned.

-
clientId
string
clientSecretHash
string
Response Schema: application/json
tokenEndpoint
string <uri>

Token endpoint used to exchange delegated Tenant identity tokens

+
object (TenantIdentityBasicClientSecretResponse)

Client-secret basic authentication settings for token delegation

+
clientId
string

Client identifier used for basic client-secret authentication

+
clientSecretHash
string

SHA-256 hash of the raw secret.

-
subjectTokenAudience
string
created
string <date-time>
updated
string <date-time>
subjectTokenAudience
string

Audience value expected on the subject token

+
created
string <date-time>

Date/time when the token delegation configuration was created

+
updated
string <date-time>

Date/time when the token delegation configuration was last updated

+

Responses

Response Schema: application/json
issuer
string
jwks_uri
string <uri>
response_types_supported
Array of strings
subject_types_supported
Array of strings
id_token_signing_alg_values_supported
Array of strings
spiffe_jwks_uri
string <uri>