Skip to content

Capability reference

General

Power

v1.0
port1/systems/zero/capability-interfaces/power

Power turns a device on or off, reports its power state, and restarts devices that support rebooting.

Messages

Reboot
View source schema ↗

Restart the endpoint. Advertise this message only when the provider supports rebooting the device.

Sent to the device
Fields
(payload)PowerInterfaceRebootMessage

Restart the endpoint. Advertise this message only when the provider supports rebooting the device.

Turn Off
View source schema ↗

Turn the device off.

Sent to the device
Fields

No payload fields.

Turn On
View source schema ↗

Turn the device on.

Sent to the device
Fields

No payload fields.

Attributes

Power
View source schema ↗

Whether the device is on or off.

Fields
valuestringRequired

The power state of an endpoint

port1/systems/zero/capability-interfaces/power v1.0: attributes power: possible enum values for value
ValueMeaning
ONThe device is on.
OFFThe device is off.

Connectivity

v1.0
port1/systems/zero/capability-interfaces/connectivity

Connectivity tells you whether a connected device is reachable. Use its reported state to explain an unavailable device or decide when to retry an action.

Attributes

Network Throughput
View source schema ↗

The quality of the device's network connection and its throughput in bits per second.

Fields
qualitystring
bitsPerSecondinteger
Radio Diagnostics
View source schema ↗

Signal measurements from the device's radios, such as signal strength (RSSI) and signal-to-noise ratio.

Fields
valuesarray<RadioDiagnosticValue>Required
Reachability
View source schema ↗

Whether Port OS can currently reach the device (OK or UNREACHABLE).

Fields
valuestringRequired
port1/systems/zero/capability-interfaces/connectivity v1.0: attributes reachability: possible enum values for value
ValueMeaning
OKThe device is reachable.
UNREACHABLEThe device cannot currently be reached.

Battery

v1.0
port1/systems/zero/capability-interfaces/battery

Battery reports a connected device's charge level and battery health. Use it to show when a device needs charging or a replacement battery.

Attributes

Battery
View source schema ↗

The battery level of the device and a report of its condition.

Fields
levelnumberRequired

minimum: 0

maximum: 100

healthstring

Reported battery condition.

port1/systems/zero/capability-interfaces/battery v1.0: attributes battery: possible enum values for health
ValueMeaning
OKThe device is reachable.
LOW—
CRITICAL—

Percentage

v1.0
port1/systems/zero/capability-interfaces/percentage

Percentage controls set or adjust a percentage and report the current value. Use them for connected controls expressed as a proportional level.

Messages

Adjust Percentage
View source schema ↗

Raise or lower the percentage by an amount relative to its current value.

Sent to the device
Fields
percentageDeltanumberRequired
Set Percentage
View source schema ↗

Set the percentage to a specific value.

Sent to the device
Fields
percentagenumberRequired

Attributes

Percentage
View source schema ↗

The percentage the device is set to.

Fields
valuenumberRequired

Power Level

v1.0
port1/systems/zero/capability-interfaces/power-level

Power level sets or adjusts a device's output level and reports the current setting. Use it when a device supports more than a simple on/off control.

Messages

Adjust Power Level
View source schema ↗

Raise or lower the power level by an amount relative to its current value.

Sent to the device
Fields
powerLevelDeltanumberRequired
Set Power Level
View source schema ↗

Set the power level to a specific value.

Sent to the device
Fields
powerLevelnumberRequired

Attributes

Power Level
View source schema ↗

The power level the device is set to.

Fields
valuenumberRequired

Remote Control

v1.0
port1/systems/zero/capability-interfaces/remote-control

Remote control starts and ends control sessions and sends movement instructions. Use velocity, turning, and duration fields to request movement from a connected device.

Messages

End Session
View source schema ↗

End the remote control session.

Sent to the device
Fields

No payload fields.

Move
View source schema ↗

Drive the device at a forward speed and turning rate for a set duration. Each move carries a sequence number so moves apply in order.

Sent to the device
Fields
velocitynumberRequired

Forward/backward speed

omeganumberRequired

Angular velocity for turning

durationintegerRequired

Duration in milliseconds

seqNumintegerRequired

Sequence number for ordering move commands

Start Session
View source schema ↗

Start a remote control session so you can send move messages to the device.

Sent to the device
Fields

No payload fields.

Stop Session
View source schema ↗

Stop the device from moving during the remote control session.

Sent to the device
Fields

No payload fields.

Unary Move
View source schema ↗

Run an ordered list of movement instructions in a single session that Port OS manages for you.

Sent to the device
Fields
instructionsarray<MovementInstruction>Required

Ordered list of movement instructions to execute in sequence

Lighting

Brightness

v1.0
port1/systems/zero/capability-interfaces/brightness

Brightness sets how bright a connected device should be and reports its current level. Use it to dim a light for the evening or restore a brighter setting for work.

Messages

Adjust Brightness
View source schema ↗

Adjust brightness by a signed number of percentage points. The endpoint must advertise this message separately from set-brightness.

Sent to the device
Fields
brightnessDeltaintegerRequired

minimum: -100

maximum: 100

Set Brightness
View source schema ↗

Set the brightness of the device to a level.

Sent to the device
Fields
brightnessintegerRequired

The brightness level to set

minimum: 0

maximum: 100

Attributes

Brightness
View source schema ↗

The brightness level the device is set to.

Fields
valueintegerRequired

The brightness level of an endpoint

minimum: 0

maximum: 100

Color

v1.0
port1/systems/zero/capability-interfaces/color

Color sets and reports the color of a connected device. Use it to coordinate lighting for a scene or let an assistant choose a new color.

Messages

Set Color
View source schema ↗

Set the color of the device.

Sent to the device
Fields
colorHsbColorRequired

A color in HSB (Hue, Saturation, Brightness) color space

Attributes

Color
View source schema ↗

The color the device is showing.

Fields
colorHsbColorRequired

A color in HSB (Hue, Saturation, Brightness) color space

Color Temperature

v1.0
port1/systems/zero/capability-interfaces/color-temperature

Color temperature adjusts a light between warmer and cooler tones. Set a temperature directly or increase and decrease it, then read the reported value in kelvin.

Messages

Decrease Color Temperature
View source schema ↗

Lower the color temperature of the light by one step, for a warmer tone.

Sent to the device
Fields

No payload fields.

Increase Color Temperature
View source schema ↗

Raise the color temperature of the light by one step, for a cooler tone.

Sent to the device
Fields

No payload fields.

Set Color Temperature
View source schema ↗

Set the color temperature of the light, in degrees Kelvin.

Sent to the device
Fields
colorTemperatureInKelvinintegerRequired

The colorTemperatureInKelvin property represents the color temperature in degrees Kelvin of an endpoint, and is used by endpoints that support tunable white light. Valid values range from 1,000 to 10,000 absolute Kelvin. The color values roughly map to: - warm white: 2000 - soft white: 2500 - white: 4000 - daylight white: 5500 - cool white: 7000

Attributes

Color Temperature In Kelvin
View source schema ↗

The color temperature of the light, in degrees Kelvin.

Fields
valueintegerRequired

Scene

v1.0
port1/systems/zero/capability-interfaces/scene

Scenes activate or deactivate a predefined device scene. Use them to request a saved combination of settings from a connected integration.

Messages

Activate
View source schema ↗

Recall a scene on the group or endpoint that offers it. Names the scene to recall.

Sent to the device
Fields
sceneIdstringRequired

Identifier of the scene to activate, as listed in the available-scenes attribute

minLength: 1

Deactivate
View source schema ↗

Deactivate the scene that is currently active.

Sent to the device
Fields

No payload fields.

Attributes

Active Scene
View source schema ↗

The scene currently active on this group or endpoint. sceneId is omitted when no scene is active.

Fields
sceneIdstring

Identifier of the active scene, one of the available-scenes ids

minLength: 1

Available Scenes
View source schema ↗

The scenes that can be activated on this group or endpoint

Fields
scenesarray<SceneInfo>Required

Every scene the provider offers here, in provider order

Climate & thermostats

Thermostat

v1.0
port1/systems/zero/capability-interfaces/thermostat

Thermostats set a target temperature and select a heating or cooling mode. Read the reported setpoints and operating mode to show the current settings.

Messages

Adjust Target Temperature
View source schema ↗

Raise or lower the target temperature by an amount relative to its current value.

Sent to the device
Fields
targetSetpointDeltaTemperatureSetpointRequired

A temperature setpoint with value and scale

Set Target Temperature
View source schema ↗

Set the target temperature, or the lower and upper setpoints when the thermostat works to a range.

Sent to the device
Fields
targetSetpointTemperatureSetpoint

A temperature setpoint with value and scale

lowerSetpointTemperatureSetpoint

A temperature setpoint with value and scale

upperSetpointTemperatureSetpoint

A temperature setpoint with value and scale

Set Thermostat Mode
View source schema ↗

Set the thermostat's mode.

Sent to the device
Fields
modestringRequired
port1/systems/zero/capability-interfaces/thermostat v1.0: messages set-thermostat-mode: possible enum values for mode
ValueMeaning
HEATRun in heating mode.
COOLRun in cooling mode.
AUTOSelect the operating mode automatically.
ECO—
OFFThe device is off.

Attributes

Lower Setpoint
View source schema ↗

The lower temperature setpoint the thermostat holds when it works to a range, with its scale.

Fields
valuenumberRequired
scalestringRequired
port1/systems/zero/capability-interfaces/thermostat v1.0: attributes lower-setpoint: possible enum values for scale
ValueMeaning
CELSIUSTemperature in degrees Celsius.
FAHRENHEITTemperature in degrees Fahrenheit.
Target Setpoint
View source schema ↗

The temperature the thermostat is set to hold, with its scale.

Fields
valuenumberRequired
scalestringRequired
port1/systems/zero/capability-interfaces/thermostat v1.0: attributes target-setpoint: possible enum values for scale
ValueMeaning
CELSIUSTemperature in degrees Celsius.
FAHRENHEITTemperature in degrees Fahrenheit.
Thermostat Mode
View source schema ↗

The mode the thermostat is in: heat, cool, auto, eco or off.

Fields
valuestringRequired
port1/systems/zero/capability-interfaces/thermostat v1.0: attributes thermostat-mode: possible enum values for value
ValueMeaning
HEATRun in heating mode.
COOLRun in cooling mode.
AUTOSelect the operating mode automatically.
ECO—
OFFThe device is off.
Upper Setpoint
View source schema ↗

The upper temperature setpoint the thermostat holds when it works to a range, with its scale.

Fields
valuenumberRequired
scalestringRequired
port1/systems/zero/capability-interfaces/thermostat v1.0: attributes upper-setpoint: possible enum values for scale
ValueMeaning
CELSIUSTemperature in degrees Celsius.
FAHRENHEITTemperature in degrees Fahrenheit.

Configuration

View source schema ↗
Fields
supportedModesarray<string>
supportedFanModesarray<string>

Fan Control

v1.0
port1/systems/zero/capability-interfaces/fan-control

Fan control selects a fan mode and speed. Read the reported settings to check how a fan is running before changing them.

Messages

Set Mode
View source schema ↗

Set the fan's mode.

Sent to the device
Fields
modestringRequired

Fan mode

port1/systems/zero/capability-interfaces/fan-control v1.0: messages set-mode: possible enum values for mode
ValueMeaning
OFFThe device is off.
LOW—
MEDIUM—
HIGH—
ONThe device is on.
AUTOSelect the operating mode automatically.
SMART—
Set Speed
View source schema ↗

Set the fan speed, as a percentage from 0 to 100.

Sent to the device
Fields
speedintegerRequired

Fan speed percentage (0-100)

minimum: 0

maximum: 100

Attributes

Fan Mode
View source schema ↗

The mode the fan is running in.

Fields
valuestringRequired

Fan mode

port1/systems/zero/capability-interfaces/fan-control v1.0: attributes fan-mode: possible enum values for value
ValueMeaning
OFFThe device is off.
LOW—
MEDIUM—
HIGH—
ONThe device is on.
AUTOSelect the operating mode automatically.
SMART—
Fan Speed
View source schema ↗

The fan speed, as a percentage from 0 to 100.

Fields
valueintegerRequired

Fan speed percentage (0-100)

minimum: 0

maximum: 100

Configuration

View source schema ↗
Fields
supportedFanModesarray<string>

Supported fan modes

supportedFanSpeedsarray<integer>

Supported fan speeds (0-100)

Water Heater

v1.0
port1/systems/zero/capability-interfaces/water-heater

Water heaters set a temperature and operating mode. Read the temperature setpoint and mode to show the settings supplied by a connected heater.

Messages

Set Mode
View source schema ↗

Set the water heater's mode.

Sent to the device
Fields
modestringRequired
port1/systems/zero/capability-interfaces/water-heater v1.0: messages set-mode: possible enum values for mode
ValueMeaning
OFFThe device is off.
AUTOSelect the operating mode automatically.
HEATRun in heating mode.
ECO—
BOOST—
Set Temperature
View source schema ↗

Set the temperature the water heater should reach, in degrees Celsius.

Sent to the device
Fields
temperaturenumberRequired

Temperature setpoint in degrees Celsius

minimum: 0

maximum: 100

Attributes

Mode
View source schema ↗

The mode the water heater is in.

Fields
valuestringRequired
port1/systems/zero/capability-interfaces/water-heater v1.0: attributes mode: possible enum values for value
ValueMeaning
OFFThe device is off.
AUTOSelect the operating mode automatically.
HEATRun in heating mode.
ECO—
BOOST—
Temperature Setpoint
View source schema ↗

The temperature the water heater is set to reach, in degrees Celsius.

Fields
valuenumberRequired

Temperature setpoint in degrees Celsius

minimum: 0

maximum: 100

Configuration

View source schema ↗
Fields
supportedModesarray<string>

Supported water heater modes

Window Covering

v1.0
port1/systems/zero/capability-interfaces/window-covering

Window coverings move to a requested lift or tilt percentage. Read their reported position to keep a shade or blind control in step with the device.

Messages

Go To Lift Percentage
View source schema ↗

Move the covering to a lift position, in hundredths of a percent where 10000 is 100%.

Sent to the device
Fields
liftPercent100thsValueintegerRequired

Lift position in percent (0-10000, where 10000 = 100%)

minimum: 0

maximum: 10000

Go To Tilt Percentage
View source schema ↗

Move the covering to a tilt position, in hundredths of a percent where 10000 is 100%.

Sent to the device
Fields
tiltPercent100thsValueintegerRequired

