select_program:
  name: Select program
  description: Select a program and optionally set the program options
  fields:
    device_id:
      description: The ID of the appliance to start the program on
      name: device_id
      required: true
      selector:
        device:
          integration: home_connect_alt
    program_key:
      name: Program
      description: >
        The full key of a valid program for the selected appliance
        For example: ConsumerProducts.CoffeeMaker.Program.Beverage.Espresso
        Documentation: https://api-docs.home-connect.com/programs-and-options
      example: ConsumerProducts.CoffeeMaker.Program.Beverage.Espresso
      required: true
      selector:
        text:
    validate:
      name: Validate
      description: >
        (Optional) Validate that the specified program_key is currently available to be called.
        When this is set to false "startonly" programs will not be supported
      required: false
      default: true
      advanced: true
      selector:
        boolean:
    options:
      name: Options
      description: >
        (Optional) A list of dictionaries with options for the program:
        [
          { "key": "... option key ...", "value": "... option value ... "}
        ]
      example: >
        [
          { "key": "ConsumerProducts.CoffeeMaker.Option.BeanAmount", "value": "ConsumerProducts.CoffeeMaker.EnumType.BeanAmount.DoubleShot" },
          { "key": "ConsumerProducts.CoffeeMaker.Option.FillQuantity", "value": 50 },
        ]
      required: false
      selector:
        object:

start_program:
  name: Start program
  description: Start the currently selected program
  fields:
    device_id:
      description: The ID of the appliance to start the program on
      name: device_id
      required: true
      selector:
        device:
          integration: home_connect_alt
    program_key:
      name: Program
      description: >
        The full key of a valid program for the selected appliance, if not specified
        will use the currently selected program
        For example: ConsumerProducts.CoffeeMaker.Program.Beverage.Espresso
        Documentation: https://api-docs.home-connect.com/programs-and-options
      example: ConsumerProducts.CoffeeMaker.Program.Beverage.Espresso
      required: true
      selector:
        text:
    validate:
      name: Validate
      description: >
        (Optional) Validate that the specified program_key is currently available to be called.
      required: false
      default: true
      advanced: true
      selector:
        boolean:
    options:
      name: Options
      description: >
        (Optional) A list of dictionaries with options for the program:
        [
          { "key": "... option key ...", "value": "... option value ... "}
        ]
      example: >
        [
          { "key": "ConsumerProducts.CoffeeMaker.Option.BeanAmount", "value": "ConsumerProducts.CoffeeMaker.EnumType.BeanAmount.DoubleShot" },
          { "key": "ConsumerProducts.CoffeeMaker.Option.FillQuantity", "value": 50 },
        ]
      required: false
      selector:
        object:

stop_program:
  name: Stop program
  description: Stop the currently active program
  fields:
    device_id:
      description: The ID of the appliance to stop the program on
      name: device_id
      required: true
      selector:
        device:
          integration: home_connect_alt

pause_program:
  name: Pause program
  description: Pause the currently active program (if and when supported by the appliance)
  fields:
    device_id:
      description: The ID of the appliance to pause the program on
      name: device_id
      required: true
      selector:
        device:
          integration: home_connect_alt

resume_program:
  name: Resume program
  description: Resumes a paused program (if and when supported by the appliance)
  fields:
    device_id:
      description: The ID of the appliance to resume the program on
      name: device_id
      required: true
      selector:
        device:
          integration: home_connect_alt

set_program_option:
  name: Set program option
  description: Sets an option for the currently selected or active program
  fields:
    device_id:
      description: The ID of the appliance to start the program on
      name: device_id
      required: true
      selector:
        device:
          integration: home_connect_alt
    key:
      name: Option key
      description: >
        The ENUM key of an option which is available for the current program
      example: ConsumerProducts.CoffeeMaker.Program.Beverage.Espresso
      required: true
      selector:
        text:
    value:
      name: Option value
      description: >
        An allowed value for the specified option
      example: ConsumerProducts.CoffeeMaker.Program.Beverage.Espresso
      required: true
      selector:
        text:

apply_setting:
  name: Apply setting
  description: Applies a Home Connect setting
  fields:
    device_id:
      description: The ID of the appliance to apply the settings on
      name: device_id
      required: true
      selector:
        device:
          integration: home_connect_alt
    key:
      name: Setting key
      description: >
        The ENUM key of a setting which is available for the specified appliance
      example: ConsumerProducts.CoffeeMaker.Setting.CupWarmer
      required: true
      selector:
        text:
    value:
      name: Setting value
      description: >
        An allowed value for the specified setting.
        Note that if the setting type is not a string or ENUM (eg. Boolean), it must be specified in YAML in the correct format for its data type
      example: true
      required: true
      selector:
        text:

run_command:
  name: Run command
  description: Runs a command on the appliance (must be available to run on the appliance)
  fields:
    device_id:
      description: The ID of the appliance to run the command on
      name: device_id
      required: true
      selector:
        device:
          integration: home_connect_alt
    key:
      name: Command key
      description: >
        The key of the command to run
      example: BSH.Common.Command.OpenDoor
      required: true
      selector:
        text:
    value:
      name: The command value
      description: >
        An allowed value for the specified command.
        Note that if the setting type is not a string or ENUM (eg. Boolean), it must be specified in YAML in the correct format for its data type
      example: true
      required: true
      selector:
        text:
