{
 "additionalProperties": false,
 "createOnlyProperties": [
  "/properties/AutoScalingGroupName"
 ],
 "definitions": {
  "CustomizedMetricSpecification": {
   "additionalProperties": false,
   "properties": {
    "Dimensions": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/MetricDimension"
     },
     "type": "array",
     "uniqueItems": true
    },
    "MetricName": {
     "type": "string"
    },
    "Metrics": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/TargetTrackingMetricDataQuery"
     },
     "type": "array",
     "uniqueItems": true
    },
    "Namespace": {
     "type": "string"
    },
    "Period": {
     "minimum": 1,
     "type": "integer"
    },
    "Statistic": {
     "enum": [
      "Average",
      "Maximum",
      "Minimum",
      "SampleCount",
      "Sum"
     ],
     "type": "string"
    },
    "Unit": {
     "type": "string"
    }
   },
   "required": [],
   "type": "object"
  },
  "Metric": {
   "additionalProperties": false,
   "properties": {
    "Dimensions": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/MetricDimension"
     },
     "type": "array",
     "uniqueItems": true
    },
    "MetricName": {
     "type": "string"
    },
    "Namespace": {
     "type": "string"
    }
   },
   "required": [
    "MetricName",
    "Namespace"
   ],
   "type": "object"
  },
  "MetricDataQuery": {
   "additionalProperties": false,
   "properties": {
    "Expression": {
     "maxLength": 1023,
     "minLength": 1,
     "type": "string"
    },
    "Id": {
     "maxLength": 255,
     "minLength": 1,
     "type": "string"
    },
    "Label": {
     "maxLength": 2047,
     "minLength": 0,
     "type": "string"
    },
    "MetricStat": {
     "$ref": "#/definitions/MetricStat"
    },
    "ReturnData": {
     "type": "boolean"
    }
   },
   "required": [
    "Id"
   ],
   "type": "object"
  },
  "MetricDimension": {
   "additionalProperties": false,
   "properties": {
    "Name": {
     "type": "string"
    },
    "Value": {
     "type": "string"
    }
   },
   "required": [
    "Value",
    "Name"
   ],
   "type": "object"
  },
  "MetricStat": {
   "additionalProperties": false,
   "properties": {
    "Metric": {
     "$ref": "#/definitions/Metric"
    },
    "Stat": {
     "maxLength": 100,
     "minLength": 1,
     "type": "string"
    },
    "Unit": {
     "type": "string"
    }
   },
   "required": [
    "Stat",
    "Metric"
   ],
   "type": "object"
  },
  "PredefinedMetricSpecification": {
   "additionalProperties": false,
   "properties": {
    "PredefinedMetricType": {
     "enum": [
      "ALBRequestCountPerTarget",
      "ASGAverageCPUUtilization",
      "ASGAverageNetworkIn",
      "ASGAverageNetworkOut"
     ],
     "type": "string"
    },
    "ResourceLabel": {
     "maxLength": 1023,
     "minLength": 1,
     "type": "string"
    }
   },
   "required": [
    "PredefinedMetricType"
   ],
   "type": "object"
  },
  "PredictiveScalingConfiguration": {
   "additionalProperties": false,
   "properties": {
    "MaxCapacityBreachBehavior": {
     "enum": [
      "HonorMaxCapacity",
      "IncreaseMaxCapacity"
     ],
     "type": "string"
    },
    "MaxCapacityBuffer": {
     "maximum": 100,
     "minimum": 0,
     "type": "integer"
    },
    "MetricSpecifications": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/PredictiveScalingMetricSpecification"
     },
     "type": "array",
     "uniqueItems": true
    },
    "Mode": {
     "enum": [
      "ForecastAndScale",
      "ForecastOnly"
     ],
     "type": "string"
    },
    "SchedulingBufferTime": {
     "minimum": 0,
     "type": "integer"
    }
   },
   "required": [
    "MetricSpecifications"
   ],
   "type": "object"
  },
  "PredictiveScalingCustomizedCapacityMetric": {
   "additionalProperties": false,
   "properties": {
    "MetricDataQueries": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/MetricDataQuery"
     },
     "type": "array",
     "uniqueItems": true
    }
   },
   "required": [
    "MetricDataQueries"
   ],
   "type": "object"
  },
  "PredictiveScalingCustomizedLoadMetric": {
   "additionalProperties": false,
   "properties": {
    "MetricDataQueries": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/MetricDataQuery"
     },
     "type": "array",
     "uniqueItems": true
    }
   },
   "required": [
    "MetricDataQueries"
   ],
   "type": "object"
  },
  "PredictiveScalingCustomizedScalingMetric": {
   "additionalProperties": false,
   "properties": {
    "MetricDataQueries": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/MetricDataQuery"
     },
     "type": "array",
     "uniqueItems": true
    }
   },
   "required": [
    "MetricDataQueries"
   ],
   "type": "object"
  },
  "PredictiveScalingMetricSpecification": {
   "additionalProperties": false,
   "properties": {
    "CustomizedCapacityMetricSpecification": {
     "$ref": "#/definitions/PredictiveScalingCustomizedCapacityMetric"
    },
    "CustomizedLoadMetricSpecification": {
     "$ref": "#/definitions/PredictiveScalingCustomizedLoadMetric"
    },
    "CustomizedScalingMetricSpecification": {
     "$ref": "#/definitions/PredictiveScalingCustomizedScalingMetric"
    },
    "PredefinedLoadMetricSpecification": {
     "$ref": "#/definitions/PredictiveScalingPredefinedLoadMetric"
    },
    "PredefinedMetricPairSpecification": {
     "$ref": "#/definitions/PredictiveScalingPredefinedMetricPair"
    },
    "PredefinedScalingMetricSpecification": {
     "$ref": "#/definitions/PredictiveScalingPredefinedScalingMetric"
    },
    "TargetValue": {
     "type": "number"
    }
   },
   "required": [
    "TargetValue"
   ],
   "type": "object"
  },
  "PredictiveScalingPredefinedLoadMetric": {
   "additionalProperties": false,
   "properties": {
    "PredefinedMetricType": {
     "enum": [
      "ALBTargetGroupRequestCount",
      "ASGTotalCPUUtilization",
      "ASGTotalNetworkIn",
      "ASGTotalNetworkOut"
     ],
     "type": "string"
    },
    "ResourceLabel": {
     "maxLength": 1023,
     "minLength": 1,
     "type": "string"
    }
   },
   "required": [
    "PredefinedMetricType"
   ],
   "type": "object"
  },
  "PredictiveScalingPredefinedMetricPair": {
   "additionalProperties": false,
   "properties": {
    "PredefinedMetricType": {
     "enum": [
      "ALBRequestCount",
      "ASGCPUUtilization",
      "ASGNetworkIn",
      "ASGNetworkOut"
     ],
     "type": "string"
    },
    "ResourceLabel": {
     "maxLength": 1023,
     "minLength": 1,
     "type": "string"
    }
   },
   "required": [
    "PredefinedMetricType"
   ],
   "type": "object"
  },
  "PredictiveScalingPredefinedScalingMetric": {
   "additionalProperties": false,
   "properties": {
    "PredefinedMetricType": {
     "enum": [
      "ALBRequestCountPerTarget",
      "ASGAverageCPUUtilization",
      "ASGAverageNetworkIn",
      "ASGAverageNetworkOut"
     ],
     "type": "string"
    },
    "ResourceLabel": {
     "maxLength": 1023,
     "minLength": 1,
     "type": "string"
    }
   },
   "required": [
    "PredefinedMetricType"
   ],
   "type": "object"
  },
  "StepAdjustment": {
   "additionalProperties": false,
   "insertionOrder": false,
   "properties": {
    "MetricIntervalLowerBound": {
     "type": "number"
    },
    "MetricIntervalUpperBound": {
     "type": "number"
    },
    "ScalingAdjustment": {
     "type": "integer"
    }
   },
   "required": [
    "ScalingAdjustment"
   ],
   "type": "object"
  },
  "TargetTrackingConfiguration": {
   "additionalProperties": false,
   "properties": {
    "CustomizedMetricSpecification": {
     "$ref": "#/definitions/CustomizedMetricSpecification"
    },
    "DisableScaleIn": {
     "type": "boolean"
    },
    "PredefinedMetricSpecification": {
     "$ref": "#/definitions/PredefinedMetricSpecification"
    },
    "TargetValue": {
     "type": "number"
    }
   },
   "required": [
    "TargetValue"
   ],
   "type": "object"
  },
  "TargetTrackingMetricDataQuery": {
   "additionalProperties": false,
   "properties": {
    "Expression": {
     "maxLength": 2047,
     "minLength": 1,
     "type": "string"
    },
    "Id": {
     "maxLength": 64,
     "minLength": 1,
     "type": "string"
    },
    "Label": {
     "maxLength": 2047,
     "minLength": 0,
     "type": "string"
    },
    "MetricStat": {
     "$ref": "#/definitions/TargetTrackingMetricStat"
    },
    "Period": {
     "minimum": 1,
     "type": "integer"
    },
    "ReturnData": {
     "type": "boolean"
    }
   },
   "required": [
    "Id"
   ],
   "type": "object"
  },
  "TargetTrackingMetricStat": {
   "additionalProperties": false,
   "properties": {
    "Metric": {
     "$ref": "#/definitions/Metric"
    },
    "Period": {
     "minimum": 1,
     "type": "integer"
    },
    "Stat": {
     "maxLength": 100,
     "minLength": 1,
     "type": "string"
    },
    "Unit": {
     "type": "string"
    }
   },
   "required": [
    "Stat",
    "Metric"
   ],
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/Arn"
 ],
 "properties": {
  "AdjustmentType": {
   "enum": [
    "ChangeInCapacity",
    "ExactCapacity",
    "PercentChangeInCapacity"
   ],
   "maxLength": 255,
   "minLength": 1,
   "type": "string"
  },
  "Arn": {
   "type": "string"
  },
  "AutoScalingGroupName": {
   "maxLength": 255,
   "minLength": 1,
   "type": "string"
  },
  "Cooldown": {
   "type": "string"
  },
  "EstimatedInstanceWarmup": {
   "type": "integer"
  },
  "MetricAggregationType": {
   "enum": [
    "Average",
    "Maximum",
    "Minimum"
   ],
   "maxLength": 32,
   "minLength": 1,
   "type": "string"
  },
  "MinAdjustmentMagnitude": {
   "type": "integer"
  },
  "PolicyName": {
   "maxLength": 255,
   "minLength": 1,
   "type": "string"
  },
  "PolicyType": {
   "enum": [
    "PredictiveScaling",
    "SimpleScaling",
    "StepScaling",
    "TargetTrackingScaling"
   ],
   "maxLength": 64,
   "minLength": 1,
   "type": "string"
  },
  "PredictiveScalingConfiguration": {
   "$ref": "#/definitions/PredictiveScalingConfiguration"
  },
  "ScalingAdjustment": {
   "type": "integer"
  },
  "StepAdjustments": {
   "insertionOrder": false,
   "items": {
    "$ref": "#/definitions/StepAdjustment"
   },
   "type": "array",
   "uniqueItems": true
  },
  "TargetTrackingConfiguration": {
   "$ref": "#/definitions/TargetTrackingConfiguration"
  }
 },
 "readOnlyProperties": [
  "/properties/PolicyName",
  "/properties/Arn"
 ],
 "required": [
  "AutoScalingGroupName"
 ],
 "sourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-autoscaling.git",
 "tagging": {
  "cloudFormationSystemTags": false,
  "tagOnCreate": false,
  "tagUpdatable": false,
  "taggable": false
 },
 "typeName": "AWS::AutoScaling::ScalingPolicy"
}