Tilt position in percent (0-10000, where 10000 = 100%)

minimum: 0

maximum: 10000

Attributes

Position
View source schema ↗

How far the covering is lifted and tilted, each as a percentage from 0 to 100.

Fields
liftPositionintegerRequired

Lift position percentage (0-100)

minimum: 0

maximum: 100

tiltPositioninteger

Tilt position percentage (0-100)

minimum: 0

maximum: 100

Configuration

View source schema ↗
Fields
supportsLiftboolean

Whether the window covering supports lift control

Default: true

supportsTiltboolean

Whether the window covering supports tilt control

Default: false

Cameras

Camera

v1.0
port1/systems/zero/capability-interfaces/camera

Cameras provide streaming, event images, and camera controls. Start a stream, adjust pan and tilt when supported, or configure motion detection for the view you need.

Messages

Event Image Response
View source schema ↗

Event image URL and provider token returned for a get-event-image request.

Sent by the device
Fields
urlstringRequired

format: "uri"

tokenstringRequired
Get Event Image
View source schema ↗

Retrieve the image captured for a camera event, identified by its event ID and timestamp.

Sent to the device
Fields
eventIdstringRequired

The ID of the camera event to retrieve the image for

eventTimestampstring

The timestamp of the camera event (ISO 8601 format)

format: "date-time"

Ptz Control
View source schema ↗

Pan, tilt or zoom the camera. Pan and tilt range from -100 to 100, and zoom from 0 to 100.

Sent to the device
Fields
pannumber

Pan value (-100 to 100)

minimum: -100

maximum: 100

tiltnumber

Tilt value (-100 to 100)

minimum: -100

maximum: 100

zoomnumber

Zoom value (0 to 100)

minimum: 0

maximum: 100

Set Motion Detection
View source schema ↗

Turn motion detection on or off for the camera.

Sent to the device
Fields
enabledbooleanRequired

Whether to enable motion detection

Start Streaming
View source schema ↗

Start a live video stream from the camera using the streaming protocol you choose.

Sent to the device
Fields
streamingProtocolstringRequired

Streaming protocol to use

Allowed values: RTSP, HLS, DASH, WEBRTC, OTHER.

streamingUrlstring

URL for streaming (if applicable)

format: "uri"

Stop Streaming
View source schema ↗

Stop the camera's live video stream.

Sent to the device
Fields

No payload fields.

Attributes

Motion Detection Enabled
View source schema ↗

Whether motion detection is turned on for the camera.

Fields
valuebooleanRequired

Whether motion detection is enabled

Configuration

View source schema ↗
Fields
supportedStreamingProtocolsarray<string>

Supported streaming protocols

supportsPTZboolean

Whether the camera supports pan-tilt-zoom controls

Default: false

supportsMotionDetectionboolean

Whether the camera supports motion detection

Default: false

Doorbell

v1.0
port1/systems/zero/capability-interfaces/doorbell

Doorbells emit a chime event. Use that event to start a notification or another flow when someone rings the bell.

Messages

Chime
View source schema ↗

A distinct doorbell press. A chime does not imply a door was opened.

Sent by the device
Fields
valuestringRequired

Allowed values: PRESSED.

Rtc Session

v1.0
port1/systems/zero/capability-interfaces/rtc-session

RTC sessions initiate a connection using an offer and return an answer for the session. Follow disconnection events and close the session when the connection is no longer needed.

Messages

Answer Generated For Session
View source schema ↗

The answer generated for a real-time communication session, which completes the connection.

Sent by the device
Fields
answerRtcAnswerRequired

An RTC session answer

Disconnect Session
View source schema ↗

Disconnect a real-time communication session by its session ID.

Sent to the device
Fields
sessionIdstringRequired
Initiate Session With Offer
View source schema ↗

The initiate session with offer message is used to initiate an RTC session between the client and an endpoint. The offer is expected to be a standard RTC SDP (standard description protocol) offer. The offer must contain all ICE candidates for the session to be established.

Sent to the device
Fields
sessionIdstringRequired
sessionDomainstringRequired

The logical RTC session domain requested by the caller.

offerRtcOfferRequired

An RTC session offer

authorizationarray<RtcSessionRoborockPinAuthorization>

Message-specific session authorization entries required by the target endpoint.

sessionDurationinteger

The duration of the session in seconds. If not provided, the default is 60 seconds. If provided, the session will be terminated after the duration has elapsed. To reestablish the session, the client must initiate a new session with a new offer.

minimum: 1

maximum: 3600

Default: 60

autoAnswerboolean
Session Disconnected
View source schema ↗

Reports that a real-time communication session has disconnected.

Sent by the device
Fields

No payload fields.

Configuration

View source schema ↗
Fields
iceServersarray<RtcIceServer>

Optional public STUN configuration passed to the browser's standard RTCIceServer interface. Omitted or empty means no ICE servers. Gathering starts only when a caller deliberately initiates a session. TURN and credentials are excluded.

supportedStreamsarray<RtcSessionSupportedStream>

Discoverable media streams in SDP offer order. Directions describe the endpoint; the browser reverses SENDONLY and RECVONLY. Omitted means a video SENDONLY stream.

dataChannelsarray<RtcDataChannel>

Data channels the browser creates after media transceivers, using the standard RTCDataChannelInit options. Omitted means no data channels.

iceModestring

Whether the endpoint expects a full offer up front or supports trickle ICE.

Allowed values: FULL_OFFER, TRICKLE.

messageAuthorizationRequirementsarray<RtcSessionMessageAuthorizationRequirement>

Per-message authorization requirements for RTC session messages.

Rtsp Session

v1.0
port1/systems/zero/capability-interfaces/rtsp-session

RTSP sessions open a camera connection and return its RTSP URI and optional SDP description. Close the session when the connection is no longer needed.

Messages

Start Session
View source schema ↗

Start session.

Sent to the device
Fields
sessionIdstringRequired

Caller supplied session identifier.

minLength: 1

Start Session Response
View source schema ↗

Start session response.

Sent by the device
Fields
sessionIdstringRequired

Session identifier.

minLength: 1

uristringRequired

RTSP stream URI.

format: "uri"

pattern: "^rtsps?://"

sdpstring

Optional SDP describing the stream.

minLength: 1

Stop Session
View source schema ↗

Stop session.

Sent to the device
Fields
sessionIdstringRequired

Session identifier to close.

minLength: 1

Stop Session Response
View source schema ↗

Stop session response.

Sent by the device
Fields
sessionIdstringRequired

Closed session identifier.

minLength: 1

Snapshot

v1.0
port1/systems/zero/capability-interfaces/snapshot

Snapshots request a captured view and return a snapshot response. Use them when an integration needs a single capture rather than a continuous live view.

Messages

Get Snapshot
View source schema ↗

Request a still image from the camera. responseFormat chooses how the image comes back: URL (default) is a short-lived Port OS link, BASE64 is the image bytes inline.

Sent to the device
Fields
responseFormatstring

How a request wants binary media (audio or image) returned. URL returns a short-lived signed URL hosted by Port OS (at most 10 minutes), never the vendor's own link. BASE64 returns the bytes inline as base64 and fails with a typed error above 10 MiB, in which case use URL.

Default: URL

Allowed values: URL, BASE64.

Get Snapshot Response
View source schema ↗

A camera still image, as a short-lived URL or inline base64 according to the request's responseFormat, with the time it was captured

Sent by the device
Fields
imageMediaContentRequired

One binary media result (audio or image). Exactly one of `data` (base64, inline) or `url` (a short-lived Port OS URL with its `expiresAt`) is present; the host rejects a result that carries both or neither. A plugin may return the vendor's fetchable `url` without `expiresAt`; the host always fetches it, republishes or inlines the bytes as the caller's `responseFormat` asks, and fills `byteLength`, so callers never see a vendor URL.

timeOfSamplestringRequired

format: "date-time"

Media

Application Launcher

v1.0
port1/systems/zero/capability-interfaces/application-launcher

Application launchers start and stop applications on a connected device. Check the available applications and the current selection before choosing what to launch.

Messages

Launch Application
View source schema ↗

Open an application on the device. Optionally pass data for the application to start with.

Sent to the device
Fields
catalogVendorIdintegerRequired

Catalog vendor ID

minimum: 0

applicationIdstringRequired

Application ID

datastring

Optional data to pass to the application

Stop Application
View source schema ↗

Close an application that is running on the device.

Sent to the device
Fields
catalogVendorIdintegerRequired

Catalog vendor ID

minimum: 0

applicationIdstringRequired

Application ID

Attributes

Application List
View source schema ↗

The applications the device can launch, as reported by the device.

Fields
applicationsarray<ApplicationInfo>Required
Current Application
View source schema ↗

The application that is open on the device now, identified by its catalog vendor and application ID.

Fields
catalogVendorIdinteger

Catalog vendor ID

applicationIdstring

Application ID

Configuration

View source schema ↗
Fields
catalogVendorIdinteger

Catalog vendor ID

minimum: 0

Channel

v1.0
port1/systems/zero/capability-interfaces/channel

Channel controls select a channel or skip between channels on a connected device. Read the current channel to keep the interface in step with what is playing.

Messages

Change Channel
View source schema ↗

Tune the device to a channel.

Sent to the device
Fields
channelChannelInfo

A channel reference

Skip Channels
View source schema ↗

Move forward or backward through the channel list by a number of channels.

Sent to the device
Fields
channelCountintegerRequired

Attributes

Channel
View source schema ↗

The channel the device is tuned to, with its number, call sign and URI.

Fields
numberstring
callSignstring
affiliateCallSignstring
uristring

Content Launcher

v1.0
port1/systems/zero/capability-interfaces/content-launcher

Content launchers open content or a URL on a connected device. Use them to send a selected item to a screen or start the content a customer asked for.

Messages

Launch Content
View source schema ↗

Search for content on the device and open it, optionally starting playback automatically.

Sent to the device
Fields
searchContentSearch

Content search criteria

autoPlayboolean

Whether to auto-play the content

Default: true

Launch Url
View source schema ↗

Open content on the device from a URL.

Sent to the device
Fields
contentUrlstringRequired

URL of the content to launch

format: "uri"

displayStringstring

Display string for the content

brandingInformationBrandingInformation

Content provider branding information

Configuration

View source schema ↗
Fields
acceptHeaderstring

Accept header for content requests

supportedStreamingProtocolsarray<string>

Supported streaming protocols

Equalizer

v1.0
port1/systems/zero/capability-interfaces/equalizer

Equalizers adjust audio bands and select an equalizer mode. Read the current bands and mode to keep an audio control in step with the device.

Messages

Adjust Bands
View source schema ↗

Raise or lower the gain of equalizer bands relative to their current values.

Sent to the device
Fields
bandsarray<EqualizerBandDelta>Required
Set Bands
View source schema ↗

Set the gain of equalizer bands to specific values.

Sent to the device
Fields
bandsarray<EqualizerBand>Required
Set Mode
View source schema ↗

Select an equalizer preset.

Sent to the device
Fields
modestringRequired

Attributes

Bands
View source schema ↗

The current gain of each equalizer band.

Fields
valuesarray<EqualizerBand>Required
Mode
View source schema ↗

The equalizer preset the device is using.

Fields
valuestringRequired

Configuration

View source schema ↗
Fields
supportedBandsarray<string>
supportedModesarray<string>

Input

v1.0
port1/systems/zero/capability-interfaces/input

Input controls select or navigate between the inputs on a connected device. Read the current input to show which source is selected.

Messages

Navigate Input
View source schema ↗

Move to the next or previous input in the device's input list.

Sent to the device
Fields
directionstringRequired

Allowed values: UP, DOWN.

Select Input
View source schema ↗

Switch the device to an input. Provide the input name or its index.

Sent to the device
Fields
inputstring

Input name to select

indexinteger

Input index to select

minimum: 0

Attributes

Input
View source schema ↗

The input the device is using now, by name and index.

Fields
valuestringRequired

Current input name

indexinteger

Current input index

minimum: 0

Configuration

View source schema ↗
Fields
supportedInputsarray<SupportedInput>

Media Player

v1.0

Messages

Audio
View source schema ↗

Audio data the player sends, with the stream ID, sequence, and whether it is the final chunk.

Sent by the device
Fields
audioDatastring

Base64 encoded audio data

format: "base64"

isFinalboolean

Whether the audio is the final chunk

Default: false

sequenceIdinteger

Number of audio channels

streamIdstring

Audio stream ID

Default: default

textstring

Audio text

Default:

mimeTypestring

Audio MIME type

Default: audio/ogg

rawBytesstring

Audio raw bytes

format: "binary"

durationnumber

Audio duration in seconds

minimum: 0

Audio Stream
View source schema ↗

A chunk of an audio stream the player sends, with its stream ID and sequence, and whether it is the final chunk.

Sent by the device
Fields
streamIdstringRequired

Unique identifier for this audio stream

minLength: 1

sequenceIdintegerRequired

Sequence ID for this audio stream

minimum: 0

isFinalbooleanRequired

Whether this is the final chunk in the stream

Default: false

audioDatastring

Base64 encoded audio data

format: "base64"

rawBytesstring

Audio raw bytes

format: "binary"

Fast Forward
View source schema ↗

Begin provider-defined fast-forward playback. This does not seek by a specific duration; use skip-forward or seek for a known position change.

Sent to the device
Fields

No payload fields.

Next
View source schema ↗

Skip to the next item.

Sent to the device
Fields

No payload fields.

Pause
View source schema ↗

Pause playback.

Sent to the device
Fields

No payload fields.

Play Audio
View source schema ↗

Play a base64 encoded audio object on the endpoint. Requires audio output support; RTSP or SDP alone does not establish playback support.

Sent to the device
Fields
audioPlayableAudioRequired

An audio object to play on an endpoint with audio output.

Play Media
View source schema ↗

Play a media item by its media ID.

Sent to the device
Fields
mediaIdstringRequired

Exact provider resource identity. The canonical form is portos-media://portoperatingsystem.com/provider/media-type/resource-kind/resource-id, with no URI version. Spotify emits audio track, playlist, album, artist, show and episode identities. The prior authority remains readable. YouTube and YouTube Music share provider youtube, with video/video and video/channel resource kinds. Copy an ID returned by search or library discovery; do not send a search phrase as an ID. See https://portoperatingsystem.com/docs/media.

minLength: 1

pattern: "^(portos-media://(portpowered[.]com|portoperatingsystem[.]com)/[a-z][a-z0-9_-]*/(audio|video|image)/[a-z][a-z0-9_-]*/([^/?#\\s]|%[0-9A-Fa-f]{2})+|https?://[^\\s]+|portos://[^\\s]+)$"

