description: >
    Implement to capture various types of dumps from the
    host or BMC. This interface is for user to request a particular
    type of dump.

    Any OpenBMC implementation should provide one implementation
    of xyz.openbmc_project.Dump.Create per dump type on
    /xyz/openbmc_project/dump/<dump type>. On multi-host or on multi-BMC
    systems the instance number can be added to the path to differentiate,
    for example /xyz/openbmc_project/dump/<dump type><instance-id>.


methods:
    - name: CreateDump
      description: >
          Method to create a manual Dump.
      parameters:
        - name: AdditionalData
          type: dict[string, string]
          description: >
            The additional data, if any, for initiating the dump.
            The key in this case should be an implementation
            specific enum defined for the specific type of dump
            either in xyz or in a domain.
            The enum-format string is required to come from a
            parallel class with this specific Enum name.
            All of the Enum strings should be in the format
            'domain.Dump.Create.CreateParameters.ParamName'.
            e.g.:
              {
                "key1": "value1",
                "key2": "value2"
              }
            ends up in AdditionaData like:
              ["KEY1=value1", "KEY2=value2"]
      returns:
        - name: Path
          type: object_path
          description: >
            The object path of the object that implements
            xyz.openbmc_project.Common.Progress to track the progress
            of the dump
      errors:
        - xyz.openbmc_project.Common.File.Error.Write
        - xyz.openbmc_project.Dump.Create.Error.Disabled
        - xyz.openbmc_project.Dump.Create.Error.QuotaExceeded
