Add unit symbol constants Initial unit system object Import more constants Pydoc for unit system file Import constants for configuration validation Unit system validation method Typing for constants Inches are valid lengths too Typings Change base class to dict - needed for remote api call serialization Validation Use dictionary keys Defined unit systems Update location util to use metric instead of us fahrenheit Update constant imports Import defined unit systems Update configuration to use unit system Update schema to use unit system Update constants Add imports to core for unit system and distance Type for config Default unit system Convert distance from HASS instance Update temperature conversion to use unit system Update temperature conversion Set unit system based on configuration Set info unit system Return unit system dictionary with config dictionary Auto discover unit system Update location test for use metric Update forecast unit system Update mold indicator unit system Update thermostat unit system Update thermostat demo test Unit tests around unit system Update test common hass configuration Update configuration unit tests There should always be a unit system! Update core unit tests Constants typing Linting issues Remove unused import Update fitbit sensor to use application unit system Update google travel time to use application unit system Update configuration example Update dht sensor Update DHT temperature conversion to use the utility function Update swagger config Update my sensors metric flag Update hvac component temperature conversion HVAC conversion for temperature Pull unit from sensor type map Pull unit from sensor type map Update the temper sensor unit Update yWeather sensor unit Update hvac demo unit test Set unit test config unit system to metric Use hass unit system length for default in proximity Use the name of the system instead of temperature Use constants from const Unused import Forecasted temperature Fix calculation in case furthest distance is greater than 1000000 units Remove unneeded constants Set default length to km or miles Use constants Linting doesn't like importing just for typing Fix reference Test is expecting meters - set config to meters Use constant Use constant PyDoc for unit test Should be not in Rename to units Change unit system to be an object - not a dictionary Return tuple in conversion Move convert to temperature util Temperature conversion is now in unit system Update imports Rename to units Units is now an object Use temperature util conversion Unit system is now an object Validate and convert unit system config Return the scalar value in template distance Test is expecting meters Update unit tests around unit system Distance util returns tuple Fix location info test Set units Update unit tests Convert distance DOH Pull out the scalar from the vector Linting I really hate python linting Linting again BLARG Unit test documentation Unit test around is metric flag Break ternary statement into if/else blocks Don't use dictionary - use members is metric flag Rename constants Use is metric flag Move constants to CONST file Move to const file Raise error if unit is not expected Typing No need to return unit since only performing conversion if it can work Use constants Line wrapping Raise error if invalid value Remove subscripts from conversion as they are no longer returned as tuples No longer tuples No longer tuples Check for numeric type Fix string format to use correct variable Typing Assert errors raised Remove subscript Only convert temperature if we know the unit If no unit of measurement set - default to HASS config Convert only if we know the unit Remove subscription Fix not in clause Linting fixes Wants a boolean Clearer if-block Check if the key is in the config first Missed a couple expecting tuples Backwards compatibility No like-y ternary! Error handling around state setting Pretty unit system configuration validation More tuple crap Use is metric flag Error handling around min/max temp Explode if no unit Pull unit from config Celsius has a decimal Unused import Check if it's a temperature before we try to convert it to a temperature Linting says too many statements - combine lat/long in a fairly reasonable manner Backwards compatibility unit test Better doc
568 lines
14 KiB
YAML
568 lines
14 KiB
YAML
swagger: '2.0'
|
|
info:
|
|
title: Home Assistant
|
|
description: Home Assistant REST API
|
|
version: "1.0.0"
|
|
# the domain of the service
|
|
host: localhost:8123
|
|
|
|
# array of all schemes that your API supports
|
|
schemes:
|
|
- http
|
|
- https
|
|
|
|
securityDefinitions:
|
|
api_key:
|
|
type: apiKey
|
|
description: API password
|
|
name: api_password
|
|
in: query
|
|
|
|
# api_key:
|
|
# type: apiKey
|
|
# description: API password
|
|
# name: x-ha-access
|
|
# in: header
|
|
|
|
# will be prefixed to all paths
|
|
basePath: /api
|
|
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- application/json
|
|
paths:
|
|
/:
|
|
get:
|
|
summary: API alive message
|
|
description: Returns message if API is up and running.
|
|
tags:
|
|
- Core
|
|
responses:
|
|
200:
|
|
description: API is up and running
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
default:
|
|
description: Error
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
/config:
|
|
get:
|
|
summary: API alive message
|
|
description: Returns the current configuration as JSON.
|
|
tags:
|
|
- Core
|
|
responses:
|
|
200:
|
|
description: Current configuration
|
|
schema:
|
|
$ref: '#/definitions/ApiConfig'
|
|
default:
|
|
description: Error
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
/discovery_info:
|
|
get:
|
|
summary: Basic information about Home Assistant instance
|
|
tags:
|
|
- Core
|
|
responses:
|
|
200:
|
|
description: Basic information
|
|
schema:
|
|
$ref: '#/definitions/DiscoveryInfo'
|
|
default:
|
|
description: Error
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
/bootstrap:
|
|
get:
|
|
summary: Returns all data needed to bootstrap Home Assistant.
|
|
tags:
|
|
- Core
|
|
responses:
|
|
200:
|
|
description: Bootstrap information
|
|
schema:
|
|
$ref: '#/definitions/BootstrapInfo'
|
|
default:
|
|
description: Error
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
/events:
|
|
get:
|
|
summary: Array of event objects.
|
|
description: Returns an array of event objects. Each event object contain event name and listener count.
|
|
tags:
|
|
- Events
|
|
responses:
|
|
200:
|
|
description: Events
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/Event'
|
|
default:
|
|
description: Error
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
/services:
|
|
get:
|
|
summary: Array of service objects.
|
|
description: Returns an array of service objects. Each object contains the domain and which services it contains.
|
|
tags:
|
|
- Services
|
|
responses:
|
|
200:
|
|
description: Services
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/Service'
|
|
default:
|
|
description: Error
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
/history:
|
|
get:
|
|
summary: Array of state changes in the past.
|
|
description: Returns an array of state changes in the past. Each object contains further detail for the entities.
|
|
tags:
|
|
- State
|
|
responses:
|
|
200:
|
|
description: State changes
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/History'
|
|
default:
|
|
description: Error
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
/states:
|
|
get:
|
|
summary: Array of state objects.
|
|
description: |
|
|
Returns an array of state objects. Each state has the following attributes: entity_id, state, last_changed and attributes.
|
|
tags:
|
|
- State
|
|
responses:
|
|
200:
|
|
description: States
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/State'
|
|
default:
|
|
description: Error
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
/states/{entity_id}:
|
|
get:
|
|
summary: Specific state object.
|
|
description: |
|
|
Returns a state object for specified entity_id.
|
|
tags:
|
|
- State
|
|
parameters:
|
|
- name: entity_id
|
|
in: path
|
|
description: entity_id of the entity to query
|
|
required: true
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: State
|
|
schema:
|
|
$ref: '#/definitions/State'
|
|
404:
|
|
description: Not found
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
default:
|
|
description: Error
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
post:
|
|
description: |
|
|
Updates or creates the current state of an entity.
|
|
tags:
|
|
- State
|
|
consumes:
|
|
- application/json
|
|
parameters:
|
|
- name: entity_id
|
|
in: path
|
|
description: entity_id to set the state of
|
|
required: true
|
|
type: string
|
|
- $ref: '#/parameters/State'
|
|
responses:
|
|
200:
|
|
description: State of existing entity was set
|
|
schema:
|
|
$ref: '#/definitions/State'
|
|
201:
|
|
description: State of new entity was set
|
|
schema:
|
|
$ref: '#/definitions/State'
|
|
headers:
|
|
location:
|
|
type: string
|
|
description: location of the new entity
|
|
default:
|
|
description: Error
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
/error_log:
|
|
get:
|
|
summary: Error log
|
|
description: |
|
|
Retrieve all errors logged during the current session of Home Assistant as a plaintext response.
|
|
tags:
|
|
- Core
|
|
produces:
|
|
- text/plain
|
|
responses:
|
|
200:
|
|
description: Plain text error log
|
|
default:
|
|
description: Error
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
/camera_proxy/camera.{entity_id}:
|
|
get:
|
|
summary: Camera image.
|
|
description: |
|
|
Returns the data (image) from the specified camera entity_id.
|
|
tags:
|
|
- Camera
|
|
produces:
|
|
- image/jpeg
|
|
parameters:
|
|
- name: entity_id
|
|
in: path
|
|
description: entity_id of the camera to query
|
|
required: true
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: Camera image
|
|
schema:
|
|
type: file
|
|
default:
|
|
description: Error
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
/events/{event_type}:
|
|
post:
|
|
description: |
|
|
Fires an event with event_type
|
|
tags:
|
|
- Events
|
|
consumes:
|
|
- application/json
|
|
parameters:
|
|
- name: event_type
|
|
in: path
|
|
description: event_type to fire event with
|
|
required: true
|
|
type: string
|
|
- $ref: '#/parameters/EventData'
|
|
responses:
|
|
200:
|
|
description: Response message
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
default:
|
|
description: Error
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
/services/{domain}/{service}:
|
|
post:
|
|
description: |
|
|
Calls a service within a specific domain. Will return when the service has been executed or 10 seconds has past, whichever comes first.
|
|
tags:
|
|
- Services
|
|
consumes:
|
|
- application/json
|
|
parameters:
|
|
- name: domain
|
|
in: path
|
|
description: domain of the service
|
|
required: true
|
|
type: string
|
|
- name: service
|
|
in: path
|
|
description: service to call
|
|
required: true
|
|
type: string
|
|
- $ref: '#/parameters/ServiceData'
|
|
responses:
|
|
200:
|
|
description: List of states that have changed while the service was being executed. The result will include any changed states that changed while the service was being executed, even if their change was the result of something else happening in the system.
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/State'
|
|
default:
|
|
description: Error
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
/template:
|
|
post:
|
|
description: |
|
|
Render a Home Assistant template.
|
|
tags:
|
|
- Template
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- text/plain
|
|
parameters:
|
|
- $ref: '#/parameters/Template'
|
|
responses:
|
|
200:
|
|
description: Returns the rendered template in plain text.
|
|
schema:
|
|
type: string
|
|
default:
|
|
description: Error
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
/event_forwarding:
|
|
post:
|
|
description: |
|
|
Setup event forwarding to another Home Assistant instance.
|
|
tags:
|
|
- Core
|
|
consumes:
|
|
- application/json
|
|
parameters:
|
|
- $ref: '#/parameters/EventForwarding'
|
|
responses:
|
|
200:
|
|
description: It will return a message if event forwarding was setup successful.
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
default:
|
|
description: Error
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
delete:
|
|
description: |
|
|
Cancel event forwarding to another Home Assistant instance.
|
|
tags:
|
|
- Core
|
|
consumes:
|
|
- application/json
|
|
parameters:
|
|
- $ref: '#/parameters/EventForwarding'
|
|
responses:
|
|
200:
|
|
description: It will return a message if event forwarding was cancelled successful.
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
default:
|
|
description: Error
|
|
schema:
|
|
$ref: '#/definitions/Message'
|
|
/stream:
|
|
get:
|
|
summary: Server-sent events
|
|
description: The server-sent events feature is a one-way channel from your Home Assistant server to a client which is acting as a consumer.
|
|
tags:
|
|
- Core
|
|
- Events
|
|
produces:
|
|
- text/event-stream
|
|
parameters:
|
|
- name: restrict
|
|
in: query
|
|
description: comma-separated list of event_types to filter
|
|
required: false
|
|
type: string
|
|
responses:
|
|
default:
|
|
description: Stream of events
|
|
schema:
|
|
type: object
|
|
x-events:
|
|
state_changed:
|
|
type: object
|
|
properties:
|
|
entity_id:
|
|
type: string
|
|
old_state:
|
|
$ref: '#/definitions/State'
|
|
new_state:
|
|
$ref: '#/definitions/State'
|
|
definitions:
|
|
ApiConfig:
|
|
type: object
|
|
properties:
|
|
components:
|
|
type: array
|
|
description: List of component types
|
|
items:
|
|
type: string
|
|
description: Component type
|
|
latitude:
|
|
type: number
|
|
format: float
|
|
description: Latitude of Home Assistant server
|
|
longitude:
|
|
type: number
|
|
format: float
|
|
description: Longitude of Home Assistant server
|
|
location_name:
|
|
type: string
|
|
unit_system:
|
|
type: string
|
|
description: The system for measurement units
|
|
time_zone:
|
|
type: string
|
|
version:
|
|
type: string
|
|
DiscoveryInfo:
|
|
type: object
|
|
properties:
|
|
base_url:
|
|
type: string
|
|
location_name:
|
|
type: string
|
|
requires_api_password:
|
|
type: boolean
|
|
version:
|
|
type: string
|
|
BootstrapInfo:
|
|
type: object
|
|
properties:
|
|
config:
|
|
$ref: '#/definitions/ApiConfig'
|
|
events:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/Event'
|
|
services:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/Service'
|
|
states:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/State'
|
|
Event:
|
|
type: object
|
|
properties:
|
|
event:
|
|
type: string
|
|
listener_count:
|
|
type: integer
|
|
Service:
|
|
type: object
|
|
properties:
|
|
domain:
|
|
type: string
|
|
services:
|
|
type: object
|
|
additionalProperties:
|
|
$ref: '#/definitions/DomainService'
|
|
DomainService:
|
|
type: object
|
|
properties:
|
|
description:
|
|
type: string
|
|
fields:
|
|
type: object
|
|
description: Object with service fields that can be called
|
|
State:
|
|
type: object
|
|
properties:
|
|
attributes:
|
|
$ref: '#/definitions/StateAttributes'
|
|
state:
|
|
type: string
|
|
entity_id:
|
|
type: string
|
|
last_changed:
|
|
type: string
|
|
format: date-time
|
|
StateAttributes:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
History:
|
|
allOf:
|
|
- $ref: '#/definitions/State'
|
|
- type: object
|
|
properties:
|
|
last_updated:
|
|
type: string
|
|
format: date-time
|
|
Message:
|
|
type: object
|
|
properties:
|
|
message:
|
|
type: string
|
|
parameters:
|
|
State:
|
|
name: body
|
|
in: body
|
|
description: State parameter
|
|
required: false
|
|
schema:
|
|
type: object
|
|
required:
|
|
- state
|
|
properties:
|
|
attributes:
|
|
$ref: '#/definitions/StateAttributes'
|
|
state:
|
|
type: string
|
|
EventData:
|
|
name: body
|
|
in: body
|
|
description: event_data
|
|
required: false
|
|
schema:
|
|
type: object
|
|
ServiceData:
|
|
name: body
|
|
in: body
|
|
description: service_data
|
|
required: false
|
|
schema:
|
|
type: object
|
|
Template:
|
|
name: body
|
|
in: body
|
|
description: Template to render
|
|
required: true
|
|
schema:
|
|
type: object
|
|
required:
|
|
- template
|
|
properties:
|
|
template:
|
|
description: Jinja2 template string
|
|
type: string
|
|
EventForwarding:
|
|
name: body
|
|
in: body
|
|
description: Event Forwarding parameter
|
|
required: true
|
|
schema:
|
|
type: object
|
|
required:
|
|
- host
|
|
- api_password
|
|
properties:
|
|
host:
|
|
type: string
|
|
api_password:
|
|
type: string
|
|
port:
|
|
type: integer
|