Play
View source schema ↗

Start or resume playback.

Sent to the device
Fields

No payload fields.

Play Uri
View source schema ↗

Play audio from a public HTTPS URI, optionally with a title.

Sent to the device
Fields
uristringRequired

Public HTTPS URI of the audio to play

format: "uri"

minLength: 1

titlestring

Optional title for display or logging purposes

sourceTypestring

URI transport semantics. Omission retains FILE behavior. LIVE_STREAM requires explicit live source support on the selected route; it must not be interpreted as a finite clip.

Allowed values: FILE, LIVE_STREAM.

offsetInMillisecondsinteger

Playback start position in milliseconds

minimum: 0

Default: 0

Previous
View source schema ↗

Go back to the previous item.

Sent to the device
Fields

No payload fields.

Rewind
View source schema ↗

Rewind the current item.

Sent to the device
Fields

No payload fields.

Search And Play
View source schema ↗

Search for and play media by title or query using a service advertised by the endpoint. Omitting mediaType retains audio search behavior; video-only endpoints may default to video.

Sent to the device
Fields
querystringRequired

Query to search for media content

minLength: 1

providerstring

Media service identifier. A provider enum value does not imply that every endpoint supports that service; use the endpoint's advertised provider lists.

mediaTypestring

Media search domain. The endpoint must advertise support for the selected type.

Allowed values: AUDIO, VIDEO.

timerSecondsinteger

Optional provider playback timer in seconds.

minimum: 1

maximum: 86400

Seek
View source schema ↗

Jump to a position in the current item, in milliseconds.

Sent to the device
Fields
positionMillisecondsintegerRequired

Position to seek to in milliseconds

minimum: 0

Skip Backward
View source schema ↗

Skip backward in the current item by a number of milliseconds.

Sent to the device
Fields
deltaPositionMillisecondsinteger

Number of milliseconds to skip backward

minimum: 0

Skip Forward
View source schema ↗

Skip forward in the current item by a number of milliseconds.

Sent to the device
Fields
deltaPositionMillisecondsinteger

Number of milliseconds to skip forward

minimum: 0

Start Over
View source schema ↗

Restart the current item from the beginning.

Sent to the device
Fields

No payload fields.

Stop
View source schema ↗

Stop playback.

Sent to the device
Fields

No payload fields.

Transfer Playback
View source schema ↗

Move the current playback session of the destination route's connected provider account to this one destination, preserving playing or paused state and media context. Select an advertised destination route. This affects that account's current session; it does not copy media, restart playback, transfer between providers or accounts, or fan out to group members. Read fresh source and destination state before and after dispatch to verify the move. An unavailable target requires an explicit choice of another destination.

Sent to the device
Fields

No payload fields.

Attributes

Clip Status
View source schema ↗

Latest admitted vendor observation for the latest physical-player clip attempt. This is separate from ordinary group playback. Missing, expired or revoked observations are unavailable, never inferred completion. Command acceptance alone supplies no value; physical clips do not support pause or resume.

Fields
valueMediaClipObservationRequired

Bounded passive telemetry for an exactly correlated physical-player command. This observation cannot authorize controls, retry playback or establish audible delivery.

Current Content
View source schema ↗

Currently selected media metadata. Report only metadata supplied by the media provider; omission means unknown, not an empty playback session.

Fields
valueMediaCurrentContentRequired

Metadata for the media currently selected by a provider.

Now Playing
View source schema ↗

Media identity observed on this route. Active false means the provider session is on another target; it does not prove the speaker is silent through other providers.

Fields
activebooleanRequired
mediaIdstring

Exact provider resource identity. The canonical form is portos-media://portoperatingsystem.com/provider/media-type/resource-kind/resource-id, with no URI version. Spotify emits audio track, playlist, album, artist, show and episode identities. The prior authority remains readable. YouTube and YouTube Music share provider youtube, with video/video and video/channel resource kinds. Copy an ID returned by search or library discovery; do not send a search phrase as an ID. See https://portoperatingsystem.com/docs/media.

minLength: 1

pattern: "^(portos-media://(portpowered[.]com|portoperatingsystem[.]com)/[a-z][a-z0-9_-]*/(audio|video|image)/[a-z][a-z0-9_-]*/([^/?#\\s]|%[0-9A-Fa-f]{2})+|https?://[^\\s]+|portos://[^\\s]+)$"

contextMediaIdstring

Exact provider resource identity. The canonical form is portos-media://portoperatingsystem.com/provider/media-type/resource-kind/resource-id, with no URI version. Spotify emits audio track, playlist, album, artist, show and episode identities. The prior authority remains readable. YouTube and YouTube Music share provider youtube, with video/video and video/channel resource kinds. Copy an ID returned by search or library discovery; do not send a search phrase as an ID. See https://portoperatingsystem.com/docs/media.

minLength: 1

pattern: "^(portos-media://(portpowered[.]com|portoperatingsystem[.]com)/[a-z][a-z0-9_-]*/(audio|video|image)/[a-z][a-z0-9_-]*/([^/?#\\s]|%[0-9A-Fa-f]{2})+|https?://[^\\s]+|portos://[^\\s]+)$"

namestring
positionMsinteger

Provider-observed position within the current media item in milliseconds. Omitted when unknown. Compare fresh observations with media identity and playback state; a track transition does not prove continuity.

minimum: 0

Playback Speed
View source schema ↗

The playback speed as a multiplier, where 1.0 is normal speed.

Fields
valuenumberRequired

Playback speed multiplier (1.0 = normal speed)

minimum: 0.1

maximum: 10

Playback State
View source schema ↗

Whether the player is playing, paused or stopped.

Fields
valuestringRequired

The current playback state

Allowed values: PLAYING, PAUSED, STOPPED, LOADING, ERROR.

Configuration

View source schema ↗
Fields
supportedMediaResourcesarray<SupportedMediaResource>

Exact play-media URI combinations accepted by this route. Member or endpoint unions do not imply support by every route.

supportedAudioProvidersarray<string>

Audio services accepted by search-and-play on this endpoint. These describe command support, not active subscriptions.

uniqueItems: true

supportedVideoProvidersarray<items>

Video services accepted by search-and-play on this endpoint. These describe command support, not installed applications or active subscriptions.

uniqueItems: true

defaultAudioProviderstring

Default service for an audio search. Must be in supportedAudioProviders.

defaultVideoProviderstring

Default service for a video search. Must be in supportedVideoProviders.

supportedPlaybackStatesarray<string>

Supported playback states

supportedPlaybackSpeedsarray<number>

Supported playback speeds (e.g., 0.5, 1.0, 1.5, 2.0)

seekRangeMeasurementRange

Seek range in seconds

supportedMediaTypesarray<string>

List of supported media types

supportedFormatsarray<string>

List of supported media formats

maxPlaylistSizeinteger

Maximum number of items in a playlist

minimum: 1

maximum: 10000

defaultQualitystring

Default quality setting for media playback

Allowed values: LOW, MEDIUM, HIGH, LOSSLESS.

supportsPlayURIboolean

Whether the endpoint can play an audio URI.

supportedURISourceTypesarray<string>

Exact source kinds accepted by play-uri on this route. With URI support, omission admits FILE only; an empty list admits none. LIVE_STREAM must be explicitly listed. This does not resolve provider catalog identities.

uniqueItems: true

supportedAudioMimeTypesarray<string>

Audio MIME types accepted by play-audio. Advertise play-audio only when audio output is supported.

maxAudioDurationSecondsinteger

Maximum encoded duration accepted by play-audio. Longer inputs are rejected without truncation.

minimum: 1

maximum: 86400

audioPlaybackModestring

CLIP means finite immediate play-audio playback, which may interrupt or duck current content. QUEUE means finite controllable play-audio playback that replaces the current playback session. Neither mode appends to an existing queue, resolves a provider track, or establishes a live stream.

Allowed values: CLIP, QUEUE.

Media Playlist

v1.0

Messages

Add To Playlist
View source schema ↗

Add tracks to a playlist.

Sent to the device
Fields
playlistIdstringRequired

ID of the playlist to add tracks to

minLength: 1

tracksarray<string>Required

Track URIs to add to the playlist

Create Playlist
View source schema ↗

Create a playlist, optionally with an initial list of tracks.

Sent to the device
Fields
namestringRequired

Name of the playlist to create

minLength: 1

tracksarray<string>

Optional initial list of track URIs

Get Playlist
View source schema ↗

Retrieve the contents of a playlist. Use the continuation token to read further pages.

Sent to the device
Fields
playlistIdstringRequired

ID of the playlist to retrieve

minLength: 1

maxResultsinteger

minimum: 1

maximum: 50

Default: 20

nextTokenstring

Opaque continuation for the same playlist.

minLength: 1

List Playlists
View source schema ↗

List the connected customer's owned or followed playlists; use search-media for catalog search.

Sent to the device
Fields
maxResultsinteger

minimum: 1

maximum: 50

Default: 20

nextTokenstring

minLength: 1

Play Playlist
View source schema ↗

Play a playlist, optionally on a specific endpoint.

Sent to the device
Fields
playlistIdstringRequired

ID of the playlist to play

minLength: 1

endpointIdstring

Optional target endpoint to play the playlist on

Playlist Contents
View source schema ↗

A bounded playlist page containing playable tracks or episodes.

Sent by the device
Fields
playlistIdstringRequired

Exact provider resource identity. The canonical form is portos-media://portoperatingsystem.com/provider/media-type/resource-kind/resource-id, with no URI version. Spotify emits audio track, playlist, album, artist, show and episode identities. The prior authority remains readable. YouTube and YouTube Music share provider youtube, with video/video and video/channel resource kinds. Copy an ID returned by search or library discovery; do not send a search phrase as an ID. See https://portoperatingsystem.com/docs/media.

minLength: 1

pattern: "^(portos-media://(portpowered[.]com|portoperatingsystem[.]com)/[a-z][a-z0-9_-]*/(audio|video|image)/[a-z][a-z0-9_-]*/([^/?#\\s]|%[0-9A-Fa-f]{2})+|https?://[^\\s]+|portos://[^\\s]+)$"

tracksarray<Track>Required
episodesarray<PodcastEpisode>Required
nextTokenstring

minLength: 1

Playlist Mutation Result
View source schema ↗

Provider acknowledgement for one playlist mutation. Re-read contents to verify the requested outcome. A partial result must not be retried automatically.

Sent by the device
Fields
playlistIdstringRequired

minLength: 1

snapshotIdstring

Provider revision acknowledging the change, when returned.

appliedbooleanRequired

Whether all requested steps were acknowledged. False can mean playlist creation succeeded but initial track insertion did not.

detailstring
Playlists
View source schema ↗

A page of the connected customer's playlists with exact resource IDs.

Sent by the device
Fields
playlistsarray<Playlist>Required
nextTokenstring

minLength: 1

Remove From Playlist
View source schema ↗

Remove a track from a playlist, by its index or its URI.

Sent to the device
Fields
playlistIdstringRequired

ID of the playlist to remove a track from

minLength: 1

trackIndexintegerRequired

Index of the track to remove (-1 to use trackUri instead)

trackUristring

URI of the track to remove (used when trackIndex is -1)

Rename Playlist
View source schema ↗

Rename the selected playlist when the connected account owns it. Does not change visibility or contents.

Sent to the device
Fields
playlistIdstringRequired

Exact playlist resource ID copied from this account library.

minLength: 1

namestringRequired

New playlist name.

minLength: 1

Shuffle Playlist
View source schema ↗

Shuffle the order of a playlist.

Sent to the device
Fields
playlistIdstringRequired

ID of the playlist to shuffle

minLength: 1

Unfollow Playlist
View source schema ↗

Remove only the selected playlist from the current account library. This does not permanently delete the provider playlist or change another account library.

Sent to the device
Fields
playlistIdstringRequired

Exact playlist resource ID copied from this account library.

minLength: 1

Recordings

v1.0
port1/systems/zero/capability-interfaces/recordings

Recordings list saved captures and expose recording download and deletion. Use pagination to browse the recordings supplied by a connected provider.

Messages

Delete Recording
View source schema ↗

Delete recording.

Sent to the device
Fields
recordingIdstringRequired

Provider recording identifier.

minLength: 1

Delete Recording Response
View source schema ↗

Delete recording response.

Sent by the device
Fields
(payload)RecordingsInterfaceDeleteRecordingResponseMessage

Delete recording response.

Download Recording
View source schema ↗

Download recording.

Sent to the device
Fields
recordingIdstringRequired

Provider recording identifier.

minLength: 1

Download Recording Response
View source schema ↗

Download recording response.

Sent by the device
Fields
uristringRequired

Provider URL for downloading the recording.

format: "uri"

List Recordings
View source schema ↗

List recordings.

Sent to the device
Fields
cursorstring

Opaque cursor for the next page; omitted when there are no further results.

maxResultsinteger

Maximum number of items to return.

minimum: 1

maximum: 1000

fromstring

Inclusive start time.

format: "date-time"

tostring

Exclusive end time.

format: "date-time"

List Recordings Response
View source schema ↗

List recordings response.

Sent by the device
Fields
itemsarray<Recording>Required

Recordings in this page.

nextCursorstring

Opaque cursor for the next page; omitted when there are no further results.

Speaker

v1.0
port1/systems/zero/capability-interfaces/speaker

Speakers set or adjust volume and change mute state. Read the current volume and mute state to keep playback controls in step with the device.

Messages

Adjust Volume
View source schema ↗

Raise or lower the volume by an amount relative to its current value.

Sent to the device
Fields
volumeDeltanumberRequired
Set Mute
View source schema ↗

Mute or unmute the speaker.

Sent to the device
Fields
mutebooleanRequired
Set Volume
View source schema ↗

Set the speaker volume to a specific value.

Sent to the device
Fields
volumenumberRequired

minimum: 0

maximum: 100

Attributes

Muted
View source schema ↗

Whether the speaker is muted.

Fields
valuebooleanRequired
Volume
View source schema ↗

The speaker volume.

Fields
valuenumberRequired

minimum: 0

maximum: 100

Sensors

Sensor capabilities report measurements such as temperature, humidity, motion, air quality and pressure.

Air Quality Sensor

v1.0
port1/systems/zero/capability-interfaces/air-quality-sensor

Air quality reports the air-quality index measured by a device. Use the reading to understand conditions in a room and decide when to run ventilation or another automation.

Messages

Get Air Quality
View source schema ↗

Ask the device to report its current air quality reading.

