description: >
    Implement this interface to provide report inspection features. An
    implementation service should additionally implement
    xyz.openbmc_project.Object.Delete for deletion of individual report objects.

methods:
    - name: Update
      description: >
          The Update method is defined for the on demand metric report update.
          It triggers update of the Readings property. If ReportingType is not
          set to OnRequest then method does nothing.

properties:
    - name: Persistency
      type: boolean
      description: >
          Defines if the report configuration is stored in non volatile memory.
          Configuration contains all Report properties excluding Readings.
    - name: ReadingParameters
      type: array[struct[array[struct[object_path,string]],enum[self.OperationType],string,enum[self.CollectionTimescope],uint64]]
      description: >
          Collection of metric parameters. Single entry consists of:
          array of [sensor path, metadata] tuples, operation type, metric ID,
          collection timescope and collection duration. Sensor paths point to
          sensors providing readings. Metadata contains client information; in
          case of Redfish it shall be metric's URI. Operation type provides
          knowledge of action executed on readings. Metric ID contains name that
          can be mapped to metadata (like Redfish Metric ID). Collection
          timescope specifies type of time scope applied to specific metric.
          Collection duration stores timestamp related with timescope type in
          milliseconds.
    - name: Readings
      type: struct[uint64,array[struct[string,string,double,uint64]]]
      description: >
          Structure that contains timestamp of readings update in milliseconds
          and array of metric Id, metadata, reading value and timestamp of
          single reading update in milliseconds. Metric Id and metadata are
          equal to its counterparts in ReadingParameters property.
      flags:
          - readonly
    - name: ReportingType
      type: enum[self.ReportingType]
      description: Defines how readings are updated.
    - name: ReportUpdates
      type: enum[self.ReportUpdates]
      description: Defines how Readings array is filled.
    - name: AppendLimit
      type: size
      description: Defines the maximum number of entries in 'Readings' property.
      flags:
          - readonly
    - name: Interval
      type: uint64
      description: >
          Defines period of time in milliseconds when readings are updated.
    - name: Enabled
      type: boolean
      description: >
          Indicates if readings in report will be updated. This may be set to
          false by the service if ReportUpdates property is
          'AppendStopsWhenFull' and readings limit specified by AppendLimit is
          reached.
    - name: ErrorMesages
      type: array[struct[enum[self.ErrorType],string]]
      description: >
          Stores errors related with incorrect or conflicting property values.
          Error messages are stored in pairs containing error type and affected
          property.
      flags:
          - readonly
    - name: Name
      type: string
      description: >
          Defines the name of reading report to be exposed over D-Bus.
      flags:
          - const
    - name: ReportActions
      type: array[enum[self.ReportActions]]
      description: >
          Contains set of flags indicating additional actions that can be
          triggered after readings' update.
    - name: Triggers
      type: array[object_path]
      description: >
          Array of paths to Trigger objects associated with this report.
      flags:
          - readonly

enumerations:
    - name: OperationType
      description: Type of action that is executed on readings.
      values:
          - name: Maximum
            description: >
                Store maximal reading during defined time period.
          - name: Minimum
            description: >
                Store minimal reading during defined time period.
          - name: Average
            description: >
                Calculate average of readings during defined time period.
          - name: Summation
            description: >
                Calculate sum of readings over defined time period.
    - name: ReportingType
      description: >
          The type that defines when Readings are updated.
      values:
          - name: OnChange
            description: >
                On sensor reading change.
          - name: OnRequest
            description: >
                On Update method call.
          - name: Periodic
            description: >
                After period of time defined by Interval property.
    - name: ReportUpdates
      description: >
          The type that defines how Readings are updated.
      values:
          - name: Overwrite
            description: >
                Last sensor reading is written to Readings overwriting the
                previous value. AppendLimit set by user is ignored. Readings
                size is equal to count of all sensors across all metrics.
          - name: AppendWrapsWhenFull
            description: >
                Append sensor reading to Readings up to limit specify in
                AppendLimit then start from the beginning.
          - name: AppendStopsWhenFull
            description: >
                Append sensor reading to Readings up to limit specify in
                AppendLimit then stop till report update.
    - name: CollectionTimescope
      description: >
          The time scope of the related metric values.
      values:
          - name: Point
            description: >
                The corresponding metric apply to a point in time. The reading
                timestamp in Readings property specifies point in time.
          - name: Interval
            description: >
                The corresponding metric apply to a time interval. The reading
                timestamp in Readings property specifies the end of the time
                interval and the collection duration of ReadingParameters
                specify its duration.
          - name: StartupInterval
            description: >
                The corresponding metric apply to a time interval that began on
                report creation. The reading timestamp in Readings property
                specifies the end of the time interval. Collection duration of
                ReadingParameters specifies the duration between the startup of
                resource and timestamp.
    - name: ErrorType
      description: >
          Enumerates error types that might occur during properties'
          configuration.
      values:
          - name: PropertyConflict
            description: >
                Appears in situation when two properties, which are dependent
                from each other, have conflicting values. For example, when
                ReportingType property has value "Periodic", but Interval is set
                to 0, such conflict will occur.
    - name: ReportActions
      description: >
          Enumerates types of actions, that can be triggered when Readings
          property value is updated.
      values:
          - name: EmitsReadingsUpdate
            description: >
                On Readings update PropertiesChanged signal is emitted. It
                allows to decrease generation of load on DBus when Readings
                property is updated. Redfish Event Service requires this option
                to be equal to enabled.
          - name: LogToMetricReportsCollection
            description: >
                On Readings update report is stored to Metric Report Collection
                in Redfish Telemetry Service.
