description: >
    Provides D-Bus access to OpenPower Platform Event Logs
methods:
    - name: GetPEL
      description: >
          Returns a file desciptor to a PEL.
      parameters:
          - name: pelID
            type: uint32
            description: >
                The PEL log ID of the PEL to retrieve.
      returns:
          - name: data
            type: unixfd
            description: >
                A file descriptor for a file that contains the PEL.
      errors:
          - xyz.openbmc_project.Common.Error.InternalFailure
          - xyz.openbmc_project.Common.Error.InvalidArgument

    - name: GetPELFromOBMCID
      description: >
          Returns PEL data based on the OpenBMC event log ID.
      parameters:
          - name: obmcLogID
            type: uint32
            description: >
                The OpenBMC event log ID of the PEL to retrieve.
      returns:
          - name: data
            type: array[byte]
            description: >
                The PEL data
      errors:
          - xyz.openbmc_project.Common.Error.InvalidArgument

    - name: HostAck
      description: >
          Notifies the PEL handler that the host (usually the OS) acked a PEL.
      parameters:
          - name: pelID
            type: uint32
            description: >
                The PEL log ID
      errors:
          - xyz.openbmc_project.Common.Error.InvalidArgument

    - name: HostReject
      description: >
          Notifies the PEL handler that the host could not process a PEL.
      parameters:
          - name: pelID
            type: uint32
            description: >
                The PEL log ID
          - name: reason
            type: enum[self.RejectionReason]
            description: >
                The reason the PEL was rejected
      errors:
          - xyz.openbmc_project.Common.Error.InvalidArgument

    - name: CreatePELWithFFDCFiles
      description: >
          Creates an OpenBMC event log and a corresponding PEL. This method
          returns the IDs of the created PEL and OpenBMC event log, unlike the
          'xyz.openbmc_project.Logging.Create.CreateWithFFDCFiles' method which
          doesn't return anything.
      parameters:
          - name: Message
            type: string
            description: >
                The Message property of the OpenBMC event log entry. This is
                also the key into the PEL message registry.
          - name: Severity
            type: enum[xyz.openbmc_project.Logging.Entry.Level]
            description: >
                The Severity property of the event entry.
          - name: AdditionalData
            type: dict[string, string]
            description: >
                The AdditionalData property of the event entry. e.g.:
                  {
                    "key1": "value1",
                    "key2": "value2"
                  }
                ends up in AdditionaData like:
                  ["KEY1=value1", "KEY2=value2"]
          - name: FFDC
            type:
                array[struct[enum[xyz.openbmc_project.Logging.Create.FFDCFormat],
                byte, byte, unixfd]]
            description: >
                File descriptors for any files containing FFDC, along with
                metadata about the contents:

                  FFDCFormat- The format type of the contained data.
                  subType - The format subtype, used for the 'Custom' type.
                  version - The version of the data format, used for the
                'Custom'
                            type.
                  unixfd - The file descriptor to the data file.

                e.g.: [
                  {"xyz.openbmc_project.Logging.Create.FFDCFormat.JSON", 0, 0,
                5},
                  {"xyz.openbmc_project.Logging.Create.FFDCFormat.Custom", 1, 2,
                6} ]
      returns:
          - name: IDs
            type: struct[uint32, uint32]
            description: >
                The IDs of the 2 created logs:
                  - OpenBMC event log ID
                  - PEL log ID: The unique ID of the PEL
                Note that the PEL's platform log ID (PLID) field is always equal
                to the PEL log ID for BMC created PELs.

    - name: GetPELIdFromBMCLogId
      description: >
          Returns the PEL Id (aka Entry ID (EID)) based on the given BMC event
          log id.
      parameters:
          - name: bmcLogId
            type: uint32
            description: >
                The BMC event log id of the PEL to retrieve the PEL id.
      returns:
          - name: pelId
            type: uint32
            description: >
                The Id of the PEL.
      errors:
          - xyz.openbmc_project.Common.Error.InvalidArgument

    - name: GetBMCLogIdFromPELId
      description: >
          Returns the BMC event log id based on the given PEL id (aka Entry ID
          (EID)).
      parameters:
          - name: pelId
            type: uint32
            description: >
                The PEL id to retrieve the BMC event log id.
      returns:
          - name: bmcLogId
            type: uint32
            description: >
                The BMC event log id of the PEL.
      errors:
          - xyz.openbmc_project.Common.Error.InvalidArgument

    - name: GetPELJSON
      description: >
          Returns a string containing the JSON representation of the PEL.
      parameters:
          - name: bmcLogId
            type: uint32
            description: >
                The BMC event log id of the PEL to retrieve JSON for
      returns:
          - name: json
            type: string
            description: >
                The PEL in JSON format
      errors:
          - xyz.openbmc_project.Common.Error.InvalidArgument
          - xyz.openbmc_project.Common.Error.InternalFailure

enumerations:
    - name: RejectionReason
      description: >
          The reason the PEL was rejected
      values:
          - name: BadPEL
            description: >
                The PEL was malformed.
          - name: HostFull
            description: >
                The host does not have room for more PELs at this time.