Sent to the device
Fields

No payload fields.

Attributes

Air Quality Index
View source schema ↗

The air quality index the device reports, with the standard the value is measured in.

Fields
valueintegerRequired

Air quality index value

minimum: 0

standardstringRequired

Air quality standard

Allowed values: AIR_QUALITY_INDEX, PARTS_PER_MILLION_2_5, PARTS_PER_MILLION_10.

Configuration

View source schema ↗
Fields
supportedStandardsarray<string>

Supported air quality standards

Carbon Dioxide Concentration Sensor

v1.0
port1/systems/zero/capability-interfaces/carbon-dioxide-concentration-sensor

Carbon dioxide measurements report the concentration observed by a sensor, including its minimum and maximum readings. Use them to track changes in indoor conditions over time.

Attributes

Max Measured Value
View source schema ↗

The highest carbon dioxide concentration the sensor can measure.

Fields
valuenumberRequired

Maximum measured value

Measured Value
View source schema ↗

The carbon dioxide concentration the sensor measures, with its unit.

Fields
valueMeasurementValueRequired

A measurement value with optional null support

unitstringRequired

Unit of measurement

Min Measured Value
View source schema ↗

The lowest carbon dioxide concentration the sensor can measure.

Fields
valuenumberRequired

Minimum measured value

Carbon Monoxide Concentration Sensor

v1.0
port1/systems/zero/capability-interfaces/carbon-monoxide-concentration-sensor

Carbon monoxide measurements report the concentration observed by a sensor, including its minimum and maximum readings. Use the reported values as input to monitoring and notification flows.

Attributes

Max Measured Value
View source schema ↗

The highest carbon monoxide concentration the sensor can measure.

Fields
valuenumberRequired

Maximum measured value

Measured Value
View source schema ↗

The carbon monoxide concentration the sensor measures, with its unit.

Fields
valueMeasurementValueRequired

A measurement value with optional null support

unitstringRequired

Unit of measurement

Min Measured Value
View source schema ↗

The lowest carbon monoxide concentration the sensor can measure.

Fields
valuenumberRequired

Minimum measured value

Electrical Conductivity Sensor

v1.0
port1/systems/zero/capability-interfaces/electrical-conductivity-sensor

Electrical conductivity measurements report a sensor reading. Use the value and its declared units when displaying or comparing measurements.

Attributes

Measured Value
View source schema ↗

The electrical conductivity the sensor measures, with its unit.

Fields
valueMeasurementValueRequired

A measurement value with optional null support

unitstringRequired

Unit of measurement

Event Detection Sensor

v1.0
port1/systems/zero/capability-interfaces/event-detection-sensor

Event detection sensors report human presence and emit person-detected events. Use them to give an automation context about activity in a monitored area.

Messages

Person Detected
View source schema ↗

A distinct person detection occurrence, independent of cached presence state.

Sent by the device
Fields
valuestringRequired

Allowed values: DETECTED.

Attributes

Human Presence Detection State
View source schema ↗

Whether the device detects a person, and the methods (audio or video) used to detect them.

Fields
valuestringRequired

Allowed values: DETECTED, NOT_DETECTED.

detectionMethodsarray<string>

Configuration

View source schema ↗
Fields
detectionMethodsarray<string>
supportedEventsarray<SupportedEvent>

Flow Sensor

v1.0
port1/systems/zero/capability-interfaces/flow-sensor

Flow measurements report the flow observed by a sensor. Use the reading and its declared units to monitor changes in a connected system.

Attributes

Measured Value
View source schema ↗

The flow rate the sensor measures, with its unit.

Fields
valueMeasurementValueRequired

A measurement value with optional null support

unitstringRequired

Unit of measurement

Formaldehyde Concentration Sensor

v1.0
port1/systems/zero/capability-interfaces/formaldehyde-concentration-sensor

Formaldehyde measurements report the concentration observed by a sensor. Use the reading and its declared unit when presenting environmental measurements.

Attributes

Measured Value
View source schema ↗

The formaldehyde concentration the sensor measures, with its unit.

Fields
valueMeasurementValueRequired

A measurement value with optional null support

unitstringRequired

Unit of measurement

Humidity Sensor

v1.0
port1/systems/zero/capability-interfaces/humidity-sensor

Humidity sensors report relative humidity. Use the reading to display room conditions or provide input to a ventilation or humidifier flow.

Attributes

Relative Humidity
View source schema ↗

The relative humidity the sensor measures.

Fields
valuenumberRequired

Leaf Wetness Sensor

v1.0
port1/systems/zero/capability-interfaces/leaf-wetness-sensor

Leaf wetness measurements report readings from a connected sensor. Use them as input when monitoring plants and growing conditions.

Attributes

Measured Value
View source schema ↗

The leaf wetness the sensor measures, with its unit.

Fields
valueMeasurementValueRequired

A measurement value with optional null support

unitstringRequired

Unit of measurement

Light Sensor

v1.0
port1/systems/zero/capability-interfaces/light-sensor

Light sensors report illuminance. Use the reading to understand ambient light and provide input to a lighting automation.

Attributes

Illuminance
View source schema ↗

The light level the sensor measures, in lux.

Fields
valuenumberRequired

The illuminance value is a number between 1 and 65533. This attribute SHALL indicate the illuminance in Lux (symbol lx) as follows: • MeasuredValue = 10,000 x log10(illuminance) + 1, where 1 lx <= illuminance <= 3.576 Mlx, corresponding to a MeasuredValue in the range 1 to 0xFFFE. The MeasuredValue attribute can take the following values: • 0 indicates a value of illuminance that is too low to be measured, • MinMeasuredValue <= MeasuredValue <= MaxMeasuredValue under normal circumstances, • null indicates that the illuminance measurement is invalid. The MeasuredValue attribute is updated continuously as new measurements are made

Motion Sensor

v1.0
port1/systems/zero/capability-interfaces/motion-sensor

Motion sensors report detection state and emit motion-detected events. Use them to trigger a light, a notification, or another automation when movement is detected.

Messages

Motion Detected
View source schema ↗

A distinct motion occurrence, independent of cached detection state.

Sent by the device
Fields
valuestringRequired

Allowed values: DETECTED.

Attributes

Detection State
View source schema ↗

Whether the sensor detects motion.

Fields
valuestringRequired

Allowed values: DETECTED, NOT_DETECTED.

Nitrogen Dioxide Concentration Sensor

v1.0
port1/systems/zero/capability-interfaces/nitrogen-dioxide-concentration-sensor

Nitrogen dioxide measurements report the concentration observed by a sensor. Use the value and its declared units in environmental monitoring.

Attributes

Measured Value
View source schema ↗

The nitrogen dioxide concentration the sensor measures, with its unit.

Fields
valueMeasurementValueRequired

A measurement value with optional null support

unitstringRequired

Unit of measurement

Ozone Concentration Sensor

v1.0
port1/systems/zero/capability-interfaces/ozone-concentration-sensor

Ozone measurements report the concentration observed by a sensor. Use the reading and its declared unit when displaying environmental conditions.

Attributes

Measured Value
View source schema ↗

The ozone concentration the sensor measures, with its unit.

Fields
valueMeasurementValueRequired

A measurement value with optional null support

unitstringRequired

Unit of measurement

Ph Sensor

v1.0
port1/systems/zero/capability-interfaces/ph-sensor

pH measurements report the reading supplied by a connected sensor. Use it when monitoring the conditions of a liquid or growing system.

Attributes

Measured Value
View source schema ↗

The pH the sensor measures, with its unit.

Fields
valueMeasurementValueRequired

A measurement value with optional null support

unitstringRequired

Unit of measurement

Pm10 Concentration Sensor

v1.0
port1/systems/zero/capability-interfaces/pm10-concentration-sensor

PM10 measurements report the concentration observed by a particulate sensor. Use the reported value and unit when displaying air measurements.

Attributes

Measured Value
View source schema ↗

The PM10 particle concentration the sensor measures, with its unit.

Fields
valueMeasurementValueRequired

A measurement value with optional null support

unitstringRequired

Unit of measurement

Pm2 5 Concentration Sensor

v1.0
port1/systems/zero/capability-interfaces/pm2-5-concentration-sensor

PM2.5 measurements report the concentration observed by a particulate sensor. Use the reading to follow changes in measured air conditions.

Attributes

Measured Value
View source schema ↗

The PM2.5 particle concentration the sensor measures, with its unit.

Fields
valueMeasurementValueRequired

A measurement value with optional null support

unitstringRequired

Unit of measurement

Pressure Sensor

v1.0
port1/systems/zero/capability-interfaces/pressure-sensor

Pressure measurements report the value supplied by a connected sensor. Use the value and its declared unit when monitoring pressure.

Attributes

Measured Value
View source schema ↗

The pressure the sensor measures, with its unit.

Fields
valueMeasurementValueRequired

A measurement value with optional null support

unitstringRequired

Unit of measurement

Soil Moisture Sensor

v1.0
port1/systems/zero/capability-interfaces/soil-moisture-sensor

Soil moisture measurements report the reading supplied by a connected sensor. Use the value as input when monitoring growing conditions.

Attributes

Measured Value
View source schema ↗

The soil moisture the sensor measures, with its unit.

Fields
valueMeasurementValueRequired

A measurement value with optional null support

unitstringRequired

Unit of measurement

Temperature Sensor

v1.0
port1/systems/zero/capability-interfaces/temperature-sensor

Temperature sensors report temperature and operation mode. Use the reading to display conditions or give a heating and cooling flow a measured input.

Attributes

Operation Mode
View source schema ↗

The operation mode the temperature sensor reports.

Fields
valuestringRequired
Temperature
View source schema ↗

The temperature the sensor measures, with its scale.

Fields
valuenumberRequired
scalestringRequired
port1/systems/zero/capability-interfaces/temperature-sensor v1.0: attributes temperature: possible enum values for scale
ValueMeaning
CELSIUSTemperature in degrees Celsius.
FAHRENHEITTemperature in degrees Fahrenheit.

Wind Speed Sensor

v1.0
port1/systems/zero/capability-interfaces/wind-speed-sensor

Wind speed measurements report the reading supplied by a connected sensor. Use the value and its declared unit when displaying measured wind conditions.

Attributes

Measured Value
View source schema ↗

The wind speed the sensor measures, with its unit.

Fields
valueMeasurementValueRequired

A measurement value with optional null support

unitstringRequired

Unit of measurement

Doors, locks & security

Alarm

v1.0
port1/systems/zero/capability-interfaces/alarm

Alarms ring, silence, or test a device's siren when supported. Read the alarm state to see whether the siren is active.

Messages

Ring Alarm
View source schema ↗

Sound the endpoint alarm. Requires an endpoint with an alarm actuator.

Sent to the device
Fields
(payload)AlarmInterfaceRingAlarmMessage

Sound the endpoint alarm. Requires an endpoint with an alarm actuator.

Silence Alarm
View source schema ↗

Silence an alarm that is sounding. Requires an endpoint that can silence its alarm.

Sent to the device
Fields

No payload fields.

Test Alarm
View source schema ↗

Run the alarm self-test so you can confirm the siren works. Requires an endpoint that supports alarm testing.

Sent to the device
Fields

No payload fields.

Attributes

Alarm State
View source schema ↗

Alarm state.

Fields
activebooleanRequired

Whether the audible alarm is currently sounding.

Barrier Control

v1.0
port1/systems/zero/capability-interfaces/barrier-control

Barrier control opens, closes, or positions a connected barrier. Read its position and state to check a garage door or gate before sending the next command.

Messages

Close
View source schema ↗

Close the barrier.

Sent to the device
Fields

No payload fields.

Go To Position
View source schema ↗

Move the barrier to a position, as a percentage from 0 to 100.

Sent to the device
Fields
positionintegerRequired

Barrier position percentage (0-100)

minimum: 0

maximum: 100

Open
View source schema ↗

Open the barrier.

Sent to the device
Fields

No payload fields.

Attributes

Barrier Position
View source schema ↗

How far a barrier, such as a garage door or gate, is open, as a percentage from 0 to 100.

Fields
valueintegerRequired

Barrier position percentage (0-100)

minimum: 0

maximum: 100

Barrier State
View source schema ↗

Whether the barrier is open, closed, opening, closing or stopped.

Fields
valuestringRequired
port1/systems/zero/capability-interfaces/barrier-control v1.0: attributes barrier-state: possible enum values for value
ValueMeaning
CLOSEDClosed state.
OPENOpen state.
OPENING—
CLOSING—
STOPPED—

Contact Sensor

v1.0
port1/systems/zero/capability-interfaces/contact-sensor

Contact sensors tell you whether a door, window, or gate is open or closed. Use their reported state to check an entryway or trigger an automation when something is left open.

Attributes

Detection State
View source schema ↗

Whether the contact sensor detects an opening. DETECTED means the sensor reports open (contact broken, for example an open door, window or garage door). NOT_DETECTED means it reports closed (contact made). This follows Alexa.ContactSensor and the SmartThings and Tuya mappings.

Fields
valuestringRequired

Allowed values: NOT_DETECTED, DETECTED.

Keypad Input

v1.0
port1/systems/zero/capability-interfaces/keypad-input

Keypad input sends a key to a connected device. Use it to build remote controls that send individual button presses.

Messages

Send Key
View source schema ↗

Send a key press to the device, as a remote control would.

Sent to the device
Fields
keyCodestringRequired

Key code to send

Configuration

View source schema ↗
Fields
supportedKeysarray<string>

List of supported keys

Lock

v1.0
port1/systems/zero/capability-interfaces/lock

Locks accept lock and unlock commands and report their lock state. Use the reported state to check an entryway before requesting a change.

Messages

Lock
View source schema ↗

Lock the lock.

Sent to the device
Fields

No payload fields.

Unlock
View source schema ↗

Unlock the lock.

Sent to the device
Fields

No payload fields.

Attributes

Lock State
View source schema ↗

Whether the lock is locked or unlocked.

Fields
valuestringRequired

Allowed values: LOCKED, UNLOCKED, JAMMED.

Security Panel

v1.0
port1/systems/zero/capability-interfaces/security-panel

Security panels accept arm and disarm commands and report alarm and arming states. Use those reports to show the status supplied by a connected panel.

Messages

Arm
View source schema ↗

Arms the security panel. The body takes no fields: send an empty object ({}). Unknown fields are rejected. The simulator arms to ARMED_AWAY; read the resulting arm-state attribute for the current mode.

Sent to the device
Fields

No payload fields.

Disarm
View source schema ↗

