Summary
REST API-based PDU with 8 outlets. Control via HTTP(S) POST/GET to /services/v2/. Bearer token auth with 5-minute timeout. Supports outlet on/off/cycle, group control, sequences, analog triggers, autoping, and scheduled events. Model iBoot-PDU8-N15 documented.
Transport
protocols:
- http
addressing:
base_url: http(s)://<ipaddress>/services/v2
auth:
type: bearer_token # inferred: token-based auth at /services/v2/auth/
token_timeout: 300 # 5 minutes in seconds; source states "5 minutes of inactivity"
Traits
- powerable # outlet on/off/cycle commands present
- routable # group and sequence control present
- queryable # retrieve status, analog data, configuration
- levelable # cycleTime parameter for outlet cycling
Actions
- id: authenticate
label: Authenticate
kind: action
params:
- name: username
type: string
- name: password
type: string
- id: get_status
label: Get Status
kind: action
params:
- name: var
type: string
description: "Type: outlets, groups, names, or analog"
- name: value
type: string
description: "Comma-separated list of outlet numbers, names, group names, or analog sources (LV1/LV2/LC1/LC2/T0/T1)"
- id: control_outlet
label: Control Outlet
kind: action
params:
- name: outlets
type: array
items:
type: string
description: "Outlet numbers or names"
- name: command
type: enum
values: [on, off, cycle]
- id: control_group
label: Control Group
kind: action
params:
- name: group
type: string
description: "Group name"
- name: command
type: enum
values: [on, off, cycle]
- id: control_sequence
label: Control Sequence
kind: action
params:
- name: sequence
type: string
description: "Sequence name"
- name: command
type: enum
values: [run, stop]
- id: reboot_device
label: Reboot Device
kind: action
params:
- name: reboot
type: string
const: "true"
- id: set_factory_defaults
label: Set Factory Defaults
kind: action
params:
- name: setDefaults
type: boolean
- id: configure_device
label: Configure Device
kind: action
params:
- name: name
type: string
description: "1-20 char device name"
- name: countryCode
type: string
- name: temperatureUnit
type: enum
values: [c, f]
- name: simplePassword
type: boolean
- id: configure_outlet
label: Configure Outlet
kind: action
params:
- name: index
type: integer
description: "Outlet index 1-n"
- name: name
type: string
description: "30 chars max"
- name: initialState
type: enum
values: [on, off, last]
- name: cycleTime
type: integer
description: "1-99 seconds"
- id: add_modify_remote
label: Add/Modify Remote
kind: action
params:
- name: name
type: string
- name: address
type: string
- name: username
type: string
- name: password
type: string
- name: delay
type: integer
description: "1-99 seconds"
- id: delete_remote
label: Delete Remote
kind: action
params:
- name: delRemote
type: string
- id: configure_network
label: Configure Network
kind: action
params:
- name: ipMode
type: enum
values: [static, dhcp]
- name: ipAddress
type: string
- name: subnet
type: string
- name: gateway
type: string
- name: dns
type: array
items:
type: string
- id: configure_web
label: Configure Web UI
kind: action
params:
- name: port
type: integer
description: "1-65535"
- name: sslEnabled
type: boolean
- name: sslPort
type: integer
description: "1-65535"
- id: configure_console
label: Configure Console
kind: action
params:
- name: serialEnabled
type: boolean
- name: serialBaud
type: enum
values: [9600, 19200, 38400, 57600, 115200]
- name: timeout
type: integer
description: "0-60 minutes"
- name: telnetEnabled
type: boolean
- name: telnetPort
type: integer
description: "1-65535"
- name: sshEnabled
type: boolean
- name: sshPort
type: integer
description: "1-65535"
- id: configure_time
label: Configure Time
kind: action
params:
- name: time
type: string
- name: date
type: string
- name: ntpEnabled
type: boolean
- name: ntpServers
type: array
items:
type: string
- name: timezone
type: string
- id: add_modify_webhook
label: Add/Modify Webhook
kind: action
params:
- name: name
type: string
description: "20 chars max"
- name: newName
type: string
- name: url
type: string
- name: token
type: string
description: "128 chars max"
- name: login
type: boolean
- name: logout
type: boolean
- name: upgrade
type: boolean
- name: reboot
type: boolean
- name: outletControl
type: boolean
- name: groupControl
type: boolean
- name: sequenceStart
type: boolean
- name: sequenceStop
type: boolean
- name: analogTrigger
type: boolean
- name: autopingTrigger
type: boolean
- name: scheduleTrigger
type: boolean
- id: delete_webhook
label: Delete Webhook
kind: action
params:
- name: delWebhook
type: string
- id: add_modify_analog_trigger
label: Add/Modify Analog Trigger
kind: action
params:
- name: name
type: string
description: "20 chars max"
- name: type
type: enum
values: [voltage, current, temperature]
- name: condition
type: enum
values: ["<", "<=", ">", ">="]
- name: triggerPoint
type: number
- name: hysteresis
type: number
- name: repeat
type: enum
values: [once, counter, forever]
- name: source
type: enum
values: [LV1, LV2, LC1, LC2, T0, T1]
- name: targetTriggerSequence
type: string
- name: targetClearSequence
type: string
- name: count
type: integer
description: "1-99999"
- name: qualifyTime
type: integer
description: "1-99 seconds"
- id: delete_analog_trigger
label: Delete Analog Trigger
kind: action
params:
- name: delAnalogTrigger
type: string
- id: add_modify_autoping
label: Add/Modify Autoping
kind: action
params:
- name: name
type: string
description: "20 chars max"
- name: address
type: string
- name: count
type: integer
description: "1-99"
- name: period
type: integer
description: "1-999 seconds"
- name: timeout
type: integer
description: "1-999 seconds"
- name: failTriggerSequenceId
type: string
- name: clearTriggerSequenceId
type: string
- name: restartDelay
type: integer
description: "0-999 seconds"
- name: autopingGroupName
type: string
- name: groupMember
type: enum
values: [yes, no]
- id: delete_autoping
label: Delete Autoping
kind: action
params:
- name: delAutoping
type: string
- id: add_modify_autoping_group
label: Add/Modify Autoping Group
kind: action
params:
- name: name
type: string
- name: mode
type: enum
values: [and, or]
- name: failTriggerSequence
type: string
- name: clearTriggerSequence
type: string
- name: cycleCount
type: integer
description: "0-999"
- id: delete_autoping_group
label: Delete Autoping Group
kind: action
params:
- name: delAutopingGroup
type: string
- id: configure_email
label: Configure Email
kind: action
params:
- name: enabled
type: boolean
- name: server
type: string
- name: port
type: integer
description: "1-65535; ports 8888-8899 and 9090 reserved"
- name: encryption
type: boolean
- name: username
type: string
- name: password
type: string
- name: address
type: string
- name: retries
type: integer
description: "0-10"
- id: get_users
label: Get Users
kind: query
params:
- name: var
type: string
const: users
description: "GET /services/v2/users/ - list all users"
- id: add_modify_user
label: Add/Modify User
kind: action
params:
- name: name
type: string
description: "20 chars max; if exists, modifies existing user"
- name: role
type: enum
values: [admin, user]
- name: email
type: string
description: "128 chars max"
- name: password
type: string
description: "20 chars max"
- name: snmpPassword
type: string
description: "20 chars max"
- name: pin
type: string
description: "5 chars max; 0 to disable"
- name: outletRights
type: array
items:
type: object
- name: groupRights
type: array
items:
type: string
- name: sequenceRights
type: array
items:
type: string
- id: delete_user
label: Delete User
kind: action
params:
- name: delUser
type: string
description: "Name of user to delete; case sensitive"
- id: configure_cloud
label: Configure Cloud Services
kind: action
params:
- name: address
type: string
description: "Cloud server address (default https://iboot.co)"
- name: username
type: string
- name: password
type: string
- name: location
type: string
- id: configure_fail2ban
label: Configure Fail2Ban
kind: action
params:
- name: banTime
type: integer
description: "1-86400 seconds"
- name: findTime
type: integer
description: "1-86400 seconds"
- name: maxRetry
type: integer
description: "1-99"
- name: addWhitelist
type: string
description: "Dotted decimal IP address to add to whitelist"
- id: delete_fail2ban_whitelist
label: Delete Fail2Ban Whitelist Entry
kind: action
params:
- name: delWhitelist
type: string
description: "Dotted decimal IP address to remove from whitelist"
- id: configure_snmp
label: Configure SNMP
kind: action
params:
- name: readCommunity
type: string
- name: writeCommunity
type: string
- name: managers
type: array
items:
type: object
description: "Array of up to 4 SNMP manager objects with id(1-4), name, address, readCommunity, writeCommunity"
- id: add_modify_rsyslog
label: Add/Modify Rsyslog Server
kind: action
params:
- name: name
type: string
description: "30 chars max; if exists, modifies existing server"
- name: address
type: string
description: "IP address or FQDN"
- name: protocol
type: enum
values: [tcp, udp]
- name: port
type: integer
description: "1-65535"
- id: upgrade_firmware
label: Upgrade Firmware
kind: action
params:
- name: image
type: string
description: "LATEST or a date code (e.g. 11102023)"
- name: timeout
type: integer
description: "300-1800 seconds"
Feedbacks
- id: auth_response
type: object
properties:
success: boolean
message: string
token: string
- id: status_response
type: object
properties:
success: boolean
message: string
outlets: object
groups: object
names: object
analog: object
rebootRequired: boolean
- id: control_response
type: object
properties:
success: boolean
message: string
rebootRequired: boolean
- id: outlet_state
type: enum
values: [on, off]
description: "State of individual outlet"
- id: group_state
type: enum
values: [on, off, mixed]
description: "State of outlet group"
- id: analog_reading
type: object
properties:
LV1: number # Line 1 Voltage
LC1: number # Line 1 Current
LV2: number # Line 2 Voltage (only if second line cord present)
LC2: number # Line 2 Current (only if second line cord present)
T0: number # Temperature sensor 0
T1: number # Temperature sensor 1 (external probe)
- id: temperature_reading
type: object
description: "T0 and T1 only if probes connected"
properties:
T0: number
T1: number
- id: reboot_required
type: boolean
description: "True when change requires reboot to take effect"
Variables
# Device configuration
- id: device_name
type: string
writeable: true
description: "1-20 characters"
- id: temperature_unit
type: enum
values: [c, f]
writeable: true
- id: country_code
type: string
writeable: true
- id: simple_password
type: boolean
writeable: true
# Network settings
- id: ip_mode
type: enum
values: [static, dhcp]
writeable: true
- id: ip_address
type: string
writeable: true
- id: subnet_mask
type: string
writeable: true
- id: gateway
type: string
writeable: true
- id: dns_servers
type: array
writeable: true
# Outlet configuration
- id: outlet_name
type: string
writeable: true
- id: outlet_initial_state
type: enum
values: [on, off, last]
writeable: true
- id: outlet_cycle_time
type: integer
range: [1, 99]
writeable: true
description: "Seconds"
# Console settings
- id: serial_enabled
type: boolean
writeable: true
- id: serial_baud
type: enum
values: [9600, 19200, 38400, 57600, 115200]
writeable: true
- id: telnet_enabled
type: boolean
writeable: true
- id: telnet_port
type: integer
writeable: true
- id: ssh_enabled
type: boolean
writeable: true
- id: ssh_port
type: integer
writeable: true
# Web settings
- id: web_port
type: integer
writeable: true
- id: ssl_enabled
type: boolean
writeable: true
- id: ssl_port
type: integer
writeable: true
Events
# Webhook-triggered events (device can send webhooks to external URL)
- login: boolean # user login event
- logout: boolean # user logout event
- upgrade: boolean # firmware upgrade event
- reboot: boolean # reboot event
- outletControl: boolean # outlet state change
- groupControl: boolean # group state change
- sequenceStart: boolean # sequence started
- sequenceStop: boolean # sequence stopped
- analogTrigger: boolean # analog threshold crossed
- autopingTrigger: boolean # autoping failure detected
- scheduleTrigger: boolean # scheduled event fired
# UNRESOLVED: no explicit event emission documentation; webhook triggers described but not the outbound event format
Macros
# Sequences - user-defined multi-step automation stored on device
# Controlled via /services/v2/control/ with command=run|stop
# UNRESOLVED: sequence definition format not documented in source
Safety
confirmation_required_for:
- reboot # confirmed from source: rebootRequired flag on configuration changes
- factory_defaults # source notes factory defaults reset network to DHCP
interlocks: []
# UNRESOLVED: no explicit safety interlock procedures in source
Notes
Token timeout is 5 minutes of inactivity per source. Token format: 64-bit randomly generated, returned as "####-####-####-####" hex string. Authentication required before any API call.
Ports 8888-8899 and 9090 reserved for internal use — do not use for email, web, or console configuration.
Serial console supports 9600/19200/38400/57600/115200 baud. Telnet and SSH also available as alternate console access methods.
Outlet cycle time: 1-99 seconds. Initial state on reboot: on, off, or last (restore previous state).
Provenance
source_domains:
- cdn.shopify.com
source_urls:
- https://cdn.shopify.com/s/files/1/0859/9181/7492/files/iboot-pdu_restful_api_V251007W.pdf
retrieved_at: 2026-04-30T04:34:14.497Z
last_checked_at: 2026-06-03T06:35:46.573Z
Verification Summary
verdict: verified
checked_at: 2026-06-03T06:35:46.573Z
matched_actions: 33
action_count: 33
confidence: medium
summary: "All 33 spec actions found in source (11 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "TCP port not stated in source, default HTTP(S) ports assumed implicit"
- "serial RS-232 control not documented in this source"
- "webhook payload format beyond trigger flags not specified"
- "no explicit event emission documentation; webhook triggers described but not the outbound event format"
- "sequence definition format not documented in source"
- "no explicit safety interlock procedures in source"
- "TCP port number not explicitly stated; only implicit through HTTP(S)"
- "RS-232 serial control protocol not in source"
- "firmware version range/compatibility not stated"
- "email attachment/content format not documented"
- "sequence definition schema not in source"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0