description: >
    Implement to provide reports management. Contain information about report
    limitations and allows to add report.

methods:
    - name: AddReport
      description: >
          Create new object that represents Report with
          xyz.openbmc_project.Telemetry.Report interface stored in path
          /xyz/openbmc_project/Telemetry/Reports/{properties[Id]} where
          properties[Id] is passed into this method as a parameter.
      parameters:
          - name: properties
            type: array[dict[string,variant[boolean,uint32,uint64,string,enum[xyz.openbmc_project.Telemetry.Report.ReportingType],enum[xyz.openbmc_project.Telemetry.Report.ReportUpdates],array[enum[xyz.openbmc_project.Telemetry.Report.ReportActions]],array[struct[array[struct[object_path,string]],enum[xyz.openbmc_project.Telemetry.Report.OperationType],string,enum[xyz.openbmc_project.Telemetry.Report.CollectionTimescope],uint64]]]]]
            description: >
                Map of properties defining added report object. Key is the
                string identifier of property. Value is a variant, whose
                underlying type is dependent from the key. Possible key values
                are: Id, Name, ReportingType, ReportActions, Interval,
                AppendLimit, ReportUpdates, MetricParams, Enabled. All keys are
                optional, therefore it is acceptable to pass an empty map here.

                Id (string) - unique identifier of created Report object to be
                exposed over D-Bus. Acceptable formats are: "{Id}",
                "{Prefix}/{SubId}", "{Prefix}/". If the last variant is used,
                service will generate unique SubId value by itself.

                Name (string) - user friendly name of created Report object.

                ReportingType (enum[
                xyz.openbmc_project.Telemetry.Report.ReportingType]) - indicates
                when readings should be updated. Possible values are listed in
                Report interface documentation.

                ReportActions (array[enum[
                xyz.openbmc_project.Telemetry.Report.ReportActions]]) - possible
                additional actions to trigger after readings' update, as
                specified in Report interface documentation.

                Interval (uint64) - period of time in milliseconds when Report
                is updated with new readings. Minimal interval is defined in
                MinInterval property.

                AppendLimit (size) - maximum number of entries in 'Readings'
                property.

                ReportUpdates (enum[
                xyz.openbmc_project.Telemetry.Report.ReportUpdates]) - indicates
                how readings should be updated. Possible values are listed in
                Report interface documentation.

                MetricParams (array[struct[array[struct[object_path,string]],
                enum[xyz.openbmc_project.Telemetry.Report.OperationType],string,
                enum[xyz.openbmc_project.Telemetry.Report.CollectionTimescope],
                uint64]]) - array of metric parameters, which are stored in a
                way specified in description of ReadingParameters property from
                Report interface documentation.

                Enabled (boolean) - indicates if readings in report will be
                updated.
      returns:
          - name: reportPath
            type: object_path
            description: >
                Path to new report ->
                  /xyz/openbmc_project/Telemetry/Reports/{parameters[Id]}.

properties:
    - name: MaxReports
      type: size
      description: >
          Contains the max number of metric reports supported by the Telemetry.
          This property is added to be compliant with the Redfish Telemetry
          Service schema, that contains MaxReports property.
      flags:
          - const
    - name: MinInterval
      type: uint64
      description: >
          Minimal allowed time between readings property updates. It limits
          Interval property in xyz.openbmc_project.Telemetry.Report and interval
          parameter in AddReport method.
      flags:
          - const
    - name: SupportedOperationTypes
      type: array[enum[xyz.openbmc_project.Telemetry.Report.OperationType]]
      description: >
          Contains subset of operation types currently supported by this
          service.
      flags:
          - const