Disarms the security panel. The body takes no fields: send an empty object ({}). Unknown fields are rejected. Read the arm-state attribute to confirm it reports DISARMED.

Sent to the device
Fields

No payload fields.

Attributes

Arm State
View source schema ↗

Whether the security panel is armed away, armed stay, armed night or disarmed.

Fields
valuestringRequired

Allowed values: ARMED_AWAY, ARMED_STAY, ARMED_NIGHT, DISARMED.

Burglary Alarm
View source schema ↗

Whether the panel's burglary alarm is active.

Fields
valuestringRequired
port1/systems/zero/capability-interfaces/security-panel v1.0: attributes burglary-alarm: possible enum values for value
ValueMeaning
OKThe device is reachable.
ALARM—
Carbon Monoxide Alarm
View source schema ↗

Whether the panel's carbon monoxide alarm is active.

Fields
valuestringRequired
port1/systems/zero/capability-interfaces/security-panel v1.0: attributes carbon-monoxide-alarm: possible enum values for value
ValueMeaning
OKThe device is reachable.
ALARM—
Delay State
View source schema ↗

Whether the panel is in an entry delay or an exit delay, and how many seconds the delay lasts.

Fields
statestring

Allowed values: ENTRY_DELAY, EXIT_DELAY, NONE.

delayInSecondsinteger
playlistIdstring
playOrderarray<SecurityPlayOrderItem>
Fire Alarm
View source schema ↗

Whether the panel's fire alarm is active.

Fields
valuestringRequired
port1/systems/zero/capability-interfaces/security-panel v1.0: attributes fire-alarm: possible enum values for value
ValueMeaning
OKThe device is reachable.
ALARM—
Siren State
View source schema ↗

Whether the panel's siren is sounding, and the sounds it plays.

Fields
statestring
port1/systems/zero/capability-interfaces/security-panel v1.0: attributes siren-state: possible enum values for state
ValueMeaning
ONThe device is on.
OFFThe device is off.
playlistIdstring
playOrderarray<SecurityPlayOrderItem>
Water Alarm
View source schema ↗

Whether the panel's water alarm is active.

Fields
valuestringRequired
port1/systems/zero/capability-interfaces/security-panel v1.0: attributes water-alarm: possible enum values for value
ValueMeaning
OKThe device is reachable.
ALARM—

Configuration

View source schema ↗
Fields
supportedAuthorizationTypesarray<SecurityAuthorizationType>
supportedArmStatesarray<SecurityArmState>
alertsarray<SecurityAlert>
assetsarray<object>
playlistsarray<SecurityPlaylist>

Security Pin

v1.0
port1/systems/zero/capability-interfaces/security-pin

Security PINs create, update, query, and delete PIN records. Follow operation results and PIN reports when managing the records supported by a device.

Messages

Create Pin
View source schema ↗

Create an endpoint-scoped PIN. TEMPORARY requires both validity timestamps; PERMANENT forbids them. Validate increasing, nonexpired instants and declared restrictions before dispatch.

Sent to the device
Fields
namestringRequired
pinstringRequired

The code entered on the keypad. Leading zeros are kept.

writeOnly: true

kindstringRequired

Allowed values: PERMANENT, TEMPORARY.

validFromstring

format: "date-time"

validUntilstring

format: "date-time"

Delete Pin
View source schema ↗

Delete a record within the authorized endpoint. Emit a correlated terminal result even when enumeration no longer includes the record.

Sent to the device
Fields
idstringRequired

The PIN record to delete.

minLength: 1

Pin Operation Result
View source schema ↗

Correlated safe PIN provisioning result. APPLIED requires vendor-confirmed completion, not dispatch acceptance. CREATE supplies recordId once assigned; UPDATE and DELETE retain the requested ID. FAILED requires a safe code; other statuses forbid code. Never include credentials or raw vendor errors.

Sent by the device
Fields
correlationTokenstringRequired

minLength: 1

operationstringRequired

Allowed values: CREATE, UPDATE, DELETE.

recordIdstring

minLength: 1

provisioningStatusstringRequired

Allowed values: PENDING, APPLIED, FAILED.

codestring

Stable safe structured failure code. Never raw vendor text, credentials or response bodies.

minLength: 1

Pin Records Report
View source schema ↗

Bounded credential-free record page aligned with the pin-records attribute. Echo the query correlation token in the message header.

Sent by the device
Fields
itemsarray<SecurityPinRecord>Required
nextTokenstring

Opaque continuation bound to endpoint, caller and query; omitted on the final page.

minLength: 1

Query Operation
View source schema ↗

Retrieve an endpoint-scoped PIN operation result by its original correlation token. Enforce caller and endpoint ownership. Return pin-operation-result, preserving the original operation correlation token in its payload and using this query's correlation token in the response header.

Sent to the device
Fields
correlationTokenstringRequired

minLength: 1

Query Pins
View source schema ↗

Query a bounded endpoint-scoped PIN record page. Requires message-send permission. Continuations bind caller, endpoint and page size; return pin-records-report with the request correlation token in its header.

Sent to the device
Fields
maxResultsinteger

minimum: 1

maximum: 100

Default: 20

nextTokenstring

minLength: 1

Update Pin
View source schema ↗

Update an endpoint-scoped record. Require at least one change. Kind is immutable; validity changes require both timestamps and an authoritative TEMPORARY record.

Sent to the device
Fields
idstringRequired

The PIN record to change.

minLength: 1

namestring
pinstring

The code entered on the keypad. Leading zeros are kept.

writeOnly: true

validFromstring

format: "date-time"

validUntilstring

format: "date-time"

Attributes

Pin Records
View source schema ↗

Bounded endpoint-scoped PIN record page containing no credentials. Permanent records omit validity bounds; temporary records include both. Provisioning status is separate from observation freshness.

Fields
itemsarray<SecurityPinRecord>Required
nextTokenstring

Opaque continuation bound to endpoint, caller and query; omitted on the final page.

minLength: 1

Pin Support
View source schema ↗

Verified optional restrictions from endpoint configuration. Omit unknown restrictions; absence does not guarantee vendor acceptance.

Fields
supportedKindsarray<string>

uniqueItems: true

minLengthinteger

minimum: 0

maxLengthinteger

minimum: 0

maxPinsinteger

Maximum simultaneous PINs the device holds; 1 means a single-PIN lock. Omitted when unknown.

minimum: 1

patternstring

Configuration

View source schema ↗
Fields
supportedKindsarray<string>

uniqueItems: true

minLengthinteger

minimum: 0

maxLengthinteger

minimum: 0

maxPinsinteger

Maximum simultaneous PINs the device holds; 1 means a single-PIN lock. Absent means unknown or unlimited.

minimum: 1

patternstring

Explicit device PIN regular expression; absent means no character restriction.

Smoke Co Alarm

v1.0
port1/systems/zero/capability-interfaces/smoke-co-alarm

Smoke and carbon monoxide detectors report detection state. Devices expose alarm controls through the alarm capability and charge level through the battery capability.

Attributes

Alarm State
View source schema ↗

The alarm state the smoke and carbon monoxide alarm reports.

Fields
valuestringRequired

Alarm state

Allowed values: NORMAL, SMOKE_ALARM, CO_ALARM, BOTH_ALARM, TEST_MODE, HARDWARE_FAULT, END_OF_LIFE.

Window

v1.0
port1/systems/zero/capability-interfaces/window

Windows report their window state and lock state. Use those reports to check the status supplied by a connected window.

Attributes

Lock State
View source schema ↗

Whether the window's lock is engaged.

Fields
valuestringRequired

Allowed values: LOCKED, UNLOCKED.

Window State
View source schema ↗

Whether the window is open, closed or tilted.

Fields
valuestringRequired
port1/systems/zero/capability-interfaces/window v1.0: attributes window-state: possible enum values for value
ValueMeaning
OPENOpen state.
CLOSEDClosed state.
TILTED—

Locations

Location

v1.0
port1/systems/zero/capability-interfaces/location

Location reports a connected resource's geolocation. Use it to show the position supplied by that resource.

Attributes

Geolocation
View source schema ↗

The geographic coordinates the device reports.

Fields
coordinateGeoCoordinateRequired

A geographic coordinate

Location Tracker

v1.0
port1/systems/zero/capability-interfaces/location-tracker

Location trackers start a locator and report its signal. Use them when helping a customer locate a connected item.

Messages

Start Locator
View source schema ↗

Start the tracker's locator signal so you can find it.

Sent to the device
Fields

No payload fields.

Attributes

Locator Signal
View source schema ↗

Whether the tracker's locator signal, such as a beep or light, is on or off.

Fields
valuestringRequired
port1/systems/zero/capability-interfaces/location-tracker v1.0: attributes locator-signal: possible enum values for value
ValueMeaning
ONThe device is on.
OFFThe device is off.

Spatial

v1.0
port1/systems/zero/capability-interfaces/spatial

Descriptive spatial declaration of a group route (home, floor/map, room or zone). The spatial interface declares no control messages; cleaning is sent to the robot endpoint.

Attributes

Active
View source schema ↗

Whether this map or floor is the provider's currently loaded map (maps only)

Fields
valuebooleanRequired
Geometry
View source schema ↗

Observed area of the group route in the coordinate system of its reference frame

Fields
shapeSpatialPolygon | SpatialMultiPolygonRequired

Area covered by a group route, as a polygon or multi-polygon

discriminator: type

relativeToGroupIdstring

Canonical endpoint group whose frame the coordinates use

relativeToGroupRouteIdstring

Provider group route whose coordinate system the coordinates use

observedAtstringRequired

When the provider observed this geometry

format: "date-time"

Position
View source schema ↗

Anchor point of the group route in its reference frame. It is a label anchor, not a navigation target.

Fields
pointSpatialPointRequired

GeoJSON-like point

relativeToGroupIdstring

Canonical endpoint group whose frame the coordinates use

relativeToGroupRouteIdstring

Provider group route whose coordinate system the coordinates use

observedAtstringRequired

When the provider observed this position

format: "date-time"

Configuration

View source schema ↗
Fields
rolestringRequired

Spatial role of a group route: a whole home, a floor or map, a room, or a zone within a room

Allowed values: HOME, FLOOR, ROOM, ZONE.

coordinateSystemSpatialCoordinateSystem

Coordinate system of a provider frame. Declared only where the provider's units and axes are proven.

Text & speech

Embedding Generation

v1.0
port1/systems/zero/capability-interfaces/embedding-generation

Embedding generation turns an input into an embedding and returns its URI. Use the result in integrations that work with vector representations of content.

Messages

Embedding Uri
View source schema ↗

The result of an embedding request: the location, format and MIME type of the generated embedding.

Sent by the device
Fields
uristringRequired

URL of the generated embedding resource

formatstring

Format of the embedding (e.g., safetensors, onnx)

mimeTypestring

MIME type of the embedding resource

Generate Embedding
View source schema ↗

Generate an embedding from an audio sample, optionally with reference text for the audio.

Sent to the device
Fields
audioUrlstringRequired

URL or base64 data URI of the audio to generate an embedding from

referenceTextstring

Optional reference text for the audio content

Speech Audio Generation

v1.0
port1/systems/zero/capability-interfaces/speech-audio-generation

Speech audio generation turns text into speech audio with a model from the model catalog and returns it as a short-lived URL or inline base64, chosen with responseFormat. Choose a voice, and where the model supports it delivery tags or style instructions. Use the result when an integration needs an audio file it can pass to a player.

Messages

Audio Generated
View source schema ↗

The speech audio synthesized by generate-speech, as a short-lived URL or inline base64 according to the request's responseFormat

Sent by the device
Fields
audioMediaContentRequired

One binary media result (audio or image). Exactly one of `data` (base64, inline) or `url` (a short-lived Port OS URL with its `expiresAt`) is present; the host rejects a result that carries both or neither. A plugin may return the vendor's fetchable `url` without `expiresAt`; the host always fetches it, republishes or inlines the bytes as the caller's `responseFormat` asks, and fills `byteLength`, so callers never see a vendor URL.

Generate Speech
View source schema ↗

Turn text into speech audio using a model and voice from the model catalog.

Sent to the device
Fields
modelstringRequired

Model identifier from the model catalog (query-models). An unknown model is rejected.

textstringRequired

The text content to synthesize into speech audio

voicestring

Voice from the model catalog entry. Omit for the vendor default voice.

styleInstructionsstring

Delivery direction separate from the spoken text, for models whose catalog entry supports it

responseFormatstring

How a request wants binary media (audio or image) returned. URL returns a short-lived signed URL hosted by Port OS (at most 10 minutes), never the vendor's own link. BASE64 returns the bytes inline as base64 and fails with a typed error above 10 MiB, in which case use URL.

Default: URL

Allowed values: URL, BASE64.

Speech Synthesizer

v1.0
port1/systems/zero/capability-interfaces/speech-synthesizer

Speech synthesizers accept a request to speak. Use them to send spoken output to a connected device or integration.

Messages

Speak
View source schema ↗

Speak the input aloud on the device.

Sent to the device
Fields
inputSpeechInputRequired

Speech synthesis input

Configuration

View source schema ↗
Fields
supportedInputTypesarray<string>

uniqueItems: true

Text

v1.0
port1/systems/zero/capability-interfaces/text

Text sends a text message to a connected component. Use it to pass written input between integrations.

Messages

Text
View source schema ↗

Send text to the device or service.

Sent to the device
Fields
textstringRequired

The text content of the message

minLength: 1

Text Stream

v1.0
port1/systems/zero/capability-interfaces/text-stream

Text streams emit text as a stream of messages. Use the stream to consume output as it becomes available.

Messages

Text Stream
View source schema ↗

A chunk of streamed text, with its stream ID and sequence, and whether it is the final chunk.

Sent by the device
Fields
streamIdstringRequired

Unique identifier for this text stream

minLength: 1

sequenceIdintegerRequired

Sequence ID for this text stream

minimum: 0

isFinalbooleanRequired

Whether this is the final chunk in the stream

Default: false

textstringRequired

Configuration

View source schema ↗
Fields
maxChunkSizeintegerRequired

Maximum size for individual text chunks

Default: 500

maxStreamLengthintegerRequired

Maximum total length for text streams

Default: 50000

supportedEncodingsarray<string>Required

Supported text encodings

defaultEncodingstringRequired

Default text encoding

Default: utf-8

chunkTimeoutintegerRequired

Timeout in milliseconds for chunk delivery

Default: 10000

Media generation

Image Generation

v1.0
port1/systems/zero/capability-interfaces/image-generation

