RESTful Command
This integration can expose regular REST commands as services. Services can be called from a script or in automation.
To use this integration, add the following lines to your configuration.yaml
file:
# Example configuration.yaml entry
rest_command:
example_request:
url: "http://example.com/"
Configuration Variables
The name used to expose the service. E.g., in the above example, it would be ‘rest_command.example_request’.
The URL (supports template) for sending request.
A string/template to send with request.
Examples
Basic example which uses PUT method and payload encoded as form data
This example implements 2 REST commands to add service calls for the missing shuffle functionality of the iTunes integration.
rest_command:
shuffle_on:
url: "http://YOUR_ITUNES-API_SERVER_IP:8181/shuffle"
method: put
content_type: "application/x-www-form-urlencoded"
payload: "mode=songs"
shuffle_off:
url: "http://YOUR_ITUNES-API_SERVER_IP:8181/shuffle"
method: put
content_type: "application/x-www-form-urlencoded"
payload: "mode=off"
Using templates to change the payload based on entities
The commands can be dynamic, using templates to insert values of other entities. Service call support variables for doing things with templates.
In this example, uses templates for dynamic parameters.
# Example configuration.yaml entry
rest_command:
my_request:
url: https://slack.com/api/users.profile.set
method: POST
headers:
authorization: !secret rest_headers_secret
accept: "application/json, text/html"
user-agent: 'Mozilla/5.0 {{ useragent }}'
payload: '{"profile":{"status_text": "{{ status }}","status_emoji": "{{ emoji }}"}}'
content_type: 'application/json; charset=utf-8'
verify_ssl: true
How to test your new REST command
Call the new service from developer tools in the sidebar with some data
like:
{
"status":"My Status Goes Here",
"emoji":":plex:"
}
Using a REST command as an action in an automation
automation:
- alias: "Arrive at Work"
trigger:
platform: zone
entity_id: device_tracker.my_device
zone: zone.work
event: enter
action:
- service: rest_command.my_request
data:
status: "At Work"
emoji: ":calendar:"