Onboarding
- GET /bmc/onboarding/available-positions
Get available rack positions
Get available rack positions that can accommodate a device with specified U-height
- Query Parameters:
rack_id (string) – Rack ID
u_height (integer) – Device U-height
- Status Codes:
200 OK – List of available positions
400 Bad Request – Missing or invalid parameters
500 Internal Server Error – Internal server error
- Response JSON Object:
[].position (integer) – Starting U position
- GET /bmc/onboarding/device-roles
List device roles
Retrieve all device roles from NetBox
- Status Codes:
200 OK – List of device roles
500 Internal Server Error – Internal server error
- Response JSON Object:
[].id (integer)
[].name (string)
[].slug (string)
- GET /bmc/onboarding/device-types
List device types by manufacturer
Retrieve all device types for a specific manufacturer with “Other” option appended. Supports filtering by search/model parameter.
- Query Parameters:
manufacturer_id (integer) – Manufacturer ID
search (string) – Search by device type model (case-insensitive)
limit (integer) – Maximum number of results to return
- Status Codes:
200 OK – List of device types
400 Bad Request – Missing or invalid manufacturer_id
500 Internal Server Error – Internal server error
- Response JSON Object:
[].id (integer)
[].model (string)
[].slug (string)
[].u_height (integer)
- POST /bmc/onboarding/device-types
Create a new device type
Create a new device type in NetBox
- Request JSON Object:
manufacturer_id (integer) – (required)
model (string) – (required)
slug (string) – Auto-generated if empty
u_height (integer) – (required)
- Status Codes:
201 Created – Created device type
400 Bad Request – Invalid request payload
500 Internal Server Error – Internal server error
- Response JSON Object:
id (integer)
model (string)
slug (string)
u_height (integer)
- GET /bmc/onboarding/devices
List devices in site/location/rack
Retrieve all devices for a site with optional filtering, searching, and sorting. Site ID can be provided via site_id query parameter or defaults to NETBOX_SITE_NAME environment variable.
- Query Parameters:
site_id (string) – Site ID (optional if NETBOX_SITE_NAME is set)
location_id (string) – Location ID (optional)
rack_id (string) – Rack ID (optional)
name (string) – Filter by exact device name (NetBox-side)
status (string) – Filter by status: active, offline, planned, staged, failed, inventory, decommissioning
role (string) – Filter by role slug (NetBox-side)
search (string) – Case-insensitive substring search across name, serial, manufacturer
manufacturer (string) – Filter by manufacturer name (case-insensitive)
provision_status (string) – Filter by provision_status custom field
health_status (string) – Filter by health_status custom field
sort_by (string) – Sort field: name, status, manufacturer, role, device_type, serial, rack_name, location_name, position, created, last_updated, provision_status, health_status
sort_order (string) – Sort direction: asc (default), desc
page (integer) – Page number (default: 1)
page_size (integer) – Items per page (default: 50, max: 100)
- Status Codes:
200 OK – Paginated devices with count
400 Bad Request – Bad request
500 Internal Server Error – Internal server error
- Response JSON Object:
base_domain (string)
count (integer) – Total number of matching devices
devices[].asset_tag (string)
devices[].bios_version (string)
devices[].bmc_ip (string)
devices[].bmc_password (string)
devices[].bmc_type (string) – BMCType is the virtual media layout detected at registration time: “legacy” (X11) or “modern” (X12+). Used by the UI to conditionally restrict pages that are not supported on legacy nodes.
devices[].bmc_username (string)
devices[].bmc_version (string)
devices[].cpu_cores (string)
devices[].cpu_model (string)
devices[].cpu_threads (string)
devices[].created (string)
devices[].device_type (string)
devices[].face (string)
devices[].health_status (string)
devices[].id (string)
devices[].ip_addresses[].address (string) – e.g., “192.168.1.10/24”
devices[].ip_addresses[].description (string)
devices[].ip_addresses[].dns_name (string)
devices[].ip_addresses[].family (integer) – 4 for IPv4, 6 for IPv6
devices[].ip_addresses[].id (integer)
devices[].ip_addresses[].status (string) – active, reserved, deprecated, etc.
devices[].ip_addresses[].vlan_role (string) – bridge_role custom field of the assigned interface (e.g. management, storage, public, guest, oob)
devices[].is_pikvm_connected (boolean)
devices[].last_updated (string)
devices[].location_id (string)
devices[].location_name (string)
devices[].manufacturer (string)
devices[].name (string)
devices[].oob_ip (string)
devices[].position (number)
devices[].power_state (string)
devices[].provision_status (string) – Custom fields from hardware inventory
devices[].rack_id (string)
devices[].rack_name (string)
devices[].role (string)
devices[].serial (string)
devices[].site_id (string)
devices[].site_name (string)
devices[].status (string)
devices[].tenant_id (string)
devices[].tenant_name (string)
devices[].total_ram_gb (string)
page (integer) – Current page (1-indexed)
page_size (integer) – Items per page
total_pages (integer) – Total pages
- GET /bmc/onboarding/hardware-info
Get complete hardware information for a device
Returns comprehensive device information including: device metadata, device type, manufacturer, location details, rack position, BMC details, CPU specs (model, cores, threads, chip maker), memory details (total RAM, type, speed), network interfaces (with MAC addresses and IP addresses), and hardware inventory items (storage disks, PCIe devices, add-in cards). Accepts either device_id or bmc_ip as query parameter.
- Query Parameters:
device_id (integer) – NetBox Device ID (use either device_id or bmc_ip)
bmc_ip (string) – BMC IP address to lookup device (use either device_id or bmc_ip)
- Status Codes:
200 OK – Comprehensive device hardware information
400 Bad Request – Missing or invalid parameters
404 Not Found – Device not found in NetBox
500 Internal Server Error – Failed to retrieve hardware information
- GET /bmc/onboarding/interfaces
Get device network interfaces
Retrieves all network interfaces and their MAC addresses for a device
- Query Parameters:
device_id (integer) – Device ID
- Status Codes:
200 OK – Device interfaces with MAC addresses
400 Bad Request – Missing or invalid device_id
500 Internal Server Error – Internal server error
- GET /bmc/onboarding/inventory-items
Get device inventory items
Retrieves all hardware inventory items (disks, PCIe devices, etc.) for a device
- Query Parameters:
device_id (integer) – Device ID
- Status Codes:
200 OK – Device inventory items with details
400 Bad Request – Missing or invalid device_id
500 Internal Server Error – Internal server error
- GET /bmc/onboarding/locations
List locations in site
Retrieve all locations for a specific site. Site ID can be provided via site_id query parameter or defaults to NETBOX_SITE_NAME environment variable.
- Query Parameters:
site_id (string) – Site ID (optional if NETBOX_SITE_NAME is set)
- Status Codes:
200 OK – List of locations
400 Bad Request – Missing or invalid site_id
500 Internal Server Error – Internal server error
- Response JSON Object:
[].depth (integer) – 0 = top-level, 1 = one level deep, etc.
[].id (string)
[].name (string)
[].parent_id (string) – empty string means this is a top-level location
[].slug (string)
- POST /bmc/onboarding/locations
Create a new location
Create a new location in NetBox
- Request JSON Object:
name (string) – (required)
site_id (string) – Optional: falls back to NETBOX_SITE_NAME
slug (string) – Auto-generated if empty
- Status Codes:
201 Created – Created location
400 Bad Request – Invalid request payload
500 Internal Server Error – Internal server error
- Response JSON Object:
depth (integer) – 0 = top-level, 1 = one level deep, etc.
id (string)
name (string)
parent_id (string) – empty string means this is a top-level location
slug (string)
- GET /bmc/onboarding/manufacturers
List supported manufacturers
Returns supported manufacturers from NetBox.
- Status Codes:
200 OK – List of manufacturers
500 Internal Server Error – Internal server error
- Response JSON Object:
[].id (integer)
[].name (string)
[].slug (string)
- POST /bmc/onboarding/manufacturers
Create a new manufacturer
Create a new manufacturer in NetBox
- Request JSON Object:
name (string) – (required)
slug (string) – Auto-generated if empty
- Status Codes:
201 Created – Created manufacturer
400 Bad Request – Invalid request payload
500 Internal Server Error – Internal server error
- Response JSON Object:
id (integer)
name (string)
slug (string)
- GET /bmc/onboarding/nodes
List nodes by site and provision status with pagination
Get all nodes in a site filtered by provision_status (discovered, ready, provisioned, configured, all) with pagination support. Site ID can be provided via site_id query parameter or defaults to NETBOX_SITE_NAME environment variable.
- Query Parameters:
site_id (string) – Site ID (optional if NETBOX_SITE_NAME is set)
provision_status (string) – Provision status filter (discovered, ready, provisioned, configured, all)
page (integer) – Page number (1-indexed)
page_size (integer) – Number of items per page
- Status Codes:
200 OK – Nodes retrieved successfully
400 Bad Request – Invalid request parameters
500 Internal Server Error – Internal server error
- GET /bmc/onboarding/racks
List racks in location
Retrieve all racks for a specific location
- Query Parameters:
location_id (string) – Location ID
- Status Codes:
200 OK – List of racks
400 Bad Request – Missing or invalid location_id
500 Internal Server Error – Internal server error
- Response JSON Object:
[].id (string)
[].location_id (string) – actual location this rack belongs to
[].name (string)
[].u_height (integer)
- POST /bmc/onboarding/racks
Create a new rack
Create a new rack in NetBox. Site ID can be provided in request body or defaults to NETBOX_SITE_NAME environment variable.
- Request JSON Object:
location_id (string) – Optional: location within site
name (string) – (required)
site_id (string) – Optional: falls back to NETBOX_SITE_NAME
u_height (integer) – (required)
- Status Codes:
201 Created – Created rack
400 Bad Request – Invalid request payload or missing site_id
500 Internal Server Error – Internal server error
- Response JSON Object:
id (string)
location_id (string) – actual location this rack belongs to
name (string)
u_height (integer)
- POST /bmc/onboarding/register
Register device via onboarding wizard
Complete onboarding flow: collect inventory, create device, assign OOB IP, store credentials. Site ID can be provided in request body or defaults to NETBOX_SITE_NAME environment variable.
- Request JSON Object:
bmc_ip (string) – BMC Details (required)
bmc_password (string) – (required)
bmc_username (string) – (required)
bmc_vendor (string) – For inventory collection (required)
device_name (string) – Optional overrides
device_role_id (integer) – (required)
device_type_id (integer) – (required)
is_pikvm_connected (boolean)
location_id (string) – (required)
manufacturer_id (integer) – (required)
rack_id (string) – (required)
rack_position (integer) – Starting U position (required)
site_id (string) – Optional: falls back to NETBOX_SITE_NAME
tenant_id (string) – CloudStack domain UUID; scopes host to a tenant at onboarding time
- Status Codes:
201 Created – Device registered successfully
400 Bad Request – Invalid request payload or missing site_id
500 Internal Server Error – Internal server error
- GET /bmc/onboarding/site
Get site by ID or default site
Retrieve site details. Site ID can be provided as path parameter or defaults to NETBOX_SITE_NAME environment variable.
- Status Codes:
200 OK – Site details
400 Bad Request – Invalid site ID or NETBOX_SITE_NAME not set
404 Not Found – Site not found
500 Internal Server Error – Internal server error
- Response JSON Object:
id (string)
name (string)
slug (string)
- GET /bmc/onboarding/site/{id}
Get site by ID or default site
Retrieve site details. Site ID can be provided as path parameter or defaults to NETBOX_SITE_NAME environment variable.
- Parameters:
id (string) – Site ID (optional if NETBOX_SITE_NAME is set)
- Status Codes:
200 OK – Site details
400 Bad Request – Invalid site ID or NETBOX_SITE_NAME not set
404 Not Found – Site not found
500 Internal Server Error – Internal server error
- Response JSON Object:
id (string)
name (string)
slug (string)
- GET /bmc/onboarding/site/{id}/vlans
Get all VLANs for a site grouped by role
Retrieves all VLANs for a site and groups them by role (management, storage, public, guest, bmc)
- Parameters:
id (string) – Site ID
- Status Codes:
200 OK – VLANs grouped by role
400 Bad Request – Invalid site ID
500 Internal Server Error – Internal server error
- GET /bmc/onboarding/site/{id}/vlans/{role}
Get VLANs for a specific role at a site
Retrieves VLANs for a specific role (management, storage, public, guest, bmc) at a site
- Parameters:
id (string) – Site ID
role (string) – VLAN Role (management, storage, public, guest, bmc)
- Status Codes:
200 OK – VLANs for the specified role
400 Bad Request – Invalid site ID or role
500 Internal Server Error – Internal server error