Image generation turns a text prompt into an image with a model from the model catalog and returns it as a short-lived URL or inline base64, chosen with responseFormat. Choose an aspect ratio and resolution from the values the model supports.

Messages

Generate Image
View source schema ↗

Generates one image from a text prompt

Sent to the device
Fields
modelstringRequired

Model identifier from the model catalog (query-models). An unknown model is rejected.

promptstringRequired

Text describing the image to generate

aspectRatiostring

Aspect ratio as width:height, for example 16:9. Must be one the model lists in the model catalog.

resolutionstring

Output resolution tier of a generated image. STANDARD is about 1 megapixel (a 1K tier), HIGH is about 2K and ULTRA is about 4K. A model lists the tiers it supports in the model catalog.

Allowed values: STANDARD, HIGH, ULTRA.

responseFormatstring

How a request wants binary media (audio or image) returned. URL returns a short-lived signed URL hosted by Port OS (at most 10 minutes), never the vendor's own link. BASE64 returns the bytes inline as base64 and fails with a typed error above 10 MiB, in which case use URL.

Default: URL

Allowed values: URL, BASE64.

Image Generated
View source schema ↗

The image produced by generate-image, as a short-lived URL or inline base64 according to the responseFormat of the request

Sent by the device
Fields
imageMediaContentRequired

One binary media result (audio or image). Exactly one of `data` (base64, inline) or `url` (a short-lived Port OS URL with its `expiresAt`) is present; the host rejects a result that carries both or neither. A plugin may return the vendor's fetchable `url` without `expiresAt`; the host always fetches it, republishes or inlines the bytes as the caller's `responseFormat` asks, and fills `byteLength`, so callers never see a vendor URL.

Model Catalog

v1.0
port1/systems/zero/capability-interfaces/model-catalog

The model catalog lists the models a provider offers for generation interfaces, with the prompting instructions, accepted settings and provenance of each. Query it before generating to choose a model and to see which voices, tags, aspect ratios or durations it supports.

Messages

Models Listed
View source schema ↗

The models matching query-models

Sent by the device
Fields
modelsarray<ModelDescriptor>Required
Query Models
View source schema ↗

Lists the models a provider offers for its generation capability interfaces, with the configuration each supports and how to prompt it

Sent to the device
Fields
capabilityInterfacestring

Canonical name of a generation capability interface, for example port1/systems/zero/capability-interfaces/image-generation. Omit to list every model.

Music Generation

v1.0
port1/systems/zero/capability-interfaces/music-generation

Music generation turns a prompt, and for models that support it lyrics, genres and a vocal gender, into a song with a model from the model catalog and returns it as a short-lived URL or inline base64, chosen with responseFormat.

Messages

Generate Music
View source schema ↗

Generates a piece of music from a prompt and optional lyrics, genres and vocal gender. Fields the model does not support are rejected; the model catalog says which it supports.

Sent to the device
Fields
modelstringRequired

Model identifier from the model catalog (query-models). An unknown model is rejected.

promptstring

Describes the music: mood, instrumentation, tempo and, for models without a lyrics field, the lyrics. Required unless the model takes lyrics and they are given.

lyricsstring

Lyrics to sing, for models whose catalog entry supports a separate lyrics field

genresarray<string>

Genres from the model catalog list

vocalGenderstring

Preferred gender of the singing voice for generated music.

Allowed values: FEMALE, MALE.

durationSecondsinteger

Target length in seconds, for models whose catalog entry supports a duration

minimum: 1

responseFormatstring

How a request wants binary media (audio or image) returned. URL returns a short-lived signed URL hosted by Port OS (at most 10 minutes), never the vendor's own link. BASE64 returns the bytes inline as base64 and fails with a typed error above 10 MiB, in which case use URL.

Default: URL

Allowed values: URL, BASE64.

Music Generated
View source schema ↗

The music produced by generate-music, as a short-lived URL or inline base64 according to the responseFormat of the request

Sent by the device
Fields
audioMediaContentRequired

One binary media result (audio or image). Exactly one of `data` (base64, inline) or `url` (a short-lived Port OS URL with its `expiresAt`) is present; the host rejects a result that carries both or neither. A plugin may return the vendor's fetchable `url` without `expiresAt`; the host always fetches it, republishes or inlines the bytes as the caller's `responseFormat` asks, and fills `byteLength`, so callers never see a vendor URL.

lyricsstring

The lyrics of the track when the model returns them

Speech To Speech

v1.0
port1/systems/zero/capability-interfaces/speech-to-speech

Speech to speech converts the voice in a recording into another voice while keeping the words and delivery. Send the recording as base64 audio, choose a preset voice or a speaker reference, and receive the converted audio as a short-lived URL or inline base64, chosen with responseFormat.

Messages

Convert Speech
View source schema ↗

Converts the voice in input audio to another voice, keeping the words and delivery. Both audio inputs carry base64 data, at most 5.5 MiB decoded each so that two of them fit the 16 MiB request body, and inputAudio at most 60 seconds; url inputs are rejected (a URL input would need host rules for caller-supplied addresses and is a follow-up).

Sent to the device
Fields
modelstringRequired

Model identifier from the model catalog (query-models). An unknown model is rejected.

inputAudioMediaContentRequired

One binary media result (audio or image). Exactly one of `data` (base64, inline) or `url` (a short-lived Port OS URL with its `expiresAt`) is present; the host rejects a result that carries both or neither. A plugin may return the vendor's fetchable `url` without `expiresAt`; the host always fetches it, republishes or inlines the bytes as the caller's `responseFormat` asks, and fills `byteLength`, so callers never see a vendor URL.

speakerReferenceMediaContent

One binary media result (audio or image). Exactly one of `data` (base64, inline) or `url` (a short-lived Port OS URL with its `expiresAt`) is present; the host rejects a result that carries both or neither. A plugin may return the vendor's fetchable `url` without `expiresAt`; the host always fetches it, republishes or inlines the bytes as the caller's `responseFormat` asks, and fills `byteLength`, so callers never see a vendor URL.

voicestring

A preset target voice from the model catalog entry, used when no speakerReference is given

responseFormatstring

How a request wants binary media (audio or image) returned. URL returns a short-lived signed URL hosted by Port OS (at most 10 minutes), never the vendor's own link. BASE64 returns the bytes inline as base64 and fails with a typed error above 10 MiB, in which case use URL.

Default: URL

Allowed values: URL, BASE64.

Speech Converted
View source schema ↗

The converted speech produced by convert-speech, as a short-lived URL or inline base64 according to the responseFormat of the request

Sent by the device
Fields
audioMediaContentRequired

One binary media result (audio or image). Exactly one of `data` (base64, inline) or `url` (a short-lived Port OS URL with its `expiresAt`) is present; the host rejects a result that carries both or neither. A plugin may return the vendor's fetchable `url` without `expiresAt`; the host always fetches it, republishes or inlines the bytes as the caller's `responseFormat` asks, and fills `byteLength`, so callers never see a vendor URL.

Appliances

Cleaning Mode

v1.0
port1/systems/zero/capability-interfaces/cleaning-mode

Cleaning types, suction levels and water flows the robot supports, refreshed on every discovery. set-cleaning-mode values outside these lists are rejected before dispatch.

Messages

Set Cleaning Mode
View source schema ↗

Set whether the robot vacuums, mops or does both, optionally with a suction level and water flow. Omitted levels keep the current non-off value. Values outside the configured supported lists are rejected with 422 before dispatch.

Sent to the device
Fields
modestringRequired

What a cleaning robot does: vacuum only, mop only, or vacuum and mop together. CUSTOM is a vendor-specific setting with no Port OS name (for example per-room settings); devices report it but do not accept it.

Allowed values: VACUUM, MOP, VACUUM_AND_MOP, CUSTOM.

suctionLevelstring

Vacuum suction level, ordered from off to strongest. CUSTOM is a vendor-specific setting with no Port OS name (for example per-room settings); devices report it but do not accept it.

port1/systems/zero/capability-interfaces/cleaning-mode v1.0: messages set-cleaning-mode: possible enum values for suctionLevel
ValueMeaning
OFFThe device is off.
QUIET—
BALANCED—
TURBO—
MAX—
MAX_PLUS—
CUSTOM—
waterFlowstring

Mop water flow level, ordered from off to highest. CUSTOM is a vendor-specific setting with no Port OS name (for example per-room settings); devices report it but do not accept it.

port1/systems/zero/capability-interfaces/cleaning-mode v1.0: messages set-cleaning-mode: possible enum values for waterFlow
ValueMeaning
OFFThe device is off.
LOW—
MEDIUM—
HIGH—
EXTREME—
CUSTOM—

Attributes

Cleaning Mode
View source schema ↗

Current cleaning type. CUSTOM when the robot uses a native mode with no equivalent value.

Fields
valuestringRequired

What a cleaning robot does: vacuum only, mop only, or vacuum and mop together. CUSTOM is a vendor-specific setting with no Port OS name (for example per-room settings); devices report it but do not accept it.

Allowed values: VACUUM, MOP, VACUUM_AND_MOP, CUSTOM.

Suction Level
View source schema ↗

Current suction level. CUSTOM when the robot uses a native mode with no equivalent value.

Fields
valuestringRequired

Vacuum suction level, ordered from off to strongest. CUSTOM is a vendor-specific setting with no Port OS name (for example per-room settings); devices report it but do not accept it.

port1/systems/zero/capability-interfaces/cleaning-mode v1.0: attributes suction-level: possible enum values for value
ValueMeaning
OFFThe device is off.
QUIET—
BALANCED—
TURBO—
MAX—
MAX_PLUS—
CUSTOM—
Water Flow
View source schema ↗

Current water flow. CUSTOM when the robot uses a native mode with no equivalent value.

Fields
valuestringRequired

Mop water flow level, ordered from off to highest. CUSTOM is a vendor-specific setting with no Port OS name (for example per-room settings); devices report it but do not accept it.

port1/systems/zero/capability-interfaces/cleaning-mode v1.0: attributes water-flow: possible enum values for value
ValueMeaning
OFFThe device is off.
LOW—
MEDIUM—
HIGH—
EXTREME—
CUSTOM—

Configuration

View source schema ↗
Fields
supportedModesarray<string>Required

Supported cleaning types

uniqueItems: true

supportedSuctionLevelsarray<string>

Supported suction levels

uniqueItems: true

supportedWaterFlowsarray<string>

Supported water flows

uniqueItems: true

Cooktop

v1.0
port1/systems/zero/capability-interfaces/cooktop

Cooktops report their operational state. Use that state to show what the appliance is doing or supply context to an automation.

Attributes

Operational State
View source schema ↗

The current operational state of the cooktop.

Fields
valuestringRequired

Operational state of a device. RETURNING_TO_DOCK means a robot is driving back to its dock; DOCKED means it is on the dock and not charging; DOCK_MAINTENANCE means it is on the dock while the dock services it (emptying the dust bin, washing or drying the mop), and it does not start cleaning until that finishes.

Allowed values: STOPPED, RUNNING, PAUSED, ERROR, CHARGING, DOCKED, RETURNING_TO_DOCK, DOCK_MAINTENANCE.

Dishwasher

v1.0
port1/systems/zero/capability-interfaces/dishwasher

Dishwashers report their operational state. Use it to keep an appliance dashboard up to date or react when a reported state changes.

Attributes

Operational State
View source schema ↗

The current operational state of the dishwasher.

Fields
valuestringRequired

Operational state of a device. RETURNING_TO_DOCK means a robot is driving back to its dock; DOCKED means it is on the dock and not charging; DOCK_MAINTENANCE means it is on the dock while the dock services it (emptying the dust bin, washing or drying the mop), and it does not start cleaning until that finishes.

Allowed values: STOPPED, RUNNING, PAUSED, ERROR, CHARGING, DOCKED, RETURNING_TO_DOCK, DOCK_MAINTENANCE.

Extractor Hood

v1.0
port1/systems/zero/capability-interfaces/extractor-hood

Extractor hoods report their fan speed. Use that state to show the current ventilation setting alongside other kitchen appliances.

Attributes

Fan Speed
View source schema ↗

The extractor hood fan speed, as a percentage from 0 to 100.

Fields
valueintegerRequired

Fan speed percentage (0-100)

minimum: 0

maximum: 100

Laundry Dryer

v1.0
port1/systems/zero/capability-interfaces/laundry-dryer

Laundry dryers report their operational state. Use it to show the current appliance status or react to a change in a flow.

Attributes

Operational State
View source schema ↗

The current operational state of the dryer.

Fields
valuestringRequired

Operational state of a device. RETURNING_TO_DOCK means a robot is driving back to its dock; DOCKED means it is on the dock and not charging; DOCK_MAINTENANCE means it is on the dock while the dock services it (emptying the dust bin, washing or drying the mop), and it does not start cleaning until that finishes.

Allowed values: STOPPED, RUNNING, PAUSED, ERROR, CHARGING, DOCKED, RETURNING_TO_DOCK, DOCK_MAINTENANCE.

Laundry Washer

v1.0
port1/systems/zero/capability-interfaces/laundry-washer

Laundry washers report their operational state. Use it to keep a laundry dashboard in step with the appliance.

Attributes

Operational State
View source schema ↗

The current operational state of the washer.

Fields
valuestringRequired

Operational state of a device. RETURNING_TO_DOCK means a robot is driving back to its dock; DOCKED means it is on the dock and not charging; DOCK_MAINTENANCE means it is on the dock while the dock services it (emptying the dust bin, washing or drying the mop), and it does not start cleaning until that finishes.

Allowed values: STOPPED, RUNNING, PAUSED, ERROR, CHARGING, DOCKED, RETURNING_TO_DOCK, DOCK_MAINTENANCE.

Microwave Oven

v1.0
port1/systems/zero/capability-interfaces/microwave-oven

Microwave ovens report their operational state. Use that state to show what the appliance is currently doing.

Attributes

Operational State
View source schema ↗

The current operational state of the microwave oven.

Fields
valuestringRequired

Operational state of a device. RETURNING_TO_DOCK means a robot is driving back to its dock; DOCKED means it is on the dock and not charging; DOCK_MAINTENANCE means it is on the dock while the dock services it (emptying the dust bin, washing or drying the mop), and it does not start cleaning until that finishes.

Allowed values: STOPPED, RUNNING, PAUSED, ERROR, CHARGING, DOCKED, RETURNING_TO_DOCK, DOCK_MAINTENANCE.

Oven

v1.0
port1/systems/zero/capability-interfaces/oven

Ovens report their temperature. Use the reading to show the temperature supplied by a connected appliance.

Messages

Set Target Temperature
View source schema ↗

Set the temperature the oven should reach.

Sent to the device
Fields
targetSetpointTemperatureSetpointRequired

A temperature setpoint with value and scale

Attributes

Mode
View source schema ↗

The cooking mode the oven is in. Mode names are the provider's own, for example Bake or Broil.

Fields
valuestringRequired

minLength: 1

Operational State
View source schema ↗

The current operational state of the oven.

Fields
valuestringRequired

Operational state of a device. RETURNING_TO_DOCK means a robot is driving back to its dock; DOCKED means it is on the dock and not charging; DOCK_MAINTENANCE means it is on the dock while the dock services it (emptying the dust bin, washing or drying the mop), and it does not start cleaning until that finishes.

Allowed values: STOPPED, RUNNING, PAUSED, ERROR, CHARGING, DOCKED, RETURNING_TO_DOCK, DOCK_MAINTENANCE.

Target Temperature
View source schema ↗

The temperature the oven is set to reach. The scale is the one the device reports its setpoint in.

Fields
valuenumberRequired
scalestringRequired
port1/systems/zero/capability-interfaces/oven v1.0: attributes target-temperature: possible enum values for scale
ValueMeaning
CELSIUSTemperature in degrees Celsius.
FAHRENHEITTemperature in degrees Fahrenheit.
Temperature
View source schema ↗

The oven's current temperature, in the scale the device reports (Celsius or Fahrenheit).

Fields
valuenumberRequired

Temperature in the reported scale

minimum: 0

maximum: 1112

scalestringRequired
port1/systems/zero/capability-interfaces/oven v1.0: attributes temperature: possible enum values for scale
ValueMeaning
CELSIUSTemperature in degrees Celsius.
FAHRENHEITTemperature in degrees Fahrenheit.

Pet Feeder

v1.0
port1/systems/zero/capability-interfaces/pet-feeder

Pet feeders accept a command to trigger a feed. Use the command to start a feeding action from an interface or automation.

Messages

Trigger Feed
View source schema ↗

Dispense food for the pet, with an amount and unit.

Sent to the device
Fields
feedAmountinteger

Amount of food to feed the pet

minimum: 1

maximum: 100

unitstring

Unit of food to feed the pet

Default: CUPS

Allowed values: CUPS, GRAMS, POUNDS, OUNCES.

Pump Configuration And Control

v1.0
port1/systems/zero/capability-interfaces/pump-configuration-and-control

Pump controls set a pump mode and speed. Read its capacity, mode, and status to keep a control interface in step with the pump.

Messages

Set Mode
View source schema ↗

Set the pump's mode.

Sent to the device
Fields
modestringRequired

Allowed values: STANDARD, CONSTANT_SPEED, CONSTANT_PRESSURE, PROPORTIONAL_PRESSURE, CONSTANT_FLOW, PROPORTIONAL_FLOW, CONSTANT_TEMPERATURE, AUTOMATIC.

Set Speed
View source schema ↗

Set the pump speed, as a percentage from 0 to 100.

Sent to the device
Fields
speedintegerRequired

Pump speed percentage (0-100)

minimum: 0

maximum: 100

Attributes

Capacity
View source schema ↗

The pump's capacity.

Fields
valuenumberRequired

Pump capacity

minimum: 0

Pump Mode
View source schema ↗

The mode the pump is running in.

Fields
valuestringRequired

Allowed values: STANDARD, CONSTANT_SPEED, CONSTANT_PRESSURE, PROPORTIONAL_PRESSURE, CONSTANT_FLOW, PROPORTIONAL_FLOW, CONSTANT_TEMPERATURE, AUTOMATIC.

Pump Status
View source schema ↗

The current status of the pump.

Fields
valuestringRequired

Operational state of a device. RETURNING_TO_DOCK means a robot is driving back to its dock; DOCKED means it is on the dock and not charging; DOCK_MAINTENANCE means it is on the dock while the dock services it (emptying the dust bin, washing or drying the mop), and it does not start cleaning until that finishes.

Allowed values: STOPPED, RUNNING, PAUSED, ERROR, CHARGING, DOCKED, RETURNING_TO_DOCK, DOCK_MAINTENANCE.

Configuration

View source schema ↗
Fields
supportedPumpModesarray<string>

Supported pump modes

Refrigerator

v1.0
port1/systems/zero/capability-interfaces/refrigerator

Refrigerators report their temperature. Use the reading to show the conditions supplied by the appliance.

Attributes

Temperature
View source schema ↗

The refrigerator compartment's temperature, in the scale the device reports (Celsius or Fahrenheit).

Fields
valuenumberRequired

Temperature in the reported scale

scalestringRequired
port1/systems/zero/capability-interfaces/refrigerator v1.0: attributes temperature: possible enum values for scale
ValueMeaning
CELSIUSTemperature in degrees Celsius.
FAHRENHEITTemperature in degrees Fahrenheit.

Robotic Vacuum Cleaner

v1.0
port1/systems/zero/capability-interfaces/robotic-vacuum-cleaner

Robotic vacuum cleaners start, pause, stop, and return to their dock. Set a cleaning mode and read the reported mode and operational state to follow a cleaning session.

Messages

Clean Room
View source schema ↗

Clean one or more rooms, in the requested order. Each entry is a canonical endpoint group the robot can control through a CAN_CONTROL relationship. More than one room requires the configuration to declare supportsMultiRoomCleaning; otherwise the request is rejected with MULTI_ROOM_UNSUPPORTED.

Sent to the device
Fields
groupIdsarray<string>Required

Endpoint group IDs of the rooms to clean, in cleaning order

uniqueItems: true

repeatinteger

Number of cleaning passes per room; defaults to 1

minimum: 1

maximum: 3

Pause
View source schema ↗

Pause the current cleaning run.

Sent to the device
Fields

No payload fields.

Return To Dock
View source schema ↗

Send the vacuum back to its dock.

Sent to the device
Fields

No payload fields.

Set Cleaning Mode
View source schema ↗

Set the cleaning mode the vacuum uses.

Sent to the device
Fields
modestringRequired

Robot vacuum cleaning mode

port1/systems/zero/capability-interfaces/robotic-vacuum-cleaner v1.0: messages set-cleaning-mode: possible enum values for mode
ValueMeaning
AUTOSelect the operating mode automatically.
SPOT—
EDGE—
SINGLE_ROOM—
CUSTOM—
Start
View source schema ↗

Start a cleaning run.

Sent to the device
Fields

No payload fields.

Stop
View source schema ↗

Stop the current cleaning run.

Sent to the device
Fields

No payload fields.

Attributes

Cleaning Mode
View source schema ↗

The cleaning mode the vacuum is set to.

Fields
valuestringRequired

Robot vacuum cleaning mode

port1/systems/zero/capability-interfaces/robotic-vacuum-cleaner v1.0: attributes cleaning-mode: possible enum values for value
ValueMeaning
AUTOSelect the operating mode automatically.
SPOT—
EDGE—
SINGLE_ROOM—
CUSTOM—
Operational State
View source schema ↗

The vacuum's current operational state, such as cleaning, docked or returning to its dock.

Fields
valuestringRequired

Operational state of a device. RETURNING_TO_DOCK means a robot is driving back to its dock; DOCKED means it is on the dock and not charging; DOCK_MAINTENANCE means it is on the dock while the dock services it (emptying the dust bin, washing or drying the mop), and it does not start cleaning until that finishes.

Allowed values: STOPPED, RUNNING, PAUSED, ERROR, CHARGING, DOCKED, RETURNING_TO_DOCK, DOCK_MAINTENANCE.

Configuration

View source schema ↗
Fields
supportedCleaningModesarray<string>

Supported cleaning modes

supportsSchedulingboolean

Whether the vacuum supports scheduling

Default: false

supportsRoomCleaningboolean

Whether the vacuum accepts clean-room for rooms it declares CAN_CONTROL on. Vacuums that omit it do not advertise clean-room.

Default: false

supportsMultiRoomCleaningboolean

Whether clean-room accepts more than one room in one request. When false, more than one groupId is rejected with MULTI_ROOM_UNSUPPORTED before dispatch.

Default: false

Providers & personal data

Calendar Provider

v1.0
port1/systems/zero/capability-interfaces/calendar-provider

Calendar providers list events from a connected calendar. Use the returned events to give an assistant schedule context or build an automation around an upcoming appointment.

Messages

List Events
View source schema ↗

Request to list events from a calendar provider

Sent to the device
Fields

No payload fields.

List Events Response
View source schema ↗

Response containing a list of events from a calendar provider

Sent by the device
Fields
eventsarray<CalendarEvent>Required

Contacts Provider

v1.0
port1/systems/zero/capability-interfaces/contacts-provider

Contacts providers list contacts from a connected account. Use the returned records to give an assistant the contact information available to your integration.

Messages

List Contacts
View source schema ↗

Request to list contacts from a contacts provider

Sent to the device
Fields

No payload fields.

List Contacts Response
View source schema ↗

Response containing a list of contacts from a contacts provider

Sent by the device
Fields
contactsarray<Contact>Required

Filesystem Provider

v1.0

Messages

Delete File
View source schema ↗

Delete file.

Sent to the device
Fields
fileIdstringRequired

Provider identifier for the file.

minLength: 1

Delete File Response
View source schema ↗

The provider confirmed deletion of the requested file.

Sent by the device
Fields
(payload)FilesystemProviderInterfaceDeleteFileResponseMessage

The provider confirmed deletion of the requested file.

Download File
View source schema ↗

Download file.

Sent to the device
Fields
fileIdstringRequired

Provider identifier for the file.

minLength: 1

Download File Response
View source schema ↗

Download file response.

Sent by the device
Fields
uristringRequired

Provider URL for downloading the file.

format: "uri"

expiresAtstring

Expiration of the download URL, if supplied by the provider.

format: "date-time"

List Albums
View source schema ↗

Request to list photo albums from a filesystem provider

Sent to the device
Fields
cursorstring

Opaque cursor for the next page; omitted when there are no further results.

maxResultsinteger

Maximum number of items to return.

minimum: 1

maximum: 1000

List Albums Response
View source schema ↗

Response containing a list of photo albums from a filesystem provider

Sent by the device
Fields
albumsarray<PhotoAlbum>Required
nextCursorstring

Opaque cursor for the next page; omitted when there are no further results.

List Folder
View source schema ↗

Request to list files and folders from a filesystem provider

Sent to the device
Fields
folderIdstring

Optional folder ID to list contents of. Defaults to root if omitted.

cursorstring

Opaque cursor for the next page; omitted when there are no further results.

maxResultsinteger

Maximum number of items to return.

minimum: 1

maximum: 1000

List Folder Response
View source schema ↗

Response containing a list of files and folders from a filesystem provider

Sent by the device
Fields
folderIdstring

Current folder identifier, including the provider root when returned. Use it as a destination for upload or move.

itemsarray<StorageItem>Required
nextCursorstring

Opaque cursor for the next page; omitted when there are no further results.

Move File
View source schema ↗

Move one selected file into a folder without overwriting another item. The response returns the new selection for download or further operations.

Sent to the device
Fields
fileIdstringRequired

File selection copied from the current folder listing.

minLength: 1

folderIdstringRequired

Destination folder identifier copied from this provider listing.

minLength: 1

Move File Response
View source schema ↗

Verified file selection after the operation; use this fileId for subsequent reads or writes.

Sent by the device
Fields
fileIdstringRequired

minLength: 1

Rename File
View source schema ↗

Rename a selected file without overwriting an existing name. Inspect the result and re-list before retrying an uncertain write.

Sent to the device
Fields
fileIdstringRequired

File selection copied from the current folder listing.

minLength: 1

namestringRequired

New file name, including its extension, without path separators.

minLength: 1

Rename File Response
View source schema ↗

Verified file selection after the operation; use this fileId for subsequent reads or writes.

Sent by the device
Fields
fileIdstringRequired

minLength: 1

Upload File
View source schema ↗

Upload file.

Sent to the device
Fields
folderIdstringRequired

Destination folder identifier.

minLength: 1

namestringRequired

File name.

minLength: 1

mimeTypestringRequired

File MIME type.

minLength: 1

datastringRequired

Base64 encoded file content, at most 10 MiB decoded.

format: "byte"

maxLength: 13981016

pattern: "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"

Upload File Response
View source schema ↗

Upload file response.

Sent by the device
Fields
fileIdstringRequired

Provider identifier of the uploaded file.

minLength: 1

Reminders Provider

v1.0
port1/systems/zero/capability-interfaces/reminders-provider

Reminder providers list reminders from a connected account. Use the returned items to give an assistant task context or display an existing reminder list.

Messages

Create Reminder
View source schema ↗

Create a reminder in a discovered list. Creation is sent once; refresh before retrying an uncertain result.

Sent to the device
Fields
listIdstringRequired

Discovered list identifier.

minLength: 1

titlestringRequired

Reminder title.

minLength: 1

notesstring
dueDatestring

Exact due instant in RFC3339 with an explicit UTC offset. Omitted on undated reminders.

format: "date-time"

timeZonestring

IANA time zone, for example America/Los_Angeles. Defaults to UTC for newly dated reminders.

allDayboolean

Whether the supplied due date represents an all-day reminder.

Create Reminder Response
View source schema ↗

The provider accepted the reminder change.

Sent by the device
Fields
reminderReminderRequired

A reminder and its current provider revision for guarded edits.

Delete Reminder
View source schema ↗

Soft-delete a reminder using its last observed revision.

Sent to the device
Fields
reminderIdstringRequired

Reminder identifier.

minLength: 1

revisionstringRequired

Revision from the latest listing.

minLength: 1

Delete Reminder Response
View source schema ↗

The provider accepted soft deletion of the reminder.

Sent by the device
Fields
(payload)RemindersProviderInterfaceDeleteReminderResponseMessage

The provider accepted soft deletion of the reminder.

List Reminders
View source schema ↗

List reminder lists and their reminders. Omit listId to enumerate all lists.

Sent to the device
Fields
listIdstring

List identifier from a previous listing.

minLength: 1

includeCompletedboolean

Default: false

cursorstring

Opaque next-page cursor.

maxResultsinteger

minimum: 1

maximum: 1000

List Reminders Response
View source schema ↗

Reminder lists and one bounded page of reminders.

Sent by the device
Fields
reminderListsarray<ReminderList>Required
remindersarray<Reminder>Required
nextCursorstring
Update Reminder
View source schema ↗

Edit a reminder using its last observed revision; omitted fields are preserved.

Sent to the device
Fields
reminderIdstringRequired

Reminder identifier.

