10142 lines
337 KiB
JSON
10142 lines
337 KiB
JSON
{
|
|
"swaggerDoc": {
|
|
"openapi": "3.0.0",
|
|
"info": {
|
|
"title": "Valetudo REST API",
|
|
"version": "2023.05.0"
|
|
},
|
|
"tags": [
|
|
{
|
|
"name": "Valetudo",
|
|
"description": "Valetudo management API"
|
|
},
|
|
{
|
|
"name": "ValetudoEvents",
|
|
"description": "Valetudo Events"
|
|
},
|
|
{
|
|
"name": "Robot",
|
|
"description": "Robot API"
|
|
},
|
|
{
|
|
"name": "System",
|
|
"description": "System API"
|
|
},
|
|
{
|
|
"name": "MQTT",
|
|
"description": "MQTT Controller API"
|
|
},
|
|
{
|
|
"name": "NetworkAdvertisement",
|
|
"description": "Network Advertisement Manager API"
|
|
},
|
|
{
|
|
"name": "NTP",
|
|
"description": "NTP Client API"
|
|
},
|
|
{
|
|
"name": "Timers",
|
|
"description": "Timers API"
|
|
},
|
|
{
|
|
"name": "Updater",
|
|
"description": "Update Valetudo using Valetudo"
|
|
},
|
|
{
|
|
"name": "BasicControlCapability",
|
|
"description": "Basic control capability"
|
|
},
|
|
{
|
|
"name": "FanSpeedControlCapability",
|
|
"description": "Fan speed control capability"
|
|
},
|
|
{
|
|
"name": "WaterUsageControlCapability",
|
|
"description": "Water usage control capability"
|
|
},
|
|
{
|
|
"name": "WifiConfigurationCapability",
|
|
"description": "Wi-Fi configuration capability"
|
|
},
|
|
{
|
|
"name": "WifiScanCapability",
|
|
"description": "Wi-Fi scan capability"
|
|
},
|
|
{
|
|
"name": "ZoneCleaningCapability",
|
|
"description": "Zone cleaning capability"
|
|
},
|
|
{
|
|
"name": "MapSegmentationCapability",
|
|
"description": "Map segment cleaning capability"
|
|
},
|
|
{
|
|
"name": "ManualControlCapability",
|
|
"description": "Manual control capability"
|
|
},
|
|
{
|
|
"name": "DoNotDisturbCapability",
|
|
"description": "Do-not-disturb configuration capability"
|
|
},
|
|
{
|
|
"name": "ConsumableMonitoringCapability",
|
|
"description": "Consumable monitoring capability"
|
|
},
|
|
{
|
|
"name": "LocateCapability",
|
|
"description": "Robot locate capability"
|
|
},
|
|
{
|
|
"name": "CarpetModeControlCapability",
|
|
"description": "Carpet mode settings capability"
|
|
},
|
|
{
|
|
"name": "MapResetCapability",
|
|
"description": "Map reset capability"
|
|
},
|
|
{
|
|
"name": "MapSegmentEditCapability",
|
|
"description": "Map segment edit capability"
|
|
},
|
|
{
|
|
"name": "MapSegmentRenameCapability",
|
|
"description": "Map segment rename capability"
|
|
},
|
|
{
|
|
"name": "SpeakerTestCapability",
|
|
"description": "Speaker test capability"
|
|
},
|
|
{
|
|
"name": "SpeakerVolumeControlCapability",
|
|
"description": "Speaker volume control capability"
|
|
},
|
|
{
|
|
"name": "VoicePackManagementCapability",
|
|
"description": "Voice pack management capability"
|
|
},
|
|
{
|
|
"name": "CombinedVirtualRestrictionsCapability",
|
|
"description": "Combined virtual restrictions capability"
|
|
},
|
|
{
|
|
"name": "PendingMapChangeHandlingCapability",
|
|
"description": "Pending map change handling capability"
|
|
},
|
|
{
|
|
"name": "MappingPassCapability",
|
|
"description": "Mapping pass capability"
|
|
},
|
|
{
|
|
"name": "KeyLockCapability",
|
|
"description": "Key lock capability"
|
|
}
|
|
],
|
|
"components": {
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"201": {
|
|
"description": "Created"
|
|
},
|
|
"202": {
|
|
"description": "Accepted"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
},
|
|
"403": {
|
|
"description": "Forbidden"
|
|
},
|
|
"404": {
|
|
"description": "Not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
},
|
|
"parameters": {},
|
|
"securitySchemes": {
|
|
"BasicAuth": {
|
|
"type": "http",
|
|
"scheme": "basic"
|
|
}
|
|
},
|
|
"schemas": {
|
|
"CoordinateDTO": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"ScheduleTimeDTO": {
|
|
"type": "object",
|
|
"properties": {
|
|
"hour": {
|
|
"type": "integer"
|
|
},
|
|
"minute": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"Configuration": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"embedded": {
|
|
"type": "boolean",
|
|
"description": "Whether or not Valetudo is running on the robot itself.\nDetermines if we can do FS access and more."
|
|
},
|
|
"robot": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"implementation"
|
|
],
|
|
"properties": {
|
|
"implementation": {
|
|
"type": "string",
|
|
"description": "The name of the implementation that should be used.\nUse \"auto\" to autodetect when embedded."
|
|
},
|
|
"implementationSpecificConfig": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"webserver": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"port",
|
|
"basicAuth"
|
|
],
|
|
"properties": {
|
|
"port": {
|
|
"type": "number"
|
|
},
|
|
"basicAuth": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"username",
|
|
"password"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"blockExternalAccess": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"mqtt": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"connection",
|
|
"identity",
|
|
"customizations",
|
|
"interfaces"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"connection": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"host",
|
|
"port"
|
|
],
|
|
"properties": {
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535
|
|
},
|
|
"tls": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"ca": {
|
|
"type": "string",
|
|
"description": "This may optionally contain a CA certificate as a multi-line string. Filesystem paths are not supported."
|
|
},
|
|
"ignoreCertificateErrors": {
|
|
"type": "boolean",
|
|
"description": "This option might be required when using a self-signed cert. Note that you will be exposing yourself to MITM attacks."
|
|
}
|
|
}
|
|
},
|
|
"authentication": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"credentials": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"clientCertificate": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"certificate": {
|
|
"type": "string",
|
|
"description": "The full certificate as a multi-line string. Filesystem paths are not supported."
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The full key as a multi-line string. Filesystem paths are not supported."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"identity": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"identifier": {
|
|
"type": "string",
|
|
"description": "The desired machine-readable name of the robot. Used in MQTT topics. Defaults to the auto-generated machine ID"
|
|
}
|
|
}
|
|
},
|
|
"customizations": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"topicPrefix": {
|
|
"type": "string",
|
|
"description": "You can override the default \"valetudo\" mqtt topic prefix if you e.g. prefer to group all your mqtt stuff by rooms/floors/protocols"
|
|
},
|
|
"provideMapData": {
|
|
"type": "boolean",
|
|
"description": "If for some reason you're not interested in receiving map data via MQTT, you can disable that here."
|
|
}
|
|
}
|
|
},
|
|
"interfaces": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"homie",
|
|
"homeassistant"
|
|
],
|
|
"properties": {
|
|
"homie": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"addICBINVMapProperty",
|
|
"cleanAttributesOnShutdown"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"addICBINVMapProperty": {
|
|
"type": "boolean",
|
|
"description": "If true, adds Homie definitions for ICBINV's PNG map topic as that's not possible to add in ICBINV itself."
|
|
},
|
|
"cleanAttributesOnShutdown": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"homeassistant": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"cleanAutoconfOnShutdown"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"cleanAutoconfOnShutdown": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"optionalExposedCapabilities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ConsumableMonitoringCapability",
|
|
"CurrentStatisticsCapability",
|
|
"TotalStatisticsCapability",
|
|
"SpeakerVolumeControlCapability"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ntpClient": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"server",
|
|
"port",
|
|
"interval",
|
|
"timeout"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"server": {
|
|
"type": "string",
|
|
"description": "Can be either an IP or a Domain Name"
|
|
},
|
|
"port": {
|
|
"type": "number"
|
|
},
|
|
"interval": {
|
|
"type": "number",
|
|
"description": "NTP Sync Interval in Milliseconds"
|
|
},
|
|
"timeout": {
|
|
"type": "number",
|
|
"description": "NTP Sync Timeout in Milliseconds"
|
|
}
|
|
}
|
|
},
|
|
"networkAdvertisement": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"updater": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"updateProvider": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"github",
|
|
"github_nightly"
|
|
]
|
|
},
|
|
"implementationSpecificConfig": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"timers": {
|
|
"type": "object"
|
|
},
|
|
"logLevel": {
|
|
"type": "string",
|
|
"enum": [
|
|
"trace",
|
|
"debug",
|
|
"info",
|
|
"warn",
|
|
"error"
|
|
]
|
|
},
|
|
"debug": {
|
|
"type": "object"
|
|
},
|
|
"oobe": {
|
|
"type": "object",
|
|
"description": "Everything related to the Out-of-box experience",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"welcomeDialogDismissed": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"valetudo": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"customizations": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"friendlyName": {
|
|
"type": "string",
|
|
"pattern": "^[a-zA-Z0-9 -]{0,24}$",
|
|
"description": "An optional user-defined friendly name for the Valetudo instance"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"_version": {
|
|
"type": "string",
|
|
"description": "Used for migration purposes"
|
|
}
|
|
}
|
|
},
|
|
"ValetudoCustomizationsDTO": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"friendlyName": {
|
|
"type": "string",
|
|
"pattern": "^[a-zA-Z0-9 -]{0,24}$",
|
|
"description": "An optional user-defined friendly name for the Valetudo instance"
|
|
}
|
|
}
|
|
},
|
|
"MqttConfigDTO": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"connection",
|
|
"identity",
|
|
"customizations",
|
|
"interfaces"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"connection": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"host",
|
|
"port"
|
|
],
|
|
"properties": {
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535
|
|
},
|
|
"tls": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"ca": {
|
|
"type": "string",
|
|
"description": "This may optionally contain a CA certificate as a multi-line string. Filesystem paths are not supported."
|
|
},
|
|
"ignoreCertificateErrors": {
|
|
"type": "boolean",
|
|
"description": "This option might be required when using a self-signed cert. Note that you will be exposing yourself to MITM attacks."
|
|
}
|
|
}
|
|
},
|
|
"authentication": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"credentials": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"clientCertificate": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"certificate": {
|
|
"type": "string",
|
|
"description": "The full certificate as a multi-line string. Filesystem paths are not supported."
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The full key as a multi-line string. Filesystem paths are not supported."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"identity": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"identifier": {
|
|
"type": "string",
|
|
"description": "The desired machine-readable name of the robot. Used in MQTT topics. Defaults to the auto-generated machine ID"
|
|
}
|
|
}
|
|
},
|
|
"customizations": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"topicPrefix": {
|
|
"type": "string",
|
|
"description": "You can override the default \"valetudo\" mqtt topic prefix if you e.g. prefer to group all your mqtt stuff by rooms/floors/protocols"
|
|
},
|
|
"provideMapData": {
|
|
"type": "boolean",
|
|
"description": "If for some reason you're not interested in receiving map data via MQTT, you can disable that here."
|
|
}
|
|
}
|
|
},
|
|
"interfaces": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"homie",
|
|
"homeassistant"
|
|
],
|
|
"properties": {
|
|
"homie": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"addICBINVMapProperty",
|
|
"cleanAttributesOnShutdown"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"addICBINVMapProperty": {
|
|
"type": "boolean",
|
|
"description": "If true, adds Homie definitions for ICBINV's PNG map topic as that's not possible to add in ICBINV itself."
|
|
},
|
|
"cleanAttributesOnShutdown": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"homeassistant": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"cleanAutoconfOnShutdown"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"cleanAutoconfOnShutdown": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"optionalExposedCapabilities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ConsumableMonitoringCapability",
|
|
"CurrentStatisticsCapability",
|
|
"TotalStatisticsCapability",
|
|
"SpeakerVolumeControlCapability"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"BasicAuthConfigDTO": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"username",
|
|
"password"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"NTPClientConfigDTO": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"server",
|
|
"port",
|
|
"interval",
|
|
"timeout"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"server": {
|
|
"type": "string",
|
|
"description": "Can be either an IP or a Domain Name"
|
|
},
|
|
"port": {
|
|
"type": "number"
|
|
},
|
|
"interval": {
|
|
"type": "number",
|
|
"description": "NTP Sync Interval in Milliseconds"
|
|
},
|
|
"timeout": {
|
|
"type": "number",
|
|
"description": "NTP Sync Timeout in Milliseconds"
|
|
}
|
|
}
|
|
},
|
|
"NetworkAdvertisementConfigDTO": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"UpdaterConfigDTO": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"updateProvider": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"type"
|
|
],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"github",
|
|
"github_nightly"
|
|
]
|
|
},
|
|
"implementationSpecificConfig": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ValetudoTimer": {
|
|
"type": "object",
|
|
"description": "Everything time-related is in UTC",
|
|
"required": [
|
|
"enabled",
|
|
"dow",
|
|
"hour",
|
|
"minute",
|
|
"action"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"label": {
|
|
"type": "string",
|
|
"pattern": "^.{0,24}$",
|
|
"description": "An optional user-defined label for the timer"
|
|
},
|
|
"dow": {
|
|
"type": "array",
|
|
"description": "Day of Week\nSunday = 0, Monday = 1, ... Saturday = 6",
|
|
"items": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 6
|
|
}
|
|
},
|
|
"hour": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 23
|
|
},
|
|
"minute": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 59
|
|
},
|
|
"action": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"full_cleanup",
|
|
"segment_cleanup"
|
|
]
|
|
},
|
|
"params": {
|
|
"type": "object",
|
|
"description": "These vary depending on the Timer Type.",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"zone_id": {
|
|
"type": "string"
|
|
},
|
|
"segment_ids": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"goto_id": {
|
|
"type": "string"
|
|
},
|
|
"iterations": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"custom_order": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"pre_actions": {
|
|
"type": "array",
|
|
"description": "Actions to run before the main action (e.g. set fan speed to x)",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"fan_speed_control",
|
|
"water_usage_control",
|
|
"operation_mode_control"
|
|
]
|
|
},
|
|
"params": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"Attribute": {
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"subType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"SerializableEntity": {
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"LineMapEntity": {
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"virtual_wall"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"MapEntity": {
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"MapLayer": {
|
|
"description": "A map layer is an array of pixels in a 2d space",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"floor",
|
|
"wall",
|
|
"segment"
|
|
]
|
|
},
|
|
"pixels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"dimensions": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "object",
|
|
"properties": {
|
|
"min": {
|
|
"type": "number"
|
|
},
|
|
"max": {
|
|
"type": "number"
|
|
},
|
|
"mid": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"y": {
|
|
"type": "object",
|
|
"properties": {
|
|
"min": {
|
|
"type": "number"
|
|
},
|
|
"max": {
|
|
"type": "number"
|
|
},
|
|
"mid": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"PathMapEntity": {
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"path",
|
|
"predicted_path"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"PointMapEntity": {
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"charger_location",
|
|
"robot_position",
|
|
"go_to_target"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"PolygonMapEntity": {
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"active_zone",
|
|
"no_go_area",
|
|
"no_mop_area"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ValetudoMap": {
|
|
"type": "object",
|
|
"properties": {
|
|
"size": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pixelSize": {
|
|
"type": "integer"
|
|
},
|
|
"layers": {
|
|
"type": "array",
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"description": "A map layer is an array of pixels in a 2d space",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"floor",
|
|
"wall",
|
|
"segment"
|
|
]
|
|
},
|
|
"pixels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"dimensions": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "object",
|
|
"properties": {
|
|
"min": {
|
|
"type": "number"
|
|
},
|
|
"max": {
|
|
"type": "number"
|
|
},
|
|
"mid": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"y": {
|
|
"type": "object",
|
|
"properties": {
|
|
"min": {
|
|
"type": "number"
|
|
},
|
|
"max": {
|
|
"type": "number"
|
|
},
|
|
"mid": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"entities": {
|
|
"type": "array",
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"charger_location",
|
|
"robot_position",
|
|
"go_to_target"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"virtual_wall"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"path",
|
|
"predicted_path"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"active_zone",
|
|
"no_go_area",
|
|
"no_mop_area"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"metaData": {
|
|
"type": "object",
|
|
"properties": {
|
|
"version": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ValetudoDataPoint": {
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"description": "Datetime in ISO8601 format"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"time",
|
|
"area",
|
|
"count"
|
|
]
|
|
},
|
|
"value": {
|
|
"type": "number"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"ValetudoDNDConfiguration": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"start": {
|
|
"type": "object",
|
|
"properties": {
|
|
"hour": {
|
|
"type": "integer"
|
|
},
|
|
"minute": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"end": {
|
|
"type": "object",
|
|
"properties": {
|
|
"hour": {
|
|
"type": "integer"
|
|
},
|
|
"minute": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"ValetudoGoToLocation": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"coordinates": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"ValetudoMapSegment": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"ValetudoMapSnapshot": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"timestamp": {
|
|
"type": "string",
|
|
"description": "Datetime in ISO8601 format"
|
|
},
|
|
"map": {
|
|
"type": "object",
|
|
"properties": {
|
|
"size": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pixelSize": {
|
|
"type": "integer"
|
|
},
|
|
"layers": {
|
|
"type": "array",
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"description": "A map layer is an array of pixels in a 2d space",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"floor",
|
|
"wall",
|
|
"segment"
|
|
]
|
|
},
|
|
"pixels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"dimensions": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "object",
|
|
"properties": {
|
|
"min": {
|
|
"type": "number"
|
|
},
|
|
"max": {
|
|
"type": "number"
|
|
},
|
|
"mid": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"y": {
|
|
"type": "object",
|
|
"properties": {
|
|
"min": {
|
|
"type": "number"
|
|
},
|
|
"max": {
|
|
"type": "number"
|
|
},
|
|
"mid": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"entities": {
|
|
"type": "array",
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"charger_location",
|
|
"robot_position",
|
|
"go_to_target"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"virtual_wall"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"path",
|
|
"predicted_path"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"active_zone",
|
|
"no_go_area",
|
|
"no_mop_area"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"metaData": {
|
|
"type": "object",
|
|
"properties": {
|
|
"version": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"ValetudoRestrictedZone": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"regular",
|
|
"mop"
|
|
]
|
|
},
|
|
"points": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pA": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pB": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pC": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pD": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ValetudoVirtualRestrictions": {
|
|
"type": "object",
|
|
"properties": {
|
|
"virtualWalls": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"points": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pA": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pB": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"restrictedZones": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"regular",
|
|
"mop"
|
|
]
|
|
},
|
|
"points": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pA": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pB": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pC": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pD": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ValetudoVirtualWall": {
|
|
"type": "object",
|
|
"properties": {
|
|
"points": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pA": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pB": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ValetudoVoicePackOperationStatus": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"idle",
|
|
"downloading",
|
|
"installing",
|
|
"error"
|
|
]
|
|
},
|
|
"progress": {
|
|
"type": "number",
|
|
"description": "Percentage"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"ValetudoWifiConfiguration": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ssid": {
|
|
"type": "string",
|
|
"description": "Wireless network name"
|
|
},
|
|
"credentials": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"typeSpecificSettings": {
|
|
"type": "object",
|
|
"description": "Settings depending on type, for example WPA preshared key"
|
|
}
|
|
}
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"ValetudoWifiNetwork": {
|
|
"type": "object",
|
|
"properties": {
|
|
"bssid": {
|
|
"type": "string"
|
|
},
|
|
"details": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ssid": {
|
|
"type": "string",
|
|
"description": "Wireless network name"
|
|
},
|
|
"signal": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"ValetudoWifiStatus": {
|
|
"type": "object",
|
|
"properties": {
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [
|
|
"connected",
|
|
"not_connected",
|
|
"unknown"
|
|
]
|
|
},
|
|
"details": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ssid": {
|
|
"type": "string",
|
|
"description": "Wireless network name"
|
|
},
|
|
"bssid": {
|
|
"type": "string"
|
|
},
|
|
"downspeed": {
|
|
"type": "number"
|
|
},
|
|
"upspeed": {
|
|
"type": "number"
|
|
},
|
|
"signal": {
|
|
"type": "number"
|
|
},
|
|
"ips": {
|
|
"type": "array",
|
|
"description": "IP addresses",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"frequency": {
|
|
"type": "string",
|
|
"enum": [
|
|
"2.4ghz",
|
|
"5ghz"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"ValetudoZone": {
|
|
"type": "object",
|
|
"properties": {
|
|
"points": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pA": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pB": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pC": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pD": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"ValetudoNTPClientDisabledState": {
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"ValetudoNTPClientEnabledState": {
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"ValetudoNTPClientErrorState": {
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"unknown",
|
|
"transient",
|
|
"name_resolution",
|
|
"connection",
|
|
"persisting"
|
|
]
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ValetudoNTPClientState": {
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ValetudoNTPClientSyncedState": {
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"offset": {
|
|
"type": "number",
|
|
"description": "The offset of the previous time on sync"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ValetudoUpdaterApplyPendingState": {
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"version": {
|
|
"type": "string",
|
|
"description": "The valetudo version to be installed"
|
|
},
|
|
"releaseTimestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The release date as found in the manifest"
|
|
},
|
|
"downloadPath": {
|
|
"type": "string",
|
|
"description": "The path the new binary was downloaded to"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ValetudoUpdaterApprovalPendingState": {
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"version": {
|
|
"type": "string",
|
|
"description": "The valetudo version to be installed"
|
|
},
|
|
"releaseTimestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The release date as found in the manifest"
|
|
},
|
|
"changelog": {
|
|
"type": "string",
|
|
"description": "The changelog as provided by the github api. Github flavoured Markdown"
|
|
},
|
|
"downloadUrl": {
|
|
"type": "string",
|
|
"description": "The url from which the binary will be downloaded from"
|
|
},
|
|
"expectedHash": {
|
|
"type": "string",
|
|
"description": "The expected sha256sum of the downloaded binary"
|
|
},
|
|
"downloadPath": {
|
|
"type": "string",
|
|
"description": "The path the new binary is downloaded to"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ValetudoUpdaterDisabledState": {
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {}
|
|
}
|
|
]
|
|
},
|
|
"ValetudoUpdaterDownloadingState": {
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"version": {
|
|
"type": "string",
|
|
"description": "The valetudo version to be installed"
|
|
},
|
|
"releaseTimestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The release date as found in the manifest"
|
|
},
|
|
"downloadUrl": {
|
|
"type": "string",
|
|
"description": "The url from which the binary will be downloaded from"
|
|
},
|
|
"expectedHash": {
|
|
"type": "string",
|
|
"description": "The expected sha256sum of the downloaded binary"
|
|
},
|
|
"downloadPath": {
|
|
"type": "string",
|
|
"description": "The path the new binary is downloaded to"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ValetudoUpdaterErrorState": {
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"unknown",
|
|
"not_embedded",
|
|
"not_docked",
|
|
"not_writable",
|
|
"not_enough_space",
|
|
"download_failed",
|
|
"no_matching_binary",
|
|
"missing_manifest",
|
|
"invalid_manifest",
|
|
"invalid_checksum"
|
|
]
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ValetudoUpdaterIdleState": {
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"currentVersion": {
|
|
"type": "string",
|
|
"description": "The currently running valetudo version"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ValetudoUpdaterNoUpdateRequiredState": {
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"currentVersion": {
|
|
"type": "string",
|
|
"description": "The currently running valetudo version"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ValetudoUpdaterState": {
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"AttachmentStateAttribute": {
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"subType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"dustbin",
|
|
"watertank",
|
|
"mop"
|
|
]
|
|
},
|
|
"attached": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"AttachmentStateAttributeType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"dustbin",
|
|
"watertank",
|
|
"mop"
|
|
]
|
|
},
|
|
"BatteryStateAttribute": {
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"subType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"level": {
|
|
"type": "number"
|
|
},
|
|
"flag": {
|
|
"type": "string",
|
|
"enum": [
|
|
"none",
|
|
"charging",
|
|
"discharging",
|
|
"charged"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"ConsumableStateAttribute": {
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"subType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"remaining": {
|
|
"type": "object",
|
|
"properties": {
|
|
"value": {
|
|
"type": "number"
|
|
},
|
|
"unit": {
|
|
"type": "string",
|
|
"enum": [
|
|
"percent",
|
|
"minutes"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"PresetSelectionStateAttribute": {
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"subType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"fan_speed",
|
|
"water_grade",
|
|
"operation_mode"
|
|
]
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"enum": [
|
|
"off",
|
|
"min",
|
|
"low",
|
|
"medium",
|
|
"high",
|
|
"max",
|
|
"turbo",
|
|
"custom",
|
|
"vacuum",
|
|
"mop",
|
|
"vacuum_and_mop"
|
|
]
|
|
},
|
|
"customValue": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"StateAttribute": {
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"subType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"ValetudoManualControlMovementCommandType": {
|
|
"type": "string",
|
|
"enum": [
|
|
"forward",
|
|
"backward",
|
|
"rotate_clockwise",
|
|
"rotate_counterclockwise"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"security": [
|
|
{
|
|
"BasicAuth": []
|
|
}
|
|
],
|
|
"paths": {
|
|
"/api/v2/robot/capabilities": {
|
|
"get": {
|
|
"tags": [
|
|
"Robot"
|
|
],
|
|
"summary": "Get robot supported capabilities",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"description": "Capability class name"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/mqtt/status": {
|
|
"get": {
|
|
"tags": [
|
|
"MQTT"
|
|
],
|
|
"summary": "Get MQTTController status",
|
|
"responses": {
|
|
"200": {
|
|
"description": "The MQTTControllers current status.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [
|
|
"init",
|
|
"ready",
|
|
"disconnected",
|
|
"lost",
|
|
"alert"
|
|
]
|
|
},
|
|
"stats": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"messages": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"count": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"received": {
|
|
"type": "number"
|
|
},
|
|
"sent": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"bytes": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"received": {
|
|
"type": "number"
|
|
},
|
|
"sent": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"connection": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"connects": {
|
|
"type": "number"
|
|
},
|
|
"disconnects": {
|
|
"type": "number"
|
|
},
|
|
"reconnects": {
|
|
"type": "number"
|
|
},
|
|
"errors": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/mqtt/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"MQTT"
|
|
],
|
|
"summary": "Get MQTT properties such as the default config values",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"defaults": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"identity": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"identifier": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"customizations": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"topicPrefix": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"optionalExposableCapabilities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/networkadvertisement/config": {
|
|
"get": {
|
|
"tags": [
|
|
"NetworkAdvertisement"
|
|
],
|
|
"summary": "Get NetworkAdvertisementManager configuration",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"NetworkAdvertisement"
|
|
],
|
|
"summary": "Update NetworkAdvertisementManager configuration",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/networkadvertisement/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"NetworkAdvertisement"
|
|
],
|
|
"summary": "Get NetworkAdvertisement properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"port": {
|
|
"type": "number"
|
|
},
|
|
"zeroconfHostname": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/ntpclient/state": {
|
|
"get": {
|
|
"tags": [
|
|
"NTP"
|
|
],
|
|
"summary": "Get NTPClient state",
|
|
"responses": {
|
|
"200": {
|
|
"description": "The NTPClients current state.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"oneOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"unknown",
|
|
"transient",
|
|
"name_resolution",
|
|
"connection",
|
|
"persisting"
|
|
]
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"offset": {
|
|
"type": "number",
|
|
"description": "The offset of the previous time on sync"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/ntpclient/config": {
|
|
"get": {
|
|
"tags": [
|
|
"NTP"
|
|
],
|
|
"summary": "Get NTPClient configuration",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"server",
|
|
"port",
|
|
"interval",
|
|
"timeout"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"server": {
|
|
"type": "string",
|
|
"description": "Can be either an IP or a Domain Name"
|
|
},
|
|
"port": {
|
|
"type": "number"
|
|
},
|
|
"interval": {
|
|
"type": "number",
|
|
"description": "NTP Sync Interval in Milliseconds"
|
|
},
|
|
"timeout": {
|
|
"type": "number",
|
|
"description": "NTP Sync Timeout in Milliseconds"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"NTP"
|
|
],
|
|
"summary": "Update NTPClient configuration",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"server",
|
|
"port",
|
|
"interval",
|
|
"timeout"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"server": {
|
|
"type": "string",
|
|
"description": "Can be either an IP or a Domain Name"
|
|
},
|
|
"port": {
|
|
"type": "number"
|
|
},
|
|
"interval": {
|
|
"type": "number",
|
|
"description": "NTP Sync Interval in Milliseconds"
|
|
},
|
|
"timeout": {
|
|
"type": "number",
|
|
"description": "NTP Sync Timeout in Milliseconds"
|
|
}
|
|
}
|
|
},
|
|
"examples": {
|
|
"custom": {
|
|
"description": "Set custom NTP server",
|
|
"value": {
|
|
"enabled": true,
|
|
"server": "ntp_host_or_ip",
|
|
"port": 123,
|
|
"interval": 7200000,
|
|
"timeout": 10000
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot": {
|
|
"get": {
|
|
"tags": [
|
|
"Robot"
|
|
],
|
|
"summary": "Get robot info",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"manufacturer": {
|
|
"type": "string"
|
|
},
|
|
"modelName": {
|
|
"type": "string"
|
|
},
|
|
"modelDetails": {
|
|
"type": "object",
|
|
"properties": {
|
|
"supportedAttachments": {
|
|
"type": "array",
|
|
"description": "Attachments that are detected and reported by the robot",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"dustbin",
|
|
"watertank",
|
|
"mop"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"implementation": {
|
|
"type": "string",
|
|
"description": "Valetudo robot implementation in use"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"Robot"
|
|
],
|
|
"summary": "Get robot-specific properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "A flat key/value object containing 0..* properties that are specific to this robot.\n\nThis can for example be the firmware version.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/state": {
|
|
"get": {
|
|
"tags": [
|
|
"Robot"
|
|
],
|
|
"summary": "Get robot state",
|
|
"description": "Retrieve the robot state.\n\nNote! If the map is available, trying this out on Swagger will likely **use lots of RAM and hang your\nbrowser tab.**\n",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"attributes": {
|
|
"type": "array",
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"subType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"dustbin",
|
|
"watertank",
|
|
"mop"
|
|
]
|
|
},
|
|
"attached": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"subType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"level": {
|
|
"type": "number"
|
|
},
|
|
"flag": {
|
|
"type": "string",
|
|
"enum": [
|
|
"none",
|
|
"charging",
|
|
"discharging",
|
|
"charged"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"subType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"remaining": {
|
|
"type": "object",
|
|
"properties": {
|
|
"value": {
|
|
"type": "number"
|
|
},
|
|
"unit": {
|
|
"type": "string",
|
|
"enum": [
|
|
"percent",
|
|
"minutes"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"subType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"fan_speed",
|
|
"water_grade",
|
|
"operation_mode"
|
|
]
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"enum": [
|
|
"off",
|
|
"min",
|
|
"low",
|
|
"medium",
|
|
"high",
|
|
"max",
|
|
"turbo",
|
|
"custom",
|
|
"vacuum",
|
|
"mop",
|
|
"vacuum_and_mop"
|
|
]
|
|
},
|
|
"customValue": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"map": {
|
|
"type": "object",
|
|
"properties": {
|
|
"size": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pixelSize": {
|
|
"type": "integer"
|
|
},
|
|
"layers": {
|
|
"type": "array",
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"description": "A map layer is an array of pixels in a 2d space",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"floor",
|
|
"wall",
|
|
"segment"
|
|
]
|
|
},
|
|
"pixels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"dimensions": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "object",
|
|
"properties": {
|
|
"min": {
|
|
"type": "number"
|
|
},
|
|
"max": {
|
|
"type": "number"
|
|
},
|
|
"mid": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"y": {
|
|
"type": "object",
|
|
"properties": {
|
|
"min": {
|
|
"type": "number"
|
|
},
|
|
"max": {
|
|
"type": "number"
|
|
},
|
|
"mid": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"entities": {
|
|
"type": "array",
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"charger_location",
|
|
"robot_position",
|
|
"go_to_target"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"virtual_wall"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"path",
|
|
"predicted_path"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"active_zone",
|
|
"no_go_area",
|
|
"no_mop_area"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"metaData": {
|
|
"type": "object",
|
|
"properties": {
|
|
"version": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/state/attributes": {
|
|
"get": {
|
|
"tags": [
|
|
"Robot"
|
|
],
|
|
"summary": "Get robot state attributes",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"subType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"dustbin",
|
|
"watertank",
|
|
"mop"
|
|
]
|
|
},
|
|
"attached": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"subType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"level": {
|
|
"type": "number"
|
|
},
|
|
"flag": {
|
|
"type": "string",
|
|
"enum": [
|
|
"none",
|
|
"charging",
|
|
"discharging",
|
|
"charged"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"subType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"remaining": {
|
|
"type": "object",
|
|
"properties": {
|
|
"value": {
|
|
"type": "number"
|
|
},
|
|
"unit": {
|
|
"type": "string",
|
|
"enum": [
|
|
"percent",
|
|
"minutes"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"subType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"fan_speed",
|
|
"water_grade",
|
|
"operation_mode"
|
|
]
|
|
},
|
|
"value": {
|
|
"type": "string",
|
|
"enum": [
|
|
"off",
|
|
"min",
|
|
"low",
|
|
"medium",
|
|
"high",
|
|
"max",
|
|
"turbo",
|
|
"custom",
|
|
"vacuum",
|
|
"mop",
|
|
"vacuum_and_mop"
|
|
]
|
|
},
|
|
"customValue": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/state/map": {
|
|
"get": {
|
|
"tags": [
|
|
"Robot"
|
|
],
|
|
"summary": "Get robot map",
|
|
"description": "Retrieve the robot map.\n\nNote! If the map is available, trying this out on Swagger will likely **use lots of RAM and hang your\nbrowser tab.**\n",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"size": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pixelSize": {
|
|
"type": "integer"
|
|
},
|
|
"layers": {
|
|
"type": "array",
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"description": "A map layer is an array of pixels in a 2d space",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"floor",
|
|
"wall",
|
|
"segment"
|
|
]
|
|
},
|
|
"pixels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"dimensions": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "object",
|
|
"properties": {
|
|
"min": {
|
|
"type": "number"
|
|
},
|
|
"max": {
|
|
"type": "number"
|
|
},
|
|
"mid": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"y": {
|
|
"type": "object",
|
|
"properties": {
|
|
"min": {
|
|
"type": "number"
|
|
},
|
|
"max": {
|
|
"type": "number"
|
|
},
|
|
"mid": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"entities": {
|
|
"type": "array",
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"charger_location",
|
|
"robot_position",
|
|
"go_to_target"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"virtual_wall"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"path",
|
|
"predicted_path"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"active_zone",
|
|
"no_go_area",
|
|
"no_mop_area"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"metaData": {
|
|
"type": "object",
|
|
"properties": {
|
|
"version": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/state/sse": {
|
|
"get": {
|
|
"tags": [
|
|
"Robot"
|
|
],
|
|
"summary": "Get robot state (SSE events)",
|
|
"description": "Retrieve the robot state.\n\nNote! This endpoint provides SSE events. Swagger does not support it.\n",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"text/event-stream": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/state/attributes/sse": {
|
|
"get": {
|
|
"tags": [
|
|
"Robot"
|
|
],
|
|
"summary": "Get robot state attributes (SSE events)",
|
|
"description": "Retrieve the robot state attributes.\n\nNote! This endpoint provides SSE events. Swagger does not support it.\n",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"text/event-stream": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/state/map/sse": {
|
|
"get": {
|
|
"tags": [
|
|
"Robot"
|
|
],
|
|
"summary": "Get robot map (SSE events)",
|
|
"description": "Retrieve the robot map\n\nNote! This endpoint provides SSE events. Swagger does not support it.\n",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"text/event-stream": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"size": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pixelSize": {
|
|
"type": "integer"
|
|
},
|
|
"layers": {
|
|
"type": "array",
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"description": "A map layer is an array of pixels in a 2d space",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"floor",
|
|
"wall",
|
|
"segment"
|
|
]
|
|
},
|
|
"pixels": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"dimensions": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "object",
|
|
"properties": {
|
|
"min": {
|
|
"type": "number"
|
|
},
|
|
"max": {
|
|
"type": "number"
|
|
},
|
|
"mid": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"y": {
|
|
"type": "object",
|
|
"properties": {
|
|
"min": {
|
|
"type": "number"
|
|
},
|
|
"max": {
|
|
"type": "number"
|
|
},
|
|
"mid": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"entities": {
|
|
"type": "array",
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"charger_location",
|
|
"robot_position",
|
|
"go_to_target"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"virtual_wall"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"path",
|
|
"predicted_path"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"description": "Map Entities are everything that is expressed with coordinates",
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"points": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "number"
|
|
},
|
|
"minItems": 2
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"active_zone",
|
|
"no_go_area",
|
|
"no_mop_area"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"metaData": {
|
|
"type": "object",
|
|
"properties": {
|
|
"version": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/system/host/info": {
|
|
"get": {
|
|
"tags": [
|
|
"System"
|
|
],
|
|
"summary": "Information about the underlying host valetudo is running on",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"hostname": {
|
|
"type": "string"
|
|
},
|
|
"arch": {
|
|
"type": "string"
|
|
},
|
|
"mem": {
|
|
"type": "object",
|
|
"properties": {
|
|
"total": {
|
|
"type": "number",
|
|
"description": "The total amount of memory of the host in bytes"
|
|
},
|
|
"free": {
|
|
"type": "number",
|
|
"description": "The amount of free memory of the host (free + buffers + caches) in bytes"
|
|
},
|
|
"valetudo_current": {
|
|
"type": "number",
|
|
"description": "The current Valetudo RSS in bytes"
|
|
},
|
|
"valetudo_max": {
|
|
"type": "number",
|
|
"description": "The maximum observed RSS of the running Valetudo instances in bytes"
|
|
}
|
|
}
|
|
},
|
|
"uptime": {
|
|
"type": "number",
|
|
"description": "Host uptime in seconds"
|
|
},
|
|
"load": {
|
|
"type": "object",
|
|
"properties": {
|
|
"1": {
|
|
"type": "number",
|
|
"description": "Normalized system load in the last minute"
|
|
},
|
|
"5": {
|
|
"type": "number",
|
|
"description": "Normalized system load in the last 5 minutes"
|
|
},
|
|
"15": {
|
|
"type": "number",
|
|
"description": "Normalized system load in the last 15 minutes"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/system/runtime/info": {
|
|
"get": {
|
|
"tags": [
|
|
"System"
|
|
],
|
|
"summary": "Information about the underlying host valetudo is running on",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"uptime": {
|
|
"type": "number",
|
|
"description": "The uptime of the currently running Valetudo process in seconds"
|
|
},
|
|
"argv": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"execArgv": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"execPath": {
|
|
"type": "string"
|
|
},
|
|
"uid": {
|
|
"type": "number",
|
|
"description": "UID of the running Valetudo process"
|
|
},
|
|
"gid": {
|
|
"type": "number",
|
|
"description": "GID of the running Valetudo process"
|
|
},
|
|
"pid": {
|
|
"type": "number",
|
|
"description": "PID of the running Valetudo process"
|
|
},
|
|
"versions": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
},
|
|
"env": {
|
|
"type": "object",
|
|
"additionalProperties": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/timers": {
|
|
"get": {
|
|
"tags": [
|
|
"Timers"
|
|
],
|
|
"summary": "Get all timers",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"description": "Describing this structure requires OpenAPI 3.1 support in Swagger UI"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"tags": [
|
|
"Timers"
|
|
],
|
|
"summary": "Add new Timer",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"description": "Everything time-related is in UTC",
|
|
"required": [
|
|
"enabled",
|
|
"dow",
|
|
"hour",
|
|
"minute",
|
|
"action"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"label": {
|
|
"type": "string",
|
|
"pattern": "^.{0,24}$",
|
|
"description": "An optional user-defined label for the timer"
|
|
},
|
|
"dow": {
|
|
"type": "array",
|
|
"description": "Day of Week\nSunday = 0, Monday = 1, ... Saturday = 6",
|
|
"items": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 6
|
|
}
|
|
},
|
|
"hour": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 23
|
|
},
|
|
"minute": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 59
|
|
},
|
|
"action": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"full_cleanup",
|
|
"segment_cleanup"
|
|
]
|
|
},
|
|
"params": {
|
|
"type": "object",
|
|
"description": "These vary depending on the Timer Type.",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"zone_id": {
|
|
"type": "string"
|
|
},
|
|
"segment_ids": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"goto_id": {
|
|
"type": "string"
|
|
},
|
|
"iterations": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"custom_order": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"pre_actions": {
|
|
"type": "array",
|
|
"description": "Actions to run before the main action (e.g. set fan speed to x)",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"fan_speed_control",
|
|
"water_usage_control",
|
|
"operation_mode_control"
|
|
]
|
|
},
|
|
"params": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"examples": {
|
|
"full_cleanup": {
|
|
"description": "A timer scheduling a full cleanup every monday at 09:00 UTC",
|
|
"value": {
|
|
"enabled": true,
|
|
"dow": [
|
|
1
|
|
],
|
|
"hour": 9,
|
|
"minute": 0,
|
|
"action": {
|
|
"type": "full_cleanup",
|
|
"params": {}
|
|
}
|
|
}
|
|
},
|
|
"segment_cleanup": {
|
|
"description": "A timer scheduling a cleanup of first segment 7 and then 15 two times every weekday at 08:15 UTC",
|
|
"value": {
|
|
"enabled": true,
|
|
"dow": [
|
|
1,
|
|
2,
|
|
3,
|
|
4,
|
|
5
|
|
],
|
|
"hour": 8,
|
|
"minute": 15,
|
|
"action": {
|
|
"type": "segment_cleanup",
|
|
"params": {
|
|
"segment_ids": [
|
|
"7",
|
|
"15"
|
|
],
|
|
"custom_order": true,
|
|
"iterations": 2
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/timers/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"Timers"
|
|
],
|
|
"summary": "Get timer by ID",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "id",
|
|
"required": true,
|
|
"description": "Timer UUID",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"description": "Everything time-related is in UTC",
|
|
"required": [
|
|
"enabled",
|
|
"dow",
|
|
"hour",
|
|
"minute",
|
|
"action"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"label": {
|
|
"type": "string",
|
|
"pattern": "^.{0,24}$",
|
|
"description": "An optional user-defined label for the timer"
|
|
},
|
|
"dow": {
|
|
"type": "array",
|
|
"description": "Day of Week\nSunday = 0, Monday = 1, ... Saturday = 6",
|
|
"items": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 6
|
|
}
|
|
},
|
|
"hour": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 23
|
|
},
|
|
"minute": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 59
|
|
},
|
|
"action": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"full_cleanup",
|
|
"segment_cleanup"
|
|
]
|
|
},
|
|
"params": {
|
|
"type": "object",
|
|
"description": "These vary depending on the Timer Type.",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"zone_id": {
|
|
"type": "string"
|
|
},
|
|
"segment_ids": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"goto_id": {
|
|
"type": "string"
|
|
},
|
|
"iterations": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"custom_order": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"pre_actions": {
|
|
"type": "array",
|
|
"description": "Actions to run before the main action (e.g. set fan speed to x)",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"fan_speed_control",
|
|
"water_usage_control",
|
|
"operation_mode_control"
|
|
]
|
|
},
|
|
"params": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not found"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"tags": [
|
|
"Timers"
|
|
],
|
|
"summary": "Delete Timer by ID",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "id",
|
|
"required": true,
|
|
"description": "Timer UUID",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"404": {
|
|
"description": "Not found"
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Timers"
|
|
],
|
|
"summary": "Edit existing Timer by ID",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "id",
|
|
"required": true,
|
|
"description": "Timer UUID",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"description": "Everything time-related is in UTC",
|
|
"required": [
|
|
"enabled",
|
|
"dow",
|
|
"hour",
|
|
"minute",
|
|
"action"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"label": {
|
|
"type": "string",
|
|
"pattern": "^.{0,24}$",
|
|
"description": "An optional user-defined label for the timer"
|
|
},
|
|
"dow": {
|
|
"type": "array",
|
|
"description": "Day of Week\nSunday = 0, Monday = 1, ... Saturday = 6",
|
|
"items": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 6
|
|
}
|
|
},
|
|
"hour": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 23
|
|
},
|
|
"minute": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 59
|
|
},
|
|
"action": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"full_cleanup",
|
|
"segment_cleanup"
|
|
]
|
|
},
|
|
"params": {
|
|
"type": "object",
|
|
"description": "These vary depending on the Timer Type.",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"zone_id": {
|
|
"type": "string"
|
|
},
|
|
"segment_ids": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"goto_id": {
|
|
"type": "string"
|
|
},
|
|
"iterations": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"custom_order": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"pre_actions": {
|
|
"type": "array",
|
|
"description": "Actions to run before the main action (e.g. set fan speed to x)",
|
|
"items": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"fan_speed_control",
|
|
"water_usage_control",
|
|
"operation_mode_control"
|
|
]
|
|
},
|
|
"params": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
},
|
|
"404": {
|
|
"description": "Not found"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/timers/{id}/action": {
|
|
"put": {
|
|
"tags": [
|
|
"Timers"
|
|
],
|
|
"summary": "Execute an action on an existing timer",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "id",
|
|
"required": true,
|
|
"description": "Timer UUID",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"execute_now"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
},
|
|
"404": {
|
|
"description": "Not found"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/timers/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"Timers"
|
|
],
|
|
"summary": "Get various timer-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"supportedActions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"full_cleanup",
|
|
"segment_cleanup"
|
|
]
|
|
}
|
|
},
|
|
"supportedPreActions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"fan_speed_control",
|
|
"water_usage_control",
|
|
"operation_mode_control"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/updater/state": {
|
|
"get": {
|
|
"tags": [
|
|
"Updater"
|
|
],
|
|
"summary": "Get Updater state",
|
|
"responses": {
|
|
"200": {
|
|
"description": "The Updaters current state.",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"oneOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"currentVersion": {
|
|
"type": "string",
|
|
"description": "The currently running valetudo version"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"unknown",
|
|
"not_embedded",
|
|
"not_docked",
|
|
"not_writable",
|
|
"not_enough_space",
|
|
"download_failed",
|
|
"no_matching_binary",
|
|
"missing_manifest",
|
|
"invalid_manifest",
|
|
"invalid_checksum"
|
|
]
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"version": {
|
|
"type": "string",
|
|
"description": "The valetudo version to be installed"
|
|
},
|
|
"releaseTimestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The release date as found in the manifest"
|
|
},
|
|
"changelog": {
|
|
"type": "string",
|
|
"description": "The changelog as provided by the github api. Github flavoured Markdown"
|
|
},
|
|
"downloadUrl": {
|
|
"type": "string",
|
|
"description": "The url from which the binary will be downloaded from"
|
|
},
|
|
"expectedHash": {
|
|
"type": "string",
|
|
"description": "The expected sha256sum of the downloaded binary"
|
|
},
|
|
"downloadPath": {
|
|
"type": "string",
|
|
"description": "The path the new binary is downloaded to"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"version": {
|
|
"type": "string",
|
|
"description": "The valetudo version to be installed"
|
|
},
|
|
"releaseTimestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The release date as found in the manifest"
|
|
},
|
|
"downloadUrl": {
|
|
"type": "string",
|
|
"description": "The url from which the binary will be downloaded from"
|
|
},
|
|
"expectedHash": {
|
|
"type": "string",
|
|
"description": "The expected sha256sum of the downloaded binary"
|
|
},
|
|
"downloadPath": {
|
|
"type": "string",
|
|
"description": "The path the new binary is downloaded to"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"version": {
|
|
"type": "string",
|
|
"description": "The valetudo version to be installed"
|
|
},
|
|
"releaseTimestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The release date as found in the manifest"
|
|
},
|
|
"downloadPath": {
|
|
"type": "string",
|
|
"description": "The path the new binary was downloaded to"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "The time this state was entered"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"currentVersion": {
|
|
"type": "string",
|
|
"description": "The currently running valetudo version"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/updater": {
|
|
"put": {
|
|
"tags": [
|
|
"Updater"
|
|
],
|
|
"summary": "Request and execute an update of Valetudo",
|
|
"description": "Please do keep in mind that this is a potentially dangerous operation.",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"check",
|
|
"download",
|
|
"apply"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/updater/config": {
|
|
"get": {
|
|
"tags": [
|
|
"Updater"
|
|
],
|
|
"summary": "Get Updater configuration",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"updateProvider": {
|
|
"type": "string",
|
|
"enum": [
|
|
"github",
|
|
"github_nightly"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Updater"
|
|
],
|
|
"summary": "Update Updater configuration",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"updateProvider": {
|
|
"type": "string",
|
|
"enum": [
|
|
"github",
|
|
"github_nightly"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"examples": {
|
|
"release": {
|
|
"description": "Use the Github Release update provider",
|
|
"value": {
|
|
"updateProvider": "github"
|
|
}
|
|
},
|
|
"nightly": {
|
|
"description": "Use the Github Nightly update provider",
|
|
"value": {
|
|
"updateProvider": "github_nightly"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/events": {
|
|
"get": {
|
|
"tags": [
|
|
"ValetudoEvents"
|
|
],
|
|
"summary": "Get all ValetudoEvents that are currently stored",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/events/{id}": {
|
|
"get": {
|
|
"tags": [
|
|
"ValetudoEvents"
|
|
],
|
|
"summary": "Get ValetudoEvent by ID",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "id",
|
|
"required": true,
|
|
"description": "ValetudoEvent ID",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/events/{id}/interact": {
|
|
"put": {
|
|
"tags": [
|
|
"ValetudoEvents"
|
|
],
|
|
"summary": "Interact with a ValetudoEvent",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "id",
|
|
"required": true,
|
|
"description": "ValetudoEvent ID",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"interaction": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ok",
|
|
"yes",
|
|
"no",
|
|
"reset"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/valetudo": {
|
|
"get": {
|
|
"tags": [
|
|
"Valetudo"
|
|
],
|
|
"summary": "Get basic Valetudo info",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"embedded": {
|
|
"type": "boolean"
|
|
},
|
|
"systemId": {
|
|
"type": "string"
|
|
},
|
|
"welcomeDialogDismissed": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/valetudo/action": {
|
|
"put": {
|
|
"tags": [
|
|
"Valetudo"
|
|
],
|
|
"summary": "Interact with Valetudo",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"dismissWelcomeDialog",
|
|
"restoreDefaultConfiguration"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"examples": {
|
|
"dismiss_welcome_dialog": {
|
|
"description": "Dismiss the OOBE welcome dialog",
|
|
"value": {
|
|
"action": "dismissWelcomeDialog"
|
|
}
|
|
},
|
|
"restore_default_configuration": {
|
|
"description": "Restore the default configuration",
|
|
"value": {
|
|
"action": "restoreDefaultConfiguration"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Not found"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/valetudo/version": {
|
|
"get": {
|
|
"tags": [
|
|
"Valetudo"
|
|
],
|
|
"summary": "Get Valetudo version",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"release": {
|
|
"type": "string"
|
|
},
|
|
"commit": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/valetudo/log/content": {
|
|
"get": {
|
|
"tags": [
|
|
"Valetudo"
|
|
],
|
|
"summary": "Get full log",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"text/plain": {
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/valetudo/log/content/sse": {
|
|
"get": {
|
|
"tags": [
|
|
"Valetudo"
|
|
],
|
|
"summary": "Get new log lines (SSE events)",
|
|
"description": "Retrieve new log lines.\n\nNote! This endpoint provides SSE events. Swagger does not support it.\nNote! This endpoint provides raw text, do not try to decode it as JSON.",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"text/event-stream": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/valetudo/log/level": {
|
|
"get": {
|
|
"tags": [
|
|
"Valetudo"
|
|
],
|
|
"summary": "Get log level",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"current": {
|
|
"type": "string"
|
|
},
|
|
"presets": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Valetudo"
|
|
],
|
|
"summary": "Set log level",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"level": {
|
|
"type": "string",
|
|
"enum": [
|
|
"trace",
|
|
"debug",
|
|
"info",
|
|
"warn",
|
|
"error"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"description": "Log level retrieved from GET presets",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/valetudo/config/interfaces/mqtt": {
|
|
"get": {
|
|
"tags": [
|
|
"Valetudo"
|
|
],
|
|
"summary": "Get MQTT configuration",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"connection",
|
|
"identity",
|
|
"customizations",
|
|
"interfaces"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"connection": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"host",
|
|
"port"
|
|
],
|
|
"properties": {
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535
|
|
},
|
|
"tls": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"ca": {
|
|
"type": "string",
|
|
"description": "This may optionally contain a CA certificate as a multi-line string. Filesystem paths are not supported."
|
|
},
|
|
"ignoreCertificateErrors": {
|
|
"type": "boolean",
|
|
"description": "This option might be required when using a self-signed cert. Note that you will be exposing yourself to MITM attacks."
|
|
}
|
|
}
|
|
},
|
|
"authentication": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"credentials": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"clientCertificate": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"certificate": {
|
|
"type": "string",
|
|
"description": "The full certificate as a multi-line string. Filesystem paths are not supported."
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The full key as a multi-line string. Filesystem paths are not supported."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"identity": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"identifier": {
|
|
"type": "string",
|
|
"description": "The desired machine-readable name of the robot. Used in MQTT topics. Defaults to the auto-generated machine ID"
|
|
}
|
|
}
|
|
},
|
|
"customizations": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"topicPrefix": {
|
|
"type": "string",
|
|
"description": "You can override the default \"valetudo\" mqtt topic prefix if you e.g. prefer to group all your mqtt stuff by rooms/floors/protocols"
|
|
},
|
|
"provideMapData": {
|
|
"type": "boolean",
|
|
"description": "If for some reason you're not interested in receiving map data via MQTT, you can disable that here."
|
|
}
|
|
}
|
|
},
|
|
"interfaces": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"homie",
|
|
"homeassistant"
|
|
],
|
|
"properties": {
|
|
"homie": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"addICBINVMapProperty",
|
|
"cleanAttributesOnShutdown"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"addICBINVMapProperty": {
|
|
"type": "boolean",
|
|
"description": "If true, adds Homie definitions for ICBINV's PNG map topic as that's not possible to add in ICBINV itself."
|
|
},
|
|
"cleanAttributesOnShutdown": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"homeassistant": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"cleanAutoconfOnShutdown"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"cleanAutoconfOnShutdown": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"optionalExposedCapabilities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ConsumableMonitoringCapability",
|
|
"CurrentStatisticsCapability",
|
|
"TotalStatisticsCapability",
|
|
"SpeakerVolumeControlCapability"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Valetudo"
|
|
],
|
|
"summary": "Update MQTT configuration",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"connection",
|
|
"identity",
|
|
"customizations",
|
|
"interfaces"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"connection": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"host",
|
|
"port"
|
|
],
|
|
"properties": {
|
|
"host": {
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535
|
|
},
|
|
"tls": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"ca": {
|
|
"type": "string",
|
|
"description": "This may optionally contain a CA certificate as a multi-line string. Filesystem paths are not supported."
|
|
},
|
|
"ignoreCertificateErrors": {
|
|
"type": "boolean",
|
|
"description": "This option might be required when using a self-signed cert. Note that you will be exposing yourself to MITM attacks."
|
|
}
|
|
}
|
|
},
|
|
"authentication": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"credentials": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"clientCertificate": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"certificate": {
|
|
"type": "string",
|
|
"description": "The full certificate as a multi-line string. Filesystem paths are not supported."
|
|
},
|
|
"key": {
|
|
"type": "string",
|
|
"description": "The full key as a multi-line string. Filesystem paths are not supported."
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"identity": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"identifier": {
|
|
"type": "string",
|
|
"description": "The desired machine-readable name of the robot. Used in MQTT topics. Defaults to the auto-generated machine ID"
|
|
}
|
|
}
|
|
},
|
|
"customizations": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"topicPrefix": {
|
|
"type": "string",
|
|
"description": "You can override the default \"valetudo\" mqtt topic prefix if you e.g. prefer to group all your mqtt stuff by rooms/floors/protocols"
|
|
},
|
|
"provideMapData": {
|
|
"type": "boolean",
|
|
"description": "If for some reason you're not interested in receiving map data via MQTT, you can disable that here."
|
|
}
|
|
}
|
|
},
|
|
"interfaces": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"homie",
|
|
"homeassistant"
|
|
],
|
|
"properties": {
|
|
"homie": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"addICBINVMapProperty",
|
|
"cleanAttributesOnShutdown"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"addICBINVMapProperty": {
|
|
"type": "boolean",
|
|
"description": "If true, adds Homie definitions for ICBINV's PNG map topic as that's not possible to add in ICBINV itself."
|
|
},
|
|
"cleanAttributesOnShutdown": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
},
|
|
"homeassistant": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"cleanAutoconfOnShutdown"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"cleanAutoconfOnShutdown": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"optionalExposedCapabilities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"ConsumableMonitoringCapability",
|
|
"CurrentStatisticsCapability",
|
|
"TotalStatisticsCapability",
|
|
"SpeakerVolumeControlCapability"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/valetudo/config/interfaces/http/auth/basic": {
|
|
"get": {
|
|
"tags": [
|
|
"Valetudo"
|
|
],
|
|
"summary": "Get HTTP basic auth configuration",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"username",
|
|
"password"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Valetudo"
|
|
],
|
|
"summary": "Update HTTP basic auth configuration",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"enabled",
|
|
"username",
|
|
"password"
|
|
],
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"username": {
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/valetudo/config/customizations": {
|
|
"get": {
|
|
"tags": [
|
|
"Valetudo"
|
|
],
|
|
"summary": "Get Valetudo customizations",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"friendlyName": {
|
|
"type": "string",
|
|
"pattern": "^[a-zA-Z0-9 -]{0,24}$",
|
|
"description": "An optional user-defined friendly name for the Valetudo instance"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"Valetudo"
|
|
],
|
|
"summary": "Update Valetudo customizations",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"friendlyName": {
|
|
"type": "string",
|
|
"pattern": "^[a-zA-Z0-9 -]{0,24}$",
|
|
"description": "An optional user-defined friendly name for the Valetudo instance"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2": {
|
|
"get": {
|
|
"tags": [
|
|
"Valetudo"
|
|
],
|
|
"summary": "List available API endpoints",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/BasicControlCapability": {
|
|
"put": {
|
|
"tags": [
|
|
"BasicControlCapability"
|
|
],
|
|
"summary": "Basic robot control",
|
|
"description": "Allowed actions:\n\n- `start`\n- `stop`\n- `pause`\n- `home`\n",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"description": "Robot action to perform",
|
|
"enum": [
|
|
"start",
|
|
"stop",
|
|
"pause",
|
|
"home"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"examples": {
|
|
"start": {
|
|
"description": "Start",
|
|
"value": {
|
|
"action": "start"
|
|
}
|
|
},
|
|
"stop": {
|
|
"description": "Stop",
|
|
"value": {
|
|
"action": "stop"
|
|
}
|
|
},
|
|
"pause": {
|
|
"description": "Pause",
|
|
"value": {
|
|
"action": "pause"
|
|
}
|
|
},
|
|
"home": {
|
|
"description": "Home",
|
|
"value": {
|
|
"action": "home"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/BasicControlCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"BasicControlCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/CombinedVirtualRestrictionsCapability": {
|
|
"get": {
|
|
"tags": [
|
|
"CombinedVirtualRestrictionsCapability"
|
|
],
|
|
"summary": "Get virtual restrictions",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"virtualWalls": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"points": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pA": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pB": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"restrictedZones": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"regular",
|
|
"mop"
|
|
]
|
|
},
|
|
"points": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pA": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pB": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pC": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pD": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"CombinedVirtualRestrictionsCapability"
|
|
],
|
|
"summary": "Set virtual restrictions",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"virtualWalls": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"points": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pA": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pB": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"restrictedZones": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"regular",
|
|
"mop"
|
|
]
|
|
},
|
|
"points": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pA": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pB": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pC": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pD": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"examples": {
|
|
"wall_regular_mop": {
|
|
"description": "Set virtual restrictions",
|
|
"value": {
|
|
"virtualWalls": [
|
|
{
|
|
"points": {
|
|
"pA": {
|
|
"x": 3390,
|
|
"y": 3330
|
|
},
|
|
"pB": {
|
|
"x": 3538,
|
|
"y": 3478
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"restrictedZones": [
|
|
{
|
|
"type": "regular",
|
|
"points": {
|
|
"pA": {
|
|
"x": 3175,
|
|
"y": 2670
|
|
},
|
|
"pB": {
|
|
"x": 3350,
|
|
"y": 2670
|
|
},
|
|
"pC": {
|
|
"x": 3350,
|
|
"y": 2925
|
|
},
|
|
"pD": {
|
|
"x": 3175,
|
|
"y": 2925
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "mop",
|
|
"points": {
|
|
"pA": {
|
|
"x": 3140,
|
|
"y": 3415
|
|
},
|
|
"pB": {
|
|
"x": 3290,
|
|
"y": 3415
|
|
},
|
|
"pC": {
|
|
"x": 3290,
|
|
"y": 3565
|
|
},
|
|
"pD": {
|
|
"x": 3140,
|
|
"y": 3565
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/CombinedVirtualRestrictionsCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"CombinedVirtualRestrictionsCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/ConsumableMonitoringCapability": {
|
|
"get": {
|
|
"tags": [
|
|
"ConsumableMonitoringCapability"
|
|
],
|
|
"summary": "Get consumables status",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"allOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"__class": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"subType": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"remaining": {
|
|
"type": "object",
|
|
"properties": {
|
|
"value": {
|
|
"type": "number"
|
|
},
|
|
"unit": {
|
|
"type": "string",
|
|
"enum": [
|
|
"percent",
|
|
"minutes"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"examples": {
|
|
"getConsumablesStatus": {
|
|
"description": "Get the status of the consumables.",
|
|
"value": [
|
|
{
|
|
"__class": "ConsumableStateAttribute",
|
|
"metaData": {},
|
|
"type": "brush",
|
|
"subType": "main",
|
|
"remaining": {
|
|
"value": 123456,
|
|
"unit": "minutes"
|
|
}
|
|
},
|
|
{
|
|
"__class": "ConsumableStateAttribute",
|
|
"metaData": {},
|
|
"type": "brush",
|
|
"subType": "side_right",
|
|
"remaining": {
|
|
"value": 1234,
|
|
"unit": "minutes"
|
|
}
|
|
},
|
|
{
|
|
"__class": "ConsumableStateAttribute",
|
|
"metaData": {},
|
|
"type": "filter",
|
|
"subType": "main",
|
|
"remaining": {
|
|
"value": 5432,
|
|
"unit": "minutes"
|
|
}
|
|
},
|
|
{
|
|
"__class": "ConsumableStateAttribute",
|
|
"metaData": {},
|
|
"type": "sensor",
|
|
"subType": "all",
|
|
"remaining": {
|
|
"value": 123,
|
|
"unit": "minutes"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/ConsumableMonitoringCapability/{type}": {
|
|
"put": {
|
|
"tags": [
|
|
"ConsumableMonitoringCapability"
|
|
],
|
|
"summary": "Reset consumable",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "type",
|
|
"description": "Consumable type",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"reset"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/ConsumableMonitoringCapability/{type}/{sub_type}": {
|
|
"put": {
|
|
"tags": [
|
|
"ConsumableMonitoringCapability"
|
|
],
|
|
"summary": "Reset consumable",
|
|
"parameters": [
|
|
{
|
|
"in": "path",
|
|
"name": "type",
|
|
"description": "Consumable type",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"in": "path",
|
|
"name": "sub_type",
|
|
"description": "Consumable sub-type",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"reset"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/ConsumableMonitoringCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"ConsumableMonitoringCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"availableConsumables": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"subType": {
|
|
"type": "string"
|
|
},
|
|
"unit": {
|
|
"type": "string"
|
|
},
|
|
"maxValue": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/DoNotDisturbCapability": {
|
|
"get": {
|
|
"tags": [
|
|
"DoNotDisturbCapability"
|
|
],
|
|
"summary": "Get do-not-disturb configuration",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"start": {
|
|
"type": "object",
|
|
"properties": {
|
|
"hour": {
|
|
"type": "integer"
|
|
},
|
|
"minute": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"end": {
|
|
"type": "object",
|
|
"properties": {
|
|
"hour": {
|
|
"type": "integer"
|
|
},
|
|
"minute": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"examples": {
|
|
"getTimer": {
|
|
"description": "Get the do not disturb timer configuration",
|
|
"value": {
|
|
"enabled": true,
|
|
"start": {
|
|
"hour": 22,
|
|
"minute": 0
|
|
},
|
|
"end": {
|
|
"hour": 8,
|
|
"minute": 0
|
|
},
|
|
"metaData": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"DoNotDisturbCapability"
|
|
],
|
|
"summary": "Set do-not-disturb configuration",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"start": {
|
|
"type": "object",
|
|
"properties": {
|
|
"hour": {
|
|
"type": "integer"
|
|
},
|
|
"minute": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"end": {
|
|
"type": "object",
|
|
"properties": {
|
|
"hour": {
|
|
"type": "integer"
|
|
},
|
|
"minute": {
|
|
"type": "integer"
|
|
}
|
|
}
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"examples": {
|
|
"setTimer": {
|
|
"description": "Set a do not disturb timer from 22:00 to 06:00",
|
|
"value": {
|
|
"enabled": true,
|
|
"start": {
|
|
"hour": 22,
|
|
"minute": 0
|
|
},
|
|
"end": {
|
|
"hour": 8,
|
|
"minute": 0
|
|
},
|
|
"metaData": {}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/DoNotDisturbCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"DoNotDisturbCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/LocateCapability": {
|
|
"put": {
|
|
"tags": [
|
|
"LocateCapability"
|
|
],
|
|
"summary": "Locate robot",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"locate"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/LocateCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"LocateCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/ManualControlCapability": {
|
|
"get": {
|
|
"tags": [
|
|
"ManualControlCapability"
|
|
],
|
|
"summary": "Get manual control status",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"ManualControlCapability"
|
|
],
|
|
"summary": "Control robot",
|
|
"description": "To perform manual control you must enable manual control mode by sending `action: \"enable\"` (and then\n`disable` when you're done).\n\nOnce in manual control mode you can send movement commands.\n\nThe amount of time taken to perform each movement and the exact movement types depend on the robot\nimplementation.\n",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"enable",
|
|
"disable",
|
|
"move"
|
|
]
|
|
},
|
|
"movementCommand": {
|
|
"type": "string",
|
|
"enum": [
|
|
"forward",
|
|
"backward",
|
|
"rotate_clockwise",
|
|
"rotate_counterclockwise"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"examples": {
|
|
"enable manual control": {
|
|
"description": "Enabling manual control",
|
|
"value": {
|
|
"action": "enable"
|
|
}
|
|
},
|
|
"move forwards": {
|
|
"description": "Moving the robot forwards",
|
|
"value": {
|
|
"action": "move",
|
|
"movementCommand": "forward"
|
|
}
|
|
},
|
|
"move backwards": {
|
|
"description": "Moving the robot backwards",
|
|
"value": {
|
|
"action": "move",
|
|
"movementCommand": "backward"
|
|
}
|
|
},
|
|
"rotate clockwise": {
|
|
"description": "Rotating the robot clockwise",
|
|
"value": {
|
|
"action": "move",
|
|
"movementCommand": "rotate_clockwise"
|
|
}
|
|
},
|
|
"rotate counterclockwise": {
|
|
"description": "Rotating the robot counterclockwise",
|
|
"value": {
|
|
"action": "move",
|
|
"movementCommand": "rotate_counterclockwise"
|
|
}
|
|
},
|
|
"disable manual control": {
|
|
"description": "Disabling manual control",
|
|
"value": {
|
|
"action": "disable"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/ManualControlCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"ManualControlCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"supportedMovementCommands": {
|
|
"type": "array",
|
|
"description": "Supported movement commands",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"forward",
|
|
"backward",
|
|
"rotate_clockwise",
|
|
"rotate_counterclockwise"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/MappingPassCapability": {
|
|
"put": {
|
|
"tags": [
|
|
"MappingPassCapability"
|
|
],
|
|
"summary": "Start mapping",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"start_mapping"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/MappingPassCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"MappingPassCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/MapResetCapability": {
|
|
"put": {
|
|
"tags": [
|
|
"MapResetCapability"
|
|
],
|
|
"summary": "Reset map",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"reset"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/MapResetCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"MapResetCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/MapSegmentationCapability": {
|
|
"get": {
|
|
"tags": [
|
|
"MapSegmentationCapability"
|
|
],
|
|
"summary": "Get available map segments",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"MapSegmentationCapability"
|
|
],
|
|
"summary": "Clean map segments",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"segment_ids"
|
|
],
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"start_segment_action"
|
|
]
|
|
},
|
|
"segment_ids": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"description": "Segment IDs to clean",
|
|
"minimum": 1
|
|
}
|
|
},
|
|
"iterations": {
|
|
"type": "number",
|
|
"minimum": 1,
|
|
"description": "The iteration value applies to all specified Segment IDs. Defaults to 1."
|
|
},
|
|
"customOrder": {
|
|
"type": "boolean",
|
|
"description": "Whether or not Segments should be cleaned in order of ID appearance in the Array. Defaults to false. (Needs firmware support)"
|
|
}
|
|
}
|
|
},
|
|
"examples": {
|
|
"Clean segments in default order": {
|
|
"description": "Clean selected segments in a order determined by the robot",
|
|
"value": {
|
|
"action": "start_segment_action",
|
|
"segment_ids": [
|
|
"3",
|
|
"2",
|
|
"1"
|
|
],
|
|
"iterations": 1
|
|
}
|
|
},
|
|
"Clean segments in custom order": {
|
|
"description": "Clean selected segments in order of appearance of the IDs provided in the segment_ids array. Check custom order support for your robot with the MapSegmentationCapability/properties endpoint",
|
|
"value": {
|
|
"action": "start_segment_action",
|
|
"segment_ids": [
|
|
"3",
|
|
"2",
|
|
"1"
|
|
],
|
|
"iterations": 1,
|
|
"customOrder": true
|
|
}
|
|
},
|
|
"Clean segments with multiple iterations": {
|
|
"description": "Clean selected segments in custom order with multiple iterations. Check custom order support and maximum iterations for your robot with the MapSegmentationCapability/properties endpoint",
|
|
"value": {
|
|
"action": "start_segment_action",
|
|
"segment_ids": [
|
|
"3",
|
|
"2",
|
|
"1"
|
|
],
|
|
"iterations": 3,
|
|
"customOrder": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/MapSegmentationCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"MapSegmentationCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"iterationCount",
|
|
"customOrderSupported"
|
|
],
|
|
"properties": {
|
|
"iterationCount": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"min": {
|
|
"minimum": 1,
|
|
"type": "number"
|
|
},
|
|
"max": {
|
|
"minimum": 1,
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"customOrderSupported": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/MapSegmentEditCapability": {
|
|
"put": {
|
|
"tags": [
|
|
"MapSegmentEditCapability"
|
|
],
|
|
"summary": "Edit map segments",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"oneOf": [
|
|
{
|
|
"type": "object",
|
|
"description": "join_segments action",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"join_segments"
|
|
]
|
|
},
|
|
"segment_a_id": {
|
|
"type": "string"
|
|
},
|
|
"segment_b_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"type": "object",
|
|
"description": "split_segment action",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"split_segment"
|
|
]
|
|
},
|
|
"segment_id": {
|
|
"type": "string"
|
|
},
|
|
"pA": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pB": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"examples": {
|
|
"split_segment": {
|
|
"description": "Split a segment along a line",
|
|
"value": {
|
|
"action": "split_segment",
|
|
"segment_id": "1",
|
|
"pA": {
|
|
"x": 3305,
|
|
"y": 2905
|
|
},
|
|
"pB": {
|
|
"x": 3305,
|
|
"y": 3050
|
|
}
|
|
}
|
|
},
|
|
"join_segments": {
|
|
"description": "Join two segments",
|
|
"value": {
|
|
"action": "join_segments",
|
|
"segment_a_id": "4",
|
|
"segment_b_id": "5"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/MapSegmentEditCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"MapSegmentEditCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/MapSegmentRenameCapability": {
|
|
"put": {
|
|
"tags": [
|
|
"MapSegmentRenameCapability"
|
|
],
|
|
"summary": "Rename map segment",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"rename_segment"
|
|
]
|
|
},
|
|
"segment_id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/MapSegmentRenameCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"MapSegmentRenameCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/PendingMapChangeHandlingCapability": {
|
|
"get": {
|
|
"tags": [
|
|
"PendingMapChangeHandlingCapability"
|
|
],
|
|
"summary": "Check if there is a pending map change",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"PendingMapChangeHandlingCapability"
|
|
],
|
|
"summary": "Accept or reject a pending map change",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"accept",
|
|
"reject"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/PendingMapChangeHandlingCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"PendingMapChangeHandlingCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/FanSpeedControlCapability/presets": {
|
|
"get": {
|
|
"tags": [
|
|
"FanSpeedControlCapability"
|
|
],
|
|
"summary": "Get available presets",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/FanSpeedControlCapability/preset": {
|
|
"put": {
|
|
"tags": [
|
|
"FanSpeedControlCapability"
|
|
],
|
|
"summary": "Set preset value",
|
|
"parameters": [],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Preset name retrieved from the same capability"
|
|
}
|
|
}
|
|
},
|
|
"examples": {
|
|
"medium": {
|
|
"description": "Set fan speed to medium",
|
|
"value": {
|
|
"name": "medium"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/FanSpeedControlCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"FanSpeedControlCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/WaterUsageControlCapability/presets": {
|
|
"get": {
|
|
"tags": [
|
|
"WaterUsageControlCapability"
|
|
],
|
|
"summary": "Get available presets",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/WaterUsageControlCapability/preset": {
|
|
"put": {
|
|
"tags": [
|
|
"WaterUsageControlCapability"
|
|
],
|
|
"summary": "Set preset value",
|
|
"parameters": [],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Preset name retrieved from the same capability"
|
|
}
|
|
}
|
|
},
|
|
"examples": {
|
|
"medium": {
|
|
"description": "Set water usage to medium",
|
|
"value": {
|
|
"name": "medium"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/WaterUsageControlCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"WaterUsageControlCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/OperationModeControlCapability/presets": {
|
|
"get": {
|
|
"tags": [
|
|
"OperationModeControlCapability"
|
|
],
|
|
"summary": "Get available presets",
|
|
"parameters": [],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/OperationModeControlCapability/preset": {
|
|
"put": {
|
|
"tags": [
|
|
"OperationModeControlCapability"
|
|
],
|
|
"summary": "Set preset value",
|
|
"parameters": [],
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"description": "Preset name retrieved from the same capability"
|
|
}
|
|
}
|
|
},
|
|
"examples": {
|
|
"mop": {
|
|
"description": "Set operation mode to mop only",
|
|
"value": {
|
|
"name": "mop"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/OperationModeControlCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"OperationModeControlCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/QuirksCapability": {
|
|
"get": {
|
|
"tags": [
|
|
"QuirksCapability"
|
|
],
|
|
"summary": "Get quirks",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"options": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"QuirksCapability"
|
|
],
|
|
"summary": "Set quirk values",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"value"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"value": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/QuirksCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"QuirksCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/CarpetModeControlCapability": {
|
|
"get": {
|
|
"tags": [
|
|
"CarpetModeControlCapability"
|
|
],
|
|
"summary": "Get carpet mode settings",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"CarpetModeControlCapability"
|
|
],
|
|
"summary": "Set carpet mode settings",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"enable",
|
|
"disable"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/CarpetModeControlCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"CarpetModeControlCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/KeyLockCapability": {
|
|
"get": {
|
|
"tags": [
|
|
"KeyLockCapability"
|
|
],
|
|
"summary": "Get key lock setting",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"KeyLockCapability"
|
|
],
|
|
"summary": "Set key lock setting",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"enable",
|
|
"disable"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/KeyLockCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"KeyLockCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/SpeakerTestCapability": {
|
|
"put": {
|
|
"tags": [
|
|
"SpeakerTestCapability"
|
|
],
|
|
"summary": "Test speaker",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"play_test_sound"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/SpeakerTestCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"SpeakerTestCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/SpeakerVolumeControlCapability": {
|
|
"get": {
|
|
"tags": [
|
|
"SpeakerVolumeControlCapability"
|
|
],
|
|
"summary": "Get speaker volume",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"volume": {
|
|
"type": "number",
|
|
"description": "Percentage"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"SpeakerVolumeControlCapability"
|
|
],
|
|
"summary": "Set speaker volume",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"set_volume"
|
|
]
|
|
},
|
|
"value": {
|
|
"type": "number",
|
|
"description": "Percentage"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/SpeakerVolumeControlCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"SpeakerVolumeControlCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/TotalStatisticsCapability": {
|
|
"get": {
|
|
"tags": [
|
|
"TotalStatisticsCapability"
|
|
],
|
|
"summary": "Get total statistics",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"description": "Datetime in ISO8601 format"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"time",
|
|
"area",
|
|
"count"
|
|
]
|
|
},
|
|
"value": {
|
|
"type": "number"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/TotalStatisticsCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"TotalStatisticsCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"availableStatistics": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"count",
|
|
"time",
|
|
"area"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/CurrentStatisticsCapability": {
|
|
"get": {
|
|
"tags": [
|
|
"CurrentStatisticsCapability"
|
|
],
|
|
"summary": "Get statistics about the current (or last) task",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"description": "Datetime in ISO8601 format"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"time",
|
|
"area",
|
|
"count"
|
|
]
|
|
},
|
|
"value": {
|
|
"type": "number"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/CurrentStatisticsCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"CurrentStatisticsCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"availableStatistics": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"count",
|
|
"time",
|
|
"area"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/VoicePackManagementCapability": {
|
|
"get": {
|
|
"tags": [
|
|
"VoicePackManagementCapability"
|
|
],
|
|
"summary": "Get current voice pack and operation status, if any",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"currentLanguage": {
|
|
"type": "string"
|
|
},
|
|
"operationStatus": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"idle",
|
|
"downloading",
|
|
"installing",
|
|
"error"
|
|
]
|
|
},
|
|
"progress": {
|
|
"type": "number",
|
|
"description": "Percentage"
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"VoicePackManagementCapability"
|
|
],
|
|
"summary": "Set voice pack",
|
|
"description": "**Note:** the actual parameters and the voice pack format are highly dependent on the specific robot model.",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"download"
|
|
]
|
|
},
|
|
"url": {
|
|
"type": "string"
|
|
},
|
|
"language": {
|
|
"type": "string"
|
|
},
|
|
"hash": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"examples": {
|
|
"custom": {
|
|
"description": "Install a custom voice pack",
|
|
"value": {
|
|
"action": "download",
|
|
"url": "http://host_or_ip/custom.tar.gz",
|
|
"language": "cu",
|
|
"hash": "md5md5md5md5md5md5md5md5md5md5md"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/VoicePackManagementCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"VoicePackManagementCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/WifiConfigurationCapability": {
|
|
"get": {
|
|
"tags": [
|
|
"WifiConfigurationCapability"
|
|
],
|
|
"summary": "Get current wireless radio status",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"state": {
|
|
"type": "string",
|
|
"enum": [
|
|
"connected",
|
|
"not_connected",
|
|
"unknown"
|
|
]
|
|
},
|
|
"details": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ssid": {
|
|
"type": "string",
|
|
"description": "Wireless network name"
|
|
},
|
|
"bssid": {
|
|
"type": "string"
|
|
},
|
|
"downspeed": {
|
|
"type": "number"
|
|
},
|
|
"upspeed": {
|
|
"type": "number"
|
|
},
|
|
"signal": {
|
|
"type": "number"
|
|
},
|
|
"ips": {
|
|
"type": "array",
|
|
"description": "IP addresses",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"frequency": {
|
|
"type": "string",
|
|
"enum": [
|
|
"2.4ghz",
|
|
"5ghz"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"tags": [
|
|
"WifiConfigurationCapability"
|
|
],
|
|
"summary": "Set new wireless radio configuration",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ssid": {
|
|
"type": "string",
|
|
"description": "Wireless network name"
|
|
},
|
|
"credentials": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string"
|
|
},
|
|
"typeSpecificSettings": {
|
|
"type": "object",
|
|
"description": "Settings depending on type, for example WPA preshared key"
|
|
}
|
|
}
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
},
|
|
"examples": {
|
|
"configure wifi": {
|
|
"description": "Configure Wifi",
|
|
"value": {
|
|
"ssid": "MySSID",
|
|
"credentials": {
|
|
"type": "wpa2_psk",
|
|
"typeSpecificSettings": {
|
|
"password": "MyPassword"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
},
|
|
"500": {
|
|
"description": "Internal server error"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/WifiConfigurationCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"WifiConfigurationCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"provisionedReconfigurationSupported": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/WifiScanCapability": {
|
|
"get": {
|
|
"tags": [
|
|
"WifiScanCapability"
|
|
],
|
|
"summary": "Scan for Wi-Fi networks. May return cached data",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"bssid": {
|
|
"type": "string"
|
|
},
|
|
"details": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ssid": {
|
|
"type": "string",
|
|
"description": "Wireless network name"
|
|
},
|
|
"signal": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/WifiScanCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"WifiScanCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/ZoneCleaningCapability": {
|
|
"put": {
|
|
"tags": [
|
|
"ZoneCleaningCapability"
|
|
],
|
|
"summary": "Clean one or more zones",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"clean"
|
|
]
|
|
},
|
|
"zones": {
|
|
"type": "array",
|
|
"description": "Zones clean",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"points": {
|
|
"type": "object",
|
|
"properties": {
|
|
"pA": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pB": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pC": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"pD": {
|
|
"type": "object",
|
|
"properties": {
|
|
"x": {
|
|
"type": "number"
|
|
},
|
|
"y": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"metaData": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"iterations": {
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"examples": {
|
|
"spot": {
|
|
"description": "Clean a small spot",
|
|
"value": {
|
|
"action": "clean",
|
|
"zones": [
|
|
{
|
|
"points": {
|
|
"pA": {
|
|
"x": 2720,
|
|
"y": 3655
|
|
},
|
|
"pB": {
|
|
"x": 2850,
|
|
"y": 3655
|
|
},
|
|
"pC": {
|
|
"x": 2850,
|
|
"y": 3705
|
|
},
|
|
"pD": {
|
|
"x": 2720,
|
|
"y": 3705
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"iterations": 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok"
|
|
},
|
|
"400": {
|
|
"description": "Bad request"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v2/robot/capabilities/ZoneCleaningCapability/properties": {
|
|
"get": {
|
|
"tags": [
|
|
"ZoneCleaningCapability"
|
|
],
|
|
"summary": "Get various capability-related properties",
|
|
"responses": {
|
|
"200": {
|
|
"description": "Ok",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"zoneCount",
|
|
"iterationCount"
|
|
],
|
|
"properties": {
|
|
"zoneCount": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"min": {
|
|
"minimum": 1,
|
|
"type": "number"
|
|
},
|
|
"max": {
|
|
"minimum": 1,
|
|
"type": "number"
|
|
}
|
|
}
|
|
},
|
|
"iterationCount": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"min": {
|
|
"minimum": 1,
|
|
"type": "number"
|
|
},
|
|
"max": {
|
|
"minimum": 1,
|
|
"type": "number"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"customOptions": {}
|
|
}
|