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, variant[string,uint64]]
            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
                values can be either a string or a 64 bit number. 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.Open
          - xyz.openbmc_project.Common.File.Error.Write
          - xyz.openbmc_project.Dump.Create.Error.Disabled
          - xyz.openbmc_project.Dump.Create.Error.QuotaExceeded
          - xyz.openbmc_project.Common.Error.NotAllowed
          - xyz.openbmc_project.Common.Error.InvalidArgument
          - xyz.openbmc_project.Common.Error.Unavailable

enumerations:
    - name: CreateParameters
      description: >
          Additional parameters for creating the dump.
      values:
          - name: "OriginatorId"
            description: >
                Unique Id of the originator of the respective operation. This
                property is defined in xyz.openbmc_project. Common.OriginatedBy
                interface.
          - name: "OriginatorType"
            description: >
                Type of the originator that initiated the respective operation.
                This property is defined in xyz.openbmc_project.
                Common.OriginatedBy interface.
          - name: "DumpType"
            description: >
                Type of the BMC dump to be collected
          - name: "FilePath"
            description: >
                The path to a file to create the dump, for example a systemd
                core-dump.
          - name: "ErrorType"
            description: >
                Specifies the type of the error that triggered the BMC dump
                collection. This is a string identifier for the error type. The
                type of the error dictates the kind of debug data collected
                during the dump process.
          - name: "EventId"
            description: >
                The identifier for an event that triggers the BMC dump. When a
                BMC dump is initiated as a response to a specific system event,
                this parameter can be supplied with the unique ID associated
                with that event. By linking the dump to an event ID, the system
                can collate additional, relevant diagnostic data or add this
                into the dump to aid in providing a clearer context.

    - name: DumpType
      description: >
          Possible types of BMC Dump.
      values:
          - name: "ApplicationCored"
            description: >
                Dump triggered due to application core.
          - name: "UserRequested"
            description: >
                Dump triggered by the user.
          - name: "ErrorLog"
            description: >
                This type of dump is triggered in response to a specific error
                commit. The error type needs to be specified in the "ErrorType"
                field. If no parameters are provided, a default dump will be
                generated.
          - name: "Ramoops"
            description: >
                Dump triggered due to Ramoops type error commit.
