                                   "Maximum"}))
 
 (s/def ::threshold (spec-or-ref double?))
+
+(s/def ::threshold-metric-id (spec-or-ref string?))
 
 (s/def ::treat-missing-data (spec-or-ref #{"breaching"
                                            "notBreaching"

                             "None"}))

(s/def ::alarm (s/keys :req [::comparison-operator
                             ::evaluation-periods
                             ::metric-name
                             ::namespace
                             ::period
                             ::threshold]
                       :opt [::actions-enabled
                             ::alarm-actions
                             ::alarm-description
                             ::alarm-name

(s/def ::comparison-operator (spec-or-ref #{"GreaterThanOrEqualToThreshold"
                                            "GreaterThanThreshold"
                                            "LessThanThreshold"
                                            "LessThanOrEqualToThreshold"
                                            "LessThanLowerThreshold"
                                            "LessThanLowerOrGreaterThanUpperThreshold"}))

(s/def ::value (spec-or-ref string?))

(s/def ::name (spec-or-ref string?))

(s/def ::datapoints-to-alarm (spec-or-ref int?))

(s/def ::dimension (s/keys :req [::name ::value]))

(s/def ::dimensions (s/coll-of ::dimension :kind vector?))

(s/def ::evaluate-low-sample-count-percentile (spec-or-ref string?))

(s/def ::evaluation-periods (spec-or-ref pos-int?))

