{
  "$schema": "http://json-schema.org/draft-06/schema#",
  "title": "Alexa Smart Home Message Schema",
  "description": "A JSON message sent from a skill to Alexa, either proactively or as a response to a directive.  Source https://github.com/alexa/alexa-smarthome/pull/112",
  "definitions": {
    "common.properties": {
      "payloadVersion": {
        "enum": [
          "3"
        ]
      },
      "message": {
        "type": "string"
      },
      "currentDeviceMode": {
        "enum": [
          "ASLEEP",
          "NOT_PROVISIONED",
          "COLOR",
          "OTHER"
        ]
      },
      "messageId": {
        "type": "string",
        "minLength": 1,
        "maxLength": 127,
        "pattern": "^[a-zA-Z0-9\\-]*$"
      },
      "correlationToken": {
        "type": "string",
        "minLength": 1
      },
      "armState": {
        "enum": [
          "ARMED_AWAY",
          "ARMED_STAY",
          "ARMED_NIGHT",
          "DISARMED"
        ]
      },
      "temperature": {
        "type": "object",
        "required": [
          "value",
          "scale"
        ],
        "additionalProperties": false,
        "properties": {
          "value": {
            "type": "number"
          },
          "scale": {
            "enum": [
              "CELSIUS",
              "FAHRENHEIT",
              "KELVIN"
            ]
          }
        }
      },
      "thermostatMode": {
        "enum": [
          "AUTO",
          "COOL",
          "HEAT",
          "ECO",
          "OFF"
        ]
      },
      "channel": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "number": {
            "type": "string"
          },
          "callSign": {
            "type": "string"
          },
          "affiliateCallSign": {
            "type": "string"
          }
        },
        "minProperties": 1
      },
      "equalizerBands": {
        "enum": [
          "BASS",
          "MIDRANGE",
          "TREBLE"
        ]
      },
      "equalizerMode": {
        "enum": [
          "MOVIE",
          "MUSIC",
          "NIGHT",
          "SPORT",
          "TV"
        ]
      },
      "input": {
        "enum": [
          "AUX 1",
          "AUX 2",
          "AUX 3",
          "AUX 4",
          "AUX 5",
          "AUX 6",
          "AUX 7",
          "BLURAY",
          "CABLE",
          "CD",
          "COAX 1",
          "COAX 2",
          "COMPOSITE 1",
          "DVD",
          "GAME",
          "HD RADIO",
          "HDMI 1",
          "HDMI 2",
          "HDMI 3",
          "HDMI 4",
          "HDMI 5",
          "HDMI 6",
          "HDMI 7",
          "HDMI 8",
          "HDMI 9",
          "HDMI 10",
          "HDMI ARC",
          "INPUT 1",
          "INPUT 2",
          "INPUT 3",
          "INPUT 4",
          "INPUT 5",
          "INPUT 6",
          "INPUT 7",
          "INPUT 8",
          "INPUT 9",
          "INPUT 10",
          "IPOD",
          "LINE 1",
          "LINE 2",
          "LINE 3",
          "LINE 4",
          "LINE 5",
          "LINE 6",
          "LINE 7",
          "MEDIA PLAYER",
          "OPTICAL 1",
          "OPTICAL 2",
          "PHONO",
          "PLAYSTATION",
          "PLAYSTATION 3",
          "PLAYSTATION 4",
          "SATELLITE",
          "SMARTCAST",
          "TUNER",
          "TV",
          "USB DAC",
          "VIDEO 1",
          "VIDEO 2",
          "VIDEO 3",
          "XBOX"
        ]
      },
      "volume": {
        "type": "integer",
        "minimum": 0,
        "maximum": 100
      },
      "muted": {
        "type": "boolean"
      },
      "timestamp": {
        "type": "string",
        "format": "date-time"
      },
      "uncertaintyInMilliseconds": {
        "type": "integer",
        "minimum": 0
      },
      "instance": {
        "type": "string",
        "minLength": 1
      },
      "resolution": {
        "type": "object",
        "required": [
          "width",
          "height"
        ],
        "additionalProperties": false,
        "properties": {
          "width": {
            "type": "integer",
            "minimum": 0
          },
          "height": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "protocol": {
        "enum": [
          "RTSP"
        ]
      },
      "authorizationType": {
        "enum": [
          "BASIC",
          "DIGEST",
          "NONE"
        ]
      },
      "videoCodec": {
        "enum": [
          "H264",
          "MPEG2",
          "MJPEG",
          "JPG"
        ]
      },
      "audioCodec": {
        "enum": [
          "G711",
          "AAC",
          "NONE"
        ]
      },
      "cameraStream": {
        "type": "object",
        "required": [
          "uri",
          "protocol",
          "resolution",
          "authorizationType",
          "videoCodec",
          "audioCodec"
        ],
        "additionalProperties": false,
        "properties": {
          "uri": {
            "type": "string",
            "format": "uri"
          },
          "expirationTime": {
            "type": "string",
            "format": "date-time"
          },
          "idleTimeoutSeconds": {
            "type": "integer",
            "minimum": 0
          },
          "protocol": {
            "$ref": "#/definitions/common.properties/protocol"
          },
          "resolution": {
            "$ref": "#/definitions/common.properties/resolution"
          },
          "authorizationType": {
            "$ref": "#/definitions/common.properties/authorizationType"
          },
          "videoCodec": {
            "$ref": "#/definitions/common.properties/videoCodec"
          },
          "audioCodec": {
            "$ref": "#/definitions/common.properties/audioCodec"
          }
        }
      },
      "cause": {
        "type": "object",
        "required": [
          "type"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "enum": [
              "APP_INTERACTION",
              "PHYSICAL_INTERACTION",
              "PERIODIC_POLL",
              "RULE_TRIGGER",
              "VOICE_INTERACTION"
            ]
          }
        }
      },
      "version": {
        "enum": [
          "3"
        ]
      },
      "endpointId": {
        "type": "string",
        "pattern": "^[a-zA-Z0-9_\\-=#;:?@&]*$",
        "minLength": 1,
        "maxLength": 256
      },
      "labels": {
        "textLabel": {
          "type": "object",
          "required": [
            "@type",
            "value"
          ],
          "additionalProperties": false,
          "properties": {
            "@type": {
              "enum": [
                "text"
              ]
            },
            "value": {
              "type": "object",
              "required": [
                "text"
              ],
              "additionalProperties": false,
              "properties": {
                "locale": {
                  "enum": [
                    "de-DE",
                    "en-AU",
                    "en-CA",
                    "en-GB",
                    "en-IN",
                    "en-US",
                    "es-ES",
                    "es-MX",
                    "fr-CA",
                    "fr-FR",
                    "hi-IN",
                    "it-IT",
                    "ja-JP",
                    "pt-BR"
                  ]
                },
                "text": {
                  "maxLength": 100,
                  "minLength": 1,
                  "type": "string"
                }
              }
            }
          }
        },
        "assetLabel": {
          "type": "object",
          "required": [
            "@type",
            "value"
          ],
          "additionalProperties": false,
          "properties": {
            "@type": {
              "enum": [
                "asset"
              ]
            },
            "value": {
              "type": "object",
              "required": [
                "assetId"
              ],
              "additionalProperties": false,
              "properties": {
                "assetId": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "resourceArray": {
        "type": "array",
        "minItems": 1,
        "uniqueItems": true,
        "additionalItems": false,
        "items": {
          "anyOf": [{
            "$ref": "#/definitions/common.properties/labels/assetLabel"
          }, {
            "$ref": "#/definitions/common.properties/labels/textLabel"
          }
          ]
        }
      },
      "capabilityResources": {
        "type": "object",
        "required": [
          "friendlyNames"
        ],
        "additionalProperties": false,
        "properties": {
          "friendlyNames": {
            "$ref": "#/definitions/common.properties/resourceArray"
          }
        }
      },
      "endpoint": {
        "type": "object",
        "required": [
          "endpointId"
        ],
        "properties": {
          "scope": {
            "type": "object",
            "required": [
              "type",
              "token"
            ],
            "properties": {
              "type": {
                "enum": [
                  "BearerToken"
                ]
              },
              "token": {
                "type": "string",
                "minLength": 1
              }
            }
          },
          "endpointId": {
            "$ref": "#/definitions/common.properties/endpointId"
          }
        }
      },
      "semantics": {
        "actions": {
          "enum": [
            "Alexa.Actions.Close",
            "Alexa.Actions.Open",
            "Alexa.Actions.Lower",
            "Alexa.Actions.Raise"
          ]
        },
        "states": {
          "enum": [
            "Alexa.States.Closed",
            "Alexa.States.Open"
          ]
        }
      },
      "interfaces": {
        "Alexa": {
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              }
            }
          }
        },
        "EndpointHealth": {
          "connectivity": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.EndpointHealth"
                  ]
                },
                "name": {
                  "enum": [
                    "connectivity"
                  ]
                },
                "value": {
                  "type": "object",
                  "required": [
                    "value"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "value": {
                      "enum": [
                        "OK",
                        "UNREACHABLE"
                      ]
                    }
                  }
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.EndpointHealth"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "connectivity"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "PowerController": {
          "powerState": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.PowerController"
                  ]
                },
                "name": {
                  "enum": [
                    "powerState"
                  ]
                },
                "value": {
                  "enum": [
                    "ON",
                    "OFF"
                  ]
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.PowerController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "powerState"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "PowerLevelController": {
          "powerLevel": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.PowerLevelController"
                  ]
                },
                "name": {
                  "enum": [
                    "powerLevel"
                  ]
                },
                "value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 100
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.PowerLevelController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "powerLevel"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "CustomIntent": {
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version",
              "configuration"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.CustomIntent"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "configuration": {
                "type": "object",
                "required": [
                  "supportedIntents"
                ],
                "properties": {
                  "supportedIntents": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "PercentageController": {
          "percentage": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.PercentageController"
                  ]
                },
                "name": {
                  "enum": [
                    "percentage"
                  ]
                },
                "value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 100
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.PercentageController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "percentage"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "BrightnessController": {
          "brightness": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.BrightnessController"
                  ]
                },
                "name": {
                  "enum": [
                    "brightness"
                  ]
                },
                "value": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 100
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.BrightnessController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "brightness"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "CameraStreamController": {
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version",
              "cameraStreamConfigurations"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.CameraStreamController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "cameraStreamConfigurations": {
                "type": "array",
                "uniqueItems": true,
                "items": {
                  "type": "object",
                  "required": [
                    "protocols",
                    "resolutions",
                    "authorizationTypes",
                    "videoCodecs",
                    "audioCodecs"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "protocols": {
                      "type": "array",
                      "uniqueItems": true,
                      "minItems": 1,
                      "items": {
                        "$ref": "#/definitions/common.properties/protocol"
                      }
                    },
                    "resolutions": {
                      "type": "array",
                      "uniqueItems": true,
                      "minItems": 1,
                      "items": {
                        "$ref": "#/definitions/common.properties/resolution"
                      }
                    },
                    "authorizationTypes": {
                      "type": "array",
                      "uniqueItems": true,
                      "minItems": 1,
                      "items": {
                        "$ref": "#/definitions/common.properties/authorizationType"
                      }
                    },
                    "videoCodecs": {
                      "type": "array",
                      "uniqueItems": true,
                      "minItems": 1,
                      "items": {
                        "$ref": "#/definitions/common.properties/videoCodec"
                      }
                    },
                    "audioCodecs": {
                      "type": "array",
                      "uniqueItems": true,
                      "minItems": 1,
                      "items": {
                        "$ref": "#/definitions/common.properties/audioCodec"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "ColorController": {
          "color": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.ColorController"
                  ]
                },
                "name": {
                  "enum": [
                    "color"
                  ]
                },
                "value": {
                  "type": "object",
                  "required": [
                    "hue",
                    "saturation",
                    "brightness"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "hue": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 360
                    },
                    "saturation": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    },
                    "brightness": {
                      "type": "number",
                      "minimum": 0,
                      "maximum": 1
                    }
                  }
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.ColorController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "color"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "ColorTemperatureController": {
          "colorTemperatureInKelvin": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.ColorTemperatureController"
                  ]
                },
                "name": {
                  "enum": [
                    "colorTemperatureInKelvin"
                  ]
                },
                "value": {
                  "type": "integer",
                  "minimum": 1000,
                  "maximum": 10000
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.ColorTemperatureController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "colorTemperatureInKelvin"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "LockController": {
          "lockState": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.LockController"
                  ]
                },
                "name": {
                  "enum": [
                    "lockState"
                  ]
                },
                "value": {
                  "enum": [
                    "LOCKED",
                    "UNLOCKED",
                    "JAMMED"
                  ]
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.LockController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "lockState"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "ThermostatController": {
          "setpoint": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.ThermostatController"
                  ]
                },
                "name": {
                  "enum": [
                    "targetSetpoint",
                    "lowerSetpoint",
                    "upperSetpoint"
                  ]
                },
                "value": {
                  "$ref": "#/definitions/common.properties/temperature"
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "thermostatMode": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.ThermostatController"
                  ]
                },
                "name": {
                  "enum": [
                    "thermostatMode"
                  ]
                },
                "value": {
                  "$ref": "#/definitions/common.properties/thermostatMode"
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.ThermostatController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "targetSetpoint",
                            "lowerSetpoint",
                            "upperSetpoint",
                            "thermostatMode"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              },
              "configuration": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "supportsScheduling": {
                    "type": "boolean"
                  },
                  "supportedModes": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "$ref": "#/definitions/common.properties/thermostatMode"
                    }
                  }
                }
              }
            }
          }
        },
        "TemperatureSensor": {
          "temperature": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.TemperatureSensor"
                  ]
                },
                "name": {
                  "enum": [
                    "temperature"
                  ]
                },
                "value": {
                  "$ref": "#/definitions/common.properties/temperature"
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.TemperatureSensor"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "temperature"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "ChannelController": {
          "channel": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.ChannelController"
                  ]
                },
                "name": {
                  "enum": [
                    "channel"
                  ]
                },
                "value": {
                  "$ref": "#/definitions/common.properties/channel"
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.ChannelController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "channel"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "InputController": {
          "input": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.InputController"
                  ]
                },
                "name": {
                  "enum": [
                    "input"
                  ]
                },
                "value": {
                  "$ref": "#/definitions/common.properties/input"
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version",
              "inputs"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.InputController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported"
                ],
                "additionalProperties": true,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ]
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              },
              "inputs": {
                "type": "array",
                "uniqueItems": true,
                "items": {
                  "type": "object",
                  "required": [
                    "name"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "name": {
                      "$ref": "#/definitions/common.properties/input"
                    }
                  }
                }
              }
            }
          }
        },
        "Speaker": {
          "volume": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.Speaker"
                  ]
                },
                "name": {
                  "enum": [
                    "volume"
                  ]
                },
                "value": {
                  "$ref": "#/definitions/common.properties/volume"
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "muted": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.Speaker"
                  ]
                },
                "name": {
                  "enum": [
                    "muted"
                  ]
                },
                "value": {
                  "$ref": "#/definitions/common.properties/muted"
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.Speaker"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported"
                ],
                "additionalProperties": true,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "volume",
                            "muted"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "StepSpeaker": {
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": true,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.StepSpeaker"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              }
            }
          }
        },
        "SceneController": {
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version",
              "supportsDeactivation"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.SceneController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "supportsDeactivation": {
                "type": "boolean"
              }
            }
          }
        },
        "ToggleController": {
          "toggleState":
          {
            "property":
            {
              "type": "object",
              "required": [
                "namespace",
                "instance",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties":
              {
                "namespace":
                {
                  "enum": [
                    "Alexa.ToggleController"
                  ]
                },
                "instance":
                {
                  "$ref": "#/definitions/common.properties/instance"
                },
                "name":
                {
                  "enum": [
                    "toggleState"
                  ]
                },
                "value":
                {
                  "enum": [
                    "ON",
                    "OFF"
                  ]
                },
                "timeOfSample":
                {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds":
                {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities":
          {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version",
              "instance",
              "capabilityResources"
            ],
            "additionalProperties": false,
            "properties":
            {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.ToggleController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "instance": {
                "type": "string"
              },
              "capabilityResources": {
                "$ref": "#/definitions/common.properties/capabilityResources"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties":
                {
                  "supported":
                  {
                    "type": "array",
                    "uniqueItems": true,
                    "items":
                    {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties":
                      {
                        "name":
                        {
                          "enum": [
                            "toggleState"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported":
                  {
                    "type": "boolean"
                  },
                  "retrievable":
                  {
                    "type": "boolean"
                  },
                  "nonControllable": {
                    "type": "boolean"
                  },
                  "readOnly":{
                    "type": "boolean"
                  }
                }
              },
              "semantics": {
                "type": "object",
                "anyOf": [
                  {
                    "required": [
                      "actionMappings"
                    ]
                  },
                  {
                    "required": [
                      "stateMappings"
                    ]
                  }
                ],
                "additionalProperties": false,
                "properties": {
                  "actionMappings": {
                    "type": "array",
                    "minItems": 1,
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "@type",
                        "actions",
                        "directive"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "@type": {
                          "enum": [
                            "ActionsToDirective"
                          ]
                        },
                        "actions": {
                          "type": "array",
                          "uniqueItems": true,
                          "items": {
                            "$ref": "#/definitions/common.properties/semantics/actions"
                          }
                        },
                        "directive": {
                          "$ref": "#/definitions/common.properties/directives/toggleState"
                        }
                      }
                    }
                  },
                  "stateMappings": {
                    "type": "array",
                    "minItems": 1,
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "@type",
                        "states",
                        "value"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "@type": {
                          "enum": [
                            "StatesToValue"
                          ]
                        },
                        "states": {
                          "type": "array",
                          "uniqueItems": true,
                          "items": {
                            "$ref": "#/definitions/common.properties/semantics/states"
                          }
                        },
                        "value": {
                          "enum": [
                            "ON",
                            "OFF"
                          ]
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "ModeController": {
          "mode": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "instance",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.ModeController"
                  ]
                },
                "instance":
                {
                  "$ref": "#/definitions/common.properties/instance"
                },
                "name": {
                  "enum": [
                    "mode"
                  ]
                },
                "value": {
                  "type": "string",
                  "maxLength": 100,
                  "minLength": 1
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version",
              "instance",
              "capabilityResources",
              "configuration"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.ModeController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "instance": {
                "type": "string"
              },
              "capabilityResources": {
                "$ref": "#/definitions/common.properties/capabilityResources"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "mode"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  },
                  "nonControllable": {
                    "type": "boolean"
                  },
                  "readOnly":{
                    "type": "boolean"
                  }
                }
              },
              "configuration": {
                "type": "object",
                "required": [
                  "ordered",
                  "supportedModes"
                ],
                "additionalProperties": false,
                "properties": {
                  "ordered": {
                    "type": "boolean"
                  },
                  "supportedModes": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 100,
                    "uniqueItems": true,
                    "additionalProperties": false,
                    "items": {
                      "type": "object",
                      "required": [
                        "value",
                        "modeResources"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "value": {
                          "type": "string",
                          "maxLength": 100,
                          "minLength": 1
                        },
                        "modeResources": {
                          "type": "object",
                          "required": [
                            "friendlyNames"
                          ],
                          "additionalProperties": false,
                          "properties": {
                            "friendlyNames": {
                              "$ref": "#/definitions/common.properties/resourceArray"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              },
              "semantics": {
                "type": "object",
                "anyOf": [
                  {
                    "required": [
                      "actionMappings"
                    ]
                  },
                  {
                    "required": [
                      "stateMappings"
                    ]
                  }
                ],
                "additionalProperties": false,
                "properties": {
                  "actionMappings": {
                    "type": "array",
                    "minItems": 1,
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "@type",
                        "actions",
                        "directive"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "@type": {
                          "enum": [
                            "ActionsToDirective"
                          ]
                        },
                        "actions": {
                          "type": "array",
                          "uniqueItems": true,
                          "items": {
                            "$ref": "#/definitions/common.properties/semantics/actions"
                          }
                        },
                        "directive": {
                          "$ref": "#/definitions/common.properties/directives/mode"
                        }
                      }
                    }
                  },
                  "stateMappings": {
                    "type": "array",
                    "minItems": 1,
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "@type",
                        "states",
                        "value"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "@type": {
                          "enum": [
                            "StatesToValue"
                          ]
                        },
                        "states": {
                          "type": "array",
                          "uniqueItems": true,
                          "items": {
                            "$ref": "#/definitions/common.properties/semantics/states"
                          }
                        },
                        "value": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "RangeController": {
          "rangeValue": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "instance",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.RangeController"
                  ]
                },
                "instance":
                {
                  "$ref": "#/definitions/common.properties/instance"
                },
                "name": {
                  "enum": [
                    "rangeValue"
                  ]
                },
                "value": {
                  "type": "number"
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version",
              "instance",
              "capabilityResources",
              "configuration"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.RangeController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "instance": {
                "type": "string"
              },
              "capabilityResources": {
                "$ref": "#/definitions/common.properties/capabilityResources"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "rangeValue"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  },
                  "nonControllable": {
                    "type": "boolean"
                  },
                  "readOnly":{
                    "type": "boolean"
                  }
                }
              },
              "configuration": {
                "type": "object",
                "required": [
                  "supportedRange"
                ],
                "additionalProperties": false,
                "properties": {
                  "supportedRange": {
                    "type": "object",
                    "required": [
                      "minimumValue",
                      "maximumValue",
                      "precision"
                    ],
                    "additionalProperties": false,
                    "properties": {
                      "minimumValue": {
                        "type": "number"
                      },
                      "maximumValue": {
                        "type": "number"
                      },
                      "precision": {
                        "type": "number"
                      }
                    }
                  },
                  "unitOfMeasure": {
                    "type": "string"
                  },
                  "presets": {
                    "type": "array",
                    "minItems": 0,
                    "maxItems": 100,
                    "uniqueItems": true,
                    "additionalProperties": false,
                    "items": {
                      "type": "object",
                      "required": [
                        "rangeValue",
                        "presetResources"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "rangeValue": {
                          "type": "number"
                        },
                        "presetResources": {
                          "type": "object",
                          "required": [
                            "friendlyNames"
                          ],
                          "additionalProperties": false,
                          "properties": {
                            "friendlyNames": {
                              "$ref": "#/definitions/common.properties/resourceArray"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              },
              "semantics": {
                "type": "object",
                "anyOf": [
                  {
                    "required": [
                      "actionMappings"
                    ]
                  },
                  {
                    "required": [
                      "stateMappings"
                    ]
                  }
                ],
                "additionalProperties": false,
                "properties": {
                  "actionMappings": {
                    "type": "array",
                    "minItems": 1,
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "@type",
                        "actions",
                        "directive"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "@type": {
                          "enum": [
                            "ActionsToDirective"
                          ]
                        },
                        "actions": {
                          "type": "array",
                          "uniqueItems": true,
                          "items": {
                            "$ref": "#/definitions/common.properties/semantics/actions"
                          }
                        },
                        "directive": {
                          "$ref": "#/definitions/common.properties/directives/rangeValue"
                        }
                      }
                    }
                  },
                  "stateMappings": {
                    "type": "array",
                    "minItems": 1,
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "oneOf": [
                        {
                          "required": [
                            "@type",
                            "states",
                            "range"
                          ],
                          "additionalProperties": false,
                          "properties": {
                            "@type": {
                              "enum": [
                                "StatesToRange"
                              ]
                            },
                            "states": {
                              "type": "array",
                              "uniqueItems": true,
                              "items": {
                                "$ref": "#/definitions/common.properties/semantics/states"
                              }
                            },
                            "range": {
                              "type": "object",
                              "required": [
                                "minimumValue",
                                "maximumValue"
                              ],
                              "additionalProperties": false,
                              "properties": {
                                "minimumValue": {
                                  "type": "number"
                                },
                                "maximumValue": {
                                  "type": "number"
                                }
                              }
                            }
                          }
                        },
                        {
                          "required": [
                            "@type",
                            "states",
                            "value"
                          ],
                          "additionalProperties": false,
                          "properties": {
                            "@type": {
                              "enum": [
                                "StatesToValue"
                              ]
                            },
                            "states": {
                              "type": "array",
                              "uniqueItems": true,
                              "items": {
                                "$ref": "#/definitions/common.properties/semantics/states"
                              }
                            },
                            "value": {
                              "type": "number"
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "DoorbellEventSource": {
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": true,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.DoorbellEventSource"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              }
            }
          }
        },
        "RTCSessionController": {
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": true,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.RTCSessionController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              }
            }
          }
        },
        "MediaMetadata": {
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": true,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.MediaMetadata"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              }
            }
          }
        },
        "EqualizerController": {
          "bands": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.EqualizerController"
                  ]
                },
                "name": {
                  "enum": [
                    "bands"
                  ]
                },
                "value": {
                  "type": "array",
                  "uniqueItems": true,
                  "items": {
                    "type": "object",
                    "required": [
                      "name",
                      "value"
                    ],
                    "additionalProperties": false,
                    "properties": {
                      "name": {
                        "$ref": "#/definitions/common.properties/equalizerBands"
                      },
                      "value": {
                        "type": "number"
                      }
                    }
                  }
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "mode": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.EqualizerController"
                  ]
                },
                "name": {
                  "enum": [
                    "mode"
                  ]
                },
                "value": {
                  "$ref": "#/definitions/common.properties/equalizerMode"
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version",
              "configurations"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.EqualizerController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "configurations": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "bands": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "supported": {
                        "type": "array",
                        "uniqueItems": true,
                        "items": {
                          "type": "object",
                          "required": [
                            "name"
                          ],
                          "additionalProperties": false,
                          "properties": {
                            "name": {
                              "$ref": "#/definitions/common.properties/equalizerBands"
                            }
                          }
                        }
                      },
                      "range": {
                        "type": "object",
                        "required": [
                          "minimum",
                          "maximum"
                        ],
                        "additionalProperties": false,
                        "properties": {
                          "minimum": {
                            "type": "number"
                          },
                          "maximum": {
                            "type": "number"
                          }
                        }
                      }
                    }
                  },
                  "modes": {
                    "type": "object",
                    "additionalProperties": false,
                    "properties": {
                      "supported": {
                        "type": "array",
                        "uniqueItems": true,
                        "items": {
                          "type": "object",
                          "required": [
                            "name"
                          ],
                          "additionalProperties": false,
                          "properties": {
                            "name": {
                              "$ref": "#/definitions/common.properties/equalizerMode"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "bands",
                            "modes"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "PlaybackController": {
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.PlaybackController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "supportedOperations": {
                "type": "array",
                "uniqueItems": true,
                "items": {
                  "enum": [
                    "Play",
                    "Pause",
                    "Stop",
                    "StartOver",
                    "Previous",
                    "Next",
                    "Rewind",
                    "FastForward"
                  ]
                }
              }
            }
          }
        },
        "PlaybackStateReporter": {
          "playbackState": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.PlaybackStateReporter"
                  ]
                },
                "name": {
                  "enum": [
                    "playbackState"
                  ]
                },
                "value": {
                  "type": "object",
                  "required": [
                    "state"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "state": {
                      "enum": [
                        "PLAYING",
                        "PAUSED",
                        "STOPPED"
                      ]
                    }
                  }
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.PlaybackStateReporter"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "playbackState"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "MotionSensor": {
          "detectionState": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.MotionSensor"
                  ]
                },
                "name": {
                  "enum": [
                    "detectionState"
                  ]
                },
                "value": {
                  "enum": [
                    "DETECTED",
                    "NOT_DETECTED"
                  ]
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.MotionSensor"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "detectionState"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "ContactSensor": {
          "detectionState": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.ContactSensor"
                  ]
                },
                "name": {
                  "enum": [
                    "detectionState"
                  ]
                },
                "value": {
                  "enum": [
                    "DETECTED",
                    "NOT_DETECTED"
                  ]
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.ContactSensor"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "detectionState"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              }
            }
          }
        },
        "SecurityPanelController": {
          "alarmState": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.SecurityPanelController"
                  ]
                },
                "name": {
                  "enum": [
                    "burglaryAlarm",
                    "fireAlarm",
                    "carbonMonoxideAlarm",
                    "waterAlarm"
                  ]
                },
                "value": {
                  "enum": [
                    "OK",
                    "ALARM"
                  ]
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "armState": {
            "property": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "value",
                "timeOfSample",
                "uncertaintyInMilliseconds"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.SecurityPanelController"
                  ]
                },
                "name": {
                  "enum": [
                    "armState"
                  ]
                },
                "value": {
                  "$ref": "#/definitions/common.properties/armState"
                },
                "timeOfSample": {
                  "$ref": "#/definitions/common.properties/timestamp"
                },
                "uncertaintyInMilliseconds": {
                  "$ref": "#/definitions/common.properties/uncertaintyInMilliseconds"
                }
              }
            }
          },
          "capabilities": {
            "type": "object",
            "required": [
              "type",
              "interface",
              "version",
              "configuration"
            ],
            "additionalProperties": false,
            "properties": {
              "type": {
                "enum": [
                  "AlexaInterface"
                ]
              },
              "interface": {
                "enum": [
                  "Alexa.SecurityPanelController"
                ]
              },
              "version": {
                "$ref": "#/definitions/common.properties/version"
              },
              "properties": {
                "type": "object",
                "required": [
                  "supported",
                  "proactivelyReported",
                  "retrievable"
                ],
                "additionalProperties": false,
                "properties": {
                  "supported": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "name"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "enum": [
                            "armState",
                            "burglaryAlarm",
                            "fireAlarm",
                            "carbonMonoxideAlarm",
                            "waterAlarm"
                          ]
                        }
                      }
                    }
                  },
                  "proactivelyReported": {
                    "type": "boolean"
                  },
                  "retrievable": {
                    "type": "boolean"
                  }
                }
              },
              "configuration": {
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "supportedAuthorizationTypes": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "type"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "type": {
                          "enum": [
                            "FOUR_DIGIT_PIN"
                          ]
                        }
                      }
                    }
                  },
                  "supportedArmStates": {
                    "type": "array",
                    "uniqueItems": true,
                    "items": {
                      "type": "object",
                      "required": [
                        "value"
                      ],
                      "additionalProperties": false,
                      "properties": {
                        "value": {
                          "$ref": "#/definitions/common.properties/armState"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "state.properties": {
        "type": "array",
        "uniqueItems": true,
        "additionalItems": false,
        "items": {
          "anyOf": [
            {
              "$ref": "#/definitions/common.properties/interfaces/EndpointHealth/connectivity/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/PowerController/powerState/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/PowerLevelController/powerLevel/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/PercentageController/percentage/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/BrightnessController/brightness/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/ColorController/color/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/ColorTemperatureController/colorTemperatureInKelvin/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/LockController/lockState/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/ThermostatController/setpoint/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/ThermostatController/thermostatMode/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/TemperatureSensor/temperature/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/ChannelController/channel/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/InputController/input/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/Speaker/volume/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/Speaker/muted/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/ToggleController/toggleState/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/RangeController/rangeValue/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/ModeController/mode/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/EqualizerController/bands/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/EqualizerController/mode/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/PlaybackStateReporter/playbackState/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/MotionSensor/detectionState/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/ContactSensor/detectionState/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/SecurityPanelController/alarmState/property"
            },
            {
              "$ref": "#/definitions/common.properties/interfaces/SecurityPanelController/armState/property"
            }
          ]
        }
      },
      "context": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "properties": {
            "$ref": "#/definitions/common.properties/state.properties"
          }
        }
      },
      "directives": {
        "mode": {
          "type": "object",
          "required": [
            "name",
            "payload"
          ],
          "additionalProperties": false,
          "properties": {
            "name": {
              "enum": [
                "SetMode",
                "AdjustMode"
              ]
            },
            "payload": {
              "oneOf": [
                {
                  "$ref": "#/definitions/common.properties/payload/mode"
                },
                {
                  "$ref": "#/definitions/common.properties/payload/modeDelta"
                }
              ]
            }
          }
        },
        "rangeValue": {
          "type": "object",
          "required": [
            "name",
            "payload"
          ],
          "additionalProperties": false,
          "properties": {
            "name": {
              "enum": [
                "SetRangeValue",
                "AdjustRangeValue"
              ]
            },
            "payload": {
              "oneOf": [
                {
                  "$ref": "#/definitions/common.properties/payload/rangeValue"
                },
                {
                  "$ref": "#/definitions/common.properties/payload/rangeValueDelta"
                }
              ]
            }
          }
        },
        "toggleState": {
          "type": "object",
          "required": [
            "name",
            "payload"
          ],
          "additionalProperties": false,
          "properties": {
            "name": {
              "enum": [
                "TurnOn",
                "TurnOff"
              ]
            },
            "payload": {
              "type": "object",
              "additionalProperties": false,
              "properties": {},
              "maxProperties": 0
            }
          }
        }
      },
      "payload": {
        "cameraStreams": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "cameraStreams": {
              "type": "array",
              "uniqueItems": true,
              "minItems": 1,
              "items": {
                "$ref": "#/definitions/common.properties/cameraStream"
              }
            },
            "imageUri": {
              "type": "string",
              "format": "uri"
            }
          }
        },
        "mode": {
          "type": "object",
          "required": [
            "mode"
          ],
          "additionalProperties": false,
          "properties": {
            "mode": {
              "type": "string"
            }
          }
        },
        "modeDelta": {
          "type": "object",
          "required": [
            "modeDelta"
          ],
          "additionalProperties": false,
          "properties": {
            "modeDelta": {
              "type": "integer"
            }
          }
        },
        "rangeValue": {
          "type": "object",
          "required": [
            "rangeValue"
          ],
          "additionalProperties": false,
          "properties": {
            "rangeValue": {
              "type": "number"
            }
          }
        },
        "rangeValueDelta": {
          "type": "object",
          "required": [
            "rangeValueDelta",
            "rangeValueDeltaDefault"
          ],
          "additionalProperties": false,
          "properties": {
            "rangeValueDelta": {
              "type": "number"
            },
            "rangeValueDeltaDefault": {
              "type": "boolean"
            }
          }
        },
        "sceneActivationDeactivation": {
          "type": "object",
          "required": [
            "cause",
            "timestamp"
          ],
          "additionalProperties": false,
          "properties": {
            "cause": {
              "$ref": "#/definitions/common.properties/cause"
            },
            "timestamp": {
              "$ref": "#/definitions/common.properties/timestamp"
            }
          }
        },
        "securityPanelArm": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "exitDelayInSeconds": {
              "type": "integer",
              "minimum": 0,
              "maximum": 255
            }
          }
        }
      },
      "discoveredEndpointArray": {
        "type": "array",
        "uniqueItems": true,
        "maxItems": 300,
        "items": {
          "type": "object",
          "required": [
            "endpointId",
            "manufacturerName",
            "friendlyName",
            "description",
            "displayCategories",
            "capabilities"
          ],
          "properties": {
            "endpointId": {
              "$ref": "#/definitions/common.properties/endpointId"
            },
            "manufacturerName": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "friendlyName": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "description": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            },
            "displayCategories": {
              "type": "array",
              "minItems": 1,
              "uniqueItems": true,
              "items": {
                "enum": [
                  "LIGHT",
                  "SMARTPLUG",
                  "SWITCH",
                  "CAMERA",
                  "DOOR",
                  "DOORBELL",
                  "THERMOSTAT",
                  "TEMPERATURE_SENSOR",
                  "CONTACT_SENSOR",
                  "MICROWAVE",
                  "MOTION_SENSOR",
                  "SPEAKER",
                  "TV",
                  "SMARTLOCK",
                  "SCENE_TRIGGER",
                  "ACTIVITY_TRIGGER",
                  "SECURITY_PANEL",
                  "COMPUTER",
                  "EXTERIOR_BLIND",
                  "FAN",
                  "GAME_CONSOLE",
                  "GARAGE_DOOR",
                  "INTERIOR_BLIND",
                  "LAPTOP",
                  "MOBILE_PHONE",
                  "MUSIC_SYSTEM",
                  "NETWORK_HARDWARE",
                  "OVEN",
                  "PHONE",
                  "SCREEN",
                  "STREAMING_DEVICE",
                  "TABLET",
                  "WEARABLE",
                  "OTHER"
                ]
              }
            },
            "cookie": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "capabilities": {
              "type": "array",
              "minItems": 1,
              "uniqueItems": true,
              "additionalItems": false,
              "items": {
                "anyOf": [
                  {
                    "$ref": "#/definitions/common.properties/interfaces/Alexa/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/EndpointHealth/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/PowerController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/PowerLevelController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/PercentageController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/BrightnessController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/CameraStreamController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/ColorController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/ColorTemperatureController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/LockController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/ThermostatController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/TemperatureSensor/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/ChannelController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/InputController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/Speaker/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/StepSpeaker/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/SceneController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/ToggleController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/ModeController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/RangeController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/CustomIntent/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/DoorbellEventSource/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/RTCSessionController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/MediaMetadata/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/EqualizerController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/PlaybackController/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/PlaybackStateReporter/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/ContactSensor/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/MotionSensor/capabilities"
                  },
                  {
                    "$ref": "#/definitions/common.properties/interfaces/SecurityPanelController/capabilities"
                  }
                ]
              }
            },
            "connections": {
              "type": "array",
              "items": {
                "type": "object",
                "required": ["type"],
                "properties": {
                  "type": {
                    "minItems": 1,
                    "maxItems": 1,
                    "enum": [
                      "TCP_IP",
                      "ZIGBEE",
                      "ZWAVE",
                      "UNKNOWN"
                    ]
                  },
                  "macAddress":{
                    "type:": "string"
                  },
                  "homeId":{
                    "type:": "string"
                  },
                  "nodeId":{
                    "type:": "string"
                  },
                  "value":{
                    "type:": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalAttributes": {
              "type": "object",
              "properties": {
                "manufacturer": {
                  "type": "string",
                  "maxLength": 256
                },
                "model":{
                  "type:": "string",
                  "maxLength": 256
                },
                "serialNumber":{
                  "type:": "string",
                  "maxLength": 256
                },
                "firmwareVersion":{
                  "type:": "string",
                  "maxLength": 256
                },
                "softwareVersion":{
                  "type:": "string",
                  "maxLength": 256
                },
                "customIdentifier":{
                  "type:": "string",
                  "maxLength": 256
                }
              },
              "additionalProperties": false
            }
          }
        }
      },
      "scope": {
        "type": "object",
        "required": [
          "type",
          "token"
        ],
        "properties": {
          "type": {
            "enum": [
              "BearerToken"
            ]
          },
          "token": {
            "type": "string",
            "minLength": 1
          }
        }
      }
    },
    "ErrorResponse.properties": {
      "name": {
        "enum": [
          "ErrorResponse"
        ]
      },
      "header.general": {
        "type": "object",
        "required": [
          "namespace",
          "name",
          "payloadVersion",
          "messageId"
        ],
        "additionalProperties": false,
        "properties": {
          "namespace": {
            "enum": [
              "Alexa"
            ]
          },
          "name": {
            "$ref": "#/definitions/ErrorResponse.properties/name"
          },
          "payloadVersion": {
            "$ref": "#/definitions/common.properties/payloadVersion"
          },
          "messageId": {
            "$ref": "#/definitions/common.properties/messageId"
          },
          "correlationToken": {
            "$ref": "#/definitions/common.properties/correlationToken"
          }
        }
      },
      "header.ThermostatController": {
        "type": "object",
        "required": [
          "namespace",
          "name",
          "payloadVersion",
          "messageId"
        ],
        "additionalProperties": false,
        "properties": {
          "namespace": {
            "enum": [
              "Alexa.ThermostatController"
            ]
          },
          "name": {
            "$ref": "#/definitions/ErrorResponse.properties/name"
          },
          "payloadVersion": {
            "$ref": "#/definitions/common.properties/payloadVersion"
          },
          "messageId": {
            "$ref": "#/definitions/common.properties/messageId"
          },
          "correlationToken": {
            "$ref": "#/definitions/common.properties/correlationToken"
          }
        }
      },
      "header.SecurityPanelController": {
        "type": "object",
        "required": [
          "namespace",
          "name",
          "payloadVersion",
          "messageId"
        ],
        "additionalProperties": false,
        "properties": {
          "namespace": {
            "enum": [
              "Alexa.SecurityPanelController"
            ]
          },
          "name": {
            "$ref": "#/definitions/ErrorResponse.properties/name"
          },
          "payloadVersion": {
            "$ref": "#/definitions/common.properties/payloadVersion"
          },
          "messageId": {
            "$ref": "#/definitions/common.properties/messageId"
          },
          "correlationToken": {
            "$ref": "#/definitions/common.properties/correlationToken"
          }
        }
      },
      "header.ColorTemperatureController": {
        "type": "object",
        "required": [
          "namespace",
          "name",
          "payloadVersion",
          "messageId"
        ],
        "additionalProperties": false,
        "properties": {
          "namespace": {
            "enum": [
              "Alexa.ColorTemperatureController"
            ]
          },
          "name": {
            "$ref": "#/definitions/ErrorResponse.properties/name"
          },
          "payloadVersion": {
            "$ref": "#/definitions/common.properties/payloadVersion"
          },
          "messageId": {
            "$ref": "#/definitions/common.properties/messageId"
          },
          "correlationToken": {
            "$ref": "#/definitions/common.properties/correlationToken"
          }
        }
      },
      "header.Authorization": {
        "type": "object",
        "required": [
          "namespace",
          "name",
          "payloadVersion",
          "messageId"
        ],
        "additionalProperties": false,
        "properties": {
          "namespace": {
            "enum": [
              "Alexa.Authorization"
            ]
          },
          "name": {
            "$ref": "#/definitions/ErrorResponse.properties/name"
          },
          "payloadVersion": {
            "$ref": "#/definitions/common.properties/payloadVersion"
          },
          "messageId": {
            "$ref": "#/definitions/common.properties/messageId"
          },
          "correlationToken": {
            "$ref": "#/definitions/common.properties/correlationToken"
          }
        }
      },
      "payload.general": {
        "type": "object",
        "required": [
          "type"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "enum": [
              "BRIDGE_UNREACHABLE",
              "ENDPOINT_BUSY",
              "ENDPOINT_LOW_POWER",
              "ENDPOINT_UNREACHABLE",
              "EXPIRED_AUTHORIZATION_CREDENTIAL",
              "FIRMWARE_OUT_OF_DATE",
              "HARDWARE_MALFUNCTION",
              "INTERNAL_ERROR",
              "INVALID_AUTHORIZATION_CREDENTIAL",
              "INVALID_DIRECTIVE",
              "INVALID_VALUE",
              "NO_SUCH_ENDPOINT",
              "RATE_LIMIT_EXCEEDED",
              "ACCEPT_GRANT_FAILED"
            ]
          },
          "message": {
            "$ref": "#/definitions/common.properties/message"
          }
        }
      },
      "payload.general.VALUE_OUT_OF_RANGE": {
        "type": "object",
        "required": [
          "type"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "enum": [
              "VALUE_OUT_OF_RANGE"
            ]
          },
          "message": {
            "$ref": "#/definitions/common.properties/message"
          },
          "validRange": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "minimumValue": {
                "type": "number"
              },
              "maximumValue": {
                "type": "number"
              }
            }
          }
        }
      },
      "payload.general.NOT_SUPPORTED_IN_CURRENT_MODE": {
        "type": "object",
        "required": [
          "type"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "enum": [
              "NOT_SUPPORTED_IN_CURRENT_MODE"
            ]
          },
          "message": {
            "$ref": "#/definitions/common.properties/message"
          },
          "currentDeviceMode": {
            "$ref": "#/definitions/common.properties/currentDeviceMode"
          }
        }
      },
      "payload.general.ENDPOINT_LOW_POWER": {
        "type": "object",
        "required": [
          "type"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "enum": [
              "ENDPOINT_LOW_POWER"
            ]
          },
          "message": {
            "$ref": "#/definitions/common.properties/message"
          },
          "percentageState": {
            "type": "number"
          }
        }
      },
      "payload.general.TEMPERATURE_VALUE_OUT_OF_RANGE": {
        "type": "object",
        "required": [
          "type"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "enum": [
              "TEMPERATURE_VALUE_OUT_OF_RANGE"
            ]
          },
          "message": {
            "$ref": "#/definitions/common.properties/message"
          },
          "validRange": {
            "type": "object",
            "additionalProperties": false,
            "properties": {
              "minimumValue": {
                "$ref": "#/definitions/common.properties/temperature"
              },
              "maximumValue": {
                "$ref": "#/definitions/common.properties/temperature"
              }
            }
          }
        }
      },
      "payload.ThermostatController.general": {
        "type": "object",
        "required": [
          "type"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "enum": [
              "THERMOSTAT_IS_OFF",
              "UNSUPPORTED_THERMOSTAT_MODE",
              "DUAL_SETPOINTS_UNSUPPORTED",
              "TRIPLE_SETPOINTS_UNSUPPORTED",
              "UNWILLING_TO_SET_VALUE"
            ]
          },
          "message": {
            "$ref": "#/definitions/common.properties/message"
          }
        }
      },
      "payload.ThermostatController.REQUESTED_SETPOINTS_TOO_CLOSE": {
        "type": "object",
        "required": [
          "type"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "enum": [
              "REQUESTED_SETPOINTS_TOO_CLOSE"
            ]
          },
          "message": {
            "$ref": "#/definitions/common.properties/message"
          },
          "minimumTemperatureDelta": {
            "$ref": "#/definitions/common.properties/temperature"
          }
        }
      },
      "payload.SecurityPanelController.general": {
        "type": "object",
        "required": [
          "type"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "enum": [
              "AUTHORIZATION_REQUIRED",
              "BYPASS_NEEDED",
              "NOT_READY",
              "UNAUTHORIZED",
              "UNCLEARED_ALARM",
              "UNCLEARED_TROUBLE"
            ]
          },
          "message": {
            "$ref": "#/definitions/common.properties/message"
          }
        }
      },
      "payload.ColorTemperatureController.NOT_SUPPORTED_IN_CURRENT_MODE": {
        "type": "object",
        "required": [
          "type"
        ],
        "additionalProperties": false,
        "properties": {
          "type": {
            "enum": [
              "NOT_SUPPORTED_IN_CURRENT_MODE"
            ]
          },
          "message": {
            "$ref": "#/definitions/common.properties/message"
          },
          "currentDeviceMode": {
            "enum": [
              "COLOR"
            ]
          }
        }
      }
    },
    "ResponseOrStateReport.properties": {
      "name": {
        "enum": [
          "Response",
          "StateReport",
          "ActivationStarted",
          "DeactivationStarted",
          "AcceptGrant.Response",
          "Arm.Response"
        ]
      },
      "with.payload": {
        "type": "object",
        "required": [
          "event"
        ],
        "additionalProperties": false,
        "properties": {
          "context": {
            "$ref": "#/definitions/common.properties/context"
          },
          "event": {
            "type": "object",
            "required": [
              "header",
              "payload"
            ],
            "additionalProperties": false,
            "properties": {
              "header": {
                "type": "object",
                "required": [
                  "namespace",
                  "name",
                  "payloadVersion",
                  "messageId"
                ],
                "additionalProperties": false,
                "properties": {
                  "namespace": {
                    "enum": [
                      "Alexa.CameraStreamController",
                      "Alexa.SceneController",
                      "Alexa.SecurityPanelController"
                    ]
                  },
                  "name": {
                    "$ref": "#/definitions/ResponseOrStateReport.properties/name"
                  },
                  "payloadVersion": {
                    "$ref": "#/definitions/common.properties/payloadVersion"
                  },
                  "messageId": {
                    "$ref": "#/definitions/common.properties/messageId"
                  },
                  "correlationToken": {
                    "$ref": "#/definitions/common.properties/correlationToken"
                  }
                }
              },
              "endpoint": {
                "$ref": "#/definitions/common.properties/endpoint"
              },
              "payload": {
                "oneOf": [
                  {
                    "$ref": "#/definitions/common.properties/payload/cameraStreams"
                  },
                  {
                    "$ref": "#/definitions/common.properties/payload/sceneActivationDeactivation"
                  },
                  {
                    "$ref": "#/definitions/common.properties/payload/securityPanelArm"
                  }
                ],
                "minProperties": 1
              }
            }
          }
        }
      },
      "without.payload": {
        "type": "object",
        "required": [
          "event"
        ],
        "additionalProperties": false,
        "properties": {
          "context": {
            "$ref": "#/definitions/common.properties/context"
          },
          "event": {
            "type": "object",
            "required": [
              "header",
              "payload"
            ],
            "additionalProperties": false,
            "properties": {
              "header": {
                "type": "object",
                "required": [
                  "namespace",
                  "name",
                  "payloadVersion",
                  "messageId"
                ],
                "additionalProperties": false,
                "properties": {
                  "namespace": {
                    "enum": [
                      "Alexa",
                      "Alexa.Authorization",
                      "Alexa.SecurityPanelController"
                    ]
                  },
                  "name": {
                    "$ref": "#/definitions/ResponseOrStateReport.properties/name"
                  },
                  "payloadVersion": {
                    "$ref": "#/definitions/common.properties/payloadVersion"
                  },
                  "messageId": {
                    "$ref": "#/definitions/common.properties/messageId"
                  },
                  "correlationToken": {
                    "$ref": "#/definitions/common.properties/correlationToken"
                  }
                }
              },
              "endpoint": {
                "$ref": "#/definitions/common.properties/endpoint"
              },
              "payload": {
                "type": "object",
                "additionalProperties": false,
                "properties": {},
                "maxProperties": 0
              }
            }
          }
        }
      }
    },
    "ChangeReport.properties": {
      "name": {
        "enum": [
          "ChangeReport"
        ]
      }
    },
    "DeferredResponse.properties": {
      "name": {
        "enum": [
          "DeferredResponse"
        ]
      }
    },
    "Discover.Response.properties": {
      "name": {
        "enum": [
          "Discover.Response"
        ]
      }
    },
    "AddOrUpdateReport.properties": {
      "name": {
        "enum": [
          "AddOrUpdateReport"
        ]
      }
    }
  },
  "oneOf": [
    {
      "description": "An ErrorResponse message",
      "type": "object",
      "required": [
        "event"
      ],
      "additionalProperties": false,
      "properties": {
        "context": {
          "$ref": "#/definitions/common.properties/context"
        },
        "event": {
          "type": "object",
          "required": [
            "header",
            "payload"
          ],
          "oneOf": [
            {
              "additionalProperties": false,
              "properties": {
                "header": {
                  "$ref": "#/definitions/ErrorResponse.properties/header.general"
                },
                "endpoint": {
                  "$ref": "#/definitions/common.properties/endpoint"
                },
                "payload": {
                  "$ref": "#/definitions/ErrorResponse.properties/payload.general"
                }
              }
            },
            {
              "additionalProperties": false,
              "properties": {
                "header": {
                  "$ref": "#/definitions/ErrorResponse.properties/header.general"
                },
                "endpoint": {
                  "$ref": "#/definitions/common.properties/endpoint"
                },
                "payload": {
                  "$ref": "#/definitions/ErrorResponse.properties/payload.general.VALUE_OUT_OF_RANGE"
                }
              }
            },
            {
              "additionalProperties": false,
              "properties": {
                "header": {
                  "$ref": "#/definitions/ErrorResponse.properties/header.general"
                },
                "endpoint": {
                  "$ref": "#/definitions/common.properties/endpoint"
                },
                "payload": {
                  "$ref": "#/definitions/ErrorResponse.properties/payload.general.NOT_SUPPORTED_IN_CURRENT_MODE"
                }
              }
            },
            {
              "additionalProperties": false,
              "properties": {
                "header": {
                  "$ref": "#/definitions/ErrorResponse.properties/header.SecurityPanelController"
                },
                "endpoint": {
                  "$ref": "#/definitions/common.properties/endpoint"
                },
                "payload": {
                  "$ref": "#/definitions/ErrorResponse.properties/payload.SecurityPanelController.general"
                }
              }
            },
            {
              "additionalProperties": false,
              "properties": {
                "header": {
                  "$ref": "#/definitions/ErrorResponse.properties/header.ColorTemperatureController"
                },
                "endpoint": {
                  "$ref": "#/definitions/common.properties/endpoint"
                },
                "payload": {
                  "$ref": "#/definitions/ErrorResponse.properties/payload.ColorTemperatureController.NOT_SUPPORTED_IN_CURRENT_MODE"
                }
              }
            },
            {
              "additionalProperties": false,
              "properties": {
                "header": {
                  "$ref": "#/definitions/ErrorResponse.properties/header.general"
                },
                "endpoint": {
                  "$ref": "#/definitions/common.properties/endpoint"
                },
                "payload": {
                  "$ref": "#/definitions/ErrorResponse.properties/payload.general.ENDPOINT_LOW_POWER"
                }
              }
            },
            {
              "additionalProperties": false,
              "properties": {
                "header": {
                  "$ref": "#/definitions/ErrorResponse.properties/header.ThermostatController"
                },
                "endpoint": {
                  "$ref": "#/definitions/common.properties/endpoint"
                },
                "payload": {
                  "$ref": "#/definitions/ErrorResponse.properties/payload.ThermostatController.general"
                }
              }
            },
            {
              "additionalProperties": false,
              "properties": {
                "header": {
                  "$ref": "#/definitions/ErrorResponse.properties/header.general"
                },
                "endpoint": {
                  "$ref": "#/definitions/common.properties/endpoint"
                },
                "payload": {
                  "$ref": "#/definitions/ErrorResponse.properties/payload.general.TEMPERATURE_VALUE_OUT_OF_RANGE"
                }
              }
            },
            {
              "additionalProperties": false,
              "properties": {
                "header": {
                  "$ref": "#/definitions/ErrorResponse.properties/header.ThermostatController"
                },
                "endpoint": {
                  "$ref": "#/definitions/common.properties/endpoint"
                },
                "payload": {
                  "$ref": "#/definitions/ErrorResponse.properties/payload.ThermostatController.REQUESTED_SETPOINTS_TOO_CLOSE"
                }
              }
            },
            {
              "additionalProperties": false,
              "properties": {
                "header": {
                  "$ref": "#/definitions/ErrorResponse.properties/header.Authorization"
                },
                "payload": {
                  "$ref": "#/definitions/ErrorResponse.properties/payload.general"
                }
              }
            }
          ]
        }
      }
    },
    {
      "description": "A Response or StateReport message",
      "oneOf": [
        {
          "$ref": "#/definitions/ResponseOrStateReport.properties/with.payload"
        },
        {
          "$ref": "#/definitions/ResponseOrStateReport.properties/without.payload"
        }
      ]
    },
    {
      "description": "A ChangeReport message",
      "type": "object",
      "required": [
        "event"
      ],
      "additionalProperties": false,
      "properties": {
        "context": {
          "$ref": "#/definitions/common.properties/context"
        },
        "event": {
          "type": "object",
          "required": [
            "header",
            "payload"
          ],
          "additionalProperties": false,
          "properties": {
            "header": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "payloadVersion",
                "messageId"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa"
                  ]
                },
                "name": {
                  "$ref": "#/definitions/ChangeReport.properties/name"
                },
                "payloadVersion": {
                  "$ref": "#/definitions/common.properties/payloadVersion"
                },
                "messageId": {
                  "$ref": "#/definitions/common.properties/messageId"
                },
                "correlationToken": {
                  "$ref": "#/definitions/common.properties/correlationToken"
                }
              }
            },
            "endpoint": {
              "$ref": "#/definitions/common.properties/endpoint"
            },
            "payload": {
              "type": "object",
              "required": [
                "change"
              ],
              "additionalProperties": false,
              "properties": {
                "change": {
                  "type": "object",
                  "required": [
                    "cause",
                    "properties"
                  ],
                  "additionalProperties": false,
                  "properties": {
                    "cause": {
                      "$ref": "#/definitions/common.properties/cause"
                    },
                    "properties": {
                      "$ref": "#/definitions/common.properties/state.properties"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    {
      "description": "A DeferredResponse message",
      "type": "object",
      "required": [
        "event"
      ],
      "additionalProperties": false,
      "properties": {
        "event": {
          "type": "object",
          "required": [
            "header",
            "payload"
          ],
          "additionalProperties": false,
          "properties": {
            "header": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "payloadVersion",
                "messageId"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa"
                  ]
                },
                "name": {
                  "$ref": "#/definitions/DeferredResponse.properties/name"
                },
                "payloadVersion": {
                  "$ref": "#/definitions/common.properties/payloadVersion"
                },
                "messageId": {
                  "$ref": "#/definitions/common.properties/messageId"
                },
                "correlationToken": {
                  "$ref": "#/definitions/common.properties/correlationToken"
                }
              }
            },
            "payload": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "estimatedDeferralInSeconds": {
                  "type": "integer",
                  "minimum": 0
                }
              }
            }
          }
        }
      }
    },
    {
      "description": "A Discover.Response message",
      "type": "object",
      "required": [
        "event"
      ],
      "additionalProperties": false,
      "properties": {
        "event": {
          "type": "object",
          "required": [
            "header",
            "payload"
          ],
          "additionalProperties": false,
          "properties": {
            "header": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "payloadVersion",
                "messageId"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.Discovery"
                  ]
                },
                "name": {
                  "$ref": "#/definitions/Discover.Response.properties/name"
                },
                "payloadVersion": {
                  "$ref": "#/definitions/common.properties/payloadVersion"
                },
                "messageId": {
                  "$ref": "#/definitions/common.properties/messageId"
                }
              }
            },
            "payload": {
              "type": "object",
              "required": [
                "endpoints"
              ],
              "additionalProperties": false,
              "properties": {
                "endpoints": {
                  "$ref": "#/definitions/common.properties/discoveredEndpointArray"
                }
              }
            }
          }
        }
      }
    },
    {
      "description": "An AddOrUpdateReport message",
      "type": "object",
      "required": [
        "event"
      ],
      "additionalProperties": false,
      "properties": {
        "event": {
          "type": "object",
          "required": [
            "header",
            "payload"
          ],
          "additionalProperties": false,
          "properties": {
            "header": {
              "type": "object",
              "required": [
                "namespace",
                "name",
                "payloadVersion",
                "messageId"
              ],
              "additionalProperties": false,
              "properties": {
                "namespace": {
                  "enum": [
                    "Alexa.Discovery"
                  ]
                },
                "name": {
                  "$ref": "#/definitions/AddOrUpdateReport.properties/name"
                },
                "payloadVersion": {
                  "$ref": "#/definitions/common.properties/payloadVersion"
                },
                "messageId": {
                  "$ref": "#/definitions/common.properties/messageId"
                }
              }
            },
            "payload": {
              "type": "object",
              "required": [
                "endpoints",
                "scope"
              ],
              "additionalProperties": false,
              "properties": {
                "endpoints": {
                  "$ref": "#/definitions/common.properties/discoveredEndpointArray"
                },
                "scope": {
                  "$ref": "#/definitions/common.properties/scope"
                }
              }
            }
          }
        }
      }
    }
  ]
}
