{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2022-09-15",
    "auth":["aws.auth#sigv4"],
    "endpointPrefix":"trustedadvisor",
    "protocol":"rest-json",
    "protocols":["rest-json"],
    "serviceFullName":"TrustedAdvisor Public API",
    "serviceId":"TrustedAdvisor",
    "signatureVersion":"v4",
    "signingName":"trustedadvisor",
    "uid":"trustedadvisor-2022-09-15"
  },
  "operations":{
    "BatchUpdateRecommendationResourceExclusion":{
      "name":"BatchUpdateRecommendationResourceExclusion",
      "http":{
        "method":"PUT",
        "requestUri":"/v1/batch-update-recommendation-resource-exclusion",
        "responseCode":200
      },
      "input":{"shape":"BatchUpdateRecommendationResourceExclusionRequest"},
      "output":{"shape":"BatchUpdateRecommendationResourceExclusionResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>Update one or more exclusion statuses for a list of recommendation resources. This API supports up to 25 unique recommendation resource ARNs per request. This API currently doesn't support prioritized recommendation resources. This API updates global recommendations, eliminating the need to call the API in each AWS Region. After submitting an exclusion update, note that it might take a few minutes for the changes to be reflected in the system.</p>",
      "idempotent":true
    },
    "GetOrganizationRecommendation":{
      "name":"GetOrganizationRecommendation",
      "http":{
        "method":"GET",
        "requestUri":"/v1/organization-recommendations/{organizationRecommendationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetOrganizationRecommendationRequest"},
      "output":{"shape":"GetOrganizationRecommendationResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Get a specific recommendation within an AWS Organizations organization. This API supports only prioritized recommendations and provides global priority recommendations, eliminating the need to call the API in each AWS Region. </p>",
      "readonly":true
    },
    "GetRecommendation":{
      "name":"GetRecommendation",
      "http":{
        "method":"GET",
        "requestUri":"/v1/recommendations/{recommendationIdentifier}",
        "responseCode":200
      },
      "input":{"shape":"GetRecommendationRequest"},
      "output":{"shape":"GetRecommendationResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Get a specific Recommendation. This API provides global recommendations, eliminating the need to call the API in each AWS Region.</p>",
      "readonly":true
    },
    "ListChecks":{
      "name":"ListChecks",
      "http":{
        "method":"GET",
        "requestUri":"/v1/checks",
        "responseCode":200
      },
      "input":{"shape":"ListChecksRequest"},
      "output":{"shape":"ListChecksResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>List a filterable set of Checks. This API provides global recommendations, eliminating the need to call the API in each AWS Region.</p>",
      "readonly":true
    },
    "ListOrganizationRecommendationAccounts":{
      "name":"ListOrganizationRecommendationAccounts",
      "http":{
        "method":"GET",
        "requestUri":"/v1/organization-recommendations/{organizationRecommendationIdentifier}/accounts",
        "responseCode":200
      },
      "input":{"shape":"ListOrganizationRecommendationAccountsRequest"},
      "output":{"shape":"ListOrganizationRecommendationAccountsResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Lists the accounts that own the resources for an organization aggregate recommendation. This API only supports prioritized recommendations and provides global priority recommendations, eliminating the need to call the API in each AWS Region. </p>",
      "readonly":true
    },
    "ListOrganizationRecommendationResources":{
      "name":"ListOrganizationRecommendationResources",
      "http":{
        "method":"GET",
        "requestUri":"/v1/organization-recommendations/{organizationRecommendationIdentifier}/resources",
        "responseCode":200
      },
      "input":{"shape":"ListOrganizationRecommendationResourcesRequest"},
      "output":{"shape":"ListOrganizationRecommendationResourcesResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>List Resources of a Recommendation within an Organization. This API only supports prioritized recommendations and provides global priority recommendations, eliminating the need to call the API in each AWS Region. </p>",
      "readonly":true
    },
    "ListOrganizationRecommendations":{
      "name":"ListOrganizationRecommendations",
      "http":{
        "method":"GET",
        "requestUri":"/v1/organization-recommendations",
        "responseCode":200
      },
      "input":{"shape":"ListOrganizationRecommendationsRequest"},
      "output":{"shape":"ListOrganizationRecommendationsResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>List a filterable set of Recommendations within an Organization. This API only supports prioritized recommendations and provides global priority recommendations, eliminating the need to call the API in each AWS Region. </p>",
      "readonly":true
    },
    "ListRecommendationResources":{
      "name":"ListRecommendationResources",
      "http":{
        "method":"GET",
        "requestUri":"/v1/recommendations/{recommendationIdentifier}/resources",
        "responseCode":200
      },
      "input":{"shape":"ListRecommendationResourcesRequest"},
      "output":{"shape":"ListRecommendationResourcesResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>List Resources of a Recommendation. This API provides global recommendations, eliminating the need to call the API in each AWS Region.</p>",
      "readonly":true
    },
    "ListRecommendations":{
      "name":"ListRecommendations",
      "http":{
        "method":"GET",
        "requestUri":"/v1/recommendations",
        "responseCode":200
      },
      "input":{"shape":"ListRecommendationsRequest"},
      "output":{"shape":"ListRecommendationsResponse"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ThrottlingException"}
      ],
      "documentation":"<p>List a filterable set of Recommendations. This API provides global recommendations, eliminating the need to call the API in each AWS Region.</p>",
      "readonly":true
    },
    "UpdateOrganizationRecommendationLifecycle":{
      "name":"UpdateOrganizationRecommendationLifecycle",
      "http":{
        "method":"PUT",
        "requestUri":"/v1/organization-recommendations/{organizationRecommendationIdentifier}/lifecycle",
        "responseCode":200
      },
      "input":{"shape":"UpdateOrganizationRecommendationLifecycleRequest"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Update the lifecycle of a Recommendation within an Organization. This API only supports prioritized recommendations and updates global priority recommendations, eliminating the need to call the API in each AWS Region. </p>",
      "idempotent":true
    },
    "UpdateRecommendationLifecycle":{
      "name":"UpdateRecommendationLifecycle",
      "http":{
        "method":"PUT",
        "requestUri":"/v1/recommendations/{recommendationIdentifier}/lifecycle",
        "responseCode":200
      },
      "input":{"shape":"UpdateRecommendationLifecycleRequest"},
      "errors":[
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ThrottlingException"},
        {"shape":"ResourceNotFoundException"}
      ],
      "documentation":"<p>Update the lifecyle of a Recommendation. This API only supports prioritized recommendations and updates global priority recommendations, eliminating the need to call the API in each AWS Region.</p>",
      "idempotent":true
    }
  },
  "shapes":{
    "AccessDeniedException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>Exception that access has been denied due to insufficient access</p>",
      "error":{
        "httpStatusCode":403,
        "senderFault":true
      },
      "exception":true
    },
    "AccountId":{
      "type":"string",
      "max":12,
      "min":12,
      "pattern":"\\d+"
    },
    "AccountRecommendationArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"arn:[\\w-]+:trustedadvisor::\\d{12}:recommendation\\/[\\w-]+"
    },
    "AccountRecommendationIdentifier":{
      "type":"string",
      "max":200,
      "min":20,
      "pattern":"arn:[\\w-]+:trustedadvisor::\\d{12}:recommendation\\/[\\w-]+"
    },
    "AccountRecommendationLifecycleSummary":{
      "type":"structure",
      "members":{
        "accountId":{
          "shape":"AccountId",
          "documentation":"<p>The AWS account ID</p>"
        },
        "accountRecommendationArn":{
          "shape":"AccountRecommendationArn",
          "documentation":"<p>The Recommendation ARN</p>"
        },
        "lifecycleStage":{
          "shape":"RecommendationLifecycleStage",
          "documentation":"<p>The lifecycle stage from AWS Trusted Advisor Priority</p>"
        },
        "updatedOnBehalfOf":{
          "shape":"String",
          "documentation":"<p>The person on whose behalf a Technical Account Manager (TAM) updated the recommendation. This information is only available when a Technical Account Manager takes an action on a recommendation managed by AWS Trusted Advisor Priority </p>"
        },
        "updatedOnBehalfOfJobTitle":{
          "shape":"String",
          "documentation":"<p>The job title of the person on whose behalf a Technical Account Manager (TAM) updated the recommendation. This information is only available when a Technical Account Manager takes an action on a recommendation managed by AWS Trusted Advisor Priority </p>"
        },
        "updateReason":{
          "shape":"RecommendationUpdateReason",
          "documentation":"<p>Reason for the lifecycle stage change</p>"
        },
        "updateReasonCode":{
          "shape":"UpdateRecommendationLifecycleStageReasonCode",
          "documentation":"<p>Reason code for the lifecycle state change</p>"
        },
        "lastUpdatedAt":{
          "shape":"SyntheticTimestamp_date_time",
          "documentation":"<p>When the Recommendation was last updated</p>"
        }
      },
      "documentation":"<p>Summary of an AccountRecommendationLifecycle for an Organization Recommendation</p>"
    },
    "AccountRecommendationLifecycleSummaryList":{
      "type":"list",
      "member":{"shape":"AccountRecommendationLifecycleSummary"}
    },
    "BatchUpdateRecommendationResourceExclusionRequest":{
      "type":"structure",
      "required":["recommendationResourceExclusions"],
      "members":{
        "recommendationResourceExclusions":{
          "shape":"RecommendationResourceExclusionList",
          "documentation":"<p>A list of recommendation resource ARNs and exclusion status to update</p>"
        }
      }
    },
    "BatchUpdateRecommendationResourceExclusionResponse":{
      "type":"structure",
      "required":["batchUpdateRecommendationResourceExclusionErrors"],
      "members":{
        "batchUpdateRecommendationResourceExclusionErrors":{
          "shape":"UpdateRecommendationResourceExclusionErrorList",
          "documentation":"<p>A list of recommendation resource ARNs whose exclusion status failed to update, if any</p>"
        }
      }
    },
    "Boolean":{
      "type":"boolean",
      "box":true
    },
    "CheckArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"arn:[\\w-]+:trustedadvisor:::check\\/[\\w-]+"
    },
    "CheckIdentifier":{
      "type":"string",
      "max":64,
      "min":20,
      "pattern":"arn:[\\w-]+:trustedadvisor:::check\\/[\\w-]+"
    },
    "CheckSummary":{
      "type":"structure",
      "required":[
        "id",
        "arn",
        "name",
        "description",
        "pillars",
        "awsServices",
        "source",
        "metadata"
      ],
      "members":{
        "id":{
          "shape":"String",
          "documentation":"<p>The unique identifier of the AWS Trusted Advisor Check</p>"
        },
        "arn":{
          "shape":"CheckArn",
          "documentation":"<p>The ARN of the AWS Trusted Advisor Check</p>"
        },
        "name":{
          "shape":"String",
          "documentation":"<p>The name of the AWS Trusted Advisor Check</p>"
        },
        "description":{
          "shape":"String",
          "documentation":"<p>A description of what the AWS Trusted Advisor Check is monitoring</p>"
        },
        "pillars":{
          "shape":"RecommendationPillarList",
          "documentation":"<p>The Recommendation pillars that the AWS Trusted Advisor Check falls under</p>"
        },
        "awsServices":{
          "shape":"RecommendationAwsServiceList",
          "documentation":"<p>The AWS Services that the Check applies to</p>"
        },
        "source":{
          "shape":"RecommendationSource",
          "documentation":"<p>The source of the Recommendation</p>"
        },
        "metadata":{
          "shape":"StringMap",
          "documentation":"<p>The column headings for the metadata returned in the resource</p>"
        }
      },
      "documentation":"<p>A summary of an AWS Trusted Advisor Check</p>"
    },
    "CheckSummaryList":{
      "type":"list",
      "member":{"shape":"CheckSummary"}
    },
    "ConflictException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>Exception that the request was denied due to conflictions in state</p>",
      "error":{
        "httpStatusCode":409,
        "senderFault":true
      },
      "exception":true
    },
    "Double":{
      "type":"double",
      "box":true
    },
    "ExclusionStatus":{
      "type":"string",
      "enum":[
        "excluded",
        "included"
      ]
    },
    "GetOrganizationRecommendationRequest":{
      "type":"structure",
      "required":["organizationRecommendationIdentifier"],
      "members":{
        "organizationRecommendationIdentifier":{
          "shape":"OrganizationRecommendationIdentifier",
          "documentation":"<p>The Recommendation identifier</p>",
          "location":"uri",
          "locationName":"organizationRecommendationIdentifier"
        }
      }
    },
    "GetOrganizationRecommendationResponse":{
      "type":"structure",
      "members":{
        "organizationRecommendation":{
          "shape":"OrganizationRecommendation",
          "documentation":"<p>The Recommendation</p>"
        }
      }
    },
    "GetRecommendationRequest":{
      "type":"structure",
      "required":["recommendationIdentifier"],
      "members":{
        "recommendationIdentifier":{
          "shape":"AccountRecommendationIdentifier",
          "documentation":"<p>The Recommendation identifier</p>",
          "location":"uri",
          "locationName":"recommendationIdentifier"
        },
        "language":{
          "shape":"RecommendationLanguage",
          "documentation":"<p>The ISO 639-1 code for the language that you want your recommendations to appear in.</p>",
          "location":"querystring",
          "locationName":"language"
        }
      }
    },
    "GetRecommendationResponse":{
      "type":"structure",
      "members":{
        "recommendation":{
          "shape":"Recommendation",
          "documentation":"<p>The Recommendation</p>"
        }
      }
    },
    "InternalServerException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>Exception to notify that an unexpected internal error occurred during processing of the request</p>",
      "error":{"httpStatusCode":500},
      "exception":true,
      "fault":true,
      "retryable":{"throttling":false}
    },
    "ListChecksRequest":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"ListChecksRequestNextTokenString",
          "documentation":"<p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"ListChecksRequestMaxResultsInteger",
          "documentation":"<p>The maximum number of results to return per page.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "pillar":{
          "shape":"RecommendationPillar",
          "documentation":"<p>The pillar of the check</p>",
          "location":"querystring",
          "locationName":"pillar"
        },
        "awsService":{
          "shape":"RecommendationAwsService",
          "documentation":"<p>The aws service associated with the check</p>",
          "location":"querystring",
          "locationName":"awsService"
        },
        "source":{
          "shape":"RecommendationSource",
          "documentation":"<p>The source of the check</p>",
          "location":"querystring",
          "locationName":"source"
        },
        "language":{
          "shape":"RecommendationLanguage",
          "documentation":"<p>The ISO 639-1 code for the language that you want your checks to appear in.</p>",
          "location":"querystring",
          "locationName":"language"
        }
      }
    },
    "ListChecksRequestMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":200,
      "min":1
    },
    "ListChecksRequestNextTokenString":{
      "type":"string",
      "max":10000,
      "min":4
    },
    "ListChecksResponse":{
      "type":"structure",
      "required":["checkSummaries"],
      "members":{
        "nextToken":{
          "shape":"ListChecksResponseNextTokenString",
          "documentation":"<p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>"
        },
        "checkSummaries":{
          "shape":"CheckSummaryList",
          "documentation":"<p>The list of Checks</p>"
        }
      }
    },
    "ListChecksResponseNextTokenString":{
      "type":"string",
      "max":10000,
      "min":4
    },
    "ListOrganizationRecommendationAccountsRequest":{
      "type":"structure",
      "required":["organizationRecommendationIdentifier"],
      "members":{
        "nextToken":{
          "shape":"ListOrganizationRecommendationAccountsRequestNextTokenString",
          "documentation":"<p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"ListOrganizationRecommendationAccountsRequestMaxResultsInteger",
          "documentation":"<p>The maximum number of results to return per page.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "organizationRecommendationIdentifier":{
          "shape":"OrganizationRecommendationIdentifier",
          "documentation":"<p>The Recommendation identifier</p>",
          "location":"uri",
          "locationName":"organizationRecommendationIdentifier"
        },
        "affectedAccountId":{
          "shape":"AccountId",
          "documentation":"<p>An account affected by this organization recommendation</p>",
          "location":"querystring",
          "locationName":"affectedAccountId"
        }
      }
    },
    "ListOrganizationRecommendationAccountsRequestMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":200,
      "min":1
    },
    "ListOrganizationRecommendationAccountsRequestNextTokenString":{
      "type":"string",
      "max":10000,
      "min":4
    },
    "ListOrganizationRecommendationAccountsResponse":{
      "type":"structure",
      "required":["accountRecommendationLifecycleSummaries"],
      "members":{
        "nextToken":{
          "shape":"ListOrganizationRecommendationAccountsResponseNextTokenString",
          "documentation":"<p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>"
        },
        "accountRecommendationLifecycleSummaries":{
          "shape":"AccountRecommendationLifecycleSummaryList",
          "documentation":"<p>The account recommendations lifecycles that are applicable to the Recommendation</p>"
        }
      }
    },
    "ListOrganizationRecommendationAccountsResponseNextTokenString":{
      "type":"string",
      "max":10000,
      "min":4
    },
    "ListOrganizationRecommendationResourcesRequest":{
      "type":"structure",
      "required":["organizationRecommendationIdentifier"],
      "members":{
        "nextToken":{
          "shape":"ListOrganizationRecommendationResourcesRequestNextTokenString",
          "documentation":"<p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"ListOrganizationRecommendationResourcesRequestMaxResultsInteger",
          "documentation":"<p>The maximum number of results to return per page.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "status":{
          "shape":"ResourceStatus",
          "documentation":"<p>The status of the resource</p>",
          "location":"querystring",
          "locationName":"status"
        },
        "exclusionStatus":{
          "shape":"ExclusionStatus",
          "documentation":"<p>The exclusion status of the resource</p>",
          "location":"querystring",
          "locationName":"exclusionStatus"
        },
        "regionCode":{
          "shape":"String",
          "documentation":"<p>The AWS Region code of the resource</p>",
          "location":"querystring",
          "locationName":"regionCode"
        },
        "organizationRecommendationIdentifier":{
          "shape":"OrganizationRecommendationIdentifier",
          "documentation":"<p>The AWS Organization organization's Recommendation identifier</p>",
          "location":"uri",
          "locationName":"organizationRecommendationIdentifier"
        },
        "affectedAccountId":{
          "shape":"AccountId",
          "documentation":"<p>An account affected by this organization recommendation</p>",
          "location":"querystring",
          "locationName":"affectedAccountId"
        }
      }
    },
    "ListOrganizationRecommendationResourcesRequestMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":200,
      "min":1
    },
    "ListOrganizationRecommendationResourcesRequestNextTokenString":{
      "type":"string",
      "max":10000,
      "min":4
    },
    "ListOrganizationRecommendationResourcesResponse":{
      "type":"structure",
      "required":["organizationRecommendationResourceSummaries"],
      "members":{
        "nextToken":{
          "shape":"ListOrganizationRecommendationResourcesResponseNextTokenString",
          "documentation":"<p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>"
        },
        "organizationRecommendationResourceSummaries":{
          "shape":"OrganizationRecommendationResourceSummaryList",
          "documentation":"<p>A list of Recommendation Resources</p>"
        }
      }
    },
    "ListOrganizationRecommendationResourcesResponseNextTokenString":{
      "type":"string",
      "max":10000,
      "min":4
    },
    "ListOrganizationRecommendationsRequest":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"ListOrganizationRecommendationsRequestNextTokenString",
          "documentation":"<p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"ListOrganizationRecommendationsRequestMaxResultsInteger",
          "documentation":"<p>The maximum number of results to return per page.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "type":{
          "shape":"RecommendationType",
          "documentation":"<p>The type of the Recommendation</p>",
          "location":"querystring",
          "locationName":"type"
        },
        "status":{
          "shape":"RecommendationStatus",
          "documentation":"<p>The status of the Recommendation</p>",
          "location":"querystring",
          "locationName":"status"
        },
        "pillar":{
          "shape":"RecommendationPillar",
          "documentation":"<p>The pillar of the Recommendation</p>",
          "location":"querystring",
          "locationName":"pillar"
        },
        "awsService":{
          "shape":"RecommendationAwsService",
          "documentation":"<p>The aws service associated with the Recommendation</p>",
          "location":"querystring",
          "locationName":"awsService"
        },
        "source":{
          "shape":"RecommendationSource",
          "documentation":"<p>The source of the Recommendation</p>",
          "location":"querystring",
          "locationName":"source"
        },
        "checkIdentifier":{
          "shape":"CheckIdentifier",
          "documentation":"<p>The check identifier of the Recommendation</p>",
          "location":"querystring",
          "locationName":"checkIdentifier"
        },
        "afterLastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>After the last update of the Recommendation</p>",
          "location":"querystring",
          "locationName":"afterLastUpdatedAt"
        },
        "beforeLastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>Before the last update of the Recommendation</p>",
          "location":"querystring",
          "locationName":"beforeLastUpdatedAt"
        }
      }
    },
    "ListOrganizationRecommendationsRequestMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":200,
      "min":1
    },
    "ListOrganizationRecommendationsRequestNextTokenString":{
      "type":"string",
      "max":10000,
      "min":4
    },
    "ListOrganizationRecommendationsResponse":{
      "type":"structure",
      "required":["organizationRecommendationSummaries"],
      "members":{
        "nextToken":{
          "shape":"ListOrganizationRecommendationsResponseNextTokenString",
          "documentation":"<p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>"
        },
        "organizationRecommendationSummaries":{
          "shape":"OrganizationRecommendationSummaryList",
          "documentation":"<p>The list of Recommendations</p>"
        }
      }
    },
    "ListOrganizationRecommendationsResponseNextTokenString":{
      "type":"string",
      "max":10000,
      "min":4
    },
    "ListRecommendationResourcesRequest":{
      "type":"structure",
      "required":["recommendationIdentifier"],
      "members":{
        "nextToken":{
          "shape":"ListRecommendationResourcesRequestNextTokenString",
          "documentation":"<p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"ListRecommendationResourcesRequestMaxResultsInteger",
          "documentation":"<p>The maximum number of results to return per page.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "status":{
          "shape":"ResourceStatus",
          "documentation":"<p>The status of the resource</p>",
          "location":"querystring",
          "locationName":"status"
        },
        "exclusionStatus":{
          "shape":"ExclusionStatus",
          "documentation":"<p>The exclusion status of the resource</p>",
          "location":"querystring",
          "locationName":"exclusionStatus"
        },
        "regionCode":{
          "shape":"String",
          "documentation":"<p>The AWS Region code of the resource</p>",
          "location":"querystring",
          "locationName":"regionCode"
        },
        "recommendationIdentifier":{
          "shape":"AccountRecommendationIdentifier",
          "documentation":"<p>The Recommendation identifier</p>",
          "location":"uri",
          "locationName":"recommendationIdentifier"
        },
        "language":{
          "shape":"RecommendationLanguage",
          "documentation":"<p>The ISO 639-1 code for the language that you want your recommendations to appear in.</p>",
          "location":"querystring",
          "locationName":"language"
        }
      }
    },
    "ListRecommendationResourcesRequestMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":5000,
      "min":1
    },
    "ListRecommendationResourcesRequestNextTokenString":{
      "type":"string",
      "max":10000,
      "min":4
    },
    "ListRecommendationResourcesResponse":{
      "type":"structure",
      "required":["recommendationResourceSummaries"],
      "members":{
        "nextToken":{
          "shape":"ListRecommendationResourcesResponseNextTokenString",
          "documentation":"<p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>"
        },
        "recommendationResourceSummaries":{
          "shape":"RecommendationResourceSummaryList",
          "documentation":"<p>A list of Recommendation Resources</p>"
        }
      }
    },
    "ListRecommendationResourcesResponseNextTokenString":{
      "type":"string",
      "max":10000,
      "min":4
    },
    "ListRecommendationsRequest":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"ListRecommendationsRequestNextTokenString",
          "documentation":"<p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>",
          "location":"querystring",
          "locationName":"nextToken"
        },
        "maxResults":{
          "shape":"ListRecommendationsRequestMaxResultsInteger",
          "documentation":"<p>The maximum number of results to return per page.</p>",
          "location":"querystring",
          "locationName":"maxResults"
        },
        "type":{
          "shape":"RecommendationType",
          "documentation":"<p>The type of the Recommendation</p>",
          "location":"querystring",
          "locationName":"type"
        },
        "status":{
          "shape":"RecommendationStatus",
          "documentation":"<p>The status of the Recommendation</p>",
          "location":"querystring",
          "locationName":"status"
        },
        "pillar":{
          "shape":"RecommendationPillar",
          "documentation":"<p>The pillar of the Recommendation</p>",
          "location":"querystring",
          "locationName":"pillar"
        },
        "awsService":{
          "shape":"RecommendationAwsService",
          "documentation":"<p>The aws service associated with the Recommendation</p>",
          "location":"querystring",
          "locationName":"awsService"
        },
        "source":{
          "shape":"RecommendationSource",
          "documentation":"<p>The source of the Recommendation</p>",
          "location":"querystring",
          "locationName":"source"
        },
        "checkIdentifier":{
          "shape":"CheckIdentifier",
          "documentation":"<p>The check identifier of the Recommendation</p>",
          "location":"querystring",
          "locationName":"checkIdentifier"
        },
        "afterLastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>After the last update of the Recommendation</p>",
          "location":"querystring",
          "locationName":"afterLastUpdatedAt"
        },
        "beforeLastUpdatedAt":{
          "shape":"Timestamp",
          "documentation":"<p>Before the last update of the Recommendation</p>",
          "location":"querystring",
          "locationName":"beforeLastUpdatedAt"
        },
        "language":{
          "shape":"RecommendationLanguage",
          "documentation":"<p>The ISO 639-1 code for the language that you want your recommendations to appear in.</p>",
          "location":"querystring",
          "locationName":"language"
        }
      }
    },
    "ListRecommendationsRequestMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":200,
      "min":1
    },
    "ListRecommendationsRequestNextTokenString":{
      "type":"string",
      "max":10000,
      "min":4
    },
    "ListRecommendationsResponse":{
      "type":"structure",
      "required":["recommendationSummaries"],
      "members":{
        "nextToken":{
          "shape":"ListRecommendationsResponseNextTokenString",
          "documentation":"<p>The token for the next set of results. Use the value returned in the previous response in the next request to retrieve the next set of results. </p>"
        },
        "recommendationSummaries":{
          "shape":"RecommendationSummaryList",
          "documentation":"<p>The list of Recommendations</p>"
        }
      }
    },
    "ListRecommendationsResponseNextTokenString":{
      "type":"string",
      "max":10000,
      "min":4
    },
    "Long":{
      "type":"long",
      "box":true
    },
    "OrganizationRecommendation":{
      "type":"structure",
      "required":[
        "id",
        "type",
        "status",
        "pillars",
        "source",
        "name",
        "resourcesAggregates",
        "arn",
        "description"
      ],
      "members":{
        "id":{
          "shape":"String",
          "documentation":"<p>The ID which identifies where the Recommendation was produced</p>"
        },
        "type":{
          "shape":"RecommendationType",
          "documentation":"<p>Whether the Recommendation was automated or generated by AWS Trusted Advisor Priority</p>"
        },
        "checkArn":{
          "shape":"String",
          "documentation":"<p>The AWS Trusted Advisor Check ARN that relates to the Recommendation</p>"
        },
        "status":{
          "shape":"RecommendationStatus",
          "documentation":"<p>The status of the Recommendation</p>"
        },
        "lifecycleStage":{
          "shape":"RecommendationLifecycleStage",
          "documentation":"<p>The lifecycle stage from AWS Trusted Advisor Priority</p>"
        },
        "pillars":{
          "shape":"RecommendationPillarList",
          "documentation":"<p>The Pillars that the Recommendation is optimizing</p>"
        },
        "source":{
          "shape":"RecommendationSource",
          "documentation":"<p>The source of the Recommendation</p>"
        },
        "awsServices":{
          "shape":"RecommendationAwsServiceList",
          "documentation":"<p>The AWS Services that the Recommendation applies to</p>"
        },
        "name":{
          "shape":"String",
          "documentation":"<p>The name of the AWS Trusted Advisor Recommendation</p>"
        },
        "resourcesAggregates":{
          "shape":"RecommendationResourcesAggregates",
          "documentation":"<p>An aggregation of all resources</p>"
        },
        "pillarSpecificAggregates":{
          "shape":"RecommendationPillarSpecificAggregates",
          "documentation":"<p>The pillar aggregations for cost savings</p>"
        },
        "createdAt":{
          "shape":"SyntheticTimestamp_date_time",
          "documentation":"<p>When the Recommendation was created, if created by AWS Trusted Advisor Priority</p>"
        },
        "lastUpdatedAt":{
          "shape":"SyntheticTimestamp_date_time",
          "documentation":"<p>When the Recommendation was last updated</p>"
        },
        "arn":{
          "shape":"OrganizationRecommendationArn",
          "documentation":"<p>The ARN of the Recommendation</p>"
        },
        "description":{
          "shape":"String",
          "documentation":"<p>A description for AWS Trusted Advisor recommendations</p>"
        },
        "createdBy":{
          "shape":"String",
          "documentation":"<p>The creator, if created by AWS Trusted Advisor Priority</p>"
        },
        "updatedOnBehalfOf":{
          "shape":"String",
          "documentation":"<p>The person on whose behalf a Technical Account Manager (TAM) updated the recommendation. This information is only available when a Technical Account Manager takes an action on a recommendation managed by AWS Trusted Advisor Priority </p>"
        },
        "updatedOnBehalfOfJobTitle":{
          "shape":"String",
          "documentation":"<p>The job title of the person on whose behalf a Technical Account Manager (TAM) updated the recommendation. This information is only available when a Technical Account Manager takes an action on a recommendation managed by AWS Trusted Advisor Priority </p>"
        },
        "updateReason":{
          "shape":"RecommendationUpdateReason",
          "documentation":"<p>Reason for the lifecycle stage change</p>"
        },
        "updateReasonCode":{
          "shape":"UpdateRecommendationLifecycleStageReasonCode",
          "documentation":"<p>Reason code for the lifecycle state change</p>"
        },
        "resolvedAt":{
          "shape":"SyntheticTimestamp_date_time",
          "documentation":"<p>When the Recommendation was resolved</p>"
        }
      },
      "documentation":"<p>A Recommendation for accounts within an Organization</p>"
    },
    "OrganizationRecommendationArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"arn:[\\w-]+:trustedadvisor:::organization-recommendation\\/[\\w-]+"
    },
    "OrganizationRecommendationIdentifier":{
      "type":"string",
      "max":200,
      "min":20,
      "pattern":"arn:[\\w-]+:trustedadvisor:::organization-recommendation\\/[\\w-]+"
    },
    "OrganizationRecommendationResourceSummary":{
      "type":"structure",
      "required":[
        "id",
        "arn",
        "awsResourceId",
        "regionCode",
        "status",
        "metadata",
        "lastUpdatedAt",
        "recommendationArn"
      ],
      "members":{
        "id":{
          "shape":"String",
          "documentation":"<p>The ID of the Recommendation Resource</p>"
        },
        "arn":{
          "shape":"RecommendationResourceArn",
          "documentation":"<p>The ARN of the Recommendation Resource</p>"
        },
        "awsResourceId":{
          "shape":"String",
          "documentation":"<p>The AWS resource identifier. There are certain checks that generate recommendation resources without an awsResourceId.</p>"
        },
        "regionCode":{
          "shape":"RecommendationRegionCode",
          "documentation":"<p>The AWS Region code that the Recommendation Resource is in</p>"
        },
        "status":{
          "shape":"ResourceStatus",
          "documentation":"<p>The current status of the Recommendation Resource</p>"
        },
        "metadata":{
          "shape":"StringMap",
          "documentation":"<p>Metadata associated with the Recommendation Resource</p>"
        },
        "lastUpdatedAt":{
          "shape":"SyntheticTimestamp_date_time",
          "documentation":"<p>When the Recommendation Resource was last updated</p>"
        },
        "exclusionStatus":{
          "shape":"ExclusionStatus",
          "documentation":"<p>The exclusion status of the Recommendation Resource</p>"
        },
        "accountId":{
          "shape":"AccountId",
          "documentation":"<p>The AWS account ID</p>"
        },
        "recommendationArn":{
          "shape":"OrganizationRecommendationArn",
          "documentation":"<p>The Recommendation ARN</p>"
        }
      },
      "documentation":"<p>Organization Recommendation Resource Summary</p>"
    },
    "OrganizationRecommendationResourceSummaryList":{
      "type":"list",
      "member":{"shape":"OrganizationRecommendationResourceSummary"}
    },
    "OrganizationRecommendationSummary":{
      "type":"structure",
      "required":[
        "id",
        "type",
        "status",
        "pillars",
        "source",
        "name",
        "resourcesAggregates",
        "arn"
      ],
      "members":{
        "id":{
          "shape":"String",
          "documentation":"<p>The ID which identifies where the Recommendation was produced</p>"
        },
        "type":{
          "shape":"RecommendationType",
          "documentation":"<p>Whether the Recommendation was automated or generated by AWS Trusted Advisor Priority</p>"
        },
        "checkArn":{
          "shape":"String",
          "documentation":"<p>The AWS Trusted Advisor Check ARN that relates to the Recommendation</p>"
        },
        "status":{
          "shape":"RecommendationStatus",
          "documentation":"<p>The status of the Recommendation</p>"
        },
        "lifecycleStage":{
          "shape":"RecommendationLifecycleStage",
          "documentation":"<p>The lifecycle stage from AWS Trusted Advisor Priority</p>"
        },
        "pillars":{
          "shape":"RecommendationPillarList",
          "documentation":"<p>The Pillars that the Recommendation is optimizing</p>"
        },
        "source":{
          "shape":"RecommendationSource",
          "documentation":"<p>The source of the Recommendation</p>"
        },
        "awsServices":{
          "shape":"RecommendationAwsServiceList",
          "documentation":"<p>The AWS Services that the Recommendation applies to</p>"
        },
        "name":{
          "shape":"String",
          "documentation":"<p>The name of the AWS Trusted Advisor Recommendation</p>"
        },
        "resourcesAggregates":{
          "shape":"RecommendationResourcesAggregates",
          "documentation":"<p>An aggregation of all resources</p>"
        },
        "pillarSpecificAggregates":{
          "shape":"RecommendationPillarSpecificAggregates",
          "documentation":"<p>The pillar aggregations for cost savings</p>"
        },
        "createdAt":{
          "shape":"SyntheticTimestamp_date_time",
          "documentation":"<p>When the Recommendation was created, if created by AWS Trusted Advisor Priority</p>"
        },
        "lastUpdatedAt":{
          "shape":"SyntheticTimestamp_date_time",
          "documentation":"<p>When the Recommendation was last updated</p>"
        },
        "arn":{
          "shape":"OrganizationRecommendationArn",
          "documentation":"<p>The ARN of the Recommendation</p>"
        }
      },
      "documentation":"<p>Summary of recommendation for accounts within an Organization</p>"
    },
    "OrganizationRecommendationSummaryList":{
      "type":"list",
      "member":{"shape":"OrganizationRecommendationSummary"}
    },
    "Recommendation":{
      "type":"structure",
      "required":[
        "id",
        "type",
        "status",
        "pillars",
        "source",
        "name",
        "resourcesAggregates",
        "arn",
        "description"
      ],
      "members":{
        "id":{
          "shape":"String",
          "documentation":"<p>The ID which identifies where the Recommendation was produced</p>"
        },
        "type":{
          "shape":"RecommendationType",
          "documentation":"<p>Whether the Recommendation was automated or generated by AWS Trusted Advisor Priority</p>"
        },
        "checkArn":{
          "shape":"String",
          "documentation":"<p>The AWS Trusted Advisor Check ARN that relates to the Recommendation</p>"
        },
        "status":{
          "shape":"RecommendationStatus",
          "documentation":"<p>The status of the Recommendation</p>"
        },
        "lifecycleStage":{
          "shape":"RecommendationLifecycleStage",
          "documentation":"<p>The lifecycle stage from AWS Trusted Advisor Priority</p>"
        },
        "pillars":{
          "shape":"RecommendationPillarList",
          "documentation":"<p>The Pillars that the Recommendation is optimizing</p>"
        },
        "source":{
          "shape":"RecommendationSource",
          "documentation":"<p>The source of the Recommendation</p>"
        },
        "awsServices":{
          "shape":"RecommendationAwsServiceList",
          "documentation":"<p>The AWS Services that the Recommendation applies to</p>"
        },
        "name":{
          "shape":"String",
          "documentation":"<p>The name of the AWS Trusted Advisor Recommendation</p>"
        },
        "resourcesAggregates":{
          "shape":"RecommendationResourcesAggregates",
          "documentation":"<p>An aggregation of all resources</p>"
        },
        "pillarSpecificAggregates":{
          "shape":"RecommendationPillarSpecificAggregates",
          "documentation":"<p>The pillar aggregations for cost savings</p>"
        },
        "createdAt":{
          "shape":"SyntheticTimestamp_date_time",
          "documentation":"<p>When the Recommendation was created, if created by AWS Trusted Advisor Priority</p>"
        },
        "lastUpdatedAt":{
          "shape":"SyntheticTimestamp_date_time",
          "documentation":"<p>When the Recommendation was last updated</p>"
        },
        "arn":{
          "shape":"AccountRecommendationArn",
          "documentation":"<p>The ARN of the Recommendation</p>"
        },
        "statusReason":{
          "shape":"StatusReason",
          "documentation":"<p>This attribute provides additional details about potential discrepancies in check status determination.</p>"
        },
        "description":{
          "shape":"String",
          "documentation":"<p>A description for AWS Trusted Advisor recommendations</p>"
        },
        "createdBy":{
          "shape":"String",
          "documentation":"<p>The creator, if created by AWS Trusted Advisor Priority</p>"
        },
        "updatedOnBehalfOf":{
          "shape":"String",
          "documentation":"<p>The person on whose behalf a Technical Account Manager (TAM) updated the recommendation. This information is only available when a Technical Account Manager takes an action on a recommendation managed by AWS Trusted Advisor Priority </p>"
        },
        "updatedOnBehalfOfJobTitle":{
          "shape":"String",
          "documentation":"<p>The job title of the person on whose behalf a Technical Account Manager (TAM) updated the recommendation. This information is only available when a Technical Account Manager takes an action on a recommendation managed by AWS Trusted Advisor Priority </p>"
        },
        "updateReason":{
          "shape":"RecommendationUpdateReason",
          "documentation":"<p>Reason for the lifecycle stage change</p>"
        },
        "updateReasonCode":{
          "shape":"UpdateRecommendationLifecycleStageReasonCode",
          "documentation":"<p>Reason code for the lifecycle state change</p>"
        },
        "resolvedAt":{
          "shape":"SyntheticTimestamp_date_time",
          "documentation":"<p>When the Recommendation was resolved</p>"
        }
      },
      "documentation":"<p>A Recommendation for an Account</p>"
    },
    "RecommendationAwsService":{
      "type":"string",
      "max":30,
      "min":2
    },
    "RecommendationAwsServiceList":{
      "type":"list",
      "member":{"shape":"RecommendationAwsService"}
    },
    "RecommendationCostOptimizingAggregates":{
      "type":"structure",
      "required":[
        "estimatedMonthlySavings",
        "estimatedPercentMonthlySavings"
      ],
      "members":{
        "estimatedMonthlySavings":{
          "shape":"Double",
          "documentation":"<p>The estimated monthly savings</p>"
        },
        "estimatedPercentMonthlySavings":{
          "shape":"Double",
          "documentation":"<p>The estimated percently monthly savings</p>"
        }
      },
      "documentation":"<p>Cost optimizing aggregates for a Recommendation</p>"
    },
    "RecommendationLanguage":{
      "type":"string",
      "enum":[
        "en",
        "ja",
        "zh",
        "fr",
        "de",
        "ko",
        "zh_TW",
        "it",
        "es",
        "pt_BR",
        "id"
      ]
    },
    "RecommendationLifecycleStage":{
      "type":"string",
      "enum":[
        "in_progress",
        "pending_response",
        "dismissed",
        "resolved"
      ]
    },
    "RecommendationPillar":{
      "type":"string",
      "enum":[
        "cost_optimizing",
        "performance",
        "security",
        "service_limits",
        "fault_tolerance",
        "operational_excellence"
      ]
    },
    "RecommendationPillarList":{
      "type":"list",
      "member":{"shape":"RecommendationPillar"},
      "max":50,
      "min":1
    },
    "RecommendationPillarSpecificAggregates":{
      "type":"structure",
      "members":{
        "costOptimizing":{
          "shape":"RecommendationCostOptimizingAggregates",
          "documentation":"<p>Cost optimizing aggregates</p>"
        }
      },
      "documentation":"<p>Recommendation pillar aggregates</p>"
    },
    "RecommendationRegionCode":{
      "type":"string",
      "max":20,
      "min":9
    },
    "RecommendationResourceArn":{
      "type":"string",
      "max":2048,
      "min":20,
      "pattern":"arn:[\\w-]+:trustedadvisor::\\d{12}:recommendation-resource\\/[\\w-]+\\/[\\w-]+"
    },
    "RecommendationResourceExclusion":{
      "type":"structure",
      "required":[
        "arn",
        "isExcluded"
      ],
      "members":{
        "arn":{
          "shape":"RecommendationResourceArn",
          "documentation":"<p>The ARN of the Recommendation Resource</p>"
        },
        "isExcluded":{
          "shape":"Boolean",
          "documentation":"<p>The exclusion status</p>"
        }
      },
      "documentation":"<p>The request entry for Recommendation Resource exclusion. Each entry is a combination of Recommendation Resource ARN and corresponding exclusion status</p>"
    },
    "RecommendationResourceExclusionList":{
      "type":"list",
      "member":{"shape":"RecommendationResourceExclusion"},
      "max":25,
      "min":1
    },
    "RecommendationResourceSummary":{
      "type":"structure",
      "required":[
        "id",
        "arn",
        "awsResourceId",
        "regionCode",
        "status",
        "metadata",
        "lastUpdatedAt",
        "recommendationArn"
      ],
      "members":{
        "id":{
          "shape":"String",
          "documentation":"<p>The ID of the Recommendation Resource</p>"
        },
        "arn":{
          "shape":"RecommendationResourceArn",
          "documentation":"<p>The ARN of the Recommendation Resource</p>"
        },
        "awsResourceId":{
          "shape":"String",
          "documentation":"<p>The AWS resource identifier. There are certain checks that generate recommendation resources without an awsResourceId.</p>"
        },
        "regionCode":{
          "shape":"RecommendationRegionCode",
          "documentation":"<p>The AWS Region code that the Recommendation Resource is in</p>"
        },
        "status":{
          "shape":"ResourceStatus",
          "documentation":"<p>The current status of the Recommendation Resource</p>"
        },
        "metadata":{
          "shape":"StringMap",
          "documentation":"<p>Metadata associated with the Recommendation Resource</p>"
        },
        "lastUpdatedAt":{
          "shape":"SyntheticTimestamp_date_time",
          "documentation":"<p>When the Recommendation Resource was last updated</p>"
        },
        "exclusionStatus":{
          "shape":"ExclusionStatus",
          "documentation":"<p>The exclusion status of the Recommendation Resource</p>"
        },
        "recommendationArn":{
          "shape":"AccountRecommendationArn",
          "documentation":"<p>The Recommendation ARN</p>"
        }
      },
      "documentation":"<p>Summary of a Recommendation Resource</p>"
    },
    "RecommendationResourceSummaryList":{
      "type":"list",
      "member":{"shape":"RecommendationResourceSummary"}
    },
    "RecommendationResourcesAggregates":{
      "type":"structure",
      "required":[
        "okCount",
        "warningCount",
        "errorCount"
      ],
      "members":{
        "okCount":{
          "shape":"Long",
          "documentation":"<p>The number of AWS resources that were flagged to be OK according to the Trusted Advisor check</p>"
        },
        "warningCount":{
          "shape":"Long",
          "documentation":"<p>The number of AWS resources that were flagged to have warning according to the Trusted Advisor check </p>"
        },
        "errorCount":{
          "shape":"Long",
          "documentation":"<p>The number of AWS resources that were flagged to have errors according to the Trusted Advisor check</p>"
        },
        "excludedCount":{
          "shape":"Long",
          "documentation":"<p>The number of AWS resources belonging to this Trusted Advisor check that were excluded by the customer</p>"
        }
      },
      "documentation":"<p>Aggregation of Recommendation Resources</p>"
    },
    "RecommendationSource":{
      "type":"string",
      "enum":[
        "aws_config",
        "compute_optimizer",
        "cost_explorer",
        "lse",
        "manual",
        "pse",
        "rds",
        "resilience",
        "resilience_hub",
        "security_hub",
        "stir",
        "ta_check",
        "well_architected",
        "cost_optimization_hub"
      ]
    },
    "RecommendationStatus":{
      "type":"string",
      "enum":[
        "ok",
        "warning",
        "error"
      ]
    },
    "RecommendationSummary":{
      "type":"structure",
      "required":[
        "id",
        "type",
        "status",
        "pillars",
        "source",
        "name",
        "resourcesAggregates",
        "arn"
      ],
      "members":{
        "id":{
          "shape":"String",
          "documentation":"<p>The ID which identifies where the Recommendation was produced</p>"
        },
        "type":{
          "shape":"RecommendationType",
          "documentation":"<p>Whether the Recommendation was automated or generated by AWS Trusted Advisor Priority</p>"
        },
        "checkArn":{
          "shape":"String",
          "documentation":"<p>The AWS Trusted Advisor Check ARN that relates to the Recommendation</p>"
        },
        "status":{
          "shape":"RecommendationStatus",
          "documentation":"<p>The status of the Recommendation</p>"
        },
        "lifecycleStage":{
          "shape":"RecommendationLifecycleStage",
          "documentation":"<p>The lifecycle stage from AWS Trusted Advisor Priority</p>"
        },
        "pillars":{
          "shape":"RecommendationPillarList",
          "documentation":"<p>The Pillars that the Recommendation is optimizing</p>"
        },
        "source":{
          "shape":"RecommendationSource",
          "documentation":"<p>The source of the Recommendation</p>"
        },
        "awsServices":{
          "shape":"RecommendationAwsServiceList",
          "documentation":"<p>The AWS Services that the Recommendation applies to</p>"
        },
        "name":{
          "shape":"String",
          "documentation":"<p>The name of the AWS Trusted Advisor Recommendation</p>"
        },
        "resourcesAggregates":{
          "shape":"RecommendationResourcesAggregates",
          "documentation":"<p>An aggregation of all resources</p>"
        },
        "pillarSpecificAggregates":{
          "shape":"RecommendationPillarSpecificAggregates",
          "documentation":"<p>The pillar aggregations for cost savings</p>"
        },
        "createdAt":{
          "shape":"SyntheticTimestamp_date_time",
          "documentation":"<p>When the Recommendation was created, if created by AWS Trusted Advisor Priority</p>"
        },
        "lastUpdatedAt":{
          "shape":"SyntheticTimestamp_date_time",
          "documentation":"<p>When the Recommendation was last updated</p>"
        },
        "arn":{
          "shape":"AccountRecommendationArn",
          "documentation":"<p>The ARN of the Recommendation</p>"
        },
        "statusReason":{
          "shape":"StatusReason",
          "documentation":"<p>This attribute provides additional details about potential discrepancies in check status determination.</p>"
        }
      },
      "documentation":"<p>Summary of Recommendation for an Account</p>"
    },
    "RecommendationSummaryList":{
      "type":"list",
      "member":{"shape":"RecommendationSummary"}
    },
    "RecommendationType":{
      "type":"string",
      "enum":[
        "standard",
        "priority"
      ]
    },
    "RecommendationUpdateReason":{
      "type":"string",
      "max":4096,
      "min":10,
      "pattern":"[\\s\\S]*",
      "sensitive":true
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>Exception that the requested resource has not been found</p>",
      "error":{
        "httpStatusCode":404,
        "senderFault":true
      },
      "exception":true
    },
    "ResourceStatus":{
      "type":"string",
      "enum":[
        "ok",
        "warning",
        "error"
      ]
    },
    "StatusReason":{
      "type":"string",
      "enum":["no_data_ok"]
    },
    "String":{"type":"string"},
    "StringMap":{
      "type":"map",
      "key":{"shape":"String"},
      "value":{"shape":"String"}
    },
    "SyntheticTimestamp_date_time":{
      "type":"timestamp",
      "timestampFormat":"iso8601"
    },
    "ThrottlingException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>Exception to notify that requests are being throttled</p>",
      "error":{
        "httpStatusCode":429,
        "senderFault":true
      },
      "exception":true,
      "retryable":{"throttling":true}
    },
    "Timestamp":{"type":"timestamp"},
    "UpdateOrganizationRecommendationLifecycleRequest":{
      "type":"structure",
      "required":[
        "lifecycleStage",
        "organizationRecommendationIdentifier"
      ],
      "members":{
        "lifecycleStage":{
          "shape":"UpdateRecommendationLifecycleStage",
          "documentation":"<p>The new lifecycle stage</p>"
        },
        "updateReason":{
          "shape":"RecommendationUpdateReason",
          "documentation":"<p>Reason for the lifecycle stage change</p>"
        },
        "updateReasonCode":{
          "shape":"UpdateRecommendationLifecycleStageReasonCode",
          "documentation":"<p>Reason code for the lifecycle state change</p>"
        },
        "organizationRecommendationIdentifier":{
          "shape":"OrganizationRecommendationIdentifier",
          "documentation":"<p>The Recommendation identifier for AWS Trusted Advisor Priority recommendations</p>",
          "location":"uri",
          "locationName":"organizationRecommendationIdentifier"
        }
      }
    },
    "UpdateRecommendationLifecycleRequest":{
      "type":"structure",
      "required":[
        "lifecycleStage",
        "recommendationIdentifier"
      ],
      "members":{
        "lifecycleStage":{
          "shape":"UpdateRecommendationLifecycleStage",
          "documentation":"<p>The new lifecycle stage</p>"
        },
        "updateReason":{
          "shape":"RecommendationUpdateReason",
          "documentation":"<p>Reason for the lifecycle stage change</p>"
        },
        "updateReasonCode":{
          "shape":"UpdateRecommendationLifecycleStageReasonCode",
          "documentation":"<p>Reason code for the lifecycle state change</p>"
        },
        "recommendationIdentifier":{
          "shape":"AccountRecommendationIdentifier",
          "documentation":"<p>The Recommendation identifier for AWS Trusted Advisor Priority recommendations</p>",
          "location":"uri",
          "locationName":"recommendationIdentifier"
        }
      }
    },
    "UpdateRecommendationLifecycleStage":{
      "type":"string",
      "enum":[
        "pending_response",
        "in_progress",
        "dismissed",
        "resolved"
      ]
    },
    "UpdateRecommendationLifecycleStageReasonCode":{
      "type":"string",
      "enum":[
        "non_critical_account",
        "temporary_account",
        "valid_business_case",
        "other_methods_available",
        "low_priority",
        "not_applicable",
        "other"
      ]
    },
    "UpdateRecommendationResourceExclusionError":{
      "type":"structure",
      "members":{
        "arn":{
          "shape":"RecommendationResourceArn",
          "documentation":"<p>The ARN of the Recommendation Resource</p>"
        },
        "errorCode":{
          "shape":"String",
          "documentation":"<p>The error code</p>"
        },
        "errorMessage":{
          "shape":"String",
          "documentation":"<p>The error message</p>"
        }
      },
      "documentation":"<p>The error entry for Recommendation Resource exclusion. Each entry is a combination of Recommendation Resource ARN, error code and error message</p>"
    },
    "UpdateRecommendationResourceExclusionErrorList":{
      "type":"list",
      "member":{"shape":"UpdateRecommendationResourceExclusionError"}
    },
    "ValidationException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p>Exception that the request failed to satisfy service constraints</p>",
      "error":{
        "httpStatusCode":400,
        "senderFault":true
      },
      "exception":true
    }
  },
  "documentation":"<p>TrustedAdvisor Public API</p>"
}
