diff --git a/api/pkg/api/handler/expectedmachine.go b/api/pkg/api/handler/expectedmachine.go index feb0ca5a6..c8dde0951 100644 --- a/api/pkg/api/handler/expectedmachine.go +++ b/api/pkg/api/handler/expectedmachine.go @@ -228,6 +228,7 @@ func (cemh CreateExpectedMachineHandler) Handle(c echo.Context) error { ExpectedMachineID: uuid.New(), SiteID: site.ID, BmcMacAddress: apiRequest.BmcMacAddress, + BmcIpAddress: apiRequest.BmcIpAddress, ChassisSerialNumber: apiRequest.ChassisSerialNumber, SkuID: apiRequest.SkuID, FallbackDpuSerialNumbers: apiRequest.FallbackDPUSerialNumbers, @@ -681,6 +682,7 @@ func (uemh UpdateExpectedMachineHandler) Handle(c echo.Context) error { cdbm.ExpectedMachineUpdateInput{ ExpectedMachineID: expectedMachine.ID, BmcMacAddress: apiRequest.BmcMacAddress, + BmcIpAddress: apiRequest.BmcIpAddress, ChassisSerialNumber: apiRequest.ChassisSerialNumber, SkuID: apiRequest.SkuID, FallbackDpuSerialNumbers: apiRequest.FallbackDPUSerialNumbers, @@ -1099,6 +1101,7 @@ func (cemh CreateExpectedMachinesHandler) Handle(c echo.Context) error { ExpectedMachineID: id, SiteID: site.ID, BmcMacAddress: machineReq.BmcMacAddress, + BmcIpAddress: machineReq.BmcIpAddress, ChassisSerialNumber: machineReq.ChassisSerialNumber, SkuID: machineReq.SkuID, FallbackDpuSerialNumbers: machineReq.FallbackDPUSerialNumbers, @@ -1539,6 +1542,7 @@ func (uemh UpdateExpectedMachinesHandler) Handle(c echo.Context) error { updateInputs = append(updateInputs, cdbm.ExpectedMachineUpdateInput{ ExpectedMachineID: emID, BmcMacAddress: machineReq.BmcMacAddress, + BmcIpAddress: machineReq.BmcIpAddress, ChassisSerialNumber: machineReq.ChassisSerialNumber, SkuID: machineReq.SkuID, FallbackDpuSerialNumbers: machineReq.FallbackDPUSerialNumbers, diff --git a/api/pkg/api/handler/expectedmachine_test.go b/api/pkg/api/handler/expectedmachine_test.go index b7d1c0b6b..7fa42320f 100644 --- a/api/pkg/api/handler/expectedmachine_test.go +++ b/api/pkg/api/handler/expectedmachine_test.go @@ -337,6 +337,7 @@ func TestCreateExpectedMachineHandler_Handle(t *testing.T) { DefaultBmcPassword: cdb.GetStrPtr("password"), ChassisSerialNumber: "CHASSIS-RACK-001", RackID: cdb.GetStrPtr("test-rack-001"), + BmcIpAddress: cdb.GetStrPtr("192.168.1.10"), Labels: map[string]string{"env": "rack-test"}, }, setupContext: func(c echo.Context) { @@ -406,6 +407,11 @@ func TestCreateExpectedMachineHandler_Handle(t *testing.T) { assert.Equal(t, *tt.requestBody.RackID, *response.RackID, "RackID in response should match request") } } + if tt.requestBody.BmcIpAddress != nil { + if assert.NotNil(t, response.BmcIpAddress, "BmcIpAddress should not be nil in response") { + assert.Equal(t, *tt.requestBody.BmcIpAddress, *response.BmcIpAddress, "BmcIpAddress in response should match request") + } + } } }) } diff --git a/api/pkg/api/handler/expectedpowershelf.go b/api/pkg/api/handler/expectedpowershelf.go index f9bbd7202..95d91f534 100644 --- a/api/pkg/api/handler/expectedpowershelf.go +++ b/api/pkg/api/handler/expectedpowershelf.go @@ -165,7 +165,7 @@ func (cepsh CreateExpectedPowerShelfHandler) Handle(c echo.Context) error { SiteID: site.ID, BmcMacAddress: apiRequest.BmcMacAddress, ShelfSerialNumber: apiRequest.ShelfSerialNumber, - IpAddress: apiRequest.IpAddress, + BmcIpAddress: apiRequest.BmcIpAddress, RackID: apiRequest.RackID, Name: apiRequest.Name, Manufacturer: apiRequest.Manufacturer, @@ -603,7 +603,7 @@ func (uepsh UpdateExpectedPowerShelfHandler) Handle(c echo.Context) error { ExpectedPowerShelfID: expectedPowerShelf.ID, BmcMacAddress: apiRequest.BmcMacAddress, ShelfSerialNumber: apiRequest.ShelfSerialNumber, - IpAddress: apiRequest.IpAddress, + BmcIpAddress: apiRequest.BmcIpAddress, RackID: apiRequest.RackID, Name: apiRequest.Name, Manufacturer: apiRequest.Manufacturer, diff --git a/api/pkg/api/handler/expectedpowershelf_test.go b/api/pkg/api/handler/expectedpowershelf_test.go index a90576658..df3b64112 100644 --- a/api/pkg/api/handler/expectedpowershelf_test.go +++ b/api/pkg/api/handler/expectedpowershelf_test.go @@ -161,7 +161,7 @@ func TestCreateExpectedPowerShelfHandler_Handle(t *testing.T) { } } - validIpAddress := "192.168.1.100" + validBmcIpAddress := "192.168.1.100" tests := []struct { name string @@ -177,7 +177,7 @@ func TestCreateExpectedPowerShelfHandler_Handle(t *testing.T) { DefaultBmcUsername: cdb.GetStrPtr("admin"), DefaultBmcPassword: cdb.GetStrPtr("password"), ShelfSerialNumber: "SHELF123", - IpAddress: &validIpAddress, + BmcIpAddress: &validBmcIpAddress, Labels: map[string]string{"env": "test"}, }, setupContext: func(c echo.Context) { diff --git a/api/pkg/api/handler/expectedswitch.go b/api/pkg/api/handler/expectedswitch.go index 920dacdcf..4d1039f6f 100644 --- a/api/pkg/api/handler/expectedswitch.go +++ b/api/pkg/api/handler/expectedswitch.go @@ -164,6 +164,7 @@ func (cesh CreateExpectedSwitchHandler) Handle(c echo.Context) error { ExpectedSwitchID: uuid.New(), SiteID: site.ID, BmcMacAddress: apiRequest.BmcMacAddress, + BmcIpAddress: apiRequest.BmcIpAddress, SwitchSerialNumber: apiRequest.SwitchSerialNumber, RackID: apiRequest.RackID, Name: apiRequest.Name, @@ -603,6 +604,7 @@ func (uesh UpdateExpectedSwitchHandler) Handle(c echo.Context) error { cdbm.ExpectedSwitchUpdateInput{ ExpectedSwitchID: expectedSwitch.ID, BmcMacAddress: apiRequest.BmcMacAddress, + BmcIpAddress: apiRequest.BmcIpAddress, SwitchSerialNumber: apiRequest.SwitchSerialNumber, RackID: apiRequest.RackID, Name: apiRequest.Name, diff --git a/api/pkg/api/handler/expectedswitch_test.go b/api/pkg/api/handler/expectedswitch_test.go index 2f9fba449..f328a7451 100644 --- a/api/pkg/api/handler/expectedswitch_test.go +++ b/api/pkg/api/handler/expectedswitch_test.go @@ -177,6 +177,7 @@ func TestCreateExpectedSwitchHandler_Handle(t *testing.T) { SwitchSerialNumber: "SWITCH123", NvOsUsername: cdb.GetStrPtr("nvos-admin"), NvOsPassword: cdb.GetStrPtr("nvos-password"), + BmcIpAddress: cdb.GetStrPtr("192.168.1.10"), Labels: map[string]string{"env": "test"}, }, setupContext: func(c echo.Context) { @@ -290,12 +291,19 @@ func TestCreateExpectedSwitchHandler_Handle(t *testing.T) { t.Errorf("Response: %v", rec.Body.String()) } - if tt.expectedStatus == http.StatusCreated && tt.requestBody.Labels != nil { + if tt.expectedStatus == http.StatusCreated { var response model.APIExpectedSwitch err := json.Unmarshal(rec.Body.Bytes(), &response) assert.Nil(t, err) - assert.NotNil(t, response.Labels, "Labels should not be nil in response") - assert.Equal(t, tt.requestBody.Labels, response.Labels, "Labels in response should match request") + if tt.requestBody.Labels != nil { + assert.NotNil(t, response.Labels, "Labels should not be nil in response") + assert.Equal(t, tt.requestBody.Labels, response.Labels, "Labels in response should match request") + } + if tt.requestBody.BmcIpAddress != nil { + if assert.NotNil(t, response.BmcIpAddress, "BmcIpAddress should not be nil in response") { + assert.Equal(t, *tt.requestBody.BmcIpAddress, *response.BmcIpAddress, "BmcIpAddress in response should match request") + } + } } }) } @@ -735,6 +743,19 @@ func TestUpdateExpectedSwitchHandler_Handle(t *testing.T) { }, expectedStatus: http.StatusOK, }, + { + name: "successful update with BmcIpAddress", + id: testES.ID.String(), + requestBody: model.APIExpectedSwitchUpdateRequest{ + BmcIpAddress: cdb.GetStrPtr("192.168.1.42"), + }, + setupContext: func(c echo.Context) { + c.Set("user", createMockUser(org)) + c.SetParamNames("orgName", "id") + c.SetParamValues(org, testES.ID.String()) + }, + expectedStatus: http.StatusOK, + }, { name: "body ID mismatch with URL should return 400", id: testES.ID.String(), @@ -787,6 +808,16 @@ func TestUpdateExpectedSwitchHandler_Handle(t *testing.T) { if tt.expectedStatus != rec.Code { t.Errorf("Response: %v", rec.Body.String()) } + + // Verify BmcIpAddress round-trips through the update response when set + if tt.expectedStatus == http.StatusOK && tt.requestBody.BmcIpAddress != nil { + var response model.APIExpectedSwitch + err := json.Unmarshal(rec.Body.Bytes(), &response) + assert.Nil(t, err) + if assert.NotNil(t, response.BmcIpAddress, "BmcIpAddress should not be nil in response") { + assert.Equal(t, *tt.requestBody.BmcIpAddress, *response.BmcIpAddress, "BmcIpAddress in response should match request") + } + } }) } } diff --git a/api/pkg/api/model/expectedmachine.go b/api/pkg/api/model/expectedmachine.go index 0af1f12f3..ac4e4aae4 100644 --- a/api/pkg/api/model/expectedmachine.go +++ b/api/pkg/api/model/expectedmachine.go @@ -53,6 +53,8 @@ type APIExpectedMachineCreateRequest struct { SkuID *string `json:"skuId"` // RackID is the optional rack identifier RackID *string `json:"rackId"` + // BmcIpAddress is the optional BMC IP address of the expected machine + BmcIpAddress *string `json:"bmcIpAddress"` // Name is the optional name of the expected machine Name *string `json:"name"` // Manufacturer is the optional manufacturer of the expected machine @@ -93,6 +95,10 @@ func (emcr *APIExpectedMachineCreateRequest) Validate() error { validation.NilOrNotEmpty.Error("SkuID cannot be empty")), validation.Field(&emcr.RackID, validation.NilOrNotEmpty.Error("RackID cannot be empty")), + validation.Field(&emcr.BmcIpAddress, + validation.NilOrNotEmpty.Error("BmcIpAddress cannot be empty"), + validation.When(emcr.BmcIpAddress != nil && *emcr.BmcIpAddress != "", + validationis.IP.Error("BmcIpAddress must be a valid IPv4 or IPv6 address"))), validation.Field(&emcr.Name, validation.NilOrNotEmpty.Error("Name cannot be empty")), validation.Field(&emcr.Manufacturer, @@ -134,6 +140,8 @@ type APIExpectedMachineUpdateRequest struct { SkuID *string `json:"skuId"` // RackID is the optional rack identifier RackID *string `json:"rackId"` + // BmcIpAddress is the optional BMC IP address of the expected machine + BmcIpAddress *string `json:"bmcIpAddress"` // Name is the optional name of the expected machine Name *string `json:"name"` // Manufacturer is the optional manufacturer of the expected machine @@ -189,6 +197,10 @@ func (emur *APIExpectedMachineUpdateRequest) Validate() error { validation.NilOrNotEmpty.Error("SkuID cannot be empty")), validation.Field(&emur.RackID, validation.NilOrNotEmpty.Error("RackID cannot be empty")), + validation.Field(&emur.BmcIpAddress, + validation.NilOrNotEmpty.Error("BmcIpAddress cannot be empty"), + validation.When(emur.BmcIpAddress != nil && *emur.BmcIpAddress != "", + validationis.IP.Error("BmcIpAddress must be a valid IPv4 or IPv6 address"))), validation.Field(&emur.Name, validation.NilOrNotEmpty.Error("Name cannot be empty")), validation.Field(&emur.Manufacturer, @@ -236,6 +248,8 @@ type APIExpectedMachine struct { Machine *APIMachineSummary `json:"machine,omitempty"` // RackID is the optional rack identifier RackID *string `json:"rackId"` + // BmcIpAddress is the optional BMC IP address of the expected machine + BmcIpAddress *string `json:"bmcIpAddress"` // Name is the optional name of the expected machine Name *string `json:"name"` // Manufacturer is the optional manufacturer of the expected machine @@ -271,6 +285,7 @@ func NewAPIExpectedMachine(dibp *cdbm.ExpectedMachine) *APIExpectedMachine { SkuID: dibp.SkuID, MachineID: dibp.MachineID, RackID: dibp.RackID, + BmcIpAddress: dibp.BmcIpAddress, Name: dibp.Name, Manufacturer: dibp.Manufacturer, Model: dibp.Model, diff --git a/api/pkg/api/model/expectedmachine_test.go b/api/pkg/api/model/expectedmachine_test.go index ff4ac2f00..238b6c39f 100644 --- a/api/pkg/api/model/expectedmachine_test.go +++ b/api/pkg/api/model/expectedmachine_test.go @@ -221,6 +221,62 @@ func TestAPIExpectedMachineCreateRequest_Validate(t *testing.T) { }, expectErr: true, }, + // BmcIpAddress validation tests + { + desc: "valid IPv4 BmcIpAddress", + obj: APIExpectedMachineCreateRequest{ + BmcMacAddress: "00:11:22:33:44:55", + DefaultBmcUsername: &validUsername, + DefaultBmcPassword: &validPassword, + ChassisSerialNumber: validChassisSerial, + BmcIpAddress: cdb.GetStrPtr("192.168.1.10"), + }, + expectErr: false, + }, + { + desc: "valid IPv6 BmcIpAddress", + obj: APIExpectedMachineCreateRequest{ + BmcMacAddress: "00:11:22:33:44:55", + DefaultBmcUsername: &validUsername, + DefaultBmcPassword: &validPassword, + ChassisSerialNumber: validChassisSerial, + BmcIpAddress: cdb.GetStrPtr("2001:db8::1"), + }, + expectErr: false, + }, + { + desc: "invalid BmcIpAddress", + obj: APIExpectedMachineCreateRequest{ + BmcMacAddress: "00:11:22:33:44:55", + DefaultBmcUsername: &validUsername, + DefaultBmcPassword: &validPassword, + ChassisSerialNumber: validChassisSerial, + BmcIpAddress: cdb.GetStrPtr("not-an-ip"), + }, + expectErr: true, + }, + { + desc: "empty BmcIpAddress (pointer set, value empty)", + obj: APIExpectedMachineCreateRequest{ + BmcMacAddress: "00:11:22:33:44:55", + DefaultBmcUsername: &validUsername, + DefaultBmcPassword: &validPassword, + ChassisSerialNumber: validChassisSerial, + BmcIpAddress: &emptyString, + }, + expectErr: true, + }, + { + desc: "nil BmcIpAddress (default)", + obj: APIExpectedMachineCreateRequest{ + BmcMacAddress: "00:11:22:33:44:55", + DefaultBmcUsername: &validUsername, + DefaultBmcPassword: &validPassword, + ChassisSerialNumber: validChassisSerial, + BmcIpAddress: nil, + }, + expectErr: false, + }, } for _, tc := range tests { t.Run(tc.desc, func(t *testing.T) { @@ -508,6 +564,47 @@ func TestAPIExpectedMachineUpdateRequest_Validate(t *testing.T) { }, expectErr: true, }, + // BmcIpAddress validation tests + { + desc: "valid IPv4 BmcIpAddress", + obj: APIExpectedMachineUpdateRequest{ + ChassisSerialNumber: &validChassisSerial, + BmcIpAddress: cdb.GetStrPtr("192.168.1.10"), + }, + expectErr: false, + }, + { + desc: "valid IPv6 BmcIpAddress", + obj: APIExpectedMachineUpdateRequest{ + ChassisSerialNumber: &validChassisSerial, + BmcIpAddress: cdb.GetStrPtr("2001:db8::1"), + }, + expectErr: false, + }, + { + desc: "invalid BmcIpAddress", + obj: APIExpectedMachineUpdateRequest{ + ChassisSerialNumber: &validChassisSerial, + BmcIpAddress: cdb.GetStrPtr("not-an-ip"), + }, + expectErr: true, + }, + { + desc: "empty BmcIpAddress (pointer set, value empty)", + obj: APIExpectedMachineUpdateRequest{ + ChassisSerialNumber: &validChassisSerial, + BmcIpAddress: &emptyString, + }, + expectErr: true, + }, + { + desc: "nil BmcIpAddress (default)", + obj: APIExpectedMachineUpdateRequest{ + ChassisSerialNumber: &validChassisSerial, + BmcIpAddress: nil, + }, + expectErr: false, + }, } for _, tc := range tests { diff --git a/api/pkg/api/model/expectedpowershelf.go b/api/pkg/api/model/expectedpowershelf.go index 29bf08dd2..83994a5b7 100644 --- a/api/pkg/api/model/expectedpowershelf.go +++ b/api/pkg/api/model/expectedpowershelf.go @@ -42,8 +42,8 @@ type APIExpectedPowerShelfCreateRequest struct { DefaultBmcPassword *string `json:"defaultBmcPassword"` // ShelfSerialNumber is the serial number of the expected power shelf ShelfSerialNumber string `json:"shelfSerialNumber"` - // IpAddress is the IP address of the expected power shelf - IpAddress *string `json:"ipAddress"` + // BmcIpAddress is the BMC IP address of the expected power shelf + BmcIpAddress *string `json:"bmcIpAddress"` // RackID is the optional rack identifier RackID *string `json:"rackId"` // Name is the optional name of the expected power shelf @@ -85,6 +85,10 @@ func (epcr *APIExpectedPowerShelfCreateRequest) Validate() error { validation.Length(1, 32).Error("Shelf serial number must be 32 characters or less")), validation.Field(&epcr.RackID, validation.NilOrNotEmpty.Error("RackID cannot be empty")), + validation.Field(&epcr.BmcIpAddress, + validation.NilOrNotEmpty.Error("BmcIpAddress cannot be empty"), + validation.When(epcr.BmcIpAddress != nil && *epcr.BmcIpAddress != "", + validationis.IP.Error("BmcIpAddress must be a valid IPv4 or IPv6 address"))), validation.Field(&epcr.Name, validation.NilOrNotEmpty.Error("Name cannot be empty")), validation.Field(&epcr.Manufacturer, @@ -120,8 +124,8 @@ type APIExpectedPowerShelfUpdateRequest struct { DefaultBmcPassword *string `json:"defaultBmcPassword"` // ShelfSerialNumber is the serial number of the expected power shelf ShelfSerialNumber *string `json:"shelfSerialNumber"` - // IpAddress is the IP address of the expected power shelf - IpAddress *string `json:"ipAddress"` + // BmcIpAddress is the BMC IP address of the expected power shelf + BmcIpAddress *string `json:"bmcIpAddress"` // RackID is the optional rack identifier RackID *string `json:"rackId"` // Name is the optional name of the expected power shelf @@ -177,6 +181,10 @@ func (epur *APIExpectedPowerShelfUpdateRequest) Validate() error { validation.Length(1, 32).Error("Shelf Serial Number must be 1-32 characters")), validation.Field(&epur.RackID, validation.NilOrNotEmpty.Error("RackID cannot be empty")), + validation.Field(&epur.BmcIpAddress, + validation.NilOrNotEmpty.Error("BmcIpAddress cannot be empty"), + validation.When(epur.BmcIpAddress != nil && *epur.BmcIpAddress != "", + validationis.IP.Error("BmcIpAddress must be a valid IPv4 or IPv6 address"))), validation.Field(&epur.Name, validation.NilOrNotEmpty.Error("Name cannot be empty")), validation.Field(&epur.Manufacturer, @@ -212,8 +220,8 @@ type APIExpectedPowerShelf struct { Site *APISite `json:"site,omitempty"` // ShelfSerialNumber is the serial number of the expected power shelf ShelfSerialNumber string `json:"shelfSerialNumber"` - // IpAddress is the IP address of the expected power shelf - IpAddress *string `json:"ipAddress"` + // BmcIpAddress is the BMC IP address of the expected power shelf + BmcIpAddress *string `json:"bmcIpAddress"` // RackID is the optional rack identifier RackID *string `json:"rackId"` // Name is the optional name of the expected power shelf @@ -247,7 +255,7 @@ func NewAPIExpectedPowerShelf(dbModel *cdbm.ExpectedPowerShelf) *APIExpectedPowe BmcMacAddress: dbModel.BmcMacAddress, SiteID: dbModel.SiteID, ShelfSerialNumber: dbModel.ShelfSerialNumber, - IpAddress: dbModel.IpAddress, + BmcIpAddress: dbModel.BmcIpAddress, RackID: dbModel.RackID, Name: dbModel.Name, Manufacturer: dbModel.Manufacturer, diff --git a/api/pkg/api/model/expectedpowershelf_test.go b/api/pkg/api/model/expectedpowershelf_test.go index 50bb38e11..a9972dd8c 100644 --- a/api/pkg/api/model/expectedpowershelf_test.go +++ b/api/pkg/api/model/expectedpowershelf_test.go @@ -34,7 +34,7 @@ func TestAPIExpectedPowerShelfCreateRequest_Validate(t *testing.T) { validShelfSerial := "SHELF123" validUsername := "admin" validPassword := "password123" - validIpAddress := "192.168.1.100" + validBmcIpAddress := "192.168.1.100" tests := []struct { desc string @@ -60,7 +60,7 @@ func TestAPIExpectedPowerShelfCreateRequest_Validate(t *testing.T) { DefaultBmcUsername: &validUsername, DefaultBmcPassword: &validPassword, ShelfSerialNumber: validShelfSerial, - IpAddress: &validIpAddress, + BmcIpAddress: &validBmcIpAddress, Labels: map[string]string{"env": "test", "zone": "us-west-1"}, }, expectErr: false, @@ -225,6 +225,67 @@ func TestAPIExpectedPowerShelfCreateRequest_Validate(t *testing.T) { }, expectErr: true, }, + // BmcIpAddress validation tests + { + desc: "valid IPv4 BmcIpAddress", + obj: APIExpectedPowerShelfCreateRequest{ + SiteID: "550e8400-e29b-41d4-a716-446655440000", + BmcMacAddress: "00:11:22:33:44:55", + DefaultBmcUsername: &validUsername, + DefaultBmcPassword: &validPassword, + ShelfSerialNumber: validShelfSerial, + BmcIpAddress: cdb.GetStrPtr("192.168.1.10"), + }, + expectErr: false, + }, + { + desc: "valid IPv6 BmcIpAddress", + obj: APIExpectedPowerShelfCreateRequest{ + SiteID: "550e8400-e29b-41d4-a716-446655440000", + BmcMacAddress: "00:11:22:33:44:55", + DefaultBmcUsername: &validUsername, + DefaultBmcPassword: &validPassword, + ShelfSerialNumber: validShelfSerial, + BmcIpAddress: cdb.GetStrPtr("2001:db8::1"), + }, + expectErr: false, + }, + { + desc: "invalid BmcIpAddress", + obj: APIExpectedPowerShelfCreateRequest{ + SiteID: "550e8400-e29b-41d4-a716-446655440000", + BmcMacAddress: "00:11:22:33:44:55", + DefaultBmcUsername: &validUsername, + DefaultBmcPassword: &validPassword, + ShelfSerialNumber: validShelfSerial, + BmcIpAddress: cdb.GetStrPtr("not-an-ip"), + }, + expectErr: true, + }, + { + desc: "empty BmcIpAddress (pointer set, value empty)", + obj: APIExpectedPowerShelfCreateRequest{ + SiteID: "550e8400-e29b-41d4-a716-446655440000", + BmcMacAddress: "00:11:22:33:44:55", + DefaultBmcUsername: &validUsername, + DefaultBmcPassword: &validPassword, + ShelfSerialNumber: validShelfSerial, + BmcIpAddress: &emptyString, + }, + expectErr: true, + }, + { + desc: "nil BmcIpAddress (default)", + obj: APIExpectedPowerShelfCreateRequest{ + SiteID: "550e8400-e29b-41d4-a716-446655440000", + BmcMacAddress: "00:11:22:33:44:55", + DefaultBmcUsername: &validUsername, + DefaultBmcPassword: &validPassword, + ShelfSerialNumber: validShelfSerial, + BmcIpAddress: nil, + }, + expectErr: false, + }, } for _, tc := range tests { t.Run(tc.desc, func(t *testing.T) { @@ -238,11 +299,11 @@ func TestAPIExpectedPowerShelfCreateRequest_Validate(t *testing.T) { } func TestNewAPIExpectedPowerShelf(t *testing.T) { - ipAddress := "192.168.1.100" + bmcIpAddress := "192.168.1.100" dbEPS := &cdbm.ExpectedPowerShelf{ BmcMacAddress: "00:11:22:33:44:55", ShelfSerialNumber: "SHELF123", - IpAddress: &ipAddress, + BmcIpAddress: &bmcIpAddress, Labels: map[string]string{"env": "test", "zone": "us-west-1"}, Created: cdb.GetCurTime(), Updated: cdb.GetCurTime(), @@ -266,7 +327,7 @@ func TestNewAPIExpectedPowerShelf(t *testing.T) { // Note: BmcUsername and BmcPassword are not included as they're not stored in DB assert.Equal(t, tc.dbObj.BmcMacAddress, got.BmcMacAddress) assert.Equal(t, tc.dbObj.ShelfSerialNumber, got.ShelfSerialNumber) - assert.Equal(t, tc.dbObj.IpAddress, got.IpAddress) + assert.Equal(t, tc.dbObj.BmcIpAddress, got.BmcIpAddress) assert.Equal(t, tc.dbObj.Labels, got.Labels) assert.Equal(t, tc.dbObj.Created, got.Created) assert.Equal(t, tc.dbObj.Updated, got.Updated) @@ -278,7 +339,7 @@ func TestNewAPIExpectedPowerShelfWithNilFields(t *testing.T) { dbEPS := &cdbm.ExpectedPowerShelf{ BmcMacAddress: "00:11:22:33:44:55", ShelfSerialNumber: "SHELF123", - IpAddress: nil, + BmcIpAddress: nil, Labels: nil, Created: time.Now(), Updated: time.Now(), @@ -289,7 +350,7 @@ func TestNewAPIExpectedPowerShelfWithNilFields(t *testing.T) { // Verify fields are properly handled when empty or nil assert.Equal(t, dbEPS.BmcMacAddress, got.BmcMacAddress) assert.Equal(t, dbEPS.ShelfSerialNumber, got.ShelfSerialNumber) - assert.Nil(t, got.IpAddress) + assert.Nil(t, got.BmcIpAddress) assert.Nil(t, got.Labels) } @@ -308,7 +369,7 @@ func TestAPIExpectedPowerShelfUpdateRequest_Validate(t *testing.T) { desc: "ok when all fields are provided", obj: APIExpectedPowerShelfUpdateRequest{ ShelfSerialNumber: &validShelfSerial, - IpAddress: cdb.GetStrPtr("192.168.1.100"), + BmcIpAddress: cdb.GetStrPtr("192.168.1.100"), Labels: map[string]string{"env": "production", "zone": "us-east-1"}, }, expectErr: false, @@ -332,7 +393,7 @@ func TestAPIExpectedPowerShelfUpdateRequest_Validate(t *testing.T) { desc: "ok with nil values for all optional fields", obj: APIExpectedPowerShelfUpdateRequest{ ShelfSerialNumber: nil, - IpAddress: nil, + BmcIpAddress: nil, DefaultBmcUsername: nil, DefaultBmcPassword: nil, Labels: nil, @@ -438,6 +499,47 @@ func TestAPIExpectedPowerShelfUpdateRequest_Validate(t *testing.T) { }, expectErr: true, }, + // BmcIpAddress validation tests + { + desc: "valid IPv4 BmcIpAddress", + obj: APIExpectedPowerShelfUpdateRequest{ + ShelfSerialNumber: &validShelfSerial, + BmcIpAddress: cdb.GetStrPtr("192.168.1.10"), + }, + expectErr: false, + }, + { + desc: "valid IPv6 BmcIpAddress", + obj: APIExpectedPowerShelfUpdateRequest{ + ShelfSerialNumber: &validShelfSerial, + BmcIpAddress: cdb.GetStrPtr("2001:db8::1"), + }, + expectErr: false, + }, + { + desc: "invalid BmcIpAddress", + obj: APIExpectedPowerShelfUpdateRequest{ + ShelfSerialNumber: &validShelfSerial, + BmcIpAddress: cdb.GetStrPtr("not-an-ip"), + }, + expectErr: true, + }, + { + desc: "empty BmcIpAddress (pointer set, value empty)", + obj: APIExpectedPowerShelfUpdateRequest{ + ShelfSerialNumber: &validShelfSerial, + BmcIpAddress: &emptyString, + }, + expectErr: true, + }, + { + desc: "nil BmcIpAddress (default)", + obj: APIExpectedPowerShelfUpdateRequest{ + ShelfSerialNumber: &validShelfSerial, + BmcIpAddress: nil, + }, + expectErr: false, + }, } for _, tc := range tests { @@ -456,7 +558,7 @@ func TestNewAPIExpectedPowerShelfEdgeCases(t *testing.T) { dbEPS := &cdbm.ExpectedPowerShelf{ BmcMacAddress: "", ShelfSerialNumber: "", - IpAddress: cdb.GetStrPtr(""), + BmcIpAddress: cdb.GetStrPtr(""), Labels: map[string]string{"": ""}, Created: time.Now(), Updated: time.Now(), @@ -543,7 +645,7 @@ func TestNewAPIExpectedPowerShelfWithSite(t *testing.T) { SiteID: siteID, BmcMacAddress: "00:11:22:33:44:55", ShelfSerialNumber: "SHELF123", - IpAddress: cdb.GetStrPtr("192.168.1.100"), + BmcIpAddress: cdb.GetStrPtr("192.168.1.100"), Labels: map[string]string{}, Site: site, Created: time.Now(), diff --git a/api/pkg/api/model/expectedswitch.go b/api/pkg/api/model/expectedswitch.go index 31819eca9..fa07c9366 100644 --- a/api/pkg/api/model/expectedswitch.go +++ b/api/pkg/api/model/expectedswitch.go @@ -48,6 +48,8 @@ type APIExpectedSwitchCreateRequest struct { NvOsPassword *string `json:"nvOsPassword"` // RackID is the optional rack identifier RackID *string `json:"rackId"` + // BmcIpAddress is the optional BMC IP address of the expected switch + BmcIpAddress *string `json:"bmcIpAddress"` // Name is the optional name of the expected switch Name *string `json:"name"` // Manufacturer is the optional manufacturer of the expected switch @@ -87,6 +89,10 @@ func (escr *APIExpectedSwitchCreateRequest) Validate() error { validation.Length(1, 32).Error("Switch serial number must be 32 characters or less")), validation.Field(&escr.RackID, validation.NilOrNotEmpty.Error("RackID cannot be empty")), + validation.Field(&escr.BmcIpAddress, + validation.NilOrNotEmpty.Error("BmcIpAddress cannot be empty"), + validation.When(escr.BmcIpAddress != nil && *escr.BmcIpAddress != "", + validationis.IP.Error("BmcIpAddress must be a valid IPv4 or IPv6 address"))), validation.Field(&escr.Name, validation.NilOrNotEmpty.Error("Name cannot be empty")), validation.Field(&escr.Manufacturer, @@ -128,6 +134,8 @@ type APIExpectedSwitchUpdateRequest struct { NvOsPassword *string `json:"nvOsPassword"` // RackID is the optional rack identifier RackID *string `json:"rackId"` + // BmcIpAddress is the optional BMC IP address of the expected switch + BmcIpAddress *string `json:"bmcIpAddress"` // Name is the optional name of the expected switch Name *string `json:"name"` // Manufacturer is the optional manufacturer of the expected switch @@ -181,6 +189,10 @@ func (esur *APIExpectedSwitchUpdateRequest) Validate() error { validation.Length(1, 32).Error("Switch Serial Number must be 1-32 characters")), validation.Field(&esur.RackID, validation.NilOrNotEmpty.Error("RackID cannot be empty")), + validation.Field(&esur.BmcIpAddress, + validation.NilOrNotEmpty.Error("BmcIpAddress cannot be empty"), + validation.When(esur.BmcIpAddress != nil && *esur.BmcIpAddress != "", + validationis.IP.Error("BmcIpAddress must be a valid IPv4 or IPv6 address"))), validation.Field(&esur.Name, validation.NilOrNotEmpty.Error("Name cannot be empty")), validation.Field(&esur.Manufacturer, @@ -218,6 +230,8 @@ type APIExpectedSwitch struct { SwitchSerialNumber string `json:"switchSerialNumber"` // RackID is the optional rack identifier RackID *string `json:"rackId"` + // BmcIpAddress is the optional BMC IP address of the expected switch + BmcIpAddress *string `json:"bmcIpAddress"` // Name is the optional name of the expected switch Name *string `json:"name"` // Manufacturer is the optional manufacturer of the expected switch @@ -250,6 +264,7 @@ func NewAPIExpectedSwitch(dbModel *cdbm.ExpectedSwitch) *APIExpectedSwitch { SiteID: dbModel.SiteID, SwitchSerialNumber: dbModel.SwitchSerialNumber, RackID: dbModel.RackID, + BmcIpAddress: dbModel.BmcIpAddress, Name: dbModel.Name, Manufacturer: dbModel.Manufacturer, Model: dbModel.Model, diff --git a/api/pkg/api/model/expectedswitch_test.go b/api/pkg/api/model/expectedswitch_test.go index 3a29b4d09..a69d5f0e1 100644 --- a/api/pkg/api/model/expectedswitch_test.go +++ b/api/pkg/api/model/expectedswitch_test.go @@ -225,6 +225,67 @@ func TestAPIExpectedSwitchCreateRequest_Validate(t *testing.T) { }, expectErr: true, }, + // BmcIpAddress validation tests + { + desc: "valid IPv4 BmcIpAddress", + obj: APIExpectedSwitchCreateRequest{ + SiteID: "550e8400-e29b-41d4-a716-446655440000", + BmcMacAddress: "00:11:22:33:44:55", + DefaultBmcUsername: &validUsername, + DefaultBmcPassword: &validPassword, + SwitchSerialNumber: validSwitchSerial, + BmcIpAddress: cdb.GetStrPtr("192.168.1.10"), + }, + expectErr: false, + }, + { + desc: "valid IPv6 BmcIpAddress", + obj: APIExpectedSwitchCreateRequest{ + SiteID: "550e8400-e29b-41d4-a716-446655440000", + BmcMacAddress: "00:11:22:33:44:55", + DefaultBmcUsername: &validUsername, + DefaultBmcPassword: &validPassword, + SwitchSerialNumber: validSwitchSerial, + BmcIpAddress: cdb.GetStrPtr("2001:db8::1"), + }, + expectErr: false, + }, + { + desc: "invalid BmcIpAddress", + obj: APIExpectedSwitchCreateRequest{ + SiteID: "550e8400-e29b-41d4-a716-446655440000", + BmcMacAddress: "00:11:22:33:44:55", + DefaultBmcUsername: &validUsername, + DefaultBmcPassword: &validPassword, + SwitchSerialNumber: validSwitchSerial, + BmcIpAddress: cdb.GetStrPtr("not-an-ip"), + }, + expectErr: true, + }, + { + desc: "empty BmcIpAddress (pointer set, value empty)", + obj: APIExpectedSwitchCreateRequest{ + SiteID: "550e8400-e29b-41d4-a716-446655440000", + BmcMacAddress: "00:11:22:33:44:55", + DefaultBmcUsername: &validUsername, + DefaultBmcPassword: &validPassword, + SwitchSerialNumber: validSwitchSerial, + BmcIpAddress: &emptyString, + }, + expectErr: true, + }, + { + desc: "nil BmcIpAddress (default)", + obj: APIExpectedSwitchCreateRequest{ + SiteID: "550e8400-e29b-41d4-a716-446655440000", + BmcMacAddress: "00:11:22:33:44:55", + DefaultBmcUsername: &validUsername, + DefaultBmcPassword: &validPassword, + SwitchSerialNumber: validSwitchSerial, + BmcIpAddress: nil, + }, + expectErr: false, + }, } for _, tc := range tests { t.Run(tc.desc, func(t *testing.T) { @@ -238,9 +299,11 @@ func TestAPIExpectedSwitchCreateRequest_Validate(t *testing.T) { } func TestNewAPIExpectedSwitch(t *testing.T) { + bmcIP := "192.168.1.10" dbES := &cdbm.ExpectedSwitch{ BmcMacAddress: "00:11:22:33:44:55", SwitchSerialNumber: "SWITCH123", + BmcIpAddress: &bmcIP, Labels: map[string]string{"env": "test", "zone": "us-west-1"}, Created: cdb.GetCurTime(), Updated: cdb.GetCurTime(), @@ -263,6 +326,7 @@ func TestNewAPIExpectedSwitch(t *testing.T) { // Verify all fields are properly mapped assert.Equal(t, tc.dbObj.BmcMacAddress, got.BmcMacAddress) assert.Equal(t, tc.dbObj.SwitchSerialNumber, got.SwitchSerialNumber) + assert.Equal(t, tc.dbObj.BmcIpAddress, got.BmcIpAddress) assert.Equal(t, tc.dbObj.Labels, got.Labels) assert.Equal(t, tc.dbObj.Created, got.Created) assert.Equal(t, tc.dbObj.Updated, got.Updated) @@ -428,6 +492,47 @@ func TestAPIExpectedSwitchUpdateRequest_Validate(t *testing.T) { }, expectErr: true, }, + // BmcIpAddress validation tests + { + desc: "valid IPv4 BmcIpAddress", + obj: APIExpectedSwitchUpdateRequest{ + SwitchSerialNumber: &validSwitchSerial, + BmcIpAddress: cdb.GetStrPtr("192.168.1.10"), + }, + expectErr: false, + }, + { + desc: "valid IPv6 BmcIpAddress", + obj: APIExpectedSwitchUpdateRequest{ + SwitchSerialNumber: &validSwitchSerial, + BmcIpAddress: cdb.GetStrPtr("2001:db8::1"), + }, + expectErr: false, + }, + { + desc: "invalid BmcIpAddress", + obj: APIExpectedSwitchUpdateRequest{ + SwitchSerialNumber: &validSwitchSerial, + BmcIpAddress: cdb.GetStrPtr("not-an-ip"), + }, + expectErr: true, + }, + { + desc: "empty BmcIpAddress (pointer set, value empty)", + obj: APIExpectedSwitchUpdateRequest{ + SwitchSerialNumber: &validSwitchSerial, + BmcIpAddress: &emptyString, + }, + expectErr: true, + }, + { + desc: "nil BmcIpAddress (default)", + obj: APIExpectedSwitchUpdateRequest{ + SwitchSerialNumber: &validSwitchSerial, + BmcIpAddress: nil, + }, + expectErr: false, + }, } for _, tc := range tests { diff --git a/db/pkg/db/model/expectedmachine.go b/db/pkg/db/model/expectedmachine.go index 1f575f94c..ce34661b2 100644 --- a/db/pkg/db/model/expectedmachine.go +++ b/db/pkg/db/model/expectedmachine.go @@ -71,6 +71,7 @@ type ExpectedMachine struct { MachineID *string `bun:"machine_id"` Machine *Machine `bun:"rel:belongs-to,join:machine_id=id"` FallbackDpuSerialNumbers []string `bun:"fallback_dpu_serial_numbers,array"` + BmcIpAddress *string `bun:"bmc_ip_address"` RackID *string `bun:"rack_id"` Name *string `bun:"name"` Manufacturer *string `bun:"manufacturer"` @@ -106,6 +107,9 @@ func (em *ExpectedMachine) ToProto(creds ExpectedMachineCredentials) *cwssaws.Ex SkuId: em.SkuID, } + if em.BmcIpAddress != nil { + proto.BmcIpAddress = em.BmcIpAddress + } if em.RackID != nil { proto.RackId = &cwssaws.RackId{Id: *em.RackID} } @@ -166,6 +170,7 @@ type ExpectedMachineCreateInput struct { SkuID *string MachineID *string FallbackDpuSerialNumbers []string + BmcIpAddress *string RackID *string Name *string Manufacturer *string @@ -187,6 +192,7 @@ type ExpectedMachineUpdateInput struct { SkuID *string MachineID *string FallbackDpuSerialNumbers []string + BmcIpAddress *string RackID *string Name *string Manufacturer *string @@ -205,6 +211,7 @@ type ExpectedMachineClearInput struct { SkuID bool MachineID bool FallbackDpuSerialNumbers bool + BmcIpAddress bool RackID bool Name bool Manufacturer bool @@ -328,6 +335,7 @@ func (emsd ExpectedMachineSQLDAO) CreateMultiple(ctx context.Context, tx *db.Tx, SkuID: input.SkuID, MachineID: input.MachineID, FallbackDpuSerialNumbers: input.FallbackDpuSerialNumbers, + BmcIpAddress: input.BmcIpAddress, RackID: input.RackID, Name: input.Name, Manufacturer: input.Manufacturer, @@ -599,6 +607,10 @@ func (emsd ExpectedMachineSQLDAO) UpdateMultiple(ctx context.Context, tx *db.Tx, em.MachineID = input.MachineID columnsSet["machine_id"] = true } + if input.BmcIpAddress != nil { + em.BmcIpAddress = input.BmcIpAddress + columnsSet["bmc_ip_address"] = true + } if input.RackID != nil { em.RackID = input.RackID columnsSet["rack_id"] = true @@ -715,6 +727,10 @@ func (emsd ExpectedMachineSQLDAO) Clear(ctx context.Context, tx *db.Tx, input Ex em.FallbackDpuSerialNumbers = nil updatedFields = append(updatedFields, "fallback_dpu_serial_numbers") } + if input.BmcIpAddress { + em.BmcIpAddress = nil + updatedFields = append(updatedFields, "bmc_ip_address") + } if input.RackID { em.RackID = nil updatedFields = append(updatedFields, "rack_id") diff --git a/db/pkg/db/model/expectedmachine_test.go b/db/pkg/db/model/expectedmachine_test.go index 024bbb004..7e2854956 100644 --- a/db/pkg/db/model/expectedmachine_test.go +++ b/db/pkg/db/model/expectedmachine_test.go @@ -111,6 +111,7 @@ func TestExpectedMachineSQLDAO_Create(t *testing.T) { BmcMacAddress: "00:1B:44:11:3A:B7", ChassisSerialNumber: "CHASSIS123", FallbackDpuSerialNumbers: []string{"DPU001", "DPU002"}, + BmcIpAddress: db.GetStrPtr("192.168.1.10"), Labels: map[string]string{ "environment": "test", "location": "datacenter1", @@ -191,6 +192,7 @@ func TestExpectedMachineSQLDAO_Create(t *testing.T) { assert.Equal(t, input.BmcMacAddress, em.BmcMacAddress) assert.Equal(t, input.ChassisSerialNumber, em.ChassisSerialNumber) assert.Equal(t, input.FallbackDpuSerialNumbers, em.FallbackDpuSerialNumbers) + assert.Equal(t, input.BmcIpAddress, em.BmcIpAddress) assert.Equal(t, input.Labels, em.Labels) } diff --git a/db/pkg/db/model/expectedpowershelf.go b/db/pkg/db/model/expectedpowershelf.go index 088c8310a..bcd3f1b65 100644 --- a/db/pkg/db/model/expectedpowershelf.go +++ b/db/pkg/db/model/expectedpowershelf.go @@ -63,7 +63,7 @@ type ExpectedPowerShelf struct { Site *Site `bun:"rel:belongs-to,join:site_id=id"` BmcMacAddress string `bun:"bmc_mac_address,notnull"` ShelfSerialNumber string `bun:"shelf_serial_number,notnull"` - IpAddress *string `bun:"ip_address"` + BmcIpAddress *string `bun:"bmc_ip_address"` RackID *string `bun:"rack_id"` Name *string `bun:"name"` Manufacturer *string `bun:"manufacturer"` @@ -98,8 +98,8 @@ func (eps *ExpectedPowerShelf) ToProto(creds ExpectedPowerShelfCredentials) *cws ShelfSerialNumber: eps.ShelfSerialNumber, } - if eps.IpAddress != nil { - proto.BmcIpAddress = *eps.IpAddress + if eps.BmcIpAddress != nil { + proto.BmcIpAddress = *eps.BmcIpAddress } if eps.RackID != nil { proto.RackId = &cwssaws.RackId{Id: *eps.RackID} @@ -158,7 +158,7 @@ type ExpectedPowerShelfCreateInput struct { SiteID uuid.UUID BmcMacAddress string ShelfSerialNumber string - IpAddress *string + BmcIpAddress *string RackID *string Name *string Manufacturer *string @@ -177,7 +177,7 @@ type ExpectedPowerShelfUpdateInput struct { ExpectedPowerShelfID uuid.UUID BmcMacAddress *string ShelfSerialNumber *string - IpAddress *string + BmcIpAddress *string RackID *string Name *string Manufacturer *string @@ -193,7 +193,7 @@ type ExpectedPowerShelfUpdateInput struct { // ExpectedPowerShelfClearInput input parameters for Clear method type ExpectedPowerShelfClearInput struct { ExpectedPowerShelfID uuid.UUID - IpAddress bool + BmcIpAddress bool RackID bool Name bool Manufacturer bool @@ -278,7 +278,7 @@ func (epsd ExpectedPowerShelfSQLDAO) Create(ctx context.Context, tx *db.Tx, inpu SiteID: input.SiteID, BmcMacAddress: input.BmcMacAddress, ShelfSerialNumber: input.ShelfSerialNumber, - IpAddress: input.IpAddress, + BmcIpAddress: input.BmcIpAddress, RackID: input.RackID, Name: input.Name, Manufacturer: input.Manufacturer, @@ -380,10 +380,10 @@ func (epsd ExpectedPowerShelfSQLDAO) setQueryWithFilter(filter ExpectedPowerShel if ok { query = query.WhereGroup(" AND ", func(q *bun.SelectQuery) *bun.SelectQuery { return q. - Where("to_tsvector('english', (coalesce(eps.bmc_mac_address, ' ') || ' ' || coalesce(eps.shelf_serial_number, ' ') || ' ' || coalesce(eps.ip_address, ' ') || ' ' || coalesce(eps.labels::text, ' '))) @@ to_tsquery('english', ?)", *searchTokens). + Where("to_tsvector('english', (coalesce(eps.bmc_mac_address, ' ') || ' ' || coalesce(eps.shelf_serial_number, ' ') || ' ' || coalesce(eps.bmc_ip_address, ' ') || ' ' || coalesce(eps.labels::text, ' '))) @@ to_tsquery('english', ?)", *searchTokens). WhereOr("eps.bmc_mac_address ILIKE ?", "%"+searchQuery+"%"). WhereOr("eps.shelf_serial_number ILIKE ?", "%"+searchQuery+"%"). - WhereOr("eps.ip_address ILIKE ?", "%"+searchQuery+"%"). + WhereOr("eps.bmc_ip_address ILIKE ?", "%"+searchQuery+"%"). WhereOr("eps.labels::text ILIKE ?", "%"+searchQuery+"%"). WhereOr("eps.id::text ILIKE ?", "%"+searchQuery+"%"). WhereOr("eps.site_id::text ILIKE ?", "%"+searchQuery+"%") @@ -471,9 +471,9 @@ func (epsd ExpectedPowerShelfSQLDAO) Update(ctx context.Context, tx *db.Tx, inpu eps.ShelfSerialNumber = *input.ShelfSerialNumber columnsSet["shelf_serial_number"] = true } - if input.IpAddress != nil { - eps.IpAddress = input.IpAddress - columnsSet["ip_address"] = true + if input.BmcIpAddress != nil { + eps.BmcIpAddress = input.BmcIpAddress + columnsSet["bmc_ip_address"] = true } if input.RackID != nil { eps.RackID = input.RackID @@ -561,9 +561,9 @@ func (epsd ExpectedPowerShelfSQLDAO) Clear(ctx context.Context, tx *db.Tx, input } updatedFields := []string{} - if input.IpAddress { - eps.IpAddress = nil - updatedFields = append(updatedFields, "ip_address") + if input.BmcIpAddress { + eps.BmcIpAddress = nil + updatedFields = append(updatedFields, "bmc_ip_address") } if input.RackID { eps.RackID = nil diff --git a/db/pkg/db/model/expectedpowershelf_test.go b/db/pkg/db/model/expectedpowershelf_test.go index bb1bac841..3702ecd79 100644 --- a/db/pkg/db/model/expectedpowershelf_test.go +++ b/db/pkg/db/model/expectedpowershelf_test.go @@ -79,7 +79,7 @@ func TestExpectedPowerShelfSQLDAO_Create(t *testing.T) { SiteID: site.ID, BmcMacAddress: "00:1B:44:11:3A:B7", ShelfSerialNumber: "SHELF123", - IpAddress: db.GetStrPtr("192.168.1.100"), + BmcIpAddress: db.GetStrPtr("192.168.1.100"), Labels: map[string]string{ "environment": "test", "location": "datacenter1", @@ -98,7 +98,7 @@ func TestExpectedPowerShelfSQLDAO_Create(t *testing.T) { SiteID: site.ID, BmcMacAddress: "00:1B:44:11:3A:B8", ShelfSerialNumber: "SHELF789", - IpAddress: db.GetStrPtr("10.0.0.1"), + BmcIpAddress: db.GetStrPtr("10.0.0.1"), Labels: map[string]string{ "environment": "production", }, @@ -109,7 +109,7 @@ func TestExpectedPowerShelfSQLDAO_Create(t *testing.T) { SiteID: site.ID, BmcMacAddress: "00:1B:44:11:3A:B9", ShelfSerialNumber: "SHELF456", - IpAddress: nil, + BmcIpAddress: nil, Labels: nil, CreatedBy: user.ID, }, @@ -146,7 +146,7 @@ func TestExpectedPowerShelfSQLDAO_Create(t *testing.T) { assert.NotNil(t, eps) assert.Equal(t, input.BmcMacAddress, eps.BmcMacAddress) assert.Equal(t, input.ShelfSerialNumber, eps.ShelfSerialNumber) - assert.Equal(t, input.IpAddress, eps.IpAddress) + assert.Equal(t, input.BmcIpAddress, eps.BmcIpAddress) assert.Equal(t, input.Labels, eps.Labels) } @@ -180,7 +180,7 @@ func testExpectedPowerShelfSQLDAOCreateExpectedPowerShelves(ctx context.Context, SiteID: site.ID, BmcMacAddress: "00:1B:44:11:3A:B7", ShelfSerialNumber: "SHELF123", - IpAddress: db.GetStrPtr("192.168.1.100"), + BmcIpAddress: db.GetStrPtr("192.168.1.100"), Labels: map[string]string{ "environment": "test", "location": "datacenter1", @@ -194,7 +194,7 @@ func testExpectedPowerShelfSQLDAOCreateExpectedPowerShelves(ctx context.Context, SiteID: site.ID, BmcMacAddress: "00:1B:44:11:3A:B8", ShelfSerialNumber: "SHELF789", - IpAddress: db.GetStrPtr("10.0.0.1"), + BmcIpAddress: db.GetStrPtr("10.0.0.1"), Labels: map[string]string{ "environment": "production", }, @@ -207,7 +207,7 @@ func testExpectedPowerShelfSQLDAOCreateExpectedPowerShelves(ctx context.Context, SiteID: site.ID, BmcMacAddress: "00:1B:44:11:3A:B9", ShelfSerialNumber: "SHELF456", - IpAddress: nil, + BmcIpAddress: nil, Labels: nil, CreatedBy: user.ID, }) @@ -275,7 +275,7 @@ func TestExpectedPowerShelfSQLDAO_GetByID(t *testing.T) { assert.Equal(t, tc.eps.ID, tmp.ID) assert.Equal(t, tc.eps.BmcMacAddress, tmp.BmcMacAddress) assert.Equal(t, tc.eps.ShelfSerialNumber, tmp.ShelfSerialNumber) - assert.Equal(t, tc.eps.IpAddress, tmp.IpAddress) + assert.Equal(t, tc.eps.BmcIpAddress, tmp.BmcIpAddress) assert.Equal(t, tc.eps.Labels, tmp.Labels) } else { t.Logf("%s", err.Error()) @@ -495,7 +495,7 @@ func TestExpectedPowerShelfSQLDAO_Update(t *testing.T) { desc: "Update IP address", input: ExpectedPowerShelfUpdateInput{ ExpectedPowerShelfID: epsExp[2].ID, - IpAddress: db.GetStrPtr("172.16.0.1"), + BmcIpAddress: db.GetStrPtr("172.16.0.1"), }, expectedError: false, }, @@ -527,8 +527,8 @@ func TestExpectedPowerShelfSQLDAO_Update(t *testing.T) { if tc.input.ShelfSerialNumber != nil { assert.Equal(t, *tc.input.ShelfSerialNumber, got.ShelfSerialNumber) } - if tc.input.IpAddress != nil { - assert.Equal(t, tc.input.IpAddress, got.IpAddress) + if tc.input.BmcIpAddress != nil { + assert.Equal(t, tc.input.BmcIpAddress, got.BmcIpAddress) } if tc.input.Labels != nil { assert.Equal(t, tc.input.Labels, got.Labels) @@ -566,10 +566,10 @@ func TestExpectedPowerShelfSQLDAO_Clear(t *testing.T) { verifyChildSpanner bool }{ { - desc: "can clear IpAddress", + desc: "can clear BmcIpAddress", eps: epsExp[1], input: ExpectedPowerShelfClearInput{ - IpAddress: true, + BmcIpAddress: true, }, expectedUpdate: true, }, @@ -585,8 +585,8 @@ func TestExpectedPowerShelfSQLDAO_Clear(t *testing.T) { desc: "can clear multiple fields", eps: epsExp[0], input: ExpectedPowerShelfClearInput{ - IpAddress: true, - Labels: true, + BmcIpAddress: true, + Labels: true, }, expectedUpdate: true, }, @@ -603,8 +603,8 @@ func TestExpectedPowerShelfSQLDAO_Clear(t *testing.T) { tmp, err := epsd.Clear(ctx, nil, tc.input) assert.Nil(t, err) assert.NotNil(t, tmp) - if tc.input.IpAddress { - assert.Nil(t, tmp.IpAddress) + if tc.input.BmcIpAddress { + assert.Nil(t, tmp.BmcIpAddress) } if tc.input.Labels { assert.Nil(t, tmp.Labels) diff --git a/db/pkg/db/model/expectedswitch.go b/db/pkg/db/model/expectedswitch.go index f71ff76fc..351f2a6cf 100644 --- a/db/pkg/db/model/expectedswitch.go +++ b/db/pkg/db/model/expectedswitch.go @@ -63,6 +63,7 @@ type ExpectedSwitch struct { Site *Site `bun:"rel:belongs-to,join:site_id=id"` BmcMacAddress string `bun:"bmc_mac_address,notnull"` SwitchSerialNumber string `bun:"switch_serial_number,notnull"` + BmcIpAddress *string `bun:"bmc_ip_address"` RackID *string `bun:"rack_id"` Name *string `bun:"name"` Manufacturer *string `bun:"manufacturer"` @@ -98,6 +99,9 @@ func (es *ExpectedSwitch) ToProto(creds ExpectedSwitchCredentials) *cwssaws.Expe SwitchSerialNumber: es.SwitchSerialNumber, } + if es.BmcIpAddress != nil { + proto.BmcIpAddress = *es.BmcIpAddress + } if es.RackID != nil { proto.RackId = &cwssaws.RackId{Id: *es.RackID} } @@ -161,6 +165,7 @@ type ExpectedSwitchCreateInput struct { SiteID uuid.UUID BmcMacAddress string SwitchSerialNumber string + BmcIpAddress *string RackID *string Name *string Manufacturer *string @@ -179,6 +184,7 @@ type ExpectedSwitchUpdateInput struct { ExpectedSwitchID uuid.UUID BmcMacAddress *string SwitchSerialNumber *string + BmcIpAddress *string RackID *string Name *string Manufacturer *string @@ -194,6 +200,7 @@ type ExpectedSwitchUpdateInput struct { // ExpectedSwitchClearInput input parameters for Clear method type ExpectedSwitchClearInput struct { ExpectedSwitchID uuid.UUID + BmcIpAddress bool RackID bool Name bool Manufacturer bool @@ -278,6 +285,7 @@ func (essd ExpectedSwitchSQLDAO) Create(ctx context.Context, tx *db.Tx, input Ex SiteID: input.SiteID, BmcMacAddress: input.BmcMacAddress, SwitchSerialNumber: input.SwitchSerialNumber, + BmcIpAddress: input.BmcIpAddress, RackID: input.RackID, Name: input.Name, Manufacturer: input.Manufacturer, @@ -469,6 +477,10 @@ func (essd ExpectedSwitchSQLDAO) Update(ctx context.Context, tx *db.Tx, input Ex es.SwitchSerialNumber = *input.SwitchSerialNumber columnsSet["switch_serial_number"] = true } + if input.BmcIpAddress != nil { + es.BmcIpAddress = input.BmcIpAddress + columnsSet["bmc_ip_address"] = true + } if input.RackID != nil { es.RackID = input.RackID columnsSet["rack_id"] = true @@ -555,6 +567,10 @@ func (essd ExpectedSwitchSQLDAO) Clear(ctx context.Context, tx *db.Tx, input Exp } updatedFields := []string{} + if input.BmcIpAddress { + es.BmcIpAddress = nil + updatedFields = append(updatedFields, "bmc_ip_address") + } if input.RackID { es.RackID = nil updatedFields = append(updatedFields, "rack_id") diff --git a/db/pkg/db/model/expectedswitch_test.go b/db/pkg/db/model/expectedswitch_test.go index 29cc0b6b1..6d34ebf77 100644 --- a/db/pkg/db/model/expectedswitch_test.go +++ b/db/pkg/db/model/expectedswitch_test.go @@ -79,6 +79,7 @@ func TestExpectedSwitchSQLDAO_Create(t *testing.T) { SiteID: site.ID, BmcMacAddress: "00:1B:44:11:3A:B7", SwitchSerialNumber: "SWITCH123", + BmcIpAddress: db.GetStrPtr("192.168.1.10"), Labels: map[string]string{ "environment": "test", "location": "datacenter1", @@ -143,6 +144,7 @@ func TestExpectedSwitchSQLDAO_Create(t *testing.T) { assert.NotNil(t, es) assert.Equal(t, input.BmcMacAddress, es.BmcMacAddress) assert.Equal(t, input.SwitchSerialNumber, es.SwitchSerialNumber) + assert.Equal(t, input.BmcIpAddress, es.BmcIpAddress) assert.Equal(t, input.Labels, es.Labels) } diff --git a/db/pkg/migrations/20260430070805_expected_components_bmc_ip_address.go b/db/pkg/migrations/20260430070805_expected_components_bmc_ip_address.go new file mode 100644 index 000000000..517e5c99c --- /dev/null +++ b/db/pkg/migrations/20260430070805_expected_components_bmc_ip_address.go @@ -0,0 +1,79 @@ +/* + * SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package migrations + +import ( + "context" + "database/sql" + "fmt" + + "github.com/uptrace/bun" +) + +func init() { + Migrations.MustRegister(func(ctx context.Context, db *bun.DB) error { + // Start transaction + tx, terr := db.BeginTx(ctx, &sql.TxOptions{}) + if terr != nil { + handlePanic(terr, "failed to begin transaction") + } + + // Add bmc_ip_address column to expected_machine table + _, err := tx.Exec("ALTER TABLE expected_machine ADD COLUMN IF NOT EXISTS bmc_ip_address TEXT") + handleError(tx, err) + + // Add bmc_ip_address column to expected_switch table + _, err = tx.Exec("ALTER TABLE expected_switch ADD COLUMN IF NOT EXISTS bmc_ip_address TEXT") + handleError(tx, err) + + // Rename ip_address to bmc_ip_address on expected_power_shelf table. + // Guarded so it's idempotent + scoped to current_schema(): + // - rename only when ip_address still exists, AND + // - bmc_ip_address does NOT yet exist (so a partial re-run is a no-op). + _, err = tx.Exec(` +DO $$ +BEGIN + IF EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = current_schema() + AND table_name = 'expected_power_shelf' + AND column_name = 'ip_address' + ) AND NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_schema = current_schema() + AND table_name = 'expected_power_shelf' + AND column_name = 'bmc_ip_address' + ) THEN + ALTER TABLE expected_power_shelf RENAME COLUMN ip_address TO bmc_ip_address; + END IF; +END $$; +`) + handleError(tx, err) + + terr = tx.Commit() + if terr != nil { + handlePanic(terr, "failed to commit transaction") + } + + fmt.Print(" [up migration] Added bmc_ip_address column to 'expected_machine' and 'expected_switch'; renamed 'ip_address' to 'bmc_ip_address' on 'expected_power_shelf'. ") + return nil + }, func(ctx context.Context, db *bun.DB) error { + fmt.Print(" [down migration] No action taken") + return nil + }) +} diff --git a/docs/index.html b/docs/index.html index 693a5a89d..4e147eb4a 100644 --- a/docs/index.html +++ b/docs/index.html @@ -49,14 +49,14 @@ data-styled.g14[id="sc-csCMJq"]{content:"jSIqAu,"}/*!sc*/ .cNCXIL{height:18px;width:18px;min-width:18px;vertical-align:middle;float:right;transition:transform 0.2s ease-out;transform:rotateZ(-90deg);}/*!sc*/ .eiOVYa{height:1.3em;width:1.3em;min-width:1.3em;vertical-align:middle;transition:transform 0.2s ease-out;transform:rotateZ(-90deg);}/*!sc*/ -.iivCUv{height:1.5em;width:1.5em;min-width:1.5em;vertical-align:middle;float:left;transition:transform 0.2s ease-out;transform:rotateZ(0);}/*!sc*/ -.iivCUv polygon{fill:#1d8127;}/*!sc*/ +.iZiZiV{height:1.5em;width:1.5em;min-width:1.5em;vertical-align:middle;float:left;transition:transform 0.2s ease-out;transform:rotateZ(-90deg);}/*!sc*/ +.iZiZiV polygon{fill:#1d8127;}/*!sc*/ .kiMFkB{height:1.5em;width:1.5em;min-width:1.5em;vertical-align:middle;float:left;transition:transform 0.2s ease-out;transform:rotateZ(-90deg);}/*!sc*/ .kiMFkB polygon{fill:#d41f1c;}/*!sc*/ .ivEQut{height:20px;width:20px;min-width:20px;vertical-align:middle;float:right;transition:transform 0.2s ease-out;transform:rotateZ(0);}/*!sc*/ .ivEQut polygon{fill:white;}/*!sc*/ .dTZWxX{height:18px;width:18px;min-width:18px;vertical-align:middle;transition:transform 0.2s ease-out;transform:rotateZ(-90deg);}/*!sc*/ -data-styled.g15[id="sc-fbJfz"]{content:"cNCXIL,eiOVYa,iivCUv,kiMFkB,ivEQut,dTZWxX,"}/*!sc*/ +data-styled.g15[id="sc-fbJfz"]{content:"cNCXIL,eiOVYa,iZiZiV,kiMFkB,ivEQut,dTZWxX,"}/*!sc*/ .dhobou{display:inline-block;padding:2px 8px;margin:0;background-color:#ffa500;color:#ffffff;font-size:13px;vertical-align:middle;line-height:1.6;border-radius:4px;font-weight:600;font-size:12px;}/*!sc*/ .dhobou +span[type]{margin-left:4px;}/*!sc*/ data-styled.g16[id="sc-brKeYM"]{content:"dhobou,"}/*!sc*/ @@ -401,10 +401,6 @@ .kwTqVQ::before{content:"—";font-weight:bold;width:1.5em;text-align:center;display:inline-block;vertical-align:top;}/*!sc*/ .kwTqVQ:focus{outline:0;}/*!sc*/ data-styled.g120[id="sc-caslwi"]{content:"brztng,fvWYOy,gQivdi,kwTqVQ,"}/*!sc*/ -.iODxiF{padding:10px;}/*!sc*/ -data-styled.g121[id="sc-hlindU"]{content:"iODxiF,"}/*!sc*/ -.HutVN{text-align:left;margin-top:1em;caption-side:top;}/*!sc*/ -data-styled.g122[id="sc-gWrJbx"]{content:"HutVN,"}/*!sc*/ .jJkGwY{vertical-align:top;}/*!sc*/ data-styled.g123[id="sc-fYaxgW"]{content:"jJkGwY,"}/*!sc*/ .hsJdXF{font-size:1.3em;padding:0.2em 0;margin:3em 0 1.1em;color:#333333;font-weight:normal;}/*!sc*/ @@ -630,15 +626,9 @@

Typical API Call Flow for Tenant

API service must be configured for Service Account access at the time of deployment. It cannot be enabled or disabled via API.

Authorizations:
JWTBearerToken
path Parameters
org
required
string

Name of the Org

-

Responses

Response Schema: application/json
enabled
boolean

Indicates whether Service Account is enabled

-
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider associated with Service Account

-
tenantId
string <uuid>

ID of the Tenant associated with Service Account

-
query Parameters
siteId
required
string <uuid>

ID of the Site

-

Responses

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

Unique identifier for the Tenant

-
org
string

Organization name for the Tenant

-
orgDisplayName
string

Display name for the Tenant's organization

-
Array of objects (InstanceTypeStats)
orderBy
string
Enum: "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC" "ACCOUNT_NUMBER_ASC" "ACCOUNT_NUMBER_DESC" "TENANT_ORG_NAME_ASC" "TENANT_ORG_NAME_DESC" "TENANT_ORG_DISPLAY_NAME_ASC" "TENANT_ORG_DISPLAY_NAME_DESC" "TENANT_CONTACT_EMAIL_ASC" "TENANT_CONTACT_EMAIL_DESC" "TENANT_CONTACT_FULL_NAME_ASC" "TENANT_CONTACT_FULL_NAME_DESC"

Ordering for pagination query

-

Responses

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

-
allocationCount
integer
status
string (TenantAccountStatus)
Enum: "Pending" "Invited" "Ready" "Error"

Status values for Tenant Account objects

-
Array of objects (StatusDetail)
created
string <date-time>
updated
string <date-time>
Request Body schema: application/json
infrastructureProviderId
required
string <uuid>
tenantOrg
required
string non-empty ^[A-Za-z0-9-_]+$

Must be a valid Org name

-

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

-
allocationCount
integer
status
string (TenantAccountStatus)
Enum: "Pending" "Invited" "Ready" "Error"

Status values for Tenant Account objects

-
Array of objects (StatusDetail)
created
string <date-time>
updated
string <date-time>
includeRelation
string
Enum: "InfrastructureProvider" "Tenant"

Related entity to expand

-

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

-
allocationCount
integer
status
string (TenantAccountStatus)
Enum: "Pending" "Invited" "Ready" "Error"

Status values for Tenant Account objects

-
Array of objects (StatusDetail)
created
string <date-time>
updated
string <date-time>

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

-
allocationCount
integer
status
string (TenantAccountStatus)
Enum: "Pending" "Invited" "Ready" "Error"

Status values for Tenant Account objects

-
Array of objects (StatusDetail)
created
string <date-time>
updated
string <date-time>
orderBy
string
Enum: "NAME_ASC" "NAME_DESC" "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC" "DESCRIPTION_ASC" "DESCRIPTION_DESC" "LOCATION_ASC" "LOCATION_DESC" "CONTACT_ASC" "CONTACT_DESC"

Ordering for pagination query

-

Responses

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

Name of the Site

-
description
string

Optional description for the Site

-
org
string
infrastructureProviderId
string <uuid>
siteControllerVersion
string

Version of the Site Controller software

-
siteAgentVersion
string

Version of the Site Agent software

-
registrationToken
string

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

-
registrationTokenExpiration
string <date-time>

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

-
serialConsoleHostname
string <hostname>
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

-
serialConsoleMaxSessionLength
integer or null

Maximum length of Serial Console session in seconds

-
isSerialConsoleSSHKeysEnabled
boolean

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)
created
string <date-time>
updated
string <date-time>
object (SiteLocation)

Location of the Site

-
object (SiteContact)

Contact for the Site

-
object (SiteCapabilities)

Boolean flags to indicate features supported by a Site

-
object (SiteMachineStats)

Machine stats for a Site

-
object (SiteContact)

Contact for the Site

-

Responses

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

Name of the Site

-
description
string

Optional description for the Site

-
org
string
infrastructureProviderId
string <uuid>
siteControllerVersion
string

Version of the Site Controller software

-
siteAgentVersion
string

Version of the Site Agent software

-
registrationToken
string

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

-
registrationTokenExpiration
string <date-time>

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

-
serialConsoleHostname
string <hostname>
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

-
serialConsoleMaxSessionLength
integer or null

Maximum length of Serial Console session in seconds

-
isSerialConsoleSSHKeysEnabled
boolean

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)
created
string <date-time>
updated
string <date-time>
object (SiteLocation)

Location of the Site

-
object (SiteContact)

Contact for the Site

-
object (SiteCapabilities)

Boolean flags to indicate features supported by a Site

-
object (SiteMachineStats)

Machine stats for a Site

-
siteId
required
string <uuid>

ID of the Site

-

Responses

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

Name of the Site

-
description
string

Optional description for the Site

-
org
string
infrastructureProviderId
string <uuid>
siteControllerVersion
string

Version of the Site Controller software

-
siteAgentVersion
string

Version of the Site Agent software

-
registrationToken
string

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

-
registrationTokenExpiration
string <date-time>

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

-
serialConsoleHostname
string <hostname>
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

-
serialConsoleMaxSessionLength
integer or null

Maximum length of Serial Console session in seconds

-
isSerialConsoleSSHKeysEnabled
boolean

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)
created
string <date-time>
updated
string <date-time>
object (SiteLocation)

Location of the Site

-
object (SiteContact)

Contact for the Site

-
object (SiteCapabilities)

Boolean flags to indicate features supported by a Site

-
object (SiteMachineStats)

Machine stats for a Site

-
object (SiteContact)

Contact for the Site

-

Responses

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

Name of the Site

-
description
string

Optional description for the Site

-
org
string
infrastructureProviderId
string <uuid>
siteControllerVersion
string

Version of the Site Controller software

-
siteAgentVersion
string

Version of the Site Agent software

-
registrationToken
string

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

-
registrationTokenExpiration
string <date-time>

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

-
serialConsoleHostname
string <hostname>
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

-
serialConsoleMaxSessionLength
integer or null

Maximum length of Serial Console session in seconds

-
isSerialConsoleSSHKeysEnabled
boolean

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)
created
string <date-time>
updated
string <date-time>
object (SiteLocation)

Location of the Site

-
object (SiteContact)

Contact for the Site

-
object (SiteCapabilities)

Boolean flags to indicate features supported by a Site

-
object (SiteMachineStats)

Machine stats for a Site

-

Delete Site

Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Page size for pagination query

orderBy
string

Ordering for pagination query

-

Responses

Response Headers
X-Pagination
string

Pagination result in JSON format

-
Response Schema: application/json
Array
status
string
message
string
created
string <date-time>
updated
string <date-time>
orderBy
string
Enum: "NAME_ASC" "NAME_DESC" "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC" "SITE_NAME_ASC" "SITE_NAME_DESC" "TENANT_ORG_DISPLAY_NAME_ASC" "TENANT_ORG_DISPLAY_NAME_DESC" "INSTANCE_TYPE_NAME_ASC" "INSTANCE_TYPE_NAME_DESC" "IP_BLOCK_NAME_ASC" "IP_BLOCK_NAME_DESC" "CONSTRAINT_VALUE_ASC" "CONSTRAINT_VALUE_DESC"

Ordering for pagination query

-

Responses

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>

ID of the Allocation

-
name
string [ 2 .. 256 ] characters

Concise and descriptive name of the Allocation

-
description
string

Detailed description of the Allocation

-
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider that created the Allocation

-
tenantId
string <uuid>

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 of objects (AllocationConstraint)
created
string <date-time>

Date/time when the Allocation was created

-
updated
string <date-time>

Date/time when the Allocation was last updated

-
siteId
required
string <uuid>

ID of the Site where resources should be allocated

-
Array of objects (AllocationConstraintCreateRequest)

Responses

Array of objects (AllocationConstraintCreateRequest)

Responses

Response Schema: application/json
id
string <uuid>

ID of the Allocation

-
name
string [ 2 .. 256 ] characters

Concise and descriptive name of the Allocation

-
description
string

Detailed description of the Allocation

-
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider that created the Allocation

-
tenantId
string <uuid>

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 of objects (AllocationConstraint)
created
string <date-time>

Date/time when the Allocation was created

-
updated
string <date-time>

Date/time when the Allocation was last updated

-
includeRelation
string
Enum: "InfrastructureProvider" "Tenant" "Site"

Related entity to expand

-

Responses

Response Schema: application/json
id
string <uuid>

ID of the Allocation

-
name
string [ 2 .. 256 ] characters

Concise and descriptive name of the Allocation

-
description
string

Detailed description of the Allocation

-
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider that created the Allocation

-
tenantId
string <uuid>

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 of objects (AllocationConstraint)
created
string <date-time>

Date/time when the Allocation was created

-
updated
string <date-time>

Date/time when the Allocation was last updated

-
description
string

Update description of the Allocation

-

Responses

Response Schema: application/json
id
string <uuid>

ID of the Allocation

-
name
string [ 2 .. 256 ] characters

Concise and descriptive name of the Allocation

-
description
string

Detailed description of the Allocation

-
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider that created the Allocation

-
tenantId
string <uuid>

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 of objects (AllocationConstraint)
created
string <date-time>

Date/time when the Allocation was created

-
updated
string <date-time>

Date/time when the Allocation was last updated

-

Retrieve all Allocation Constraints

Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Page size for pagination query

orderBy
string
Enum: "RESOURCE_TYPE_ASC" "RESOURCE_TYPE_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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>

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 the Allocation Constraint applies to. For InstanceType, this is the ID of the Instance Type. For IPBlock, this is the ID of the IP Block.

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

Type of the Allocation Constraint. Please note that OnDemand and Preemptible are not supported by current implementation.

-
constraintValue
integer

Value of the Allocation Constraint. For InstanceType, this value represents number of Machines allocated for Tenant. For IPBlock, this value represents the prefix Length of the IP Block.

-
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

-
created
string <date-time>

Date/time when the Allocation Constraint was created

-
updated
string <date-time>

Date/time when the Allocation Constraint was last updated

-
constraintValue
required
integer

Value of the Allocation Constraint. For InstanceType, this value represents number of Machines allocated for Tenant. For IPBlock, this value represents the prefix Length of the IP Block.

-

Responses

Response Schema: application/json
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 the Allocation Constraint applies to. For InstanceType, this is the ID of the Instance Type. For IPBlock, this is the ID of the IP Block.

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

Type of the Allocation Constraint. Please note that OnDemand and Preemptible are not supported by current implementation.

-
constraintValue
integer

Value of the Allocation Constraint. For InstanceType, this value represents number of Machines allocated for Tenant. For IPBlock, this value represents the prefix Length of the IP Block.

-
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

-
created
string <date-time>

Date/time when the Allocation Constraint was created

-
updated
string <date-time>

Date/time when the Allocation Constraint was last updated

-
allocationConstraintId
required
string <uuid>

ID of the Allocation Constraint

-

Responses

Response Schema: application/json
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 the Allocation Constraint applies to. For InstanceType, this is the ID of the Instance Type. For IPBlock, this is the ID of the IP Block.

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

Type of the Allocation Constraint. Please note that OnDemand and Preemptible are not supported by current implementation.

-
constraintValue
integer

Value of the Allocation Constraint. For InstanceType, this value represents number of Machines allocated for Tenant. For IPBlock, this value represents the prefix Length of the IP Block.

-
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

-
created
string <date-time>

Date/time when the Allocation Constraint was created

-
updated
string <date-time>

Date/time when the Allocation Constraint was last updated

-
Request Body schema: application/json
constraintValue
required
integer

Value of the Allocation Constraint. For InstanceType, this value represents number of Machines allocated for Tenant. For IPBlock, this value represents the prefix Length of the IP Block.

-

Responses

Response Schema: application/json
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 the Allocation Constraint applies to. For InstanceType, this is the ID of the Instance Type. For IPBlock, this is the ID of the IP Block.

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

Type of the Allocation Constraint. Please note that OnDemand and Preemptible are not supported by current implementation.

-
constraintValue
integer

Value of the Allocation Constraint. For InstanceType, this value represents number of Machines allocated for Tenant. For IPBlock, this value represents the prefix Length of the IP Block.

-
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

-
created
string <date-time>

Date/time when the Allocation Constraint was created

-
updated
string <date-time>

Date/time when the Allocation Constraint was last updated

-

Delete Allocation Constraint

Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Page size for pagination query

orderBy
string
Enum: "NAME_ASC" "NAME_DESC" "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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>

ID of the VPC

-
name
string [ 2 .. 256 ] characters

Name of the VPC

-
description
string

Description of the VPC, can be empty

-
org
string

Organization the VPC belongs to

-
tenantId
string <uuid>

ID of the Tenant the VPC belongs to

-
siteId
string <uuid>

ID of the Site the VPC belongs to

-
controllerVpcId
string or null <uuid>

Legacy attribute, contains the same value as ID

-
networkVirtualizationType
string
Enum: "ETHERNET_VIRTUALIZER" "FNN"

Network virtualization type of the VPC

-
routingProfile
string or null [ 3 .. 64 ] characters

Routing profile type for the VPC. Populated when Site has Native Networking enabled and network virtualization type is FNN.

-
requestedVni
integer or null [ 1 .. 65535 ]

Explicitly requested VNI for the VPC if one was requested at creation time

-
vni
integer or null [ 1 .. 65535 ]

Active VNI assigned to the VPC

-
networkSecurityGroupId
string or null

ID of the Network Security Group attached to the VPC

-
object (NetworkSecurityGroupPropagationDetails)

Propagation details for the attached Network Security Group

-
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

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

Status of the VPC

-
Array of objects (StatusDetail)

History of status changes for the VPC

-
created
string <date-time>

Date/time when VPC was created

-
updated
string <date-time>

Date/time when VPC was last updated

-
object (Labels) <= 10 properties

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

-

Responses

Response Schema: application/json
id
string <uuid>

ID of the VPC

-
name
string [ 2 .. 256 ] characters

Name of the VPC

-
description
string

Description of the VPC, can be empty

-
org
string

Organization the VPC belongs to

-
tenantId
string <uuid>

ID of the Tenant the VPC belongs to

-
siteId
string <uuid>

ID of the Site the VPC belongs to

-
controllerVpcId
string or null <uuid>

Legacy attribute, contains the same value as ID

-
networkVirtualizationType
string
Enum: "ETHERNET_VIRTUALIZER" "FNN"

Network virtualization type of the VPC

-
routingProfile
string or null [ 3 .. 64 ] characters

Routing profile type for the VPC. Populated when Site has Native Networking enabled and network virtualization type is FNN.

-
requestedVni
integer or null [ 1 .. 65535 ]

Explicitly requested VNI for the VPC if one was requested at creation time

-
vni
integer or null [ 1 .. 65535 ]

Active VNI assigned to the VPC

-
networkSecurityGroupId
string or null

ID of the Network Security Group attached to the VPC

-
object (NetworkSecurityGroupPropagationDetails)

Propagation details for the attached Network Security Group

-
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

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

Status of the VPC

-
Array of objects (StatusDetail)

History of status changes for the VPC

-
created
string <date-time>

Date/time when VPC was created

-
updated
string <date-time>

Date/time when VPC was last updated

-
query Parameters
includeRelation
string
Enum: "InfrastructureProvider" "Tenant" "Site" "NetworkSecurityGroup"

Related entity to expand

-

Responses

Response Schema: application/json
id
string <uuid>

ID of the VPC

-
name
string [ 2 .. 256 ] characters

Name of the VPC

-
description
string

Description of the VPC, can be empty

-
org
string

Organization the VPC belongs to

-
tenantId
string <uuid>

ID of the Tenant the VPC belongs to

-
siteId
string <uuid>

ID of the Site the VPC belongs to

-
controllerVpcId
string or null <uuid>

Legacy attribute, contains the same value as ID

-
networkVirtualizationType
string
Enum: "ETHERNET_VIRTUALIZER" "FNN"

Network virtualization type of the VPC

-
routingProfile
string or null [ 3 .. 64 ] characters

Routing profile type for the VPC. Populated when Site has Native Networking enabled and network virtualization type is FNN.

-
requestedVni
integer or null [ 1 .. 65535 ]

Explicitly requested VNI for the VPC if one was requested at creation time

-
vni
integer or null [ 1 .. 65535 ]

Active VNI assigned to the VPC

-
networkSecurityGroupId
string or null

ID of the Network Security Group attached to the VPC

-
object (NetworkSecurityGroupPropagationDetails)

Propagation details for the attached Network Security Group

-
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

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

Status of the VPC

-
Array of objects (StatusDetail)

History of status changes for the VPC

-
created
string <date-time>

Date/time when VPC was created

-
updated
string <date-time>

Date/time when VPC was last updated

-
object (Labels) <= 10 properties

Update labels of the VPC. Up to 10 key value pairs can be specified. The labels will be entirely replaced by those sent in the request. Any labels not included in the request will be removed. To retain existing labels, first fetch them and include them along with this request.

-

Responses

Response Schema: application/json
id
string <uuid>

ID of the VPC

-
name
string [ 2 .. 256 ] characters

Name of the VPC

-
description
string

Description of the VPC, can be empty

-
org
string

Organization the VPC belongs to

-
tenantId
string <uuid>

ID of the Tenant the VPC belongs to

-
siteId
string <uuid>

ID of the Site the VPC belongs to

-
controllerVpcId
string or null <uuid>

Legacy attribute, contains the same value as ID

-
networkVirtualizationType
string
Enum: "ETHERNET_VIRTUALIZER" "FNN"

Network virtualization type of the VPC

-
routingProfile
string or null [ 3 .. 64 ] characters

Routing profile type for the VPC. Populated when Site has Native Networking enabled and network virtualization type is FNN.

-
requestedVni
integer or null [ 1 .. 65535 ]

Explicitly requested VNI for the VPC if one was requested at creation time

-
vni
integer or null [ 1 .. 65535 ]

Active VNI assigned to the VPC

-
networkSecurityGroupId
string or null

ID of the Network Security Group attached to the VPC

-
object (NetworkSecurityGroupPropagationDetails)

Propagation details for the attached Network Security Group

-
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

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

Status of the VPC

-
Array of objects (StatusDetail)

History of status changes for the VPC

-
created
string <date-time>

Date/time when VPC was created

-
updated
string <date-time>

Date/time when VPC was last updated

-
Request Body schema: application/json
networkVirtualizationType
string
Value: "FNN"

Network virtualization type of the VPC. Can only be updated to FNN

-

Responses

Response Schema: application/json
id
string <uuid>

ID of the VPC

-
name
string [ 2 .. 256 ] characters

Name of the VPC

-
description
string

Description of the VPC, can be empty

-
org
string

Organization the VPC belongs to

-
tenantId
string <uuid>

ID of the Tenant the VPC belongs to

-
siteId
string <uuid>

ID of the Site the VPC belongs to

-
controllerVpcId
string or null <uuid>

Legacy attribute, contains the same value as ID

-
networkVirtualizationType
string
Enum: "ETHERNET_VIRTUALIZER" "FNN"

Network virtualization type of the VPC

-
routingProfile
string or null [ 3 .. 64 ] characters

Routing profile type for the VPC. Populated when Site has Native Networking enabled and network virtualization type is FNN.

-
requestedVni
integer or null [ 1 .. 65535 ]

Explicitly requested VNI for the VPC if one was requested at creation time

-
vni
integer or null [ 1 .. 65535 ]

Active VNI assigned to the VPC

-
networkSecurityGroupId
string or null

ID of the Network Security Group attached to the VPC

-
object (NetworkSecurityGroupPropagationDetails)

Propagation details for the attached Network Security Group

-
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

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

Status of the VPC

-
Array of objects (StatusDetail)

History of status changes for the VPC

-
created
string <date-time>

Date/time when VPC was created

-
updated
string <date-time>

Date/time when VPC was last updated

-
includeRelation
string
Enum: "Vpc1" "Vpc2" "Site"

Related entity to expand

-

Responses

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>

Unique identifier of the VPC peering

-
vpc1Id
string <uuid>

ID of the first VPC in the peering

-
vpc2Id
string <uuid>

ID of the second VPC in the peering

-
siteId
string <uuid>

ID of the Site where the peering exists

-
isMultiTenant
boolean

Indicates if this is a multi-tenant peering (VPCs from different tenants)

-
status
string (VpcPeeringStatus)
Enum: "Pending" "Configuring" "Requested" "Ready" "Deleting" "Error"

Status of the VPC peering

-
created
string <date-time>

Date and time when the VPC peering was created

-
updated
string <date-time>

Date and time when the VPC peering was last updated

-
siteId
required
string <uuid>

ID of the Site where the peering exists

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier of the VPC peering

-
vpc1Id
string <uuid>

ID of the first VPC in the peering

-
vpc2Id
string <uuid>

ID of the second VPC in the peering

-
siteId
string <uuid>

ID of the Site where the peering exists

-
isMultiTenant
boolean

Indicates if this is a multi-tenant peering (VPCs from different tenants)

-
status
string (VpcPeeringStatus)
Enum: "Pending" "Configuring" "Requested" "Ready" "Deleting" "Error"

Status of the VPC peering

-
created
string <date-time>

Date and time when the VPC peering was created

-
updated
string <date-time>

Date and time when the VPC peering was last updated

-
query Parameters
includeRelation
string
Enum: "Vpc1" "Vpc2" "Site"

Related entity to expand

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier of the VPC peering

-
vpc1Id
string <uuid>

ID of the first VPC in the peering

-
vpc2Id
string <uuid>

ID of the second VPC in the peering

-
siteId
string <uuid>

ID of the Site where the peering exists

-
isMultiTenant
boolean

Indicates if this is a multi-tenant peering (VPCs from different tenants)

-
status
string (VpcPeeringStatus)
Enum: "Pending" "Configuring" "Requested" "Ready" "Deleting" "Error"

Status of the VPC peering

-
created
string <date-time>

Date and time when the VPC peering was created

-
updated
string <date-time>

Date and time when the VPC peering was last updated

-
orderBy
string
Enum: "NAME_ASC" "NAME_DESC" "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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

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

The network prefix including prefix length in CIDR notation

-
prefixLength
integer [ 8 .. 31 ]

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

-
status
string (VpcPrefixStatus)
Enum: "Ready" "Deleting" "Error"

Status of the VPC Prefix

-
Array of objects (StatusDetail)

Details of 20 most recent status changes

-
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

-
prefixLength
required
integer [ 8 .. 31 ]

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

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

The network prefix including prefix length in CIDR notation

-
prefixLength
integer [ 8 .. 31 ]

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

-
status
string (VpcPrefixStatus)
Enum: "Ready" "Deleting" "Error"

Status of the VPC Prefix

-
Array of objects (StatusDetail)

Details of 20 most recent status changes

-
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

-
query Parameters
includeRelation
string
Enum: "VPC" "Tenant" "IPBlock"

Related entity to expand

-

Responses

Response Schema: application/json
id
string <uuid>
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

The network prefix including prefix length in CIDR notation

-
prefixLength
integer [ 8 .. 31 ]

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

-
status
string (VpcPrefixStatus)
Enum: "Ready" "Deleting" "Error"

Status of the VPC Prefix

-
Array of objects (StatusDetail)

Details of 20 most recent status changes

-
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

-
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

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

The network prefix including prefix length in CIDR notation

-
prefixLength
integer [ 8 .. 31 ]

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

-
status
string (VpcPrefixStatus)
Enum: "Ready" "Deleting" "Error"

Status of the VPC Prefix

-
Array of objects (StatusDetail)

Details of 20 most recent status changes

-
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

-
orderBy
string
Enum: "NAME_ASC" "NAME_DESC" "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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
siteId
string <uuid>
vpcId
string <uuid>
tenantId
string <uuid>
controllerNetworkSegmentId
string or null <uuid>
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

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
Enum: "Public" "DatacenterOnly"
status
string (SubnetStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status values for Subnet objects

-
Array of objects (StatusDetail)
created
string <date-time>
updated
string <date-time>
Array of objects (Deprecation)
query Parameters
includeRelation
string
Enum: "VPC" "Tenant" "IPv4Block" "IPv6Block"

Related entity to expand

-

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string
siteId
string <uuid>
vpcId
string <uuid>
tenantId
string <uuid>
controllerNetworkSegmentId
string or null <uuid>
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

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
Enum: "Public" "DatacenterOnly"
status
string (SubnetStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status values for Subnet objects

-
Array of objects (StatusDetail)
created
string <date-time>
updated
string <date-time>
Array of objects (Deprecation)
subnetId
required
string <uuid>

ID of the Subnet

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

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string
siteId
string <uuid>
vpcId
string <uuid>
tenantId
string <uuid>
controllerNetworkSegmentId
string or null <uuid>
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

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
Enum: "Public" "DatacenterOnly"
status
string (SubnetStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status values for Subnet objects

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

Optional rack identifier for this component

+
bmcIpAddress
string or null

Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC.

name
string or null

Display name for this component

manufacturer
string or null
Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Host ID within the tray

object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Machines

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the Expected Machine

-
siteId
string <uuid>

ID of the site the Expected Machine belongs to

-
bmcMacAddress
string^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$

MAC address of the Expected Machine's BMC (Baseboard Management Controller)

-
chassisSerialNumber
string

Serial number of the Expected Machine's chassis

-
fallbackDPUSerialNumbers
Array of strings

Serial numbers of the Expected Machine's fallback DPUs (Data Processing Units)

-
skuId
string or null

Optional ID of the SKU associated with this Expected Machine

-
object (Sku)

SKU information for this Expected Machine (populated when includeRelation=Sku is specified)

-
machineId
string or null

Optional ID of the Machine associated with this Expected Machine

-
object (MachineSummary)

Machine information for this Expected Machine (populated when includeRelation=Machine is specified)

-
rackId
string or null

Optional rack identifier for this component

-
name
string or null

Display name for this component

-
manufacturer
string or null

Manufacturer of this component

-
model
string or null

Model of this component

-
description
string or null

Description of this component

-
firmwareVersion
string or null

Firmware version of this component

-
slotId
integer or null <int32>

Slot ID within the rack

-
trayIdx
integer or null <int32>

Tray index within the rack

-
hostId
integer or null <int32>

Host ID within the tray

-
object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Machines

-
created
string <date-time>

ISO 8601 datetime when the Expected Machine was created

-
updated
string <date-time>

ISO 8601 datetime when the Expected Machine was last updated

-

Request samples

Content type
application/json
{
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "defaultBmcUsername": "admin",
  • "defaultBmcPassword": "password123",
  • "chassisSerialNumber": "CHASSIS-12345",
  • "fallbackDPUSerialNumbers": [
    ],
  • "labels": {
    }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "chassisSerialNumber": "CHASSIS-12345",
  • "fallbackDPUSerialNumbers": [
    ],
  • "skuId": "lenovo.sr650v2.cpu.1",
  • "machineId": "fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g",
  • "rackId": "rack-01",
  • "manufacturer": "Lenovo",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Retrieve all Expected Machines

https://carbide-rest-api.carbide.svc.cluster.local/v2/org/{org}/carbide/expected-machine

Request samples

Content type
application/json
{
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "defaultBmcUsername": "admin",
  • "defaultBmcPassword": "password123",
  • "chassisSerialNumber": "CHASSIS-12345",
  • "fallbackDPUSerialNumbers": [
    ],
  • "labels": {
    }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "bmcIpAddress": "192.168.1.100",
  • "chassisSerialNumber": "CHASSIS-12345",
  • "fallbackDPUSerialNumbers": [
    ],
  • "skuId": "lenovo.sr650v2.cpu.1",
  • "machineId": "fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g",
  • "rackId": "rack-01",
  • "manufacturer": "Lenovo",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Retrieve all Expected Machines

Retrieve all Expected Machines.

@@ -2520,59 +1760,15 @@

Typical API Call Flow for Tenant

" class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Page size for pagination query

orderBy
string
Enum: "BMC_MAC_ADDRESS_ASC" "BMC_MAC_ADDRESS_DESC" "CHASSIS_SERIAL_NUMBER_ASC" "CHASSIS_SERIAL_NUMBER_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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>

Unique identifier for the Expected Machine

-
siteId
string <uuid>

ID of the site the Expected Machine belongs to

-
bmcMacAddress
string^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$

MAC address of the Expected Machine's BMC (Baseboard Management Controller)

-
chassisSerialNumber
string

Serial number of the Expected Machine's chassis

-
fallbackDPUSerialNumbers
Array of strings

Serial numbers of the Expected Machine's fallback DPUs (Data Processing Units)

-
skuId
string or null

Optional ID of the SKU associated with this Expected Machine

-
object (Sku)

SKU information for this Expected Machine (populated when includeRelation=Sku is specified)

-
machineId
string or null

Optional ID of the Machine associated with this Expected Machine

-
object (MachineSummary)

Machine information for this Expected Machine (populated when includeRelation=Machine is specified)

-
rackId
string or null

Optional rack identifier for this component

-
name
string or null

Display name for this component

-
manufacturer
string or null

Manufacturer of this component

-
model
string or null

Model of this component

-
description
string or null

Description of this component

-
firmwareVersion
string or null

Firmware version of this component

-
slotId
integer or null <int32>

Slot ID within the rack

-
trayIdx
integer or null <int32>

Tray index within the rack

-
hostId
integer or null <int32>

Host ID within the tray

-
object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Machines

-
created
string <date-time>

ISO 8601 datetime when the Expected Machine was created

-
updated
string <date-time>

ISO 8601 datetime when the Expected Machine was last updated

-

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve Expected Machine

https://carbide-rest-api.carbide.svc.cluster.local/v2/org/{org}/carbide/expected-machine

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve Expected Machine

Retrieve a specific Expected Machine by ID.

@@ -2584,51 +1780,9 @@

Typical API Call Flow for Tenant

" class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

ID of the Expected Machine

query Parameters
includeRelation
string
Enum: "Site" "Sku"

Related entity to expand

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the Expected Machine

-
siteId
string <uuid>

ID of the site the Expected Machine belongs to

-
bmcMacAddress
string^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$

MAC address of the Expected Machine's BMC (Baseboard Management Controller)

-
chassisSerialNumber
string

Serial number of the Expected Machine's chassis

-
fallbackDPUSerialNumbers
Array of strings

Serial numbers of the Expected Machine's fallback DPUs (Data Processing Units)

-
skuId
string or null

Optional ID of the SKU associated with this Expected Machine

-
object (Sku)

SKU information for this Expected Machine (populated when includeRelation=Sku is specified)

-
machineId
string or null

Optional ID of the Machine associated with this Expected Machine

-
object (MachineSummary)

Machine information for this Expected Machine (populated when includeRelation=Machine is specified)

-
rackId
string or null

Optional rack identifier for this component

-
name
string or null

Display name for this component

-
manufacturer
string or null

Manufacturer of this component

-
model
string or null

Model of this component

-
description
string or null

Description of this component

-
firmwareVersion
string or null

Firmware version of this component

-
slotId
integer or null <int32>

Slot ID within the rack

-
trayIdx
integer or null <int32>

Tray index within the rack

-
hostId
integer or null <int32>

Host ID within the tray

-
object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Machines

-
created
string <date-time>

ISO 8601 datetime when the Expected Machine was created

-
updated
string <date-time>

ISO 8601 datetime when the Expected Machine was last updated

-

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "chassisSerialNumber": "CHASSIS-12345",
  • "fallbackDPUSerialNumbers": [
    ],
  • "skuId": "lenovo.sr650v2.cpu.1",
  • "machineId": "fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g",
  • "rackId": "rack-01",
  • "manufacturer": "Lenovo",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Update Expected Machine

https://carbide-rest-api.carbide.svc.cluster.local/v2/org/{org}/carbide/expected-machine/{expectedMachineId}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "bmcIpAddress": "192.168.1.100",
  • "chassisSerialNumber": "CHASSIS-12345",
  • "fallbackDPUSerialNumbers": [
    ],
  • "skuId": "lenovo.sr650v2.cpu.1",
  • "machineId": "fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g",
  • "rackId": "rack-01",
  • "manufacturer": "Lenovo",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Update Expected Machine

Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Optional ID of the SKU to associate with this Expected Machine

rackId
string or null

Optional rack identifier for this component

+
bmcIpAddress
string or null

Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC.

name
string or null

Display name for this component

manufacturer
string or null
Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Host ID within the tray

object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Machines

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the Expected Machine

-
siteId
string <uuid>

ID of the site the Expected Machine belongs to

-
bmcMacAddress
string^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$

MAC address of the Expected Machine's BMC (Baseboard Management Controller)

-
chassisSerialNumber
string

Serial number of the Expected Machine's chassis

-
fallbackDPUSerialNumbers
Array of strings

Serial numbers of the Expected Machine's fallback DPUs (Data Processing Units)

-
skuId
string or null

Optional ID of the SKU associated with this Expected Machine

-
object (Sku)

SKU information for this Expected Machine (populated when includeRelation=Sku is specified)

-
machineId
string or null

Optional ID of the Machine associated with this Expected Machine

-
object (MachineSummary)

Machine information for this Expected Machine (populated when includeRelation=Machine is specified)

-
rackId
string or null

Optional rack identifier for this component

-
name
string or null

Display name for this component

-
manufacturer
string or null

Manufacturer of this component

-
model
string or null

Model of this component

-
description
string or null

Description of this component

-
firmwareVersion
string or null

Firmware version of this component

-
slotId
integer or null <int32>

Slot ID within the rack

-
trayIdx
integer or null <int32>

Tray index within the rack

-
hostId
integer or null <int32>

Host ID within the tray

-
object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Machines

-
created
string <date-time>

ISO 8601 datetime when the Expected Machine was created

-
updated
string <date-time>

ISO 8601 datetime when the Expected Machine was last updated

-

Request samples

Content type
application/json
{
  • "defaultBmcUsername": "newadmin",
  • "defaultBmcPassword": "newpassword123",
  • "chassisSerialNumber": "CHASSIS-54321",
  • "labels": {
    }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "chassisSerialNumber": "CHASSIS-12345",
  • "fallbackDPUSerialNumbers": [
    ],
  • "skuId": "lenovo.sr650v2.cpu.1",
  • "machineId": "fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g",
  • "rackId": "rack-01",
  • "manufacturer": "Lenovo",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Delete Expected Machine

https://carbide-rest-api.carbide.svc.cluster.local/v2/org/{org}/carbide/expected-machine/{expectedMachineId}

Request samples

Content type
application/json
{
  • "defaultBmcUsername": "newadmin",
  • "defaultBmcPassword": "newpassword123",
  • "chassisSerialNumber": "CHASSIS-54321",
  • "labels": {
    }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "bmcIpAddress": "192.168.1.100",
  • "chassisSerialNumber": "CHASSIS-12345",
  • "fallbackDPUSerialNumbers": [
    ],
  • "skuId": "lenovo.sr650v2.cpu.1",
  • "machineId": "fm100ht4v4mce2qstjnl8970nnj3ie6ecek4mtjn27pea4kre5gsa49jg0g",
  • "rackId": "rack-01",
  • "manufacturer": "Lenovo",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Delete Expected Machine

Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Optional ID of the SKU to associate with this Expected Machine

rackId
string or null

Optional rack identifier for this component

+
bmcIpAddress
string or null

Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC.

name
string or null

Display name for this component

manufacturer
string or null
Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Host ID within the tray

object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Machines

-

Responses

Responses

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

Unique identifier for the Expected Machine

-
siteId
string <uuid>

ID of the site the Expected Machine belongs to

-
bmcMacAddress
string^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$

MAC address of the Expected Machine's BMC (Baseboard Management Controller)

-
chassisSerialNumber
string

Serial number of the Expected Machine's chassis

-
fallbackDPUSerialNumbers
Array of strings

Serial numbers of the Expected Machine's fallback DPUs (Data Processing Units)

-
skuId
string or null

Optional ID of the SKU associated with this Expected Machine

-
object (Sku)

SKU information for this Expected Machine (populated when includeRelation=Sku is specified)

-
machineId
string or null

Optional ID of the Machine associated with this Expected Machine

-
object (MachineSummary)

Machine information for this Expected Machine (populated when includeRelation=Machine is specified)

-
rackId
string or null

Optional rack identifier for this component

-
name
string or null

Display name for this component

-
manufacturer
string or null

Manufacturer of this component

-
model
string or null

Model of this component

-
description
string or null

Description of this component

-
firmwareVersion
string or null

Firmware version of this component

-
slotId
integer or null <int32>

Slot ID within the rack

-
trayIdx
integer or null <int32>

Tray index within the rack

-
hostId
integer or null <int32>

Host ID within the tray

-
object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Machines

-
created
string <date-time>

ISO 8601 datetime when the Expected Machine was created

-
updated
string <date-time>

ISO 8601 datetime when the Expected Machine was last updated

-

Request samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Response samples

Content type
application/json
[
  • {
    }
]

Batch Update Expected Machines

https://carbide-rest-api.carbide.svc.cluster.local/v2/org/{org}/carbide/expected-machine/batch

Request samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Response samples

Content type
application/json
[
  • {
    }
]

Batch Update Expected Machines

Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Optional ID of the SKU to associate with this Expected Machine

rackId
string or null

Optional rack identifier for this component

+
bmcIpAddress
string or null

Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC.

name
string or null

Display name for this component

manufacturer
string or null
Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Host ID within the tray

object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Machines

-

Responses

Responses

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

Unique identifier for the Expected Machine

-
siteId
string <uuid>

ID of the site the Expected Machine belongs to

-
bmcMacAddress
string^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$

MAC address of the Expected Machine's BMC (Baseboard Management Controller)

-
chassisSerialNumber
string

Serial number of the Expected Machine's chassis

-
fallbackDPUSerialNumbers
Array of strings

Serial numbers of the Expected Machine's fallback DPUs (Data Processing Units)

-
skuId
string or null

Optional ID of the SKU associated with this Expected Machine

-
object (Sku)

SKU information for this Expected Machine (populated when includeRelation=Sku is specified)

-
machineId
string or null

Optional ID of the Machine associated with this Expected Machine

-
object (MachineSummary)

Machine information for this Expected Machine (populated when includeRelation=Machine is specified)

-
rackId
string or null

Optional rack identifier for this component

-
name
string or null

Display name for this component

-
manufacturer
string or null

Manufacturer of this component

-
model
string or null

Model of this component

-
description
string or null

Description of this component

-
firmwareVersion
string or null

Firmware version of this component

-
slotId
integer or null <int32>

Slot ID within the rack

-
trayIdx
integer or null <int32>

Tray index within the rack

-
hostId
integer or null <int32>

Host ID within the tray

-
object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Machines

-
created
string <date-time>

ISO 8601 datetime when the Expected Machine was created

-
updated
string <date-time>

ISO 8601 datetime when the Expected Machine was last updated

-

Request samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Response samples

Content type
application/json
[
  • {
    }
]

Expected Power Shelf

https://carbide-rest-api.carbide.svc.cluster.local/v2/org/{org}/carbide/expected-machine/batch

Request samples

Content type
application/json
[
  • {
    },
  • {
    }
]

Response samples

Content type
application/json
[
  • {
    }
]

Expected Power Shelf

Expected Power Shelf identifies a Power Shelf that is expected to be discovered at a Site. Infrastructure Providers can pre-register Expected Power Shelves using BMC credentials and serial numbers to help with Power Shelf discovery and ingestion.

@@ -2986,8 +2020,8 @@

Typical API Call Flow for Tenant

" class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Password for accessing the Expected Power Shelf's BMC

shelfSerialNumber
required
string [ 1 .. 32 ] characters

Serial number of the Expected Power Shelf

-
ipAddress
string or null

IP address of the Expected Power Shelf

+
bmcIpAddress
string or null

Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC.

rackId
string or null

Optional rack identifier for this component

name
string or null
Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Host ID within the tray

object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Power Shelves

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the Expected Power Shelf

-
siteId
string <uuid>

ID of the site the Expected Power Shelf belongs to

-
bmcMacAddress
string^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$

MAC address of the Expected Power Shelf's BMC (Baseboard Management Controller)

-
shelfSerialNumber
string

Serial number of the Expected Power Shelf

-
ipAddress
string or null

IP address of the Expected Power Shelf

-
rackId
string or null

Optional rack identifier for this component

-
name
string or null

Display name for this component

-
manufacturer
string or null

Manufacturer of this component

-
model
string or null

Model of this component

-
description
string or null

Description of this component

-
firmwareVersion
string or null

Firmware version of this component

-
slotId
integer or null <int32>

Slot ID within the rack

-
trayIdx
integer or null <int32>

Tray index within the rack

-
hostId
integer or null <int32>

Host ID within the tray

-
object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Power Shelves

-
created
string <date-time>

ISO 8601 datetime when the Expected Power Shelf was created

-
updated
string <date-time>

ISO 8601 datetime when the Expected Power Shelf was last updated

-

Request samples

Content type
application/json
{
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "defaultBmcUsername": "admin",
  • "defaultBmcPassword": "password123",
  • "shelfSerialNumber": "SHELF-12345",
  • "ipAddress": "192.168.1.100",
  • "labels": {
    }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "shelfSerialNumber": "SHELF-12345",
  • "ipAddress": "192.168.1.100",
  • "rackId": "rack-01",
  • "manufacturer": "Delta",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Retrieve all Expected Power Shelves

https://carbide-rest-api.carbide.svc.cluster.local/v2/org/{org}/carbide/expected-power-shelf

Request samples

Content type
application/json
{
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "defaultBmcUsername": "admin",
  • "defaultBmcPassword": "password123",
  • "shelfSerialNumber": "SHELF-12345",
  • "bmcIpAddress": "192.168.1.100",
  • "labels": {
    }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "shelfSerialNumber": "SHELF-12345",
  • "bmcIpAddress": "192.168.1.100",
  • "rackId": "rack-01",
  • "manufacturer": "Delta",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Retrieve all Expected Power Shelves

Retrieve all Expected Power Shelves.

@@ -3068,51 +2068,15 @@

Typical API Call Flow for Tenant

" class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Page size for pagination query

orderBy
string
Enum: "BMC_MAC_ADDRESS_ASC" "BMC_MAC_ADDRESS_DESC" "SHELF_SERIAL_NUMBER_ASC" "SHELF_SERIAL_NUMBER_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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>

Unique identifier for the Expected Power Shelf

-
siteId
string <uuid>

ID of the site the Expected Power Shelf belongs to

-
bmcMacAddress
string^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$

MAC address of the Expected Power Shelf's BMC (Baseboard Management Controller)

-
shelfSerialNumber
string

Serial number of the Expected Power Shelf

-
ipAddress
string or null

IP address of the Expected Power Shelf

-
rackId
string or null

Optional rack identifier for this component

-
name
string or null

Display name for this component

-
manufacturer
string or null

Manufacturer of this component

-
model
string or null

Model of this component

-
description
string or null

Description of this component

-
firmwareVersion
string or null

Firmware version of this component

-
slotId
integer or null <int32>

Slot ID within the rack

-
trayIdx
integer or null <int32>

Tray index within the rack

-
hostId
integer or null <int32>

Host ID within the tray

-
object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Power Shelves

-
created
string <date-time>

ISO 8601 datetime when the Expected Power Shelf was created

-
updated
string <date-time>

ISO 8601 datetime when the Expected Power Shelf was last updated

-

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve Expected Power Shelf

https://carbide-rest-api.carbide.svc.cluster.local/v2/org/{org}/carbide/expected-power-shelf

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve Expected Power Shelf

Retrieve a specific Expected Power Shelf by ID.

@@ -3124,43 +2088,9 @@

Typical API Call Flow for Tenant

" class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

ID of the Expected Power Shelf

query Parameters
includeRelation
string
Value: "Site"

Related entity to expand

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the Expected Power Shelf

-
siteId
string <uuid>

ID of the site the Expected Power Shelf belongs to

-
bmcMacAddress
string^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$

MAC address of the Expected Power Shelf's BMC (Baseboard Management Controller)

-
shelfSerialNumber
string

Serial number of the Expected Power Shelf

-
ipAddress
string or null

IP address of the Expected Power Shelf

-
rackId
string or null

Optional rack identifier for this component

-
name
string or null

Display name for this component

-
manufacturer
string or null

Manufacturer of this component

-
model
string or null

Model of this component

-
description
string or null

Description of this component

-
firmwareVersion
string or null

Firmware version of this component

-
slotId
integer or null <int32>

Slot ID within the rack

-
trayIdx
integer or null <int32>

Tray index within the rack

-
hostId
integer or null <int32>

Host ID within the tray

-
object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Power Shelves

-
created
string <date-time>

ISO 8601 datetime when the Expected Power Shelf was created

-
updated
string <date-time>

ISO 8601 datetime when the Expected Power Shelf was last updated

-

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "shelfSerialNumber": "SHELF-12345",
  • "ipAddress": "192.168.1.100",
  • "rackId": "rack-01",
  • "manufacturer": "Delta",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Update Expected Power Shelf

https://carbide-rest-api.carbide.svc.cluster.local/v2/org/{org}/carbide/expected-power-shelf/{expectedPowerShelfId}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "shelfSerialNumber": "SHELF-12345",
  • "bmcIpAddress": "192.168.1.100",
  • "rackId": "rack-01",
  • "manufacturer": "Delta",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Update Expected Power Shelf

Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Password for accessing the Expected Power Shelf's BMC

shelfSerialNumber
string or null [ 1 .. 32 ] characters

Serial number of the Expected Power Shelf

-
ipAddress
string or null

IP address of the Expected Power Shelf

-
rackId
string or null

Optional rack identifier for this component

-
name
string or null

Display name for this component

-
manufacturer
string or null

Manufacturer of this component

-
model
string or null

Model of this component

-
description
string or null

Description of this component

-
firmwareVersion
string or null

Firmware version of this component

-
slotId
integer or null <int32>

Slot ID within the rack

-
trayIdx
integer or null <int32>

Tray index within the rack

-
hostId
integer or null <int32>

Host ID within the tray

-
object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Power Shelves

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the Expected Power Shelf

-
siteId
string <uuid>

ID of the site the Expected Power Shelf belongs to

-
bmcMacAddress
string^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$

MAC address of the Expected Power Shelf's BMC (Baseboard Management Controller)

-
shelfSerialNumber
string

Serial number of the Expected Power Shelf

-
ipAddress
string or null

IP address of the Expected Power Shelf

+
bmcIpAddress
string or null

Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC.

rackId
string or null

Optional rack identifier for this component

name
string or null
Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Tray index within the rack

hostId
integer or null <int32>

Host ID within the tray

-
object (Labels) <= 10 properties
object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Power Shelves

-
created
string <date-time>

ISO 8601 datetime when the Expected Power Shelf was created

-
updated
string <date-time>

ISO 8601 datetime when the Expected Power Shelf was last updated

-

Request samples

Content type
application/json
{
  • "defaultBmcUsername": "newadmin",
  • "defaultBmcPassword": "newpassword123",
  • "shelfSerialNumber": "SHELF-54321",
  • "ipAddress": "192.168.1.200",
  • "labels": {
    }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "shelfSerialNumber": "SHELF-12345",
  • "ipAddress": "192.168.1.100",
  • "rackId": "rack-01",
  • "manufacturer": "Delta",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Delete Expected Power Shelf

https://carbide-rest-api.carbide.svc.cluster.local/v2/org/{org}/carbide/expected-power-shelf/{expectedPowerShelfId}

Request samples

Content type
application/json
{
  • "defaultBmcUsername": "newadmin",
  • "defaultBmcPassword": "newpassword123",
  • "shelfSerialNumber": "SHELF-54321",
  • "bmcIpAddress": "192.168.1.200",
  • "labels": {
    }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "shelfSerialNumber": "SHELF-12345",
  • "bmcIpAddress": "192.168.1.100",
  • "rackId": "rack-01",
  • "manufacturer": "Delta",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Delete Expected Power Shelf

Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

NvOS password for the Expected Switch

rackId
string or null

Optional rack identifier for this component

+
bmcIpAddress
string or null

Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC.

name
string or null

Display name for this component

manufacturer
string or null
Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Host ID within the tray

object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Switches

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the Expected Switch

-
siteId
string <uuid>

ID of the site the Expected Switch belongs to

-
bmcMacAddress
string^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$

MAC address of the Expected Switch's BMC (Baseboard Management Controller)

-
switchSerialNumber
string

Serial number of the Expected Switch

-
rackId
string or null

Optional rack identifier for this component

-
name
string or null

Display name for this component

-
manufacturer
string or null

Manufacturer of this component

-
model
string or null

Model of this component

-
description
string or null

Description of this component

-
firmwareVersion
string or null

Firmware version of this component

-
slotId
integer or null <int32>

Slot ID within the rack

-
trayIdx
integer or null <int32>

Tray index within the rack

-
hostId
integer or null <int32>

Host ID within the tray

-
object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Switches

-
created
string <date-time>

ISO 8601 datetime when the Expected Switch was created

-
updated
string <date-time>

ISO 8601 datetime when the Expected Switch was last updated

-

Request samples

Content type
application/json
{
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "defaultBmcUsername": "admin",
  • "defaultBmcPassword": "password123",
  • "switchSerialNumber": "SWITCH-12345",
  • "nvOsUsername": "nvadmin",
  • "nvOsPassword": "nvpassword123",
  • "labels": {
    }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "switchSerialNumber": "SWITCH-12345",
  • "rackId": "rack-01",
  • "manufacturer": "NVIDIA",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Retrieve all Expected Switches

https://carbide-rest-api.carbide.svc.cluster.local/v2/org/{org}/carbide/expected-switch

Request samples

Content type
application/json
{
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "defaultBmcUsername": "admin",
  • "defaultBmcPassword": "password123",
  • "switchSerialNumber": "SWITCH-12345",
  • "nvOsUsername": "nvadmin",
  • "nvOsPassword": "nvpassword123",
  • "labels": {
    }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "bmcIpAddress": "192.168.1.100",
  • "switchSerialNumber": "SWITCH-12345",
  • "rackId": "rack-01",
  • "manufacturer": "NVIDIA",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Retrieve all Expected Switches

Retrieve all Expected Switches.

@@ -3386,49 +2252,15 @@

Typical API Call Flow for Tenant

" class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Page size for pagination query

orderBy
string
Enum: "BMC_MAC_ADDRESS_ASC" "BMC_MAC_ADDRESS_DESC" "SWITCH_SERIAL_NUMBER_ASC" "SWITCH_SERIAL_NUMBER_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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>

Unique identifier for the Expected Switch

-
siteId
string <uuid>

ID of the site the Expected Switch belongs to

-
bmcMacAddress
string^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$

MAC address of the Expected Switch's BMC (Baseboard Management Controller)

-
switchSerialNumber
string

Serial number of the Expected Switch

-
rackId
string or null

Optional rack identifier for this component

-
name
string or null

Display name for this component

-
manufacturer
string or null

Manufacturer of this component

-
model
string or null

Model of this component

-
description
string or null

Description of this component

-
firmwareVersion
string or null

Firmware version of this component

-
slotId
integer or null <int32>

Slot ID within the rack

-
trayIdx
integer or null <int32>

Tray index within the rack

-
hostId
integer or null <int32>

Host ID within the tray

-
object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Switches

-
created
string <date-time>

ISO 8601 datetime when the Expected Switch was created

-
updated
string <date-time>

ISO 8601 datetime when the Expected Switch was last updated

-

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve Expected Switch

https://carbide-rest-api.carbide.svc.cluster.local/v2/org/{org}/carbide/expected-switch

Response samples

Content type
application/json
[
  • {
    }
]

Retrieve Expected Switch

Retrieve a specific Expected Switch by ID.

@@ -3440,41 +2272,9 @@

Typical API Call Flow for Tenant

" class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

ID of the Expected Switch

query Parameters
includeRelation
string
Value: "Site"

Related entity to expand

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the Expected Switch

-
siteId
string <uuid>

ID of the site the Expected Switch belongs to

-
bmcMacAddress
string^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$

MAC address of the Expected Switch's BMC (Baseboard Management Controller)

-
switchSerialNumber
string

Serial number of the Expected Switch

-
rackId
string or null

Optional rack identifier for this component

-
name
string or null

Display name for this component

-
manufacturer
string or null

Manufacturer of this component

-
model
string or null

Model of this component

-
description
string or null

Description of this component

-
firmwareVersion
string or null

Firmware version of this component

-
slotId
integer or null <int32>

Slot ID within the rack

-
trayIdx
integer or null <int32>

Tray index within the rack

-
hostId
integer or null <int32>

Host ID within the tray

-
object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Switches

-
created
string <date-time>

ISO 8601 datetime when the Expected Switch was created

-
updated
string <date-time>

ISO 8601 datetime when the Expected Switch was last updated

-

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "switchSerialNumber": "SWITCH-12345",
  • "rackId": "rack-01",
  • "manufacturer": "NVIDIA",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Update Expected Switch

https://carbide-rest-api.carbide.svc.cluster.local/v2/org/{org}/carbide/expected-switch/{expectedSwitchId}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "bmcIpAddress": "192.168.1.100",
  • "switchSerialNumber": "SWITCH-12345",
  • "rackId": "rack-01",
  • "manufacturer": "NVIDIA",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Update Expected Switch

Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

NvOS password for the Expected Switch

rackId
string or null

Optional rack identifier for this component

+
bmcIpAddress
string or null

Optional BMC IP address (IPv4 or IPv6). When set, pre-allocates a reserved IP for the BMC.

name
string or null

Display name for this component

manufacturer
string or null
Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Host ID within the tray

object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Switches

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the Expected Switch

-
siteId
string <uuid>

ID of the site the Expected Switch belongs to

-
bmcMacAddress
string^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$

MAC address of the Expected Switch's BMC (Baseboard Management Controller)

-
switchSerialNumber
string

Serial number of the Expected Switch

-
rackId
string or null

Optional rack identifier for this component

-
name
string or null

Display name for this component

-
manufacturer
string or null

Manufacturer of this component

-
model
string or null

Model of this component

-
description
string or null

Description of this component

-
firmwareVersion
string or null

Firmware version of this component

-
slotId
integer or null <int32>

Slot ID within the rack

-
trayIdx
integer or null <int32>

Tray index within the rack

-
hostId
integer or null <int32>

Host ID within the tray

-
object (Labels) <= 10 properties

User-defined key-value pairs for organizing and categorizing Expected Switches

-
created
string <date-time>

ISO 8601 datetime when the Expected Switch was created

-
updated
string <date-time>

ISO 8601 datetime when the Expected Switch was last updated

-

Request samples

Content type
application/json
{
  • "defaultBmcUsername": "newadmin",
  • "defaultBmcPassword": "newpassword123",
  • "switchSerialNumber": "SWITCH-54321",
  • "nvOsUsername": "newnvadmin",
  • "nvOsPassword": "newnvpassword123",
  • "labels": {
    }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "switchSerialNumber": "SWITCH-12345",
  • "rackId": "rack-01",
  • "manufacturer": "NVIDIA",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Delete Expected Switch

https://carbide-rest-api.carbide.svc.cluster.local/v2/org/{org}/carbide/expected-switch/{expectedSwitchId}

Request samples

Content type
application/json
{
  • "defaultBmcUsername": "newadmin",
  • "defaultBmcPassword": "newpassword123",
  • "switchSerialNumber": "SWITCH-54321",
  • "nvOsUsername": "newnvadmin",
  • "nvOsPassword": "newnvpassword123",
  • "labels": {
    }
}

Response samples

Content type
application/json
{
  • "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
  • "siteId": "f97df110-f4de-492e-8849-4a6af68026b0",
  • "bmcMacAddress": "00:1A:2B:3C:4D:5E",
  • "bmcIpAddress": "192.168.1.100",
  • "switchSerialNumber": "SWITCH-12345",
  • "rackId": "rack-01",
  • "manufacturer": "NVIDIA",
  • "labels": {
    },
  • "created": "2019-08-24T14:15:22Z",
  • "updated": "2019-08-24T14:15:22Z"
}

Delete Expected Switch

Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Page size for pagination query

orderBy
string
Enum: "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC" "ID_ASC" "ID_DESC"

Ordering for pagination query

-

Responses

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

Unique identifier for the SKU

-
siteId
string <uuid>

ID of the Site this SKU belongs to

-
deviceType
string or null

Optional device type identifier (e.g. "gpu", "cpu", "storage")

-
associatedMachineIds
Array of strings

List of machine IDs associated with this SKU

-
object (SkuComponents)

Hardware components of this SKU

-
created
string <date-time>

ISO 8601 datetime when the SKU was created

-
updated
string <date-time>

ISO 8601 datetime when the SKU was last updated

-
skuId
required
string

ID of the SKU

-

Responses

Response Schema: application/json
id
string

Unique identifier for the SKU

-
siteId
string <uuid>

ID of the Site this SKU belongs to

-
deviceType
string or null

Optional device type identifier (e.g. "gpu", "cpu", "storage")

-
associatedMachineIds
Array of strings

List of machine IDs associated with this SKU

-
object (SkuComponents)

Hardware components of this SKU

-
created
string <date-time>

ISO 8601 datetime when the SKU was created

-
updated
string <date-time>

ISO 8601 datetime when the SKU was last updated

-
orderBy
string
Enum: "NAME_ASC" "NAME_DESC" "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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

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

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

Status values for InfiniBand Partition objects

-
Array of objects (StatusDetail)
created
string <date-time>
updated
string <date-time>
object (Labels) <= 10 properties

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

-

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string
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

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

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

Status values for InfiniBand Partition objects

-
Array of objects (StatusDetail)
created
string <date-time>
updated
string <date-time>
query Parameters
includeRelation
string
Enum: "Site" "VPC" "Tenant"

Related entity to expand

-

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string
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

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

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

Status values for InfiniBand Partition objects

-
Array of objects (StatusDetail)
created
string <date-time>
updated
string <date-time>
Request Body schema: application/json
name
required
string [ 2 .. 256 ] characters
description
string
object (Labels) <= 10 properties

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

-

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string
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

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

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

Status values for InfiniBand Partition objects

-
Array of objects (StatusDetail)
created
string <date-time>
updated
string <date-time>
orderBy
string
Enum: "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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>

ID of the InfiniBand Partition associated with this interface

-
device
string

Name of the InfiniBand device associated with this interface

-
deviceInstance
integer
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>
orderBy
string
Enum: "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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>

Unique ID of the NVLink Logical Partition

-
name
string [ 2 .. 256 ] characters

Name of the NVLink Logical Partition

-
description
string

Optional description of the NVLink Logical Partition

-
siteId
string <uuid>

ID of the Site the NVLink Logical Partition belongs to

-
tenantId
string <uuid>

ID of the Tenant the NVLink Logical Partition belongs to

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

Status of the NVLink Logical Partition

-
Array of objects (StatusDetail)

Details of status changes for the NVLink Logical Partition over time

-
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

-
siteId
required
string <uuid>

ID of the Site the NVLink Logical Partition should belong to

-

Responses

Response Schema: application/json
id
string <uuid>

Unique ID of the NVLink Logical Partition

-
name
string [ 2 .. 256 ] characters

Name of the NVLink Logical Partition

-
description
string

Optional description of the NVLink Logical Partition

-
siteId
string <uuid>

ID of the Site the NVLink Logical Partition belongs to

-
tenantId
string <uuid>

ID of the Tenant the NVLink Logical Partition belongs to

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

Status of the NVLink Logical Partition

-
Array of objects (StatusDetail)

Details of status changes for the NVLink Logical Partition over time

-
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

-
includeRelation
string
Enum: "Site" "Tenant"

Related entity to expand

-

Responses

Response Schema: application/json
id
string <uuid>

Unique ID of the NVLink Logical Partition

-
name
string [ 2 .. 256 ] characters

Name of the NVLink Logical Partition

-
description
string

Optional description of the NVLink Logical Partition

-
siteId
string <uuid>

ID of the Site the NVLink Logical Partition belongs to

-
tenantId
string <uuid>

ID of the Tenant the NVLink Logical Partition belongs to

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

Status of the NVLink Logical Partition

-
Array of objects (StatusDetail)

Details of status changes for the NVLink Logical Partition over time

-
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

-
description
string

Updated description for the NVLink Logical Partition

-

Responses

Response Schema: application/json
id
string <uuid>

Unique ID of the NVLink Logical Partition

-
name
string [ 2 .. 256 ] characters

Name of the NVLink Logical Partition

-
description
string

Optional description of the NVLink Logical Partition

-
siteId
string <uuid>

ID of the Site the NVLink Logical Partition belongs to

-
tenantId
string <uuid>

ID of the Tenant the NVLink Logical Partition belongs to

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

Status of the NVLink Logical Partition

-
Array of objects (StatusDetail)

Details of status changes for the NVLink Logical Partition over time

-
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

-
orderBy
string
Enum: "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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>

ID of the NVLink Logical Partition associated with this interface

-
nvLinkDomainId
string <uuid>

ID of the NVLink Domain associated with this Interface

-
deviceInstance
integer

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

-
gpuGuid
string

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>
orderBy
string
Enum: "NAME_ASC" "NAME_DESC" "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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>

ID of the Operating System

-
name
string [ 2 .. 256 ] characters

Name of the Operating System

-
description
string

Optional description of the Operating System

-
infrastructureProviderId
string or null <uuid>

Specified if a Provider owns the Operating System

-
tenantId
string or null <uuid>

Specified if a Tenant owns the Operating System

-
type
string
Enum: "iPXE" "Image"

Type of the Operating System

-
imageUrl
string or null <uri>

Original URL from where the Operating System image can be retrieved

-
imageSha
string or null

SHA hash of the image file, only present for image based OS

-
imageAuthType
string or null

Authentication type for image URL e.g. 'Basic' or 'Bearer'

-
imageAuthToken
string or null

Auth token to retrieve the image from image URL

-
imageDisk
string or null

Disk path where the image should be monuted

-
rootFsId
string or null

Root filesystem UUID, only applicable for image based Operating System

-
rootFsLabel
string or null

Root filesystem label, only applicable for image based Operating System

-
ipxeScript
string or null

iPXE script or URL, only applicable for iPXE based Operating System

-
userData
string or null

User data for the Operating System

-
isCloudInit
boolean

Specified when the Operating System is Cloud Init based

-
phoneHomeEnabled
boolean

Indicates whether the Phone Home service should be enabled or disabled for Operating System

-
isActive
boolean

Indicates if the Operating System is active

-
deactivationNote
string or null

Optional deactivation note if OS is inactive

-
allowOverride
boolean

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

-
Array of objects (OperatingSystemSiteAssociation)

Sites the Operating System is synced to

-
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

-
created
string <date-time>

Date/time when the Operating System was created

-
updated
string <date-time>

Date/time when the Operating System was updated

-
allowOverride
boolean

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

-

Responses

Response Schema: application/json
id
string <uuid>

ID of the Operating System

-
name
string [ 2 .. 256 ] characters

Name of the Operating System

-
description
string

Optional description of the Operating System

-
infrastructureProviderId
string or null <uuid>

Specified if a Provider owns the Operating System

-
tenantId
string or null <uuid>

Specified if a Tenant owns the Operating System

-
type
string
Enum: "iPXE" "Image"

Type of the Operating System

-
imageUrl
string or null <uri>

Original URL from where the Operating System image can be retrieved

-
imageSha
string or null

SHA hash of the image file, only present for image based OS

-
imageAuthType
string or null

Authentication type for image URL e.g. 'Basic' or 'Bearer'

-
imageAuthToken
string or null

Auth token to retrieve the image from image URL

-
imageDisk
string or null

Disk path where the image should be monuted

-
rootFsId
string or null

Root filesystem UUID, only applicable for image based Operating System

-
rootFsLabel
string or null

Root filesystem label, only applicable for image based Operating System

-
ipxeScript
string or null

iPXE script or URL, only applicable for iPXE based Operating System

-
userData
string or null

User data for the Operating System

-
isCloudInit
boolean

Specified when the Operating System is Cloud Init based

-
phoneHomeEnabled
boolean

Indicates whether the Phone Home service should be enabled or disabled for Operating System

-
isActive
boolean

Indicates if the Operating System is active

-
deactivationNote
string or null

Optional deactivation note if OS is inactive

-
allowOverride
boolean

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

-
Array of objects (OperatingSystemSiteAssociation)

Sites the Operating System is synced to

-
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

-
created
string <date-time>

Date/time when the Operating System was created

-
updated
string <date-time>

Date/time when the Operating System was updated

-
query Parameters
includeRelation
string
Enum: "InfrastructureProvider" "Tenant"

Related entity to expand

-

Responses

Response Schema: application/json
id
string <uuid>

ID of the Operating System

-
name
string [ 2 .. 256 ] characters

Name of the Operating System

-
description
string

Optional description of the Operating System

-
infrastructureProviderId
string or null <uuid>

Specified if a Provider owns the Operating System

-
tenantId
string or null <uuid>

Specified if a Tenant owns the Operating System

-
type
string
Enum: "iPXE" "Image"

Type of the Operating System

-
imageUrl
string or null <uri>

Original URL from where the Operating System image can be retrieved

-
imageSha
string or null

SHA hash of the image file, only present for image based OS

-
imageAuthType
string or null

Authentication type for image URL e.g. 'Basic' or 'Bearer'

-
imageAuthToken
string or null

Auth token to retrieve the image from image URL

-
imageDisk
string or null

Disk path where the image should be monuted

-
rootFsId
string or null

Root filesystem UUID, only applicable for image based Operating System

-
rootFsLabel
string or null

Root filesystem label, only applicable for image based Operating System

-
ipxeScript
string or null

iPXE script or URL, only applicable for iPXE based Operating System

-
userData
string or null

User data for the Operating System

-
isCloudInit
boolean

Specified when the Operating System is Cloud Init based

-
phoneHomeEnabled
boolean

Indicates whether the Phone Home service should be enabled or disabled for Operating System

-
isActive
boolean

Indicates if the Operating System is active

-
deactivationNote
string or null

Optional deactivation note if OS is inactive

-
allowOverride
boolean

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

-
Array of objects (OperatingSystemSiteAssociation)

Sites the Operating System is synced to

-
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

-
created
string <date-time>

Date/time when the Operating System was created

-
updated
string <date-time>

Date/time when the Operating System was updated

-
deactivationNote
string or null

Optional deactivation note if OS is inactive

-

Responses

Response Schema: application/json
id
string <uuid>

ID of the Operating System

-
name
string [ 2 .. 256 ] characters

Name of the Operating System

-
description
string

Optional description of the Operating System

-
infrastructureProviderId
string or null <uuid>

Specified if a Provider owns the Operating System

-
tenantId
string or null <uuid>

Specified if a Tenant owns the Operating System

-
type
string
Enum: "iPXE" "Image"

Type of the Operating System

-
imageUrl
string or null <uri>

Original URL from where the Operating System image can be retrieved

-
imageSha
string or null

SHA hash of the image file, only present for image based OS

-
imageAuthType
string or null

Authentication type for image URL e.g. 'Basic' or 'Bearer'

-
imageAuthToken
string or null

Auth token to retrieve the image from image URL

-
imageDisk
string or null

Disk path where the image should be monuted

-
rootFsId
string or null

Root filesystem UUID, only applicable for image based Operating System

-
rootFsLabel
string or null

Root filesystem label, only applicable for image based Operating System

-
ipxeScript
string or null

iPXE script or URL, only applicable for iPXE based Operating System

-
userData
string or null

User data for the Operating System

-
isCloudInit
boolean

Specified when the Operating System is Cloud Init based

-
phoneHomeEnabled
boolean

Indicates whether the Phone Home service should be enabled or disabled for Operating System

-
isActive
boolean

Indicates if the Operating System is active

-
deactivationNote
string or null

Optional deactivation note if OS is inactive

-
allowOverride
boolean

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

-
Array of objects (OperatingSystemSiteAssociation)

Sites the Operating System is synced to

-
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

-
created
string <date-time>

Date/time when the Operating System was created

-
updated
string <date-time>

Date/time when the Operating System was updated

-
orderBy
string
Enum: "NAME_ASC" "NAME_DESC" "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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
controllerMachineType
string
infrastructureProviderId
string <uuid>
siteId
string <uuid>
object (Labels) <= 10 properties
Array of objects (MachineCapability)
Array of objects (MachineInstanceType)

Available only for Providers

-
object (InstanceTypeAllocationStats)

summary of machine counts by allocation status

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

Status values for Instance Type objects

-
Array of objects (StatusDetail)
Array of objects (Deprecation)
created
string <date-time>
updated
string <date-time>

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string
controllerMachineType
string
infrastructureProviderId
string <uuid>
siteId
string <uuid>
object (Labels) <= 10 properties
Array of objects (MachineCapability)
Array of objects (MachineInstanceType)

Available only for Providers

-
object (InstanceTypeAllocationStats)

summary of machine counts by allocation status

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

Status values for Instance Type objects

-
Array of objects (StatusDetail)
Array of objects (Deprecation)
created
string <date-time>
updated
string <date-time>
instanceTypeId
required
string <uuid>

ID of the Instance Type

-
Request Body schema: application/json
name
string [ 2 .. 256 ] characters
description
string
object (Labels) <= 10 properties
Array of objects (MachineCapability)

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string
controllerMachineType
string
infrastructureProviderId
string <uuid>
siteId
string <uuid>
object (Labels) <= 10 properties
Array of objects (MachineCapability)
Array of objects (MachineInstanceType)

Available only for Providers

-
object (InstanceTypeAllocationStats)

summary of machine counts by allocation status

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

Status values for Instance Type objects

-
Array of objects (StatusDetail)
Array of objects (Deprecation)
created
string <date-time>
updated
string <date-time>
orderBy
string
Enum: "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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>
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>
instanceTypeId
required
string <uuid>

ID of the Instance Type

-
Request Body schema: application/json
machineIds
required
Array of strings <uuid> non-empty [ items <uuid > ]

Responses

Response Schema: application/json
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>
networkSecurityGroupId
string

Filter by NetworkSecurityGroup ID. Can be specified multiple times to filter on more than one Network Security Group.

-

Responses

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>

Unique identifier for the Instance

-
name
string [ 2 .. 256 ] characters

Name for the Instance

-
description
string

Description for the Instance

-
tenantId
string <uuid>

ID of the Tenant the Instance belongs to

-
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider that owns the Site where the Instance is located

-
siteId
string <uuid>

ID of the Site where the Instance is located

-
instanceTypeId
string <uuid>
vpcId
string <uuid>
secondaryVpcIds
Array of strings <uuid> [ items <uuid > ]

IDs of VPCs attached to the Instance through non-primary interfaces

-
machineId
string or null
operatingSystemId
string <uuid>
networkSecurityGroupId
string or null
object (NetworkSecurityGroupPropagationDetails)

Propagation details for the attached Network Security Group

-
networkSecurityGroupInherited
boolean

Indicates if the Network Security Group is inherited from VPC

-
controllerInstanceId
string or null <uuid>
ipxeScript
string or null
alwaysBootWithCustomIpxe
boolean

Indicates whether the Instance should always execute custom iPXE script when rebooting

-
phoneHomeEnabled
boolean

Indicates whether the Phone Home service should be enabled or disabled for Instance

-
userData
string or null
object (Labels) <= 10 properties
isUpdatePending
boolean

Indicates whether an update is available for the Instance. Updates can be applied on reboot

-
serialConsoleUrl
string or null

Serial Console URL for the Instance. Format: ssh://@siteSerialConsoleHostname

-
Array of objects (Interface)
Array of objects (InfiniBandInterface)
Array of objects (NVLinkInterface)
Array of objects (DpuExtensionServiceDeployment)

DPU Extension Services deployed on DPUs of this Instance

-
sshKeyGroupIds
Array of strings <uuid> [ items <uuid > ]

IDs of SSH Key Groups associated with this Instance

-
Array of objects (SshKeyGroup)

IDs of SSH Key Groups associated with this Instance

-
tpmEkCertificate
string or null

base64 encoded TPM EK Certificate associated with this Instance

-
status
string (InstanceStatus)
Enum: "Pending" "Provisioning" "Configuring" "Ready" "Updating" "Rebooting" "Terminating" "Error"

Status values for Instance objects

-
Array of objects (StatusDetail)
Array of objects (Deprecation)
created
string <date-time>
updated
string <date-time>
allowUnhealthyMachine
boolean

Set to true in order to target Machines are in maintenance or have health alerts preventing regular provision flow. Requires Targeted Instance Creation capability enabled for Tenant

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the Instance

-
name
string [ 2 .. 256 ] characters

Name for the Instance

-
description
string

Description for the Instance

-
tenantId
string <uuid>

ID of the Tenant the Instance belongs to

-
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider that owns the Site where the Instance is located

-
siteId
string <uuid>

ID of the Site where the Instance is located

-
instanceTypeId
string <uuid>
vpcId
string <uuid>
secondaryVpcIds
Array of strings <uuid> [ items <uuid > ]

IDs of VPCs attached to the Instance through non-primary interfaces

-
machineId
string or null
operatingSystemId
string <uuid>
networkSecurityGroupId
string or null
object (NetworkSecurityGroupPropagationDetails)

Propagation details for the attached Network Security Group

-
networkSecurityGroupInherited
boolean

Indicates if the Network Security Group is inherited from VPC

-
controllerInstanceId
string or null <uuid>
ipxeScript
string or null
alwaysBootWithCustomIpxe
boolean

Indicates whether the Instance should always execute custom iPXE script when rebooting

-
phoneHomeEnabled
boolean

Indicates whether the Phone Home service should be enabled or disabled for Instance

-
userData
string or null
object (Labels) <= 10 properties
isUpdatePending
boolean

Indicates whether an update is available for the Instance. Updates can be applied on reboot

-
serialConsoleUrl
string or null

Serial Console URL for the Instance. Format: ssh://@siteSerialConsoleHostname

-
Array of objects (Interface)
Array of objects (InfiniBandInterface)
Array of objects (NVLinkInterface)
Array of objects (DpuExtensionServiceDeployment)

DPU Extension Services deployed on DPUs of this Instance

-
sshKeyGroupIds
Array of strings <uuid> [ items <uuid > ]

IDs of SSH Key Groups associated with this Instance

-
Array of objects (SshKeyGroup)

IDs of SSH Key Groups associated with this Instance

-
tpmEkCertificate
string or null

base64 encoded TPM EK Certificate associated with this Instance

-
status
string (InstanceStatus)
Enum: "Pending" "Provisioning" "Configuring" "Ready" "Updating" "Rebooting" "Terminating" "Error"

Status values for Instance objects

-
Array of objects (StatusDetail)
Array of objects (Deprecation)
created
string <date-time>
updated
string <date-time>
topologyOptimized
boolean
Default: true

When true (default), all instances must be allocated on machines within the same NVLink domain. When false, instances can be spread across different NVLink domains.

-

Responses

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

Unique identifier for the Instance

-
name
string [ 2 .. 256 ] characters

Name for the Instance

-
description
string

Description for the Instance

-
tenantId
string <uuid>

ID of the Tenant the Instance belongs to

-
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider that owns the Site where the Instance is located

-
siteId
string <uuid>

ID of the Site where the Instance is located

-
instanceTypeId
string <uuid>
vpcId
string <uuid>
secondaryVpcIds
Array of strings <uuid> [ items <uuid > ]

IDs of VPCs attached to the Instance through non-primary interfaces

-
machineId
string or null
operatingSystemId
string <uuid>
networkSecurityGroupId
string or null
object (NetworkSecurityGroupPropagationDetails)

Propagation details for the attached Network Security Group

-
networkSecurityGroupInherited
boolean

Indicates if the Network Security Group is inherited from VPC

-
controllerInstanceId
string or null <uuid>
ipxeScript
string or null
alwaysBootWithCustomIpxe
boolean

Indicates whether the Instance should always execute custom iPXE script when rebooting

-
phoneHomeEnabled
boolean

Indicates whether the Phone Home service should be enabled or disabled for Instance

-
userData
string or null
object (Labels) <= 10 properties
isUpdatePending
boolean

Indicates whether an update is available for the Instance. Updates can be applied on reboot

-
serialConsoleUrl
string or null

Serial Console URL for the Instance. Format: ssh://@siteSerialConsoleHostname

-
Array of objects (Interface)
Array of objects (InfiniBandInterface)
Array of objects (NVLinkInterface)
Array of objects (DpuExtensionServiceDeployment)

DPU Extension Services deployed on DPUs of this Instance

-
sshKeyGroupIds
Array of strings <uuid> [ items <uuid > ]

IDs of SSH Key Groups associated with this Instance

-
Array of objects (SshKeyGroup)

IDs of SSH Key Groups associated with this Instance

-
tpmEkCertificate
string or null

base64 encoded TPM EK Certificate associated with this Instance

-
status
string (InstanceStatus)
Enum: "Pending" "Provisioning" "Configuring" "Ready" "Updating" "Rebooting" "Terminating" "Error"

Status values for Instance objects

-
Array of objects (StatusDetail)
Array of objects (Deprecation)
created
string <date-time>
updated
string <date-time>
query Parameters
includeRelation
string
Enum: "InfrastructureProvider" "Tenant" "Site" "InstanceType" "Allocation" "VPC" "OperatingSystem" "NetworkSecurityGroup"

Related entity to expand

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the Instance

-
name
string [ 2 .. 256 ] characters

Name for the Instance

-
description
string

Description for the Instance

-
tenantId
string <uuid>

ID of the Tenant the Instance belongs to

-
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider that owns the Site where the Instance is located

-
siteId
string <uuid>

ID of the Site where the Instance is located

-
instanceTypeId
string <uuid>
vpcId
string <uuid>
secondaryVpcIds
Array of strings <uuid> [ items <uuid > ]

IDs of VPCs attached to the Instance through non-primary interfaces

-
machineId
string or null
operatingSystemId
string <uuid>
networkSecurityGroupId
string or null
object (NetworkSecurityGroupPropagationDetails)

Propagation details for the attached Network Security Group

-
networkSecurityGroupInherited
boolean

Indicates if the Network Security Group is inherited from VPC

-
controllerInstanceId
string or null <uuid>
ipxeScript
string or null
alwaysBootWithCustomIpxe
boolean

Indicates whether the Instance should always execute custom iPXE script when rebooting

-
phoneHomeEnabled
boolean

Indicates whether the Phone Home service should be enabled or disabled for Instance

-
userData
string or null
object (Labels) <= 10 properties
isUpdatePending
boolean

Indicates whether an update is available for the Instance. Updates can be applied on reboot

-
serialConsoleUrl
string or null

Serial Console URL for the Instance. Format: ssh://@siteSerialConsoleHostname

-
Array of objects (Interface)
Array of objects (InfiniBandInterface)
Array of objects (NVLinkInterface)
Array of objects (DpuExtensionServiceDeployment)

DPU Extension Services deployed on DPUs of this Instance

-
sshKeyGroupIds
Array of strings <uuid> [ items <uuid > ]

IDs of SSH Key Groups associated with this Instance

-
Array of objects (SshKeyGroup)

IDs of SSH Key Groups associated with this Instance

-
tpmEkCertificate
string or null

base64 encoded TPM EK Certificate associated with this Instance

-
status
string (InstanceStatus)
Enum: "Pending" "Provisioning" "Configuring" "Ready" "Updating" "Rebooting" "Terminating" "Error"

Status values for Instance objects

-
Array of objects (StatusDetail)
Array of objects (Deprecation)
created
string <date-time>
updated
string <date-time>
Array of objects (DpuExtensionServiceDeploymentRequest)

Updated set of DPU Extension Services to deploy to the DPUs of this Instance

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the Instance

-
name
string [ 2 .. 256 ] characters

Name for the Instance

-
description
string

Description for the Instance

-
tenantId
string <uuid>

ID of the Tenant the Instance belongs to

-
infrastructureProviderId
string <uuid>

ID of the Infrastructure Provider that owns the Site where the Instance is located

-
siteId
string <uuid>

ID of the Site where the Instance is located

-
instanceTypeId
string <uuid>
vpcId
string <uuid>
secondaryVpcIds
Array of strings <uuid> [ items <uuid > ]

IDs of VPCs attached to the Instance through non-primary interfaces

-
machineId
string or null
operatingSystemId
string <uuid>
networkSecurityGroupId
string or null
object (NetworkSecurityGroupPropagationDetails)

Propagation details for the attached Network Security Group

-
networkSecurityGroupInherited
boolean

Indicates if the Network Security Group is inherited from VPC

-
controllerInstanceId
string or null <uuid>
ipxeScript
string or null
alwaysBootWithCustomIpxe
boolean

Indicates whether the Instance should always execute custom iPXE script when rebooting

-
phoneHomeEnabled
boolean

Indicates whether the Phone Home service should be enabled or disabled for Instance

-
userData
string or null
object (Labels) <= 10 properties
isUpdatePending
boolean

Indicates whether an update is available for the Instance. Updates can be applied on reboot

-
serialConsoleUrl
string or null

Serial Console URL for the Instance. Format: ssh://@siteSerialConsoleHostname

-
Array of objects (Interface)
Array of objects (InfiniBandInterface)
Array of objects (NVLinkInterface)
Array of objects (DpuExtensionServiceDeployment)

DPU Extension Services deployed on DPUs of this Instance

-
sshKeyGroupIds
Array of strings <uuid> [ items <uuid > ]

IDs of SSH Key Groups associated with this Instance

-
Array of objects (SshKeyGroup)

IDs of SSH Key Groups associated with this Instance

-
tpmEkCertificate
string or null

base64 encoded TPM EK Certificate associated with this Instance

-
status
string (InstanceStatus)
Enum: "Pending" "Provisioning" "Configuring" "Ready" "Updating" "Rebooting" "Terminating" "Error"

Status values for Instance objects

-
Array of objects (StatusDetail)
Array of objects (Deprecation)
created
string <date-time>
updated
string <date-time>
orderBy
string

Ordering for pagination query

-

Responses

Response Headers
X-Pagination
string

Pagination result in JSON format

-
Response Schema: application/json
Array
status
string
message
string
created
string <date-time>
updated
string <date-time>
orderBy
string
Enum: "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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>
subnetId
string or null <uuid>
vpcPrefixId
string or null <uuid>
isPhysical
boolean
device
string or null

Name of the device to use

-
deviceInstance
integer or null

Index of the device, used to identify which interface card to attache the Partition to

-
virtualFunctionId
integer or null

Must be specified if isPhysical is false

-
macAddress
string or null
ipAddresses
Array of strings

A list of IPv4 or IPv6 addresses

-
requestedIpAddress
string or null

Explicitly requested IP address for the interface. This is only used for VPC Prefix based interfaces and is not valid for Subnet based interfaces. The least-significant host bit must be 1.

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

Status values for Interface objects

-
created
string <date-time>
updated
string <date-time>
orderBy
string
Enum: "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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>

ID of the InfiniBand Partition associated with this interface

-
device
string

Name of the InfiniBand device associated with this interface

-
deviceInstance
integer
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>
orderBy
string
Enum: "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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>

ID of the NVLink Logical Partition associated with this interface

-
nvLinkDomainId
string <uuid>

ID of the NVLink Domain associated with this Interface

-
deviceInstance
integer

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

-
gpuGuid
string

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>
orderBy
string
Enum: "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC" "ID_ASC" "ID_DESC"

Ordering for pagination query

-

Responses

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

Unique ID of Machine

-
infrastructureProviderId
string <uuid>

ID of the Provider that owns the Machine

-
siteId
string <uuid>

ID of the Site the Machine belongs to

-
instanceTypeId
string or null <uuid>

ID of the Instance Type, if assigned

-
instanceId
string or null <uuid>

ID of the Instance if this Machine is assigned to one

-
tenantId
string or null <uuid>

ID of the Tenant that owns the Instance if the Machine is assigned to one

-
controllerMachineId
string

ID of the Machine at Site, now same as the primary ID

-
controllerMachineType
string

Denotes architecture (x86 vs ARM) of the Machine

-
hwSkuDeviceType
string or null

SKU derived device type of the machine, e.g. cpu, gpu, cache, storage, etc.

-
vendor
string

Name of the vendor of the Machine

-
productName
string

Product name of the Machine

-
serialNumber
string

Serial number of the Machine, only visible to Provider

-
Array of objects (MachineCapability)
Array of objects (MachineInterface)
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

-
object (MachineHealth)

Describes results of various Machine health probes and alerts

-
object (MachineMetadata)

Only available to Providers. Returned if includeMetadata query param is specified. Otherwise attribute is omitted from response.

-
object (Labels) <= 10 properties
status
string (MachineStatus)
Enum: "Initializing" "Ready" "Reset" "Maintenance" "InUse" "Error" "Decommissioned" "Unknown"

Status values for Machine objects

-
isUsableByTenant
boolean

Indicates whether the machine is usable by or currently in use by a tenant.

-
Array of objects (StatusDetail)
created
string <date-time>
updated
string <date-time>
includeMetadata
boolean

Include Machine metadata e.g. BMC, DPU, GPU and Interface data. Can only be requested by Provider.

-

Responses

Response Schema: application/json
id
string

Unique ID of Machine

-
infrastructureProviderId
string <uuid>

ID of the Provider that owns the Machine

-
siteId
string <uuid>

ID of the Site the Machine belongs to

-
instanceTypeId
string or null <uuid>

ID of the Instance Type, if assigned

-
instanceId
string or null <uuid>

ID of the Instance if this Machine is assigned to one

-
tenantId
string or null <uuid>

ID of the Tenant that owns the Instance if the Machine is assigned to one

-
controllerMachineId
string

ID of the Machine at Site, now same as the primary ID

-
controllerMachineType
string

Denotes architecture (x86 vs ARM) of the Machine

-
hwSkuDeviceType
string or null

SKU derived device type of the machine, e.g. cpu, gpu, cache, storage, etc.

-
vendor
string

Name of the vendor of the Machine

-
productName
string

Product name of the Machine

-
serialNumber
string

Serial number of the Machine, only visible to Provider

-
Array of objects (MachineCapability)
Array of objects (MachineInterface)
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

-
object (MachineHealth)

Describes results of various Machine health probes and alerts

-
object (MachineMetadata)

Only available to Providers. Returned if includeMetadata query param is specified. Otherwise attribute is omitted from response.

-
object (Labels) <= 10 properties
status
string (MachineStatus)
Enum: "Initializing" "Ready" "Reset" "Maintenance" "InUse" "Error" "Decommissioned" "Unknown"

Status values for Machine objects

-
isUsableByTenant
boolean

Indicates whether the machine is usable by or currently in use by a tenant.

-
Array of objects (StatusDetail)
created
string <date-time>
updated
string <date-time>
object (Labels) <= 10 properties

Machine labels will be overwritten, include existing labels to preserve them. Can be updated by Provider or Privileged Tenant.

-

Responses

Response Schema: application/json
id
string

Unique ID of Machine

-
infrastructureProviderId
string <uuid>

ID of the Provider that owns the Machine

-
siteId
string <uuid>

ID of the Site the Machine belongs to

-
instanceTypeId
string or null <uuid>

ID of the Instance Type, if assigned

-
instanceId
string or null <uuid>

ID of the Instance if this Machine is assigned to one

-
tenantId
string or null <uuid>

ID of the Tenant that owns the Instance if the Machine is assigned to one

-
controllerMachineId
string

ID of the Machine at Site, now same as the primary ID

-
controllerMachineType
string

Denotes architecture (x86 vs ARM) of the Machine

-
hwSkuDeviceType
string or null

SKU derived device type of the machine, e.g. cpu, gpu, cache, storage, etc.

-
vendor
string

Name of the vendor of the Machine

-
productName
string

Product name of the Machine

-
serialNumber
string

Serial number of the Machine, only visible to Provider

-
Array of objects (MachineCapability)
Array of objects (MachineInterface)
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

-
object (MachineHealth)

Describes results of various Machine health probes and alerts

-
object (MachineMetadata)

Only available to Providers. Returned if includeMetadata query param is specified. Otherwise attribute is omitted from response.

-
object (Labels) <= 10 properties
status
string (MachineStatus)
Enum: "Initializing" "Ready" "Reset" "Maintenance" "InUse" "Error" "Decommissioned" "Unknown"

Status values for Machine objects

-
isUsableByTenant
boolean

Indicates whether the machine is usable by or currently in use by a tenant.

-
Array of objects (StatusDetail)
created
string <date-time>
updated
string <date-time>

Delete a Machine from a Site

Org must have an Infrastructure Provider entity. Machine must belong to the Provider. User must have FORGE_PROVIDER_ADMIN authorization role. Machine must meet certain criteria to be eligible for deletion.

@@ -5432,11 +3500,9 @@

Typical API Call Flow for Tenant

" class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Page size for pagination query

orderBy
string

Ordering for pagination query

-

Responses

Response Headers
X-Pagination
string

Pagination result in JSON format

-
Response Schema: application/json
Array
status
string
message
string
created
string <date-time>
updated
string <date-time>
query Parameters
siteId
required
string <uuid>

ID of the Site

-

Responses

Response Schema: application/json
Array
name
string

GPU name from the MachineCapability record

-
gpus
integer

Total number of GPUs (summation of all Machine GPU capability counts)

-
machines
integer

Number of machines that have this GPU capability

-
query Parameters
siteId
required
string <uuid>

ID of the Site

-

Responses

Response Schema: application/json
object (MachineStatusBreakdown)

Machines that have been assigned to an instance type

-
object (MachineStatusBreakdown)

Machines that have not been assigned to any instance type

-
query Parameters
siteId
required
string <uuid>

ID of the Site

-

Responses

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

Unique identifier for the InstanceType

-
name
string

Name of the InstanceType

-
object (MachineStatusBreakdown)

Machine counts broken down by status

-
allocated
integer

Number of Machines of this Instance Type allocated to Tenants

-
maxAllocatable
integer

Number of Ready Machines of this Instance Type available for additional allocation to Tenants

-
object (MachineStatusBreakdown)

Machine counts broken down by status

-
Array of objects (InstanceTypeStats)
orderBy
string
Enum: "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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
type
string
Enum: "CPU" "Memory" "Storage" "Network" "GPU" "InfiniBand" "DPU"

Type of the Capability

-
name
string

Name of the Capability component

-
frequency
string or null

Frequency of the Capability component, if available

-
cores
integer or null

Number of Cores in the Capability component, if applicable

-
threads
integer or null

Number of Threads in the Capability component, if applicable

-
capacity
string or null

Capacity of the Capability component, if applicable

-
vendor
string or null

Vendor of the Capability component, if available

-
inactiveDevices
Array of integers

A list of inactive devices

-
count
integer or null

Count of the Capability component

-
deviceType
string or null

Device Type of the Capability component, if available

-
orderBy
string
Enum: "NAME_ASC" "NAME_DESC" "MANUFACTURER_ASC" "MANUFACTURER_DESC" "MODEL_ASC" "MODEL_DESC"

Ordering for pagination query

-

Responses

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

Pagination result in JSON format

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

Unique identifier of the Rack

-
name
string

Name of the Rack

-
manufacturer
string

Manufacturer of the Rack

-
model
string

Model of the Rack

-
serialNumber
string

Serial number of the Rack

-
description
string

Description of the Rack

-
object (RackLocation)

Physical location of a Rack

-
Array of objects (RackComponent)

Components within the Rack. Only returned when includeComponents is true.

-
includeComponents
boolean

Include rack components in response

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier of the Rack

-
name
string

Name of the Rack

-
manufacturer
string

Manufacturer of the Rack

-
model
string

Model of the Rack

-
serialNumber
string

Serial number of the Rack

-
description
string

Description of the Rack

-
object (RackLocation)

Physical location of a Rack

-
Array of objects (RackComponent)

Components within the Rack. Only returned when includeComponents is true.

-
manufacturer
string

Filter racks by manufacturer

-

Responses

Response Schema: application/json
Array of objects (ComponentDiff)

List of component differences found during validation

-
totalDiffs
integer

Total number of component differences found

-
missingCount
integer

Number of components expected but missing from the source system

-
unexpectedCount
integer

Number of components found in the source system but not expected

-
driftCount
integer

Number of components present in both but with field differences

-
matchCount
integer

Number of components that match between expected and actual

-
query Parameters
siteId
required
string <uuid>

ID of the Site

-

Responses

Response Schema: application/json
Array of objects (ComponentDiff)

List of component differences found during validation

-
totalDiffs
integer

Total number of component differences found

-
missingCount
integer

Number of components expected but missing from the source system

-
unexpectedCount
integer

Number of components found in the source system but not expected

-
driftCount
integer

Number of components present in both but with field differences

-
matchCount
integer

Number of components that match between expected and actual

-
state
required
string
Enum: "on" "off" "cycle" "forceoff" "forcecycle"

Target power state

-

Responses

Response Schema: application/json
taskIds
Array of strings <uuid> [ items <uuid > ]

List of task IDs created for the power control operation (one per rack)

-

Responses

Response Schema: application/json
taskIds
Array of strings <uuid> [ items <uuid > ]

List of task IDs created for the power control operation (one per rack)

-
version
string

Target firmware version.

-

Responses

Response Schema: application/json
taskIds
Array of strings <uuid> [ items <uuid > ]

List of task IDs created for the firmware update operation

-
version
string

Target firmware version.

-

Responses

Response Schema: application/json
taskIds
Array of strings <uuid> [ items <uuid > ]

List of task IDs created for the firmware update operation

-
description
string

Optional description for the bring up operation

-

Responses

Response Schema: application/json
taskIds
Array of strings <uuid> [ items <uuid > ]

List of task IDs created for the bring up operation (one per rack)

-
description
string

Optional description for the bring up operation

-

Responses

Response Schema: application/json
taskIds
Array of strings <uuid> [ items <uuid > ]

List of task IDs created for the bring up operation (one per rack)

-
query Parameters
siteId
required
string <uuid>

ID of the Site that owns the task (tasks are site-scoped).

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier of the task.

-
status
string
Enum: "Unknown" "Pending" "Waiting" "Running" "Succeeded" "Failed" "Terminated"

Current state of the task.

-
description
string

Human-readable description provided when the task was created.

-
message
string

Optional status or error message describing the current state or result.

-
started
string <date-time>

Timestamp when the task started execution.

-
finished
string <date-time>

Timestamp when the task finished (succeeded, failed or terminated).

-
created
string <date-time>

Timestamp when the task was created.

-
updated
string <date-time>

Timestamp when the task was last updated.

-
orderBy
string
Enum: "NAME_ASC" "NAME_DESC" "MANUFACTURER_ASC" "MANUFACTURER_DESC" "MODEL_ASC" "MODEL_DESC" "TYPE_ASC" "TYPE_DESC"

Ordering for pagination query

-

Responses

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

Pagination result in JSON format

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

Unique identifier of the Tray

-
componentId
string

ID of the component

-
type
string
Enum: "compute" "switch" "powershelf"

Type of the tray

-
name
string

Name of the tray

-
manufacturer
string

Manufacturer of the tray

-
model
string

Model of the tray

-
serialNumber
string

Serial number of the tray

-
description
string

Description of the tray

-
firmwareVersion
string

Firmware version of the tray

-
powerState
string

Current power state of the tray

-
object (TrayPosition)

Position of a tray within a rack

-
Array of objects (BMCInfo)

BMC (Baseboard Management Controller) entries for the tray

-
rackId
string <uuid>

ID of the rack this tray belongs to

-
query Parameters
siteId
required
string <uuid>

ID of the Site

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier of the Tray

-
componentId
string

ID of the component

-
type
string
Enum: "compute" "switch" "powershelf"

Type of the tray

-
name
string

Name of the tray

-
manufacturer
string

Manufacturer of the tray

-
model
string

Model of the tray

-
serialNumber
string

Serial number of the tray

-
description
string

Description of the tray

-
firmwareVersion
string

Firmware version of the tray

-
powerState
string

Current power state of the tray

-
object (TrayPosition)

Position of a tray within a rack

-
Array of objects (BMCInfo)

BMC (Baseboard Management Controller) entries for the tray

-
rackId
string <uuid>

ID of the rack this tray belongs to

-
componentId
string

Filter by external component ID (requires type; mutually exclusive with rackId/rackName; use repeated params for multiple values)

-

Responses

Response Schema: application/json
Array of objects (ComponentDiff)

List of component differences found during validation

-
totalDiffs
integer

Total number of component differences found

-
missingCount
integer

Number of components expected but missing from the source system

-
unexpectedCount
integer

Number of components found in the source system but not expected

-
driftCount
integer

Number of components present in both but with field differences

-
matchCount
integer

Number of components that match between expected and actual

-
query Parameters
siteId
required
string <uuid>

ID of the Site

-

Responses

Response Schema: application/json
Array of objects (ComponentDiff)

List of component differences found during validation

-
totalDiffs
integer

Total number of component differences found

-
missingCount
integer

Number of components expected but missing from the source system

-
unexpectedCount
integer

Number of components found in the source system but not expected

-
driftCount
integer

Number of components present in both but with field differences

-
matchCount
integer

Number of components that match between expected and actual

-
state
required
string
Enum: "on" "off" "cycle" "forceoff" "forcecycle"

Target power state

-

Responses

Response Schema: application/json
taskIds
Array of strings <uuid> [ items <uuid > ]

List of task IDs created for the power control operation (one per rack)

-

Responses

Response Schema: application/json
taskIds
Array of strings <uuid> [ items <uuid > ]

List of task IDs created for the power control operation (one per rack)

-
version
string

Target firmware version.

-

Responses

Response Schema: application/json
taskIds
Array of strings <uuid> [ items <uuid > ]

List of task IDs created for the firmware update operation

-
version
string

Target firmware version.

-

Responses

Response Schema: application/json
taskIds
Array of strings <uuid> [ items <uuid > ]

List of task IDs created for the firmware update operation

-
includeAttachmentStats
boolean

Include counts for the number objects that have attached the Network Security Group

-

Responses

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
name
string [ 2 .. 256 ] characters
description
string
siteId
string <uuid>
tenantId
string <uuid>
status
string (NetworkSecurityGroupStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status values for Network Security Group objects

-
Array of objects (StatusDetail)
statefulEgress
boolean
Array of objects (NetworkSecurityGroupRule)
object (Labels) <= 10 properties
created
string <date-time>
updated
string <date-time>
Request Body schema: application/json
name
required
string [ 2 .. 256 ] characters
description
string
siteId
required
string <uuid>
statefulEgress
boolean

Egress rules with protocol and destination ports defined but without source ports defined should automatically be made stateful.

-
Array of objects (NetworkSecurityGroupRule)
object (Labels) <= 10 properties

Responses

Array of objects (NetworkSecurityGroupRule)
object (Labels) <= 10 properties

Responses

Response Schema: application/json
id
string
name
string [ 2 .. 256 ] characters
description
string
siteId
string <uuid>
tenantId
string <uuid>
status
string (NetworkSecurityGroupStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status values for Network Security Group objects

-
Array of objects (StatusDetail)
statefulEgress
boolean
Array of objects (NetworkSecurityGroupRule)
object (Labels) <= 10 properties
created
string <date-time>
updated
string <date-time>
query Parameters
includeRelation
string
Enum: "Tenant" "Site"

Related entity to expand

-

Responses

Response Schema: application/json
id
string
name
string [ 2 .. 256 ] characters
description
string
siteId
string <uuid>
tenantId
string <uuid>
status
string (NetworkSecurityGroupStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status values for Network Security Group objects

-
Array of objects (StatusDetail)
statefulEgress
boolean
Array of objects (NetworkSecurityGroupRule)
object (Labels) <= 10 properties
created
string <date-time>
updated
string <date-time>
Array of objects (NetworkSecurityGroupRule)

Update rules of the NetworkSecurityGroup. The rules will be entirely replaced by those sent in the request. Any rules not included in the request will be removed. To retain existing rules, first fetch them and include them.

-
object (Labels) <= 10 properties

Responses

object (Labels) <= 10 properties

Responses

Response Schema: application/json
id
string
name
string [ 2 .. 256 ] characters
description
string
siteId
string <uuid>
tenantId
string <uuid>
status
string (NetworkSecurityGroupStatus)
Enum: "Pending" "Provisioning" "Ready" "Deleting" "Error"

Status values for Network Security Group objects

-
Array of objects (StatusDetail)
statefulEgress
boolean
Array of objects (NetworkSecurityGroupRule)
object (Labels) <= 10 properties
created
string <date-time>
updated
string <date-time>
orderBy
string
Enum: "NAME_ASC" "NAME_DESC" "PREFIX_ASC" "PREFIX_DESC" "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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
siteId
string <uuid>
infrastructureProviderId
string <uuid>
tenantId
string or null <uuid>
routingType
string
Enum: "Public" "DatacenterOnly"
prefix
string

Either IPv4 or IPv6 address

-
prefixLength
integer

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

-
protocolVersion
string
Enum: "IPv4" "IPv6"
object (IpBlockUsageStats)

Usa statistics for an IP Block

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

Status values for IP Block objects

-
Array of objects (StatusDetail)
Array of objects (Deprecation)
created
string <date-time>
updated
string <date-time>
prefixLength
required
integer

Min: 1, Max: 32 for IPv4, 128 for IPv6

-
protocolVersion
required
string
Enum: "IPv4" "IPv6"

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string
siteId
string <uuid>
infrastructureProviderId
string <uuid>
tenantId
string or null <uuid>
routingType
string
Enum: "Public" "DatacenterOnly"
prefix
string

Either IPv4 or IPv6 address

-
prefixLength
integer

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

-
protocolVersion
string
Enum: "IPv4" "IPv6"
object (IpBlockUsageStats)

Usa statistics for an IP Block

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

Status values for IP Block objects

-
Array of objects (StatusDetail)
Array of objects (Deprecation)
created
string <date-time>
updated
string <date-time>
includeRelation
string
Enum: "InfrastructureProvider" "Tenant" "Site"

Related entity to expand

-

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string
siteId
string <uuid>
infrastructureProviderId
string <uuid>
tenantId
string or null <uuid>
routingType
string
Enum: "Public" "DatacenterOnly"
prefix
string

Either IPv4 or IPv6 address

-
prefixLength
integer

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

-
protocolVersion
string
Enum: "IPv4" "IPv6"
object (IpBlockUsageStats)

Usa statistics for an IP Block

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

Status values for IP Block objects

-
Array of objects (StatusDetail)
Array of objects (Deprecation)
created
string <date-time>
updated
string <date-time>
ipBlockId
required
string

ID of the IP Block

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

Responses

Response Schema: application/json
id
string <uuid>
name
string [ 2 .. 256 ] characters
description
string
siteId
string <uuid>
infrastructureProviderId
string <uuid>
tenantId
string or null <uuid>
routingType
string
Enum: "Public" "DatacenterOnly"
prefix
string

Either IPv4 or IPv6 address

-
prefixLength
integer

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

-
protocolVersion
string
Enum: "IPv4" "IPv6"
object (IpBlockUsageStats)

Usa statistics for an IP Block

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

Status values for IP Block objects

-
Array of objects (StatusDetail)
Array of objects (Deprecation)
created
string <date-time>
updated
string <date-time>

Retrieve All Derived IP Blocks

Typical API Call Flow for Tenant " class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Page size for pagination query

orderBy
string
Enum: "NAME_ASC" "NAME_DESC" "PREFIX_ASC" "PREFIX_DESC" "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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
siteId
string <uuid>
infrastructureProviderId
string <uuid>
tenantId
string or null <uuid>
routingType
string
Enum: "Public" "DatacenterOnly"
prefix
string

Either IPv4 or IPv6 address

-
prefixLength
integer

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

-
protocolVersion
string
Enum: "IPv4" "IPv6"
object (IpBlockUsageStats)

Usa statistics for an IP Block

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

Status values for IP Block objects

-
Array of objects (StatusDetail)
Array of objects (Deprecation)
created
string <date-time>
updated
string <date-time>
orderBy
string
Enum: "NAME_ASC" "NAME_DESC" "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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>

Unique identifier for the DPU Extension Service

-
name
string

Name for the DPU Extension Service. Must be unique for a given Tenant

-
description
string or null

Optional description for the DPU Extension Service

-
serviceType
string
Value: "KubernetesPod"

Type of the DPU Extension Service

-
siteId
string <uuid>

ID for the Site the DPU Extension Service belongs to

-
tenantId
string <uuid>

ID for the Tenant the DPU Extension Service belongs to

-
version
string or null

Latest version of the DPU Extension Service

-
object (DpuExtensionServiceVersionInfo)

Details for the latest version of the DPU Extension Service

-
activeVersions
Array of strings

Latest and past versions of this DPU Extension Service that have not been deleted and are available for deployment

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

Status of the DPU Extension Service

-
Array of objects (StatusDetail)

History of the DPU Extension Service statuses

-
created
string <date-time>

Date/time when the DPU Extension Service was created

-
updated
string <date-time>

Date/time when the DPU Extension Service was last updated

-
object (DpuExtensionServiceObservability)

Observability configuration for the DPU Extension Service version

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the DPU Extension Service

-
name
string

Name for the DPU Extension Service. Must be unique for a given Tenant

-
description
string or null

Optional description for the DPU Extension Service

-
serviceType
string
Value: "KubernetesPod"

Type of the DPU Extension Service

-
siteId
string <uuid>

ID for the Site the DPU Extension Service belongs to

-
tenantId
string <uuid>

ID for the Tenant the DPU Extension Service belongs to

-
version
string or null

Latest version of the DPU Extension Service

-
object (DpuExtensionServiceVersionInfo)

Details for the latest version of the DPU Extension Service

-
activeVersions
Array of strings

Latest and past versions of this DPU Extension Service that have not been deleted and are available for deployment

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

Status of the DPU Extension Service

-
Array of objects (StatusDetail)

History of the DPU Extension Service statuses

-
created
string <date-time>

Date/time when the DPU Extension Service was created

-
updated
string <date-time>

Date/time when the DPU Extension Service was last updated

-
dpuExtensionServiceId
required
string

ID of the DPU Extension Service

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the DPU Extension Service

-
name
string

Name for the DPU Extension Service. Must be unique for a given Tenant

-
description
string or null

Optional description for the DPU Extension Service

-
serviceType
string
Value: "KubernetesPod"

Type of the DPU Extension Service

-
siteId
string <uuid>

ID for the Site the DPU Extension Service belongs to

-
tenantId
string <uuid>

ID for the Tenant the DPU Extension Service belongs to

-
version
string or null

Latest version of the DPU Extension Service

-
object (DpuExtensionServiceVersionInfo)

Details for the latest version of the DPU Extension Service

-
activeVersions
Array of strings

Latest and past versions of this DPU Extension Service that have not been deleted and are available for deployment

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

Status of the DPU Extension Service

-
Array of objects (StatusDetail)

History of the DPU Extension Service statuses

-
created
string <date-time>

Date/time when the DPU Extension Service was created

-
updated
string <date-time>

Date/time when the DPU Extension Service was last updated

-
object (DpuExtensionServiceObservability)

Observability configuration for the DPU Extension Service version

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the DPU Extension Service

-
name
string

Name for the DPU Extension Service. Must be unique for a given Tenant

-
description
string or null

Optional description for the DPU Extension Service

-
serviceType
string
Value: "KubernetesPod"

Type of the DPU Extension Service

-
siteId
string <uuid>

ID for the Site the DPU Extension Service belongs to

-
tenantId
string <uuid>

ID for the Tenant the DPU Extension Service belongs to

-
version
string or null

Latest version of the DPU Extension Service

-
object (DpuExtensionServiceVersionInfo)

Details for the latest version of the DPU Extension Service

-
activeVersions
Array of strings

Latest and past versions of this DPU Extension Service that have not been deleted and are available for deployment

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

Status of the DPU Extension Service

-
Array of objects (StatusDetail)

History of the DPU Extension Service statuses

-
created
string <date-time>

Date/time when the DPU Extension Service was created

-
updated
string <date-time>

Date/time when the DPU Extension Service was last updated

-
version
required
string

Version of the DPU Extension Service

-

Responses

Response Schema: application/json
version
string or null

Current version of the DPU Extension Service

-
data
string

Deployment spec for the DPU Extension Service

-
hasCredentials
boolean

Indicates whether this version was created with credentials

-
created
string <date-time>

Date/time when this version of the DPU Extension Service was created

-
object (DpuExtensionServiceObservability)

Observability configuration for this DPU Extension Service version

-
orderBy
string
Enum: "NAME_ASC" "NAME_DESC" "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

Ordering for pagination query

-

Responses

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

Unique identifier for the SSH Key Group

-
name
string

Name of the SSH Key Group

-
description
string or null

Description for the SSH Key Group, optional

-
org
string

Organization this SSH Key Group belongs to

-
tenantId
string <uuid>

ID of the Tenane the SSH Key Group belongs to

-
version
string

Version of the SSH Key Group

-
Array of objects (SshKey)

SSH Keys associated with this SSH Key Group

-
Array of objects (SshKeyGroupSiteAssociation)

Sites the SSH Key Group is synced to

-
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

-
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

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the SSH Key Group

-
name
string

Name of the SSH Key Group

-
description
string or null

Description for the SSH Key Group, optional

-
org
string

Organization this SSH Key Group belongs to

-
tenantId
string <uuid>

ID of the Tenane the SSH Key Group belongs to

-
version
string

Version of the SSH Key Group

-
Array of objects (SshKey)

SSH Keys associated with this SSH Key Group

-
Array of objects (SshKeyGroupSiteAssociation)

Sites the SSH Key Group is synced to

-
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

-
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

-
version
required
string

Version of the SSH Key Group being modified must be provided

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the SSH Key Group

-
name
string

Name of the SSH Key Group

-
description
string or null

Description for the SSH Key Group, optional

-
org
string

Organization this SSH Key Group belongs to

-
tenantId
string <uuid>

ID of the Tenane the SSH Key Group belongs to

-
version
string

Version of the SSH Key Group

-
Array of objects (SshKey)

SSH Keys associated with this SSH Key Group

-
Array of objects (SshKeyGroupSiteAssociation)

Sites the SSH Key Group is synced to

-
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

-
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

-
orderBy
string
Enum: "NAME_ASC" "NAME_DESC" "STATUS_ASC" "STATUS_DESC" "CREATED_ASC" "CREATED_DESC" "UPDATED_ASC" "UPDATED_DESC"

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

SHA256 fingerprint of the public key

-
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

-
sshKeyGroupId
string or null <uuid>

ID of the SSH Key Group this key should be attached to

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the key

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

SHA256 fingerprint of the public key

-
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

-
sshKeyId
required
string

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

SHA256 fingerprint of the public key

-
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

-
sshKeyId
required
string

ID of the SSH Key

-
Request Body schema: application/json
name
string

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the key

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

SHA256 fingerprint of the public key

-
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

-
Authorizations:
JWTBearerToken
path Parameters
org
required
string

Name of the Org

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier for the given user.

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

The date that the user was created.

-
updated
string <date-time>

Audit

Audit is a record of actions taken by users on the API.

@@ -7182,39 +4730,9 @@

Typical API Call Flow for Tenant

" class="sc-iKGpAq sc-cCYyou dXXcln cFvDiF">

Page size for pagination query

orderBy
string
Enum: "TIMESTAMP_ASC" "TIMESTAMP_DESC"

Ordering for pagination query

-

Responses

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

Unique identifier

-
endpoint
string

API endpoint

-
queryParams
string

Query parameters

-
method
string

HTTP method

-
body
string

HTTP body in JSON format

-
statusCode
integer

HTTP response status code

-
statusMessage
string

HTTP response status message

-
clientIP
string

Client IP address

-
userID
string or null <uuid>

User ID that executed the API call

-
object (User)

User that executed the API call

-
orgName
string

Organization name

-
extraData
object

Extra data in JSON format

-
timestamp
string <date-time>

API execution time

-
durationMs
integer

API execution duration in milliseconds

-
apiVersion
string

API version

-
auditEntryId
required
string

ID of the Audit Log Entry

-

Responses

Response Schema: application/json
id
string <uuid>

Unique identifier

-
endpoint
string

API endpoint

-
queryParams
string

Query parameters

-
method
string

HTTP method

-
body
string

HTTP body in JSON format

-
statusCode
integer

HTTP response status code

-
statusMessage
string

HTTP response status message

-
clientIP
string

Client IP address

-
userID
string or null <uuid>

User ID that executed the API call

-
object (User)

User that executed the API call

-
orgName
string

Organization name

-
extraData
object

Extra data in JSON format

-
timestamp
string <date-time>

API execution time

-
durationMs
integer

API execution duration in milliseconds

-
apiVersion
string

API version

-

Deprecations

Typical API Call Flow for Tenant