{
  "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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Provides information on whether the supplied account IDs are associated with a membership.</p> <note> <p> AWS account ID's may appear less than 12 characters and need to be zero-prepended. An example would be <code>123123123</code> which is nine digits, and with zero-prepend would be <code>000123123123</code>. Not zero-prepending to 12 digits could result in errors. </p> </note>"
    },
    "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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Cancels 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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Closes 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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Creates 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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Adds 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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Creates 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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Returns the attributes of a 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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Returns a Pre-Signed URL for uploading attachments into a case.</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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Uploads 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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Returns the attributes of a 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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Views the case history 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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Lists 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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Returns 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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Returns the memberships that the calling principal can access.</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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Returns 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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Adds 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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Removes 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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Updates 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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Updates 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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Updates the state transitions for a designated cases.</p> <p> <b>Self-managed</b>: the following states are available for self-managed cases. </p> <ul> <li> <p>Submitted → Detection and Analysis</p> </li> <li> <p>Detection and Analysis → Containment, Eradication, and Recovery</p> </li> <li> <p>Detection and Analysis → Post-incident Activities</p> </li> <li> <p>Containment, Eradication, and Recovery → Detection and Analysis</p> </li> <li> <p>Containment, Eradication, and Recovery → Post-incident Activities</p> </li> <li> <p>Post-incident Activities → Containment, Eradication, and Recovery</p> </li> <li> <p>Post-incident Activities → Detection and Analysis</p> </li> <li> <p>Any → Closed</p> </li> </ul> <p> <b>AWS supported</b>: You must use the <code>CloseCase</code> API to close. </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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Updates 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":"ThrottlingException"},
        {"shape":"ConflictException"},
        {"shape":"ResourceNotFoundException"},
        {"shape":"InvalidTokenException"}
      ],
      "documentation":"<p>Updates the resolver type for a case.</p> <important> <p>This is a one-way action and cannot be reversed.</p> </important>"
    }
  },
  "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>The ID of the resource which lead to the access denial.</p>"
        }
      },
      "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-east-2",
        "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",
        "ap-southeast-7",
        "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",
        "mx-central-1",
        "sa-east-1",
        "us-east-1",
        "us-east-2",
        "us-west-1",
        "us-west-2"
      ]
    },
    "AwsService":{
      "type":"string",
      "max":50,
      "min":2,
      "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> <note> <p> AWS account ID's may appear less than 12 characters and need to be zero-prepended. An example would be <code>123123123</code> which is nine digits, and with zero-prepend would be <code>000123123123</code>. Not zero-prepending to 12 digits could result in errors. </p> </note>"
        }
      }
    },
    "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 error 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 <code>Closed </code> if successful. </p>"
        },
        "closedDate":{
          "shape":"Timestamp",
          "documentation":"<p>A response element providing responses for requests to CloseCase. This element responds with the ISO-8601 formatted timestamp of the moment when the case was closed. </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",
          "documentation":"<p>The exception message.</p>"
        },
        "resourceId":{
          "shape":"String",
          "documentation":"<p>The ID of the conflicting resource.</p>"
        },
        "resourceType":{
          "shape":"String",
          "documentation":"<p>The type of the conflicting resource.</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><note> <p>The <code>clientToken</code> field is an idempotency key used to ensure that repeated attempts for a single action will be ignored by the server during retries. A caller supplied unique ID (typically a UUID) should be provided. </p> </note></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><note> <p>The <code>clientToken</code> field is an idempotency key used to ensure that repeated attempts for a single action will be ignored by the server during retries. A caller supplied unique ID (typically a UUID) should be provided. </p> </note></p>",
          "idempotencyToken":true
        },
        "resolverType":{
          "shape":"ResolverType",
          "documentation":"<p>Required element used in combination with CreateCase to identify the resolver type.</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</p> <p>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> <note> <p> AWS account ID's may appear less than 12 characters and need to be zero-prepended. An example would be <code>123123123</code> which is nine digits, and with zero-prepend would be <code>000123123123</code>. Not zero-prepending to 12 digits could result in errors. </p> </note>"
        },
        "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><note> <p>The <code>clientToken</code> field is an idempotency key used to ensure that repeated attempts for a single action will be ignored by the server during retries. A caller supplied unique ID (typically a UUID) should be provided. </p> </note></p>",
          "idempotencyToken":true
        },
        "membershipName":{
          "shape":"MembershipName",
          "documentation":"<p>Required element used in combination with CreateMembership to create a name for the membership.</p>"
        },
        "incidentResponseTeam":{
          "shape":"IncidentResponseTeam",
          "documentation":"<p>Required element used 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>"
        },
        "coverEntireOrganization":{
          "shape":"Boolean",
          "documentation":"<p>The <code>coverEntireOrganization</code> parameter is a boolean flag that determines whether the membership should be applied to the entire Amazon Web Services Organization. When set to true, the membership will be created for all accounts within the organization. When set to false, the membership will only be created for specified accounts. </p> <p>This parameter is optional. If not specified, the default value is false.</p> <ul> <li> <p>If set to <i>true</i>: The membership will automatically include all existing and future accounts in the Amazon Web Services Organization. </p> </li> <li> <p>If set to <i>false</i>: The membership will only apply to explicitly specified accounts. </p> </li> </ul>"
        }
      }
    },
    "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. </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 of the file attachment.</p>"
        },
        "clientToken":{
          "shape":"GetCaseAttachmentUploadUrlRequestClientTokenString",
          "documentation":"<p><note> <p>The <code>clientToken</code> field is an idempotency key used to ensure that repeated attempts for a single action will be ignored by the server during retries. A caller supplied unique ID (typically a UUID) should be provided. </p> </note></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 URL 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 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.</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 account configured to manage the membership.</p>"
        },
        "region":{
          "shape":"AwsRegion",
          "documentation":"<p>Response element for GetMembership that provides the region configured to manage 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>"
        },
        "membershipAccountsConfigurations":{
          "shape":"MembershipAccountsConfigurations",
          "documentation":"<p>The <code>membershipAccountsConfigurations</code> field contains the configuration details for member accounts within the Amazon Web Services Organizations membership structure. </p> <p>This field returns a structure containing information about:</p> <ul> <li> <p>Account configurations for member accounts</p> </li> <li> <p>Membership settings and preferences</p> </li> <li> <p>Account-level permissions and roles</p> </li> </ul>"
        }
      }
    },
    "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",
          "documentation":"<p>The exception message.</p>"
        },
        "retryAfterSeconds":{
          "shape":"Integer",
          "documentation":"<p>The number of seconds after which to retry the request.</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>The exception message.</p>"
        }
      },
      "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>An optional string that, if supplied, must be copied from the output of a previous call to ListCaseEdits. When provided in this manner, the API fetches the next page of results. </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>An optional string that, if supplied on subsequent calls to ListCaseEdits, allows the API to fetch the next page of results. </p>"
        },
        "items":{
          "shape":"CaseEditItems",
          "documentation":"<p>Response element for ListCaseEdits that includes the action, event timestamp, 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>An optional string that, if supplied, must be copied from the output of a previous call to ListCases. When provided in this manner, the API fetches the next page of results. </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>An optional string that, if supplied on subsequent calls to ListCases, allows the API to fetch the next page of results. </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>An optional string that, if supplied, must be copied from the output of a previous call to ListComments. When provided in this manner, the API fetches the next page of results. </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>An optional string that, if supplied on subsequent calls to ListComments, allows the API to fetch the next page of results. </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>An optional string that, if supplied, must be copied from the output of a previous call to ListMemberships. When provided in this manner, the API fetches the next page of results. </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>An optional string that, if supplied on subsequent calls to ListMemberships, allows the API to fetch the next page of results. </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",
        "Unassociated"
      ]
    },
    "MembershipAccountRelationshipType":{
      "type":"string",
      "enum":[
        "Organization",
        "Unrelated"
      ]
    },
    "MembershipAccountsConfigurations":{
      "type":"structure",
      "members":{
        "coverEntireOrganization":{
          "shape":"Boolean",
          "documentation":"<p>The <code>coverEntireOrganization</code> field is a boolean value that determines whether the membership configuration applies to all accounts within an Amazon Web Services Organization. </p> <p>When set to <code>true</code>, the configuration will be applied across all accounts in the organization. When set to <code>false</code>, the configuration will only apply to specifically designated accounts under the AWS Organizational Units specificied. </p>"
        },
        "organizationalUnits":{
          "shape":"OrganizationalUnits",
          "documentation":"<p>A list of organizational unit IDs that follow the pattern <code>ou-[0-9a-z]{4,32}-[a-z0-9]{8,32}</code>. These IDs represent the organizational units within an Amazon Web Services Organizations structure that are covered by the membership. </p> <p>Each organizational unit ID in the list must:</p> <ul> <li> <p>Begin with the prefix 'ou-'</p> </li> <li> <p>Contain between 4 and 32 alphanumeric characters in the first segment</p> </li> <li> <p>Contain between 8 and 32 alphanumeric characters in the second segment</p> </li> </ul>"
        }
      },
      "documentation":"<p>The <code>MembershipAccountsConfigurations</code> structure defines the configuration settings for managing membership accounts withinAmazon Web Services. </p> <p>This structure contains settings that determine how member accounts are configured and managed within your organization, including: </p> <ul> <li> <p>Account configuration preferences</p> </li> <li> <p>Membership validation rules</p> </li> <li> <p>Account access settings</p> </li> </ul> <p>You can use this structure to define and maintain standardized configurations across multiple member accounts in your organization. </p>"
    },
    "MembershipAccountsConfigurationsUpdate":{
      "type":"structure",
      "members":{
        "coverEntireOrganization":{
          "shape":"Boolean",
          "documentation":"<p>The <code>coverEntireOrganization</code> field is a boolean value that determines whether the membership configuration should be applied across the entire Amazon Web Services Organization. </p> <p>When set to <code>true</code>, the configuration will be applied to all accounts within the organization. When set to <code>false</code>, the configuration will only apply to specifically designated accounts. </p>"
        },
        "organizationalUnitsToAdd":{
          "shape":"MembershipAccountsConfigurationsUpdateOrganizationalUnitsToAddList",
          "documentation":"<p>A list of organizational unit IDs to add to the membership configuration. Each organizational unit ID must match the pattern <code>ou-[0-9a-z]{4,32}-[a-z0-9]{8,32}</code>. </p> <p>The list must contain between 1 and 5 organizational unit IDs.</p>"
        },
        "organizationalUnitsToRemove":{
          "shape":"MembershipAccountsConfigurationsUpdateOrganizationalUnitsToRemoveList",
          "documentation":"<p>A list of organizational unit IDs to remove from the membership configuration. Each organizational unit ID must match the pattern <code>ou-[0-9a-z]{4,32}-[a-z0-9]{8,32}</code>. </p> <p>The list must contain between 1 and 5 organizational unit IDs per invocation of the API request.</p>"
        }
      },
      "documentation":"<p>The <code>MembershipAccountsConfigurationsUpdate</code>structure represents the configuration updates for member accounts within an Amazon Web Services organization. </p> <p>This structure is used to modify existing account configurations and settings for members in the organization. When applying updates, ensure all required fields are properly specified to maintain account consistency. </p> <p>Key considerations when using this structure:</p> <ul> <li> <p>All configuration changes are validated before being applied</p> </li> <li> <p>Updates are processed asynchronously in the background</p> </li> <li> <p>Configuration changes may take several minutes to propagate across all affected accounts</p> </li> </ul>"
    },
    "MembershipAccountsConfigurationsUpdateOrganizationalUnitsToAddList":{
      "type":"list",
      "member":{"shape":"OrganizationalUnitId"},
      "max":5,
      "min":1
    },
    "MembershipAccountsConfigurationsUpdateOrganizationalUnitsToRemoveList":{
      "type":"list",
      "member":{"shape":"OrganizationalUnitId"},
      "max":5,
      "min":1
    },
    "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
    },
    "OrganizationalUnitId":{
      "type":"string",
      "pattern":"ou-[0-9a-z]{4,32}-[a-z0-9]{8,32}"
    },
    "OrganizationalUnits":{
      "type":"list",
      "member":{"shape":"OrganizationalUnitId"}
    },
    "PendingAction":{
      "type":"string",
      "enum":[
        "Customer",
        "None"
      ]
    },
    "PersonName":{
      "type":"string",
      "max":50,
      "min":1,
      "sensitive":true
    },
    "PrincipalId":{
      "type":"string",
      "pattern":".*((^AWS Responder)|(^\\d{12}$)|(^security-ir.amazonaws.com)).*"
    },
    "ResolverType":{
      "type":"string",
      "enum":[
        "AWS",
        "Self"
      ]
    },
    "ResourceNotFoundException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{
          "shape":"String",
          "documentation":"<p>The exception message.</p>"
        }
      },
      "documentation":"<p/>",
      "error":{
        "httpStatusCode":404,
        "senderFault":true
      },
      "exception":true
    },
    "SecurityIncidentResponseNotActiveException":{
      "type":"structure",
      "required":["message"],
      "members":{
        "message":{
          "shape":"String",
          "documentation":"<p>The exception message.</p>"
        }
      },
      "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",
          "documentation":"<p>The exception message.</p>"
        },
        "resourceId":{
          "shape":"String",
          "documentation":"<p>The ID of the requested resource which lead to the service quota exception.</p>"
        },
        "resourceType":{
          "shape":"String",
          "documentation":"<p>The type of the requested resource which lead to the service quota exception.</p>"
        },
        "serviceCode":{
          "shape":"String",
          "documentation":"<p>The service code of the quota.</p>"
        },
        "quotaCode":{
          "shape":"String",
          "documentation":"<p>The code of the quota.</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",
          "documentation":"<p>The exception message.</p>"
        },
        "serviceCode":{
          "shape":"String",
          "documentation":"<p>The service code of the exception.</p>"
        },
        "quotaCode":{
          "shape":"String",
          "documentation":"<p>The quota code of the exception.</p>"
        },
        "retryAfterSeconds":{
          "shape":"Integer",
          "documentation":"<p>The number of seconds after which to retry the request.</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> <note> <p> AWS account ID's may appear less than 12 characters and need to be zero-prepended. An example would be <code>123123123</code> which is nine digits, and with zero-prepend would be <code>000123123123</code>. Not zero-prepending to 12 digits could result in errors. </p> </note>"
        },
        "impactedAccountsToDelete":{
          "shape":"ImpactedAccounts",
          "documentation":"<p>Optional element for UpdateCase to provide content to add accounts impacted.</p> <note> <p> AWS account ID's may appear less than 12 characters and need to be zero-prepended. An example would be <code>123123123</code> which is nine digits, and with zero-prepend would be <code>000123123123</code>. Not zero-prepending to 12 digits could result in errors. </p> </note>"
        }
      }
    },
    "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>"
        },
        "membershipAccountsConfigurationsUpdate":{
          "shape":"MembershipAccountsConfigurationsUpdate",
          "documentation":"<p>The <code>membershipAccountsConfigurationsUpdate</code> field in the <code>UpdateMembershipRequest</code> structure allows you to update the configuration settings for accounts within a membership. </p> <p>This field is optional and contains a structure of type <code>MembershipAccountsConfigurationsUpdate </code> that specifies the updated account configurations for the membership. </p>"
        },
        "undoMembershipCancellation":{
          "shape":"Boolean",
          "documentation":"<p>The <code>undoMembershipCancellation</code> parameter is a boolean flag that indicates whether to reverse a previously requested membership cancellation. When set to true, this will revoke the cancellation request and maintain the membership status. </p> <p>This parameter is optional and can be used in scenarios where you need to restore a membership that was marked for cancellation but hasn't been fully terminated yet. </p> <ul> <li> <p>If set to <code>true</code>, the cancellation request will be revoked </p> </li> <li> <p>If set to <code>false</code> the service will throw a ValidationException. </p> </li> </ul>"
        }
      }
    },
    "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",
          "documentation":"<p>The exception message.</p>"
        },
        "reason":{
          "shape":"ValidationExceptionReason",
          "documentation":"<p>The reason for the exception.</p>"
        },
        "fieldList":{
          "shape":"ValidationExceptionFieldList",
          "documentation":"<p>The fields which lead to the exception.</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 documents the action and response elements for use of the service.</p>"
}
