{
  "openapi": "3.0.0",
  "servers": [
    {
      "url": "http://example.com/setup",
      "variables": {}
    }
  ],
  "info": {
    "contact": {},
    "description": "# Google Home Local API\nThis is an unofficial documentation of the local API used by the Home app to communicate with GH devices.\n[GitHub Repo](https://github.com/rithvikvibhu/GHLocalApi)\n\n[![GitHub stars](https://img.shields.io/github/stars/rithvikvibhu/GHLocalApi)](https://github.com/rithvikvibhu/GHLocalApi/stargazers) [![GitHub license](https://img.shields.io/github/license/rithvikvibhu/GHLocalApi)](https://github.com/rithvikvibhu/GHLocalApi/blob/master/LICENSE.md)\n\n## Getting Started\n\nRequests must be made over HTTPS, port 8443, so the base URL for these endpoints is: `https://<google-home-ip>:8443/setup/`\n\nGet the IP of Google Home from the Google Home app (Device Settings -> End of the list) or from your router.\n\nGET requests are simple, in the browser kind.  \nPOST requests need to set the header (when there's a body): `content-type: application/json`\n\n## Authentication\n\nSince June 2019, most requests (with exceptions like `/setup/eureka_info`) need a local authorization token.\n\nThere are 3 kinds of tokens involved here:\n\n### Local Authorization Token\nThis token must be sent in all requests in the header `cast-local-authorization-token`. It is short-lived (~1 day) and may change unexpectedly (with a sync, change in homegraph, etc.)\n##### Get this token\n- With access to an android device, [get this token directly by either method](https://gist.github.com/rithvikvibhu/1a0f4937af957ef6a78453e3be482c1f).\n- Without a device, or to integrate it with a script, use an access token to get the homegraph and extract the token. To get an access token, read the next section. Check the example section for more info.\n\n### Access Token\nThis is a standard google oauth2 access token. It is in the form `ya29.***`.\nThis gives access to the Google Home Foyer API. These expire in an hour.\nUse this to get the homegraph (and then the local authorization token above).\n##### Get this token\nTo get this access token, either a Google account username/password or a Google Master Token is needed. More info in the gist.\nUse the script [from this gist](https://gist.github.com/rithvikvibhu/952f83ea656c6782fbd0f1645059055d).\n\n### Master Token\nThis is in the form `aas_et/***` and can be used to request access tokens.\n##### Get this token\nThe same [script in the gist](https://gist.github.com/rithvikvibhu/952f83ea656c6782fbd0f1645059055d) that gets the access token can also get the master token. Needs Google account creds.\n\n## Example\n\nHere's the whole flow from just a pair of username/password to using the local API.\n\nPrerequisites:\n- [grpcurl](https://github.com/fullstorydev/grpcurl)\n- [Proto files](https://drive.google.com/drive/folders/1RvnN3y-G23pd2SWHmfV_7sef8QU5GNF4?usp=sharing) (preserve folder structure)\n\n### 1. Get an access token with the script\n- Download get_tokens.py\n- Fill in username and password\n```sh\npython3 get_tokens.py\n# Note down the access token printed.\n```\n\n### 2. Use the access token and get home graph\n- This prints the json and uses jq to parse and filter out the fields deviceName and localAuthToken\n- This will give a list of all devices and their local auth tokens\n```sh\n./grpcurl -H 'authorization: Bearer ya29.a0Af****' \\\n\t-import-path /path/to/protos \\\n\t-proto /path/to/protos/google/internal/home/foyer/v1.proto \\\n\tgooglehomefoyer-pa.googleapis.com:443 \\\n\tgoogle.internal.home.foyer.v1.StructuresService/GetHomeGraph | jq '.home.devices[] | {deviceName, localAuthToken}'\n# Note down the local auth token for the device you want.\n```\n\n### 3. Make the call to the local device using the local auth token\n```sh\ncurl -H \"cast-local-authorization-token: LOCAL_AUTH_TOKEN\" --verbose --insecure https://192.168.0.18:8443/setup/bluetooth/status\n```",
    "title": "Google Home",
    "version": "2.0",
    "x-codegen-settings": {
      "AllowSkippingSSLCertVerification": false,
      "AndroidHttpClient": "ANDROID_OK",
      "AndroidUseAppManifest": false,
      "AppendContentHeaders": true,
      "ApplyCustomizations": [],
      "ArraySerialization": "Indexed",
      "BackoffFactor": 0,
      "BodySerialization": 0,
      "CSharpHttpClient": "UNIREST",
      "CollectParameters": false,
      "DisableDocs": false,
      "DisableLinting": false,
      "DoNotSplitWords": [],
      "EnableAdditionalModelProperties": false,
      "EnableGlobalUserAgent": true,
      "EnableHttpCache": false,
      "EnableImmutableModels": false,
      "EnableLogging": false,
      "EnablePHPComposerVersionString": false,
      "EncodeTemplateParameters": true,
      "ForceKeywordArgsInRuby": false,
      "GenerateAdvancedDocs": true,
      "GenerateAppveyorConfig": false,
      "GenerateAsyncCode": true,
      "GenerateCircleConfig": false,
      "GenerateEnums": true,
      "GenerateExceptions": true,
      "GenerateInterfaces": false,
      "GenerateJenkinsConfig": false,
      "GenerateModels": true,
      "GenerateTravisConfig": false,
      "IgnoreIfNullJson": false,
      "IsLatestVersion": false,
      "JavaHttpClient": "JAVA_OK",
      "JavaUsePropertiesConfig": false,
      "LiftParameterDescriptionFromCustomType": false,
      "ModelSerializationScheme": "Json",
      "NodeHttpClient": "NODE_REQUEST",
      "Nullify404": false,
      "ObjCHttpClient": "UNIREST",
      "PHPHttpClient": "UNIREST",
      "ParameterArrayFormat": "ParamArrayWithIndex",
      "PreserveParameterOrder": true,
      "ResponseMapping": {
        "Type": "Simple"
      },
      "Retries": 0,
      "RetryInterval": 1,
      "ReturnCompleteHttpResponse": false,
      "RunscopeEnabled": false,
      "SecurityProtocols": [
        "Ssl3",
        "Tls"
      ],
      "SortResources": false,
      "StoreTimezoneInformation": false,
      "SymbolizeHashKeysInRuby": false,
      "ThrowForHttpErrorStatusCodes": true,
      "Timeout": 0,
      "UnderscoreNumbers": true,
      "UsageExampleEndpoint": {
        "Description": "",
        "EndpointGroupName": "",
        "EndpointName": ""
      },
      "UseCommonSDKLibrary": false,
      "UseConstructorsForConfig": false,
      "UseControllerPrefix": true,
      "UseEndpointMethodName": false,
      "UseEnumPostfix": true,
      "UseExceptionPrefix": true,
      "UseMethodPrefix": true,
      "UseModelPostfix": false,
      "UseSingletonPattern": true,
      "UserConfigurableRetries": true,
      "ValidateRequiredParameters": false,
      "iOSGenerateCoreData": false,
      "iOSUseAppInfoPlist": false
    },
    "x-image-uri": "",
    "x-origin": [
      {
        "format": "openapi",
        "url": "https://raw.githubusercontent.com/rithvikvibhu/GHLocalApi/master/GoogleHome.openapi3.json",
        "version": "3.0"
      }
    ],
    "x-providerName": "google.home",
    "x-server-configuration": {
      "default-environment": "production",
      "default-server": "Server 1",
      "environments": [
        {
          "name": "production",
          "servers": [
            {
              "name": "Server 1",
              "url": "http://example.com/setup"
            }
          ]
        }
      ],
      "parameters": []
    },
    "x-unofficialSpec": true,
    "x-logo": {
      "url": "https://api.apis.guru/v2/cache/logo/https_apis.guru_assets_images_no-logo.svg"
    }
  },
  "security": [
    {
      "cast-local-authorization-token": []
    }
  ],
  "tags": [
    {
      "description": "Endpoints in this folder give information about the device.",
      "name": "Device Info"
    },
    {
      "description": "This folder consists of all endpoints to modify and control the device.",
      "name": "Device Settings"
    },
    {
      "description": "This folder contains all endpoints related to Assistant's tasks like Do Not Disturb, Alarms and Timers, Accessibility and equalizer.",
      "name": "Assistant"
    },
    {
      "description": "This folder contains Bluetooth related endpoints.",
      "name": "Bluetooth"
    },
    {
      "description": "This folder contains Wi-Fi related endpoints.",
      "name": "Wifi"
    },
    {
      "description": "This folder contains a list of static files stored in Home.",
      "name": "Static Files"
    }
  ],
  "paths": {
    "/NOTICE.html.gz": {
      "get": {
        "deprecated": false,
        "description": "All licenses of programs used by Home.",
        "operationId": "LegalNotice",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "example": "<html><!-- a long page --></html>",
                "schema": {
                  "example": "<html><!-- a long page --></html>",
                  "type": "string"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Legal Notice",
        "tags": [
          "Static Files"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "<html><!-- a long page --></html>",
              "headers": {
                "Access-Control-Allow-Headers": "Range",
                "Access-Control-Allow-Methods": "GET, OPTIONS",
                "Content-Encoding": "gzip",
                "Content-Length": "131302",
                "Content-Type": "text/html"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "RAW",
              "x-matchResponseSchema": true
            },
            "request": {
              "method": "GET",
              "uri": "/NOTICE.html.gz"
            },
            "x-testDescription": "All licenses of programs used by Home.",
            "x-testEnabled": false,
            "x-testName": "Legal Notice",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/assistant/a11y_mode": {
      "post": {
        "deprecated": false,
        "description": "This controls Accessibility sounds. `hotword_enabled` is for 'Play start sound' and `endpoint_enabled` is for 'Play end sound'.  \nSending an empty-body POST request returns the current values.  \nEither of the fields or both can be sent and new values will be saved.",
        "operationId": "Accessibility",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "endpoint_enabled": false,
                "hotword_enabled": false
              },
              "schema": {
                "$ref": "#/components/schemas/AccessibilityRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "endpoint_enabled": false,
                  "hotword_enabled": false
                },
                "schema": {
                  "$ref": "#/components/schemas/Getcurrentvalues"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Accessibility",
        "tags": [
          "Assistant"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "{\"endpoint_enabled\":false,\"hotword_enabled\":false}",
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "50",
                "Content-Type": "application/json"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "body": "{\r\n  \"hotword_enabled\": false,\r\n  \"endpoint_enabled\": false\r\n}",
              "headers": {
                "Content-Type": "application/json"
              },
              "method": "POST",
              "uri": "/assistant/a11y_mode"
            },
            "x-testDescription": "This controls Accessibility sounds. `hotword_enabled` is for 'Play start sound' and `endpoint_enabled` is for 'Play end sound'.  \nSending an empty-body POST request returns the current values.  \nEither of the fields or both can be sent and new values will be saved.",
            "x-testEnabled": true,
            "x-testName": "Accessibility",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/assistant/alarms": {
      "get": {
        "deprecated": false,
        "description": "This gives a list of all active alarms and timers.\n\nBoth alarms and timers have `id`s which can be used to delete them. (There is no known way of creating/deleting yet). The value of `status` have different meanings for alarms and timers (given below).\n\nAlarms have `date_pattern` and `time_pattern` with day, month, year, hour, minute, second. `fire_time` is the same in unix time (milliseconds, not seconds).  \n`status` is 1 for set up and 2 for ringing.\n\nTimers have `original_duration` is the original duration.  \n`status` is 1 for set up and 3 for ringing.",
        "operationId": "GetAlarmsandTimers",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "alarm": [
                    {
                      "date_pattern": {
                        "day": 15,
                        "month": 1,
                        "year": 2018
                      },
                      "fire_time": 1515995400000,
                      "id": "alarm/xxx",
                      "status": 1,
                      "time_pattern": {
                        "hour": 6,
                        "minute": 50,
                        "second": 0
                      }
                    }
                  ],
                  "timer": [
                    {
                      "fire_time": 1516176765589,
                      "id": "timer/xxx",
                      "original_duration": 20000,
                      "status": 1
                    }
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/Example18"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Get Alarms and Timers",
        "tags": [
          "Assistant"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "{\r\n  \"alarm\": [\r\n    {\r\n      \"date_pattern\": {\r\n        \"day\": 15,\r\n        \"month\": 1,\r\n        \"year\": 2018\r\n      },\r\n      \"time_pattern\": {\r\n        \"hour\": 6,\r\n        \"minute\": 50,\r\n        \"second\": 0\r\n      },\r\n      \"fire_time\": 1515995400000.0,\r\n      \"id\": \"alarm/xxx\",\r\n      \"status\": 1\r\n    }\r\n  ],\r\n  \"timer\": [\r\n    {\r\n      \"fire_time\": 1516176765589,\r\n      \"id\": \"timer/xxx\",\r\n      \"original_duration\": 20000,\r\n      \"status\": 1\r\n    }\r\n  ]\r\n}",
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "23",
                "Content-Type": "application/json"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "method": "GET",
              "uri": "/assistant/alarms"
            },
            "x-testDescription": "This gives a list of all active alarms and timers.\n\nBoth alarms and timers have `id`s which can be used to delete them. (There is no known way of creating/deleting yet). The value of `status` have different meanings for alarms and timers (given below).\n\nAlarms have `date_pattern` and `time_pattern` with day, month, year, hour, minute, second. `fire_time` is the same in unix time (milliseconds, not seconds).  \n`status` is 1 for set up and 2 for ringing.\n\nTimers have `original_duration` is the original duration.  \n`status` is 1 for set up and 3 for ringing.",
            "x-testEnabled": true,
            "x-testName": "Get Alarms and Timers",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/assistant/alarms/delete": {
      "post": {
        "deprecated": false,
        "description": "This deletes alarms and timers by their id.\n\n`ids` is a list of ids to be deleted. Sending invalid id still returns a 200 OK. The `/` in the ids have to be escaped like `\\/`.",
        "operationId": "DeleteAlarmsandTimers",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "ids": [
                  "timer/xxx",
                  "alarm/xxx"
                ]
              },
              "schema": {
                "$ref": "#/components/schemas/DeleteAlarmsandTimersRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "success": true
                },
                "schema": {
                  "$ref": "#/components/schemas/Example19"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Delete Alarms and Timers",
        "tags": [
          "Assistant"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "{\"success\":true}",
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "16",
                "Content-Type": "application/json"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "body": "{\r\n  \"ids\": [\r\n    \"timer/xxx\",\r\n    \"alarm/xxx\"\r\n  ]\r\n}",
              "headers": {
                "Content-Type": "application/json"
              },
              "method": "POST",
              "uri": "/assistant/alarms/delete"
            },
            "x-testDescription": "This deletes alarms and timers by their id.\n\n`ids` is a list of ids to be deleted. Sending invalid id still returns a 200 OK. The `/` in the ids have to be escaped like `\\/`.",
            "x-testEnabled": true,
            "x-testName": "Delete Alarms and Timers",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/assistant/alarms/volume": {
      "post": {
        "deprecated": false,
        "description": "This gets and sets alarms and timers volume.  \n**Note:** This is not the same as normal volume.\n\nVolume is a float number in [0, 1] where 0 is minimum and 1 is maximum.  \nSending an empty body gets the volume. Sending `volume` sets the volume.",
        "operationId": "AlarmVolume",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "volume": 1
              },
              "schema": {
                "$ref": "#/components/schemas/AlarmVolumeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "volume": 1
                },
                "schema": {
                  "$ref": "#/components/schemas/Getvolume"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Alarm Volume",
        "tags": [
          "Assistant"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "{\"volume\":1.0}",
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "14",
                "Content-Type": "application/json"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "body": "{\r\n  \"volume\": 1\r\n}",
              "headers": {
                "Content-Type": "application/json"
              },
              "method": "POST",
              "uri": "/assistant/alarms/volume"
            },
            "x-testDescription": "This gets and sets alarms and timers volume.  \n**Note:** This is not the same as normal volume.\n\nVolume is a float number in [0, 1] where 0 is minimum and 1 is maximum.  \nSending an empty body gets the volume. Sending `volume` sets the volume.",
            "x-testEnabled": true,
            "x-testName": "Alarm Volume",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/assistant/check_ready_status": {
      "post": {
        "deprecated": false,
        "description": "**Update:** This seems to have changed now and is no longer possible. The error is also new.\n\nSetting `play_ready_message` to true plays a welcome message on the device saying \"Hi, I'm your Google Assistant. I'm here to help. To learn a few things you can do, continue in the Google Home app.\"",
        "operationId": "CheckReadyStatus",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "play_ready_message": true,
                "user_id": "xxxxx"
              },
              "schema": {
                "$ref": "#/components/schemas/CheckReadyStatusRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "can_enroll": true,
                  "enrollment_state": 0,
                  "error_code": 0,
                  "ready": false,
                  "retryable": true
                },
                "schema": {
                  "$ref": "#/components/schemas/Example13"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Check Ready Status",
        "tags": [
          "Device Info"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "{\r\n  \"can_enroll\": true,\r\n  \"enrollment_state\": 0,\r\n  \"error_code\": 0,\r\n  \"ready\": false,\r\n  \"retryable\": true\r\n}",
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "86",
                "Content-Type": "application/json"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "body": "{\r\n  \"play_ready_message\": true,\r\n  \"user_id\": \"xxxxx\"\r\n}",
              "headers": {
                "Content-Type": "application/json"
              },
              "method": "POST",
              "uri": "/assistant/check_ready_status"
            },
            "x-testDescription": "**Update:** This seems to have changed now and is no longer possible. The error is also new.\n\nSetting `play_ready_message` to true plays a welcome message on the device saying \"Hi, I'm your Google Assistant. I'm here to help. To learn a few things you can do, continue in the Google Home app.\"",
            "x-testEnabled": true,
            "x-testName": "Check Ready Status",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/assistant/notifications": {
      "post": {
        "deprecated": false,
        "description": "This is for the Do Not Disturb option. Sending an empty-body POST returns the current value. Sending a new value changes it.",
        "operationId": "DoNotDisturb",
        "parameters": [
          {
            "in": "header",
            "name": "Content-Type",
            "required": true,
            "schema": {
              "example": "application/json",
              "type": "string"
            },
            "style": "simple"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "notifications_enabled": true
                },
                "schema": {
                  "$ref": "#/components/schemas/Getcurrentstate"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Do Not Disturb",
        "tags": [
          "Assistant"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "{\"notifications_enabled\":true}",
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "30",
                "Content-Type": "application/json"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "headers": {
                "Content-Type": "application/json"
              },
              "method": "POST",
              "uri": "/assistant/notifications"
            },
            "x-testDescription": "This is for the Do Not Disturb option. Sending an empty-body POST returns the current value. Sending a new value changes it.",
            "x-testEnabled": true,
            "x-testName": "Do Not Disturb",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/assistant/set_night_mode_params": {
      "post": {
        "deprecated": false,
        "description": "This sets night mode options.  \nTo view currently set values, use /setup/eureka_info.  \nIf `enabled` is set to false, night mode is disabled and the other values do not matter.  \n`led_brightness` and `volume` refer to the maximum LED Brightness and Volume that is set during night mode.  \n`demo_to_user` is always set to `true` so change in values will be visible in realtime (like brightness).  \n`windows`: A combination of `length_hours` and `start_hour` is used to define start and end times for night mode. In this example, night mode starts at 10 PM (22) and ends at 6 AM (8 hours later). `windows.days` is an array of days of week when night mode will be enabled. Example: 0->Sunday, 1-> Monday, ..., 6->Saturday.",
        "operationId": "NightModesettings",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "demo_to_user": true,
                "do_not_disturb": true,
                "enabled": false,
                "led_brightness": 0.44999998807907104,
                "volume": 0.46000000834465027,
                "windows": [
                  {
                    "days": [
                      0,
                      1,
                      2,
                      3,
                      4,
                      5,
                      6
                    ],
                    "length_hours": 8,
                    "start_hour": 22
                  }
                ]
              },
              "schema": {
                "$ref": "#/components/schemas/NightModesettingsRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "do_not_disturb": true,
                  "enabled": false,
                  "led_brightness": 0.44999998807907104,
                  "volume": 0.46000000834465027,
                  "windows": [
                    {
                      "days": [
                        0,
                        1,
                        2,
                        3,
                        4,
                        5,
                        6
                      ],
                      "length_hours": 8,
                      "start_hour": 22
                    }
                  ]
                },
                "schema": {
                  "$ref": "#/components/schemas/Example17"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Night Mode settings",
        "tags": [
          "Device Settings"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "{\"do_not_disturb\":true,\"enabled\":false,\"led_brightness\":0.44999998807907104,\"volume\":0.46000000834465027,\"windows\":[{\"days\":[0,1,2,3,4,5,6],\"length_hours\":8.0,\"start_hour\":22.0}]}",
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "179",
                "Content-Type": "application/json"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "body": "{\r\n  \"enabled\": false,\r\n  \"do_not_disturb\": true,\r\n  \"led_brightness\": 0.44999998807907104,\r\n  \"volume\": 0.46000000834465027,\r\n  \"demo_to_user\": true,\r\n  \"windows\": [\r\n    {\r\n      \"length_hours\": 8,\r\n      \"days\": [\r\n        0,\r\n        1,\r\n        2,\r\n        3,\r\n        4,\r\n        5,\r\n        6\r\n      ],\r\n      \"start_hour\": 22\r\n    }\r\n  ]\r\n}",
              "headers": {
                "Content-Type": "application/json"
              },
              "method": "POST",
              "uri": "/assistant/set_night_mode_params"
            },
            "x-testDescription": "This sets night mode options.  \nTo view currently set values, use /setup/eureka_info.  \nIf `enabled` is set to false, night mode is disabled and the other values do not matter.  \n`led_brightness` and `volume` refer to the maximum LED Brightness and Volume that is set during night mode.  \n`demo_to_user` is always set to `true` so change in values will be visible in realtime (like brightness).  \n`windows`: A combination of `length_hours` and `start_hour` is used to define start and end times for night mode. In this example, night mode starts at 10 PM (22) and ends at 6 AM (8 hours later). `windows.days` is an array of days of week when night mode will be enabled. Example: 0->Sunday, 1-> Monday, ..., 6->Saturday.",
            "x-testEnabled": true,
            "x-testName": "Night Mode settings",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/bluetooth/bond": {
      "post": {
        "deprecated": false,
        "description": "*See note for Bluetooth under `/setup/bluetooth/status`*\n\n**For both parts**\n\nThis is to forget paired devices by mac address. Works for both kinds of devices (Part 1 and Part 2).",
        "operationId": "Forgetpaireddevice",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "bond": false,
                "mac_address": "xx:xx:xx:xx:xx:xx"
              },
              "schema": {
                "$ref": "#/components/schemas/ForgetpaireddeviceRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "x-is-dynamic": true
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Forget paired device",
        "tags": [
          "Bluetooth"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "headers": {},
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "NONE",
              "x-matchResponseSchema": true
            },
            "request": {
              "body": "{\r\n  \"mac_address\": \"xx:xx:xx:xx:xx:xx\",\r\n  \"bond\": false\r\n}",
              "headers": {
                "Content-Type": "application/json"
              },
              "method": "POST",
              "uri": "/bluetooth/bond"
            },
            "x-testDescription": "*See note for Bluetooth under `/setup/bluetooth/status`*\n\n**For both parts**\n\nThis is to forget paired devices by mac address. Works for both kinds of devices (Part 1 and Part 2).",
            "x-testEnabled": true,
            "x-testName": "Forget paired device",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/bluetooth/connect": {
      "post": {
        "deprecated": false,
        "description": "*See note for Bluetooth under `/setup/bluetooth/status`*\n\n**For Part 2 only**\n\nThis pairs with other bluetooth speakers by mac address.",
        "operationId": "PairwithSpeaker",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "connect": true,
                "mac_address": "54:13:79:49:19:22",
                "profile": 2
              },
              "schema": {
                "$ref": "#/components/schemas/PairwithSpeakerRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "x-is-dynamic": true
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Pair with Speaker",
        "tags": [
          "Bluetooth"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "0"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "NONE",
              "x-matchResponseSchema": true
            },
            "request": {
              "body": "{\r\n  \"mac_address\": \"54:13:79:49:19:22\",\r\n  \"connect\": true,\r\n  \"profile\": 2\r\n}",
              "headers": {
                "Content-Type": "application/json"
              },
              "method": "POST",
              "uri": "/bluetooth/connect"
            },
            "x-testDescription": "*See note for Bluetooth under `/setup/bluetooth/status`*\n\n**For Part 2 only**\n\nThis pairs with other bluetooth speakers by mac address.",
            "x-testEnabled": true,
            "x-testName": "Pair with Speaker",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/bluetooth/discovery": {
      "post": {
        "deprecated": false,
        "description": "*See note for Bluetooth under `/setup/bluetooth/status`*\n\n**For Part 1 only**\n\nThis enables/disables Home's bluetooth discovery and other devices can pair with Home (where Home acts as a speaker).",
        "operationId": "ChangeDiscoverability",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "enable_discovery": true
              },
              "schema": {
                "$ref": "#/components/schemas/ChangeDiscoverabilityRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "x-is-dynamic": true
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Change Discoverability",
        "tags": [
          "Bluetooth"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "headers": {},
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "NONE",
              "x-matchResponseSchema": true
            },
            "request": {
              "body": "{\r\n  \"enable_discovery\": true\r\n}",
              "headers": {
                "Content-Type": "application/json"
              },
              "method": "POST",
              "uri": "/bluetooth/discovery"
            },
            "x-testDescription": "*See note for Bluetooth under `/setup/bluetooth/status`*\n\n**For Part 1 only**\n\nThis enables/disables Home's bluetooth discovery and other devices can pair with Home (where Home acts as a speaker).",
            "x-testEnabled": true,
            "x-testName": "Change Discoverability",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/bluetooth/get_bonded": {
      "get": {
        "deprecated": false,
        "description": "*See note for Bluetooth under `/setup/bluetooth/status`*\n\n**For both parts**\n\nThis gives a list of all paired or 'bonded' devices. The response field names are self-descriptive.",
        "operationId": "GetPairedDevices",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "bond_date": 1503212407260.55,
                    "device_class": 5898764,
                    "device_type": 1,
                    "last_connect_date": 1514807829482.111,
                    "mac_address": "xx:xx:xx:xx:xx:xx",
                    "name": "Device Name",
                    "rssi": -255,
                    "service_uuids": [
                      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
                    ]
                  }
                ],
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/Example111"
                  },
                  "type": "array"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Get Paired Devices",
        "tags": [
          "Bluetooth"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "[\r\n  {\r\n    \"bond_date\": 1503212407260.55,\r\n    \"device_class\": 5898764,\r\n    \"device_type\": 1,\r\n    \"last_connect_date\": 1514807829482.1111,\r\n    \"mac_address\": \"xx:xx:xx:xx:xx:xx\",\r\n    \"name\": \"Device Name\",\r\n    \"rssi\": -255,\r\n    \"service_uuids\": [\r\n      \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\r\n      \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\r\n    ]\r\n  }\r\n]",
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "2",
                "Content-Type": "application/json"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "method": "GET",
              "uri": "/bluetooth/get_bonded"
            },
            "x-testDescription": "*See note for Bluetooth under `/setup/bluetooth/status`*\n\n**For both parts**\n\nThis gives a list of all paired or 'bonded' devices. The response field names are self-descriptive.",
            "x-testEnabled": true,
            "x-testName": "Get Paired Devices",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/bluetooth/scan": {
      "post": {
        "deprecated": false,
        "description": "*See note for Bluetooth under `/setup/bluetooth/status`*\n\n**For Part 2 only**\n\nThis initiates scan for other bluetooth speakers/devices. Scan results will be updated continuously for `timeout` seconds.  \nTo get the scan results, see /setup/bluetooth/scan_results.",
        "operationId": "Scanfordevices",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "clear_results": true,
                "enable": true,
                "timeout": 60
              },
              "schema": {
                "$ref": "#/components/schemas/ScanfordevicesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "x-is-dynamic": true
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Scan for devices",
        "tags": [
          "Bluetooth"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "0"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "NONE",
              "x-matchResponseSchema": true
            },
            "request": {
              "body": "{\r\n  \"enable\": true,\r\n  \"clear_results\": true,\r\n  \"timeout\": 60\r\n}",
              "headers": {
                "Content-Type": "application/json"
              },
              "method": "POST",
              "uri": "/bluetooth/scan"
            },
            "x-testDescription": "*See note for Bluetooth under `/setup/bluetooth/status`*\n\n**For Part 2 only**\n\nThis initiates scan for other bluetooth speakers/devices. Scan results will be updated continuously for `timeout` seconds.  \nTo get the scan results, see /setup/bluetooth/scan_results.",
            "x-testEnabled": true,
            "x-testName": "Scan for devices",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/bluetooth/scan_results": {
      "get": {
        "deprecated": false,
        "description": "*See note for Bluetooth under `/setup/bluetooth/status`*\n\n**For Part 2 only**\n\nThis returns a list of all nearby bluetooth devices. While the Home app only shows speakers, this list contains all devices including TVs, mobiles, etc.\n\n`rssi` is signal strength, `name` is name, `mac_address` is mac address.  \n`device_class` and `device_type` are bluetooth codes.  \n\nThe Home app only lists those devices with `expected_profiles` > 0. Basically, the device should function as a speaker.",
        "operationId": "GetScanResults",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "device_class": 525372,
                    "device_type": 3,
                    "expected_profiles": 0,
                    "mac_address": "xx:xx:xx:xx:xx:xx",
                    "name": "KD-49X8200E",
                    "rssi": -90
                  },
                  {
                    "device_class": 5898764,
                    "device_type": 1,
                    "expected_profiles": 0,
                    "mac_address": "xx:xx:xx:xx:xx:xx",
                    "name": "vivo 1714",
                    "rssi": -96
                  },
                  {
                    "device_class": 2491396,
                    "device_type": 1,
                    "expected_profiles": 1,
                    "mac_address": "xx:xx:xx:xx:xx:xx",
                    "name": "Bluetooth Speaker",
                    "rssi": -93
                  }
                ],
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/Example112"
                  },
                  "type": "array"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Get Scan Results",
        "tags": [
          "Bluetooth"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "[\r\n  {\r\n    \"device_class\": 525372,\r\n    \"device_type\": 3,\r\n    \"expected_profiles\": 0,\r\n    \"mac_address\": \"xx:xx:xx:xx:xx:xx\",\r\n    \"name\": \"KD-49X8200E\",\r\n    \"rssi\": -90\r\n  },\r\n  {\r\n    \"device_class\": 5898764,\r\n    \"device_type\": 1,\r\n    \"expected_profiles\": 0,\r\n    \"mac_address\": \"xx:xx:xx:xx:xx:xx\",\r\n    \"name\": \"vivo 1714\",\r\n    \"rssi\": -96\r\n  },\r\n  {\r\n    \"device_class\": 2491396,\r\n    \"device_type\": 1,\r\n    \"expected_profiles\": 1,\r\n    \"mac_address\": \"xx:xx:xx:xx:xx:xx\",\r\n    \"name\": \"Bluetooth Speaker\",\r\n    \"rssi\": -93\r\n  }\r\n]",
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "256",
                "Content-Type": "application/json"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "method": "GET",
              "uri": "/bluetooth/scan_results"
            },
            "x-testDescription": "*See note for Bluetooth under `/setup/bluetooth/status`*\n\n**For Part 2 only**\n\nThis returns a list of all nearby bluetooth devices. While the Home app only shows speakers, this list contains all devices including TVs, mobiles, etc.\n\n`rssi` is signal strength, `name` is name, `mac_address` is mac address.  \n`device_class` and `device_type` are bluetooth codes.  \n\nThe Home app only lists those devices with `expected_profiles` > 0. Basically, the device should function as a speaker.",
            "x-testEnabled": true,
            "x-testName": "Get Scan Results",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/bluetooth/status": {
      "get": {
        "deprecated": false,
        "description": "> **There are 2 parts of Bluetooth.**\n>\n> *Part 1*: Devices like phones connect to Home and play audio through Home.  \n> For this, /setup/bluetooth/discovery is used to make Home discoverable. Then devices can connect to it as if Home is just another bluetooth speaker.\n>\n> *Part 2*: Bluetooth speakers connect to Home and Home plays audio through the speakers.\n> For this, /setup/bluetooth/scan and /setup/bluetooth/scan_results are used to connect to other speakers.\n>\n> The other endpoints are common for both parts.\n\n\n**For both parts**\n\nThis gives the status of all bluetooth things.\n- Not sure what `audio_mode` is.\n- `discovery_enabled` states whether Home is discoverable. (**Part 1**)\n- `connecting_devices` is a list of all media sources (like phones) connected to Home. (**Part 1**)\n- `scanning_enabled` states whether Home scanning for other bluetooth speakers/devices. (**Part 2**)\n- `connected_devices` is a list of all speakers connected to Home. (**Part 2**)",
        "operationId": "Status",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "audio_mode": 0,
                  "connected_devices": [
                    {
                      "device": {
                        "bond_date": 1529248165656.613,
                        "device_class": 2491396,
                        "device_type": 1,
                        "last_connect_date": 0,
                        "mac_address": "xx:xx:xx:xx:xx:xx",
                        "name": "PHILIPS BT64",
                        "rssi": -255,
                        "service_uuids": [
                          "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                          "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                          "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                          "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                          "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                          "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
                        ]
                      },
                      "enabled_profiles": 2
                    }
                  ],
                  "connecting_devices": [],
                  "discovery_enabled": false,
                  "remote_sink": {
                    "bond_date": 1529248165656.613,
                    "device_class": 2491396,
                    "device_type": 1,
                    "last_connect_date": 0,
                    "mac_address": "xx:xx:xx:xx:xx:xx",
                    "name": "PHILIPS BT64",
                    "rssi": -255,
                    "service_uuids": [
                      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                      "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
                    ]
                  },
                  "scanning_enabled": false
                },
                "schema": {
                  "$ref": "#/components/schemas/Example110"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Status",
        "tags": [
          "Bluetooth"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "{\r\n  \"audio_mode\": 0,\r\n  \"connecting_devices\": [],\r\n  \"connected_devices\": [\r\n    {\r\n      \"device\": {\r\n        \"bond_date\": 1529248165656.613,\r\n        \"device_class\": 2491396,\r\n        \"device_type\": 1,\r\n        \"last_connect_date\": 0,\r\n        \"mac_address\": \"xx:xx:xx:xx:xx:xx\",\r\n        \"name\": \"PHILIPS BT64\",\r\n        \"rssi\": -255,\r\n        \"service_uuids\": [\r\n          \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\r\n          \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\r\n          \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\r\n          \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\r\n          \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\r\n          \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\r\n        ]\r\n      },\r\n      \"enabled_profiles\": 2\r\n    }\r\n  ],\r\n  \"remote_sink\": {\r\n    \"bond_date\": 1529248165656.613,\r\n    \"device_class\": 2491396,\r\n    \"device_type\": 1,\r\n    \"last_connect_date\": 0,\r\n    \"mac_address\": \"xx:xx:xx:xx:xx:xx\",\r\n    \"name\": \"PHILIPS BT64\",\r\n    \"rssi\": -255,\r\n    \"service_uuids\": [\r\n      \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\r\n      \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\r\n      \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\r\n      \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\r\n      \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\r\n      \"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"\r\n    ]\r\n  },\r\n  \"discovery_enabled\": false,\r\n  \"scanning_enabled\": false\r\n}",
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "114",
                "Content-Type": "application/json"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "method": "GET",
              "uri": "/bluetooth/status"
            },
            "x-testDescription": "> **There are 2 parts of Bluetooth.**\n>\n> *Part 1*: Devices like phones connect to Home and play audio through Home.  \n> For this, /setup/bluetooth/discovery is used to make Home discoverable. Then devices can connect to it as if Home is just another bluetooth speaker.\n>\n> *Part 2*: Bluetooth speakers connect to Home and Home plays audio through the speakers.\n> For this, /setup/bluetooth/scan and /setup/bluetooth/scan_results are used to connect to other speakers.\n>\n> The other endpoints are common for both parts.\n\n\n**For both parts**\n\nThis gives the status of all bluetooth things.\n- Not sure what `audio_mode` is.\n- `discovery_enabled` states whether Home is discoverable. (**Part 1**)\n- `connecting_devices` is a list of all media sources (like phones) connected to Home. (**Part 1**)\n- `scanning_enabled` states whether Home scanning for other bluetooth speakers/devices. (**Part 2**)\n- `connected_devices` is a list of all speakers connected to Home. (**Part 2**)",
            "x-testEnabled": true,
            "x-testName": "Status",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/configured_networks": {
      "get": {
        "deprecated": false,
        "description": "This gets a list of all saved Wi-Fi networks.\n\nEach network has `ssid`, `wpa_auth`, `wpa_cipher` and `wpa_id`.  \n`wpa_id` is an incrementing number used to identify a saved network.  \n#TODO: Add values for `wpa_auth` and `wpa_cipher`.",
        "operationId": "GetSavedNetworks",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "ssid": "Wifi name",
                    "wpa_auth": 7,
                    "wpa_cipher": 4,
                    "wpa_id": 0
                  }
                ],
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/Example113"
                  },
                  "type": "array"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Get Saved Networks",
        "tags": [
          "Wifi"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "[\r\n  {\r\n    \"ssid\": \"Wifi name\",\r\n    \"wpa_auth\": 7,\r\n    \"wpa_cipher\": 4,\r\n    \"wpa_id\": 0\r\n  }\r\n]",
              "headers": {},
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "method": "GET",
              "uri": "/configured_networks"
            },
            "x-testDescription": "This gets a list of all saved Wi-Fi networks.\n\nEach network has `ssid`, `wpa_auth`, `wpa_cipher` and `wpa_id`.  \n`wpa_id` is an incrementing number used to identify a saved network.  \n#TODO: Add values for `wpa_auth` and `wpa_cipher`.",
            "x-testEnabled": true,
            "x-testName": "Get Saved Networks",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/connect_wifi": {
      "post": {
        "deprecated": false,
        "description": "**Note:** Not sure how the password is encrypted. Might be using the public certificate from /setup/eureka_info. So this cannot be used as of now. If someone figures it out, please [create a new issue here](https://github.com/rithvikvibhu/GHLocalApi/issues/new).",
        "operationId": "ConnecttoWi-FiNetwork",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "bssid": "5c:0a:xx:xx:xx:xx",
                "enc_passwd": "xxxxxfPY=",
                "signal_level": -42,
                "ssid": "myotherssid",
                "wpa_auth": 7,
                "wpa_cipher": 4
              },
              "schema": {
                "$ref": "#/components/schemas/ConnecttoWi-FiNetworkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "",
            "headers": {}
          }
        },
        "summary": "Connect to Wi-Fi Network",
        "tags": [
          "Wifi"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "headers": {},
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "NONE",
              "x-matchResponseSchema": true
            },
            "request": {
              "body": "{\r\n  \"bssid\": \"5c:0a:xx:xx:xx:xx\",\r\n  \"signal_level\": -42,\r\n  \"ssid\": \"myotherssid\",\r\n  \"wpa_auth\": 7,\r\n  \"wpa_cipher\": 4,\r\n  \"enc_passwd\": \"xxxxxfPY=\"\r\n}",
              "headers": {
                "Content-Type": "application/json"
              },
              "method": "POST",
              "uri": "/connect_wifi"
            },
            "x-testDescription": "**Note:** Not sure how the password is encrypted. Might be using the public certificate from /setup/eureka_info. So this cannot be used as of now. If someone figures it out, please [create a new issue here](https://github.com/rithvikvibhu/GHLocalApi/issues/new).",
            "x-testEnabled": true,
            "x-testName": "Connect to Wi-Fi Network",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/eureka_info": {
      "get": {
        "deprecated": false,
        "description": "This gives most of the device info. The GET parameter `param` is a comma separated list of json keys to fetch. Currently, these params are known: `version,audio,name,build_info,detail,device_info,net,wifi,setup,settings,opt_in,opencast,multizone,proxy,night_mode_params,user_eq,room_equalizer,sign,aogh,ultrasound,mesh`\n\nNested items can also be filtered using the dot notation. Example: `audio.digital`\n\nThe `options` GET parameter is always set to `detail` or `detail,sign`. `sign` signs the `nonce` and returns some value.\n\nThe `nonce` GET parameter is an integer value signed with needed (see `option` parameter above).",
        "operationId": "EurekaInfo",
        "parameters": [
          {
            "explode": true,
            "in": "query",
            "name": "params",
            "required": true,
            "schema": {
              "example": "version,audio,name,build_info,detail,device_info,net,wifi,setup,settings,opt_in,opencast,multizone,proxy,night_mode_params,user_eq,room_equalizer,sign,aogh,ultrasound,mesh",
              "type": "string"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "options",
            "required": true,
            "schema": {
              "example": "detail,sign",
              "type": "string"
            },
            "style": "form"
          },
          {
            "explode": true,
            "in": "query",
            "name": "nonce",
            "required": true,
            "schema": {
              "example": 1234512345,
              "format": "int32",
              "type": "integer"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "aogh": {
                    "aogh_api_version": "2"
                  },
                  "audio": {
                    "digital": false
                  },
                  "build_info": {
                    "build_type": 2,
                    "cast_build_revision": "1.46.195690",
                    "cast_control_version": 1,
                    "preview_channel_state": 4,
                    "release_track": "preview-joining-stable-channel",
                    "system_build_number": "195690"
                  },
                  "detail": {
                    "icon_list": [
                      {
                        "depth": 32,
                        "height": 55,
                        "mimetype": "image/png",
                        "url": "/setup/icon.png",
                        "width": 98
                      }
                    ],
                    "locale": {
                      "display_string": "English (United States)"
                    },
                    "timezone": {
                      "display_string": "India Standard Time (Kolkata)",
                      "offset": 330
                    }
                  },
                  "device_info": {
                    "4k_blocked": 0,
                    "capabilities": {
                      "aogh_supported": true,
                      "assistant_supported": true,
                      "audio_hdr_supported": false,
                      "audio_surround_mode_supported": false,
                      "ble_supported": true,
                      "bluetooth_audio_sink_supported": true,
                      "bluetooth_audio_source_supported": true,
                      "bluetooth_supported": true,
                      "cloudcast_supported": true,
                      "content_filters_supported": true,
                      "display_supported": false,
                      "fdr_supported": false,
                      "hdmi_prefer_50hz_supported": false,
                      "hdmi_prefer_high_fps_supported": false,
                      "hotspot_supported": true,
                      "https_setup_supported": true,
                      "input_management_supported": true,
                      "keep_hotspot_until_connected_supported": true,
                      "multi_user_supported": true,
                      "multichannel_group_supported": true,
                      "multizone_supported": true,
                      "night_mode_supported": true,
                      "night_mode_supported_v2": true,
                      "opencast_supported": false,
                      "preview_channel_supported": true,
                      "reboot_supported": true,
                      "remote_ducking_supported": true,
                      "separate_tts_volume_supported": true,
                      "setup_supported": true,
                      "sleep_mode_supported": true,
                      "stats_supported": true,
                      "system_sound_effects_supported": false,
                      "user_eq_supported": true,
                      "wifi_auto_save_supported": true,
                      "wifi_regulatory_domain_locked": true,
                      "wifi_supported": true
                    },
                    "cloud_device_id": "003D...",
                    "factory_country_code": "US",
                    "hotspot_bssid": "FA:8F:CA:30:41:71",
                    "local_authorization_token_hash": "hBt2...",
                    "mac_address": "F4:F5:...",
                    "manufacturer": "Google Inc.",
                    "model_name": "Google Home",
                    "product_name": "pineapple",
                    "public_key": "MIIB...",
                    "ssdp_udn": "baab...",
                    "uma_client_id": "8ce0...",
                    "uptime": 48509.169282,
                    "weave_device_id": ""
                  },
                  "multizone": {
                    "audio_output_delay": 0,
                    "audio_output_delay_hdmi": 0,
                    "audio_output_delay_oem": 0,
                    "aux_in_group": "",
                    "dynamic_groups": [],
                    "groups": [],
                    "multichannel_status": 0
                  },
                  "name": "Bedroom Speaker",
                  "net": {
                    "ethernet_connected": false,
                    "ip_address": "192.168.0.18",
                    "online": true
                  },
                  "night_mode_params": {
                    "device_override_do_not_disturb": 0,
                    "do_not_disturb": true,
                    "enabled": true,
                    "led_brightness": 0.5799999833106995,
                    "volume": 0.5899999737739563,
                    "windows": [
                      {
                        "days": [
                          0,
                          1,
                          2,
                          3,
                          4,
                          5,
                          6
                        ],
                        "length_hours": 6,
                        "start_hour": 23
                      }
                    ]
                  },
                  "opencast": {
                    "pin_code": ""
                  },
                  "opt_in": {
                    "audio_hdr": false,
                    "audio_surround_mode": 0,
                    "autoplay_on_signal": true,
                    "cloud_ipc": true,
                    "hdmi_prefer_50hz": false,
                    "hdmi_prefer_high_fps": true,
                    "managed_mode": false,
                    "opencast": true,
                    "preview_channel": true,
                    "remote_ducking": true,
                    "stats": true,
                    "ui_flipped": false,
                    "wpa3_support_enabled": false
                  },
                  "proxy": {
                    "mode": "system"
                  },
                  "settings": {
                    "closed_caption": {},
                    "control_notifications": 1,
                    "country_code": "IN",
                    "locale": "en-US",
                    "network_standby": 0,
                    "system_sound_effects": true,
                    "time_format": 1,
                    "timezone": "Asia/Kolkata",
                    "wake_on_cast": 1
                  },
                  "setup": {
                    "qr_ssid_suffix": "",
                    "setup_state": 60,
                    "ssid_suffix": "k",
                    "stats": {
                      "num_check_connectivity": 0,
                      "num_connect_wifi": 0,
                      "num_connected_wifi_not_saved": 0,
                      "num_initial_eureka_info": 0,
                      "num_obtain_ip": 0
                    },
                    "tos_accepted": true
                  },
                  "sign": {
                    "certificate": "-----BEGIN CERTIFICATE-----\nMIID...Oeb0\n-----END CERTIFICATE-----\n",
                    "intermediate_certs": [
                      "-----BEGIN CERTIFICATE-----\nMIID...O/bYS\n-----END CERTIFICATE-----\n"
                    ],
                    "nonce": "1234512345",
                    "signed_data": "Rr5Q..."
                  },
                  "user_eq": {
                    "high_shelf": {
                      "frequency": 4500,
                      "gain_db": 0,
                      "quality": 0.707
                    },
                    "low_shelf": {
                      "frequency": 150,
                      "gain_db": 0,
                      "quality": 0.707
                    },
                    "max_peaking_eqs": 0,
                    "peaking_eqs": []
                  },
                  "version": 10,
                  "wifi": {
                    "bssid": "a0:ab:...",
                    "has_changes": false,
                    "noise_level": -90,
                    "signal_level": -50,
                    "ssid": "Nucl...",
                    "wpa_configured": true,
                    "wpa_id": 1,
                    "wpa_state": 10
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/Example1"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Eureka Info",
        "tags": [
          "Device Info"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "{\r\n  \"aogh\": {\r\n    \"aogh_api_version\": \"2\"\r\n  },\r\n  \"audio\": {\r\n    \"digital\": false\r\n  },\r\n  \"build_info\": {\r\n    \"build_type\": 2,\r\n    \"cast_build_revision\": \"1.46.195690\",\r\n    \"cast_control_version\": 1,\r\n    \"preview_channel_state\": 4,\r\n    \"release_track\": \"preview-joining-stable-channel\",\r\n    \"system_build_number\": \"195690\"\r\n  },\r\n  \"detail\": {\r\n    \"icon_list\": [\r\n      {\r\n        \"depth\": 32,\r\n        \"height\": 55,\r\n        \"mimetype\": \"image/png\",\r\n        \"url\": \"/setup/icon.png\",\r\n        \"width\": 98\r\n      }\r\n    ],\r\n    \"locale\": {\r\n      \"display_string\": \"English (United States)\"\r\n    },\r\n    \"timezone\": {\r\n      \"display_string\": \"India Standard Time (Kolkata)\",\r\n      \"offset\": 330\r\n    }\r\n  },\r\n  \"device_info\": {\r\n    \"4k_blocked\": 0,\r\n    \"capabilities\": {\r\n      \"aogh_supported\": true,\r\n      \"assistant_supported\": true,\r\n      \"audio_hdr_supported\": false,\r\n      \"audio_surround_mode_supported\": false,\r\n      \"ble_supported\": true,\r\n      \"bluetooth_audio_sink_supported\": true,\r\n      \"bluetooth_audio_source_supported\": true,\r\n      \"bluetooth_supported\": true,\r\n      \"cloudcast_supported\": true,\r\n      \"content_filters_supported\": true,\r\n      \"display_supported\": false,\r\n      \"fdr_supported\": false,\r\n      \"hdmi_prefer_50hz_supported\": false,\r\n      \"hdmi_prefer_high_fps_supported\": false,\r\n      \"hotspot_supported\": true,\r\n      \"https_setup_supported\": true,\r\n      \"input_management_supported\": true,\r\n      \"keep_hotspot_until_connected_supported\": true,\r\n      \"multi_user_supported\": true,\r\n      \"multichannel_group_supported\": true,\r\n      \"multizone_supported\": true,\r\n      \"night_mode_supported\": true,\r\n      \"night_mode_supported_v2\": true,\r\n      \"opencast_supported\": false,\r\n      \"preview_channel_supported\": true,\r\n      \"reboot_supported\": true,\r\n      \"remote_ducking_supported\": true,\r\n      \"separate_tts_volume_supported\": true,\r\n      \"setup_supported\": true,\r\n      \"sleep_mode_supported\": true,\r\n      \"stats_supported\": true,\r\n      \"system_sound_effects_supported\": false,\r\n      \"user_eq_supported\": true,\r\n      \"wifi_auto_save_supported\": true,\r\n      \"wifi_regulatory_domain_locked\": true,\r\n      \"wifi_supported\": true\r\n    },\r\n    \"cloud_device_id\": \"003D...\",\r\n    \"factory_country_code\": \"US\",\r\n    \"hotspot_bssid\": \"FA:8F:CA:30:41:71\",\r\n    \"local_authorization_token_hash\": \"hBt2...\",\r\n    \"mac_address\": \"F4:F5:...\",\r\n    \"manufacturer\": \"Google Inc.\",\r\n    \"model_name\": \"Google Home\",\r\n    \"product_name\": \"pineapple\",\r\n    \"public_key\": \"MIIB...\",\r\n    \"ssdp_udn\": \"baab...\",\r\n    \"uma_client_id\": \"8ce0...\",\r\n    \"uptime\": 48509.169282,\r\n    \"weave_device_id\": \"\"\r\n  },\r\n  \"multizone\": {\r\n    \"audio_output_delay\": 0,\r\n    \"audio_output_delay_hdmi\": 0,\r\n    \"audio_output_delay_oem\": 0,\r\n    \"aux_in_group\": \"\",\r\n    \"dynamic_groups\": [],\r\n    \"groups\": [],\r\n    \"multichannel_status\": 0\r\n  },\r\n  \"name\": \"Bedroom Speaker\",\r\n  \"net\": {\r\n    \"ethernet_connected\": false,\r\n    \"ip_address\": \"192.168.0.18\",\r\n    \"online\": true\r\n  },\r\n  \"night_mode_params\": {\r\n    \"device_override_do_not_disturb\": 0,\r\n    \"do_not_disturb\": true,\r\n    \"enabled\": true,\r\n    \"led_brightness\": 0.57999998331069946,\r\n    \"volume\": 0.5899999737739563,\r\n    \"windows\": [\r\n      {\r\n        \"days\": [\r\n          0,\r\n          1,\r\n          2,\r\n          3,\r\n          4,\r\n          5,\r\n          6\r\n        ],\r\n        \"length_hours\": 6,\r\n        \"start_hour\": 23\r\n      }\r\n    ]\r\n  },\r\n  \"opencast\": {\r\n    \"pin_code\": \"\"\r\n  },\r\n  \"opt_in\": {\r\n    \"audio_hdr\": false,\r\n    \"audio_surround_mode\": 0,\r\n    \"autoplay_on_signal\": true,\r\n    \"cloud_ipc\": true,\r\n    \"hdmi_prefer_50hz\": false,\r\n    \"hdmi_prefer_high_fps\": true,\r\n    \"managed_mode\": false,\r\n    \"opencast\": true,\r\n    \"preview_channel\": true,\r\n    \"remote_ducking\": true,\r\n    \"stats\": true,\r\n    \"ui_flipped\": false,\r\n    \"wpa3_support_enabled\": false\r\n  },\r\n  \"proxy\": {\r\n    \"mode\": \"system\"\r\n  },\r\n  \"settings\": {\r\n    \"closed_caption\": {},\r\n    \"control_notifications\": 1,\r\n    \"country_code\": \"IN\",\r\n    \"locale\": \"en-US\",\r\n    \"network_standby\": 0,\r\n    \"system_sound_effects\": true,\r\n    \"time_format\": 1,\r\n    \"timezone\": \"Asia/Kolkata\",\r\n    \"wake_on_cast\": 1\r\n  },\r\n  \"setup\": {\r\n    \"qr_ssid_suffix\": \"\",\r\n    \"setup_state\": 60,\r\n    \"ssid_suffix\": \"k\",\r\n    \"stats\": {\r\n      \"num_check_connectivity\": 0,\r\n      \"num_connect_wifi\": 0,\r\n      \"num_connected_wifi_not_saved\": 0,\r\n      \"num_initial_eureka_info\": 0,\r\n      \"num_obtain_ip\": 0\r\n    },\r\n    \"tos_accepted\": true\r\n  },\r\n  \"sign\": {\r\n    \"certificate\": \"-----BEGIN CERTIFICATE-----\\nMIID...Oeb0\\n-----END CERTIFICATE-----\\n\",\r\n    \"intermediate_certs\": [\r\n      \"-----BEGIN CERTIFICATE-----\\nMIID...O/bYS\\n-----END CERTIFICATE-----\\n\"\r\n    ],\r\n    \"nonce\": \"1234512345\",\r\n    \"signed_data\": \"Rr5Q...\"\r\n  },\r\n  \"user_eq\": {\r\n    \"high_shelf\": {\r\n      \"frequency\": 4500,\r\n      \"gain_db\": 0,\r\n      \"quality\": 0.707\r\n    },\r\n    \"low_shelf\": {\r\n      \"frequency\": 150,\r\n      \"gain_db\": 0,\r\n      \"quality\": 0.707\r\n    },\r\n    \"max_peaking_eqs\": 0,\r\n    \"peaking_eqs\": []\r\n  },\r\n  \"version\": 10,\r\n  \"wifi\": {\r\n    \"bssid\": \"a0:ab:...\",\r\n    \"has_changes\": false,\r\n    \"noise_level\": -90,\r\n    \"signal_level\": -50,\r\n    \"ssid\": \"Nucl...\",\r\n    \"wpa_configured\": true,\r\n    \"wpa_id\": 1,\r\n    \"wpa_state\": 10\r\n  }\r\n}",
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "7380",
                "Content-Type": "application/json"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "method": "GET",
              "uri": "/eureka_info?params=version%2Caudio%2Cname%2Cbuild_info%2Cdetail%2Cdevice_info%2Cnet%2Cwifi%2Csetup%2Csettings%2Copt_in%2Copencast%2Cmultizone%2Cproxy%2Cnight_mode_params%2Cuser_eq%2Croom_equalizer%2Csign%2Caogh%2Cultrasound%2Cmesh&options=detail%2Csign&nonce=1234512345"
            },
            "x-testDescription": "This gives most of the device info. The GET parameter `param` is a comma separated list of json keys to fetch. Currently, these params are known: `version,audio,name,build_info,detail,device_info,net,wifi,setup,settings,opt_in,opencast,multizone,proxy,night_mode_params,user_eq,room_equalizer,sign,aogh,ultrasound,mesh`\n\nNested items can also be filtered using the dot notation. Example: `audio.digital`\n\nThe `options` GET parameter is always set to `detail` or `detail,sign`. `sign` signs the `nonce` and returns some value.\n\nThe `nonce` GET parameter is an integer value signed with needed (see `option` parameter above).",
            "x-testEnabled": true,
            "x-testName": "Eureka Info",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/forget_wifi": {
      "post": {
        "deprecated": false,
        "description": "This is to forget a saved network by `wpa_id`. Get the `wpa_id` from /setup/configured_networks",
        "operationId": "ForgetWi-FiNetwork",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "wpa_id": 0
              },
              "schema": {
                "$ref": "#/components/schemas/ForgetWi-FiNetworkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "x-is-dynamic": true
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Forget Wi-Fi Network",
        "tags": [
          "Wifi"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "headers": {},
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "NONE",
              "x-matchResponseSchema": true
            },
            "request": {
              "body": "{\r\n  \"wpa_id\": 0\r\n}",
              "headers": {
                "Content-Type": "application/json"
              },
              "method": "POST",
              "uri": "/forget_wifi"
            },
            "x-testDescription": "This is to forget a saved network by `wpa_id`. Get the `wpa_id` from /setup/configured_networks",
            "x-testEnabled": true,
            "x-testName": "Forget Wi-Fi Network",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/get_app_device_id": {
      "post": {
        "deprecated": false,
        "description": "This gives \"app device id\", \"certificate\" and \"signed data\".  \nThe `app_id` in the request is mandatory and refers to Chromecast backdrop/screensaver app. It has to be set to `E8C28D3C`.  \n\nThe certificate is valid and issued by `Chromecast ICA 6 (Audio Assist), Google Inc`.\n\nNot sure what the other two are.",
        "operationId": "AppDeviceID",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "app_id": "E8C28D3C"
              },
              "schema": {
                "$ref": "#/components/schemas/AppDeviceIDRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "app_device_id": "...",
                  "certificate": "-----BEGIN CERTIFICATE-----\nMIID...Oeb0\n-----END CERTIFICATE-----\n",
                  "signed_data": "HAjp..."
                },
                "schema": {
                  "$ref": "#/components/schemas/Example11"
                }
              }
            },
            "description": "",
            "headers": {}
          },
          "404": {
            "description": "Not Found"
          }
        },
        "summary": "App Device ID",
        "tags": [
          "Device Info"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "{\r\n  \"app_device_id\": \"...\",\r\n  \"certificate\": \"-----BEGIN CERTIFICATE-----\\nMIID...Oeb0\\n-----END CERTIFICATE-----\\n\",\r\n  \"signed_data\": \"HAjp...\"\r\n}",
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "1828",
                "Content-Type": "application/json"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "body": "{\r\n  \"app_id\": \"E8C28D3C\"\r\n}",
              "headers": {
                "Content-Type": "application/json"
              },
              "method": "POST",
              "uri": "/get_app_device_id"
            },
            "x-testDescription": "This gives \"app device id\", \"certificate\" and \"signed data\".  \nThe `app_id` in the request is mandatory and refers to Chromecast backdrop/screensaver app. It has to be set to `E8C28D3C`.  \n\nThe certificate is valid and issued by `Chromecast ICA 6 (Audio Assist), Google Inc`.\n\nNot sure what the other two are.",
            "x-testEnabled": true,
            "x-testName": "App Device ID",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/icon.png": {
      "get": {
        "deprecated": false,
        "description": "**Update:** This no longer exists. It's not useful, anyway.\n\nA redirect to `http://www.gstatic.com/eureka/images/eureka_device.png`",
        "operationId": "ChromecastIcon",
        "parameters": [],
        "responses": {
          "200": {
            "description": "",
            "headers": {}
          }
        },
        "summary": "Chromecast Icon",
        "tags": [
          "Static Files"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "headers": {},
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "NONE",
              "x-matchResponseSchema": true
            },
            "request": {
              "method": "GET",
              "uri": "/icon.png"
            },
            "x-testDescription": "**Update:** This no longer exists. It's not useful, anyway.\n\nA redirect to `http://www.gstatic.com/eureka/images/eureka_device.png`",
            "x-testEnabled": true,
            "x-testName": "Chromecast Icon",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/offer": {
      "get": {
        "deprecated": false,
        "description": "This gives a token which is used by the Home app to get offers. The offers themselves are not stored on the device.  \nA new token is generated for every request.",
        "operationId": "Offer",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "token": "ADtq..."
                },
                "schema": {
                  "$ref": "#/components/schemas/Example12"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Offer",
        "tags": [
          "Device Info"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "{\"token\":\"ADtq...\"}",
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "240",
                "Content-Type": "application/json"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "method": "GET",
              "uri": "/offer"
            },
            "x-testDescription": "This gives a token which is used by the Home app to get offers. The offers themselves are not stored on the device.  \nA new token is generated for every request.",
            "x-testEnabled": true,
            "x-testName": "Offer",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/reboot": {
      "post": {
        "deprecated": false,
        "description": "This can simply reboot the device (`params: \"now\"`) or factory reset the device (`params: \"fdr\"`).",
        "operationId": "RebootandFactoryReset",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "params": "now"
              },
              "schema": {
                "$ref": "#/components/schemas/RebootandFactoryResetRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "x-is-dynamic": true
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Reboot and Factory Reset",
        "tags": [
          "Device Settings"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "0"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "NONE",
              "x-matchResponseSchema": true
            },
            "request": {
              "body": "{\r\n  \"params\": \"now\"\r\n}",
              "headers": {
                "Content-Type": "application/json"
              },
              "method": "POST",
              "uri": "/reboot"
            },
            "x-testDescription": "This can simply reboot the device (`params: \"now\"`) or factory reset the device (`params: \"fdr\"`).",
            "x-testEnabled": true,
            "x-testName": "Reboot and Factory Reset",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/scan_results": {
      "get": {
        "deprecated": false,
        "description": "This gets a list of all nearby Wi-Fi access points.\n\nThe list only has the connected AP by default. Once a scan is triggered by `/setup/scan_wifi`, the whole list is cached for ~3 minutes. Then it will revert to returning only the connected AP again.",
        "operationId": "GetWi-FiScanResults",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "bssid": "APBSSID1",
                    "signal_level": -20,
                    "ssid": "APSSID1",
                    "wpa_auth": 7,
                    "wpa_cipher": 4,
                    "wpa_id": 0
                  }
                ],
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/Example114"
                  },
                  "type": "array"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Get Wi-Fi Scan Results",
        "tags": [
          "Wifi"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "[\r\n  {\r\n    \"bssid\": \"APBSSID1\",\r\n    \"signal_level\": -20,\r\n    \"ssid\": \"APSSID1\",\r\n    \"wpa_auth\": 7,\r\n    \"wpa_cipher\": 4,\r\n    \"wpa_id\": 0\r\n  }\r\n]",
              "headers": {},
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "method": "GET",
              "uri": "/scan_results"
            },
            "x-testDescription": "This gets a list of all nearby Wi-Fi access points.\n\nThe list only has the connected AP by default. Once a scan is triggered by `/setup/scan_wifi`, the whole list is cached for ~3 minutes. Then it will revert to returning only the connected AP again.",
            "x-testEnabled": true,
            "x-testName": "Get Wi-Fi Scan Results",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/scan_wifi": {
      "post": {
        "deprecated": false,
        "description": "This initiates scanning for Wi-Fi networks.\n\nThe results can be obtained with `/setup/scan_results` after triggering the scan with this request.",
        "operationId": "ScanforNetworks",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "x-is-dynamic": true
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Scan for Networks",
        "tags": [
          "Wifi"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "headers": {},
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "NONE",
              "x-matchResponseSchema": true
            },
            "request": {
              "method": "POST",
              "uri": "/scan_wifi"
            },
            "x-testDescription": "This initiates scanning for Wi-Fi networks.\n\nThe results can be obtained with `/setup/scan_results` after triggering the scan with this request.",
            "x-testEnabled": true,
            "x-testName": "Scan for Networks",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/set_eureka_info": {
      "post": {
        "deprecated": false,
        "description": "This can set custom values to some options.\n\nOnly fields to be modified need to be sent, not all. The example has some modifiable fields.\n\nTODO: List all modifiable fields.\n\nSending non-existant fields will still return a 200 OK, but they are not saved.",
        "operationId": "SetEurekaInfo",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "name": "Living Room",
                "opt_in": {
                  "opencast": true,
                  "preview_channel": true,
                  "remote_ducking": true,
                  "stats": true
                },
                "settings": {
                  "control_notifications": 2
                }
              },
              "schema": {
                "$ref": "#/components/schemas/SetEurekaInfoRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "x-is-dynamic": true
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Set Eureka Info",
        "tags": [
          "Device Settings"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "0"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "NONE",
              "x-matchResponseSchema": true
            },
            "request": {
              "body": "{\r\n  \"name\": \"Living Room\",\r\n  \"settings\": {\r\n    \"control_notifications\": 2\r\n  },\r\n  \"opt_in\": {\r\n    \"opencast\": true,\r\n    \"preview_channel\": true,\r\n    \"remote_ducking\": true,\r\n    \"stats\": true\r\n  }\r\n}",
              "headers": {
                "Content-Type": "application/json"
              },
              "method": "POST",
              "uri": "/set_eureka_info"
            },
            "x-testDescription": "This can set custom values to some options.\n\nOnly fields to be modified need to be sent, not all. The example has some modifiable fields.\n\nTODO: List all modifiable fields.\n\nSending non-existant fields will still return a 200 OK, but they are not saved.",
            "x-testEnabled": true,
            "x-testName": "Set Eureka Info",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/supported_locales": {
      "get": {
        "deprecated": false,
        "description": "Simply returns a list of all supported locales.",
        "operationId": "Locales",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "display_string": "Arabic - العربية",
                    "locale": "ar"
                  },
                  {
                    "display_string": "German - Deutsch",
                    "locale": "de"
                  },
                  {
                    "display_string": "English (United States)",
                    "locale": "en-US"
                  }
                ],
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/Example15"
                  },
                  "type": "array"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Locales",
        "tags": [
          "Device Info"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "[\n  {\n    \"display_string\": \"Arabic - العربية\",\n    \"locale\": \"ar\"\n  },\n  {\n    \"display_string\": \"German - Deutsch\",\n    \"locale\": \"de\"\n  },\n  {\n    \"display_string\": \"English (United States)\",\n    \"locale\": \"en-US\"\n  }\n]",
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "3553",
                "Content-Type": "application/json"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "method": "GET",
              "uri": "/supported_locales"
            },
            "x-testDescription": "Simply returns a list of all supported locales.",
            "x-testEnabled": false,
            "x-testName": "Locales",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/supported_timezones": {
      "get": {
        "deprecated": false,
        "description": "Simply returns a list of all supported timezones.",
        "operationId": "Timezones",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": [
                  {
                    "display_string": "Samoa Standard Time (Midway)",
                    "offset": -660,
                    "timezone": "Pacific/Midway"
                  },
                  {
                    "display_string": "Hawaii-Aleutian Standard Time (Honolulu)",
                    "offset": -600,
                    "timezone": "Pacific/Honolulu"
                  }
                ],
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/Example14"
                  },
                  "type": "array"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Timezones",
        "tags": [
          "Device Info"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "[\n  {\n    \"display_string\": \"Samoa Standard Time (Midway)\",\n    \"offset\": -660,\n    \"timezone\": \"Pacific/Midway\"\n  },\n  {\n    \"display_string\": \"Hawaii-Aleutian Standard Time (Honolulu)\",\n    \"offset\": -600,\n    \"timezone\": \"Pacific/Honolulu\"\n  }\n]",
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "11800",
                "Content-Type": "application/json"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "method": "GET",
              "uri": "/supported_timezones"
            },
            "x-testDescription": "Simply returns a list of all supported timezones.",
            "x-testEnabled": false,
            "x-testName": "Timezones",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/test_internet_download_speed": {
      "post": {
        "deprecated": false,
        "description": "**Update:** This seems to have been removed. Returns 404 Not Found.\n\nThis endpoint tests internet download speed. Any sample file URL can be provided.",
        "operationId": "TestInternetDownloadSpeed",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "url": "https://storage.googleapis.com/reliability-speedtest/random.txt"
              },
              "schema": {
                "$ref": "#/components/schemas/TestInternetDownloadSpeedRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "bytes_received": 31457280,
                  "response_code": 200,
                  "time_for_data_fetch": 4722,
                  "time_for_http_response": 316
                },
                "schema": {
                  "$ref": "#/components/schemas/Example16"
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Test Internet Download Speed",
        "tags": [
          "Device Info"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "body": "{\"bytes_received\":31457280,\"response_code\":200,\"time_for_data_fetch\":4722,\"time_for_http_response\":316}",
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "103",
                "Content-Type": "application/json"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "KEYS",
              "x-matchResponseSchema": true
            },
            "request": {
              "body": "{\r\n  \"url\": \"https://storage.googleapis.com/reliability-speedtest/random.txt\"\r\n}",
              "headers": {
                "Content-Type": "application/json"
              },
              "method": "POST",
              "uri": "/test_internet_download_speed"
            },
            "x-testDescription": "**Update:** This seems to have been removed. Returns 404 Not Found.\n\nThis endpoint tests internet download speed. Any sample file URL can be provided.",
            "x-testEnabled": true,
            "x-testName": "Test Internet Download Speed",
            "x-testShouldPass": true
          }
        ]
      }
    },
    "/user_eq/set_equalizer": {
      "post": {
        "deprecated": false,
        "description": "This can only set new equalizer values. To get already set values, use /setup/eureka_info.\n\nThe body is mandatory. It can either contain `low_shelf` or `high_shelf` or both.\n\n`low_shelf.gain_db` and `high_shelf.gain_db` refer to **bass** and **treble** respectively.\n\nDefault values are 0 for both.  \nWhile the slider in the Home app only ranges from -6 to +6, they can be set to any integer like 50 or -100. These changes persist.",
        "operationId": "SetEqualizerValues",
        "parameters": [],
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "high_shelf": {
                  "gain_db": 0
                },
                "low_shelf": {
                  "gain_db": 0
                }
              },
              "schema": {
                "$ref": "#/components/schemas/SetEqualizerValuesRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "text/plain": {
                "schema": {
                  "type": "object",
                  "x-is-dynamic": true
                }
              }
            },
            "description": "",
            "headers": {}
          }
        },
        "summary": "Set Equalizer Values",
        "tags": [
          "Assistant"
        ],
        "x-operation-settings": {
          "AllowDynamicFormParameters": false,
          "AllowDynamicQueryParameters": false,
          "CollectParameters": false,
          "IsMultiContentStreaming": false
        },
        "x-unitTests": [
          {
            "expectedResponse": {
              "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Cache-Control": "no-cache",
                "Content-Length": "0"
              },
              "statusCode": "200",
              "x-allowExtraHeaders": true,
              "x-arrayCheckCount": false,
              "x-arrayOrderedMatching": false,
              "x-bodyMatchMode": "NONE",
              "x-matchResponseSchema": true
            },
            "request": {
              "body": "{\r\n  \"low_shelf\": {\r\n    \"gain_db\": 0\r\n  },\r\n  \"high_shelf\": {\r\n    \"gain_db\": 0\r\n  }\r\n}",
              "headers": {
                "Content-Type": "application/json"
              },
              "method": "POST",
              "uri": "/user_eq/set_equalizer"
            },
            "x-testDescription": "This can only set new equalizer values. To get already set values, use /setup/eureka_info.\n\nThe body is mandatory. It can either contain `low_shelf` or `high_shelf` or both.\n\n`low_shelf.gain_db` and `high_shelf.gain_db` refer to **bass** and **treble** respectively.\n\nDefault values are 0 for both.  \nWhile the slider in the Home app only ranges from -6 to +6, they can be set to any integer like 50 or -100. These changes persist.",
            "x-testEnabled": true,
            "x-testName": "Set Equalizer Values",
            "x-testShouldPass": true
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AccessibilityRequest": {
        "example": {
          "endpoint_enabled": false,
          "hotword_enabled": false
        },
        "properties": {
          "endpoint_enabled": {
            "type": "boolean"
          },
          "hotword_enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "hotword_enabled",
          "endpoint_enabled"
        ],
        "title": "AccessibilityRequest",
        "type": "object"
      },
      "Alarm": {
        "example": {
          "date_pattern": {
            "day": 15,
            "month": 1,
            "year": 2018
          },
          "fire_time": 1515995400000,
          "id": "alarm/xxx",
          "status": 1,
          "time_pattern": {
            "hour": 6,
            "minute": 50,
            "second": 0
          }
        },
        "properties": {
          "date_pattern": {
            "$ref": "#/components/schemas/DatePattern"
          },
          "fire_time": {
            "type": "number"
          },
          "id": {
            "type": "string"
          },
          "status": {
            "format": "int32",
            "type": "integer"
          },
          "time_pattern": {
            "$ref": "#/components/schemas/TimePattern"
          }
        },
        "required": [
          "date_pattern",
          "time_pattern",
          "fire_time",
          "id",
          "status"
        ],
        "title": "Alarm",
        "type": "object"
      },
      "AlarmVolumeRequest": {
        "example": {
          "volume": 1
        },
        "properties": {
          "volume": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "volume"
        ],
        "title": "AlarmVolumeRequest",
        "type": "object"
      },
      "Aogh": {
        "example": {
          "aogh_api_version": "2"
        },
        "properties": {
          "aogh_api_version": {
            "type": "string"
          }
        },
        "required": [
          "aogh_api_version"
        ],
        "title": "Aogh",
        "type": "object"
      },
      "AppDeviceIDRequest": {
        "example": {
          "app_id": "E8C28D3C"
        },
        "properties": {
          "app_id": {
            "type": "string"
          }
        },
        "required": [
          "app_id"
        ],
        "title": "AppDeviceIDRequest",
        "type": "object"
      },
      "Audio": {
        "example": {
          "digital": false
        },
        "properties": {
          "digital": {
            "type": "boolean"
          }
        },
        "required": [
          "digital"
        ],
        "title": "Audio",
        "type": "object"
      },
      "BuildInfo": {
        "example": {
          "build_type": 2,
          "cast_build_revision": "1.46.195690",
          "cast_control_version": 1,
          "preview_channel_state": 4,
          "release_track": "preview-joining-stable-channel",
          "system_build_number": "195690"
        },
        "properties": {
          "build_type": {
            "format": "int32",
            "type": "integer"
          },
          "cast_build_revision": {
            "type": "string"
          },
          "cast_control_version": {
            "format": "int32",
            "type": "integer"
          },
          "preview_channel_state": {
            "format": "int32",
            "type": "integer"
          },
          "release_track": {
            "type": "string"
          },
          "system_build_number": {
            "type": "string"
          }
        },
        "required": [
          "build_type",
          "cast_build_revision",
          "cast_control_version",
          "preview_channel_state",
          "release_track",
          "system_build_number"
        ],
        "title": "BuildInfo",
        "type": "object"
      },
      "Capabilities": {
        "example": {
          "aogh_supported": true,
          "assistant_supported": true,
          "audio_hdr_supported": false,
          "audio_surround_mode_supported": false,
          "ble_supported": true,
          "bluetooth_audio_sink_supported": true,
          "bluetooth_audio_source_supported": true,
          "bluetooth_supported": true,
          "cloudcast_supported": true,
          "content_filters_supported": true,
          "display_supported": false,
          "fdr_supported": false,
          "hdmi_prefer_50hz_supported": false,
          "hdmi_prefer_high_fps_supported": false,
          "hotspot_supported": true,
          "https_setup_supported": true,
          "input_management_supported": true,
          "keep_hotspot_until_connected_supported": true,
          "multi_user_supported": true,
          "multichannel_group_supported": true,
          "multizone_supported": true,
          "night_mode_supported": true,
          "night_mode_supported_v2": true,
          "opencast_supported": false,
          "preview_channel_supported": true,
          "reboot_supported": true,
          "remote_ducking_supported": true,
          "separate_tts_volume_supported": true,
          "setup_supported": true,
          "sleep_mode_supported": true,
          "stats_supported": true,
          "system_sound_effects_supported": false,
          "user_eq_supported": true,
          "wifi_auto_save_supported": true,
          "wifi_regulatory_domain_locked": true,
          "wifi_supported": true
        },
        "properties": {
          "aogh_supported": {
            "type": "boolean"
          },
          "assistant_supported": {
            "type": "boolean"
          },
          "audio_hdr_supported": {
            "type": "boolean"
          },
          "audio_surround_mode_supported": {
            "type": "boolean"
          },
          "ble_supported": {
            "type": "boolean"
          },
          "bluetooth_audio_sink_supported": {
            "type": "boolean"
          },
          "bluetooth_audio_source_supported": {
            "type": "boolean"
          },
          "bluetooth_supported": {
            "type": "boolean"
          },
          "cloudcast_supported": {
            "type": "boolean"
          },
          "content_filters_supported": {
            "type": "boolean"
          },
          "display_supported": {
            "type": "boolean"
          },
          "fdr_supported": {
            "type": "boolean"
          },
          "hdmi_prefer_50hz_supported": {
            "type": "boolean"
          },
          "hdmi_prefer_high_fps_supported": {
            "type": "boolean"
          },
          "hotspot_supported": {
            "type": "boolean"
          },
          "https_setup_supported": {
            "type": "boolean"
          },
          "input_management_supported": {
            "type": "boolean"
          },
          "keep_hotspot_until_connected_supported": {
            "type": "boolean"
          },
          "multi_user_supported": {
            "type": "boolean"
          },
          "multichannel_group_supported": {
            "type": "boolean"
          },
          "multizone_supported": {
            "type": "boolean"
          },
          "night_mode_supported": {
            "type": "boolean"
          },
          "night_mode_supported_v2": {
            "type": "boolean"
          },
          "opencast_supported": {
            "type": "boolean"
          },
          "preview_channel_supported": {
            "type": "boolean"
          },
          "reboot_supported": {
            "type": "boolean"
          },
          "remote_ducking_supported": {
            "type": "boolean"
          },
          "separate_tts_volume_supported": {
            "type": "boolean"
          },
          "setup_supported": {
            "type": "boolean"
          },
          "sleep_mode_supported": {
            "type": "boolean"
          },
          "stats_supported": {
            "type": "boolean"
          },
          "system_sound_effects_supported": {
            "type": "boolean"
          },
          "user_eq_supported": {
            "type": "boolean"
          },
          "wifi_auto_save_supported": {
            "type": "boolean"
          },
          "wifi_regulatory_domain_locked": {
            "type": "boolean"
          },
          "wifi_supported": {
            "type": "boolean"
          }
        },
        "required": [
          "aogh_supported",
          "assistant_supported",
          "audio_hdr_supported",
          "audio_surround_mode_supported",
          "ble_supported",
          "bluetooth_audio_sink_supported",
          "bluetooth_audio_source_supported",
          "bluetooth_supported",
          "cloudcast_supported",
          "content_filters_supported",
          "display_supported",
          "fdr_supported",
          "hdmi_prefer_50hz_supported",
          "hdmi_prefer_high_fps_supported",
          "hotspot_supported",
          "https_setup_supported",
          "input_management_supported",
          "keep_hotspot_until_connected_supported",
          "multi_user_supported",
          "multichannel_group_supported",
          "multizone_supported",
          "night_mode_supported",
          "night_mode_supported_v2",
          "opencast_supported",
          "preview_channel_supported",
          "reboot_supported",
          "remote_ducking_supported",
          "separate_tts_volume_supported",
          "setup_supported",
          "sleep_mode_supported",
          "stats_supported",
          "system_sound_effects_supported",
          "user_eq_supported",
          "wifi_auto_save_supported",
          "wifi_regulatory_domain_locked",
          "wifi_supported"
        ],
        "title": "Capabilities",
        "type": "object"
      },
      "ChangeDiscoverabilityRequest": {
        "example": {
          "enable_discovery": true
        },
        "properties": {
          "enable_discovery": {
            "type": "boolean"
          }
        },
        "required": [
          "enable_discovery"
        ],
        "title": "ChangeDiscoverabilityRequest",
        "type": "object"
      },
      "CheckReadyStatusRequest": {
        "example": {
          "play_ready_message": true,
          "user_id": "xxxxx"
        },
        "properties": {
          "play_ready_message": {
            "type": "boolean"
          },
          "user_id": {
            "type": "string"
          }
        },
        "required": [
          "play_ready_message",
          "user_id"
        ],
        "title": "CheckReadyStatusRequest",
        "type": "object"
      },
      "ConnectedDevice": {
        "example": {
          "device": {
            "bond_date": 1529248165656.613,
            "device_class": 2491396,
            "device_type": 1,
            "last_connect_date": 0,
            "mac_address": "xx:xx:xx:xx:xx:xx",
            "name": "PHILIPS BT64",
            "rssi": -255,
            "service_uuids": [
              "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
              "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
              "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
              "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
              "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
              "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
            ]
          },
          "enabled_profiles": 2
        },
        "properties": {
          "device": {
            "$ref": "#/components/schemas/Device"
          },
          "enabled_profiles": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "device",
          "enabled_profiles"
        ],
        "title": "ConnectedDevice",
        "type": "object"
      },
      "ConnecttoWi-FiNetworkRequest": {
        "example": {
          "bssid": "5c:0a:xx:xx:xx:xx",
          "enc_passwd": "xxxxxfPY=",
          "signal_level": -42,
          "ssid": "myotherssid",
          "wpa_auth": 7,
          "wpa_cipher": 4
        },
        "properties": {
          "bssid": {
            "type": "string"
          },
          "enc_passwd": {
            "type": "string"
          },
          "signal_level": {
            "format": "int32",
            "type": "integer"
          },
          "ssid": {
            "type": "string"
          },
          "wpa_auth": {
            "format": "int32",
            "type": "integer"
          },
          "wpa_cipher": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "bssid",
          "signal_level",
          "ssid",
          "wpa_auth",
          "wpa_cipher",
          "enc_passwd"
        ],
        "title": "ConnecttoWi-FiNetworkRequest",
        "type": "object"
      },
      "DatePattern": {
        "example": {
          "day": 15,
          "month": 1,
          "year": 2018
        },
        "properties": {
          "day": {
            "format": "int32",
            "type": "integer"
          },
          "month": {
            "format": "int32",
            "type": "integer"
          },
          "year": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "day",
          "month",
          "year"
        ],
        "title": "DatePattern",
        "type": "object"
      },
      "DeleteAlarmsandTimersRequest": {
        "example": {
          "ids": [
            "timer/xxx",
            "alarm/xxx"
          ]
        },
        "properties": {
          "ids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "ids"
        ],
        "title": "DeleteAlarmsandTimersRequest",
        "type": "object"
      },
      "Detail": {
        "example": {
          "icon_list": [
            {
              "depth": 32,
              "height": 55,
              "mimetype": "image/png",
              "url": "/setup/icon.png",
              "width": 98
            }
          ],
          "locale": {
            "display_string": "English (United States)"
          },
          "timezone": {
            "display_string": "India Standard Time (Kolkata)",
            "offset": 330
          }
        },
        "properties": {
          "icon_list": {
            "items": {
              "$ref": "#/components/schemas/IconList"
            },
            "type": "array"
          },
          "locale": {
            "$ref": "#/components/schemas/Locale"
          },
          "timezone": {
            "$ref": "#/components/schemas/Timezone"
          }
        },
        "required": [
          "icon_list",
          "locale",
          "timezone"
        ],
        "title": "Detail",
        "type": "object"
      },
      "Device": {
        "example": {
          "bond_date": 1529248165656.613,
          "device_class": 2491396,
          "device_type": 1,
          "last_connect_date": 0,
          "mac_address": "xx:xx:xx:xx:xx:xx",
          "name": "PHILIPS BT64",
          "rssi": -255,
          "service_uuids": [
            "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
          ]
        },
        "properties": {
          "bond_date": {
            "type": "number"
          },
          "device_class": {
            "format": "int32",
            "type": "integer"
          },
          "device_type": {
            "format": "int32",
            "type": "integer"
          },
          "last_connect_date": {
            "format": "int32",
            "type": "integer"
          },
          "mac_address": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "rssi": {
            "format": "int32",
            "type": "integer"
          },
          "service_uuids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "bond_date",
          "device_class",
          "device_type",
          "last_connect_date",
          "mac_address",
          "name",
          "rssi",
          "service_uuids"
        ],
        "title": "Device",
        "type": "object"
      },
      "DeviceInfo": {
        "example": {
          "4k_blocked": 0,
          "capabilities": {
            "aogh_supported": true,
            "assistant_supported": true,
            "audio_hdr_supported": false,
            "audio_surround_mode_supported": false,
            "ble_supported": true,
            "bluetooth_audio_sink_supported": true,
            "bluetooth_audio_source_supported": true,
            "bluetooth_supported": true,
            "cloudcast_supported": true,
            "content_filters_supported": true,
            "display_supported": false,
            "fdr_supported": false,
            "hdmi_prefer_50hz_supported": false,
            "hdmi_prefer_high_fps_supported": false,
            "hotspot_supported": true,
            "https_setup_supported": true,
            "input_management_supported": true,
            "keep_hotspot_until_connected_supported": true,
            "multi_user_supported": true,
            "multichannel_group_supported": true,
            "multizone_supported": true,
            "night_mode_supported": true,
            "night_mode_supported_v2": true,
            "opencast_supported": false,
            "preview_channel_supported": true,
            "reboot_supported": true,
            "remote_ducking_supported": true,
            "separate_tts_volume_supported": true,
            "setup_supported": true,
            "sleep_mode_supported": true,
            "stats_supported": true,
            "system_sound_effects_supported": false,
            "user_eq_supported": true,
            "wifi_auto_save_supported": true,
            "wifi_regulatory_domain_locked": true,
            "wifi_supported": true
          },
          "cloud_device_id": "003D...",
          "factory_country_code": "US",
          "hotspot_bssid": "FA:8F:CA:30:41:71",
          "local_authorization_token_hash": "hBt2...",
          "mac_address": "F4:F5:...",
          "manufacturer": "Google Inc.",
          "model_name": "Google Home",
          "product_name": "pineapple",
          "public_key": "MIIB...",
          "ssdp_udn": "baab...",
          "uma_client_id": "8ce0...",
          "uptime": 48509.169282,
          "weave_device_id": ""
        },
        "properties": {
          "4k_blocked": {
            "format": "int32",
            "type": "integer"
          },
          "capabilities": {
            "$ref": "#/components/schemas/Capabilities"
          },
          "cloud_device_id": {
            "type": "string"
          },
          "factory_country_code": {
            "type": "string"
          },
          "hotspot_bssid": {
            "type": "string"
          },
          "local_authorization_token_hash": {
            "type": "string"
          },
          "mac_address": {
            "type": "string"
          },
          "manufacturer": {
            "type": "string"
          },
          "model_name": {
            "type": "string"
          },
          "product_name": {
            "type": "string"
          },
          "public_key": {
            "type": "string"
          },
          "ssdp_udn": {
            "type": "string"
          },
          "uma_client_id": {
            "type": "string"
          },
          "uptime": {
            "type": "number"
          },
          "weave_device_id": {
            "type": "string"
          }
        },
        "required": [
          "4k_blocked",
          "capabilities",
          "cloud_device_id",
          "factory_country_code",
          "hotspot_bssid",
          "local_authorization_token_hash",
          "mac_address",
          "manufacturer",
          "model_name",
          "product_name",
          "public_key",
          "ssdp_udn",
          "uma_client_id",
          "uptime",
          "weave_device_id"
        ],
        "title": "DeviceInfo",
        "type": "object"
      },
      "Example1": {
        "example": {
          "aogh": {
            "aogh_api_version": "2"
          },
          "audio": {
            "digital": false
          },
          "build_info": {
            "build_type": 2,
            "cast_build_revision": "1.46.195690",
            "cast_control_version": 1,
            "preview_channel_state": 4,
            "release_track": "preview-joining-stable-channel",
            "system_build_number": "195690"
          },
          "detail": {
            "icon_list": [
              {
                "depth": 32,
                "height": 55,
                "mimetype": "image/png",
                "url": "/setup/icon.png",
                "width": 98
              }
            ],
            "locale": {
              "display_string": "English (United States)"
            },
            "timezone": {
              "display_string": "India Standard Time (Kolkata)",
              "offset": 330
            }
          },
          "device_info": {
            "4k_blocked": 0,
            "capabilities": {
              "aogh_supported": true,
              "assistant_supported": true,
              "audio_hdr_supported": false,
              "audio_surround_mode_supported": false,
              "ble_supported": true,
              "bluetooth_audio_sink_supported": true,
              "bluetooth_audio_source_supported": true,
              "bluetooth_supported": true,
              "cloudcast_supported": true,
              "content_filters_supported": true,
              "display_supported": false,
              "fdr_supported": false,
              "hdmi_prefer_50hz_supported": false,
              "hdmi_prefer_high_fps_supported": false,
              "hotspot_supported": true,
              "https_setup_supported": true,
              "input_management_supported": true,
              "keep_hotspot_until_connected_supported": true,
              "multi_user_supported": true,
              "multichannel_group_supported": true,
              "multizone_supported": true,
              "night_mode_supported": true,
              "night_mode_supported_v2": true,
              "opencast_supported": false,
              "preview_channel_supported": true,
              "reboot_supported": true,
              "remote_ducking_supported": true,
              "separate_tts_volume_supported": true,
              "setup_supported": true,
              "sleep_mode_supported": true,
              "stats_supported": true,
              "system_sound_effects_supported": false,
              "user_eq_supported": true,
              "wifi_auto_save_supported": true,
              "wifi_regulatory_domain_locked": true,
              "wifi_supported": true
            },
            "cloud_device_id": "003D...",
            "factory_country_code": "US",
            "hotspot_bssid": "FA:8F:CA:30:41:71",
            "local_authorization_token_hash": "hBt2...",
            "mac_address": "F4:F5:...",
            "manufacturer": "Google Inc.",
            "model_name": "Google Home",
            "product_name": "pineapple",
            "public_key": "MIIB...",
            "ssdp_udn": "baab...",
            "uma_client_id": "8ce0...",
            "uptime": 48509.169282,
            "weave_device_id": ""
          },
          "multizone": {
            "audio_output_delay": 0,
            "audio_output_delay_hdmi": 0,
            "audio_output_delay_oem": 0,
            "aux_in_group": "",
            "dynamic_groups": [],
            "groups": [],
            "multichannel_status": 0
          },
          "name": "Bedroom Speaker",
          "net": {
            "ethernet_connected": false,
            "ip_address": "192.168.0.18",
            "online": true
          },
          "night_mode_params": {
            "device_override_do_not_disturb": 0,
            "do_not_disturb": true,
            "enabled": true,
            "led_brightness": 0.5799999833106995,
            "volume": 0.5899999737739563,
            "windows": [
              {
                "days": [
                  0,
                  1,
                  2,
                  3,
                  4,
                  5,
                  6
                ],
                "length_hours": 6,
                "start_hour": 23
              }
            ]
          },
          "opencast": {
            "pin_code": ""
          },
          "opt_in": {
            "audio_hdr": false,
            "audio_surround_mode": 0,
            "autoplay_on_signal": true,
            "cloud_ipc": true,
            "hdmi_prefer_50hz": false,
            "hdmi_prefer_high_fps": true,
            "managed_mode": false,
            "opencast": true,
            "preview_channel": true,
            "remote_ducking": true,
            "stats": true,
            "ui_flipped": false,
            "wpa3_support_enabled": false
          },
          "proxy": {
            "mode": "system"
          },
          "settings": {
            "closed_caption": {},
            "control_notifications": 1,
            "country_code": "IN",
            "locale": "en-US",
            "network_standby": 0,
            "system_sound_effects": true,
            "time_format": 1,
            "timezone": "Asia/Kolkata",
            "wake_on_cast": 1
          },
          "setup": {
            "qr_ssid_suffix": "",
            "setup_state": 60,
            "ssid_suffix": "k",
            "stats": {
              "num_check_connectivity": 0,
              "num_connect_wifi": 0,
              "num_connected_wifi_not_saved": 0,
              "num_initial_eureka_info": 0,
              "num_obtain_ip": 0
            },
            "tos_accepted": true
          },
          "sign": {
            "certificate": "-----BEGIN CERTIFICATE-----\nMIID...Oeb0\n-----END CERTIFICATE-----\n",
            "intermediate_certs": [
              "-----BEGIN CERTIFICATE-----\nMIID...O/bYS\n-----END CERTIFICATE-----\n"
            ],
            "nonce": "1234512345",
            "signed_data": "Rr5Q..."
          },
          "user_eq": {
            "high_shelf": {
              "frequency": 4500,
              "gain_db": 0,
              "quality": 0.707
            },
            "low_shelf": {
              "frequency": 150,
              "gain_db": 0,
              "quality": 0.707
            },
            "max_peaking_eqs": 0,
            "peaking_eqs": []
          },
          "version": 10,
          "wifi": {
            "bssid": "a0:ab:...",
            "has_changes": false,
            "noise_level": -90,
            "signal_level": -50,
            "ssid": "Nucl...",
            "wpa_configured": true,
            "wpa_id": 1,
            "wpa_state": 10
          }
        },
        "properties": {
          "aogh": {
            "$ref": "#/components/schemas/Aogh"
          },
          "audio": {
            "$ref": "#/components/schemas/Audio"
          },
          "build_info": {
            "$ref": "#/components/schemas/BuildInfo"
          },
          "detail": {
            "$ref": "#/components/schemas/Detail"
          },
          "device_info": {
            "$ref": "#/components/schemas/DeviceInfo"
          },
          "multizone": {
            "$ref": "#/components/schemas/Multizone"
          },
          "name": {
            "type": "string"
          },
          "net": {
            "$ref": "#/components/schemas/Net"
          },
          "night_mode_params": {
            "$ref": "#/components/schemas/NightModeParams"
          },
          "opencast": {
            "$ref": "#/components/schemas/Opencast"
          },
          "opt_in": {
            "$ref": "#/components/schemas/OptIn"
          },
          "proxy": {
            "$ref": "#/components/schemas/Proxy"
          },
          "settings": {
            "$ref": "#/components/schemas/Settings"
          },
          "setup": {
            "$ref": "#/components/schemas/Setup"
          },
          "sign": {
            "$ref": "#/components/schemas/Sign"
          },
          "user_eq": {
            "$ref": "#/components/schemas/UserEq"
          },
          "version": {
            "format": "int32",
            "type": "integer"
          },
          "wifi": {
            "$ref": "#/components/schemas/Wifi"
          }
        },
        "required": [
          "aogh",
          "audio",
          "build_info",
          "detail",
          "device_info",
          "multizone",
          "name",
          "net",
          "night_mode_params",
          "opencast",
          "opt_in",
          "proxy",
          "settings",
          "setup",
          "sign",
          "user_eq",
          "version",
          "wifi"
        ],
        "title": "Example1",
        "type": "object"
      },
      "Example11": {
        "example": {
          "app_device_id": "...",
          "certificate": "-----BEGIN CERTIFICATE-----\nMIID...Oeb0\n-----END CERTIFICATE-----\n",
          "signed_data": "HAjp..."
        },
        "properties": {
          "app_device_id": {
            "type": "string"
          },
          "certificate": {
            "type": "string"
          },
          "signed_data": {
            "type": "string"
          }
        },
        "required": [
          "app_device_id",
          "certificate",
          "signed_data"
        ],
        "title": "Example11",
        "type": "object"
      },
      "Example110": {
        "example": {
          "audio_mode": 0,
          "connected_devices": [
            {
              "device": {
                "bond_date": 1529248165656.613,
                "device_class": 2491396,
                "device_type": 1,
                "last_connect_date": 0,
                "mac_address": "xx:xx:xx:xx:xx:xx",
                "name": "PHILIPS BT64",
                "rssi": -255,
                "service_uuids": [
                  "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                  "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                  "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                  "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                  "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
                  "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
                ]
              },
              "enabled_profiles": 2
            }
          ],
          "connecting_devices": [],
          "discovery_enabled": false,
          "remote_sink": {
            "bond_date": 1529248165656.613,
            "device_class": 2491396,
            "device_type": 1,
            "last_connect_date": 0,
            "mac_address": "xx:xx:xx:xx:xx:xx",
            "name": "PHILIPS BT64",
            "rssi": -255,
            "service_uuids": [
              "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
              "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
              "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
              "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
              "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
              "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
            ]
          },
          "scanning_enabled": false
        },
        "properties": {
          "audio_mode": {
            "format": "int32",
            "type": "integer"
          },
          "connected_devices": {
            "items": {
              "$ref": "#/components/schemas/ConnectedDevice"
            },
            "type": "array"
          },
          "connecting_devices": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "discovery_enabled": {
            "type": "boolean"
          },
          "remote_sink": {
            "$ref": "#/components/schemas/RemoteSink"
          },
          "scanning_enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "audio_mode",
          "connecting_devices",
          "connected_devices",
          "remote_sink",
          "discovery_enabled",
          "scanning_enabled"
        ],
        "title": "Example110",
        "type": "object"
      },
      "Example111": {
        "example": {
          "bond_date": 1503212407260.55,
          "device_class": 5898764,
          "device_type": 1,
          "last_connect_date": 1514807829482.111,
          "mac_address": "xx:xx:xx:xx:xx:xx",
          "name": "Device Name",
          "rssi": -255,
          "service_uuids": [
            "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
          ]
        },
        "properties": {
          "bond_date": {
            "type": "number"
          },
          "device_class": {
            "format": "int32",
            "type": "integer"
          },
          "device_type": {
            "format": "int32",
            "type": "integer"
          },
          "last_connect_date": {
            "type": "number"
          },
          "mac_address": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "rssi": {
            "format": "int32",
            "type": "integer"
          },
          "service_uuids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "bond_date",
          "device_class",
          "device_type",
          "last_connect_date",
          "mac_address",
          "name",
          "rssi",
          "service_uuids"
        ],
        "title": "Example111",
        "type": "object"
      },
      "Example112": {
        "example": {
          "device_class": 525372,
          "device_type": 3,
          "expected_profiles": 0,
          "mac_address": "xx:xx:xx:xx:xx:xx",
          "name": "KD-49X8200E",
          "rssi": -90
        },
        "properties": {
          "device_class": {
            "format": "int32",
            "type": "integer"
          },
          "device_type": {
            "format": "int32",
            "type": "integer"
          },
          "expected_profiles": {
            "format": "int32",
            "type": "integer"
          },
          "mac_address": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "rssi": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "device_class",
          "device_type",
          "expected_profiles",
          "mac_address",
          "name",
          "rssi"
        ],
        "title": "Example112",
        "type": "object"
      },
      "Example113": {
        "example": {
          "ssid": "Wifi name",
          "wpa_auth": 7,
          "wpa_cipher": 4,
          "wpa_id": 0
        },
        "properties": {
          "ssid": {
            "type": "string"
          },
          "wpa_auth": {
            "format": "int32",
            "type": "integer"
          },
          "wpa_cipher": {
            "format": "int32",
            "type": "integer"
          },
          "wpa_id": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "ssid",
          "wpa_auth",
          "wpa_cipher",
          "wpa_id"
        ],
        "title": "Example113",
        "type": "object"
      },
      "Example114": {
        "example": {
          "bssid": "APBSSID1",
          "signal_level": -20,
          "ssid": "APSSID1",
          "wpa_auth": 7,
          "wpa_cipher": 4,
          "wpa_id": 0
        },
        "properties": {
          "bssid": {
            "type": "string"
          },
          "signal_level": {
            "format": "int32",
            "type": "integer"
          },
          "ssid": {
            "type": "string"
          },
          "wpa_auth": {
            "format": "int32",
            "type": "integer"
          },
          "wpa_cipher": {
            "format": "int32",
            "type": "integer"
          },
          "wpa_id": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "bssid",
          "signal_level",
          "ssid",
          "wpa_auth",
          "wpa_cipher",
          "wpa_id"
        ],
        "title": "Example114",
        "type": "object"
      },
      "Example12": {
        "example": {
          "token": "ADtq..."
        },
        "properties": {
          "token": {
            "type": "string"
          }
        },
        "required": [
          "token"
        ],
        "title": "Example12",
        "type": "object"
      },
      "Example13": {
        "example": {
          "can_enroll": true,
          "enrollment_state": 0,
          "error_code": 0,
          "ready": false,
          "retryable": true
        },
        "properties": {
          "can_enroll": {
            "type": "boolean"
          },
          "enrollment_state": {
            "format": "int32",
            "type": "integer"
          },
          "error_code": {
            "format": "int32",
            "type": "integer"
          },
          "ready": {
            "type": "boolean"
          },
          "retryable": {
            "type": "boolean"
          }
        },
        "required": [
          "can_enroll",
          "enrollment_state",
          "error_code",
          "ready",
          "retryable"
        ],
        "title": "Example13",
        "type": "object"
      },
      "Example14": {
        "example": {
          "display_string": "Samoa Standard Time (Midway)",
          "offset": -660,
          "timezone": "Pacific/Midway"
        },
        "properties": {
          "display_string": {
            "type": "string"
          },
          "offset": {
            "format": "int32",
            "type": "integer"
          },
          "timezone": {
            "type": "string"
          }
        },
        "required": [
          "display_string",
          "offset",
          "timezone"
        ],
        "title": "Example14",
        "type": "object"
      },
      "Example15": {
        "example": {
          "display_string": "Amharic - አማርኛ",
          "locale": "am"
        },
        "properties": {
          "display_string": {
            "type": "string"
          },
          "locale": {
            "type": "string"
          }
        },
        "required": [
          "display_string",
          "locale"
        ],
        "title": "Example15",
        "type": "object"
      },
      "Example16": {
        "example": {
          "bytes_received": 31457280,
          "response_code": 200,
          "time_for_data_fetch": 4722,
          "time_for_http_response": 316
        },
        "properties": {
          "bytes_received": {
            "format": "int32",
            "type": "integer"
          },
          "response_code": {
            "format": "int32",
            "type": "integer"
          },
          "time_for_data_fetch": {
            "format": "int32",
            "type": "integer"
          },
          "time_for_http_response": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "bytes_received",
          "response_code",
          "time_for_data_fetch",
          "time_for_http_response"
        ],
        "title": "Example16",
        "type": "object"
      },
      "Example17": {
        "example": {
          "do_not_disturb": true,
          "enabled": false,
          "led_brightness": 0.44999998807907104,
          "volume": 0.46000000834465027,
          "windows": [
            {
              "days": [
                0,
                1,
                2,
                3,
                4,
                5,
                6
              ],
              "length_hours": 8,
              "start_hour": 22
            }
          ]
        },
        "properties": {
          "do_not_disturb": {
            "type": "boolean"
          },
          "enabled": {
            "type": "boolean"
          },
          "led_brightness": {
            "type": "number"
          },
          "volume": {
            "type": "number"
          },
          "windows": {
            "items": {
              "$ref": "#/components/schemas/Window2"
            },
            "type": "array"
          }
        },
        "required": [
          "do_not_disturb",
          "enabled",
          "led_brightness",
          "volume",
          "windows"
        ],
        "title": "Example17",
        "type": "object"
      },
      "Example18": {
        "example": {
          "alarm": [
            {
              "date_pattern": {
                "day": 15,
                "month": 1,
                "year": 2018
              },
              "fire_time": 1515995400000,
              "id": "alarm/xxx",
              "status": 1,
              "time_pattern": {
                "hour": 6,
                "minute": 50,
                "second": 0
              }
            }
          ],
          "timer": [
            {
              "fire_time": 1516176765589,
              "id": "timer/xxx",
              "original_duration": 20000,
              "status": 1
            }
          ]
        },
        "properties": {
          "alarm": {
            "items": {
              "$ref": "#/components/schemas/Alarm"
            },
            "type": "array"
          },
          "timer": {
            "items": {
              "$ref": "#/components/schemas/Timer"
            },
            "type": "array"
          }
        },
        "required": [
          "alarm",
          "timer"
        ],
        "title": "Example18",
        "type": "object"
      },
      "Example19": {
        "example": {
          "success": true
        },
        "properties": {
          "success": {
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ],
        "title": "Example19",
        "type": "object"
      },
      "ForgetWi-FiNetworkRequest": {
        "example": {
          "wpa_id": 0
        },
        "properties": {
          "wpa_id": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "wpa_id"
        ],
        "title": "ForgetWi-FiNetworkRequest",
        "type": "object"
      },
      "ForgetpaireddeviceRequest": {
        "example": {
          "bond": false,
          "mac_address": "xx:xx:xx:xx:xx:xx"
        },
        "properties": {
          "bond": {
            "type": "boolean"
          },
          "mac_address": {
            "type": "string"
          }
        },
        "required": [
          "mac_address",
          "bond"
        ],
        "title": "ForgetpaireddeviceRequest",
        "type": "object"
      },
      "Getcurrentstate": {
        "example": {
          "notifications_enabled": true
        },
        "properties": {
          "notifications_enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "notifications_enabled"
        ],
        "title": "Getcurrentstate",
        "type": "object"
      },
      "Getcurrentvalues": {
        "example": {
          "endpoint_enabled": false,
          "hotword_enabled": false
        },
        "properties": {
          "endpoint_enabled": {
            "type": "boolean"
          },
          "hotword_enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "endpoint_enabled",
          "hotword_enabled"
        ],
        "title": "Getcurrentvalues",
        "type": "object"
      },
      "Getvolume": {
        "example": {
          "volume": 1
        },
        "properties": {
          "volume": {
            "type": "number"
          }
        },
        "required": [
          "volume"
        ],
        "title": "Getvolume",
        "type": "object"
      },
      "HighShelf": {
        "example": {
          "frequency": 4500,
          "gain_db": 0,
          "quality": 0.707
        },
        "properties": {
          "frequency": {
            "format": "int32",
            "type": "integer"
          },
          "gain_db": {
            "format": "int32",
            "type": "integer"
          },
          "quality": {
            "type": "number"
          }
        },
        "required": [
          "frequency",
          "gain_db",
          "quality"
        ],
        "title": "HighShelf",
        "type": "object"
      },
      "HighShelf1": {
        "example": {
          "gain_db": 0
        },
        "properties": {
          "gain_db": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "gain_db"
        ],
        "title": "HighShelf1",
        "type": "object"
      },
      "IconList": {
        "example": {
          "depth": 32,
          "height": 55,
          "mimetype": "image/png",
          "url": "/setup/icon.png",
          "width": 98
        },
        "properties": {
          "depth": {
            "format": "int32",
            "type": "integer"
          },
          "height": {
            "format": "int32",
            "type": "integer"
          },
          "mimetype": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "width": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "depth",
          "height",
          "mimetype",
          "url",
          "width"
        ],
        "title": "IconList",
        "type": "object"
      },
      "Locale": {
        "example": {
          "display_string": "English (United States)"
        },
        "properties": {
          "display_string": {
            "type": "string"
          }
        },
        "required": [
          "display_string"
        ],
        "title": "Locale",
        "type": "object"
      },
      "LowShelf": {
        "example": {
          "frequency": 150,
          "gain_db": 0,
          "quality": 0.707
        },
        "properties": {
          "frequency": {
            "format": "int32",
            "type": "integer"
          },
          "gain_db": {
            "format": "int32",
            "type": "integer"
          },
          "quality": {
            "type": "number"
          }
        },
        "required": [
          "frequency",
          "gain_db",
          "quality"
        ],
        "title": "LowShelf",
        "type": "object"
      },
      "LowShelf1": {
        "example": {
          "gain_db": 0
        },
        "properties": {
          "gain_db": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "gain_db"
        ],
        "title": "LowShelf1",
        "type": "object"
      },
      "Multizone": {
        "example": {
          "audio_output_delay": 0,
          "audio_output_delay_hdmi": 0,
          "audio_output_delay_oem": 0,
          "aux_in_group": "",
          "dynamic_groups": [],
          "groups": [],
          "multichannel_status": 0
        },
        "properties": {
          "audio_output_delay": {
            "format": "int32",
            "type": "integer"
          },
          "audio_output_delay_hdmi": {
            "format": "int32",
            "type": "integer"
          },
          "audio_output_delay_oem": {
            "format": "int32",
            "type": "integer"
          },
          "aux_in_group": {
            "type": "string"
          },
          "dynamic_groups": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "groups": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "multichannel_status": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "audio_output_delay",
          "audio_output_delay_hdmi",
          "audio_output_delay_oem",
          "aux_in_group",
          "dynamic_groups",
          "groups",
          "multichannel_status"
        ],
        "title": "Multizone",
        "type": "object"
      },
      "Net": {
        "example": {
          "ethernet_connected": false,
          "ip_address": "192.168.0.18",
          "online": true
        },
        "properties": {
          "ethernet_connected": {
            "type": "boolean"
          },
          "ip_address": {
            "type": "string"
          },
          "online": {
            "type": "boolean"
          }
        },
        "required": [
          "ethernet_connected",
          "ip_address",
          "online"
        ],
        "title": "Net",
        "type": "object"
      },
      "NightModeParams": {
        "example": {
          "device_override_do_not_disturb": 0,
          "do_not_disturb": true,
          "enabled": true,
          "led_brightness": 0.5799999833106995,
          "volume": 0.5899999737739563,
          "windows": [
            {
              "days": [
                0,
                1,
                2,
                3,
                4,
                5,
                6
              ],
              "length_hours": 6,
              "start_hour": 23
            }
          ]
        },
        "properties": {
          "device_override_do_not_disturb": {
            "format": "int32",
            "type": "integer"
          },
          "do_not_disturb": {
            "type": "boolean"
          },
          "enabled": {
            "type": "boolean"
          },
          "led_brightness": {
            "type": "number"
          },
          "volume": {
            "type": "number"
          },
          "windows": {
            "items": {
              "$ref": "#/components/schemas/Window"
            },
            "type": "array"
          }
        },
        "required": [
          "device_override_do_not_disturb",
          "do_not_disturb",
          "enabled",
          "led_brightness",
          "volume",
          "windows"
        ],
        "title": "NightModeParams",
        "type": "object"
      },
      "NightModesettingsRequest": {
        "example": {
          "demo_to_user": true,
          "do_not_disturb": true,
          "enabled": false,
          "led_brightness": 0.44999998807907104,
          "volume": 0.46000000834465027,
          "windows": [
            {
              "days": [
                0,
                1,
                2,
                3,
                4,
                5,
                6
              ],
              "length_hours": 8,
              "start_hour": 22
            }
          ]
        },
        "properties": {
          "demo_to_user": {
            "type": "boolean"
          },
          "do_not_disturb": {
            "type": "boolean"
          },
          "enabled": {
            "type": "boolean"
          },
          "led_brightness": {
            "type": "number"
          },
          "volume": {
            "type": "number"
          },
          "windows": {
            "items": {
              "$ref": "#/components/schemas/Window"
            },
            "type": "array"
          }
        },
        "required": [
          "enabled",
          "do_not_disturb",
          "led_brightness",
          "volume",
          "demo_to_user",
          "windows"
        ],
        "title": "NightModesettingsRequest",
        "type": "object"
      },
      "Opencast": {
        "example": {
          "pin_code": ""
        },
        "properties": {
          "pin_code": {
            "type": "string"
          }
        },
        "required": [
          "pin_code"
        ],
        "title": "Opencast",
        "type": "object"
      },
      "OptIn": {
        "example": {
          "audio_hdr": false,
          "audio_surround_mode": 0,
          "autoplay_on_signal": true,
          "cloud_ipc": true,
          "hdmi_prefer_50hz": false,
          "hdmi_prefer_high_fps": true,
          "managed_mode": false,
          "opencast": true,
          "preview_channel": true,
          "remote_ducking": true,
          "stats": true,
          "ui_flipped": false,
          "wpa3_support_enabled": false
        },
        "properties": {
          "audio_hdr": {
            "type": "boolean"
          },
          "audio_surround_mode": {
            "format": "int32",
            "type": "integer"
          },
          "autoplay_on_signal": {
            "type": "boolean"
          },
          "cloud_ipc": {
            "type": "boolean"
          },
          "hdmi_prefer_50hz": {
            "type": "boolean"
          },
          "hdmi_prefer_high_fps": {
            "type": "boolean"
          },
          "managed_mode": {
            "type": "boolean"
          },
          "opencast": {
            "type": "boolean"
          },
          "preview_channel": {
            "type": "boolean"
          },
          "remote_ducking": {
            "type": "boolean"
          },
          "stats": {
            "type": "boolean"
          },
          "ui_flipped": {
            "type": "boolean"
          },
          "wpa3_support_enabled": {
            "type": "boolean"
          }
        },
        "required": [
          "audio_hdr",
          "audio_surround_mode",
          "autoplay_on_signal",
          "cloud_ipc",
          "hdmi_prefer_50hz",
          "hdmi_prefer_high_fps",
          "managed_mode",
          "opencast",
          "preview_channel",
          "remote_ducking",
          "stats",
          "ui_flipped",
          "wpa3_support_enabled"
        ],
        "title": "OptIn",
        "type": "object"
      },
      "OptIn1": {
        "example": {
          "opencast": true,
          "preview_channel": true,
          "remote_ducking": true,
          "stats": true
        },
        "properties": {
          "opencast": {
            "type": "boolean"
          },
          "preview_channel": {
            "type": "boolean"
          },
          "remote_ducking": {
            "type": "boolean"
          },
          "stats": {
            "type": "boolean"
          }
        },
        "required": [
          "opencast",
          "preview_channel",
          "remote_ducking",
          "stats"
        ],
        "title": "OptIn1",
        "type": "object"
      },
      "PairwithSpeakerRequest": {
        "example": {
          "connect": true,
          "mac_address": "54:13:79:49:19:22",
          "profile": 2
        },
        "properties": {
          "connect": {
            "type": "boolean"
          },
          "mac_address": {
            "type": "string"
          },
          "profile": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "mac_address",
          "connect",
          "profile"
        ],
        "title": "PairwithSpeakerRequest",
        "type": "object"
      },
      "Proxy": {
        "example": {
          "mode": "system"
        },
        "properties": {
          "mode": {
            "type": "string"
          }
        },
        "required": [
          "mode"
        ],
        "title": "Proxy",
        "type": "object"
      },
      "RebootandFactoryResetRequest": {
        "example": {
          "params": "now"
        },
        "properties": {
          "params": {
            "type": "string"
          }
        },
        "required": [
          "params"
        ],
        "title": "RebootandFactoryResetRequest",
        "type": "object"
      },
      "RemoteSink": {
        "example": {
          "bond_date": 1529248165656.613,
          "device_class": 2491396,
          "device_type": 1,
          "last_connect_date": 0,
          "mac_address": "xx:xx:xx:xx:xx:xx",
          "name": "PHILIPS BT64",
          "rssi": -255,
          "service_uuids": [
            "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
          ]
        },
        "properties": {
          "bond_date": {
            "type": "number"
          },
          "device_class": {
            "format": "int32",
            "type": "integer"
          },
          "device_type": {
            "format": "int32",
            "type": "integer"
          },
          "last_connect_date": {
            "format": "int32",
            "type": "integer"
          },
          "mac_address": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "rssi": {
            "format": "int32",
            "type": "integer"
          },
          "service_uuids": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "bond_date",
          "device_class",
          "device_type",
          "last_connect_date",
          "mac_address",
          "name",
          "rssi",
          "service_uuids"
        ],
        "title": "RemoteSink",
        "type": "object"
      },
      "ScanfordevicesRequest": {
        "example": {
          "clear_results": true,
          "enable": true,
          "timeout": 60
        },
        "properties": {
          "clear_results": {
            "type": "boolean"
          },
          "enable": {
            "type": "boolean"
          },
          "timeout": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "enable",
          "clear_results",
          "timeout"
        ],
        "title": "ScanfordevicesRequest",
        "type": "object"
      },
      "SetEqualizerValuesRequest": {
        "example": {
          "high_shelf": {
            "gain_db": 0
          },
          "low_shelf": {
            "gain_db": 0
          }
        },
        "properties": {
          "high_shelf": {
            "$ref": "#/components/schemas/HighShelf1"
          },
          "low_shelf": {
            "$ref": "#/components/schemas/LowShelf1"
          }
        },
        "required": [
          "low_shelf",
          "high_shelf"
        ],
        "title": "SetEqualizerValuesRequest",
        "type": "object"
      },
      "SetEurekaInfoRequest": {
        "example": {
          "name": "Living Room",
          "opt_in": {
            "opencast": true,
            "preview_channel": true,
            "remote_ducking": true,
            "stats": true
          },
          "settings": {
            "control_notifications": 2
          }
        },
        "properties": {
          "name": {
            "type": "string"
          },
          "opt_in": {
            "$ref": "#/components/schemas/OptIn1"
          },
          "settings": {
            "$ref": "#/components/schemas/Settings1"
          }
        },
        "required": [
          "name",
          "settings",
          "opt_in"
        ],
        "title": "SetEurekaInfoRequest",
        "type": "object"
      },
      "Settings": {
        "example": {
          "closed_caption": {},
          "control_notifications": 1,
          "country_code": "IN",
          "locale": "en-US",
          "network_standby": 0,
          "system_sound_effects": true,
          "time_format": 1,
          "timezone": "Asia/Kolkata",
          "wake_on_cast": 1
        },
        "properties": {
          "closed_caption": {
            "type": "object"
          },
          "control_notifications": {
            "format": "int32",
            "type": "integer"
          },
          "country_code": {
            "type": "string"
          },
          "locale": {
            "type": "string"
          },
          "network_standby": {
            "format": "int32",
            "type": "integer"
          },
          "system_sound_effects": {
            "type": "boolean"
          },
          "time_format": {
            "format": "int32",
            "type": "integer"
          },
          "timezone": {
            "type": "string"
          },
          "wake_on_cast": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "closed_caption",
          "control_notifications",
          "country_code",
          "locale",
          "network_standby",
          "system_sound_effects",
          "time_format",
          "timezone",
          "wake_on_cast"
        ],
        "title": "Settings",
        "type": "object"
      },
      "Settings1": {
        "example": {
          "control_notifications": 2
        },
        "properties": {
          "control_notifications": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "control_notifications"
        ],
        "title": "Settings1",
        "type": "object"
      },
      "Setup": {
        "example": {
          "qr_ssid_suffix": "",
          "setup_state": 60,
          "ssid_suffix": "k",
          "stats": {
            "num_check_connectivity": 0,
            "num_connect_wifi": 0,
            "num_connected_wifi_not_saved": 0,
            "num_initial_eureka_info": 0,
            "num_obtain_ip": 0
          },
          "tos_accepted": true
        },
        "properties": {
          "qr_ssid_suffix": {
            "type": "string"
          },
          "setup_state": {
            "format": "int32",
            "type": "integer"
          },
          "ssid_suffix": {
            "type": "string"
          },
          "stats": {
            "$ref": "#/components/schemas/Stats"
          },
          "tos_accepted": {
            "type": "boolean"
          }
        },
        "required": [
          "qr_ssid_suffix",
          "setup_state",
          "ssid_suffix",
          "stats",
          "tos_accepted"
        ],
        "title": "Setup",
        "type": "object"
      },
      "Sign": {
        "example": {
          "certificate": "-----BEGIN CERTIFICATE-----\nMIID...Oeb0\n-----END CERTIFICATE-----\n",
          "intermediate_certs": [
            "-----BEGIN CERTIFICATE-----\nMIID...O/bYS\n-----END CERTIFICATE-----\n"
          ],
          "nonce": "1234512345",
          "signed_data": "Rr5Q..."
        },
        "properties": {
          "certificate": {
            "type": "string"
          },
          "intermediate_certs": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "nonce": {
            "type": "string"
          },
          "signed_data": {
            "type": "string"
          }
        },
        "required": [
          "certificate",
          "intermediate_certs",
          "nonce",
          "signed_data"
        ],
        "title": "Sign",
        "type": "object"
      },
      "Stats": {
        "example": {
          "num_check_connectivity": 0,
          "num_connect_wifi": 0,
          "num_connected_wifi_not_saved": 0,
          "num_initial_eureka_info": 0,
          "num_obtain_ip": 0
        },
        "properties": {
          "num_check_connectivity": {
            "format": "int32",
            "type": "integer"
          },
          "num_connect_wifi": {
            "format": "int32",
            "type": "integer"
          },
          "num_connected_wifi_not_saved": {
            "format": "int32",
            "type": "integer"
          },
          "num_initial_eureka_info": {
            "format": "int32",
            "type": "integer"
          },
          "num_obtain_ip": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "num_check_connectivity",
          "num_connect_wifi",
          "num_connected_wifi_not_saved",
          "num_initial_eureka_info",
          "num_obtain_ip"
        ],
        "title": "Stats",
        "type": "object"
      },
      "TestInternetDownloadSpeedRequest": {
        "example": {
          "url": "https://storage.googleapis.com/reliability-speedtest/random.txt"
        },
        "properties": {
          "url": {
            "type": "string"
          }
        },
        "required": [
          "url"
        ],
        "title": "TestInternetDownloadSpeedRequest",
        "type": "object"
      },
      "TimePattern": {
        "example": {
          "hour": 6,
          "minute": 50,
          "second": 0
        },
        "properties": {
          "hour": {
            "format": "int32",
            "type": "integer"
          },
          "minute": {
            "format": "int32",
            "type": "integer"
          },
          "second": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "hour",
          "minute",
          "second"
        ],
        "title": "TimePattern",
        "type": "object"
      },
      "Timer": {
        "example": {
          "fire_time": 1516176765589,
          "id": "timer/xxx",
          "original_duration": 20000,
          "status": 1
        },
        "properties": {
          "fire_time": {
            "format": "int64",
            "type": "integer"
          },
          "id": {
            "type": "string"
          },
          "original_duration": {
            "format": "int32",
            "type": "integer"
          },
          "status": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "fire_time",
          "id",
          "original_duration",
          "status"
        ],
        "title": "Timer",
        "type": "object"
      },
      "Timezone": {
        "example": {
          "display_string": "India Standard Time (Kolkata)",
          "offset": 330
        },
        "properties": {
          "display_string": {
            "type": "string"
          },
          "offset": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "display_string",
          "offset"
        ],
        "title": "Timezone",
        "type": "object"
      },
      "UserEq": {
        "example": {
          "high_shelf": {
            "frequency": 4500,
            "gain_db": 0,
            "quality": 0.707
          },
          "low_shelf": {
            "frequency": 150,
            "gain_db": 0,
            "quality": 0.707
          },
          "max_peaking_eqs": 0,
          "peaking_eqs": []
        },
        "properties": {
          "high_shelf": {
            "$ref": "#/components/schemas/HighShelf"
          },
          "low_shelf": {
            "$ref": "#/components/schemas/LowShelf"
          },
          "max_peaking_eqs": {
            "format": "int32",
            "type": "integer"
          },
          "peaking_eqs": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "high_shelf",
          "low_shelf",
          "max_peaking_eqs",
          "peaking_eqs"
        ],
        "title": "UserEq",
        "type": "object"
      },
      "Wifi": {
        "example": {
          "bssid": "a0:ab:...",
          "has_changes": false,
          "noise_level": -90,
          "signal_level": -50,
          "ssid": "Nucl...",
          "wpa_configured": true,
          "wpa_id": 1,
          "wpa_state": 10
        },
        "properties": {
          "bssid": {
            "type": "string"
          },
          "has_changes": {
            "type": "boolean"
          },
          "noise_level": {
            "format": "int32",
            "type": "integer"
          },
          "signal_level": {
            "format": "int32",
            "type": "integer"
          },
          "ssid": {
            "type": "string"
          },
          "wpa_configured": {
            "type": "boolean"
          },
          "wpa_id": {
            "format": "int32",
            "type": "integer"
          },
          "wpa_state": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "bssid",
          "has_changes",
          "noise_level",
          "signal_level",
          "ssid",
          "wpa_configured",
          "wpa_id",
          "wpa_state"
        ],
        "title": "Wifi",
        "type": "object"
      },
      "Window": {
        "example": {
          "days": [
            0,
            1,
            2,
            3,
            4,
            5,
            6
          ],
          "length_hours": 6,
          "start_hour": 23
        },
        "properties": {
          "days": {
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "type": "array"
          },
          "length_hours": {
            "format": "int32",
            "type": "integer"
          },
          "start_hour": {
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "days",
          "length_hours",
          "start_hour"
        ],
        "title": "Window",
        "type": "object"
      },
      "Window2": {
        "example": {
          "days": [
            0,
            1,
            2,
            3,
            4,
            5,
            6
          ],
          "length_hours": 8,
          "start_hour": 22
        },
        "properties": {
          "days": {
            "items": {
              "format": "int32",
              "type": "integer"
            },
            "type": "array"
          },
          "length_hours": {
            "type": "number"
          },
          "start_hour": {
            "type": "number"
          }
        },
        "required": [
          "days",
          "length_hours",
          "start_hour"
        ],
        "title": "Window2",
        "type": "object"
      }
    },
    "securitySchemes": {
      "cast-local-authorization-token": {
        "description": "Local authorization token. For more details, check the [Authentication section](#section/Google-Home-Local-API/Authentication).",
        "in": "header",
        "name": "cast-local-authorization-token",
        "type": "apiKey",
        "x-testValue": ""
      }
    }
  }
}