{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2020-12-01",
    "endpointPrefix":"devops-guru",
    "jsonVersion":"1.1",
    "protocol":"rest-json",
    "serviceFullName":"Amazon DevOps Guru",
    "serviceId":"DevOps Guru",
    "signatureVersion":"v4",
    "signingName":"devops-guru",
    "uid":"devops-guru-2020-12-01"
  },
  "operations":{
    "AddNotificationChannel":{
      "name":"AddNotificationChannel",
      "http":{
        "method":"PUT",
        "requestUri":"/channels",
        "responseCode":200
      },
      "input":{"shape":"AddNotificationChannelRequest"},
      "output":{"shape":"AddNotificationChannelResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Adds a notification channel to DevOps Guru. A notification channel is used to notify you about important DevOps Guru events, such as when an insight is generated. </p> <p>If you use an Amazon SNS topic in another account, you must attach a policy to it that grants DevOps Guru permission to it notifications. DevOps Guru adds the required policy on your behalf to send notifications using Amazon SNS in your account. For more information, see <a href=\"https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-required-permissions.html\">Permissions for cross account Amazon SNS topics</a>.</p> <p>If you use an Amazon SNS topic that is encrypted by an AWS Key Management Service customer-managed key (CMK), then you must add permissions to the CMK. For more information, see <a href=\"https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-kms-permissions.html\">Permissions for AWS KMS–encrypted Amazon SNS topics</a>.</p>"
    },
    "DescribeAccountHealth":{
      "name":"DescribeAccountHealth",
      "http":{
        "method":"GET",
        "requestUri":"/accounts/health",
        "responseCode":200
      },
      "input":{"shape":"DescribeAccountHealthRequest"},
      "output":{"shape":"DescribeAccountHealthResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Returns the number of open reactive insights, the number of open proactive insights, and the number of metrics analyzed in your AWS account. Use these numbers to gauge the health of operations in your AWS account. </p>"
    },
    "DescribeAccountOverview":{
      "name":"DescribeAccountOverview",
      "http":{
        "method":"POST",
        "requestUri":"/accounts/overview",
        "responseCode":200
      },
      "input":{"shape":"DescribeAccountOverviewRequest"},
      "output":{"shape":"DescribeAccountOverviewResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> For the time range passed in, returns the number of open reactive insight that were created, the number of open proactive insights that were created, and the Mean Time to Recover (MTTR) for all closed reactive insights. </p>"
    },
    "DescribeAnomaly":{
      "name":"DescribeAnomaly",
      "http":{
        "method":"GET",
        "requestUri":"/anomalies/{Id}",
        "responseCode":200
      },
      "input":{"shape":"DescribeAnomalyRequest"},
      "output":{"shape":"DescribeAnomalyResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Returns details about an anomaly that you specify using its ID. </p>"
    },
    "DescribeFeedback":{
      "name":"DescribeFeedback",
      "http":{
        "method":"POST",
        "requestUri":"/feedback",
        "responseCode":200
      },
      "input":{"shape":"DescribeFeedbackRequest"},
      "output":{"shape":"DescribeFeedbackResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Returns the most recent feedback submitted in the current AWS account and Region. </p>"
    },
    "DescribeInsight":{
      "name":"DescribeInsight",
      "http":{
        "method":"GET",
        "requestUri":"/insights/{Id}",
        "responseCode":200
      },
      "input":{"shape":"DescribeInsightRequest"},
      "output":{"shape":"DescribeInsightResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Returns details about an insight that you specify using its ID. </p>"
    },
    "DescribeResourceCollectionHealth":{
      "name":"DescribeResourceCollectionHealth",
      "http":{
        "method":"GET",
        "requestUri":"/accounts/health/resource-collection/{ResourceCollectionType}",
        "responseCode":200
      },
      "input":{"shape":"DescribeResourceCollectionHealthRequest"},
      "output":{"shape":"DescribeResourceCollectionHealthResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Returns the number of open proactive insights, open reactive insights, and the Mean Time to Recover (MTTR) for all closed insights in resource collections in your account. You specify the type of AWS resources collection. The one type of AWS resource collection supported is AWS CloudFormation stacks. DevOps Guru can be configured to analyze only the AWS resources that are defined in the stacks. You can specify up to 500 AWS CloudFormation stacks. </p>"
    },
    "DescribeServiceIntegration":{
      "name":"DescribeServiceIntegration",
      "http":{
        "method":"GET",
        "requestUri":"/service-integrations",
        "responseCode":200
      },
      "input":{"shape":"DescribeServiceIntegrationRequest"},
      "output":{"shape":"DescribeServiceIntegrationResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Returns the integration status of services that are integrated with DevOps Guru. The one service that can be integrated with DevOps Guru is AWS Systems Manager, which can be used to create an OpsItem for each generated insight. </p>"
    },
    "GetCostEstimation":{
      "name":"GetCostEstimation",
      "http":{
        "method":"GET",
        "requestUri":"/cost-estimation",
        "responseCode":200
      },
      "input":{"shape":"GetCostEstimationRequest"},
      "output":{"shape":"GetCostEstimationResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p>Returns an estimate of the monthly cost for DevOps Guru to analyze your AWS resources. For more information, see <a href=\"https://docs.aws.amazon.com/devops-guru/latest/userguide/cost-estimate.html\">Estimate your Amazon DevOps Guru costs</a> and <a href=\"http://aws.amazon.com/devops-guru/pricing/\">Amazon DevOps Guru pricing</a>.</p>"
    },
    "GetResourceCollection":{
      "name":"GetResourceCollection",
      "http":{
        "method":"GET",
        "requestUri":"/resource-collections/{ResourceCollectionType}",
        "responseCode":200
      },
      "input":{"shape":"GetResourceCollectionRequest"},
      "output":{"shape":"GetResourceCollectionResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Returns lists AWS resources that are of the specified resource collection type. The one type of AWS resource collection supported is AWS CloudFormation stacks. DevOps Guru can be configured to analyze only the AWS resources that are defined in the stacks. You can specify up to 500 AWS CloudFormation stacks. </p>"
    },
    "ListAnomaliesForInsight":{
      "name":"ListAnomaliesForInsight",
      "http":{
        "method":"POST",
        "requestUri":"/anomalies/insight/{InsightId}",
        "responseCode":200
      },
      "input":{"shape":"ListAnomaliesForInsightRequest"},
      "output":{"shape":"ListAnomaliesForInsightResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Returns a list of the anomalies that belong to an insight that you specify using its ID. </p>"
    },
    "ListEvents":{
      "name":"ListEvents",
      "http":{
        "method":"POST",
        "requestUri":"/events",
        "responseCode":200
      },
      "input":{"shape":"ListEventsRequest"},
      "output":{"shape":"ListEventsResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Returns a list of the events emitted by the resources that are evaluated by DevOps Guru. You can use filters to specify which events are returned. </p>"
    },
    "ListInsights":{
      "name":"ListInsights",
      "http":{
        "method":"POST",
        "requestUri":"/insights",
        "responseCode":200
      },
      "input":{"shape":"ListInsightsRequest"},
      "output":{"shape":"ListInsightsResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Returns a list of insights in your AWS account. You can specify which insights are returned by their start time and status (<code>ONGOING</code>, <code>CLOSED</code>, or <code>ANY</code>). </p>"
    },
    "ListNotificationChannels":{
      "name":"ListNotificationChannels",
      "http":{
        "method":"POST",
        "requestUri":"/channels",
        "responseCode":200
      },
      "input":{"shape":"ListNotificationChannelsRequest"},
      "output":{"shape":"ListNotificationChannelsResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Returns a list of notification channels configured for DevOps Guru. Each notification channel is used to notify you when DevOps Guru generates an insight that contains information about how to improve your operations. The one supported notification channel is Amazon Simple Notification Service (Amazon SNS). </p>"
    },
    "ListRecommendations":{
      "name":"ListRecommendations",
      "http":{
        "method":"POST",
        "requestUri":"/recommendations",
        "responseCode":200
      },
      "input":{"shape":"ListRecommendationsRequest"},
      "output":{"shape":"ListRecommendationsResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Returns a list of a specified insight's recommendations. Each recommendation includes a list of related metrics and a list of related events. </p>"
    },
    "PutFeedback":{
      "name":"PutFeedback",
      "http":{
        "method":"PUT",
        "requestUri":"/feedback",
        "responseCode":200
      },
      "input":{"shape":"PutFeedbackRequest"},
      "output":{"shape":"PutFeedbackResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Collects customer feedback about the specified insight. </p>"
    },
    "RemoveNotificationChannel":{
      "name":"RemoveNotificationChannel",
      "http":{
        "method":"DELETE",
        "requestUri":"/channels/{Id}",
        "responseCode":200
      },
      "input":{"shape":"RemoveNotificationChannelRequest"},
      "output":{"shape":"RemoveNotificationChannelResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Removes a notification channel from DevOps Guru. A notification channel is used to notify you when DevOps Guru generates an insight that contains information about how to improve your operations. </p>"
    },
    "SearchInsights":{
      "name":"SearchInsights",
      "http":{
        "method":"POST",
        "requestUri":"/insights/search",
        "responseCode":200
      },
      "input":{"shape":"SearchInsightsRequest"},
      "output":{"shape":"SearchInsightsResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Returns a list of insights in your AWS account. You can specify which insights are returned by their start time, one or more statuses (<code>ONGOING</code>, <code>CLOSED</code>, and <code>CLOSED</code>), one or more severities (<code>LOW</code>, <code>MEDIUM</code>, and <code>HIGH</code>), and type (<code>REACTIVE</code> or <code>PROACTIVE</code>). </p> <p> Use the <code>Filters</code> parameter to specify status and severity search parameters. Use the <code>Type</code> parameter to specify <code>REACTIVE</code> or <code>PROACTIVE</code> in your search. </p>"
    },
    "StartCostEstimation":{
      "name":"StartCostEstimation",
      "http":{
        "method":"PUT",
        "requestUri":"/cost-estimation",
        "responseCode":200
      },
      "input":{"shape":"StartCostEstimationRequest"},
      "output":{"shape":"StartCostEstimationResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p>Starts the creation of an estimate of the monthly cost to analyze your AWS resources.</p>"
    },
    "UpdateResourceCollection":{
      "name":"UpdateResourceCollection",
      "http":{
        "method":"PUT",
        "requestUri":"/resource-collections",
        "responseCode":200
      },
      "input":{"shape":"UpdateResourceCollectionRequest"},
      "output":{"shape":"UpdateResourceCollectionResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Updates the collection of resources that DevOps Guru analyzes. The one type of AWS resource collection supported is AWS CloudFormation stacks. DevOps Guru can be configured to analyze only the AWS resources that are defined in the stacks. You can specify up to 500 AWS CloudFormation stacks. This method also creates the IAM role required for you to use DevOps Guru. </p>"
    },
    "UpdateServiceIntegration":{
      "name":"UpdateServiceIntegration",
      "http":{
        "method":"PUT",
        "requestUri":"/service-integrations",
        "responseCode":200
      },
      "input":{"shape":"UpdateServiceIntegrationRequest"},
      "output":{"shape":"UpdateServiceIntegrationResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"ThrottlingException"},
        {"shape":"ValidationException"}
      ],
      "documentation":"<p> Enables or disables integration with a service that can be integrated with DevOps Guru. The one service that can be integrated with DevOps Guru is AWS Systems Manager, which can be used to create an OpsItem for each generated insight. </p>"
    }
  },
  "shapes":{
    "AccessDeniedException":{
      "type":"structure",
      "required":["Message"],
      "members":{
        "Message":{"shape":"ErrorMessageString"}
      },
      "documentation":"<p> You don't have permissions to perform the requested operation. The user or role that is making the request must have at least one IAM permissions policy attached that grants the required permissions. For more information, see <a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/access.html\">Access Management</a> in the <i>IAM User Guide</i>. </p>",
      "error":{"httpStatusCode":403},
      "exception":true
    },
    "AddNotificationChannelRequest":{
      "type":"structure",
      "required":["Config"],
      "members":{
        "Config":{
          "shape":"NotificationChannelConfig",
          "documentation":"<p> A <code>NotificationChannelConfig</code> object that specifies what type of notification channel to add. The one supported notification channel is Amazon Simple Notification Service (Amazon SNS). </p>"
        }
      }
    },
    "AddNotificationChannelResponse":{
      "type":"structure",
      "required":["Id"],
      "members":{
        "Id":{
          "shape":"NotificationChannelId",
          "documentation":"<p> The ID of the added notification channel. </p>"
        }
      }
    },
    "AnomalyId":{
      "type":"string",
      "max":100,
      "min":1,
      "pattern":"^[\\w-]*$"
    },
    "AnomalyLimit":{
      "type":"double",
      "box":true
    },
    "AnomalySeverity":{
      "type":"string",
      "enum":[
        "LOW",
        "MEDIUM",
        "HIGH"
      ]
    },
    "AnomalySourceDetails":{
      "type":"structure",
      "members":{
        "CloudWatchMetrics":{
          "shape":"CloudWatchMetricsDetails",
          "documentation":"<p> An array of <code>CloudWatchMetricsDetail</code> object that contains information about the analyzed metrics that displayed anomalous behavior. </p>"
        }
      },
      "documentation":"<p> Details about the source of the anomalous operational data that triggered the anomaly. The one supported source is Amazon CloudWatch metrics. </p>"
    },
    "AnomalyStatus":{
      "type":"string",
      "enum":[
        "ONGOING",
        "CLOSED"
      ]
    },
    "AnomalyTimeRange":{
      "type":"structure",
      "required":["StartTime"],
      "members":{
        "StartTime":{
          "shape":"Timestamp",
          "documentation":"<p> The time when the anomalous behavior started. </p>"
        },
        "EndTime":{
          "shape":"Timestamp",
          "documentation":"<p> The time when the anomalous behavior ended. </p>"
        }
      },
      "documentation":"<p> A time range that specifies when the observed unusual behavior in an anomaly started and ended. </p>"
    },
    "Channels":{
      "type":"list",
      "member":{"shape":"NotificationChannel"}
    },
    "ClientToken":{
      "type":"string",
      "max":100,
      "min":1,
      "pattern":"^[a-zA-Z0-9]+[a-zA-Z0-9-]*$"
    },
    "CloudFormationCollection":{
      "type":"structure",
      "members":{
        "StackNames":{
          "shape":"StackNames",
          "documentation":"<p> An array of CloudFormation stack names. </p>"
        }
      },
      "documentation":"<p> Information about AWS CloudFormation stacks. You can use up to 500 stacks to specify which AWS resources in your account to analyze. For more information, see <a href=\"https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html\">Stacks</a> in the <i>AWS CloudFormation User Guide</i>. </p>"
    },
    "CloudFormationCollectionFilter":{
      "type":"structure",
      "members":{
        "StackNames":{
          "shape":"StackNames",
          "documentation":"<p> An array of CloudFormation stack names. </p>"
        }
      },
      "documentation":"<p> Information about AWS CloudFormation stacks. You can use up to 500 stacks to specify which AWS resources in your account to analyze. For more information, see <a href=\"https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html\">Stacks</a> in the <i>AWS CloudFormation User Guide</i>. </p>"
    },
    "CloudFormationCostEstimationResourceCollectionFilter":{
      "type":"structure",
      "members":{
        "StackNames":{
          "shape":"CostEstimationStackNames",
          "documentation":"<p>An array of CloudFormation stack names. Its size is fixed at 1 item.</p>"
        }
      },
      "documentation":"<p>Information about an AWS CloudFormation stack used to create a monthly cost estimate for DevOps Guru to analyze AWS resources. The maximum number of stacks you can specify for a cost estimate is one. The estimate created is for the cost to analyze the AWS resources defined by the stack. For more information, see <a href=\"https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html\">Stacks</a> in the <i>AWS CloudFormation User Guide</i>.</p>"
    },
    "CloudFormationHealth":{
      "type":"structure",
      "members":{
        "StackName":{
          "shape":"StackName",
          "documentation":"<p> The name of the CloudFormation stack. </p>"
        },
        "Insight":{
          "shape":"InsightHealth",
          "documentation":"<p> Information about the health of the AWS resources in your account that are specified by an AWS CloudFormation stack, including the number of open proactive, open reactive insights, and the Mean Time to Recover (MTTR) of closed insights. </p>"
        }
      },
      "documentation":"<p> Information about the health of AWS resources in your account that are specified by an AWS CloudFormation stack. </p>"
    },
    "CloudFormationHealths":{
      "type":"list",
      "member":{"shape":"CloudFormationHealth"}
    },
    "CloudWatchMetricsDetail":{
      "type":"structure",
      "members":{
        "MetricName":{
          "shape":"CloudWatchMetricsMetricName",
          "documentation":"<p> The name of the CloudWatch metric. </p>"
        },
        "Namespace":{
          "shape":"CloudWatchMetricsNamespace",
          "documentation":"<p> The namespace of the CloudWatch metric. A namespace is a container for CloudWatch metrics. </p>"
        },
        "Dimensions":{
          "shape":"CloudWatchMetricsDimensions",
          "documentation":"<p> An array of CloudWatch dimensions associated with </p>"
        },
        "Stat":{
          "shape":"CloudWatchMetricsStat",
          "documentation":"<p> The type of statistic associated with the CloudWatch metric. For more information, see <a href=\"https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Statistic\">Statistics</a> in the <i>Amazon CloudWatch User Guide</i>. </p>"
        },
        "Unit":{
          "shape":"CloudWatchMetricsUnit",
          "documentation":"<p> The unit of measure used for the CloudWatch metric. For example, <code>Bytes</code>, <code>Seconds</code>, <code>Count</code>, and <code>Percent</code>. </p>"
        },
        "Period":{
          "shape":"CloudWatchMetricsPeriod",
          "documentation":"<p> The length of time associated with the CloudWatch metric in number of seconds. </p>"
        }
      },
      "documentation":"<p> Information about an Amazon CloudWatch metric. </p>"
    },
    "CloudWatchMetricsDetails":{
      "type":"list",
      "member":{"shape":"CloudWatchMetricsDetail"}
    },
    "CloudWatchMetricsDimension":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"CloudWatchMetricsDimensionName",
          "documentation":"<p> The name of the CloudWatch dimension. </p>"
        },
        "Value":{
          "shape":"CloudWatchMetricsDimensionValue",
          "documentation":"<p> The value of the CloudWatch dimension. </p>"
        }
      },
      "documentation":"<p> The dimension of a Amazon CloudWatch metric that is used when DevOps Guru analyzes the resources in your account for operational problems and anomalous behavior. A dimension is a name/value pair that is part of the identity of a metric. A metric can have up to 10 dimensions. For more information, see <a href=\"https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Dimension\">Dimensions</a> in the <i>Amazon CloudWatch User Guide</i>. </p>"
    },
    "CloudWatchMetricsDimensionName":{"type":"string"},
    "CloudWatchMetricsDimensionValue":{"type":"string"},
    "CloudWatchMetricsDimensions":{
      "type":"list",
      "member":{"shape":"CloudWatchMetricsDimension"}
    },
    "CloudWatchMetricsMetricName":{"type":"string"},
    "CloudWatchMetricsNamespace":{"type":"string"},
    "CloudWatchMetricsPeriod":{"type":"integer"},
    "CloudWatchMetricsStat":{
      "type":"string",
      "enum":[
        "Sum",
        "Average",
        "SampleCount",
        "Minimum",
        "Maximum",
        "p99",
        "p90",
        "p50"
      ]
    },
    "CloudWatchMetricsUnit":{"type":"string"},
    "ConflictException":{
      "type":"structure",
      "required":[
        "Message",
        "ResourceId",
        "ResourceType"
      ],
      "members":{
        "Message":{"shape":"ErrorMessageString"},
        "ResourceId":{
          "shape":"ResourceIdString",
          "documentation":"<p> The ID of the AWS resource in which a conflict occurred. </p>"
        },
        "ResourceType":{
          "shape":"ResourceIdType",
          "documentation":"<p> The type of the AWS resource in which a conflict occurred. </p>"
        }
      },
      "documentation":"<p> An exception that is thrown when a conflict occurs. </p>",
      "error":{"httpStatusCode":409},
      "exception":true
    },
    "Cost":{"type":"double"},
    "CostEstimationResourceCollectionFilter":{
      "type":"structure",
      "members":{
        "CloudFormation":{
          "shape":"CloudFormationCostEstimationResourceCollectionFilter",
          "documentation":"<p>An object that specifies the CloudFormation stack that defines the AWS resources used to create a monthly estimate for DevOps Guru.</p>"
        }
      },
      "documentation":"<p>Information about a filter used to specify which AWS resources are analyzed to create a monthly DevOps Guru cost estimate. For more information, see <a href=\"https://docs.aws.amazon.com/devops-guru/latest/userguide/cost-estimate.html\">Estimate your Amazon DevOps Guru costs</a> and <a href=\"http://aws.amazon.com/devops-guru/pricing/\">Amazon DevOps Guru pricing</a>. </p>"
    },
    "CostEstimationServiceResourceCount":{"type":"integer"},
    "CostEstimationServiceResourceState":{
      "type":"string",
      "enum":[
        "ACTIVE",
        "INACTIVE"
      ]
    },
    "CostEstimationStackNames":{
      "type":"list",
      "member":{"shape":"StackName"},
      "max":1,
      "min":1
    },
    "CostEstimationStatus":{
      "type":"string",
      "enum":[
        "ONGOING",
        "COMPLETED"
      ]
    },
    "CostEstimationTimeRange":{
      "type":"structure",
      "members":{
        "StartTime":{
          "shape":"Timestamp",
          "documentation":"<p>The start time of the cost estimation.</p>"
        },
        "EndTime":{
          "shape":"Timestamp",
          "documentation":"<p>The end time of the cost estimation.</p>"
        }
      },
      "documentation":"<p>The time range of a cost estimation.</p>"
    },
    "DescribeAccountHealthRequest":{
      "type":"structure",
      "members":{
      }
    },
    "DescribeAccountHealthResponse":{
      "type":"structure",
      "required":[
        "OpenReactiveInsights",
        "OpenProactiveInsights",
        "MetricsAnalyzed",
        "ResourceHours"
      ],
      "members":{
        "OpenReactiveInsights":{
          "shape":"NumOpenReactiveInsights",
          "documentation":"<p> An integer that specifies the number of open reactive insights in your AWS account. </p>"
        },
        "OpenProactiveInsights":{
          "shape":"NumOpenProactiveInsights",
          "documentation":"<p> An integer that specifies the number of open proactive insights in your AWS account. </p>"
        },
        "MetricsAnalyzed":{
          "shape":"NumMetricsAnalyzed",
          "documentation":"<p> An integer that specifies the number of metrics that have been analyzed in your AWS account. </p>"
        },
        "ResourceHours":{
          "shape":"ResourceHours",
          "documentation":"<p>The number of Amazon DevOps Guru resource analysis hours billed to the current AWS account in the last hour. </p>"
        }
      }
    },
    "DescribeAccountOverviewRequest":{
      "type":"structure",
      "required":["FromTime"],
      "members":{
        "FromTime":{
          "shape":"Timestamp",
          "documentation":"<p> The start of the time range passed in. The start time granularity is at the day level. The floor of the start time is used. Returned information occurred after this day. </p>"
        },
        "ToTime":{
          "shape":"Timestamp",
          "documentation":"<p> The end of the time range passed in. The start time granularity is at the day level. The floor of the start time is used. Returned information occurred before this day. If this is not specified, then the current day is used. </p>"
        }
      }
    },
    "DescribeAccountOverviewResponse":{
      "type":"structure",
      "required":[
        "ReactiveInsights",
        "ProactiveInsights",
        "MeanTimeToRecoverInMilliseconds"
      ],
      "members":{
        "ReactiveInsights":{
          "shape":"NumReactiveInsights",
          "documentation":"<p> An integer that specifies the number of open reactive insights in your AWS account that were created during the time range passed in. </p>"
        },
        "ProactiveInsights":{
          "shape":"NumProactiveInsights",
          "documentation":"<p> An integer that specifies the number of open proactive insights in your AWS account that were created during the time range passed in. </p>"
        },
        "MeanTimeToRecoverInMilliseconds":{
          "shape":"MeanTimeToRecoverInMilliseconds",
          "documentation":"<p> The Mean Time to Recover (MTTR) for all closed insights that were created during the time range passed in. </p>"
        }
      }
    },
    "DescribeAnomalyRequest":{
      "type":"structure",
      "required":["Id"],
      "members":{
        "Id":{
          "shape":"AnomalyId",
          "documentation":"<p> The ID of the anomaly. </p>",
          "location":"uri",
          "locationName":"Id"
        }
      }
    },
    "DescribeAnomalyResponse":{
      "type":"structure",
      "members":{
        "ProactiveAnomaly":{
          "shape":"ProactiveAnomaly",
          "documentation":"<p> A <code>ReactiveAnomaly</code> object that represents the requested anomaly. </p>"
        },
        "ReactiveAnomaly":{
          "shape":"ReactiveAnomaly",
          "documentation":"<p> A <code>ProactiveAnomaly</code> object that represents the requested anomaly. </p>"
        }
      }
    },
    "DescribeFeedbackRequest":{
      "type":"structure",
      "members":{
        "InsightId":{
          "shape":"InsightId",
          "documentation":"<p> The ID of the insight for which the feedback was provided. </p>"
        }
      }
    },
    "DescribeFeedbackResponse":{
      "type":"structure",
      "members":{
        "InsightFeedback":{"shape":"InsightFeedback"}
      }
    },
    "DescribeInsightRequest":{
      "type":"structure",
      "required":["Id"],
      "members":{
        "Id":{
          "shape":"InsightId",
          "documentation":"<p> The ID of the insight. </p>",
          "location":"uri",
          "locationName":"Id"
        }
      }
    },
    "DescribeInsightResponse":{
      "type":"structure",
      "members":{
        "ProactiveInsight":{
          "shape":"ProactiveInsight",
          "documentation":"<p> A <code>ProactiveInsight</code> object that represents the requested insight. </p>"
        },
        "ReactiveInsight":{
          "shape":"ReactiveInsight",
          "documentation":"<p> A <code>ReactiveInsight</code> object that represents the requested insight. </p>"
        }
      }
    },
    "DescribeResourceCollectionHealthRequest":{
      "type":"structure",
      "required":["ResourceCollectionType"],
      "members":{
        "ResourceCollectionType":{
          "shape":"ResourceCollectionType",
          "documentation":"<p> An AWS resource collection type. This type specifies how analyzed AWS resources are defined. The one type of AWS resource collection supported is AWS CloudFormation stacks. DevOps Guru can be configured to analyze only the AWS resources that are defined in the stacks. You can specify up to 500 AWS CloudFormation stacks. </p>",
          "location":"uri",
          "locationName":"ResourceCollectionType"
        },
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>",
          "location":"querystring",
          "locationName":"NextToken"
        }
      }
    },
    "DescribeResourceCollectionHealthResponse":{
      "type":"structure",
      "required":["CloudFormation"],
      "members":{
        "CloudFormation":{
          "shape":"CloudFormationHealths",
          "documentation":"<p> The returned <code>CloudFormationHealthOverview</code> object that contains an <code>InsightHealthOverview</code> object with the requested system health information. </p>"
        },
        "Service":{
          "shape":"ServiceHealths",
          "documentation":"<p>An array of <code>ServiceHealth</code> objects that describes the health of the AWS services associated with the resources in the collection.</p>"
        },
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
        }
      }
    },
    "DescribeServiceIntegrationRequest":{
      "type":"structure",
      "members":{
      }
    },
    "DescribeServiceIntegrationResponse":{
      "type":"structure",
      "members":{
        "ServiceIntegration":{"shape":"ServiceIntegrationConfig"}
      }
    },
    "EndTimeRange":{
      "type":"structure",
      "members":{
        "FromTime":{
          "shape":"Timestamp",
          "documentation":"<p> The earliest end time in the time range. </p>"
        },
        "ToTime":{
          "shape":"Timestamp",
          "documentation":"<p> The latest end time in the time range. </p>"
        }
      },
      "documentation":"<p> A range of time that specifies when anomalous behavior in an anomaly or insight ended. </p>"
    },
    "ErrorMessageString":{"type":"string"},
    "ErrorNameString":{"type":"string"},
    "ErrorQuotaCodeString":{"type":"string"},
    "ErrorServiceCodeString":{"type":"string"},
    "Event":{
      "type":"structure",
      "members":{
        "ResourceCollection":{"shape":"ResourceCollection"},
        "Id":{
          "shape":"EventId",
          "documentation":"<p> The ID of the event. </p>"
        },
        "Time":{
          "shape":"Timestamp",
          "documentation":"<p> A <code>Timestamp</code> that specifies the time the event occurred. </p>"
        },
        "EventSource":{
          "shape":"EventSource",
          "documentation":"<p> The AWS source that emitted the event. </p>"
        },
        "Name":{
          "shape":"EventName",
          "documentation":"<p> The name of the event. </p>"
        },
        "DataSource":{
          "shape":"EventDataSource",
          "documentation":"<p> The source, <code>AWS_CLOUD_TRAIL</code> or <code>AWS_CODE_DEPLOY</code>, where DevOps Guru analysis found the event. </p>"
        },
        "EventClass":{
          "shape":"EventClass",
          "documentation":"<p> The class of the event. The class specifies what the event is related to, such as an infrastructure change, a deployment, or a schema change. </p>"
        },
        "Resources":{
          "shape":"EventResources",
          "documentation":"<p> An <code>EventResource</code> object that contains information about the resource that emitted the event. </p>"
        }
      },
      "documentation":"<p> An AWS resource event. AWS resource events and metrics are analyzed by DevOps Guru to find anomalous behavior and provide recommendations to improve your operational solutions. </p>"
    },
    "EventClass":{
      "type":"string",
      "enum":[
        "INFRASTRUCTURE",
        "DEPLOYMENT",
        "SECURITY_CHANGE",
        "CONFIG_CHANGE",
        "SCHEMA_CHANGE"
      ]
    },
    "EventDataSource":{
      "type":"string",
      "enum":[
        "AWS_CLOUD_TRAIL",
        "AWS_CODE_DEPLOY"
      ]
    },
    "EventId":{"type":"string"},
    "EventName":{
      "type":"string",
      "max":50,
      "min":0
    },
    "EventResource":{
      "type":"structure",
      "members":{
        "Type":{
          "shape":"EventResourceType",
          "documentation":"<p> The type of resource that emitted an event. </p>"
        },
        "Name":{
          "shape":"EventResourceName",
          "documentation":"<p> The name of the resource that emitted an event. </p>"
        },
        "Arn":{
          "shape":"EventResourceArn",
          "documentation":"<p> The Amazon Resource Name (ARN) of the resource that emitted an event. </p>"
        }
      },
      "documentation":"<p> The AWS resource that emitted an event. AWS resource events and metrics are analyzed by DevOps Guru to find anomalous behavior and provide recommendations to improve your operational solutions. </p>"
    },
    "EventResourceArn":{
      "type":"string",
      "max":2048,
      "min":36,
      "pattern":"^arn:aws[-a-z]*:[a-z0-9-]*:[a-z0-9-]*:\\d{12}:.*$"
    },
    "EventResourceName":{
      "type":"string",
      "max":2048,
      "min":0,
      "pattern":"^.*$"
    },
    "EventResourceType":{
      "type":"string",
      "max":2048,
      "min":0,
      "pattern":"^.*$"
    },
    "EventResources":{
      "type":"list",
      "member":{"shape":"EventResource"}
    },
    "EventSource":{
      "type":"string",
      "max":50,
      "min":10,
      "pattern":"^[a-z]+[a-z0-9]*\\.amazonaws\\.com|aws\\.events$"
    },
    "EventTimeRange":{
      "type":"structure",
      "required":[
        "FromTime",
        "ToTime"
      ],
      "members":{
        "FromTime":{
          "shape":"Timestamp",
          "documentation":"<p> The time when the event started. </p>"
        },
        "ToTime":{
          "shape":"Timestamp",
          "documentation":"<p> The time when the event ended. </p>"
        }
      },
      "documentation":"<p> The time range during which an AWS event occurred. AWS resource events and metrics are analyzed by DevOps Guru to find anomalous behavior and provide recommendations to improve your operational solutions. </p>"
    },
    "Events":{
      "type":"list",
      "member":{"shape":"Event"}
    },
    "GetCostEstimationRequest":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>",
          "location":"querystring",
          "locationName":"NextToken"
        }
      }
    },
    "GetCostEstimationResponse":{
      "type":"structure",
      "members":{
        "ResourceCollection":{
          "shape":"CostEstimationResourceCollectionFilter",
          "documentation":"<p>The collection of the AWS resources used to create your monthly DevOps Guru cost estimate.</p>"
        },
        "Status":{
          "shape":"CostEstimationStatus",
          "documentation":"<p>The status of creating this cost estimate. If it's still in progress, the status <code>ONGOING</code> is returned. If it is finished, the status <code>COMPLETED</code> is returned.</p>"
        },
        "Costs":{
          "shape":"ServiceResourceCosts",
          "documentation":"<p>An array of <code>ResourceCost</code> objects that each contains details about the monthly cost estimate to analyze one of your AWS resources.</p>"
        },
        "TimeRange":{
          "shape":"CostEstimationTimeRange",
          "documentation":"<p>The start and end time of the cost estimation.</p>"
        },
        "TotalCost":{
          "shape":"Cost",
          "documentation":"<p>The estimated monthly cost to analyze the AWS resources. This value is the sum of the estimated costs to analyze each resource in the <code>Costs</code> object in this response.</p>"
        },
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
        }
      }
    },
    "GetResourceCollectionRequest":{
      "type":"structure",
      "required":["ResourceCollectionType"],
      "members":{
        "ResourceCollectionType":{
          "shape":"ResourceCollectionType",
          "documentation":"<p> The type of AWS resource collections to return. The one valid value is <code>CLOUD_FORMATION</code> for AWS CloudFormation stacks. </p>",
          "location":"uri",
          "locationName":"ResourceCollectionType"
        },
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>",
          "location":"querystring",
          "locationName":"NextToken"
        }
      }
    },
    "GetResourceCollectionResponse":{
      "type":"structure",
      "members":{
        "ResourceCollection":{
          "shape":"ResourceCollectionFilter",
          "documentation":"<p> The requested list of AWS resource collections. The one type of AWS resource collection supported is AWS CloudFormation stacks. DevOps Guru can be configured to analyze only the AWS resources that are defined in the stacks. You can specify up to 500 AWS CloudFormation stacks. </p>"
        },
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
        }
      }
    },
    "InsightFeedback":{
      "type":"structure",
      "members":{
        "Id":{
          "shape":"InsightId",
          "documentation":"<p> The insight feedback ID. </p>"
        },
        "Feedback":{
          "shape":"InsightFeedbackOption",
          "documentation":"<p> The feedback provided by the customer. </p>"
        }
      },
      "documentation":"<p> Information about insight feedback received from a customer. </p>"
    },
    "InsightFeedbackOption":{
      "type":"string",
      "enum":[
        "VALID_COLLECTION",
        "RECOMMENDATION_USEFUL",
        "ALERT_TOO_SENSITIVE",
        "DATA_NOISY_ANOMALY",
        "DATA_INCORRECT"
      ]
    },
    "InsightHealth":{
      "type":"structure",
      "members":{
        "OpenProactiveInsights":{
          "shape":"NumOpenProactiveInsights",
          "documentation":"<p> The number of open proactive insights. </p>"
        },
        "OpenReactiveInsights":{
          "shape":"NumOpenReactiveInsights",
          "documentation":"<p> The number of open reactive insights. </p>"
        },
        "MeanTimeToRecoverInMilliseconds":{
          "shape":"MeanTimeToRecoverInMilliseconds",
          "documentation":"<p> The Meant Time to Recover (MTTR) for the insight. </p>"
        }
      },
      "documentation":"<p> Information about the number of open reactive and proactive insights that can be used to gauge the health of your system. </p>"
    },
    "InsightId":{
      "type":"string",
      "max":100,
      "min":1,
      "pattern":"^[\\w-]*$"
    },
    "InsightName":{
      "type":"string",
      "max":530,
      "min":1,
      "pattern":"^[\\s\\S]*$"
    },
    "InsightSeverities":{
      "type":"list",
      "member":{"shape":"InsightSeverity"},
      "max":3,
      "min":0
    },
    "InsightSeverity":{
      "type":"string",
      "enum":[
        "LOW",
        "MEDIUM",
        "HIGH"
      ]
    },
    "InsightStatus":{
      "type":"string",
      "enum":[
        "ONGOING",
        "CLOSED"
      ]
    },
    "InsightStatuses":{
      "type":"list",
      "member":{"shape":"InsightStatus"},
      "max":2,
      "min":0
    },
    "InsightTimeRange":{
      "type":"structure",
      "required":["StartTime"],
      "members":{
        "StartTime":{
          "shape":"Timestamp",
          "documentation":"<p> The time when the behavior described in an insight started. </p>"
        },
        "EndTime":{
          "shape":"Timestamp",
          "documentation":"<p> The time when the behavior described in an insight ended. </p>"
        }
      },
      "documentation":"<p> A time ranged that specifies when the observed behavior in an insight started and ended. </p>"
    },
    "InsightType":{
      "type":"string",
      "enum":[
        "REACTIVE",
        "PROACTIVE"
      ]
    },
    "InternalServerException":{
      "type":"structure",
      "required":["Message"],
      "members":{
        "Message":{"shape":"ErrorMessageString"},
        "RetryAfterSeconds":{
          "shape":"RetryAfterSeconds",
          "documentation":"<p> The number of seconds after which the action that caused the internal server exception can be retried. </p>",
          "location":"header",
          "locationName":"Retry-After"
        }
      },
      "documentation":"<p>An internal failure in an Amazon service occurred.</p>",
      "error":{"httpStatusCode":500},
      "exception":true,
      "fault":true
    },
    "ListAnomaliesForInsightMaxResults":{
      "type":"integer",
      "max":500,
      "min":1
    },
    "ListAnomaliesForInsightRequest":{
      "type":"structure",
      "required":["InsightId"],
      "members":{
        "InsightId":{
          "shape":"InsightId",
          "documentation":"<p> The ID of the insight. The returned anomalies belong to this insight. </p>",
          "location":"uri",
          "locationName":"InsightId"
        },
        "StartTimeRange":{
          "shape":"StartTimeRange",
          "documentation":"<p> A time range used to specify when the requested anomalies started. All returned anomalies started during this time range. </p>"
        },
        "MaxResults":{
          "shape":"ListAnomaliesForInsightMaxResults",
          "documentation":"<p>The maximum number of results to return with a single call. To retrieve the remaining results, make another call with the returned <code>nextToken</code> value.</p>"
        },
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
        }
      }
    },
    "ListAnomaliesForInsightResponse":{
      "type":"structure",
      "members":{
        "ProactiveAnomalies":{
          "shape":"ProactiveAnomalies",
          "documentation":"<p> An array of <code>ProactiveAnomalySummary</code> objects that represent the requested anomalies </p>"
        },
        "ReactiveAnomalies":{
          "shape":"ReactiveAnomalies",
          "documentation":"<p> An array of <code>ReactiveAnomalySummary</code> objects that represent the requested anomalies </p>"
        },
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
        }
      }
    },
    "ListEventsFilters":{
      "type":"structure",
      "members":{
        "InsightId":{
          "shape":"InsightId",
          "documentation":"<p> An ID of an insight that is related to the events you want to filter for. </p>"
        },
        "EventTimeRange":{
          "shape":"EventTimeRange",
          "documentation":"<p> A time range during which you want the filtered events to have occurred. </p>"
        },
        "EventClass":{
          "shape":"EventClass",
          "documentation":"<p> The class of the events you want to filter for, such as an infrastructure change, a deployment, or a schema change. </p>"
        },
        "EventSource":{
          "shape":"EventSource",
          "documentation":"<p> The AWS source that emitted the events you want to filter for. </p>"
        },
        "DataSource":{
          "shape":"EventDataSource",
          "documentation":"<p> The source, <code>AWS_CLOUD_TRAIL</code> or <code>AWS_CODE_DEPLOY</code>, of the events you want returned. </p>"
        },
        "ResourceCollection":{"shape":"ResourceCollection"}
      },
      "documentation":"<p> Filters you can use to specify which events are returned when <code>ListEvents</code> is called. </p>"
    },
    "ListEventsMaxResults":{
      "type":"integer",
      "max":200,
      "min":1
    },
    "ListEventsRequest":{
      "type":"structure",
      "required":["Filters"],
      "members":{
        "Filters":{
          "shape":"ListEventsFilters",
          "documentation":"<p> A <code>ListEventsFilters</code> object used to specify which events to return. </p>"
        },
        "MaxResults":{
          "shape":"ListEventsMaxResults",
          "documentation":"<p>The maximum number of results to return with a single call. To retrieve the remaining results, make another call with the returned <code>nextToken</code> value.</p>"
        },
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
        }
      }
    },
    "ListEventsResponse":{
      "type":"structure",
      "required":["Events"],
      "members":{
        "Events":{
          "shape":"Events",
          "documentation":"<p> A list of the requested events. </p>"
        },
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
        }
      }
    },
    "ListInsightsAnyStatusFilter":{
      "type":"structure",
      "required":[
        "Type",
        "StartTimeRange"
      ],
      "members":{
        "Type":{
          "shape":"InsightType",
          "documentation":"<p> Use to filter for either <code>REACTIVE</code> or <code>PROACTIVE</code> insights. </p>"
        },
        "StartTimeRange":{
          "shape":"StartTimeRange",
          "documentation":"<p> A time range used to specify when the behavior of the filtered insights started. </p>"
        }
      },
      "documentation":"<p> Used to filter for insights that have any status. </p>"
    },
    "ListInsightsClosedStatusFilter":{
      "type":"structure",
      "required":[
        "Type",
        "EndTimeRange"
      ],
      "members":{
        "Type":{
          "shape":"InsightType",
          "documentation":"<p> Use to filter for either <code>REACTIVE</code> or <code>PROACTIVE</code> insights. </p>"
        },
        "EndTimeRange":{
          "shape":"EndTimeRange",
          "documentation":"<p> A time range used to specify when the behavior of the filtered insights ended. </p>"
        }
      },
      "documentation":"<p> Used to filter for insights that have the status <code>CLOSED</code>. </p>"
    },
    "ListInsightsMaxResults":{
      "type":"integer",
      "max":100,
      "min":1
    },
    "ListInsightsOngoingStatusFilter":{
      "type":"structure",
      "required":["Type"],
      "members":{
        "Type":{
          "shape":"InsightType",
          "documentation":"<p> Use to filter for either <code>REACTIVE</code> or <code>PROACTIVE</code> insights. </p>"
        }
      },
      "documentation":"<p> Used to filter for insights that have the status <code>ONGOING</code>. </p>"
    },
    "ListInsightsRequest":{
      "type":"structure",
      "required":["StatusFilter"],
      "members":{
        "StatusFilter":{
          "shape":"ListInsightsStatusFilter",
          "documentation":"<p> A filter used to filter the returned insights by their status. You can specify one status filter. </p>"
        },
        "MaxResults":{
          "shape":"ListInsightsMaxResults",
          "documentation":"<p>The maximum number of results to return with a single call. To retrieve the remaining results, make another call with the returned <code>nextToken</code> value.</p>"
        },
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
        }
      }
    },
    "ListInsightsResponse":{
      "type":"structure",
      "members":{
        "ProactiveInsights":{
          "shape":"ProactiveInsights",
          "documentation":"<p> The returned list of proactive insights. </p>"
        },
        "ReactiveInsights":{
          "shape":"ReactiveInsights",
          "documentation":"<p> The returned list of reactive insights. </p>"
        },
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
        }
      }
    },
    "ListInsightsStatusFilter":{
      "type":"structure",
      "members":{
        "Ongoing":{
          "shape":"ListInsightsOngoingStatusFilter",
          "documentation":"<p> A <code>ListInsightsAnyStatusFilter</code> that specifies ongoing insights that are either <code>REACTIVE</code> or <code>PROACTIVE</code>. </p>"
        },
        "Closed":{
          "shape":"ListInsightsClosedStatusFilter",
          "documentation":"<p> A <code>ListInsightsClosedStatusFilter</code> that specifies closed insights that are either <code>REACTIVE</code> or <code>PROACTIVE</code>. </p>"
        },
        "Any":{
          "shape":"ListInsightsAnyStatusFilter",
          "documentation":"<p> A <code>ListInsightsAnyStatusFilter</code> that specifies insights of any status that are either <code>REACTIVE</code> or <code>PROACTIVE</code>. </p>"
        }
      },
      "documentation":"<p> A filter used by <code>ListInsights</code> to specify which insights to return. </p>"
    },
    "ListNotificationChannelsRequest":{
      "type":"structure",
      "members":{
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
        }
      }
    },
    "ListNotificationChannelsResponse":{
      "type":"structure",
      "members":{
        "Channels":{
          "shape":"Channels",
          "documentation":"<p> An array that contains the requested notification channels. </p>"
        },
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
        }
      }
    },
    "ListRecommendationsRequest":{
      "type":"structure",
      "required":["InsightId"],
      "members":{
        "InsightId":{
          "shape":"InsightId",
          "documentation":"<p> The ID of the requested insight. </p>"
        },
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
        },
        "Locale":{
          "shape":"Locale",
          "documentation":"<p>A locale that specifies the language to use for recommendations.</p>"
        }
      }
    },
    "ListRecommendationsResponse":{
      "type":"structure",
      "members":{
        "Recommendations":{
          "shape":"Recommendations",
          "documentation":"<p> An array of the requested recommendations. </p>"
        },
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
        }
      }
    },
    "Locale":{
      "type":"string",
      "enum":[
        "DE_DE",
        "EN_US",
        "EN_GB",
        "ES_ES",
        "FR_FR",
        "IT_IT",
        "JA_JP",
        "KO_KR",
        "PT_BR",
        "ZH_CN",
        "ZH_TW"
      ]
    },
    "MeanTimeToRecoverInMilliseconds":{"type":"long"},
    "NotificationChannel":{
      "type":"structure",
      "members":{
        "Id":{
          "shape":"NotificationChannelId",
          "documentation":"<p> The ID of a notification channel. </p>"
        },
        "Config":{
          "shape":"NotificationChannelConfig",
          "documentation":"<p> A <code>NotificationChannelConfig</code> object that contains information about configured notification channels. </p>"
        }
      },
      "documentation":"<p> Information about a notification channel. A notification channel is used to notify you when DevOps Guru creates an insight. The one supported notification channel is Amazon Simple Notification Service (Amazon SNS). </p> <p>If you use an Amazon SNS topic in another account, you must attach a policy to it that grants DevOps Guru permission to it notifications. DevOps Guru adds the required policy on your behalf to send notifications using Amazon SNS in your account. For more information, see <a href=\"https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-required-permissions.html\">Permissions for cross account Amazon SNS topics</a>.</p> <p>If you use an Amazon SNS topic that is encrypted by an AWS Key Management Service customer-managed key (CMK), then you must add permissions to the CMK. For more information, see <a href=\"https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-kms-permissions.html\">Permissions for AWS KMS–encrypted Amazon SNS topics</a>.</p>"
    },
    "NotificationChannelConfig":{
      "type":"structure",
      "required":["Sns"],
      "members":{
        "Sns":{
          "shape":"SnsChannelConfig",
          "documentation":"<p> Information about a notification channel configured in DevOps Guru to send notifications when insights are created. </p> <p>If you use an Amazon SNS topic in another account, you must attach a policy to it that grants DevOps Guru permission to it notifications. DevOps Guru adds the required policy on your behalf to send notifications using Amazon SNS in your account. For more information, see <a href=\"https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-required-permissions.html\">Permissions for cross account Amazon SNS topics</a>.</p> <p>If you use an Amazon SNS topic that is encrypted by an AWS Key Management Service customer-managed key (CMK), then you must add permissions to the CMK. For more information, see <a href=\"https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-kms-permissions.html\">Permissions for AWS KMS–encrypted Amazon SNS topics</a>.</p>"
        }
      },
      "documentation":"<p> Information about notification channels you have configured with DevOps Guru. The one supported notification channel is Amazon Simple Notification Service (Amazon SNS).</p>"
    },
    "NotificationChannelId":{
      "type":"string",
      "max":36,
      "min":36,
      "pattern":"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"
    },
    "NumMetricsAnalyzed":{"type":"integer"},
    "NumOpenProactiveInsights":{"type":"integer"},
    "NumOpenReactiveInsights":{"type":"integer"},
    "NumProactiveInsights":{"type":"integer"},
    "NumReactiveInsights":{"type":"integer"},
    "OpsCenterIntegration":{
      "type":"structure",
      "members":{
        "OptInStatus":{
          "shape":"OptInStatus",
          "documentation":"<p> Specifies if DevOps Guru is enabled to create an AWS Systems Manager OpsItem for each created insight. </p>"
        }
      },
      "documentation":"<p> Information about whether DevOps Guru is configured to create an OpsItem in AWS Systems Manager OpsCenter for each created insight. </p>"
    },
    "OpsCenterIntegrationConfig":{
      "type":"structure",
      "members":{
        "OptInStatus":{
          "shape":"OptInStatus",
          "documentation":"<p> Specifies if DevOps Guru is enabled to create an AWS Systems Manager OpsItem for each created insight. </p>"
        }
      },
      "documentation":"<p> Information about whether DevOps Guru is configured to create an OpsItem in AWS Systems Manager OpsCenter for each created insight. </p>"
    },
    "OptInStatus":{
      "type":"string",
      "documentation":"<p> Specifies if DevOps Guru is enabled to create an AWS Systems Manager OpsItem for each created insight. </p>",
      "enum":[
        "ENABLED",
        "DISABLED"
      ]
    },
    "PredictionTimeRange":{
      "type":"structure",
      "required":["StartTime"],
      "members":{
        "StartTime":{
          "shape":"Timestamp",
          "documentation":"<p> The time range during which a metric limit is expected to be exceeded. This applies to proactive insights only. </p>"
        },
        "EndTime":{
          "shape":"Timestamp",
          "documentation":"<p> The time when the behavior in a proactive insight is expected to end. </p>"
        }
      },
      "documentation":"<p> The time range during which anomalous behavior in a proactive anomaly or an insight is expected to occur. </p>"
    },
    "ProactiveAnomalies":{
      "type":"list",
      "member":{"shape":"ProactiveAnomalySummary"}
    },
    "ProactiveAnomaly":{
      "type":"structure",
      "members":{
        "Id":{
          "shape":"AnomalyId",
          "documentation":"<p> The ID of a proactive anomaly. </p>"
        },
        "Severity":{
          "shape":"AnomalySeverity",
          "documentation":"<p> The severity of a proactive anomaly. </p>"
        },
        "Status":{
          "shape":"AnomalyStatus",
          "documentation":"<p> The status of a proactive anomaly. </p>"
        },
        "UpdateTime":{
          "shape":"Timestamp",
          "documentation":"<p> The time of the anomaly's most recent update. </p>"
        },
        "AnomalyTimeRange":{"shape":"AnomalyTimeRange"},
        "PredictionTimeRange":{"shape":"PredictionTimeRange"},
        "SourceDetails":{
          "shape":"AnomalySourceDetails",
          "documentation":"<p> Details about the source of the analyzed operational data that triggered the anomaly. The one supported source is Amazon CloudWatch metrics. </p>"
        },
        "AssociatedInsightId":{
          "shape":"InsightId",
          "documentation":"<p> The ID of the insight that contains this anomaly. An insight is composed of related anomalies. </p>"
        },
        "ResourceCollection":{"shape":"ResourceCollection"},
        "Limit":{
          "shape":"AnomalyLimit",
          "documentation":"<p> A threshold that was exceeded by behavior in analyzed resources. Exceeding this threshold is related to the anomalous behavior that generated this anomaly. </p>"
        }
      },
      "documentation":"<p>Information about an anomaly. This object is returned by <code>ListAnomalies</code>.</p>"
    },
    "ProactiveAnomalySummary":{
      "type":"structure",
      "members":{
        "Id":{
          "shape":"AnomalyId",
          "documentation":"<p>The ID of the anomaly.</p>"
        },
        "Severity":{
          "shape":"AnomalySeverity",
          "documentation":"<p>The severity of the anomaly.</p>"
        },
        "Status":{
          "shape":"AnomalyStatus",
          "documentation":"<p>The status of the anomaly.</p>"
        },
        "UpdateTime":{
          "shape":"Timestamp",
          "documentation":"<p> The time of the anomaly's most recent update. </p>"
        },
        "AnomalyTimeRange":{"shape":"AnomalyTimeRange"},
        "PredictionTimeRange":{"shape":"PredictionTimeRange"},
        "SourceDetails":{
          "shape":"AnomalySourceDetails",
          "documentation":"<p> Details about the source of the analyzed operational data that triggered the anomaly. The one supported source is Amazon CloudWatch metrics. </p>"
        },
        "AssociatedInsightId":{
          "shape":"InsightId",
          "documentation":"<p> The ID of the insight that contains this anomaly. An insight is composed of related anomalies. </p>"
        },
        "ResourceCollection":{"shape":"ResourceCollection"},
        "Limit":{
          "shape":"AnomalyLimit",
          "documentation":"<p> A threshold that was exceeded by behavior in analyzed resources. Exceeding this threshold is related to the anomalous behavior that generated this anomaly. </p>"
        }
      },
      "documentation":"<p>Details about a proactive anomaly. This object is returned by <code>DescribeAnomaly.</code> </p>"
    },
    "ProactiveInsight":{
      "type":"structure",
      "members":{
        "Id":{
          "shape":"InsightId",
          "documentation":"<p>The ID of the proactive insight. </p>"
        },
        "Name":{
          "shape":"InsightName",
          "documentation":"<p>The name of the proactive insight. </p>"
        },
        "Severity":{
          "shape":"InsightSeverity",
          "documentation":"<p>The severity of the proactive insight. </p>"
        },
        "Status":{
          "shape":"InsightStatus",
          "documentation":"<p>The status of the proactive insight. </p>"
        },
        "InsightTimeRange":{"shape":"InsightTimeRange"},
        "PredictionTimeRange":{"shape":"PredictionTimeRange"},
        "ResourceCollection":{"shape":"ResourceCollection"},
        "SsmOpsItemId":{
          "shape":"SsmOpsItemId",
          "documentation":"<p> The ID of the AWS System Manager OpsItem created for this insight. You must enable the creation of OpstItems insights before they are created for each insight. </p>"
        }
      },
      "documentation":"<p>Details about a proactive insight. This object is returned by <code>ListInsights</code>.</p>"
    },
    "ProactiveInsightSummary":{
      "type":"structure",
      "members":{
        "Id":{
          "shape":"InsightId",
          "documentation":"<p>The ID of the proactive insight. </p>"
        },
        "Name":{
          "shape":"InsightName",
          "documentation":"<p>The name of the proactive insight. </p>"
        },
        "Severity":{
          "shape":"InsightSeverity",
          "documentation":"<p>The severity of the proactive insight. </p>"
        },
        "Status":{
          "shape":"InsightStatus",
          "documentation":"<p>The status of the proactive insight. </p>"
        },
        "InsightTimeRange":{"shape":"InsightTimeRange"},
        "PredictionTimeRange":{"shape":"PredictionTimeRange"},
        "ResourceCollection":{"shape":"ResourceCollection"},
        "ServiceCollection":{
          "shape":"ServiceCollection",
          "documentation":"<p>A collection of the names of AWS services.</p>"
        }
      },
      "documentation":"<p>Details about a proactive insight. This object is returned by <code>DescribeInsight.</code> </p>"
    },
    "ProactiveInsights":{
      "type":"list",
      "member":{"shape":"ProactiveInsightSummary"}
    },
    "PutFeedbackRequest":{
      "type":"structure",
      "members":{
        "InsightFeedback":{
          "shape":"InsightFeedback",
          "documentation":"<p> The feedback from customers is about the recommendations in this insight. </p>"
        }
      }
    },
    "PutFeedbackResponse":{
      "type":"structure",
      "members":{
      }
    },
    "ReactiveAnomalies":{
      "type":"list",
      "member":{"shape":"ReactiveAnomalySummary"}
    },
    "ReactiveAnomaly":{
      "type":"structure",
      "members":{
        "Id":{
          "shape":"AnomalyId",
          "documentation":"<p>The ID of the reactive anomaly. </p>"
        },
        "Severity":{
          "shape":"AnomalySeverity",
          "documentation":"<p>The severity of the anomaly. </p>"
        },
        "Status":{
          "shape":"AnomalyStatus",
          "documentation":"<p> The status of the anomaly. </p>"
        },
        "AnomalyTimeRange":{"shape":"AnomalyTimeRange"},
        "SourceDetails":{
          "shape":"AnomalySourceDetails",
          "documentation":"<p> Details about the source of the analyzed operational data that triggered the anomaly. The one supported source is Amazon CloudWatch metrics. </p>"
        },
        "AssociatedInsightId":{
          "shape":"InsightId",
          "documentation":"<p> The ID of the insight that contains this anomaly. An insight is composed of related anomalies. </p>"
        },
        "ResourceCollection":{"shape":"ResourceCollection"}
      },
      "documentation":"<p>Details about a reactive anomaly. This object is returned by <code>ListAnomalies</code>.</p>"
    },
    "ReactiveAnomalySummary":{
      "type":"structure",
      "members":{
        "Id":{
          "shape":"AnomalyId",
          "documentation":"<p> The ID of the reactive anomaly. </p>"
        },
        "Severity":{
          "shape":"AnomalySeverity",
          "documentation":"<p> The severity of the reactive anomaly. </p>"
        },
        "Status":{
          "shape":"AnomalyStatus",
          "documentation":"<p> The status of the reactive anomaly. </p>"
        },
        "AnomalyTimeRange":{"shape":"AnomalyTimeRange"},
        "SourceDetails":{
          "shape":"AnomalySourceDetails",
          "documentation":"<p> Details about the source of the analyzed operational data that triggered the anomaly. The one supported source is Amazon CloudWatch metrics. </p>"
        },
        "AssociatedInsightId":{
          "shape":"InsightId",
          "documentation":"<p> The ID of the insight that contains this anomaly. An insight is composed of related anomalies. </p>"
        },
        "ResourceCollection":{"shape":"ResourceCollection"}
      },
      "documentation":"<p>Details about a reactive anomaly. This object is returned by <code>DescribeAnomaly.</code> </p>"
    },
    "ReactiveInsight":{
      "type":"structure",
      "members":{
        "Id":{
          "shape":"InsightId",
          "documentation":"<p> The ID of a reactive insight. </p>"
        },
        "Name":{
          "shape":"InsightName",
          "documentation":"<p> The name of a reactive insight. </p>"
        },
        "Severity":{
          "shape":"InsightSeverity",
          "documentation":"<p> The severity of a reactive insight. </p>"
        },
        "Status":{
          "shape":"InsightStatus",
          "documentation":"<p> The status of a reactive insight. </p>"
        },
        "InsightTimeRange":{"shape":"InsightTimeRange"},
        "ResourceCollection":{"shape":"ResourceCollection"},
        "SsmOpsItemId":{
          "shape":"SsmOpsItemId",
          "documentation":"<p> The ID of the AWS System Manager OpsItem created for this insight. You must enable the creation of OpstItems insights before they are created for each insight. </p>"
        }
      },
      "documentation":"<p> Information about a reactive insight. This object is returned by <code>ListInsights</code>. </p>"
    },
    "ReactiveInsightSummary":{
      "type":"structure",
      "members":{
        "Id":{
          "shape":"InsightId",
          "documentation":"<p> The ID of a reactive summary. </p>"
        },
        "Name":{
          "shape":"InsightName",
          "documentation":"<p> The name of a reactive insight. </p>"
        },
        "Severity":{
          "shape":"InsightSeverity",
          "documentation":"<p> The severity of a reactive insight. </p>"
        },
        "Status":{
          "shape":"InsightStatus",
          "documentation":"<p> The status of a reactive insight. </p>"
        },
        "InsightTimeRange":{"shape":"InsightTimeRange"},
        "ResourceCollection":{"shape":"ResourceCollection"},
        "ServiceCollection":{
          "shape":"ServiceCollection",
          "documentation":"<p>A collection of the names of AWS services.</p>"
        }
      },
      "documentation":"<p> Information about a reactive insight. This object is returned by <code>DescribeInsight.</code> </p>"
    },
    "ReactiveInsights":{
      "type":"list",
      "member":{"shape":"ReactiveInsightSummary"}
    },
    "Recommendation":{
      "type":"structure",
      "members":{
        "Description":{
          "shape":"RecommendationDescription",
          "documentation":"<p> A description of the problem. </p>"
        },
        "Link":{
          "shape":"RecommendationLink",
          "documentation":"<p> A hyperlink to information to help you address the problem. </p>"
        },
        "Name":{
          "shape":"RecommendationName",
          "documentation":"<p> The name of the recommendation. </p>"
        },
        "Reason":{
          "shape":"RecommendationReason",
          "documentation":"<p> The reason DevOps Guru flagged the anomalous behavior as a problem. </p>"
        },
        "RelatedEvents":{
          "shape":"RecommendationRelatedEvents",
          "documentation":"<p> Events that are related to the problem. Use these events to learn more about what's happening and to help address the issue. </p>"
        },
        "RelatedAnomalies":{
          "shape":"RecommendationRelatedAnomalies",
          "documentation":"<p> Anomalies that are related to the problem. Use these Anomalies to learn more about what's happening and to help address the issue. </p>"
        }
      },
      "documentation":"<p> Recommendation information to help you remediate detected anomalous behavior that generated an insight. </p>"
    },
    "RecommendationDescription":{"type":"string"},
    "RecommendationLink":{"type":"string"},
    "RecommendationName":{"type":"string"},
    "RecommendationReason":{"type":"string"},
    "RecommendationRelatedAnomalies":{
      "type":"list",
      "member":{"shape":"RecommendationRelatedAnomaly"}
    },
    "RecommendationRelatedAnomaly":{
      "type":"structure",
      "members":{
        "Resources":{
          "shape":"RecommendationRelatedAnomalyResources",
          "documentation":"<p> An array of objects that represent resources in which DevOps Guru detected anomalous behavior. Each object contains the name and type of the resource. </p>"
        },
        "SourceDetails":{
          "shape":"RelatedAnomalySourceDetails",
          "documentation":"<p> Information about where the anomalous behavior related the recommendation was found. For example, details in Amazon CloudWatch metrics. </p>"
        }
      },
      "documentation":"<p> Information about an anomaly that is related to a recommendation. </p>"
    },
    "RecommendationRelatedAnomalyResource":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"RecommendationRelatedAnomalyResourceName",
          "documentation":"<p> The name of the resource. </p>"
        },
        "Type":{
          "shape":"RecommendationRelatedAnomalyResourceType",
          "documentation":"<p> The type of the resource. </p>"
        }
      },
      "documentation":"<p> Information about a resource in which DevOps Guru detected anomalous behavior. </p>"
    },
    "RecommendationRelatedAnomalyResourceName":{"type":"string"},
    "RecommendationRelatedAnomalyResourceType":{"type":"string"},
    "RecommendationRelatedAnomalyResources":{
      "type":"list",
      "member":{"shape":"RecommendationRelatedAnomalyResource"}
    },
    "RecommendationRelatedAnomalySourceDetail":{
      "type":"structure",
      "members":{
        "CloudWatchMetrics":{
          "shape":"RecommendationRelatedCloudWatchMetricsSourceDetails",
          "documentation":"<p> An array of <code>CloudWatchMetricsDetail</code> objects that contains information about the analyzed metrics that displayed anomalous behavior. </p>"
        }
      },
      "documentation":"<p> Contains an array of <code>RecommendationRelatedCloudWatchMetricsSourceDetail</code> objects that contain the name and namespace of an Amazon CloudWatch metric. </p>"
    },
    "RecommendationRelatedCloudWatchMetricsSourceDetail":{
      "type":"structure",
      "members":{
        "MetricName":{
          "shape":"RecommendationRelatedCloudWatchMetricsSourceMetricName",
          "documentation":"<p>The name of the CloudWatch metric.</p>"
        },
        "Namespace":{
          "shape":"RecommendationRelatedCloudWatchMetricsSourceNamespace",
          "documentation":"<p>The namespace of the CloudWatch metric. A namespace is a container for CloudWatch metrics.</p>"
        }
      },
      "documentation":"<p> Information about an Amazon CloudWatch metric that is analyzed by DevOps Guru. It is one of many analyzed metrics that are used to generate insights. </p>"
    },
    "RecommendationRelatedCloudWatchMetricsSourceDetails":{
      "type":"list",
      "member":{"shape":"RecommendationRelatedCloudWatchMetricsSourceDetail"}
    },
    "RecommendationRelatedCloudWatchMetricsSourceMetricName":{"type":"string"},
    "RecommendationRelatedCloudWatchMetricsSourceNamespace":{"type":"string"},
    "RecommendationRelatedEvent":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"RecommendationRelatedEventName",
          "documentation":"<p> The name of the event. This corresponds to the <code>Name</code> field in an <code>Event</code> object. </p>"
        },
        "Resources":{
          "shape":"RecommendationRelatedEventResources",
          "documentation":"<p> A <code>ResourceCollection</code> object that contains arrays of the names of AWS CloudFormation stacks. You can specify up to 500 AWS CloudFormation stacks. </p>"
        }
      },
      "documentation":"<p> Information about an event that is related to a recommendation. </p>"
    },
    "RecommendationRelatedEventName":{"type":"string"},
    "RecommendationRelatedEventResource":{
      "type":"structure",
      "members":{
        "Name":{
          "shape":"RecommendationRelatedEventResourceName",
          "documentation":"<p> The name of the resource that emitted the event. This corresponds to the <code>Name</code> field in an <code>EventResource</code> object. </p>"
        },
        "Type":{
          "shape":"RecommendationRelatedEventResourceType",
          "documentation":"<p> The type of the resource that emitted the event. This corresponds to the <code>Type</code> field in an <code>EventResource</code> object. </p>"
        }
      },
      "documentation":"<p> Information about an AWS resource that emitted and event that is related to a recommendation in an insight. </p>"
    },
    "RecommendationRelatedEventResourceName":{"type":"string"},
    "RecommendationRelatedEventResourceType":{"type":"string"},
    "RecommendationRelatedEventResources":{
      "type":"list",
      "member":{"shape":"RecommendationRelatedEventResource"}
    },
    "RecommendationRelatedEvents":{
      "type":"list",
      "member":{"shape":"RecommendationRelatedEvent"}
    },
    "Recommendations":{
      "type":"list",
      "member":{"shape":"Recommendation"},
      "max":10,
      "min":0
    },
    "RelatedAnomalySourceDetails":{
      "type":"list",
      "member":{"shape":"RecommendationRelatedAnomalySourceDetail"}
    },
    "RemoveNotificationChannelRequest":{
      "type":"structure",
      "required":["Id"],
      "members":{
        "Id":{
          "shape":"NotificationChannelId",
          "documentation":"<p> The ID of the notification channel to be removed. </p>",
          "location":"uri",
          "locationName":"Id"
        }
      }
    },
    "RemoveNotificationChannelResponse":{
      "type":"structure",
      "members":{
      }
    },
    "ResourceCollection":{
      "type":"structure",
      "members":{
        "CloudFormation":{
          "shape":"CloudFormationCollection",
          "documentation":"<p> An array of the names of AWS CloudFormation stacks. The stacks define AWS resources that DevOps Guru analyzes. You can specify up to 500 AWS CloudFormation stacks. </p>"
        }
      },
      "documentation":"<p> A collection of AWS resources supported by DevOps Guru. The one type of AWS resource collection supported is AWS CloudFormation stacks. DevOps Guru can be configured to analyze only the AWS resources that are defined in the stacks. You can specify up to 500 AWS CloudFormation stacks. </p>"
    },
    "ResourceCollectionFilter":{
      "type":"structure",
      "members":{
        "CloudFormation":{
          "shape":"CloudFormationCollectionFilter",
          "documentation":"<p> Information about AWS CloudFormation stacks. You can use up to 500 stacks to specify which AWS resources in your account to analyze. For more information, see <a href=\"https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html\">Stacks</a> in the <i>AWS CloudFormation User Guide</i>. </p>"
        }
      },
      "documentation":"<p> Information about a filter used to specify which AWS resources are analyzed for anomalous behavior by DevOps Guru. </p>"
    },
    "ResourceCollectionType":{
      "type":"string",
      "enum":[
        "AWS_CLOUD_FORMATION",
        "AWS_SERVICE"
      ]
    },
    "ResourceHours":{"type":"long"},
    "ResourceIdString":{"type":"string"},
    "ResourceIdType":{"type":"string"},
    "ResourceNotFoundException":{
      "type":"structure",
      "required":[
        "Message",
        "ResourceId",
        "ResourceType"
      ],
      "members":{
        "Message":{"shape":"ErrorMessageString"},
        "ResourceId":{
          "shape":"ResourceIdString",
          "documentation":"<p> The ID of the AWS resource that could not be found. </p>"
        },
        "ResourceType":{
          "shape":"ResourceIdType",
          "documentation":"<p> The type of the AWS resource that could not be found. </p>"
        }
      },
      "documentation":"<p>A requested resource could not be found</p>",
      "error":{"httpStatusCode":404},
      "exception":true
    },
    "ResourceType":{
      "type":"string",
      "max":256,
      "min":1,
      "pattern":"^[a-zA-Z]+[a-zA-Z0-9-_:]*$"
    },
    "RetryAfterSeconds":{"type":"integer"},
    "SearchInsightsFilters":{
      "type":"structure",
      "members":{
        "Severities":{
          "shape":"InsightSeverities",
          "documentation":"<p> An array of severity values used to search for insights. </p>"
        },
        "Statuses":{
          "shape":"InsightStatuses",
          "documentation":"<p> An array of status values used to search for insights. </p>"
        },
        "ResourceCollection":{"shape":"ResourceCollection"},
        "ServiceCollection":{
          "shape":"ServiceCollection",
          "documentation":"<p>A collection of the names of AWS services.</p>"
        }
      },
      "documentation":"<p> Specifies one or more severity values and one or more status values that are used to search for insights. </p>"
    },
    "SearchInsightsMaxResults":{
      "type":"integer",
      "max":100,
      "min":1
    },
    "SearchInsightsRequest":{
      "type":"structure",
      "required":[
        "StartTimeRange",
        "Type"
      ],
      "members":{
        "StartTimeRange":{
          "shape":"StartTimeRange",
          "documentation":"<p> The start of the time range passed in. Returned insights occurred after this time. </p>"
        },
        "Filters":{
          "shape":"SearchInsightsFilters",
          "documentation":"<p> A <code>SearchInsightsFilters</code> object that is used to set the severity and status filters on your insight search. </p>"
        },
        "MaxResults":{
          "shape":"SearchInsightsMaxResults",
          "documentation":"<p>The maximum number of results to return with a single call. To retrieve the remaining results, make another call with the returned <code>nextToken</code> value.</p>"
        },
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If this value is null, it retrieves the first page.</p>"
        },
        "Type":{
          "shape":"InsightType",
          "documentation":"<p> The type of insights you are searching for (<code>REACTIVE</code> or <code>PROACTIVE</code>). </p>"
        }
      }
    },
    "SearchInsightsResponse":{
      "type":"structure",
      "members":{
        "ProactiveInsights":{
          "shape":"ProactiveInsights",
          "documentation":"<p> The returned proactive insights. </p>"
        },
        "ReactiveInsights":{
          "shape":"ReactiveInsights",
          "documentation":"<p> The returned reactive insights. </p>"
        },
        "NextToken":{
          "shape":"UuidNextToken",
          "documentation":"<p>The pagination token to use to retrieve the next page of results for this operation. If there are no more pages, this value is null.</p>"
        }
      }
    },
    "ServiceCollection":{
      "type":"structure",
      "members":{
        "ServiceNames":{
          "shape":"ServiceNames",
          "documentation":"<p>An array of strings that each specifies the name of an AWS service.</p>"
        }
      },
      "documentation":"<p>A collection of the names of AWS services.</p>"
    },
    "ServiceHealth":{
      "type":"structure",
      "members":{
        "ServiceName":{
          "shape":"ServiceName",
          "documentation":"<p>The name of the AWS service.</p>"
        },
        "Insight":{
          "shape":"ServiceInsightHealth",
          "documentation":"<p>Represents the health of an AWS service. This is a <code>ServiceInsightHealth</code> that contains the number of open proactive and reactive insights for this service.</p>"
        }
      },
      "documentation":"<p>Represents the health of an AWS service.</p>"
    },
    "ServiceHealths":{
      "type":"list",
      "member":{"shape":"ServiceHealth"}
    },
    "ServiceInsightHealth":{
      "type":"structure",
      "members":{
        "OpenProactiveInsights":{
          "shape":"NumOpenProactiveInsights",
          "documentation":"<p>The number of open proactive insights in the AWS service</p>"
        },
        "OpenReactiveInsights":{
          "shape":"NumOpenReactiveInsights",
          "documentation":"<p>The number of open reactive insights in the AWS service</p>"
        }
      },
      "documentation":"<p>Contains the number of open proactive and reactive insights in an analyzed AWS service.</p>"
    },
    "ServiceIntegrationConfig":{
      "type":"structure",
      "members":{
        "OpsCenter":{
          "shape":"OpsCenterIntegration",
          "documentation":"<p> Information about whether DevOps Guru is configured to create an OpsItem in AWS Systems Manager OpsCenter for each created insight. </p>"
        }
      },
      "documentation":"<p> Information about the integration of DevOps Guru with another AWS service, such as AWS Systems Manager. </p>"
    },
    "ServiceName":{
      "type":"string",
      "enum":[
        "API_GATEWAY",
        "APPLICATION_ELB",
        "AUTO_SCALING_GROUP",
        "CLOUD_FRONT",
        "DYNAMO_DB",
        "EC2",
        "ECS",
        "EKS",
        "ELASTIC_BEANSTALK",
        "ELASTI_CACHE",
        "ELB",
        "ES",
        "KINESIS",
        "LAMBDA",
        "NAT_GATEWAY",
        "NETWORK_ELB",
        "RDS",
        "REDSHIFT",
        "ROUTE_53",
        "S3",
        "SAGE_MAKER",
        "SNS",
        "SQS",
        "STEP_FUNCTIONS",
        "SWF"
      ]
    },
    "ServiceNames":{
      "type":"list",
      "member":{"shape":"ServiceName"}
    },
    "ServiceQuotaExceededException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessageString"}
      },
      "documentation":"<p>The request contains a value that exceeds a maximum quota.</p>",
      "error":{"httpStatusCode":402},
      "exception":true
    },
    "ServiceResourceCost":{
      "type":"structure",
      "members":{
        "Type":{
          "shape":"ResourceType",
          "documentation":"<p>The type of the AWS resource.</p>"
        },
        "State":{
          "shape":"CostEstimationServiceResourceState",
          "documentation":"<p>The state of the resource. The resource is <code>ACTIVE</code> if it produces metrics, events, or logs within an hour, otherwise it is <code>INACTIVE</code>. You pay for the number of active AWS resource hours analyzed for each resource. Inactive resources are not charged. </p>"
        },
        "Count":{
          "shape":"CostEstimationServiceResourceCount",
          "documentation":"<p>The number of active resources analyzed for this service to create a monthly cost estimate.</p>"
        },
        "UnitCost":{
          "shape":"Cost",
          "documentation":"<p>The price per hour to analyze the resources in the service. For more information, see <a href=\"https://docs.aws.amazon.com/devops-guru/latest/userguide/cost-estimate.html\">Estimate your Amazon DevOps Guru costs</a> and <a href=\"http://aws.amazon.com/devops-guru/pricing/\">Amazon DevOps Guru pricing</a>.</p>"
        },
        "Cost":{
          "shape":"Cost",
          "documentation":"<p>The total estimated monthly cost to analyze the active resources for this resource.</p>"
        }
      },
      "documentation":"<p>An object that contains information about the estimated monthly cost to analyze an AWS resource. For more information, see <a href=\"https://docs.aws.amazon.com/devops-guru/latest/userguide/cost-estimate.html\">Estimate your Amazon DevOps Guru costs</a> and <a href=\"http://aws.amazon.com/devops-guru/pricing/\">Amazon DevOps Guru pricing</a>.</p>"
    },
    "ServiceResourceCosts":{
      "type":"list",
      "member":{"shape":"ServiceResourceCost"}
    },
    "SnsChannelConfig":{
      "type":"structure",
      "members":{
        "TopicArn":{
          "shape":"TopicArn",
          "documentation":"<p> The Amazon Resource Name (ARN) of an Amazon Simple Notification Service topic. </p>"
        }
      },
      "documentation":"<p> Contains the Amazon Resource Name (ARN) of an Amazon Simple Notification Service topic. </p> <p>If you use an Amazon SNS topic in another account, you must attach a policy to it that grants DevOps Guru permission to it notifications. DevOps Guru adds the required policy on your behalf to send notifications using Amazon SNS in your account. For more information, see <a href=\"https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-required-permissions.html\">Permissions for cross account Amazon SNS topics</a>.</p> <p>If you use an Amazon SNS topic that is encrypted by an AWS Key Management Service customer-managed key (CMK), then you must add permissions to the CMK. For more information, see <a href=\"https://docs.aws.amazon.com/devops-guru/latest/userguide/sns-kms-permissions.html\">Permissions for AWS KMS–encrypted Amazon SNS topics</a>.</p>"
    },
    "SsmOpsItemId":{
      "type":"string",
      "max":100,
      "min":1,
      "pattern":"^.*$"
    },
    "StackName":{
      "type":"string",
      "max":128,
      "min":1,
      "pattern":"^[a-zA-Z*]+[a-zA-Z0-9-]*$"
    },
    "StackNames":{
      "type":"list",
      "member":{"shape":"StackName"}
    },
    "StartCostEstimationRequest":{
      "type":"structure",
      "required":["ResourceCollection"],
      "members":{
        "ResourceCollection":{
          "shape":"CostEstimationResourceCollectionFilter",
          "documentation":"<p>The collection of AWS resources used to create a monthly DevOps Guru cost estimate.</p>"
        },
        "ClientToken":{
          "shape":"ClientToken",
          "documentation":"<p>The idempotency token used to identify each cost estimate request.</p>",
          "idempotencyToken":true
        }
      }
    },
    "StartCostEstimationResponse":{
      "type":"structure",
      "members":{
      }
    },
    "StartTimeRange":{
      "type":"structure",
      "members":{
        "FromTime":{
          "shape":"Timestamp",
          "documentation":"<p> The start time of the time range. </p>"
        },
        "ToTime":{
          "shape":"Timestamp",
          "documentation":"<p> The end time of the time range. </p>"
        }
      },
      "documentation":"<p> A time range used to specify when the behavior of an insight or anomaly started. </p>"
    },
    "ThrottlingException":{
      "type":"structure",
      "required":["Message"],
      "members":{
        "Message":{"shape":"ErrorMessageString"},
        "QuotaCode":{
          "shape":"ErrorQuotaCodeString",
          "documentation":"<p> The code of the quota that was exceeded, causing the throttling exception. </p>"
        },
        "ServiceCode":{
          "shape":"ErrorServiceCodeString",
          "documentation":"<p> The code of the service that caused the throttling exception. </p>"
        },
        "RetryAfterSeconds":{
          "shape":"RetryAfterSeconds",
          "documentation":"<p> The number of seconds after which the action that caused the throttling exception can be retried. </p>",
          "location":"header",
          "locationName":"Retry-After"
        }
      },
      "documentation":"<p>The request was denied due to a request throttling.</p>",
      "error":{"httpStatusCode":429},
      "exception":true
    },
    "Timestamp":{"type":"timestamp"},
    "TopicArn":{
      "type":"string",
      "max":1024,
      "min":36,
      "pattern":"^arn:aws[a-z0-9-]*:sns:[a-z0-9-]+:\\d{12}:[^:]+$"
    },
    "UpdateCloudFormationCollectionFilter":{
      "type":"structure",
      "members":{
        "StackNames":{
          "shape":"UpdateStackNames",
          "documentation":"<p> An array of the names of the AWS CloudFormation stacks to update. You can specify up to 500 AWS CloudFormation stacks. </p>"
        }
      },
      "documentation":"<p> Contains the names of AWS CloudFormation stacks used to update a collection of stacks. You can specify up to 500 AWS CloudFormation stacks.</p>"
    },
    "UpdateResourceCollectionAction":{
      "type":"string",
      "enum":[
        "ADD",
        "REMOVE"
      ]
    },
    "UpdateResourceCollectionFilter":{
      "type":"structure",
      "members":{
        "CloudFormation":{
          "shape":"UpdateCloudFormationCollectionFilter",
          "documentation":"<p> An collection of AWS CloudFormation stacks. You can specify up to 500 AWS CloudFormation stacks. </p>"
        }
      },
      "documentation":"<p> Contains information used to update a collection of AWS resources. </p>"
    },
    "UpdateResourceCollectionRequest":{
      "type":"structure",
      "required":[
        "Action",
        "ResourceCollection"
      ],
      "members":{
        "Action":{
          "shape":"UpdateResourceCollectionAction",
          "documentation":"<p> Specifies if the resource collection in the request is added or deleted to the resource collection. </p>"
        },
        "ResourceCollection":{"shape":"UpdateResourceCollectionFilter"}
      }
    },
    "UpdateResourceCollectionResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateServiceIntegrationConfig":{
      "type":"structure",
      "members":{
        "OpsCenter":{"shape":"OpsCenterIntegrationConfig"}
      },
      "documentation":"<p> Information about updating the integration status of an AWS service, such as AWS Systems Manager, with DevOps Guru. </p>"
    },
    "UpdateServiceIntegrationRequest":{
      "type":"structure",
      "required":["ServiceIntegration"],
      "members":{
        "ServiceIntegration":{
          "shape":"UpdateServiceIntegrationConfig",
          "documentation":"<p> An <code>IntegratedServiceConfig</code> object used to specify the integrated service you want to update, and whether you want to update it to enabled or disabled. </p>"
        }
      }
    },
    "UpdateServiceIntegrationResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateStackNames":{
      "type":"list",
      "member":{"shape":"StackName"},
      "max":100,
      "min":0
    },
    "UuidNextToken":{
      "type":"string",
      "max":36,
      "min":36,
      "pattern":"^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"
    },
    "ValidationException":{
      "type":"structure",
      "required":["Message"],
      "members":{
        "Message":{
          "shape":"ErrorMessageString",
          "documentation":"<p> A message that describes the validation exception. </p>"
        },
        "Reason":{
          "shape":"ValidationExceptionReason",
          "documentation":"<p> The reason the validation exception was thrown. </p>"
        },
        "Fields":{"shape":"ValidationExceptionFields"}
      },
      "documentation":"<p> Contains information about data passed in to a field during a request that is not valid. </p>",
      "error":{"httpStatusCode":400},
      "exception":true
    },
    "ValidationExceptionField":{
      "type":"structure",
      "required":[
        "Name",
        "Message"
      ],
      "members":{
        "Name":{
          "shape":"ErrorNameString",
          "documentation":"<p> The name of the field. </p>"
        },
        "Message":{
          "shape":"ErrorMessageString",
          "documentation":"<p> The message associated with the validation exception with information to help determine its cause. </p>"
        }
      },
      "documentation":"<p> The field associated with the validation exception. </p>"
    },
    "ValidationExceptionFields":{
      "type":"list",
      "member":{"shape":"ValidationExceptionField"},
      "documentation":"<p> An array of fields that are associated with the validation exception. </p>"
    },
    "ValidationExceptionReason":{
      "type":"string",
      "enum":[
        "UNKNOWN_OPERATION",
        "CANNOT_PARSE",
        "FIELD_VALIDATION_FAILED",
        "OTHER"
      ]
    }
  },
  "documentation":"<p> Amazon DevOps Guru is a fully managed service that helps you identify anomalous behavior in business critical operational applications. You specify the AWS resources that you want DevOps Guru to cover, then the Amazon CloudWatch metrics and AWS CloudTrail events related to those resources are analyzed. When anomalous behavior is detected, DevOps Guru creates an <i>insight</i> that includes recommendations, related events, and related metrics that can help you improve your operational applications. For more information, see <a href=\"https://docs.aws.amazon.com/devops-guru/latest/userguide/welcome.html\">What is Amazon DevOps Guru</a>. </p> <p> You can specify 1 or 2 Amazon Simple Notification Service topics so you are notified every time a new insight is created. You can also enable DevOps Guru to generate an OpsItem in AWS Systems Manager for each insight to help you manage and track your work addressing insights. </p> <p> To learn about the DevOps Guru workflow, see <a href=\"https://docs.aws.amazon.com/devops-guru/latest/userguide/welcome.html#how-it-works\">How DevOps Guru works</a>. To learn about DevOps Guru concepts, see <a href=\"https://docs.aws.amazon.com/devops-guru/latest/userguide/concepts.html\">Concepts in DevOps Guru</a>. </p>"
}