minLength: 1

revisionstringRequired

Revision from the latest listing.

minLength: 1

titlestring

Replacement title.

minLength: 1

notesstring
completedboolean
dueDatestring

Exact due instant in RFC3339 with an explicit UTC offset. Omitted on undated reminders.

format: "date-time"

timeZonestring

IANA time zone, for example America/Los_Angeles. Defaults to UTC for newly dated reminders.

allDayboolean

Whether the supplied due date represents an all-day reminder.

clearDueDateboolean

Set true to remove the due date. Cannot be combined with dueDate.

Update Reminder Response
View source schema ↗

The provider accepted the reminder change.

Sent by the device
Fields
reminderReminderRequired

A reminder and its current provider revision for guarded edits.

Device discovery & access

Authorization

v1.0
port1/systems/zero/capability-interfaces/authorization

Authorization connects an integration to an account and keeps its credentials up to date. Use token refresh and authorization reports to follow the connection as it changes.

Messages

Authorization Established
View source schema ↗

The authorization established message is sent to a plugin to indicate that the plugin has been installed and authorized for a principal

Sent by the device
Fields
authlinkIdstringRequired

The id of the authorized link between the principal and the plugin

portosAccessTokenstringRequired

The access token of the authorization link representing the principala as understood by port OS

pluginAccessTokenstring

The access token of the authorization link representing the principal as understood by the plugin

Authorization Update Report
View source schema ↗

Report refreshed credentials for an authorization, including the new access token, refresh token and expiry time.

Sent by the device
Fields
secretIdstring

The id of the secret to update

authlinkIdstring

The id of the auth link to update

refreshTokenstringRequired

The refresh token to refresh

accessTokenstringRequired

The access token to refresh

customMetadataobject

Custom metadata to attach to the authorization update report

expiryTimeintegerRequired

The expiry time in seconds from current time

format: "int64"

Refresh Tokens
View source schema ↗

Ask the authorization to exchange a refresh token for a new access token.

Sent to the device
Fields
refreshTokenstring

The refresh token to refresh

Authorization Requirements

v1.0
port1/systems/zero/capability-interfaces/authorization-requirements

Authorization requirements declare credentials needed by specific endpoint operations. Customers save, replace or remove their camera pattern in endpoint settings; encrypted endpoint state supplies it automatically to permitted camera requests. Query configuration status without retrieving the credential. Never ask for a pattern in chat or include it in RTC payloads.

Messages

Authorization Status
View source schema ↗

Redacted saved authorization status. Contains no pattern, PIN or ciphertext.

Sent by the device
Fields
requirementIdstringRequired
statusstringRequired

Allowed values: MISSING, CONFIGURED, NEEDS_UPDATE.

Query Authorization
View source schema ↗

Read configuration status without retrieving any saved value.

Sent to the device
Fields
requirementIdstringRequired

minLength: 1

maxLength: 64

Remove Authorization
View source schema ↗

Remove a saved endpoint authorization value. Requires endpoint settings permission; camera access will require configuration again.

Sent to the device
Fields
requirementIdstringRequired

minLength: 1

maxLength: 64

Set Authorization
View source schema ↗

Set or replace an encrypted endpoint authorization value. Requires endpoint settings permission. Roborock patterns use positions 1–9 in drawing order. Never include this message or its value in public history or diagnostics.

Sent to the device
Fields
requirementIdstringRequired

minLength: 1

maxLength: 64

valuestringRequired

writeOnly: true

minLength: 1

maxLength: 128

Configuration

View source schema ↗
Fields
requirementsarray<EndpointAuthorizationRequirement>Required

Control Route Groups Provider

v1.0
port1/systems/zero/capability-interfaces/control-route-groups-provider

Control route groups organize several routes into a group. Create a group with its member routes or delete a group your integration no longer needs.

Messages

Create Group
View source schema ↗

Request to delete a group based on its group ID.

Sent to the device
Fields
pluginGroupRouteIdstring

The plugin group route ID to delete.

memberRouteIdsarray<string>

The IDs of the routes that should exist in the group.

Delete Group
View source schema ↗

Request to delete a group based on its group ID.

Sent to the device
Fields
pluginGroupRouteIdstring

The plugin group route ID to delete.

Control Routes Provider

v1.0
port1/systems/zero/capability-interfaces/control-routes-provider

Control route providers carry dispatch results and attribute reports between an integration and Port OS. Use them to report acknowledgements, errors, deferred responses, and batches of messages.

Messages

Acknowledged
View source schema ↗

Response to acknowledge a message was dispatched, it confirms that a message was dispatched, but not necessarily that it did anything. Consider this to happen on any infrared based device (TV remotes), where no ack is feasible.

Sent by the device
Fields

No payload fields.

Attribute Report
View source schema ↗

Response to report attributes of a control route

Sent by the device
Fields
itemsarray<ControlRouteItem>Required
Batch Message Dispatch
View source schema ↗

Request to dispatch a batch of messages to a control route sent from port OS to the control routes provider

Sent to the device
Fields
itemsBatchMessageItemRequired

A batch message dispatch item

Deferred Response
View source schema ↗

Response to acknowledge a message was dispatched, it confirms that a message was dispatched, and that a confirmation of the result will be sent later on. We generate this message when the device is expected to respond some time later on, and we need to wait for the result. For the default behavior, we expect to wait up to a minute to handle low powered devices.

Sent by the device
Fields

No payload fields.

Error Dispatch
View source schema ↗

Response to acknowledge a message was dispatched, it confirms that a message was dispatched, and that the result was not successful.

Sent by the device
Fields
errorDispatchError

An error from a dispatch operation

Report Attributes
View source schema ↗

Request to report attributes of a control route sent from port OS to the control routes provider

Sent to the device
Fields
itemsarray<ControlRouteReportItem>Required
Successful Dispatch
View source schema ↗

Response to acknowledge a message was successfully dispatched, it confirms that a message was dispatched, and that the result was successful.

Sent by the device
Fields

No payload fields.

Endpoint Registry

v1.0
port1/systems/zero/capability-interfaces/endpoint-registry

Configuration for Port OS endpoint registry lifecycle notifications

Messages

Endpoint Updated
View source schema ↗

Port OS emitted a durable endpoint metadata or enablement change. Delivery is best effort.

Sent by the device
Fields
endpointIdstringRequired

Full Port OS endpoint identifier.

namestringRequired

Current endpoint name.

typestringRequired

Current ontological endpoint type.

enablementstringRequired

Whether Port OS permits messages to be sent to this endpoint.

Allowed values: ENABLED, DISABLED.

Route Discovery

v1.0
port1/systems/zero/capability-interfaces/route-discovery

Route discovery reports the control routes available to an integration. Use its group commands to name a group or update the routes that belong to it.

Messages

Add Group Route Members
View source schema ↗

Request to add members to a group route

Sent to the device
Fields
groupRouteIdstringRequired

The ID of the group route to add members to

memberPluginRouteIdsarray<string>Required

List of plugin route IDs to add as members to the group route

Discover Routes
View source schema ↗

Request to discover routes

Sent to the device
Fields

No payload fields.

Remove Group Route Members
View source schema ↗

Request to remove members from a group route

Sent to the device
Fields
groupRouteIdstringRequired

The ID of the group route to remove members from

memberPluginRouteIdsarray<string>Required

List of plugin route IDs to remove as members from the group route

Route Discovery Report
View source schema ↗

Provider report of discovered routes, group routes and their relationships. Plugin and auth-link identity come from the authenticated publisher context.

Sent by the device
Fields
pluginIdentityClientIdentity

Identifies a plugin client by its type and unique identifier.

authLinkIdentitystring

The ID of the auth link the routes were discovered for.

routesarray<ProviderDiscoveredRoute>
groupRoutesarray<GroupRoute>
relationshipsarray<PluginDiscoveryRelationship>
Set Group Route Name
View source schema ↗

Request to set the name of a group route

Sent to the device
Fields
groupRouteIdstringRequired

The ID of the group route to set the name for

nameRouteNameRequired

A route name value

Automation & notifications

Flows

v1.0
port1/systems/zero/capability-interfaces/flows

Flows run automations that can be initiated, paused, resumed, or terminated. Follow completion and acknowledgement events to understand the progress of a run.

Messages

Complete
View source schema ↗

Reports that a flow has finished, with its completion status, result and duration.

Sent by the device
Fields
flowIdstringRequired

Unique identifier for the completed flow

minLength: 1

statusstringRequired

Completion status

Allowed values: SUCCESS, FAILURE, CANCELLED, TIMEOUT.

resultobject

Flow execution result

durationnumberRequired

Total execution duration in milliseconds

minimum: 0

metadataobject

Additional metadata for the completion

Initiate
View source schema ↗

Start a flow, optionally with parameters, a priority and a timeout.

Sent to the device
Fields
flowIdstringRequired

Unique identifier for the flow to initiate

minLength: 1

flowTypestringRequired

Type of flow to initiate

minLength: 1

parametersobjectRequired

Flow initiation parameters

prioritystring

Flow execution priority

Default: NORMAL

Allowed values: LOW, NORMAL, HIGH, URGENT.

timeoutinteger

Flow timeout in milliseconds

minimum: 1000

maximum: 86400000

metadataobject

Additional metadata for the flow initiation

Message Ack
View source schema ↗

Reports that a flow message was acknowledged.

Sent by the device
Fields
flowIdstringRequired

Unique identifier for the flow

minLength: 1

messageIdstringRequired

Unique identifier for the acknowledged message

minLength: 1

ackIdstringRequired

Unique identifier for this acknowledgment

minLength: 1

statusstringRequired

Acknowledgment status

Allowed values: RECEIVED, PROCESSED, FAILED.

timestampstringRequired

Acknowledgment timestamp

format: "date-time"

metadataobject

Additional metadata for the acknowledgment

Message Unack
View source schema ↗

Reports that a flow message was not acknowledged, with the reason.

Sent by the device
Fields
flowIdstringRequired

Unique identifier for the flow

minLength: 1

messageIdstringRequired

Unique identifier for the unacknowledged message

minLength: 1

unackIdstringRequired

Unique identifier for this unacknowledgment

minLength: 1

reasonstringRequired

Reason for unacknowledgment

Allowed values: TIMEOUT, ERROR, REJECTED, DUPLICATE.

timestampstringRequired

Unacknowledgment timestamp

format: "date-time"

metadataobject

Additional metadata for the unacknowledgment

Node Complete
View source schema ↗

Reports that a node in a flow has finished, with its status, result and the nodes that run next.

Sent by the device
Fields
flowIdstringRequired

Unique identifier for the flow

minLength: 1

nodeIdstringRequired

Unique identifier for the completed node

minLength: 1

statusstringRequired

Node completion status

Allowed values: SUCCESS, FAILURE, SKIPPED, TIMEOUT.

resultobject

Node execution result

durationnumberRequired

Node execution duration in milliseconds

minimum: 0

nextNodesarray<string>

List of next node IDs to execute

metadataobject

Additional metadata for the node completion

Pause
View source schema ↗

Pause a running flow, optionally creating a checkpoint first.

Sent to the device
Fields
flowIdstringRequired

Unique identifier for the flow to pause

minLength: 1

reasonstringRequired

Reason for pausing

Allowed values: USER_REQUEST, RESOURCE_LIMIT, WAITING, MAINTENANCE.

checkpointboolean

Whether to create a checkpoint before pausing

Default: true

metadataobject

Additional metadata for the pause operation

Resume
View source schema ↗

Resume a paused flow, optionally from a checkpoint.

Sent to the device
Fields
flowIdstringRequired

Unique identifier for the flow to resume

minLength: 1

checkpointIdstring

Checkpoint identifier to resume from (optional)

metadataobject

Additional metadata for the resume operation

Terminate
View source schema ↗

Stop a running flow, optionally gracefully and with cleanup.

Sent to the device
Fields
flowIdstringRequired

Unique identifier for the flow to terminate

minLength: 1

reasonstringRequired

Reason for termination

Allowed values: USER_REQUEST, ERROR, TIMEOUT, COMPLETION, CANCELLATION.

gracefulboolean

Whether to perform graceful termination

Default: true

cleanupboolean

Whether to perform cleanup operations

Default: true

metadataobject

Additional metadata for the termination

Configuration

View source schema ↗
Fields
maxFlowIdLengthintegerRequired

Maximum length for flow IDs

Default: 100

maxNodeIdLengthintegerRequired

Maximum length for node IDs

Default: 100

supportedStatusesFlowSupportedStatusesRequired

Supported flow status categories

supportedReasonsFlowSupportedReasonsRequired

Supported flow reason categories

supportedPrioritiesarray<string>Required

Supported flow priorities

defaultTimeoutintegerRequired

Default flow timeout in milliseconds

Default: 300000

maxTimeoutintegerRequired

Maximum flow timeout in milliseconds

Default: 86400000

checkpointEnabledbooleanRequired

Whether checkpoints are enabled

Default: true

Notification

v1.0
port1/systems/zero/capability-interfaces/notification

Notifications can be triggered immediately or scheduled. Follow notification events to connect the delivery flow to the rest of an integration.

Messages

Notification
View source schema ↗

A notification delivered to target users, with its title, body, priority and delivery channels.

Sent by the device
Fields
notificationIdstring

Unique identifier for this notification

minLength: 1

titlestringRequired

Notification title

minLength: 1

maxLength: 200

bodystringRequired

Notification body text

minLength: 1

maxLength: 2000

prioritystring

Notification priority level

Allowed values: LOW, NORMAL, HIGH, URGENT.

channelsarray<string>

Channels to send the notification through

targetUsersarray<string>

List of user IDs to send the notification to

metadataobject

Additional metadata for the notification

Notification Schedule
View source schema ↗

Schedule recurring or future push notifications.

Sent to the device
Fields
scheduleIdstringRequired

Unique identifier for this schedule

minLength: 1

notificationNotificationPayloadRequired

Notification payload information

scheduleNotificationScheduleRequired

Schedule configuration for notifications

enabledboolean

Whether the schedule is enabled

Default: true

Notification Trigger
View source schema ↗

Trigger a push notification immediately or when conditions are met.

Sent to the device
Fields
triggerIdstringRequired

Unique identifier for this trigger

minLength: 1

triggerTypestringRequired

Type of trigger

Allowed values: IMMEDIATE, SCHEDULED, EVENT_BASED, CONDITION_BASED.

notificationNotificationPayloadRequired

Notification payload information

conditionsNotificationConditions

Conditions for triggering a notification

scheduleNotificationSchedule

Schedule configuration for notifications