1 """The rest component schemas."""
3 import voluptuous
as vol
6 DEVICE_CLASSES_SCHEMA
as BINARY_SENSOR_DEVICE_CLASSES_SCHEMA,
7 DOMAIN
as BINARY_SENSOR_DOMAIN,
20 CONF_RESOURCE_TEMPLATE,
26 HTTP_BASIC_AUTHENTICATION,
27 HTTP_DIGEST_AUTHENTICATION,
32 TEMPLATE_ENTITY_BASE_SCHEMA,
33 TEMPLATE_SENSOR_BASE_SCHEMA,
41 CONF_PAYLOAD_TEMPLATE,
46 DEFAULT_SSL_CIPHER_LIST,
51 from .data
import DEFAULT_TIMEOUT
54 vol.Exclusive(CONF_RESOURCE, CONF_RESOURCE): cv.url,
55 vol.Exclusive(CONF_RESOURCE_TEMPLATE, CONF_RESOURCE): cv.template,
56 vol.Optional(CONF_AUTHENTICATION): vol.In(
57 [HTTP_BASIC_AUTHENTICATION, HTTP_DIGEST_AUTHENTICATION]
59 vol.Optional(CONF_HEADERS): vol.Schema({cv.string: cv.template}),
60 vol.Optional(CONF_PARAMS): vol.Schema({cv.string: cv.template}),
61 vol.Optional(CONF_METHOD, default=DEFAULT_METHOD): vol.In(METHODS),
62 vol.Optional(CONF_USERNAME): cv.string,
63 vol.Optional(CONF_PASSWORD): cv.string,
64 vol.Exclusive(CONF_PAYLOAD, CONF_PAYLOAD): cv.string,
65 vol.Exclusive(CONF_PAYLOAD_TEMPLATE, CONF_PAYLOAD): cv.template,
66 vol.Optional(CONF_VERIFY_SSL, default=DEFAULT_VERIFY_SSL): cv.boolean,
69 default=DEFAULT_SSL_CIPHER_LIST,
70 ): vol.In([e.value
for e
in SSLCipherList]),
71 vol.Optional(CONF_TIMEOUT, default=DEFAULT_TIMEOUT): cv.positive_int,
72 vol.Optional(CONF_ENCODING, default=DEFAULT_ENCODING): cv.string,
76 **TEMPLATE_SENSOR_BASE_SCHEMA.schema,
77 vol.Optional(CONF_JSON_ATTRS, default=[]): cv.ensure_list_csv,
78 vol.Optional(CONF_JSON_ATTRS_PATH): cv.string,
79 vol.Optional(CONF_VALUE_TEMPLATE): cv.template,
80 vol.Optional(CONF_FORCE_UPDATE, default=DEFAULT_FORCE_UPDATE): cv.boolean,
81 vol.Optional(CONF_AVAILABILITY): cv.template,
84 BINARY_SENSOR_SCHEMA = {
85 **TEMPLATE_ENTITY_BASE_SCHEMA.schema,
86 vol.Optional(CONF_DEVICE_CLASS): BINARY_SENSOR_DEVICE_CLASSES_SCHEMA,
87 vol.Optional(CONF_VALUE_TEMPLATE): cv.template,
88 vol.Optional(CONF_FORCE_UPDATE, default=DEFAULT_FORCE_UPDATE): cv.boolean,
89 vol.Optional(CONF_AVAILABILITY): cv.template,
93 COMBINED_SCHEMA = vol.Schema(
95 vol.Optional(CONF_SCAN_INTERVAL): cv.time_period,
97 vol.Optional(SENSOR_DOMAIN): vol.All(
98 cv.ensure_list, [vol.Schema(SENSOR_SCHEMA)]
100 vol.Optional(BINARY_SENSOR_DOMAIN): vol.All(
101 cv.ensure_list, [vol.Schema(BINARY_SENSOR_SCHEMA)]
106 CONFIG_SCHEMA = vol.Schema(
114 extra=vol.ALLOW_EXTRA,