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[object_path],enum[self.OperationType],string,string,enum[self.CollectionTimescope],uint64]]
    description: >
        Array of structures that contains array of sensor paths that are
        monitored by Telemetry service, operation type, metric Id, metadata,
        collection timescope and collection duration. Metric Id and metadata are
        used to store user details, e.g. metadata can be used to map sensor name
        to DBus path.
  - 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: EmitsReadingsUpdate
    type: boolean
    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 true.
    flags:
    - const
  - name: LogToMetricReportsCollection
    type: boolean
    description: >
        Presence of Report in Metric Report Collection in Redfish Telemetry
        Service.
    flags:
    - const
  - 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.

enumerations:
   - name: OperationType
     description: Type of action that is executed on readings.
     values:
       - name: Single
         description: Store the latest reading.
       - name: Max
         description: Store maximal reading during defined time period.
       - name: Min
         description: Store minimal reading during defined time period.
       - name: Avg
         description: Calculate average of readings during defined time period.
       - name: Sum
         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: NewReport
         description: >
           A new report is created, whose name is the current metric report name
           concatenated with the timestamp.
   - 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.
