Home-Assistant API Base URL:
Make sure to include "/api" as the URL path, but no slash at the end.
Long-lived access token:
It's recommended to create a dedicated token for your Bangle.

#### Menu structure

Use the editor below to configure the menu structure displayed in the Bangle app. It is in the JSON format.

The main menu, and any sub-menus, are arrays. They can contain 3 different types of entries (objects) defined by the "type" attribute:

- Query an Entity State

      {
        "type": "state",
        "title": "Menu entry title",
        "id": "HA Entity ID"
      }

  The required Entity ID can be looked up in HA under Settings -> Devices & Services -> Entities. For example:

      {
        "type": "state",
        "title": "Check for updates",
        "id": "update.home_assistant_core_update"
      }

- Call a HA service

      {
        "type": "service",
        "title": "Menu entry title",
        "domain": "HA Domain",
        "service": "HA Service",
        "silent": (true|false),
        "data": {
          "key": "value"
        }
      }

  The required information to call a HA service can be found in HA under the Developer tools -> Services. Use the "Go to YAML Mode" function to see the actual names and values. The domain and service parts are the 2 parts of the service name which are separated by a dot. If the optional "silent" boolean is set to true (false is default), there will be no message in case of a successful call. Any (optional) data key/value pairs can be added under the "data" field. For example, here's a service call YAML:

      service: persistent_notification.create
      data:
        message: test Notification
        title: Test

  The resulting menu entry (JSON object) should be:

      {
        "type": "service",
        "title": "Create Notification",
        "domain": "persistent_notification",
        "service": "create",
        "data": {
          "message": "test Notification",
          "title": "Test"
        }
      }

  If the service requires a target, include the "entity_id"/"device_id"/etc. (listed under "target:") also as "data" key/value pairs. For example, if the YAML also includes:

      target:
        device_id: abcd1234

  ... add another "data" key/value pair: `"device_id": "abcd1234"`. If that doesn't work, list the device (or entity) ID in an array: `"device_id": [ "abcd1234" ]`

  Data fields can also have variable input on the Bangle. In that case, don't add the key/value pair under "data", but create an "input" object with entries per "data" key:

      {
        "key": {
          "options": [],
          "value": "",
          "label": ""
        }
      }

  If "options" is left empty, the preferred text-input (pick your favourite app - I like the dragboard) is called to allow entering a free-form value. Otherwise, list the allowed values in the "options" array. The "value" is the pre-defined/default value. The "label" is optional and can be used to override the label for this key (as displayed on the Bangle). For example:

      {
        "type": "service",
        "title": "Custom Notification",
        "domain": "persistent_notification",
        "service": "create",
        "data": {
          "title": "Fixed"
        },
        "input": {
          "message": {
            "options": [],
            "value": "Pre-filled text"
          },
          "notification_id": {
            "options": [
              "123",
              "456",
              "136"
            ],
            "value": "999",
            "label": "ID"
          }
        }
      }

  In the above example, the "data" will have 3 key/value pairs when the service is called: the "title" is always the same, "message" can be entered via the (free-form) text-input and "notification_id" can be selected from a list of numbers (however, the prompt will be for "ID" and not "notification_id"). If the default value is not listed in "options" (like "999"), it will be added to that list.
- Sub-menu

      {
        "type": "menu",
        "title": "Menu entry / sub-menu title",
        "data": []
      }

  The "data" needs to be another array of menu entries. For example:

      {
        "type": "menu",
        "title": "Sub-menu",
        "data": [
          {
            "type": "state",
            "title": "Check for Supervisor updates",
            "id": "update.home_assistant_supervisor_update"
          },
          {
            "type": "service",
            "title": "Restart HA",
            "domain": "homeassistant",
            "service": "restart",
            "data": {}
          }
        ]
      }

  Sub-menus can contain other sub-menus, so you can have multiple levels of nested menus.