{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2019-09-19",
    "endpointPrefix":"codeguru-reviewer",
    "jsonVersion":"1.1",
    "protocol":"rest-json",
    "serviceAbbreviation":"CodeGuruReviewer",
    "serviceFullName":"Amazon CodeGuru Reviewer",
    "serviceId":"CodeGuru Reviewer",
    "signatureVersion":"v4",
    "signingName":"codeguru-reviewer",
    "uid":"codeguru-reviewer-2019-09-19"
  },
  "operations":{
    "AssociateRepository":{
      "name":"AssociateRepository",
      "http":{
        "method":"POST",
        "requestUri":"/associations"
      },
      "input":{"shape":"AssociateRepositoryRequest"},
      "output":{"shape":"AssociateRepositoryResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"ThrottlingException"}
      ]
    },
    "DescribeCodeReview":{
      "name":"DescribeCodeReview",
      "http":{
        "method":"GET",
        "requestUri":"/codereviews/{CodeReviewArn}"
      },
      "input":{"shape":"DescribeCodeReviewRequest"},
      "output":{"shape":"DescribeCodeReviewResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"}
      ]
    },
    "DescribeRecommendationFeedback":{
      "name":"DescribeRecommendationFeedback",
      "http":{
        "method":"GET",
        "requestUri":"/feedback/{CodeReviewArn}"
      },
      "input":{"shape":"DescribeRecommendationFeedbackRequest"},
      "output":{"shape":"DescribeRecommendationFeedbackResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"}
      ]
    },
    "DescribeRepositoryAssociation":{
      "name":"DescribeRepositoryAssociation",
      "http":{
        "method":"GET",
        "requestUri":"/associations/{AssociationArn}"
      },
      "input":{"shape":"DescribeRepositoryAssociationRequest"},
      "output":{"shape":"DescribeRepositoryAssociationResponse"},
      "errors":[
        {"shape":"NotFoundException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"}
      ]
    },
    "DisassociateRepository":{
      "name":"DisassociateRepository",
      "http":{
        "method":"DELETE",
        "requestUri":"/associations/{AssociationArn}"
      },
      "input":{"shape":"DisassociateRepositoryRequest"},
      "output":{"shape":"DisassociateRepositoryResponse"},
      "errors":[
        {"shape":"NotFoundException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ConflictException"},
        {"shape":"ThrottlingException"}
      ]
    },
    "ListCodeReviews":{
      "name":"ListCodeReviews",
      "http":{
        "method":"GET",
        "requestUri":"/codereviews"
      },
      "input":{"shape":"ListCodeReviewsRequest"},
      "output":{"shape":"ListCodeReviewsResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ThrottlingException"},
        {"shape":"AccessDeniedException"}
      ]
    },
    "ListRecommendationFeedback":{
      "name":"ListRecommendationFeedback",
      "http":{
        "method":"GET",
        "requestUri":"/feedback/{CodeReviewArn}/RecommendationFeedback"
      },
      "input":{"shape":"ListRecommendationFeedbackRequest"},
      "output":{"shape":"ListRecommendationFeedbackResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"}
      ]
    },
    "ListRecommendations":{
      "name":"ListRecommendations",
      "http":{
        "method":"GET",
        "requestUri":"/codereviews/{CodeReviewArn}/Recommendations"
      },
      "input":{"shape":"ListRecommendationsRequest"},
      "output":{"shape":"ListRecommendationsResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"}
      ]
    },
    "ListRepositoryAssociations":{
      "name":"ListRepositoryAssociations",
      "http":{
        "method":"GET",
        "requestUri":"/associations"
      },
      "input":{"shape":"ListRepositoryAssociationsRequest"},
      "output":{"shape":"ListRepositoryAssociationsResponse"},
      "errors":[
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"ThrottlingException"}
      ]
    },
    "PutRecommendationFeedback":{
      "name":"PutRecommendationFeedback",
      "http":{
        "method":"PUT",
        "requestUri":"/feedback"
      },
      "input":{"shape":"PutRecommendationFeedbackRequest"},
      "output":{"shape":"PutRecommendationFeedbackResponse"},
      "errors":[
        {"shape":"ResourceNotFoundException"},
        {"shape":"InternalServerException"},
        {"shape":"ValidationException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ThrottlingException"}
      ]
    }
  },
  "shapes":{
    "AccessDeniedException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "error":{"httpStatusCode":403},
      "exception":true
    },
    "Arn":{
      "type":"string",
      "max":1600,
      "min":1,
      "pattern":"^arn:aws[^:\\s]*:codeguru-reviewer:[^:\\s]+:[\\d]{12}:[a-z-]+:[\\w-]+$"
    },
    "AssociateRepositoryRequest":{
      "type":"structure",
      "required":["Repository"],
      "members":{
        "Repository":{"shape":"Repository"},
        "ClientRequestToken":{
          "shape":"ClientRequestToken",
          "idempotencyToken":true
        }
      }
    },
    "AssociateRepositoryResponse":{
      "type":"structure",
      "members":{
        "RepositoryAssociation":{"shape":"RepositoryAssociation"}
      }
    },
    "AssociationId":{
      "type":"string",
      "max":64,
      "min":1
    },
    "ClientRequestToken":{
      "type":"string",
      "max":64,
      "min":1,
      "pattern":"^[\\w-]+$"
    },
    "CodeCommitRepository":{
      "type":"structure",
      "required":["Name"],
      "members":{
        "Name":{"shape":"Name"}
      }
    },
    "CodeReview":{
      "type":"structure",
      "members":{
        "Name":{"shape":"Name"},
        "CodeReviewArn":{"shape":"Arn"},
        "RepositoryName":{"shape":"Name"},
        "Owner":{"shape":"Owner"},
        "ProviderType":{"shape":"ProviderType"},
        "State":{"shape":"JobState"},
        "StateReason":{"shape":"StateReason"},
        "CreatedTimeStamp":{"shape":"TimeStamp"},
        "LastUpdatedTimeStamp":{"shape":"TimeStamp"},
        "Type":{"shape":"Type"},
        "PullRequestId":{"shape":"PullRequestId"},
        "SourceCodeType":{"shape":"SourceCodeType"},
        "Metrics":{"shape":"Metrics"}
      }
    },
    "CodeReviewSummaries":{
      "type":"list",
      "member":{"shape":"CodeReviewSummary"}
    },
    "CodeReviewSummary":{
      "type":"structure",
      "members":{
        "Name":{"shape":"Name"},
        "CodeReviewArn":{"shape":"Arn"},
        "RepositoryName":{"shape":"Name"},
        "Owner":{"shape":"Owner"},
        "ProviderType":{"shape":"ProviderType"},
        "State":{"shape":"JobState"},
        "CreatedTimeStamp":{"shape":"TimeStamp"},
        "LastUpdatedTimeStamp":{"shape":"TimeStamp"},
        "Type":{"shape":"Type"},
        "PullRequestId":{"shape":"PullRequestId"},
        "MetricsSummary":{"shape":"MetricsSummary"}
      }
    },
    "CommitDiffSourceCodeType":{
      "type":"structure",
      "members":{
        "SourceCommit":{"shape":"CommitId"},
        "DestinationCommit":{"shape":"CommitId"}
      }
    },
    "CommitId":{
      "type":"string",
      "max":64,
      "min":6
    },
    "ConflictException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "error":{"httpStatusCode":409},
      "exception":true
    },
    "ConnectionArn":{
      "type":"string",
      "max":256,
      "min":0,
      "pattern":"arn:aws(-[\\w]+)*:.+:.+:[0-9]{12}:.+"
    },
    "DescribeCodeReviewRequest":{
      "type":"structure",
      "required":["CodeReviewArn"],
      "members":{
        "CodeReviewArn":{
          "shape":"Arn",
          "location":"uri",
          "locationName":"CodeReviewArn"
        }
      }
    },
    "DescribeCodeReviewResponse":{
      "type":"structure",
      "members":{
        "CodeReview":{"shape":"CodeReview"}
      }
    },
    "DescribeRecommendationFeedbackRequest":{
      "type":"structure",
      "required":[
        "CodeReviewArn",
        "RecommendationId"
      ],
      "members":{
        "CodeReviewArn":{
          "shape":"Arn",
          "location":"uri",
          "locationName":"CodeReviewArn"
        },
        "RecommendationId":{
          "shape":"RecommendationId",
          "location":"querystring",
          "locationName":"RecommendationId"
        },
        "UserId":{
          "shape":"UserId",
          "location":"querystring",
          "locationName":"UserId"
        }
      }
    },
    "DescribeRecommendationFeedbackResponse":{
      "type":"structure",
      "members":{
        "RecommendationFeedback":{"shape":"RecommendationFeedback"}
      }
    },
    "DescribeRepositoryAssociationRequest":{
      "type":"structure",
      "required":["AssociationArn"],
      "members":{
        "AssociationArn":{
          "shape":"Arn",
          "location":"uri",
          "locationName":"AssociationArn"
        }
      }
    },
    "DescribeRepositoryAssociationResponse":{
      "type":"structure",
      "members":{
        "RepositoryAssociation":{"shape":"RepositoryAssociation"}
      }
    },
    "DisassociateRepositoryRequest":{
      "type":"structure",
      "required":["AssociationArn"],
      "members":{
        "AssociationArn":{
          "shape":"Arn",
          "location":"uri",
          "locationName":"AssociationArn"
        }
      }
    },
    "DisassociateRepositoryResponse":{
      "type":"structure",
      "members":{
        "RepositoryAssociation":{"shape":"RepositoryAssociation"}
      }
    },
    "ErrorMessage":{"type":"string"},
    "FilePath":{
      "type":"string",
      "max":1024,
      "min":1
    },
    "FindingsCount":{"type":"long"},
    "InternalServerException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "error":{"httpStatusCode":500},
      "exception":true,
      "fault":true
    },
    "JobState":{
      "type":"string",
      "enum":[
        "Completed",
        "Pending",
        "Failed",
        "Deleting"
      ]
    },
    "JobStates":{
      "type":"list",
      "member":{"shape":"JobState"},
      "max":3,
      "min":1
    },
    "LineNumber":{"type":"integer"},
    "ListCodeReviewsMaxResults":{
      "type":"integer",
      "max":100,
      "min":1
    },
    "ListCodeReviewsRequest":{
      "type":"structure",
      "required":["Type"],
      "members":{
        "ProviderTypes":{
          "shape":"ProviderTypes",
          "location":"querystring",
          "locationName":"ProviderTypes"
        },
        "States":{
          "shape":"JobStates",
          "location":"querystring",
          "locationName":"States"
        },
        "RepositoryNames":{
          "shape":"RepositoryNames",
          "location":"querystring",
          "locationName":"RepositoryNames"
        },
        "Type":{
          "shape":"Type",
          "location":"querystring",
          "locationName":"Type"
        },
        "MaxResults":{
          "shape":"ListCodeReviewsMaxResults",
          "location":"querystring",
          "locationName":"MaxResults"
        },
        "NextToken":{
          "shape":"NextToken",
          "location":"querystring",
          "locationName":"NextToken"
        }
      }
    },
    "ListCodeReviewsResponse":{
      "type":"structure",
      "members":{
        "CodeReviewSummaries":{"shape":"CodeReviewSummaries"},
        "NextToken":{"shape":"NextToken"}
      }
    },
    "ListRecommendationFeedbackRequest":{
      "type":"structure",
      "required":["CodeReviewArn"],
      "members":{
        "NextToken":{
          "shape":"NextToken",
          "location":"querystring",
          "locationName":"NextToken"
        },
        "MaxResults":{
          "shape":"MaxResults",
          "location":"querystring",
          "locationName":"MaxResults"
        },
        "CodeReviewArn":{
          "shape":"Arn",
          "location":"uri",
          "locationName":"CodeReviewArn"
        },
        "UserIds":{
          "shape":"UserIds",
          "location":"querystring",
          "locationName":"UserIds"
        },
        "RecommendationIds":{
          "shape":"RecommendationIds",
          "location":"querystring",
          "locationName":"RecommendationIds"
        }
      }
    },
    "ListRecommendationFeedbackResponse":{
      "type":"structure",
      "members":{
        "RecommendationFeedbackSummaries":{"shape":"RecommendationFeedbackSummaries"},
        "NextToken":{"shape":"NextToken"}
      }
    },
    "ListRecommendationsRequest":{
      "type":"structure",
      "required":["CodeReviewArn"],
      "members":{
        "NextToken":{
          "shape":"NextToken",
          "location":"querystring",
          "locationName":"NextToken"
        },
        "MaxResults":{
          "shape":"MaxResults",
          "location":"querystring",
          "locationName":"MaxResults"
        },
        "CodeReviewArn":{
          "shape":"Arn",
          "location":"uri",
          "locationName":"CodeReviewArn"
        }
      }
    },
    "ListRecommendationsResponse":{
      "type":"structure",
      "members":{
        "RecommendationSummaries":{"shape":"RecommendationSummaries"},
        "NextToken":{"shape":"NextToken"}
      }
    },
    "ListRepositoryAssociationsRequest":{
      "type":"structure",
      "members":{
        "ProviderTypes":{
          "shape":"ProviderTypes",
          "location":"querystring",
          "locationName":"ProviderType"
        },
        "States":{
          "shape":"RepositoryAssociationStates",
          "location":"querystring",
          "locationName":"State"
        },
        "Names":{
          "shape":"Names",
          "location":"querystring",
          "locationName":"Name"
        },
        "Owners":{
          "shape":"Owners",
          "location":"querystring",
          "locationName":"Owner"
        },
        "MaxResults":{
          "shape":"MaxResults",
          "location":"querystring",
          "locationName":"MaxResults"
        },
        "NextToken":{
          "shape":"NextToken",
          "location":"querystring",
          "locationName":"NextToken"
        }
      }
    },
    "ListRepositoryAssociationsResponse":{
      "type":"structure",
      "members":{
        "RepositoryAssociationSummaries":{"shape":"RepositoryAssociationSummaries"},
        "NextToken":{"shape":"NextToken"}
      }
    },
    "MaxResults":{
      "type":"integer",
      "max":100,
      "min":1
    },
    "MeteredLinesOfCodeCount":{"type":"long"},
    "Metrics":{
      "type":"structure",
      "members":{
        "MeteredLinesOfCodeCount":{"shape":"MeteredLinesOfCodeCount"},
        "FindingsCount":{"shape":"FindingsCount"}
      }
    },
    "MetricsSummary":{
      "type":"structure",
      "members":{
        "MeteredLinesOfCodeCount":{"shape":"MeteredLinesOfCodeCount"},
        "FindingsCount":{"shape":"FindingsCount"}
      }
    },
    "Name":{
      "type":"string",
      "max":100,
      "min":1,
      "pattern":"^\\S[\\w.-]*$"
    },
    "Names":{
      "type":"list",
      "member":{"shape":"Name"},
      "max":3,
      "min":1
    },
    "NextToken":{
      "type":"string",
      "max":2048,
      "min":1
    },
    "NotFoundException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "error":{"httpStatusCode":404},
      "exception":true
    },
    "Owner":{
      "type":"string",
      "max":100,
      "min":1,
      "pattern":"^\\S(.*\\S)?$"
    },
    "Owners":{
      "type":"list",
      "member":{"shape":"Owner"},
      "max":3,
      "min":1
    },
    "ProviderType":{
      "type":"string",
      "enum":[
        "CodeCommit",
        "GitHub",
        "Bitbucket",
        "GitHubEnterpriseServer"
      ]
    },
    "ProviderTypes":{
      "type":"list",
      "member":{"shape":"ProviderType"},
      "max":3,
      "min":1
    },
    "PullRequestId":{
      "type":"string",
      "max":64,
      "min":1
    },
    "PutRecommendationFeedbackRequest":{
      "type":"structure",
      "required":[
        "CodeReviewArn",
        "RecommendationId",
        "Reactions"
      ],
      "members":{
        "CodeReviewArn":{"shape":"Arn"},
        "RecommendationId":{"shape":"RecommendationId"},
        "Reactions":{"shape":"Reactions"}
      }
    },
    "PutRecommendationFeedbackResponse":{
      "type":"structure",
      "members":{
      }
    },
    "Reaction":{
      "type":"string",
      "enum":[
        "ThumbsUp",
        "ThumbsDown"
      ]
    },
    "Reactions":{
      "type":"list",
      "member":{"shape":"Reaction"},
      "max":1,
      "min":0
    },
    "RecommendationFeedback":{
      "type":"structure",
      "members":{
        "CodeReviewArn":{"shape":"Arn"},
        "RecommendationId":{"shape":"RecommendationId"},
        "Reactions":{"shape":"Reactions"},
        "UserId":{"shape":"UserId"},
        "CreatedTimeStamp":{"shape":"TimeStamp"},
        "LastUpdatedTimeStamp":{"shape":"TimeStamp"}
      }
    },
    "RecommendationFeedbackSummaries":{
      "type":"list",
      "member":{"shape":"RecommendationFeedbackSummary"}
    },
    "RecommendationFeedbackSummary":{
      "type":"structure",
      "members":{
        "RecommendationId":{"shape":"RecommendationId"},
        "Reactions":{"shape":"Reactions"},
        "UserId":{"shape":"UserId"}
      }
    },
    "RecommendationId":{
      "type":"string",
      "max":64,
      "min":1
    },
    "RecommendationIds":{
      "type":"list",
      "member":{"shape":"RecommendationId"},
      "max":100,
      "min":1
    },
    "RecommendationSummaries":{
      "type":"list",
      "member":{"shape":"RecommendationSummary"}
    },
    "RecommendationSummary":{
      "type":"structure",
      "members":{
        "FilePath":{"shape":"FilePath"},
        "RecommendationId":{"shape":"RecommendationId"},
        "StartLine":{"shape":"LineNumber"},
        "EndLine":{"shape":"LineNumber"},
        "Description":{"shape":"Text"}
      }
    },
    "Repository":{
      "type":"structure",
      "members":{
        "CodeCommit":{"shape":"CodeCommitRepository"},
        "Bitbucket":{"shape":"ThirdPartySourceRepository"},
        "GitHubEnterpriseServer":{"shape":"ThirdPartySourceRepository"}
      }
    },
    "RepositoryAssociation":{
      "type":"structure",
      "members":{
        "AssociationId":{"shape":"AssociationId"},
        "AssociationArn":{"shape":"Arn"},
        "ConnectionArn":{"shape":"ConnectionArn"},
        "Name":{"shape":"Name"},
        "Owner":{"shape":"Owner"},
        "ProviderType":{"shape":"ProviderType"},
        "State":{"shape":"RepositoryAssociationState"},
        "StateReason":{"shape":"StateReason"},
        "LastUpdatedTimeStamp":{"shape":"TimeStamp"},
        "CreatedTimeStamp":{"shape":"TimeStamp"}
      }
    },
    "RepositoryAssociationState":{
      "type":"string",
      "enum":[
        "Associated",
        "Associating",
        "Failed",
        "Disassociating"
      ]
    },
    "RepositoryAssociationStates":{
      "type":"list",
      "member":{"shape":"RepositoryAssociationState"},
      "max":3,
      "min":1
    },
    "RepositoryAssociationSummaries":{
      "type":"list",
      "member":{"shape":"RepositoryAssociationSummary"}
    },
    "RepositoryAssociationSummary":{
      "type":"structure",
      "members":{
        "AssociationArn":{"shape":"Arn"},
        "ConnectionArn":{"shape":"ConnectionArn"},
        "LastUpdatedTimeStamp":{"shape":"TimeStamp"},
        "AssociationId":{"shape":"AssociationId"},
        "Name":{"shape":"Name"},
        "Owner":{"shape":"Owner"},
        "ProviderType":{"shape":"ProviderType"},
        "State":{"shape":"RepositoryAssociationState"}
      }
    },
    "RepositoryNames":{
      "type":"list",
      "member":{"shape":"Name"},
      "max":100,
      "min":1
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "error":{"httpStatusCode":404},
      "exception":true
    },
    "SourceCodeType":{
      "type":"structure",
      "members":{
        "CommitDiff":{"shape":"CommitDiffSourceCodeType"}
      }
    },
    "StateReason":{
      "type":"string",
      "max":256,
      "min":0
    },
    "Text":{
      "type":"string",
      "max":2048,
      "min":1
    },
    "ThirdPartySourceRepository":{
      "type":"structure",
      "required":[
        "Name",
        "ConnectionArn",
        "Owner"
      ],
      "members":{
        "Name":{"shape":"Name"},
        "ConnectionArn":{"shape":"ConnectionArn"},
        "Owner":{"shape":"Owner"}
      }
    },
    "ThrottlingException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "error":{"httpStatusCode":429},
      "exception":true
    },
    "TimeStamp":{"type":"timestamp"},
    "Type":{
      "type":"string",
      "enum":["PullRequest"]
    },
    "UserId":{
      "type":"string",
      "max":256,
      "min":1
    },
    "UserIds":{
      "type":"list",
      "member":{"shape":"UserId"},
      "max":100,
      "min":1
    },
    "ValidationException":{
      "type":"structure",
      "members":{
        "Message":{"shape":"ErrorMessage"}
      },
      "error":{"httpStatusCode":400},
      "exception":true
    }
  }
}
