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

properties:
  - name: Discrete
    type: boolean
    description: >
        If true than trigger uses discrete thresholds as threshold conditions.
        Otherwise numeric thresholds is used.
    flags:
    - const
  - name: TriggerActions
    type: array[enum[self.TriggerAction]]
    description: >
        Defines actions which are taken when threshold conditions are met.
    flags:
    - const
  - name: Persistent
    type: boolean
    description: Defines if Trigger is stored in non volatile memory.
  - name: ReportNames
    type: array[string]
    description: >
        Collection of report names that are updated when threshold conditions
        are met. List is ignored if TriggerActions property does not contain
        'UpdateReport' action.
  - name: Sensors
    type: array[struct[object_path, string]]
    description: >
        Array of sensors that is monitored within trigger. First parameter of a
        structure is a sensor path. Second parameter is a metadata that is used
        to store user data about sensor.
  - name: Thresholds
    type: variant[array[struct[enum[self.Type],uint64,enum[self.Direction],double]],array[struct[string,enum[self.Severity],uint64,string]]]
    description: >
        First type in variant is a collection of numeric thresholds that has
        following fields - type, dwell time, direction and threshold value.
        Second type holds by variant is a collection of discrete thresholds that
        contains following fields - user id, severity, dwell time and threshold
        value. Discrete value does not need to be a number. Numeric threshold
        array is limited by Type enumeration, only 4 elements are allowed.
        Discrete threshold array size is not limited. If discrete threshold
        array is empty than every value change is taken into account of
        threshold condition. Dwell time specify for how long condition has to
        persist to trigger an action.

enumerations:
  - name: TriggerAction
    description: >
        Defines a action which is taken once threshold condition is met.
    values:
      - name: LogToLogService
        description: Trigger will log to journal.
      - name: RedfishEvent
        description: Trigger will log Redfish message.
      - name: UpdateReport
        description: > 
            Trigger will update reports. Reports that will be updated are
            specified in ReportNames property.
  - name: Type
    description: >
        Defines a context of a message that is logged when numeric threshold
        condition is met.
    values:
      - name: LowerCritical
      - name: LowerWarning
      - name: UpperWarning
      - name: UpperCritical
  - name: Direction
    description: >
        Defines in which direction threshold value is crossed to fulfill numeric
        threshold condition.
    values:
      - name: Either
        description: >
            Crossing threshold value fulfill numeric threshold condition.
      - name: Decreasing
        description: >
            If threshold value is crossed and previous sensor value was greater
            then threshold value then numeric threshold condition is met.
      - name: Increasing
        description: >
            If threshold value is crossed and previous sensor value was less
            then threshold value then numeric threshold condition is met.
  - name: Severity
    description: >
        Defines a context of a message that is logged when discrete threshold
        condition is met.
    values:
      - name: OK
      - name: Warning
      - name: Critical
