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.

service_names:
    - default: xyz.openbmc_project.Dump.Manager

paths:
    - namespace: /xyz/openbmc_project/dump
      segments:
          - name: BMC
            value: bmc
