{
  "version":"2.0",
  "metadata":{
    "apiVersion":"2018-05-10",
    "auth":["aws.auth#sigv4"],
    "endpointPrefix":"security-ir",
    "protocol":"rest-json",
    "protocols":["rest-json"],
    "serviceFullName":"Security Incident Response",
    "serviceId":"Security IR",
    "signatureVersion":"v4",
    "signingName":"security-ir",
    "uid":"security-ir-2018-05-10"
  },
  "operations":{
    "BatchGetMemberAccountDetails":{
      "name":"BatchGetMemberAccountDetails",
      "http":{
        "method":"POST",
        "requestUri":"/v1/membership/{membershipId}/batch-member-details",
        "responseCode":200
      },
      "input":{"shape":"BatchGetMemberAccountDetailsRequest"},
      "output":{"shape":"BatchGetMemberAccountDetailsResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permission to view an existing membership.</p>"
    },
    "CancelMembership":{
      "name":"CancelMembership",
      "http":{
        "method":"PUT",
        "requestUri":"/v1/membership/{membershipId}",
        "responseCode":200
      },
      "input":{"shape":"CancelMembershipRequest"},
      "output":{"shape":"CancelMembershipResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permissions to cancel an existing membership.</p>",
      "idempotent":true
    },
    "CloseCase":{
      "name":"CloseCase",
      "http":{
        "method":"POST",
        "requestUri":"/v1/cases/{caseId}/close-case",
        "responseCode":200
      },
      "input":{"shape":"CloseCaseRequest"},
      "output":{"shape":"CloseCaseResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permission to close an existing case.</p>"
    },
    "CreateCase":{
      "name":"CreateCase",
      "http":{
        "method":"POST",
        "requestUri":"/v1/create-case",
        "responseCode":201
      },
      "input":{"shape":"CreateCaseRequest"},
      "output":{"shape":"CreateCaseResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permission to create a new case.</p>",
      "idempotent":true
    },
    "CreateCaseComment":{
      "name":"CreateCaseComment",
      "http":{
        "method":"POST",
        "requestUri":"/v1/cases/{caseId}/create-comment",
        "responseCode":201
      },
      "input":{"shape":"CreateCaseCommentRequest"},
      "output":{"shape":"CreateCaseCommentResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permission to add a comment to an existing case.</p>",
      "idempotent":true
    },
    "CreateMembership":{
      "name":"CreateMembership",
      "http":{
        "method":"POST",
        "requestUri":"/v1/membership",
        "responseCode":201
      },
      "input":{"shape":"CreateMembershipRequest"},
      "output":{"shape":"CreateMembershipResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permissions to create a new membership.</p>",
      "idempotent":true
    },
    "GetCase":{
      "name":"GetCase",
      "http":{
        "method":"GET",
        "requestUri":"/v1/cases/{caseId}/get-case",
        "responseCode":200
      },
      "input":{"shape":"GetCaseRequest"},
      "output":{"shape":"GetCaseResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grant permission to view a designated case.</p>"
    },
    "GetCaseAttachmentDownloadUrl":{
      "name":"GetCaseAttachmentDownloadUrl",
      "http":{
        "method":"GET",
        "requestUri":"/v1/cases/{caseId}/get-presigned-url/{attachmentId}",
        "responseCode":201
      },
      "input":{"shape":"GetCaseAttachmentDownloadUrlRequest"},
      "output":{"shape":"GetCaseAttachmentDownloadUrlResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permission to obtain an Amazon S3 presigned URL to download an attachment.</p>"
    },
    "GetCaseAttachmentUploadUrl":{
      "name":"GetCaseAttachmentUploadUrl",
      "http":{
        "method":"POST",
        "requestUri":"/v1/cases/{caseId}/get-presigned-url",
        "responseCode":201
      },
      "input":{"shape":"GetCaseAttachmentUploadUrlRequest"},
      "output":{"shape":"GetCaseAttachmentUploadUrlResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permission to upload an attachment to a case.</p>",
      "idempotent":true
    },
    "GetMembership":{
      "name":"GetMembership",
      "http":{
        "method":"GET",
        "requestUri":"/v1/membership/{membershipId}",
        "responseCode":200
      },
      "input":{"shape":"GetMembershipRequest"},
      "output":{"shape":"GetMembershipResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permission to get details of a designated service membership.</p>"
    },
    "ListCaseEdits":{
      "name":"ListCaseEdits",
      "http":{
        "method":"POST",
        "requestUri":"/v1/cases/{caseId}/list-case-edits",
        "responseCode":200
      },
      "input":{"shape":"ListCaseEditsRequest"},
      "output":{"shape":"ListCaseEditsResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permissions to view the aidt log for edits made to a designated case.</p>"
    },
    "ListCases":{
      "name":"ListCases",
      "http":{
        "method":"POST",
        "requestUri":"/v1/list-cases",
        "responseCode":200
      },
      "input":{"shape":"ListCasesRequest"},
      "output":{"shape":"ListCasesResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permission to list all cases the requester has access to.</p>"
    },
    "ListComments":{
      "name":"ListComments",
      "http":{
        "method":"POST",
        "requestUri":"/v1/cases/{caseId}/list-comments",
        "responseCode":200
      },
      "input":{"shape":"ListCommentsRequest"},
      "output":{"shape":"ListCommentsResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permissions to list and view comments for a designated case.</p>"
    },
    "ListMemberships":{
      "name":"ListMemberships",
      "http":{
        "method":"POST",
        "requestUri":"/v1/memberships",
        "responseCode":200
      },
      "input":{"shape":"ListMembershipsRequest"},
      "output":{"shape":"ListMembershipsResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permission to query the memberships a principal has access to.</p>"
    },
    "ListTagsForResource":{
      "name":"ListTagsForResource",
      "http":{
        "method":"GET",
        "requestUri":"/v1/tags/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"ListTagsForResourceInput"},
      "output":{"shape":"ListTagsForResourceOutput"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permission to view currently configured tags on a resource.</p>"
    },
    "TagResource":{
      "name":"TagResource",
      "http":{
        "method":"POST",
        "requestUri":"/v1/tags/{resourceArn}",
        "responseCode":204
      },
      "input":{"shape":"TagResourceInput"},
      "output":{"shape":"TagResourceOutput"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permission to add a tag(s) to a designated resource.</p>"
    },
    "UntagResource":{
      "name":"UntagResource",
      "http":{
        "method":"DELETE",
        "requestUri":"/v1/tags/{resourceArn}",
        "responseCode":200
      },
      "input":{"shape":"UntagResourceInput"},
      "output":{"shape":"UntagResourceOutput"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ConflictException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permission to remove a tag(s) from a designate resource.</p>",
      "idempotent":true
    },
    "UpdateCase":{
      "name":"UpdateCase",
      "http":{
        "method":"POST",
        "requestUri":"/v1/cases/{caseId}/update-case",
        "responseCode":200
      },
      "input":{"shape":"UpdateCaseRequest"},
      "output":{"shape":"UpdateCaseResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permission to update an existing case.</p>"
    },
    "UpdateCaseComment":{
      "name":"UpdateCaseComment",
      "http":{
        "method":"PUT",
        "requestUri":"/v1/cases/{caseId}/update-case-comment/{commentId}",
        "responseCode":200
      },
      "input":{"shape":"UpdateCaseCommentRequest"},
      "output":{"shape":"UpdateCaseCommentResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permission to update an existing case comment.</p>",
      "idempotent":true
    },
    "UpdateCaseStatus":{
      "name":"UpdateCaseStatus",
      "http":{
        "method":"POST",
        "requestUri":"/v1/cases/{caseId}/update-case-status",
        "responseCode":201
      },
      "input":{"shape":"UpdateCaseStatusRequest"},
      "output":{"shape":"UpdateCaseStatusResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permission to update the status for a designated cases. Options include <code>Submitted | Detection and Analysis | Eradication, Containment and Recovery | Post-Incident Activities | Closed</code>. </p>"
    },
    "UpdateMembership":{
      "name":"UpdateMembership",
      "http":{
        "method":"PUT",
        "requestUri":"/v1/membership/{membershipId}/update-membership",
        "responseCode":200
      },
      "input":{"shape":"UpdateMembershipRequest"},
      "output":{"shape":"UpdateMembershipResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants access to UpdateMembership to change membership configuration.</p>",
      "idempotent":true
    },
    "UpdateResolverType":{
      "name":"UpdateResolverType",
      "http":{
        "method":"POST",
        "requestUri":"/v1/cases/{caseId}/update-resolver-type",
        "responseCode":200
      },
      "input":{"shape":"UpdateResolverTypeRequest"},
      "output":{"shape":"UpdateResolverTypeResponse"},
      "errors":[
        {"shape":"ServiceQuotaExceededException"},
        {"shape":"AccessDeniedException"},
        {"shape":"ValidationException"},
        {"shape":"SecurityIncidentResponseNotActiveException"},
        {"shape":"InternalServerException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"ThrottlingException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Grants permission to update the resolver type for a case.</p> <important> <p>This is a one-way action and cannot be reversed.</p> </important> <p>Options include self-supported &gt; AWS-supported.</p>"
    }
  },
  "shapes":{
    "AWSAccountId":{
      "type":"string",
      "max":12,
      "min":12,
      "pattern":"[0-9]{12}"
    },
    "AWSAccountIds":{
      "type":"list",
      "member":{"shape":"AWSAccountId"},
      "max":100,
      "min":1
    },
    "AccessDeniedException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p/>",
      "error":{
        "httpStatusCode":403,
        "senderFault":true
      },
      "exception":true
    },
    "Arn":{
      "type":"string",
      "max":1010,
      "min":12,
      "pattern":"arn:aws:security-ir:\\w+?-\\w+?-\\d+:[0-9]{12}:(membership/m-[a-z0-9]{10,32}|case/[0-9]{10})"
    },
    "AttachmentId":{
      "type":"string",
      "pattern":"[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}"
    },
    "AwsRegion":{
      "type":"string",
      "enum":[
        "af-south-1",
        "ap-east-1",
        "ap-northeast-1",
        "ap-northeast-2",
        "ap-northeast-3",
        "ap-south-1",
        "ap-south-2",
        "ap-southeast-1",
        "ap-southeast-2",
        "ap-southeast-3",
        "ap-southeast-4",
        "ap-southeast-5",
        "ca-central-1",
        "ca-west-1",
        "cn-north-1",
        "cn-northwest-1",
        "eu-central-1",
        "eu-central-2",
        "eu-north-1",
        "eu-south-1",
        "eu-south-2",
        "eu-west-1",
        "eu-west-2",
        "eu-west-3",
        "il-central-1",
        "me-central-1",
        "me-south-1",
        "sa-east-1",
        "us-east-1",
        "us-east-2",
        "us-west-1",
        "us-west-2"
      ]
    },
    "AwsService":{
      "type":"string",
      "max":50,
      "min":3,
      "pattern":"[a-zA-Z0-9 -.():]+"
    },
    "BatchGetMemberAccountDetailsRequest":{
      "type":"structure",
      "required":[
        "membershipId",
        "accountIds"
      ],
      "members":{
        "membershipId":{
          "shape":"MembershipId",
          "documentation":"<p>Required element used in combination with BatchGetMemberAccountDetails to identify the membership ID to query. </p>",
          "location":"uri",
          "locationName":"membershipId"
        },
        "accountIds":{
          "shape":"AWSAccountIds",
          "documentation":"<p>Optional element to query the membership relationship status to a provided list of account IDs.</p>"
        }
      }
    },
    "BatchGetMemberAccountDetailsResponse":{
      "type":"structure",
      "members":{
        "items":{
          "shape":"GetMembershipAccountDetailItems",
          "documentation":"<p>The response element providing responses for requests to GetMembershipAccountDetails.</p>"
        },
        "errors":{
          "shape":"GetMembershipAccountDetailErrors",
          "documentation":"<p>The response element providing errors messages for requests to GetMembershipAccountDetails.</p>"
        }
      }
    },
    "Boolean":{
      "type":"boolean",
      "box":true
    },
    "CancelMembershipRequest":{
      "type":"structure",
      "required":["membershipId"],
      "members":{
        "membershipId":{
          "shape":"MembershipId",
          "documentation":"<p>Required element used in combination with CancelMembershipRequest to identify the membership ID to cancel. </p>",
          "location":"uri",
          "locationName":"membershipId"
        }
      }
    },
    "CancelMembershipResponse":{
      "type":"structure",
      "required":["membershipId"],
      "members":{
        "membershipId":{
          "shape":"MembershipId",
          "documentation":"<p>The response element providing responses for requests to CancelMembershipRequest.</p>"
        }
      }
    },
    "CaseArn":{
      "type":"string",
      "max":80,
      "min":12,
      "pattern":"arn:aws:security-ir:\\w+?-\\w+?-\\d+:[0-9]{12}:case/[0-9]{10}"
    },
    "CaseAttachmentAttributes":{
      "type":"structure",
      "required":[
        "attachmentId",
        "fileName",
        "attachmentStatus",
        "creator",
        "createdDate"
      ],
      "members":{
        "attachmentId":{
          "shape":"AttachmentId",
          "documentation":"<p/>"
        },
        "fileName":{
          "shape":"FileName",
          "documentation":"<p/>"
        },
        "attachmentStatus":{
          "shape":"CaseAttachmentStatus",
          "documentation":"<p/>"
        },
        "creator":{
          "shape":"PrincipalId",
          "documentation":"<p/>"
        },
        "createdDate":{
          "shape":"Timestamp",
          "documentation":"<p/>"
        }
      },
      "documentation":"<p/>"
    },
    "CaseAttachmentStatus":{
      "type":"string",
      "enum":[
        "Verified",
        "Failed",
        "Pending"
      ]
    },
    "CaseAttachmentsList":{
      "type":"list",
      "member":{"shape":"CaseAttachmentAttributes"},
      "max":50,
      "min":0
    },
    "CaseDescription":{
      "type":"string",
      "max":8000,
      "min":1,
      "sensitive":true
    },
    "CaseEditAction":{
      "type":"string",
      "max":100,
      "min":1
    },
    "CaseEditItem":{
      "type":"structure",
      "members":{
        "eventTimestamp":{
          "shape":"Timestamp",
          "documentation":"<p/>"
        },
        "principal":{
          "shape":"String",
          "documentation":"<p/>"
        },
        "action":{
          "shape":"CaseEditAction",
          "documentation":"<p/>"
        },
        "message":{
          "shape":"CaseEditMessage",
          "documentation":"<p/>"
        }
      },
      "documentation":"<p/>"
    },
    "CaseEditItems":{
      "type":"list",
      "member":{"shape":"CaseEditItem"}
    },
    "CaseEditMessage":{
      "type":"string",
      "max":4096,
      "min":10
    },
    "CaseId":{
      "type":"string",
      "max":32,
      "min":10,
      "pattern":"\\d{10,32}.*"
    },
    "CaseStatus":{
      "type":"string",
      "enum":[
        "Submitted",
        "Acknowledged",
        "Detection and Analysis",
        "Containment, Eradication and Recovery",
        "Post-incident Activities",
        "Ready to Close",
        "Closed"
      ]
    },
    "CaseTitle":{
      "type":"string",
      "max":300,
      "min":1,
      "sensitive":true
    },
    "CloseCaseRequest":{
      "type":"structure",
      "required":["caseId"],
      "members":{
        "caseId":{
          "shape":"CaseId",
          "documentation":"<p>Required element used in combination with CloseCase to identify the case ID to close.</p>",
          "location":"uri",
          "locationName":"caseId"
        }
      }
    },
    "CloseCaseResponse":{
      "type":"structure",
      "members":{
        "caseStatus":{
          "shape":"CaseStatus",
          "documentation":"<p>A response element providing responses for requests to CloseCase. This element responds with the case status following the action. </p>"
        },
        "closedDate":{
          "shape":"Timestamp",
          "documentation":"<p>A response element providing responses for requests to CloseCase. This element responds with the case closure date following the action. </p>"
        }
      }
    },
    "ClosureCode":{
      "type":"string",
      "enum":[
        "Investigation Completed",
        "Not Resolved",
        "False Positive",
        "Duplicate"
      ]
    },
    "CommentBody":{
      "type":"string",
      "max":12000,
      "min":1,
      "sensitive":true
    },
    "CommentId":{
      "type":"string",
      "max":6,
      "min":6,
      "pattern":"\\d{6}"
    },
    "ConflictException":{
      "type":"structure",
      "required":[
        "message",
        "resourceId",
        "resourceType"
      ],
      "members":{
        "message":{"shape":"String"},
        "resourceId":{
          "shape":"String",
          "documentation":"<p>Element providing the ID of the resource affected.</p>"
        },
        "resourceType":{
          "shape":"String",
          "documentation":"<p>Element providing the type of the resource affected.</p>"
        }
      },
      "documentation":"<p/>",
      "error":{
        "httpStatusCode":409,
        "senderFault":true
      },
      "exception":true
    },
    "ContentLength":{
      "type":"long",
      "box":true,
      "max":104857600,
      "min":1
    },
    "CreateCaseCommentRequest":{
      "type":"structure",
      "required":[
        "caseId",
        "body"
      ],
      "members":{
        "caseId":{
          "shape":"CaseId",
          "documentation":"<p>Required element used in combination with CreateCaseComment to specify a case ID.</p>",
          "location":"uri",
          "locationName":"caseId"
        },
        "clientToken":{
          "shape":"CreateCaseCommentRequestClientTokenString",
          "documentation":"<p>An optional element used in combination with CreateCaseComment.</p>",
          "idempotencyToken":true
        },
        "body":{
          "shape":"CommentBody",
          "documentation":"<p>Required element used in combination with CreateCaseComment to add content for the new comment.</p>"
        }
      }
    },
    "CreateCaseCommentRequestClientTokenString":{
      "type":"string",
      "max":255,
      "min":1
    },
    "CreateCaseCommentResponse":{
      "type":"structure",
      "required":["commentId"],
      "members":{
        "commentId":{
          "shape":"CommentId",
          "documentation":"<p>Response element indicating the new comment ID.</p>"
        }
      }
    },
    "CreateCaseRequest":{
      "type":"structure",
      "required":[
        "resolverType",
        "title",
        "description",
        "engagementType",
        "reportedIncidentStartDate",
        "impactedAccounts",
        "watchers"
      ],
      "members":{
        "clientToken":{
          "shape":"CreateCaseRequestClientTokenString",
          "documentation":"<p>Required element used in combination with CreateCase.</p>",
          "idempotencyToken":true
        },
        "resolverType":{
          "shape":"ResolverType",
          "documentation":"<p>Required element used in combination with CreateCase to identify the resolver type. Available resolvers include self-supported | aws-supported. </p>"
        },
        "title":{
          "shape":"CaseTitle",
          "documentation":"<p>Required element used in combination with CreateCase to provide a title for the new case.</p>"
        },
        "description":{
          "shape":"CaseDescription",
          "documentation":"<p>Required element used in combination with CreateCase to provide a description for the new case.</p>"
        },
        "engagementType":{
          "shape":"EngagementType",
          "documentation":"<p>Required element used in combination with CreateCase to provide an engagement type for the new cases. Available engagement types include Security Incident | Investigation </p>"
        },
        "reportedIncidentStartDate":{
          "shape":"Timestamp",
          "documentation":"<p>Required element used in combination with CreateCase to provide an initial start date for the unauthorized activity. </p>"
        },
        "impactedAccounts":{
          "shape":"ImpactedAccounts",
          "documentation":"<p>Required element used in combination with CreateCase to provide a list of impacted accounts.</p>"
        },
        "watchers":{
          "shape":"Watchers",
          "documentation":"<p>Required element used in combination with CreateCase to provide a list of entities to receive notifications for case updates. </p>"
        },
        "threatActorIpAddresses":{
          "shape":"ThreatActorIpList",
          "documentation":"<p>An optional element used in combination with CreateCase to provide a list of suspicious internet protocol addresses associated with unauthorized activity. </p>"
        },
        "impactedServices":{
          "shape":"ImpactedServicesList",
          "documentation":"<p>An optional element used in combination with CreateCase to provide a list of services impacted.</p>"
        },
        "impactedAwsRegions":{
          "shape":"ImpactedAwsRegionList",
          "documentation":"<p>An optional element used in combination with CreateCase to provide a list of impacted regions.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>An optional element used in combination with CreateCase to add customer specified tags to a case.</p>"
        }
      }
    },
    "CreateCaseRequestClientTokenString":{
      "type":"string",
      "max":255,
      "min":1
    },
    "CreateCaseResponse":{
      "type":"structure",
      "required":["caseId"],
      "members":{
        "caseId":{
          "shape":"CaseId",
          "documentation":"<p>A response element providing responses for requests to CreateCase. This element responds with the case ID. </p>"
        }
      }
    },
    "CreateMembershipRequest":{
      "type":"structure",
      "required":[
        "membershipName",
        "incidentResponseTeam"
      ],
      "members":{
        "clientToken":{
          "shape":"CreateMembershipRequestClientTokenString",
          "documentation":"<p>An optional element used in combination with CreateMembership.</p>",
          "idempotencyToken":true
        },
        "membershipName":{
          "shape":"MembershipName",
          "documentation":"<p>Required element use in combination with CreateMembership to create a name for the membership.</p>"
        },
        "incidentResponseTeam":{
          "shape":"IncidentResponseTeam",
          "documentation":"<p>Required element use in combination with CreateMembership to add customer incident response team members and trusted partners to the membership. </p>"
        },
        "optInFeatures":{
          "shape":"OptInFeatures",
          "documentation":"<p>Optional element to enable the monitoring and investigation opt-in features for the service.</p>"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>Optional element for customer configured tags.</p>"
        }
      }
    },
    "CreateMembershipRequestClientTokenString":{
      "type":"string",
      "max":255,
      "min":1
    },
    "CreateMembershipResponse":{
      "type":"structure",
      "required":["membershipId"],
      "members":{
        "membershipId":{
          "shape":"MembershipId",
          "documentation":"<p>Response element for CreateMembership providing the newly created membership ID.</p>"
        }
      }
    },
    "CustomerType":{
      "type":"string",
      "enum":[
        "Standalone",
        "Organization"
      ]
    },
    "EmailAddress":{
      "type":"string",
      "max":254,
      "min":6,
      "pattern":"[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*",
      "sensitive":true
    },
    "EngagementType":{
      "type":"string",
      "enum":[
        "Security Incident",
        "Investigation"
      ]
    },
    "FileName":{
      "type":"string",
      "max":255,
      "min":1,
      "pattern":"[a-zA-Z0-9._-]+",
      "sensitive":true
    },
    "GetCaseAttachmentDownloadUrlRequest":{
      "type":"structure",
      "required":[
        "caseId",
        "attachmentId"
      ],
      "members":{
        "caseId":{
          "shape":"CaseId",
          "documentation":"<p>Required element for GetCaseAttachmentDownloadUrl to identify the case ID for downloading an attachment from. </p>",
          "location":"uri",
          "locationName":"caseId"
        },
        "attachmentId":{
          "shape":"AttachmentId",
          "documentation":"<p>Required element for GetCaseAttachmentDownloadUrl to identify the attachment ID for downloading an attachment. </p>",
          "location":"uri",
          "locationName":"attachmentId"
        }
      }
    },
    "GetCaseAttachmentDownloadUrlResponse":{
      "type":"structure",
      "required":["attachmentPresignedUrl"],
      "members":{
        "attachmentPresignedUrl":{
          "shape":"Url",
          "documentation":"<p>Response element providing the Amazon S3 presigned URL to download an attachment.</p>"
        }
      }
    },
    "GetCaseAttachmentUploadUrlRequest":{
      "type":"structure",
      "required":[
        "caseId",
        "fileName",
        "contentLength"
      ],
      "members":{
        "caseId":{
          "shape":"CaseId",
          "documentation":"<p>Required element for GetCaseAttachmentUploadUrl to identify the case ID for uploading an attachment to. </p>",
          "location":"uri",
          "locationName":"caseId"
        },
        "fileName":{
          "shape":"FileName",
          "documentation":"<p>Required element for GetCaseAttachmentUploadUrl to identify the file name of the attachment to upload. </p>"
        },
        "contentLength":{
          "shape":"ContentLength",
          "documentation":"<p>Required element for GetCaseAttachmentUploadUrl to identify the size od the file attachment.</p>"
        },
        "clientToken":{
          "shape":"GetCaseAttachmentUploadUrlRequestClientTokenString",
          "documentation":"<p>Optional element for customer provided token.</p>",
          "idempotencyToken":true
        }
      }
    },
    "GetCaseAttachmentUploadUrlRequestClientTokenString":{
      "type":"string",
      "max":255,
      "min":1
    },
    "GetCaseAttachmentUploadUrlResponse":{
      "type":"structure",
      "required":["attachmentPresignedUrl"],
      "members":{
        "attachmentPresignedUrl":{
          "shape":"Url",
          "documentation":"<p>Response element providing the Amazon S3 presigned UTL to upload the attachment.</p>"
        }
      }
    },
    "GetCaseRequest":{
      "type":"structure",
      "required":["caseId"],
      "members":{
        "caseId":{
          "shape":"CaseId",
          "documentation":"<p>Required element for GetCase to identify the requested case ID.</p>",
          "location":"uri",
          "locationName":"caseId"
        }
      }
    },
    "GetCaseResponse":{
      "type":"structure",
      "members":{
        "title":{
          "shape":"CaseTitle",
          "documentation":"<p>Response element for GetCase that provides the case title.</p>"
        },
        "caseArn":{
          "shape":"CaseArn",
          "documentation":"<p>Response element for GetCase that provides the case ARN</p>"
        },
        "description":{
          "shape":"CaseDescription",
          "documentation":"<p>Response element for GetCase that provides contents of the case description.</p>"
        },
        "caseStatus":{
          "shape":"CaseStatus",
          "documentation":"<p>Response element for GetCase that provides the case status. Options for statuses include <code>Submitted | Detection and Analysis | Eradication, Containment and Recovery | Post-Incident Activities | Closed </code> </p>"
        },
        "engagementType":{
          "shape":"EngagementType",
          "documentation":"<p>Response element for GetCase that provides the engagement type. Options for engagement type include <code>Active Security Event | Investigations</code> </p>"
        },
        "reportedIncidentStartDate":{
          "shape":"Timestamp",
          "documentation":"<p>Response element for GetCase that provides the customer provided incident start date.</p>"
        },
        "actualIncidentStartDate":{
          "shape":"Timestamp",
          "documentation":"<p>Response element for GetCase that provides the actual incident start date as identified by data analysis during the investigation. </p>"
        },
        "impactedAwsRegions":{
          "shape":"ImpactedAwsRegionList",
          "documentation":"<p>Response element for GetCase that provides the impacted regions.</p>"
        },
        "threatActorIpAddresses":{
          "shape":"ThreatActorIpList",
          "documentation":"<p>Response element for GetCase that provides a list of suspicious IP addresses associated with unauthorized activity. </p>"
        },
        "pendingAction":{
          "shape":"PendingAction",
          "documentation":"<p>Response element for GetCase that provides identifies the case is waiting on customer input.</p>"
        },
        "impactedAccounts":{
          "shape":"ImpactedAccounts",
          "documentation":"<p>Response element for GetCase that provides a list of impacted accounts.</p>"
        },
        "watchers":{
          "shape":"Watchers",
          "documentation":"<p>Response element for GetCase that provides a list of Watchers added to the case.</p>"
        },
        "createdDate":{
          "shape":"Timestamp",
          "documentation":"<p>Response element for GetCase that provides the date the case was created.</p>"
        },
        "lastUpdatedDate":{
          "shape":"Timestamp",
          "documentation":"<p>Response element for GetCase that provides the date a case was last modified.</p>"
        },
        "closureCode":{
          "shape":"ClosureCode",
          "documentation":"<p>Response element for GetCase that provides the summary code for why a case was closed.</p>"
        },
        "resolverType":{
          "shape":"ResolverType",
          "documentation":"<p>Response element for GetCase that provides the current resolver types. Options include <code> self-supported | AWS-supported</code>. </p>"
        },
        "impactedServices":{
          "shape":"ImpactedServicesList",
          "documentation":"<p>Response element for GetCase that provides a list of impacted services.</p>"
        },
        "caseAttachments":{
          "shape":"CaseAttachmentsList",
          "documentation":"<p>Response element for GetCase that provides a list of current case attachments.</p>"
        },
        "closedDate":{
          "shape":"Timestamp",
          "documentation":"<p>Response element for GetCase that provides the date a specified case was closed.</p>"
        }
      }
    },
    "GetMembershipAccountDetailError":{
      "type":"structure",
      "required":[
        "accountId",
        "error",
        "message"
      ],
      "members":{
        "accountId":{
          "shape":"AWSAccountId",
          "documentation":"<p/>"
        },
        "error":{
          "shape":"String",
          "documentation":"<p/>"
        },
        "message":{
          "shape":"String",
          "documentation":"<p/>"
        }
      },
      "documentation":"<p/>"
    },
    "GetMembershipAccountDetailErrors":{
      "type":"list",
      "member":{"shape":"GetMembershipAccountDetailError"},
      "max":100,
      "min":0
    },
    "GetMembershipAccountDetailItem":{
      "type":"structure",
      "members":{
        "accountId":{
          "shape":"AWSAccountId",
          "documentation":"<p/>"
        },
        "relationshipStatus":{
          "shape":"MembershipAccountRelationshipStatus",
          "documentation":"<p/>"
        },
        "relationshipType":{
          "shape":"MembershipAccountRelationshipType",
          "documentation":"<p/>"
        }
      },
      "documentation":"<p/>"
    },
    "GetMembershipAccountDetailItems":{
      "type":"list",
      "member":{"shape":"GetMembershipAccountDetailItem"},
      "max":100,
      "min":0
    },
    "GetMembershipRequest":{
      "type":"structure",
      "required":["membershipId"],
      "members":{
        "membershipId":{
          "shape":"MembershipId",
          "documentation":"<p>Required element for GetMembership to identify the membership ID to query.</p>",
          "location":"uri",
          "locationName":"membershipId"
        }
      }
    },
    "GetMembershipResponse":{
      "type":"structure",
      "required":["membershipId"],
      "members":{
        "membershipId":{
          "shape":"MembershipId",
          "documentation":"<p>Response element for GetMembership that provides the queried membership ID.</p>"
        },
        "accountId":{
          "shape":"AWSAccountId",
          "documentation":"<p>Response element for GetMembership that provides the configured account for managing the membership. </p>"
        },
        "region":{
          "shape":"AwsRegion",
          "documentation":"<p>Response element for GetMembership that provides the configured region for managing the membership.</p>"
        },
        "membershipName":{
          "shape":"MembershipName",
          "documentation":"<p>Response element for GetMembership that provides the configured membership name.</p>"
        },
        "membershipArn":{
          "shape":"MembershipArn",
          "documentation":"<p>Response element for GetMembership that provides the membership ARN.</p>"
        },
        "membershipStatus":{
          "shape":"MembershipStatus",
          "documentation":"<p>Response element for GetMembership that provides the current membership status.</p>"
        },
        "membershipActivationTimestamp":{
          "shape":"Timestamp",
          "documentation":"<p>Response element for GetMembership that provides the configured membership activation timestamp.</p>"
        },
        "membershipDeactivationTimestamp":{
          "shape":"Timestamp",
          "documentation":"<p>Response element for GetMembership that provides the configured membership name deactivation timestamp. </p>"
        },
        "customerType":{
          "shape":"CustomerType",
          "documentation":"<p>Response element for GetMembership that provides the configured membership type. Options include <code> Standalone | Organizations</code>. </p>"
        },
        "numberOfAccountsCovered":{
          "shape":"Long",
          "documentation":"<p>Response element for GetMembership that provides the number of accounts in the membership.</p>"
        },
        "incidentResponseTeam":{
          "shape":"IncidentResponseTeam",
          "documentation":"<p>Response element for GetMembership that provides the configured membership incident response team members. </p>"
        },
        "optInFeatures":{
          "shape":"OptInFeatures",
          "documentation":"<p>Response element for GetMembership that provides the if opt-in features have been enabled.</p>"
        }
      }
    },
    "IPAddress":{
      "type":"string",
      "pattern":"(?:(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))|(?:(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4})|(?:(?:[A-F0-9]{1,4}:){6}(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))",
      "sensitive":true
    },
    "ImpactedAccounts":{
      "type":"list",
      "member":{"shape":"AWSAccountId"},
      "max":200,
      "min":0
    },
    "ImpactedAwsRegion":{
      "type":"structure",
      "required":["region"],
      "members":{
        "region":{
          "shape":"AwsRegion",
          "documentation":"<p/>"
        }
      },
      "documentation":"<p/>"
    },
    "ImpactedAwsRegionList":{
      "type":"list",
      "member":{"shape":"ImpactedAwsRegion"},
      "max":50,
      "min":0
    },
    "ImpactedServicesList":{
      "type":"list",
      "member":{"shape":"AwsService"},
      "max":600,
      "min":0
    },
    "IncidentResponder":{
      "type":"structure",
      "required":[
        "name",
        "jobTitle",
        "email"
      ],
      "members":{
        "name":{
          "shape":"IncidentResponderName",
          "documentation":"<p/>"
        },
        "jobTitle":{
          "shape":"JobTitle",
          "documentation":"<p/>"
        },
        "email":{
          "shape":"EmailAddress",
          "documentation":"<p/>"
        }
      },
      "documentation":"<p/>"
    },
    "IncidentResponderName":{
      "type":"string",
      "max":50,
      "min":3,
      "sensitive":true
    },
    "IncidentResponseTeam":{
      "type":"list",
      "member":{"shape":"IncidentResponder"},
      "max":10,
      "min":2
    },
    "Integer":{
      "type":"integer",
      "box":true
    },
    "InternalServerException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"},
        "retryAfterSeconds":{
          "shape":"Integer",
          "documentation":"<p>Element providing advice to clients on when the call can be safely retried.</p>",
          "location":"header",
          "locationName":"Retry-After"
        }
      },
      "documentation":"<p/>",
      "error":{"httpStatusCode":500},
      "exception":true,
      "fault":true,
      "retryable":{"throttling":false}
    },
    "InvalidTokenException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p/>",
      "error":{
        "httpStatusCode":423,
        "senderFault":true
      },
      "exception":true,
      "retryable":{"throttling":false}
    },
    "JobTitle":{
      "type":"string",
      "max":50,
      "min":1,
      "sensitive":true
    },
    "ListCaseEditsRequest":{
      "type":"structure",
      "required":["caseId"],
      "members":{
        "nextToken":{
          "shape":"ListCaseEditsRequestNextTokenString",
          "documentation":"<p>Optional element for a customer provided token.</p>"
        },
        "maxResults":{
          "shape":"ListCaseEditsRequestMaxResultsInteger",
          "documentation":"<p>Optional element to identify how many results to obtain. There is a maximum value of 25.</p>"
        },
        "caseId":{
          "shape":"CaseId",
          "documentation":"<p>Required element used with ListCaseEdits to identify the case to query.</p>",
          "location":"uri",
          "locationName":"caseId"
        }
      }
    },
    "ListCaseEditsRequestMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":25,
      "min":1
    },
    "ListCaseEditsRequestNextTokenString":{
      "type":"string",
      "max":2000,
      "min":0
    },
    "ListCaseEditsResponse":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"String",
          "documentation":"<p>Optional element.</p>"
        },
        "items":{
          "shape":"CaseEditItems",
          "documentation":"<p>Response element for ListCaseEdits that includes the action, eventtimestamp, message, and principal for the response. </p>"
        },
        "total":{
          "shape":"Integer",
          "documentation":"<p>Response element for ListCaseEdits that identifies the total number of edits.</p>"
        }
      }
    },
    "ListCasesItem":{
      "type":"structure",
      "required":["caseId"],
      "members":{
        "caseId":{
          "shape":"CaseId",
          "documentation":"<p/>"
        },
        "lastUpdatedDate":{
          "shape":"Timestamp",
          "documentation":"<p/>"
        },
        "title":{
          "shape":"CaseTitle",
          "documentation":"<p/>"
        },
        "caseArn":{
          "shape":"CaseArn",
          "documentation":"<p/>"
        },
        "engagementType":{
          "shape":"EngagementType",
          "documentation":"<p/>"
        },
        "caseStatus":{
          "shape":"CaseStatus",
          "documentation":"<p/>"
        },
        "createdDate":{
          "shape":"Timestamp",
          "documentation":"<p/>"
        },
        "closedDate":{
          "shape":"Timestamp",
          "documentation":"<p/>"
        },
        "resolverType":{
          "shape":"ResolverType",
          "documentation":"<p/>"
        },
        "pendingAction":{
          "shape":"PendingAction",
          "documentation":"<p/>"
        }
      },
      "documentation":"<p/>"
    },
    "ListCasesItems":{
      "type":"list",
      "member":{"shape":"ListCasesItem"}
    },
    "ListCasesRequest":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"ListCasesRequestNextTokenString",
          "documentation":"<p>Optional element.</p>"
        },
        "maxResults":{
          "shape":"ListCasesRequestMaxResultsInteger",
          "documentation":"<p>Optional element for ListCases to limit the number of responses.</p>"
        }
      }
    },
    "ListCasesRequestMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":25,
      "min":1
    },
    "ListCasesRequestNextTokenString":{
      "type":"string",
      "max":2000,
      "min":0
    },
    "ListCasesResponse":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"String",
          "documentation":"<p>Optional element.</p>"
        },
        "items":{
          "shape":"ListCasesItems",
          "documentation":"<p>Response element for ListCases that includes caseARN, caseID, caseStatus, closedDate, createdDate, engagementType, lastUpdatedDate, pendingAction, resolverType, and title for each response. </p>"
        },
        "total":{
          "shape":"Long",
          "documentation":"<p>Response element for ListCases providing the total number of responses.</p>"
        }
      }
    },
    "ListCommentsItem":{
      "type":"structure",
      "required":["commentId"],
      "members":{
        "commentId":{
          "shape":"CommentId",
          "documentation":"<p/>"
        },
        "createdDate":{
          "shape":"Timestamp",
          "documentation":"<p/>"
        },
        "lastUpdatedDate":{
          "shape":"Timestamp",
          "documentation":"<p/>"
        },
        "creator":{
          "shape":"PrincipalId",
          "documentation":"<p/>"
        },
        "lastUpdatedBy":{
          "shape":"PrincipalId",
          "documentation":"<p/>"
        },
        "body":{
          "shape":"CommentBody",
          "documentation":"<p/>"
        }
      },
      "documentation":"<p/>"
    },
    "ListCommentsItems":{
      "type":"list",
      "member":{"shape":"ListCommentsItem"}
    },
    "ListCommentsRequest":{
      "type":"structure",
      "required":["caseId"],
      "members":{
        "nextToken":{
          "shape":"ListCommentsRequestNextTokenString",
          "documentation":"<p>Optional element.</p>"
        },
        "maxResults":{
          "shape":"ListCommentsRequestMaxResultsInteger",
          "documentation":"<p>Optional element for ListComments to limit the number of responses.</p>"
        },
        "caseId":{
          "shape":"CaseId",
          "documentation":"<p>Required element for ListComments to designate the case to query.</p>",
          "location":"uri",
          "locationName":"caseId"
        }
      }
    },
    "ListCommentsRequestMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":25,
      "min":1
    },
    "ListCommentsRequestNextTokenString":{
      "type":"string",
      "max":2000,
      "min":0
    },
    "ListCommentsResponse":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"String",
          "documentation":"<p>Optional request elements.</p>"
        },
        "items":{
          "shape":"ListCommentsItems",
          "documentation":"<p>Response element for ListComments providing the body, commentID, createDate, creator, lastUpdatedBy and lastUpdatedDate for each response. </p>"
        },
        "total":{
          "shape":"Integer",
          "documentation":"<p>Response element for ListComments identifying the number of responses.</p>"
        }
      }
    },
    "ListMembershipItem":{
      "type":"structure",
      "required":["membershipId"],
      "members":{
        "membershipId":{
          "shape":"MembershipId",
          "documentation":"<p/>"
        },
        "accountId":{
          "shape":"AWSAccountId",
          "documentation":"<p/>"
        },
        "region":{
          "shape":"AwsRegion",
          "documentation":"<p/>"
        },
        "membershipArn":{
          "shape":"MembershipArn",
          "documentation":"<p/>"
        },
        "membershipStatus":{
          "shape":"MembershipStatus",
          "documentation":"<p/>"
        }
      },
      "documentation":"<p/>"
    },
    "ListMembershipItems":{
      "type":"list",
      "member":{"shape":"ListMembershipItem"}
    },
    "ListMembershipsRequest":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"ListMembershipsRequestNextTokenString",
          "documentation":"<p>Optional element.</p>"
        },
        "maxResults":{
          "shape":"ListMembershipsRequestMaxResultsInteger",
          "documentation":"<p>Request element for ListMemberships to limit the number of responses.</p>"
        }
      }
    },
    "ListMembershipsRequestMaxResultsInteger":{
      "type":"integer",
      "box":true,
      "max":25,
      "min":1
    },
    "ListMembershipsRequestNextTokenString":{
      "type":"string",
      "max":2000,
      "min":0
    },
    "ListMembershipsResponse":{
      "type":"structure",
      "members":{
        "nextToken":{
          "shape":"String",
          "documentation":"<p>Optional element.</p>"
        },
        "items":{
          "shape":"ListMembershipItems",
          "documentation":"<p>Request element for ListMemberships including the accountID, membershipARN, membershipID, membershipStatus, and region for each response. </p>"
        }
      }
    },
    "ListTagsForResourceInput":{
      "type":"structure",
      "required":["resourceArn"],
      "members":{
        "resourceArn":{
          "shape":"Arn",
          "documentation":"<p>Required element for ListTagsForResource to provide the ARN to identify a specific resource.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        }
      }
    },
    "ListTagsForResourceOutput":{
      "type":"structure",
      "required":["tags"],
      "members":{
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>Response element for ListTagsForResource providing content for each configured tag.</p>"
        }
      }
    },
    "Long":{
      "type":"long",
      "box":true
    },
    "MembershipAccountRelationshipStatus":{
      "type":"string",
      "enum":[
        "Associated",
        "Disassociated"
      ]
    },
    "MembershipAccountRelationshipType":{
      "type":"string",
      "enum":["Organization"]
    },
    "MembershipArn":{
      "type":"string",
      "max":80,
      "min":12,
      "pattern":"arn:aws:security-ir:\\w+?-\\w+?-\\d+:[0-9]{12}:membership/m-[a-z0-9]{10,32}"
    },
    "MembershipId":{
      "type":"string",
      "max":34,
      "min":12,
      "pattern":"m-[a-z0-9]{10,32}"
    },
    "MembershipName":{
      "type":"string",
      "max":50,
      "min":3,
      "sensitive":true
    },
    "MembershipStatus":{
      "type":"string",
      "enum":[
        "Active",
        "Cancelled",
        "Terminated"
      ]
    },
    "OptInFeature":{
      "type":"structure",
      "required":[
        "featureName",
        "isEnabled"
      ],
      "members":{
        "featureName":{
          "shape":"OptInFeatureName",
          "documentation":"<p/>"
        },
        "isEnabled":{
          "shape":"Boolean",
          "documentation":"<p/>"
        }
      },
      "documentation":"<p/>"
    },
    "OptInFeatureName":{
      "type":"string",
      "enum":["Triage"]
    },
    "OptInFeatures":{
      "type":"list",
      "member":{"shape":"OptInFeature"},
      "max":2,
      "min":1
    },
    "PendingAction":{
      "type":"string",
      "enum":[
        "Customer",
        "None"
      ]
    },
    "PersonName":{
      "type":"string",
      "max":50,
      "min":1,
      "sensitive":true
    },
    "PrincipalId":{
      "type":"string",
      "pattern":".*(^internal:midway:([a-z]{3,8}|svc-mw-[0-9]{12}[a-zA-Z0-9-]{5,20})$)|(^external:aws:\\d{12}$).*"
    },
    "ResolverType":{
      "type":"string",
      "enum":[
        "AWS",
        "Self"
      ]
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p/>",
      "error":{
        "httpStatusCode":404,
        "senderFault":true
      },
      "exception":true
    },
    "SecurityIncidentResponseNotActiveException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"}
      },
      "documentation":"<p/>",
      "error":{
        "httpStatusCode":400,
        "senderFault":true
      },
      "exception":true
    },
    "SelfManagedCaseStatus":{
      "type":"string",
      "enum":[
        "Submitted",
        "Detection and Analysis",
        "Containment, Eradication and Recovery",
        "Post-incident Activities"
      ]
    },
    "ServiceQuotaExceededException":{
      "type":"structure",
      "required":[
        "message",
        "resourceId",
        "resourceType",
        "serviceCode",
        "quotaCode"
      ],
      "members":{
        "message":{"shape":"String"},
        "resourceId":{
          "shape":"String",
          "documentation":"<p>Element that provides the ID of the resource affected.</p>"
        },
        "resourceType":{
          "shape":"String",
          "documentation":"<p>Element that provides the type of the resource affected.</p>"
        },
        "serviceCode":{
          "shape":"String",
          "documentation":"<p>Element that provides the originating service who made the call.</p>"
        },
        "quotaCode":{
          "shape":"String",
          "documentation":"<p>Element that provides the quota that was exceeded.</p>"
        }
      },
      "documentation":"<p/>",
      "error":{
        "httpStatusCode":402,
        "senderFault":true
      },
      "exception":true
    },
    "String":{"type":"string"},
    "TagKey":{
      "type":"string",
      "max":128,
      "min":1
    },
    "TagKeys":{
      "type":"list",
      "member":{"shape":"TagKey"}
    },
    "TagMap":{
      "type":"map",
      "key":{"shape":"TagKey"},
      "value":{"shape":"TagValue"},
      "max":200,
      "min":0
    },
    "TagResourceInput":{
      "type":"structure",
      "required":[
        "resourceArn",
        "tags"
      ],
      "members":{
        "resourceArn":{
          "shape":"Arn",
          "documentation":"<p>Required element for TagResource to identify the ARN for the resource to add a tag to.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "tags":{
          "shape":"TagMap",
          "documentation":"<p>Required element for ListTagsForResource to provide the content for a tag.</p>"
        }
      }
    },
    "TagResourceOutput":{
      "type":"structure",
      "members":{
      }
    },
    "TagValue":{
      "type":"string",
      "max":256,
      "min":0
    },
    "ThreatActorIp":{
      "type":"structure",
      "required":["ipAddress"],
      "members":{
        "ipAddress":{
          "shape":"IPAddress",
          "documentation":"<p/>"
        },
        "userAgent":{
          "shape":"UserAgent",
          "documentation":"<p/>"
        }
      },
      "documentation":"<p/>"
    },
    "ThreatActorIpList":{
      "type":"list",
      "member":{"shape":"ThreatActorIp"},
      "max":200,
      "min":0
    },
    "ThrottlingException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{"shape":"String"},
        "serviceCode":{
          "shape":"String",
          "documentation":"<p>Element providing the service code of the originating service.</p>"
        },
        "quotaCode":{
          "shape":"String",
          "documentation":"<p>Element providing the quota of the originating service.</p>"
        },
        "retryAfterSeconds":{
          "shape":"Integer",
          "documentation":"<p>Element providing advice to clients on when the call can be safely retried.</p>",
          "location":"header",
          "locationName":"Retry-After"
        }
      },
      "documentation":"<p/>",
      "error":{
        "httpStatusCode":429,
        "senderFault":true
      },
      "exception":true,
      "retryable":{"throttling":true}
    },
    "Timestamp":{"type":"timestamp"},
    "UntagResourceInput":{
      "type":"structure",
      "required":[
        "resourceArn",
        "tagKeys"
      ],
      "members":{
        "resourceArn":{
          "shape":"Arn",
          "documentation":"<p>Required element for UnTagResource to identify the ARN for the resource to remove a tag from.</p>",
          "location":"uri",
          "locationName":"resourceArn"
        },
        "tagKeys":{
          "shape":"TagKeys",
          "documentation":"<p>Required element for UnTagResource to identify tag to remove.</p>",
          "location":"querystring",
          "locationName":"tagKeys"
        }
      }
    },
    "UntagResourceOutput":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateCaseCommentRequest":{
      "type":"structure",
      "required":[
        "caseId",
        "commentId",
        "body"
      ],
      "members":{
        "caseId":{
          "shape":"CaseId",
          "documentation":"<p>Required element for UpdateCaseComment to identify the case ID containing the comment to be updated. </p>",
          "location":"uri",
          "locationName":"caseId"
        },
        "commentId":{
          "shape":"CommentId",
          "documentation":"<p>Required element for UpdateCaseComment to identify the case ID to be updated.</p>",
          "location":"uri",
          "locationName":"commentId"
        },
        "body":{
          "shape":"CommentBody",
          "documentation":"<p>Required element for UpdateCaseComment to identify the content for the comment to be updated.</p>"
        }
      }
    },
    "UpdateCaseCommentResponse":{
      "type":"structure",
      "required":["commentId"],
      "members":{
        "commentId":{
          "shape":"CommentId",
          "documentation":"<p>Response element for UpdateCaseComment providing the updated comment ID.</p>"
        },
        "body":{
          "shape":"CommentBody",
          "documentation":"<p>Response element for UpdateCaseComment providing the updated comment content.</p>"
        }
      }
    },
    "UpdateCaseRequest":{
      "type":"structure",
      "required":["caseId"],
      "members":{
        "caseId":{
          "shape":"CaseId",
          "documentation":"<p>Required element for UpdateCase to identify the case ID for updates.</p>",
          "location":"uri",
          "locationName":"caseId"
        },
        "title":{
          "shape":"CaseTitle",
          "documentation":"<p>Optional element for UpdateCase to provide content for the title field.</p>"
        },
        "description":{
          "shape":"CaseDescription",
          "documentation":"<p>Optional element for UpdateCase to provide content for the description field.</p>"
        },
        "reportedIncidentStartDate":{
          "shape":"Timestamp",
          "documentation":"<p>Optional element for UpdateCase to provide content for the customer reported incident start date field. </p>"
        },
        "actualIncidentStartDate":{
          "shape":"Timestamp",
          "documentation":"<p>Optional element for UpdateCase to provide content for the incident start date field.</p>"
        },
        "engagementType":{
          "shape":"EngagementType",
          "documentation":"<p>Optional element for UpdateCase to provide content for the engagement type field. <code>Available engagement types include Security Incident | Investigation</code>. </p>"
        },
        "watchersToAdd":{
          "shape":"Watchers",
          "documentation":"<p>Optional element for UpdateCase to provide content to add additional watchers to a case.</p>"
        },
        "watchersToDelete":{
          "shape":"Watchers",
          "documentation":"<p>Optional element for UpdateCase to provide content to remove existing watchers from a case.</p>"
        },
        "threatActorIpAddressesToAdd":{
          "shape":"ThreatActorIpList",
          "documentation":"<p>Optional element for UpdateCase to provide content to add additional suspicious IP addresses related to a case. </p>"
        },
        "threatActorIpAddressesToDelete":{
          "shape":"ThreatActorIpList",
          "documentation":"<p>Optional element for UpdateCase to provide content to remove suspicious IP addresses from a case.</p>"
        },
        "impactedServicesToAdd":{
          "shape":"ImpactedServicesList",
          "documentation":"<p>Optional element for UpdateCase to provide content to add services impacted.</p>"
        },
        "impactedServicesToDelete":{
          "shape":"ImpactedServicesList",
          "documentation":"<p>Optional element for UpdateCase to provide content to remove services impacted.</p>"
        },
        "impactedAwsRegionsToAdd":{
          "shape":"ImpactedAwsRegionList",
          "documentation":"<p>Optional element for UpdateCase to provide content to add regions impacted.</p>"
        },
        "impactedAwsRegionsToDelete":{
          "shape":"ImpactedAwsRegionList",
          "documentation":"<p>Optional element for UpdateCase to provide content to remove regions impacted.</p>"
        },
        "impactedAccountsToAdd":{
          "shape":"ImpactedAccounts",
          "documentation":"<p>Optional element for UpdateCase to provide content to add accounts impacted.</p>"
        },
        "impactedAccountsToDelete":{
          "shape":"ImpactedAccounts",
          "documentation":"<p>Optional element for UpdateCase to provide content to add accounts impacted.</p>"
        }
      }
    },
    "UpdateCaseResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateCaseStatusRequest":{
      "type":"structure",
      "required":[
        "caseId",
        "caseStatus"
      ],
      "members":{
        "caseId":{
          "shape":"CaseId",
          "documentation":"<p>Required element for UpdateCaseStatus to identify the case to update.</p>",
          "location":"uri",
          "locationName":"caseId"
        },
        "caseStatus":{
          "shape":"SelfManagedCaseStatus",
          "documentation":"<p>Required element for UpdateCaseStatus to identify the status for a case. Options include <code>Submitted | Detection and Analysis | Containment, Eradication and Recovery | Post-incident Activities</code>. </p>"
        }
      }
    },
    "UpdateCaseStatusResponse":{
      "type":"structure",
      "members":{
        "caseStatus":{
          "shape":"SelfManagedCaseStatus",
          "documentation":"<p>Response element for UpdateCaseStatus showing the newly configured status.</p>"
        }
      }
    },
    "UpdateMembershipRequest":{
      "type":"structure",
      "required":["membershipId"],
      "members":{
        "membershipId":{
          "shape":"MembershipId",
          "documentation":"<p>Required element for UpdateMembership to identify the membership to update.</p>",
          "location":"uri",
          "locationName":"membershipId"
        },
        "membershipName":{
          "shape":"MembershipName",
          "documentation":"<p>Optional element for UpdateMembership to update the membership name.</p>"
        },
        "incidentResponseTeam":{
          "shape":"IncidentResponseTeam",
          "documentation":"<p>Optional element for UpdateMembership to update the membership name.</p>"
        },
        "optInFeatures":{
          "shape":"OptInFeatures",
          "documentation":"<p>Optional element for UpdateMembership to enable or disable opt-in features for the service.</p>"
        }
      }
    },
    "UpdateMembershipResponse":{
      "type":"structure",
      "members":{
      }
    },
    "UpdateResolverTypeRequest":{
      "type":"structure",
      "required":[
        "caseId",
        "resolverType"
      ],
      "members":{
        "caseId":{
          "shape":"CaseId",
          "documentation":"<p>Required element for UpdateResolverType to identify the case to update.</p>",
          "location":"uri",
          "locationName":"caseId"
        },
        "resolverType":{
          "shape":"ResolverType",
          "documentation":"<p>Required element for UpdateResolverType to identify the new resolver.</p>"
        }
      }
    },
    "UpdateResolverTypeResponse":{
      "type":"structure",
      "required":["caseId"],
      "members":{
        "caseId":{
          "shape":"CaseId",
          "documentation":"<p>Response element for UpdateResolver identifying the case ID being updated.</p>"
        },
        "caseStatus":{
          "shape":"CaseStatus",
          "documentation":"<p>Response element for UpdateResolver identifying the current status of the case.</p>"
        },
        "resolverType":{
          "shape":"ResolverType",
          "documentation":"<p>Response element for UpdateResolver identifying the current resolver of the case.</p>"
        }
      }
    },
    "Url":{
      "type":"string",
      "pattern":"https?://(?:www.)?[a-zA-Z0-9@:._+~#=-]{2,256}\\.[a-z]{2,6}\\b(?:[-a-zA-Z0-9@:%_+.~#?&/=]{0,2048})",
      "sensitive":true
    },
    "UserAgent":{
      "type":"string",
      "max":500,
      "min":1
    },
    "ValidationException":{
      "type":"structure",
      "required":[
        "message",
        "reason"
      ],
      "members":{
        "message":{"shape":"String"},
        "reason":{
          "shape":"ValidationExceptionReason",
          "documentation":"<p>Element that provides the reason the request failed validation.</p>"
        },
        "fieldList":{
          "shape":"ValidationExceptionFieldList",
          "documentation":"<p>Element that provides the list of field(s) that caused the error, if applicable.</p>"
        }
      },
      "documentation":"<p/>",
      "error":{
        "httpStatusCode":400,
        "senderFault":true
      },
      "exception":true
    },
    "ValidationExceptionField":{
      "type":"structure",
      "required":[
        "name",
        "message"
      ],
      "members":{
        "name":{
          "shape":"String",
          "documentation":"<p/>"
        },
        "message":{
          "shape":"String",
          "documentation":"<p/>"
        }
      },
      "documentation":"<p/>"
    },
    "ValidationExceptionFieldList":{
      "type":"list",
      "member":{"shape":"ValidationExceptionField"}
    },
    "ValidationExceptionReason":{
      "type":"string",
      "enum":[
        "UNKNOWN_OPERATION",
        "CANNOT_PARSE",
        "FIELD_VALIDATION_FAILED",
        "OTHER"
      ]
    },
    "Watcher":{
      "type":"structure",
      "required":["email"],
      "members":{
        "email":{
          "shape":"EmailAddress",
          "documentation":"<p/>"
        },
        "name":{
          "shape":"PersonName",
          "documentation":"<p/>"
        },
        "jobTitle":{
          "shape":"JobTitle",
          "documentation":"<p/>"
        }
      },
      "documentation":"<p/>"
    },
    "Watchers":{
      "type":"list",
      "member":{"shape":"Watcher"},
      "max":30,
      "min":0
    }
  },
  "documentation":"<p>This guide provides documents the action and response elements for customer use of the service.</p>"
}
