 (s/def ::insufficient-data-actions ::actions)
 
 (s/def ::metric-name (spec-or-ref string?))
+
+(s/def ::expression (spec-or-ref string?))
+
+(s/def ::id (spec-or-ref string?))
+
+(s/def ::label (spec-or-ref string?))
+
+(s/def ::metric (s/keys :opt [::dimensions
+                              ::metric-name
+                              ::namespace]))
+
+(s/def ::metric-stat (s/keys :req [::metric
+                                   ::period
+                                   ::stat]
+                             :opt [::unit]))
+
+(s/def ::return-data (spec-or-ref boolean?))
+
+(s/def ::metric-data-query (s/keys :req [::id]
+                                   :opt [::expression
+                                         ::label
+                                         ::metric-stat
+                                         ::return-data]))
+
+(s/def ::metrics (s/coll-of ::metric-data-query))
 
 (s/def ::namespace (spec-or-ref string?))
 

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

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

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

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

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

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


                                  "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"
