From b6a11e418acf06d33471f7af67df01e52d631892 Mon Sep 17 00:00:00 2001 From: aws-sdk-cpp-automation Date: Wed, 18 Sep 2024 18:14:29 +0000 Subject: [PATCH] This release extends the GetReservationPurchaseRecommendation API to support recommendations for Amazon DynamoDB reservations. Add `launchType` and `sourceIPs` fields to GuardDuty findings. Updates Amazon RDS documentation with information upgrading snapshots with unsupported engine versions for RDS for MySQL and RDS for PostgreSQL. Added new APIs for enabling, disabling, and describing access to the AWS Directory Service Data API Added new AWS Directory Service Data API, enabling you to manage data stored in AWS Directory Service directories. This includes APIs for creating, reading, updating, and deleting directory users, groups, and group memberships. Introduce a new RuleSet condition evaluation, where customers can set up a StringExpression with a MimeHeader condition. This condition will perform the necessary validation based on the X-header provided by customers. Added SSE-KMS support for directory buckets. --- VERSION | 2 +- .../include/aws/ce/model/Anomaly.h | 4 +- .../aws/ce/model/DynamoDBCapacityDetails.h | 79 + .../aws/ce/model/GetDimensionValuesRequest.h | 71 +- .../ReservationPurchaseRecommendationDetail.h | 106 +- .../aws/ce/model/ReservedCapacityDetails.h | 61 + .../include/aws/ce/model/RootCause.h | 11 +- .../source/model/DynamoDBCapacityDetails.cpp | 73 + ...eservationPurchaseRecommendationDetail.cpp | 72 +- .../source/model/ReservedCapacityDetails.cpp | 59 + .../CMakeLists.txt | 76 + .../DirectoryServiceDataClient.h | 608 ++++++ .../DirectoryServiceDataEndpointProvider.h | 61 + .../DirectoryServiceDataEndpointRules.h | 23 + .../DirectoryServiceDataErrorMarshaller.h | 23 + .../DirectoryServiceDataErrors.h | 74 + .../DirectoryServiceDataRequest.h | 46 + .../DirectoryServiceDataServiceClientModel.h | 160 ++ .../DirectoryServiceData_EXPORTS.h | 32 + .../model/AccessDeniedException.h | 80 + .../model/AccessDeniedReason.h | 32 + .../model/AddGroupMemberRequest.h | 145 ++ .../model/AddGroupMemberResult.h | 52 + .../model/AttributeValue.h | 116 ++ .../model/CreateGroupRequest.h | 166 ++ .../model/CreateGroupResult.h | 97 + .../model/CreateUserRequest.h | 185 ++ .../model/CreateUserResult.h | 97 + .../model/DeleteGroupRequest.h | 106 ++ .../model/DeleteGroupResult.h | 52 + .../model/DeleteUserRequest.h | 106 ++ .../model/DeleteUserResult.h | 52 + .../model/DescribeGroupRequest.h | 121 ++ .../model/DescribeGroupResult.h | 183 ++ .../model/DescribeUserRequest.h | 122 ++ .../model/DescribeUserResult.h | 225 +++ .../model/DirectoryUnavailableException.h | 76 + .../model/DirectoryUnavailableReason.h | 34 + .../model/DisableUserRequest.h | 106 ++ .../model/DisableUserResult.h | 52 + .../aws/directory-service-data/model/Group.h | 158 ++ .../directory-service-data/model/GroupScope.h | 33 + .../model/GroupSummary.h | 115 ++ .../directory-service-data/model/GroupType.h | 31 + .../model/ListGroupMembersRequest.h | 150 ++ .../model/ListGroupMembersResult.h | 130 ++ .../model/ListGroupsForMemberRequest.h | 152 ++ .../model/ListGroupsForMemberResult.h | 130 ++ .../model/ListGroupsRequest.h | 113 ++ .../model/ListGroupsResult.h | 115 ++ .../model/ListUsersRequest.h | 113 ++ .../model/ListUsersResult.h | 115 ++ .../aws/directory-service-data/model/Member.h | 95 + .../directory-service-data/model/MemberType.h | 32 + .../model/RemoveGroupMemberRequest.h | 143 ++ .../model/RemoveGroupMemberResult.h | 52 + .../model/SearchGroupsRequest.h | 156 ++ .../model/SearchGroupsResult.h | 115 ++ .../model/SearchUsersRequest.h | 156 ++ .../model/SearchUsersResult.h | 115 ++ .../model/ThrottlingException.h | 74 + .../model/UpdateGroupRequest.h | 184 ++ .../model/UpdateGroupResult.h | 52 + .../directory-service-data/model/UpdateType.h | 32 + .../model/UpdateUserRequest.h | 203 ++ .../model/UpdateUserResult.h | 52 + .../aws/directory-service-data/model/User.h | 205 ++ .../model/UserSummary.h | 126 ++ .../model/ValidationException.h | 76 + .../model/ValidationExceptionReason.h | 44 + .../source/DirectoryServiceDataClient.cpp | 727 +++++++ .../DirectoryServiceDataEndpointProvider.cpp | 16 + .../DirectoryServiceDataEndpointRules.cpp | 176 ++ .../DirectoryServiceDataErrorMarshaller.cpp | 22 + .../source/DirectoryServiceDataErrors.cpp | 76 + .../source/DirectoryServiceDataRequest.cpp | 14 + .../source/model/AccessDeniedException.cpp | 73 + .../source/model/AccessDeniedReason.cpp | 79 + .../source/model/AddGroupMemberRequest.cpp | 72 + .../source/model/AddGroupMemberResult.cpp | 42 + .../source/model/AttributeValue.cpp | 111 ++ .../source/model/CreateGroupRequest.cpp | 84 + .../source/model/CreateGroupResult.cpp | 60 + .../source/model/CreateUserRequest.cpp | 91 + .../source/model/CreateUserResult.cpp | 60 + .../source/model/DeleteGroupRequest.cpp | 58 + .../source/model/DeleteGroupResult.cpp | 42 + .../source/model/DeleteUserRequest.cpp | 58 + .../source/model/DeleteUserResult.cpp | 42 + .../source/model/DescribeGroupRequest.cpp | 69 + .../source/model/DescribeGroupResult.cpp | 96 + .../source/model/DescribeUserRequest.cpp | 69 + .../source/model/DescribeUserResult.cpp | 113 ++ .../model/DirectoryUnavailableException.cpp | 73 + .../model/DirectoryUnavailableReason.cpp | 93 + .../source/model/DisableUserRequest.cpp | 58 + .../source/model/DisableUserResult.cpp | 42 + .../source/model/Group.cpp | 137 ++ .../source/model/GroupScope.cpp | 86 + .../source/model/GroupSummary.cpp | 101 + .../source/model/GroupType.cpp | 72 + .../source/model/ListGroupMembersRequest.cpp | 79 + .../source/model/ListGroupMembersResult.cpp | 75 + .../model/ListGroupsForMemberRequest.cpp | 79 + .../model/ListGroupsForMemberResult.cpp | 75 + .../source/model/ListGroupsRequest.cpp | 65 + .../source/model/ListGroupsResult.cpp | 69 + .../source/model/ListUsersRequest.cpp | 65 + .../source/model/ListUsersResult.cpp | 69 + .../source/model/Member.cpp | 87 + .../source/model/MemberType.cpp | 79 + .../source/model/RemoveGroupMemberRequest.cpp | 72 + .../source/model/RemoveGroupMemberResult.cpp | 42 + .../source/model/SearchGroupsRequest.cpp | 84 + .../source/model/SearchGroupsResult.cpp | 69 + .../source/model/SearchUsersRequest.cpp | 84 + .../source/model/SearchUsersResult.cpp | 69 + .../source/model/ThrottlingException.cpp | 62 + .../source/model/UpdateGroupRequest.cpp | 91 + .../source/model/UpdateGroupResult.cpp | 42 + .../source/model/UpdateType.cpp | 79 + .../source/model/UpdateUserRequest.cpp | 98 + .../source/model/UpdateUserResult.cpp | 42 + .../source/model/User.cpp | 180 ++ .../source/model/UserSummary.cpp | 116 ++ .../source/model/ValidationException.cpp | 73 + .../model/ValidationExceptionReason.cpp | 163 ++ .../include/aws/ds/DirectoryServiceClient.h | 85 +- .../ds/DirectoryServiceServiceClientModel.h | 15 + .../aws/ds/model/AccessDeniedException.h | 4 +- .../include/aws/ds/model/AddIpRoutesRequest.h | 48 +- .../include/aws/ds/model/CreateTrustRequest.h | 4 +- .../include/aws/ds/model/DataAccessStatus.h | 34 + .../DescribeDirectoryDataAccessRequest.h | 58 + .../model/DescribeDirectoryDataAccessResult.h | 66 + .../aws/ds/model/DirectoryDescription.h | 2 +- .../include/aws/ds/model/DirectoryStage.h | 3 +- .../ds/model/DirectoryUnavailableException.h | 3 +- .../DisableClientAuthenticationRequest.h | 4 +- .../model/DisableDirectoryDataAccessRequest.h | 58 + .../model/DisableDirectoryDataAccessResult.h | 52 + .../aws/ds/model/DomainControllerStatus.h | 3 +- .../model/EnableDirectoryDataAccessRequest.h | 58 + .../model/EnableDirectoryDataAccessResult.h | 52 + .../include/aws/ds/model/RadiusSettings.h | 2 +- .../aws-cpp-sdk-ds/include/aws/ds/model/Tag.h | 4 +- .../source/DirectoryServiceClient.cpp | 81 + .../source/model/DataAccessStatus.cpp | 93 + .../DescribeDirectoryDataAccessRequest.cpp | 43 + .../DescribeDirectoryDataAccessResult.cpp | 50 + .../source/model/DirectoryStage.cpp | 7 + .../DisableDirectoryDataAccessRequest.cpp | 43 + .../DisableDirectoryDataAccessResult.cpp | 42 + .../source/model/DomainControllerStatus.cpp | 7 + .../EnableDirectoryDataAccessRequest.cpp | 43 + .../model/EnableDirectoryDataAccessResult.cpp | 42 + .../aws/guardduty/model/EcsTaskDetails.h | 18 + .../source/model/EcsTaskDetails.cpp | 16 +- .../source/model/KubernetesApiCallAction.cpp | 16 +- .../aws/mailmanager/MailManagerClient.h | 18 +- .../mailmanager/model/RuleStringToEvaluate.h | 19 + .../source/model/RuleStringToEvaluate.cpp | 16 +- .../include/aws/rds/RDSClient.h | 13 +- .../include/aws/s3-crt/S3CrtClient.h | 560 ++++-- .../model/CompleteMultipartUploadResult.h | 12 +- .../aws/s3-crt/model/CopyObjectRequest.h | 123 +- .../aws/s3-crt/model/CopyObjectResult.h | 15 +- .../model/CreateMultipartUploadRequest.h | 103 +- .../model/CreateMultipartUploadResult.h | 18 +- .../aws/s3-crt/model/CreateSessionRequest.h | 116 +- .../aws/s3-crt/model/CreateSessionResult.h | 66 +- .../model/DeleteBucketEncryptionRequest.h | 16 +- .../s3-crt/model/ExistingObjectReplication.h | 11 +- .../s3-crt/model/GetBucketEncryptionRequest.h | 16 +- .../aws/s3-crt/model/GetObjectRequest.h | 5 +- .../aws/s3-crt/model/GetObjectResult.h | 13 +- .../aws/s3-crt/model/HeadObjectRequest.h | 12 +- .../aws/s3-crt/model/HeadObjectResult.h | 12 +- .../s3-crt/model/PutBucketEncryptionRequest.h | 31 +- .../aws/s3-crt/model/PutObjectRequest.h | 141 +- .../aws/s3-crt/model/PutObjectResult.h | 26 +- .../aws/s3-crt/model/ReplicationRule.h | 10 +- .../model/ServerSideEncryptionByDefault.h | 65 +- .../s3-crt/model/ServerSideEncryptionRule.h | 38 +- .../aws/s3-crt/model/SessionCredentials.h | 2 +- .../aws/s3-crt/model/UploadPartCopyResult.h | 12 +- .../aws/s3-crt/model/UploadPartResult.h | 12 +- .../source/model/CreateSessionRequest.cpp | 32 + .../source/model/CreateSessionResult.cpp | 29 +- .../aws-cpp-sdk-s3/include/aws/s3/S3Client.h | 560 ++++-- .../s3/model/CompleteMultipartUploadResult.h | 12 +- .../include/aws/s3/model/CopyObjectRequest.h | 123 +- .../include/aws/s3/model/CopyObjectResult.h | 15 +- .../s3/model/CreateMultipartUploadRequest.h | 103 +- .../s3/model/CreateMultipartUploadResult.h | 18 +- .../aws/s3/model/CreateSessionRequest.h | 116 +- .../aws/s3/model/CreateSessionResult.h | 66 +- .../s3/model/DeleteBucketEncryptionRequest.h | 16 +- .../aws/s3/model/ExistingObjectReplication.h | 11 +- .../aws/s3/model/GetBucketEncryptionRequest.h | 16 +- .../include/aws/s3/model/GetObjectRequest.h | 5 +- .../include/aws/s3/model/GetObjectResult.h | 13 +- .../include/aws/s3/model/HeadObjectRequest.h | 12 +- .../include/aws/s3/model/HeadObjectResult.h | 12 +- .../aws/s3/model/PutBucketEncryptionRequest.h | 31 +- .../include/aws/s3/model/PutObjectRequest.h | 141 +- .../include/aws/s3/model/PutObjectResult.h | 26 +- .../include/aws/s3/model/ReplicationRule.h | 10 +- .../s3/model/ServerSideEncryptionByDefault.h | 65 +- .../aws/s3/model/ServerSideEncryptionRule.h | 38 +- .../include/aws/s3/model/SessionCredentials.h | 2 +- .../aws/s3/model/UploadPartCopyResult.h | 12 +- .../include/aws/s3/model/UploadPartResult.h | 12 +- .../source/model/CreateSessionRequest.cpp | 32 + .../source/model/CreateSessionResult.cpp | 29 +- .../CMakeLists.txt | 42 + ...ectoryServiceDataEndpointProviderTests.cpp | 428 +++++ .../RunTests.cpp | 29 + .../include/aws/core/VersionConfig.h | 4 +- .../ce-2017-10-25.normal.json | 66 +- ...ectory-service-data-2023-05-31.normal.json | 1688 +++++++++++++++++ .../ds-2015-04-16.normal.json | 142 +- .../guardduty-2017-11-28.normal.json | 7 +- .../mailmanager-2023-10-17.normal.json | 22 +- .../rds-2014-10-31.normal.json | 2 +- .../s3-2006-03-01.normal.json | 190 +- ...ice-data-2023-05-31.endpoint-rule-set.json | 350 ++++ ...ervice-data-2023-05-31.endpoint-tests.json | 314 +++ 228 files changed, 18570 insertions(+), 961 deletions(-) create mode 100644 generated/src/aws-cpp-sdk-ce/include/aws/ce/model/DynamoDBCapacityDetails.h create mode 100644 generated/src/aws-cpp-sdk-ce/include/aws/ce/model/ReservedCapacityDetails.h create mode 100644 generated/src/aws-cpp-sdk-ce/source/model/DynamoDBCapacityDetails.cpp create mode 100644 generated/src/aws-cpp-sdk-ce/source/model/ReservedCapacityDetails.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/CMakeLists.txt create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataClient.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataEndpointProvider.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataEndpointRules.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataErrorMarshaller.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataErrors.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataServiceClientModel.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceData_EXPORTS.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AccessDeniedException.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AccessDeniedReason.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AddGroupMemberRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AddGroupMemberResult.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AttributeValue.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/CreateGroupRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/CreateGroupResult.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/CreateUserRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/CreateUserResult.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DeleteGroupRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DeleteGroupResult.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DeleteUserRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DeleteUserResult.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DescribeGroupRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DescribeGroupResult.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DescribeUserRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DescribeUserResult.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DirectoryUnavailableException.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DirectoryUnavailableReason.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DisableUserRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DisableUserResult.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/Group.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/GroupScope.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/GroupSummary.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/GroupType.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupMembersRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupMembersResult.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupsForMemberRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupsForMemberResult.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupsRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupsResult.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListUsersRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListUsersResult.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/Member.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/MemberType.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/RemoveGroupMemberRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/RemoveGroupMemberResult.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/SearchGroupsRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/SearchGroupsResult.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/SearchUsersRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/SearchUsersResult.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ThrottlingException.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateGroupRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateGroupResult.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateType.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateUserRequest.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateUserResult.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/User.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UserSummary.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ValidationException.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ValidationExceptionReason.h create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataClient.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataEndpointProvider.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataEndpointRules.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataErrorMarshaller.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataErrors.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/AccessDeniedException.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/AccessDeniedReason.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/AddGroupMemberRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/AddGroupMemberResult.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/AttributeValue.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/CreateGroupRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/CreateGroupResult.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/CreateUserRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/CreateUserResult.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/DeleteGroupRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/DeleteGroupResult.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/DeleteUserRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/DeleteUserResult.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/DescribeGroupRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/DescribeGroupResult.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/DescribeUserRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/DescribeUserResult.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/DirectoryUnavailableException.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/DirectoryUnavailableReason.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/DisableUserRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/DisableUserResult.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/Group.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/GroupScope.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/GroupSummary.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/GroupType.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupMembersRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupMembersResult.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupsForMemberRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupsForMemberResult.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupsRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupsResult.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/ListUsersRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/ListUsersResult.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/Member.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/MemberType.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/RemoveGroupMemberRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/RemoveGroupMemberResult.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/SearchGroupsRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/SearchGroupsResult.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/SearchUsersRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/SearchUsersResult.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/ThrottlingException.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateGroupRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateGroupResult.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateType.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateUserRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateUserResult.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/User.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/UserSummary.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/ValidationException.cpp create mode 100644 generated/src/aws-cpp-sdk-directory-service-data/source/model/ValidationExceptionReason.cpp create mode 100644 generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DataAccessStatus.h create mode 100644 generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DescribeDirectoryDataAccessRequest.h create mode 100644 generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DescribeDirectoryDataAccessResult.h create mode 100644 generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DisableDirectoryDataAccessRequest.h create mode 100644 generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DisableDirectoryDataAccessResult.h create mode 100644 generated/src/aws-cpp-sdk-ds/include/aws/ds/model/EnableDirectoryDataAccessRequest.h create mode 100644 generated/src/aws-cpp-sdk-ds/include/aws/ds/model/EnableDirectoryDataAccessResult.h create mode 100644 generated/src/aws-cpp-sdk-ds/source/model/DataAccessStatus.cpp create mode 100644 generated/src/aws-cpp-sdk-ds/source/model/DescribeDirectoryDataAccessRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-ds/source/model/DescribeDirectoryDataAccessResult.cpp create mode 100644 generated/src/aws-cpp-sdk-ds/source/model/DisableDirectoryDataAccessRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-ds/source/model/DisableDirectoryDataAccessResult.cpp create mode 100644 generated/src/aws-cpp-sdk-ds/source/model/EnableDirectoryDataAccessRequest.cpp create mode 100644 generated/src/aws-cpp-sdk-ds/source/model/EnableDirectoryDataAccessResult.cpp create mode 100644 generated/tests/directory-service-data-gen-tests/CMakeLists.txt create mode 100644 generated/tests/directory-service-data-gen-tests/DirectoryServiceDataEndpointProviderTests.cpp create mode 100644 generated/tests/directory-service-data-gen-tests/RunTests.cpp create mode 100644 tools/code-generation/api-descriptions/directory-service-data-2023-05-31.normal.json create mode 100644 tools/code-generation/endpoints/directory-service-data-2023-05-31.endpoint-rule-set.json create mode 100644 tools/code-generation/endpoints/directory-service-data-2023-05-31.endpoint-tests.json diff --git a/VERSION b/VERSION index acaddf56fee..04db7d3b155 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.11.407 \ No newline at end of file +1.11.408 \ No newline at end of file diff --git a/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/Anomaly.h b/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/Anomaly.h index d2a819e6eb2..3de81b66fe2 100644 --- a/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/Anomaly.h +++ b/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/Anomaly.h @@ -87,8 +87,8 @@ namespace Model ///@{ /** - *

The dimension for the anomaly (for example, an Amazon Web Service in a - * service monitor).

+ *

The dimension for the anomaly (for example, an Amazon Web Servicesservice in + * a service monitor).

*/ inline const Aws::String& GetDimensionValue() const{ return m_dimensionValue; } inline bool DimensionValueHasBeenSet() const { return m_dimensionValueHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/DynamoDBCapacityDetails.h b/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/DynamoDBCapacityDetails.h new file mode 100644 index 00000000000..84fc9f55fa7 --- /dev/null +++ b/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/DynamoDBCapacityDetails.h @@ -0,0 +1,79 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include + +namespace Aws +{ +namespace Utils +{ +namespace Json +{ + class JsonValue; + class JsonView; +} // namespace Json +} // namespace Utils +namespace CostExplorer +{ +namespace Model +{ + + /** + *

The DynamoDB reservations that Amazon Web Services recommends that you + * purchase.

See Also:

AWS + * API Reference

+ */ + class DynamoDBCapacityDetails + { + public: + AWS_COSTEXPLORER_API DynamoDBCapacityDetails(); + AWS_COSTEXPLORER_API DynamoDBCapacityDetails(Aws::Utils::Json::JsonView jsonValue); + AWS_COSTEXPLORER_API DynamoDBCapacityDetails& operator=(Aws::Utils::Json::JsonView jsonValue); + AWS_COSTEXPLORER_API Aws::Utils::Json::JsonValue Jsonize() const; + + + ///@{ + /** + *

The capacity unit of the recommended reservation.

+ */ + inline const Aws::String& GetCapacityUnits() const{ return m_capacityUnits; } + inline bool CapacityUnitsHasBeenSet() const { return m_capacityUnitsHasBeenSet; } + inline void SetCapacityUnits(const Aws::String& value) { m_capacityUnitsHasBeenSet = true; m_capacityUnits = value; } + inline void SetCapacityUnits(Aws::String&& value) { m_capacityUnitsHasBeenSet = true; m_capacityUnits = std::move(value); } + inline void SetCapacityUnits(const char* value) { m_capacityUnitsHasBeenSet = true; m_capacityUnits.assign(value); } + inline DynamoDBCapacityDetails& WithCapacityUnits(const Aws::String& value) { SetCapacityUnits(value); return *this;} + inline DynamoDBCapacityDetails& WithCapacityUnits(Aws::String&& value) { SetCapacityUnits(std::move(value)); return *this;} + inline DynamoDBCapacityDetails& WithCapacityUnits(const char* value) { SetCapacityUnits(value); return *this;} + ///@} + + ///@{ + /** + *

The Amazon Web Services Region of the recommended reservation.

+ */ + inline const Aws::String& GetRegion() const{ return m_region; } + inline bool RegionHasBeenSet() const { return m_regionHasBeenSet; } + inline void SetRegion(const Aws::String& value) { m_regionHasBeenSet = true; m_region = value; } + inline void SetRegion(Aws::String&& value) { m_regionHasBeenSet = true; m_region = std::move(value); } + inline void SetRegion(const char* value) { m_regionHasBeenSet = true; m_region.assign(value); } + inline DynamoDBCapacityDetails& WithRegion(const Aws::String& value) { SetRegion(value); return *this;} + inline DynamoDBCapacityDetails& WithRegion(Aws::String&& value) { SetRegion(std::move(value)); return *this;} + inline DynamoDBCapacityDetails& WithRegion(const char* value) { SetRegion(value); return *this;} + ///@} + private: + + Aws::String m_capacityUnits; + bool m_capacityUnitsHasBeenSet = false; + + Aws::String m_region; + bool m_regionHasBeenSet = false; + }; + +} // namespace Model +} // namespace CostExplorer +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/GetDimensionValuesRequest.h b/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/GetDimensionValuesRequest.h index 1055802bf60..0f45c77c499 100644 --- a/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/GetDimensionValuesRequest.h +++ b/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/GetDimensionValuesRequest.h @@ -102,41 +102,42 @@ namespace Model * us-east-1a.

  • BILLING_ENTITY - The Amazon Web * Services seller that your account is with. Possible values are the * following:

    - Amazon Web Services(Amazon Web Services): The entity that - * sells Amazon Web Services.

    - AISPL (Amazon Internet Services Pvt. Ltd.): - * The local Indian entity that's an acting reseller for Amazon Web Services in - * India.

    - Amazon Web Services Marketplace: The entity that supports the - * sale of solutions that are built on Amazon Web Services by third-party software - * providers.

  • CACHE_ENGINE - The Amazon ElastiCache operating - * system. Examples are Windows or Linux.

  • DEPLOYMENT_OPTION - The - * scope of Amazon Relational Database Service deployments. Valid values are - * SingleAZ and MultiAZ.

  • - *

    DATABASE_ENGINE - The Amazon Relational Database Service database. Examples - * are Aurora or MySQL.

  • INSTANCE_TYPE - The type of Amazon EC2 - * instance. An example is m4.xlarge.

  • - *

    INSTANCE_TYPE_FAMILY - A family of instance types optimized to fit different - * use cases. Examples are Compute Optimized (for example, - * C4, C5, C6g, and C7g), - * Memory Optimization (for example, R4, - * R5n, R5b, and R6g).

  • - *

    INVOICING_ENTITY - The name of the entity that issues the Amazon Web Services - * invoice.

  • LEGAL_ENTITY_NAME - The name of the organization that - * sells you Amazon Web Services services, such as Amazon Web Services.

  • - *
  • LINKED_ACCOUNT - The description in the attribute map that includes the - * full name of the member account. The value field contains the Amazon Web - * Services ID of the member account.

  • OPERATING_SYSTEM - The - * operating system. Examples are Windows or Linux.

  • OPERATION - - * The action performed. Examples include RunInstance and - * CreateBucket.

  • PLATFORM - The Amazon EC2 operating - * system. Examples are Windows or Linux.

  • PURCHASE_TYPE - The - * reservation type of the purchase that this usage is related to. Examples include - * On-Demand Instances and Standard Reserved Instances.

  • - *

    RESERVATION_ID - The unique identifier for an Amazon Web Services Reservation - * Instance.

  • SAVINGS_PLAN_ARN - The unique identifier for your - * Savings Plans.

  • SAVINGS_PLANS_TYPE - Type of Savings Plans (EC2 - * Instance or Compute).

  • SERVICE - The Amazon Web Services - * service such as Amazon DynamoDB.

  • TENANCY - The tenancy of a - * resource. Examples are shared or dedicated.

  • USAGE_TYPE - The - * type of usage. An example is DataTransfer-In-Bytes. The response for the + * sells Amazon Web Servicesservices.

    - AISPL (Amazon Internet Services Pvt. + * Ltd.): The local Indian entity that's an acting reseller for Amazon Web + * Servicesservices in India.

    - Amazon Web Services Marketplace: The entity + * that supports the sale of solutions that are built on Amazon Web Services by + * third-party software providers.

  • CACHE_ENGINE - The Amazon + * ElastiCache operating system. Examples are Windows or Linux.

  • + *

    DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service + * deployments. Valid values are SingleAZ and + * MultiAZ.

  • DATABASE_ENGINE - The Amazon Relational + * Database Service database. Examples are Aurora or MySQL.

  • + *

    INSTANCE_TYPE - The type of Amazon EC2 instance. An example is + * m4.xlarge.

  • INSTANCE_TYPE_FAMILY - A family of + * instance types optimized to fit different use cases. Examples are Compute + * Optimized (for example, C4, C5, + * C6g, and C7g), Memory Optimization (for + * example, R4, R5n, R5b, and + * R6g).

  • INVOICING_ENTITY - The name of the entity + * that issues the Amazon Web Services invoice.

  • LEGAL_ENTITY_NAME + * - The name of the organization that sells you Amazon Web Services services, such + * as Amazon Web Services.

  • LINKED_ACCOUNT - The description in + * the attribute map that includes the full name of the member account. The value + * field contains the Amazon Web Services ID of the member account.

  • + *

    OPERATING_SYSTEM - The operating system. Examples are Windows or Linux.

    + *
  • OPERATION - The action performed. Examples include + * RunInstance and CreateBucket.

  • + *

    PLATFORM - The Amazon EC2 operating system. Examples are Windows or + * Linux.

  • PURCHASE_TYPE - The reservation type of the purchase + * that this usage is related to. Examples include On-Demand Instances and Standard + * Reserved Instances.

  • RESERVATION_ID - The unique identifier for + * an Amazon Web Services Reservation Instance.

  • SAVINGS_PLAN_ARN + * - The unique identifier for your Savings Plans.

  • + *

    SAVINGS_PLANS_TYPE - Type of Savings Plans (EC2 Instance or Compute).

    + *
  • SERVICE - The Amazon Web Services service such as Amazon + * DynamoDB.

  • TENANCY - The tenancy of a resource. Examples are + * shared or dedicated.

  • USAGE_TYPE - The type of usage. An + * example is DataTransfer-In-Bytes. The response for the * GetDimensionValues operation includes a unit attribute. Examples * include GB and Hrs.

  • USAGE_TYPE_GROUP - The grouping of common * usage types. An example is Amazon EC2: CloudWatch – Alarms. The response for diff --git a/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/ReservationPurchaseRecommendationDetail.h b/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/ReservationPurchaseRecommendationDetail.h index 888c1e13873..4ba253600ea 100644 --- a/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/ReservationPurchaseRecommendationDetail.h +++ b/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/ReservationPurchaseRecommendationDetail.h @@ -7,6 +7,7 @@ #include #include #include +#include #include namespace Aws @@ -194,8 +195,8 @@ namespace Model ///@{ /** - *

    The average utilization of your instances. Amazon Web Services uses this to - * calculate your recommended reservation purchases.

    + *

    The average utilization of your recommendations. Amazon Web Services uses + * this to calculate your recommended reservation purchases.

    */ inline const Aws::String& GetAverageUtilization() const{ return m_averageUtilization; } inline bool AverageUtilizationHasBeenSet() const { return m_averageUtilizationHasBeenSet; } @@ -209,8 +210,8 @@ namespace Model ///@{ /** - *

    How long Amazon Web Services estimates that it takes for this instance to - * start saving you money, in months.

    + *

    How long Amazon Web Services estimates that it takes for this recommendation + * to start saving you money, in months.

    */ inline const Aws::String& GetEstimatedBreakEvenInMonths() const{ return m_estimatedBreakEvenInMonths; } inline bool EstimatedBreakEvenInMonthsHasBeenSet() const { return m_estimatedBreakEvenInMonthsHasBeenSet; } @@ -225,7 +226,7 @@ namespace Model ///@{ /** *

    The currency code that Amazon Web Services used to calculate the costs for - * this instance.

    + * this recommendation.

    */ inline const Aws::String& GetCurrencyCode() const{ return m_currencyCode; } inline bool CurrencyCodeHasBeenSet() const { return m_currencyCodeHasBeenSet; } @@ -299,7 +300,7 @@ namespace Model ///@{ /** - *

    How much purchasing this instance costs you upfront.

    + *

    How much purchasing this recommendation costs you upfront.

    */ inline const Aws::String& GetUpfrontCost() const{ return m_upfrontCost; } inline bool UpfrontCostHasBeenSet() const { return m_upfrontCostHasBeenSet; } @@ -313,7 +314,7 @@ namespace Model ///@{ /** - *

    How much purchasing this instance costs you on a monthly basis.

    + *

    How much purchasing this recommendation costs you on a monthly basis.

    */ inline const Aws::String& GetRecurringStandardMonthlyCost() const{ return m_recurringStandardMonthlyCost; } inline bool RecurringStandardMonthlyCostHasBeenSet() const { return m_recurringStandardMonthlyCostHasBeenSet; } @@ -324,6 +325,82 @@ namespace Model inline ReservationPurchaseRecommendationDetail& WithRecurringStandardMonthlyCost(Aws::String&& value) { SetRecurringStandardMonthlyCost(std::move(value)); return *this;} inline ReservationPurchaseRecommendationDetail& WithRecurringStandardMonthlyCost(const char* value) { SetRecurringStandardMonthlyCost(value); return *this;} ///@} + + ///@{ + /** + *

    Details about the reservations that Amazon Web Services recommends that you + * purchase.

    + */ + inline const ReservedCapacityDetails& GetReservedCapacityDetails() const{ return m_reservedCapacityDetails; } + inline bool ReservedCapacityDetailsHasBeenSet() const { return m_reservedCapacityDetailsHasBeenSet; } + inline void SetReservedCapacityDetails(const ReservedCapacityDetails& value) { m_reservedCapacityDetailsHasBeenSet = true; m_reservedCapacityDetails = value; } + inline void SetReservedCapacityDetails(ReservedCapacityDetails&& value) { m_reservedCapacityDetailsHasBeenSet = true; m_reservedCapacityDetails = std::move(value); } + inline ReservationPurchaseRecommendationDetail& WithReservedCapacityDetails(const ReservedCapacityDetails& value) { SetReservedCapacityDetails(value); return *this;} + inline ReservationPurchaseRecommendationDetail& WithReservedCapacityDetails(ReservedCapacityDetails&& value) { SetReservedCapacityDetails(std::move(value)); return *this;} + ///@} + + ///@{ + /** + *

    The number of reserved capacity units that Amazon Web Services recommends + * that you purchase.

    + */ + inline const Aws::String& GetRecommendedNumberOfCapacityUnitsToPurchase() const{ return m_recommendedNumberOfCapacityUnitsToPurchase; } + inline bool RecommendedNumberOfCapacityUnitsToPurchaseHasBeenSet() const { return m_recommendedNumberOfCapacityUnitsToPurchaseHasBeenSet; } + inline void SetRecommendedNumberOfCapacityUnitsToPurchase(const Aws::String& value) { m_recommendedNumberOfCapacityUnitsToPurchaseHasBeenSet = true; m_recommendedNumberOfCapacityUnitsToPurchase = value; } + inline void SetRecommendedNumberOfCapacityUnitsToPurchase(Aws::String&& value) { m_recommendedNumberOfCapacityUnitsToPurchaseHasBeenSet = true; m_recommendedNumberOfCapacityUnitsToPurchase = std::move(value); } + inline void SetRecommendedNumberOfCapacityUnitsToPurchase(const char* value) { m_recommendedNumberOfCapacityUnitsToPurchaseHasBeenSet = true; m_recommendedNumberOfCapacityUnitsToPurchase.assign(value); } + inline ReservationPurchaseRecommendationDetail& WithRecommendedNumberOfCapacityUnitsToPurchase(const Aws::String& value) { SetRecommendedNumberOfCapacityUnitsToPurchase(value); return *this;} + inline ReservationPurchaseRecommendationDetail& WithRecommendedNumberOfCapacityUnitsToPurchase(Aws::String&& value) { SetRecommendedNumberOfCapacityUnitsToPurchase(std::move(value)); return *this;} + inline ReservationPurchaseRecommendationDetail& WithRecommendedNumberOfCapacityUnitsToPurchase(const char* value) { SetRecommendedNumberOfCapacityUnitsToPurchase(value); return *this;} + ///@} + + ///@{ + /** + *

    The minimum number of provisioned capacity units that you used in an hour + * during the historical period. Amazon Web Services uses this to calculate your + * recommended reservation purchases.

    + */ + inline const Aws::String& GetMinimumNumberOfCapacityUnitsUsedPerHour() const{ return m_minimumNumberOfCapacityUnitsUsedPerHour; } + inline bool MinimumNumberOfCapacityUnitsUsedPerHourHasBeenSet() const { return m_minimumNumberOfCapacityUnitsUsedPerHourHasBeenSet; } + inline void SetMinimumNumberOfCapacityUnitsUsedPerHour(const Aws::String& value) { m_minimumNumberOfCapacityUnitsUsedPerHourHasBeenSet = true; m_minimumNumberOfCapacityUnitsUsedPerHour = value; } + inline void SetMinimumNumberOfCapacityUnitsUsedPerHour(Aws::String&& value) { m_minimumNumberOfCapacityUnitsUsedPerHourHasBeenSet = true; m_minimumNumberOfCapacityUnitsUsedPerHour = std::move(value); } + inline void SetMinimumNumberOfCapacityUnitsUsedPerHour(const char* value) { m_minimumNumberOfCapacityUnitsUsedPerHourHasBeenSet = true; m_minimumNumberOfCapacityUnitsUsedPerHour.assign(value); } + inline ReservationPurchaseRecommendationDetail& WithMinimumNumberOfCapacityUnitsUsedPerHour(const Aws::String& value) { SetMinimumNumberOfCapacityUnitsUsedPerHour(value); return *this;} + inline ReservationPurchaseRecommendationDetail& WithMinimumNumberOfCapacityUnitsUsedPerHour(Aws::String&& value) { SetMinimumNumberOfCapacityUnitsUsedPerHour(std::move(value)); return *this;} + inline ReservationPurchaseRecommendationDetail& WithMinimumNumberOfCapacityUnitsUsedPerHour(const char* value) { SetMinimumNumberOfCapacityUnitsUsedPerHour(value); return *this;} + ///@} + + ///@{ + /** + *

    The maximum number of provisioned capacity units that you used in an hour + * during the historical period. Amazon Web Services uses this to calculate your + * recommended reservation purchases.

    + */ + inline const Aws::String& GetMaximumNumberOfCapacityUnitsUsedPerHour() const{ return m_maximumNumberOfCapacityUnitsUsedPerHour; } + inline bool MaximumNumberOfCapacityUnitsUsedPerHourHasBeenSet() const { return m_maximumNumberOfCapacityUnitsUsedPerHourHasBeenSet; } + inline void SetMaximumNumberOfCapacityUnitsUsedPerHour(const Aws::String& value) { m_maximumNumberOfCapacityUnitsUsedPerHourHasBeenSet = true; m_maximumNumberOfCapacityUnitsUsedPerHour = value; } + inline void SetMaximumNumberOfCapacityUnitsUsedPerHour(Aws::String&& value) { m_maximumNumberOfCapacityUnitsUsedPerHourHasBeenSet = true; m_maximumNumberOfCapacityUnitsUsedPerHour = std::move(value); } + inline void SetMaximumNumberOfCapacityUnitsUsedPerHour(const char* value) { m_maximumNumberOfCapacityUnitsUsedPerHourHasBeenSet = true; m_maximumNumberOfCapacityUnitsUsedPerHour.assign(value); } + inline ReservationPurchaseRecommendationDetail& WithMaximumNumberOfCapacityUnitsUsedPerHour(const Aws::String& value) { SetMaximumNumberOfCapacityUnitsUsedPerHour(value); return *this;} + inline ReservationPurchaseRecommendationDetail& WithMaximumNumberOfCapacityUnitsUsedPerHour(Aws::String&& value) { SetMaximumNumberOfCapacityUnitsUsedPerHour(std::move(value)); return *this;} + inline ReservationPurchaseRecommendationDetail& WithMaximumNumberOfCapacityUnitsUsedPerHour(const char* value) { SetMaximumNumberOfCapacityUnitsUsedPerHour(value); return *this;} + ///@} + + ///@{ + /** + *

    The average number of provisioned capacity units that you used in an hour + * during the historical period. Amazon Web Services uses this to calculate your + * recommended reservation purchases.

    + */ + inline const Aws::String& GetAverageNumberOfCapacityUnitsUsedPerHour() const{ return m_averageNumberOfCapacityUnitsUsedPerHour; } + inline bool AverageNumberOfCapacityUnitsUsedPerHourHasBeenSet() const { return m_averageNumberOfCapacityUnitsUsedPerHourHasBeenSet; } + inline void SetAverageNumberOfCapacityUnitsUsedPerHour(const Aws::String& value) { m_averageNumberOfCapacityUnitsUsedPerHourHasBeenSet = true; m_averageNumberOfCapacityUnitsUsedPerHour = value; } + inline void SetAverageNumberOfCapacityUnitsUsedPerHour(Aws::String&& value) { m_averageNumberOfCapacityUnitsUsedPerHourHasBeenSet = true; m_averageNumberOfCapacityUnitsUsedPerHour = std::move(value); } + inline void SetAverageNumberOfCapacityUnitsUsedPerHour(const char* value) { m_averageNumberOfCapacityUnitsUsedPerHourHasBeenSet = true; m_averageNumberOfCapacityUnitsUsedPerHour.assign(value); } + inline ReservationPurchaseRecommendationDetail& WithAverageNumberOfCapacityUnitsUsedPerHour(const Aws::String& value) { SetAverageNumberOfCapacityUnitsUsedPerHour(value); return *this;} + inline ReservationPurchaseRecommendationDetail& WithAverageNumberOfCapacityUnitsUsedPerHour(Aws::String&& value) { SetAverageNumberOfCapacityUnitsUsedPerHour(std::move(value)); return *this;} + inline ReservationPurchaseRecommendationDetail& WithAverageNumberOfCapacityUnitsUsedPerHour(const char* value) { SetAverageNumberOfCapacityUnitsUsedPerHour(value); return *this;} + ///@} private: Aws::String m_accountId; @@ -382,6 +459,21 @@ namespace Model Aws::String m_recurringStandardMonthlyCost; bool m_recurringStandardMonthlyCostHasBeenSet = false; + + ReservedCapacityDetails m_reservedCapacityDetails; + bool m_reservedCapacityDetailsHasBeenSet = false; + + Aws::String m_recommendedNumberOfCapacityUnitsToPurchase; + bool m_recommendedNumberOfCapacityUnitsToPurchaseHasBeenSet = false; + + Aws::String m_minimumNumberOfCapacityUnitsUsedPerHour; + bool m_minimumNumberOfCapacityUnitsUsedPerHourHasBeenSet = false; + + Aws::String m_maximumNumberOfCapacityUnitsUsedPerHour; + bool m_maximumNumberOfCapacityUnitsUsedPerHourHasBeenSet = false; + + Aws::String m_averageNumberOfCapacityUnitsUsedPerHour; + bool m_averageNumberOfCapacityUnitsUsedPerHourHasBeenSet = false; }; } // namespace Model diff --git a/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/ReservedCapacityDetails.h b/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/ReservedCapacityDetails.h new file mode 100644 index 00000000000..cd79ae68317 --- /dev/null +++ b/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/ReservedCapacityDetails.h @@ -0,0 +1,61 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include + +namespace Aws +{ +namespace Utils +{ +namespace Json +{ + class JsonValue; + class JsonView; +} // namespace Json +} // namespace Utils +namespace CostExplorer +{ +namespace Model +{ + + /** + *

    Details about the reservations that Amazon Web Services recommends that you + * purchase.

    See Also:

    AWS + * API Reference

    + */ + class ReservedCapacityDetails + { + public: + AWS_COSTEXPLORER_API ReservedCapacityDetails(); + AWS_COSTEXPLORER_API ReservedCapacityDetails(Aws::Utils::Json::JsonView jsonValue); + AWS_COSTEXPLORER_API ReservedCapacityDetails& operator=(Aws::Utils::Json::JsonView jsonValue); + AWS_COSTEXPLORER_API Aws::Utils::Json::JsonValue Jsonize() const; + + + ///@{ + /** + *

    The DynamoDB reservations that Amazon Web Services recommends that you + * purchase.

    + */ + inline const DynamoDBCapacityDetails& GetDynamoDBCapacityDetails() const{ return m_dynamoDBCapacityDetails; } + inline bool DynamoDBCapacityDetailsHasBeenSet() const { return m_dynamoDBCapacityDetailsHasBeenSet; } + inline void SetDynamoDBCapacityDetails(const DynamoDBCapacityDetails& value) { m_dynamoDBCapacityDetailsHasBeenSet = true; m_dynamoDBCapacityDetails = value; } + inline void SetDynamoDBCapacityDetails(DynamoDBCapacityDetails&& value) { m_dynamoDBCapacityDetailsHasBeenSet = true; m_dynamoDBCapacityDetails = std::move(value); } + inline ReservedCapacityDetails& WithDynamoDBCapacityDetails(const DynamoDBCapacityDetails& value) { SetDynamoDBCapacityDetails(value); return *this;} + inline ReservedCapacityDetails& WithDynamoDBCapacityDetails(DynamoDBCapacityDetails&& value) { SetDynamoDBCapacityDetails(std::move(value)); return *this;} + ///@} + private: + + DynamoDBCapacityDetails m_dynamoDBCapacityDetails; + bool m_dynamoDBCapacityDetailsHasBeenSet = false; + }; + +} // namespace Model +} // namespace CostExplorer +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/RootCause.h b/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/RootCause.h index 161a59da811..ab930c1c71d 100644 --- a/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/RootCause.h +++ b/generated/src/aws-cpp-sdk-ce/include/aws/ce/model/RootCause.h @@ -24,10 +24,10 @@ namespace Model { /** - *

    The combination of Amazon Web Service, linked account, linked account name, - * Region, and usage type where a cost anomaly is observed. The linked account name - * will only be available when the account name can be identified.

    See - * Also:

    The combination of Amazon Web Servicesservice, linked account, linked account + * name, Region, and usage type where a cost anomaly is observed. The linked + * account name will only be available when the account name can be + * identified.

    See Also:

    AWS API * Reference

    */ @@ -42,7 +42,8 @@ namespace Model ///@{ /** - *

    The Amazon Web Service name that's associated with the cost anomaly.

    + *

    The Amazon Web Servicesservice name that's associated with the cost anomaly. + *

    */ inline const Aws::String& GetService() const{ return m_service; } inline bool ServiceHasBeenSet() const { return m_serviceHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-ce/source/model/DynamoDBCapacityDetails.cpp b/generated/src/aws-cpp-sdk-ce/source/model/DynamoDBCapacityDetails.cpp new file mode 100644 index 00000000000..3273e973f61 --- /dev/null +++ b/generated/src/aws-cpp-sdk-ce/source/model/DynamoDBCapacityDetails.cpp @@ -0,0 +1,73 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace CostExplorer +{ +namespace Model +{ + +DynamoDBCapacityDetails::DynamoDBCapacityDetails() : + m_capacityUnitsHasBeenSet(false), + m_regionHasBeenSet(false) +{ +} + +DynamoDBCapacityDetails::DynamoDBCapacityDetails(JsonView jsonValue) + : DynamoDBCapacityDetails() +{ + *this = jsonValue; +} + +DynamoDBCapacityDetails& DynamoDBCapacityDetails::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("CapacityUnits")) + { + m_capacityUnits = jsonValue.GetString("CapacityUnits"); + + m_capacityUnitsHasBeenSet = true; + } + + if(jsonValue.ValueExists("Region")) + { + m_region = jsonValue.GetString("Region"); + + m_regionHasBeenSet = true; + } + + return *this; +} + +JsonValue DynamoDBCapacityDetails::Jsonize() const +{ + JsonValue payload; + + if(m_capacityUnitsHasBeenSet) + { + payload.WithString("CapacityUnits", m_capacityUnits); + + } + + if(m_regionHasBeenSet) + { + payload.WithString("Region", m_region); + + } + + return payload; +} + +} // namespace Model +} // namespace CostExplorer +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-ce/source/model/ReservationPurchaseRecommendationDetail.cpp b/generated/src/aws-cpp-sdk-ce/source/model/ReservationPurchaseRecommendationDetail.cpp index 816ac448fed..cc79316bc49 100644 --- a/generated/src/aws-cpp-sdk-ce/source/model/ReservationPurchaseRecommendationDetail.cpp +++ b/generated/src/aws-cpp-sdk-ce/source/model/ReservationPurchaseRecommendationDetail.cpp @@ -37,7 +37,12 @@ ReservationPurchaseRecommendationDetail::ReservationPurchaseRecommendationDetail m_estimatedMonthlyOnDemandCostHasBeenSet(false), m_estimatedReservationCostForLookbackPeriodHasBeenSet(false), m_upfrontCostHasBeenSet(false), - m_recurringStandardMonthlyCostHasBeenSet(false) + m_recurringStandardMonthlyCostHasBeenSet(false), + m_reservedCapacityDetailsHasBeenSet(false), + m_recommendedNumberOfCapacityUnitsToPurchaseHasBeenSet(false), + m_minimumNumberOfCapacityUnitsUsedPerHourHasBeenSet(false), + m_maximumNumberOfCapacityUnitsUsedPerHourHasBeenSet(false), + m_averageNumberOfCapacityUnitsUsedPerHourHasBeenSet(false) { } @@ -182,6 +187,41 @@ ReservationPurchaseRecommendationDetail& ReservationPurchaseRecommendationDetail m_recurringStandardMonthlyCostHasBeenSet = true; } + if(jsonValue.ValueExists("ReservedCapacityDetails")) + { + m_reservedCapacityDetails = jsonValue.GetObject("ReservedCapacityDetails"); + + m_reservedCapacityDetailsHasBeenSet = true; + } + + if(jsonValue.ValueExists("RecommendedNumberOfCapacityUnitsToPurchase")) + { + m_recommendedNumberOfCapacityUnitsToPurchase = jsonValue.GetString("RecommendedNumberOfCapacityUnitsToPurchase"); + + m_recommendedNumberOfCapacityUnitsToPurchaseHasBeenSet = true; + } + + if(jsonValue.ValueExists("MinimumNumberOfCapacityUnitsUsedPerHour")) + { + m_minimumNumberOfCapacityUnitsUsedPerHour = jsonValue.GetString("MinimumNumberOfCapacityUnitsUsedPerHour"); + + m_minimumNumberOfCapacityUnitsUsedPerHourHasBeenSet = true; + } + + if(jsonValue.ValueExists("MaximumNumberOfCapacityUnitsUsedPerHour")) + { + m_maximumNumberOfCapacityUnitsUsedPerHour = jsonValue.GetString("MaximumNumberOfCapacityUnitsUsedPerHour"); + + m_maximumNumberOfCapacityUnitsUsedPerHourHasBeenSet = true; + } + + if(jsonValue.ValueExists("AverageNumberOfCapacityUnitsUsedPerHour")) + { + m_averageNumberOfCapacityUnitsUsedPerHour = jsonValue.GetString("AverageNumberOfCapacityUnitsUsedPerHour"); + + m_averageNumberOfCapacityUnitsUsedPerHourHasBeenSet = true; + } + return *this; } @@ -303,6 +343,36 @@ JsonValue ReservationPurchaseRecommendationDetail::Jsonize() const } + if(m_reservedCapacityDetailsHasBeenSet) + { + payload.WithObject("ReservedCapacityDetails", m_reservedCapacityDetails.Jsonize()); + + } + + if(m_recommendedNumberOfCapacityUnitsToPurchaseHasBeenSet) + { + payload.WithString("RecommendedNumberOfCapacityUnitsToPurchase", m_recommendedNumberOfCapacityUnitsToPurchase); + + } + + if(m_minimumNumberOfCapacityUnitsUsedPerHourHasBeenSet) + { + payload.WithString("MinimumNumberOfCapacityUnitsUsedPerHour", m_minimumNumberOfCapacityUnitsUsedPerHour); + + } + + if(m_maximumNumberOfCapacityUnitsUsedPerHourHasBeenSet) + { + payload.WithString("MaximumNumberOfCapacityUnitsUsedPerHour", m_maximumNumberOfCapacityUnitsUsedPerHour); + + } + + if(m_averageNumberOfCapacityUnitsUsedPerHourHasBeenSet) + { + payload.WithString("AverageNumberOfCapacityUnitsUsedPerHour", m_averageNumberOfCapacityUnitsUsedPerHour); + + } + return payload; } diff --git a/generated/src/aws-cpp-sdk-ce/source/model/ReservedCapacityDetails.cpp b/generated/src/aws-cpp-sdk-ce/source/model/ReservedCapacityDetails.cpp new file mode 100644 index 00000000000..d43817b1deb --- /dev/null +++ b/generated/src/aws-cpp-sdk-ce/source/model/ReservedCapacityDetails.cpp @@ -0,0 +1,59 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace CostExplorer +{ +namespace Model +{ + +ReservedCapacityDetails::ReservedCapacityDetails() : + m_dynamoDBCapacityDetailsHasBeenSet(false) +{ +} + +ReservedCapacityDetails::ReservedCapacityDetails(JsonView jsonValue) + : ReservedCapacityDetails() +{ + *this = jsonValue; +} + +ReservedCapacityDetails& ReservedCapacityDetails::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("DynamoDBCapacityDetails")) + { + m_dynamoDBCapacityDetails = jsonValue.GetObject("DynamoDBCapacityDetails"); + + m_dynamoDBCapacityDetailsHasBeenSet = true; + } + + return *this; +} + +JsonValue ReservedCapacityDetails::Jsonize() const +{ + JsonValue payload; + + if(m_dynamoDBCapacityDetailsHasBeenSet) + { + payload.WithObject("DynamoDBCapacityDetails", m_dynamoDBCapacityDetails.Jsonize()); + + } + + return payload; +} + +} // namespace Model +} // namespace CostExplorer +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/CMakeLists.txt b/generated/src/aws-cpp-sdk-directory-service-data/CMakeLists.txt new file mode 100644 index 00000000000..02ffe34996c --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/CMakeLists.txt @@ -0,0 +1,76 @@ +add_project(aws-cpp-sdk-directory-service-data "C++ SDK for the AWS directory-service-data service" aws-cpp-sdk-core) + +file(GLOB AWS_DIRECTORY-SERVICE-DATA_HEADERS + "include/aws/directory-service-data/*.h" +) + +file(GLOB AWS_DIRECTORY-SERVICE-DATA_MODEL_HEADERS + "include/aws/directory-service-data/model/*.h" +) + +file(GLOB AWS_DIRECTORY-SERVICE-DATA_SOURCE + "source/*.cpp" +) + +file(GLOB AWS_DIRECTORY-SERVICE-DATA_MODEL_SOURCE + "source/model/*.cpp" +) + +file(GLOB DIRECTORY-SERVICE-DATA_UNIFIED_HEADERS + ${AWS_DIRECTORY-SERVICE-DATA_HEADERS} + ${AWS_DIRECTORY-SERVICE-DATA_MODEL_HEADERS} +) + +file(GLOB DIRECTORY-SERVICE-DATA_UNITY_SRC + ${AWS_DIRECTORY-SERVICE-DATA_SOURCE} + ${AWS_DIRECTORY-SERVICE-DATA_MODEL_SOURCE} +) + +if(ENABLE_UNITY_BUILD) + enable_unity_build("DIRECTORY-SERVICE-DATA" DIRECTORY-SERVICE-DATA_UNITY_SRC) +endif() + +file(GLOB DIRECTORY-SERVICE-DATA_SRC + ${DIRECTORY-SERVICE-DATA_UNIFIED_HEADERS} + ${DIRECTORY-SERVICE-DATA_UNITY_SRC} +) + +if(WIN32) + #if we are compiling for visual studio, create a sane directory tree. + if(MSVC) + source_group("Header Files\\aws\\directory-service-data" FILES ${AWS_DIRECTORY-SERVICE-DATA_HEADERS}) + source_group("Header Files\\aws\\directory-service-data\\model" FILES ${AWS_DIRECTORY-SERVICE-DATA_MODEL_HEADERS}) + source_group("Source Files" FILES ${AWS_DIRECTORY-SERVICE-DATA_SOURCE}) + source_group("Source Files\\model" FILES ${AWS_DIRECTORY-SERVICE-DATA_MODEL_SOURCE}) + endif(MSVC) +endif() + +set(DIRECTORY-SERVICE-DATA_INCLUDES + "${CMAKE_CURRENT_SOURCE_DIR}/include/" +) + +add_library(${PROJECT_NAME} ${DIRECTORY-SERVICE-DATA_SRC}) +add_library(AWS::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) + +set_compiler_flags(${PROJECT_NAME}) +set_compiler_warnings(${PROJECT_NAME}) + +if(USE_WINDOWS_DLL_SEMANTICS AND BUILD_SHARED_LIBS) + target_compile_definitions(${PROJECT_NAME} PRIVATE "AWS_DIRECTORYSERVICEDATA_EXPORTS") +endif() + +target_include_directories(${PROJECT_NAME} PUBLIC + $ + $) + +target_link_libraries(${PROJECT_NAME} PRIVATE ${PLATFORM_DEP_LIBS} ${PROJECT_LIBS}) + + +setup_install() + +install (FILES ${AWS_DIRECTORY-SERVICE-DATA_HEADERS} DESTINATION ${INCLUDE_DIRECTORY}/aws/directory-service-data) +install (FILES ${AWS_DIRECTORY-SERVICE-DATA_MODEL_HEADERS} DESTINATION ${INCLUDE_DIRECTORY}/aws/directory-service-data/model) + +do_packaging() + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataClient.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataClient.h new file mode 100644 index 00000000000..403989973c4 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataClient.h @@ -0,0 +1,608 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace DirectoryServiceData +{ + /** + *

    Amazon Web Services Directory Service Data is an extension of Directory + * Service. This API reference provides detailed information about Directory + * Service Data operations and object types.

    With Directory Service Data, + * you can create, read, update, and delete users, groups, and memberships from + * your Managed Microsoft AD without additional costs and without deploying + * dedicated management instances. You can also perform built-in object management + * tasks across directories without direct network connectivity, which simplifies + * provisioning and access management to achieve fully automated deployments. + * Directory Service Data supports user and group write operations, such as + * CreateUser and CreateGroup, within the organizational + * unit (OU) of your Managed Microsoft AD. Directory Service Data supports read + * operations, such as ListUsers and ListGroups, on all + * users, groups, and group memberships within your Managed Microsoft AD and across + * trusted realms. Directory Service Data supports adding and removing group + * members in your OU and the Amazon Web Services Delegated Groups OU, so you can + * grant and deny access to specific roles and permissions. For more information, + * see Manage + * users and groups in the Directory Service Administration Guide.

    + *

    Directory management operations and configuration changes made + * against the Directory Service API will also reflect in Directory Service Data + * API with eventual consistency. You can expect a short delay between management + * changes, such as adding a new directory trust and calling the Directory Service + * Data API for the newly created trusted realm.

    Directory Service + * Data connects to your Managed Microsoft AD domain controllers and performs + * operations on underlying directory objects. When you create your Managed + * Microsoft AD, you choose subnets for domain controllers that Directory Service + * creates on your behalf. If a domain controller is unavailable, Directory Service + * Data uses an available domain controller. As a result, you might notice eventual + * consistency while objects replicate from one domain controller to another domain + * controller. For more information, see What + * gets created in the Directory Service Administration Guide. Directory + * limits vary by Managed Microsoft AD edition:

    • Standard + * edition – Supports 8 transactions per second (TPS) for read operations and 4 + * TPS for write operations per directory. There's a concurrency limit of 10 + * concurrent requests.

    • Enterprise edition – Supports 16 + * transactions per second (TPS) for read operations and 8 TPS for write operations + * per directory. There's a concurrency limit of 10 concurrent requests.

    • + *
    • Amazon Web Services Account - Supports a total of 100 TPS for + * Directory Service Data operations across all directories.

    + * Directory Service Data only supports the Managed Microsoft AD directory type and + * is only available in the primary Amazon Web Services Region. For more + * information, see Managed + * Microsoft AD and Primary + * vs additional Regions in the Directory Service Administration Guide. + *

    + */ + class AWS_DIRECTORYSERVICEDATA_API DirectoryServiceDataClient : public Aws::Client::AWSJsonClient, public Aws::Client::ClientWithAsyncTemplateMethods + { + public: + typedef Aws::Client::AWSJsonClient BASECLASS; + static const char* GetServiceName(); + static const char* GetAllocationTag(); + + typedef DirectoryServiceDataClientConfiguration ClientConfigurationType; + typedef DirectoryServiceDataEndpointProvider EndpointProviderType; + + /** + * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config + * is not specified, it will be initialized to default values. + */ + DirectoryServiceDataClient(const Aws::DirectoryServiceData::DirectoryServiceDataClientConfiguration& clientConfiguration = Aws::DirectoryServiceData::DirectoryServiceDataClientConfiguration(), + std::shared_ptr endpointProvider = nullptr); + + /** + * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config + * is not specified, it will be initialized to default values. + */ + DirectoryServiceDataClient(const Aws::Auth::AWSCredentials& credentials, + std::shared_ptr endpointProvider = nullptr, + const Aws::DirectoryServiceData::DirectoryServiceDataClientConfiguration& clientConfiguration = Aws::DirectoryServiceData::DirectoryServiceDataClientConfiguration()); + + /** + * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied, + * the default http client factory will be used + */ + DirectoryServiceDataClient(const std::shared_ptr& credentialsProvider, + std::shared_ptr endpointProvider = nullptr, + const Aws::DirectoryServiceData::DirectoryServiceDataClientConfiguration& clientConfiguration = Aws::DirectoryServiceData::DirectoryServiceDataClientConfiguration()); + + + /* Legacy constructors due deprecation */ + /** + * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config + * is not specified, it will be initialized to default values. + */ + DirectoryServiceDataClient(const Aws::Client::ClientConfiguration& clientConfiguration); + + /** + * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config + * is not specified, it will be initialized to default values. + */ + DirectoryServiceDataClient(const Aws::Auth::AWSCredentials& credentials, + const Aws::Client::ClientConfiguration& clientConfiguration); + + /** + * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied, + * the default http client factory will be used + */ + DirectoryServiceDataClient(const std::shared_ptr& credentialsProvider, + const Aws::Client::ClientConfiguration& clientConfiguration); + + /* End of legacy constructors due deprecation */ + virtual ~DirectoryServiceDataClient(); + + /** + *

    Adds an existing user, group, or computer as a group member.

    See + * Also:

    AWS + * API Reference

    + */ + virtual Model::AddGroupMemberOutcome AddGroupMember(const Model::AddGroupMemberRequest& request) const; + + /** + * A Callable wrapper for AddGroupMember that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::AddGroupMemberOutcomeCallable AddGroupMemberCallable(const AddGroupMemberRequestT& request) const + { + return SubmitCallable(&DirectoryServiceDataClient::AddGroupMember, request); + } + + /** + * An Async wrapper for AddGroupMember that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void AddGroupMemberAsync(const AddGroupMemberRequestT& request, const AddGroupMemberResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceDataClient::AddGroupMember, request, handler, context); + } + + /** + *

    Creates a new group.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::CreateGroupOutcome CreateGroup(const Model::CreateGroupRequest& request) const; + + /** + * A Callable wrapper for CreateGroup that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::CreateGroupOutcomeCallable CreateGroupCallable(const CreateGroupRequestT& request) const + { + return SubmitCallable(&DirectoryServiceDataClient::CreateGroup, request); + } + + /** + * An Async wrapper for CreateGroup that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void CreateGroupAsync(const CreateGroupRequestT& request, const CreateGroupResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceDataClient::CreateGroup, request, handler, context); + } + + /** + *

    Creates a new user.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::CreateUserOutcome CreateUser(const Model::CreateUserRequest& request) const; + + /** + * A Callable wrapper for CreateUser that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::CreateUserOutcomeCallable CreateUserCallable(const CreateUserRequestT& request) const + { + return SubmitCallable(&DirectoryServiceDataClient::CreateUser, request); + } + + /** + * An Async wrapper for CreateUser that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void CreateUserAsync(const CreateUserRequestT& request, const CreateUserResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceDataClient::CreateUser, request, handler, context); + } + + /** + *

    Deletes a group.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::DeleteGroupOutcome DeleteGroup(const Model::DeleteGroupRequest& request) const; + + /** + * A Callable wrapper for DeleteGroup that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::DeleteGroupOutcomeCallable DeleteGroupCallable(const DeleteGroupRequestT& request) const + { + return SubmitCallable(&DirectoryServiceDataClient::DeleteGroup, request); + } + + /** + * An Async wrapper for DeleteGroup that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void DeleteGroupAsync(const DeleteGroupRequestT& request, const DeleteGroupResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceDataClient::DeleteGroup, request, handler, context); + } + + /** + *

    Deletes a user.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::DeleteUserOutcome DeleteUser(const Model::DeleteUserRequest& request) const; + + /** + * A Callable wrapper for DeleteUser that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::DeleteUserOutcomeCallable DeleteUserCallable(const DeleteUserRequestT& request) const + { + return SubmitCallable(&DirectoryServiceDataClient::DeleteUser, request); + } + + /** + * An Async wrapper for DeleteUser that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void DeleteUserAsync(const DeleteUserRequestT& request, const DeleteUserResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceDataClient::DeleteUser, request, handler, context); + } + + /** + *

    Returns information about a specific group.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::DescribeGroupOutcome DescribeGroup(const Model::DescribeGroupRequest& request) const; + + /** + * A Callable wrapper for DescribeGroup that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::DescribeGroupOutcomeCallable DescribeGroupCallable(const DescribeGroupRequestT& request) const + { + return SubmitCallable(&DirectoryServiceDataClient::DescribeGroup, request); + } + + /** + * An Async wrapper for DescribeGroup that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void DescribeGroupAsync(const DescribeGroupRequestT& request, const DescribeGroupResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceDataClient::DescribeGroup, request, handler, context); + } + + /** + *

    Returns information about a specific user.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::DescribeUserOutcome DescribeUser(const Model::DescribeUserRequest& request) const; + + /** + * A Callable wrapper for DescribeUser that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::DescribeUserOutcomeCallable DescribeUserCallable(const DescribeUserRequestT& request) const + { + return SubmitCallable(&DirectoryServiceDataClient::DescribeUser, request); + } + + /** + * An Async wrapper for DescribeUser that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void DescribeUserAsync(const DescribeUserRequestT& request, const DescribeUserResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceDataClient::DescribeUser, request, handler, context); + } + + /** + *

    Deactivates an active user account. For information about how to enable an + * inactive user account, see ResetUserPassword + * in the Directory Service API Reference.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::DisableUserOutcome DisableUser(const Model::DisableUserRequest& request) const; + + /** + * A Callable wrapper for DisableUser that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::DisableUserOutcomeCallable DisableUserCallable(const DisableUserRequestT& request) const + { + return SubmitCallable(&DirectoryServiceDataClient::DisableUser, request); + } + + /** + * An Async wrapper for DisableUser that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void DisableUserAsync(const DisableUserRequestT& request, const DisableUserResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceDataClient::DisableUser, request, handler, context); + } + + /** + *

    Returns member information for the specified group.

    This operation + * supports pagination with the use of the NextToken request and + * response parameters. If more results are available, the + * ListGroupMembers.NextToken member contains a token that you pass in + * the next call to ListGroupMembers. This retrieves the next set of + * items.

    You can also specify a maximum number of return results with the + * MaxResults parameter.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::ListGroupMembersOutcome ListGroupMembers(const Model::ListGroupMembersRequest& request) const; + + /** + * A Callable wrapper for ListGroupMembers that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::ListGroupMembersOutcomeCallable ListGroupMembersCallable(const ListGroupMembersRequestT& request) const + { + return SubmitCallable(&DirectoryServiceDataClient::ListGroupMembers, request); + } + + /** + * An Async wrapper for ListGroupMembers that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void ListGroupMembersAsync(const ListGroupMembersRequestT& request, const ListGroupMembersResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceDataClient::ListGroupMembers, request, handler, context); + } + + /** + *

    Returns group information for the specified directory.

    This + * operation supports pagination with the use of the NextToken request + * and response parameters. If more results are available, the + * ListGroups.NextToken member contains a token that you pass in the + * next call to ListGroups. This retrieves the next set of items.

    + *

    You can also specify a maximum number of return results with the + * MaxResults parameter.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::ListGroupsOutcome ListGroups(const Model::ListGroupsRequest& request) const; + + /** + * A Callable wrapper for ListGroups that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::ListGroupsOutcomeCallable ListGroupsCallable(const ListGroupsRequestT& request) const + { + return SubmitCallable(&DirectoryServiceDataClient::ListGroups, request); + } + + /** + * An Async wrapper for ListGroups that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void ListGroupsAsync(const ListGroupsRequestT& request, const ListGroupsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceDataClient::ListGroups, request, handler, context); + } + + /** + *

    Returns group information for the specified member.

    This operation + * supports pagination with the use of the NextToken request and + * response parameters. If more results are available, the + * ListGroupsForMember.NextToken member contains a token that you pass + * in the next call to ListGroupsForMember. This retrieves the next + * set of items.

    You can also specify a maximum number of return results + * with the MaxResults parameter.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::ListGroupsForMemberOutcome ListGroupsForMember(const Model::ListGroupsForMemberRequest& request) const; + + /** + * A Callable wrapper for ListGroupsForMember that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::ListGroupsForMemberOutcomeCallable ListGroupsForMemberCallable(const ListGroupsForMemberRequestT& request) const + { + return SubmitCallable(&DirectoryServiceDataClient::ListGroupsForMember, request); + } + + /** + * An Async wrapper for ListGroupsForMember that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void ListGroupsForMemberAsync(const ListGroupsForMemberRequestT& request, const ListGroupsForMemberResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceDataClient::ListGroupsForMember, request, handler, context); + } + + /** + *

    Returns user information for the specified directory.

    This + * operation supports pagination with the use of the NextToken request + * and response parameters. If more results are available, the + * ListUsers.NextToken member contains a token that you pass in the + * next call to ListUsers. This retrieves the next set of items.

    + *

    You can also specify a maximum number of return results with the + * MaxResults parameter.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::ListUsersOutcome ListUsers(const Model::ListUsersRequest& request) const; + + /** + * A Callable wrapper for ListUsers that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::ListUsersOutcomeCallable ListUsersCallable(const ListUsersRequestT& request) const + { + return SubmitCallable(&DirectoryServiceDataClient::ListUsers, request); + } + + /** + * An Async wrapper for ListUsers that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void ListUsersAsync(const ListUsersRequestT& request, const ListUsersResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceDataClient::ListUsers, request, handler, context); + } + + /** + *

    Removes a member from a group.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::RemoveGroupMemberOutcome RemoveGroupMember(const Model::RemoveGroupMemberRequest& request) const; + + /** + * A Callable wrapper for RemoveGroupMember that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::RemoveGroupMemberOutcomeCallable RemoveGroupMemberCallable(const RemoveGroupMemberRequestT& request) const + { + return SubmitCallable(&DirectoryServiceDataClient::RemoveGroupMember, request); + } + + /** + * An Async wrapper for RemoveGroupMember that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void RemoveGroupMemberAsync(const RemoveGroupMemberRequestT& request, const RemoveGroupMemberResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceDataClient::RemoveGroupMember, request, handler, context); + } + + /** + *

    Searches the specified directory for a group. You can find groups that match + * the SearchString parameter with the value of their attributes + * included in the SearchString parameter.

    This operation + * supports pagination with the use of the NextToken request and + * response parameters. If more results are available, the + * SearchGroups.NextToken member contains a token that you pass in the + * next call to SearchGroups. This retrieves the next set of items. + *

    You can also specify a maximum number of return results with the + * MaxResults parameter.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::SearchGroupsOutcome SearchGroups(const Model::SearchGroupsRequest& request) const; + + /** + * A Callable wrapper for SearchGroups that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::SearchGroupsOutcomeCallable SearchGroupsCallable(const SearchGroupsRequestT& request) const + { + return SubmitCallable(&DirectoryServiceDataClient::SearchGroups, request); + } + + /** + * An Async wrapper for SearchGroups that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void SearchGroupsAsync(const SearchGroupsRequestT& request, const SearchGroupsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceDataClient::SearchGroups, request, handler, context); + } + + /** + *

    Searches the specified directory for a user. You can find users that match + * the SearchString parameter with the value of their attributes + * included in the SearchString parameter.

    This operation + * supports pagination with the use of the NextToken request and + * response parameters. If more results are available, the + * SearchUsers.NextToken member contains a token that you pass in the + * next call to SearchUsers. This retrieves the next set of items. + *

    You can also specify a maximum number of return results with the + * MaxResults parameter.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::SearchUsersOutcome SearchUsers(const Model::SearchUsersRequest& request) const; + + /** + * A Callable wrapper for SearchUsers that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::SearchUsersOutcomeCallable SearchUsersCallable(const SearchUsersRequestT& request) const + { + return SubmitCallable(&DirectoryServiceDataClient::SearchUsers, request); + } + + /** + * An Async wrapper for SearchUsers that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void SearchUsersAsync(const SearchUsersRequestT& request, const SearchUsersResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceDataClient::SearchUsers, request, handler, context); + } + + /** + *

    Updates group information.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::UpdateGroupOutcome UpdateGroup(const Model::UpdateGroupRequest& request) const; + + /** + * A Callable wrapper for UpdateGroup that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::UpdateGroupOutcomeCallable UpdateGroupCallable(const UpdateGroupRequestT& request) const + { + return SubmitCallable(&DirectoryServiceDataClient::UpdateGroup, request); + } + + /** + * An Async wrapper for UpdateGroup that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void UpdateGroupAsync(const UpdateGroupRequestT& request, const UpdateGroupResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceDataClient::UpdateGroup, request, handler, context); + } + + /** + *

    Updates user information.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::UpdateUserOutcome UpdateUser(const Model::UpdateUserRequest& request) const; + + /** + * A Callable wrapper for UpdateUser that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::UpdateUserOutcomeCallable UpdateUserCallable(const UpdateUserRequestT& request) const + { + return SubmitCallable(&DirectoryServiceDataClient::UpdateUser, request); + } + + /** + * An Async wrapper for UpdateUser that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void UpdateUserAsync(const UpdateUserRequestT& request, const UpdateUserResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceDataClient::UpdateUser, request, handler, context); + } + + + void OverrideEndpoint(const Aws::String& endpoint); + std::shared_ptr& accessEndpointProvider(); + private: + friend class Aws::Client::ClientWithAsyncTemplateMethods; + void init(const DirectoryServiceDataClientConfiguration& clientConfiguration); + + DirectoryServiceDataClientConfiguration m_clientConfiguration; + std::shared_ptr m_endpointProvider; + }; + +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataEndpointProvider.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataEndpointProvider.h new file mode 100644 index 00000000000..4969d8945ee --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataEndpointProvider.h @@ -0,0 +1,61 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include +#include + +#include + + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Endpoint +{ +using EndpointParameters = Aws::Endpoint::EndpointParameters; +using Aws::Endpoint::EndpointProviderBase; +using Aws::Endpoint::DefaultEndpointProvider; + +using DirectoryServiceDataClientContextParameters = Aws::Endpoint::ClientContextParameters; + +using DirectoryServiceDataClientConfiguration = Aws::Client::GenericClientConfiguration; +using DirectoryServiceDataBuiltInParameters = Aws::Endpoint::BuiltInParameters; + +/** + * The type for the DirectoryServiceData Client Endpoint Provider. + * Inherit from this Base class / "Interface" should you want to provide a custom endpoint provider. + * The SDK must use service-specific type for each service per specification. + */ +using DirectoryServiceDataEndpointProviderBase = + EndpointProviderBase; + +using DirectoryServiceDataDefaultEpProviderBase = + DefaultEndpointProvider; + +/** + * Default endpoint provider used for this service + */ +class AWS_DIRECTORYSERVICEDATA_API DirectoryServiceDataEndpointProvider : public DirectoryServiceDataDefaultEpProviderBase +{ +public: + using DirectoryServiceDataResolveEndpointOutcome = Aws::Endpoint::ResolveEndpointOutcome; + + DirectoryServiceDataEndpointProvider() + : DirectoryServiceDataDefaultEpProviderBase(Aws::DirectoryServiceData::DirectoryServiceDataEndpointRules::GetRulesBlob(), Aws::DirectoryServiceData::DirectoryServiceDataEndpointRules::RulesBlobSize) + {} + + ~DirectoryServiceDataEndpointProvider() + { + } +}; +} // namespace Endpoint +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataEndpointRules.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataEndpointRules.h new file mode 100644 index 00000000000..c72867f0a26 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataEndpointRules.h @@ -0,0 +1,23 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include + +namespace Aws +{ +namespace DirectoryServiceData +{ +class DirectoryServiceDataEndpointRules +{ +public: + static const size_t RulesBlobStrLen; + static const size_t RulesBlobSize; + + static const char* GetRulesBlob(); +}; +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataErrorMarshaller.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataErrorMarshaller.h new file mode 100644 index 00000000000..bbb42d815b6 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataErrorMarshaller.h @@ -0,0 +1,23 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once + +#include +#include + +namespace Aws +{ +namespace Client +{ + +class AWS_DIRECTORYSERVICEDATA_API DirectoryServiceDataErrorMarshaller : public Aws::Client::JsonErrorMarshaller +{ +public: + Aws::Client::AWSError FindErrorByName(const char* exceptionName) const override; +}; + +} // namespace Client +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataErrors.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataErrors.h new file mode 100644 index 00000000000..7b1574dec13 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataErrors.h @@ -0,0 +1,74 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once + +#include +#include +#include + +namespace Aws +{ +namespace DirectoryServiceData +{ +enum class DirectoryServiceDataErrors +{ + //From Core// + ////////////////////////////////////////////////////////////////////////////////////////// + INCOMPLETE_SIGNATURE = 0, + INTERNAL_FAILURE = 1, + INVALID_ACTION = 2, + INVALID_CLIENT_TOKEN_ID = 3, + INVALID_PARAMETER_COMBINATION = 4, + INVALID_QUERY_PARAMETER = 5, + INVALID_PARAMETER_VALUE = 6, + MISSING_ACTION = 7, // SDK should never allow + MISSING_AUTHENTICATION_TOKEN = 8, // SDK should never allow + MISSING_PARAMETER = 9, // SDK should never allow + OPT_IN_REQUIRED = 10, + REQUEST_EXPIRED = 11, + SERVICE_UNAVAILABLE = 12, + THROTTLING = 13, + VALIDATION = 14, + ACCESS_DENIED = 15, + RESOURCE_NOT_FOUND = 16, + UNRECOGNIZED_CLIENT = 17, + MALFORMED_QUERY_STRING = 18, + SLOW_DOWN = 19, + REQUEST_TIME_TOO_SKEWED = 20, + INVALID_SIGNATURE = 21, + SIGNATURE_DOES_NOT_MATCH = 22, + INVALID_ACCESS_KEY_ID = 23, + REQUEST_TIMEOUT = 24, + NETWORK_CONNECTION = 99, + + UNKNOWN = 100, + /////////////////////////////////////////////////////////////////////////////////////////// + + CONFLICT= static_cast(Aws::Client::CoreErrors::SERVICE_EXTENSION_START_RANGE) + 1, + DIRECTORY_UNAVAILABLE, + INTERNAL_SERVER +}; + +class AWS_DIRECTORYSERVICEDATA_API DirectoryServiceDataError : public Aws::Client::AWSError +{ +public: + DirectoryServiceDataError() {} + DirectoryServiceDataError(const Aws::Client::AWSError& rhs) : Aws::Client::AWSError(rhs) {} + DirectoryServiceDataError(Aws::Client::AWSError&& rhs) : Aws::Client::AWSError(rhs) {} + DirectoryServiceDataError(const Aws::Client::AWSError& rhs) : Aws::Client::AWSError(rhs) {} + DirectoryServiceDataError(Aws::Client::AWSError&& rhs) : Aws::Client::AWSError(rhs) {} + + template + T GetModeledError(); +}; + +namespace DirectoryServiceDataErrorMapper +{ + AWS_DIRECTORYSERVICEDATA_API Aws::Client::AWSError GetErrorForName(const char* errorName); +} + +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataRequest.h new file mode 100644 index 00000000000..53beaad752b --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataRequest.h @@ -0,0 +1,46 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace DirectoryServiceData +{ + class AWS_DIRECTORYSERVICEDATA_API DirectoryServiceDataRequest : public Aws::AmazonSerializableWebServiceRequest + { + public: + using EndpointParameter = Aws::Endpoint::EndpointParameter; + using EndpointParameters = Aws::Endpoint::EndpointParameters; + + virtual ~DirectoryServiceDataRequest () {} + + void AddParametersToRequest(Aws::Http::HttpRequest& httpRequest) const { AWS_UNREFERENCED_PARAM(httpRequest); } + + inline Aws::Http::HeaderValueCollection GetHeaders() const override + { + auto headers = GetRequestSpecificHeaders(); + + if(headers.size() == 0 || (headers.size() > 0 && headers.count(Aws::Http::CONTENT_TYPE_HEADER) == 0)) + { + headers.emplace(Aws::Http::HeaderValuePair(Aws::Http::CONTENT_TYPE_HEADER, Aws::JSON_CONTENT_TYPE )); + } + headers.emplace(Aws::Http::HeaderValuePair(Aws::Http::API_VERSION_HEADER, "2023-05-31")); + return headers; + } + + protected: + virtual Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const { return Aws::Http::HeaderValueCollection(); } + + }; + + +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataServiceClientModel.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataServiceClientModel.h new file mode 100644 index 00000000000..e56462afd49 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceDataServiceClientModel.h @@ -0,0 +1,160 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once + +/* Generic header includes */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +/* End of generic header includes */ + +/* Service model headers required in DirectoryServiceDataClient header */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +/* End of service model headers required in DirectoryServiceDataClient header */ + +namespace Aws +{ + namespace Http + { + class HttpClient; + class HttpClientFactory; + } // namespace Http + + namespace Utils + { + template< typename R, typename E> class Outcome; + + namespace Threading + { + class Executor; + } // namespace Threading + } // namespace Utils + + namespace Auth + { + class AWSCredentials; + class AWSCredentialsProvider; + } // namespace Auth + + namespace Client + { + class RetryStrategy; + } // namespace Client + + namespace DirectoryServiceData + { + using DirectoryServiceDataClientConfiguration = Aws::Client::GenericClientConfiguration; + using DirectoryServiceDataEndpointProviderBase = Aws::DirectoryServiceData::Endpoint::DirectoryServiceDataEndpointProviderBase; + using DirectoryServiceDataEndpointProvider = Aws::DirectoryServiceData::Endpoint::DirectoryServiceDataEndpointProvider; + + namespace Model + { + /* Service model forward declarations required in DirectoryServiceDataClient header */ + class AddGroupMemberRequest; + class CreateGroupRequest; + class CreateUserRequest; + class DeleteGroupRequest; + class DeleteUserRequest; + class DescribeGroupRequest; + class DescribeUserRequest; + class DisableUserRequest; + class ListGroupMembersRequest; + class ListGroupsRequest; + class ListGroupsForMemberRequest; + class ListUsersRequest; + class RemoveGroupMemberRequest; + class SearchGroupsRequest; + class SearchUsersRequest; + class UpdateGroupRequest; + class UpdateUserRequest; + /* End of service model forward declarations required in DirectoryServiceDataClient header */ + + /* Service model Outcome class definitions */ + typedef Aws::Utils::Outcome AddGroupMemberOutcome; + typedef Aws::Utils::Outcome CreateGroupOutcome; + typedef Aws::Utils::Outcome CreateUserOutcome; + typedef Aws::Utils::Outcome DeleteGroupOutcome; + typedef Aws::Utils::Outcome DeleteUserOutcome; + typedef Aws::Utils::Outcome DescribeGroupOutcome; + typedef Aws::Utils::Outcome DescribeUserOutcome; + typedef Aws::Utils::Outcome DisableUserOutcome; + typedef Aws::Utils::Outcome ListGroupMembersOutcome; + typedef Aws::Utils::Outcome ListGroupsOutcome; + typedef Aws::Utils::Outcome ListGroupsForMemberOutcome; + typedef Aws::Utils::Outcome ListUsersOutcome; + typedef Aws::Utils::Outcome RemoveGroupMemberOutcome; + typedef Aws::Utils::Outcome SearchGroupsOutcome; + typedef Aws::Utils::Outcome SearchUsersOutcome; + typedef Aws::Utils::Outcome UpdateGroupOutcome; + typedef Aws::Utils::Outcome UpdateUserOutcome; + /* End of service model Outcome class definitions */ + + /* Service model Outcome callable definitions */ + typedef std::future AddGroupMemberOutcomeCallable; + typedef std::future CreateGroupOutcomeCallable; + typedef std::future CreateUserOutcomeCallable; + typedef std::future DeleteGroupOutcomeCallable; + typedef std::future DeleteUserOutcomeCallable; + typedef std::future DescribeGroupOutcomeCallable; + typedef std::future DescribeUserOutcomeCallable; + typedef std::future DisableUserOutcomeCallable; + typedef std::future ListGroupMembersOutcomeCallable; + typedef std::future ListGroupsOutcomeCallable; + typedef std::future ListGroupsForMemberOutcomeCallable; + typedef std::future ListUsersOutcomeCallable; + typedef std::future RemoveGroupMemberOutcomeCallable; + typedef std::future SearchGroupsOutcomeCallable; + typedef std::future SearchUsersOutcomeCallable; + typedef std::future UpdateGroupOutcomeCallable; + typedef std::future UpdateUserOutcomeCallable; + /* End of service model Outcome callable definitions */ + } // namespace Model + + class DirectoryServiceDataClient; + + /* Service model async handlers definitions */ + typedef std::function&) > AddGroupMemberResponseReceivedHandler; + typedef std::function&) > CreateGroupResponseReceivedHandler; + typedef std::function&) > CreateUserResponseReceivedHandler; + typedef std::function&) > DeleteGroupResponseReceivedHandler; + typedef std::function&) > DeleteUserResponseReceivedHandler; + typedef std::function&) > DescribeGroupResponseReceivedHandler; + typedef std::function&) > DescribeUserResponseReceivedHandler; + typedef std::function&) > DisableUserResponseReceivedHandler; + typedef std::function&) > ListGroupMembersResponseReceivedHandler; + typedef std::function&) > ListGroupsResponseReceivedHandler; + typedef std::function&) > ListGroupsForMemberResponseReceivedHandler; + typedef std::function&) > ListUsersResponseReceivedHandler; + typedef std::function&) > RemoveGroupMemberResponseReceivedHandler; + typedef std::function&) > SearchGroupsResponseReceivedHandler; + typedef std::function&) > SearchUsersResponseReceivedHandler; + typedef std::function&) > UpdateGroupResponseReceivedHandler; + typedef std::function&) > UpdateUserResponseReceivedHandler; + /* End of service model async handlers definitions */ + } // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceData_EXPORTS.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceData_EXPORTS.h new file mode 100644 index 00000000000..72de9da56c0 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/DirectoryServiceData_EXPORTS.h @@ -0,0 +1,32 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once + +#ifdef _MSC_VER + //disable windows complaining about max template size. + #pragma warning (disable : 4503) +#endif // _MSC_VER + +#if defined (USE_WINDOWS_DLL_SEMANTICS) || defined (_WIN32) + #ifdef _MSC_VER + #pragma warning(disable : 4251) + #endif // _MSC_VER + + #ifdef USE_IMPORT_EXPORT + #ifdef AWS_DIRECTORYSERVICEDATA_EXPORTS + #define AWS_DIRECTORYSERVICEDATA_API __declspec(dllexport) + #else + #define AWS_DIRECTORYSERVICEDATA_API __declspec(dllimport) + #endif /* AWS_DIRECTORYSERVICEDATA_EXPORTS */ + #define AWS_DIRECTORYSERVICEDATA_EXTERN + #else + #define AWS_DIRECTORYSERVICEDATA_API + #define AWS_DIRECTORYSERVICEDATA_EXTERN extern + #endif // USE_IMPORT_EXPORT +#else // defined (USE_WINDOWS_DLL_SEMANTICS) || defined (WIN32) + #define AWS_DIRECTORYSERVICEDATA_API + #define AWS_DIRECTORYSERVICEDATA_EXTERN extern +#endif // defined (USE_WINDOWS_DLL_SEMANTICS) || defined (WIN32) diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AccessDeniedException.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AccessDeniedException.h new file mode 100644 index 00000000000..b3caad6a7ee --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AccessDeniedException.h @@ -0,0 +1,80 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include + +namespace Aws +{ +namespace Utils +{ +namespace Json +{ + class JsonValue; + class JsonView; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + *

    You don't have permission to perform the request or access the directory. It + * can also occur when the DirectoryId doesn't exist or the user, + * member, or group might be outside of your organizational unit (OU).

    + * Make sure that you have the authentication and authorization to perform the + * action. Review the directory information in the request, and make sure that the + * object isn't outside of your OU.

    See Also:

    AWS + * API Reference

    + */ + class AccessDeniedException + { + public: + AWS_DIRECTORYSERVICEDATA_API AccessDeniedException(); + AWS_DIRECTORYSERVICEDATA_API AccessDeniedException(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API AccessDeniedException& operator=(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API Aws::Utils::Json::JsonValue Jsonize() const; + + + ///@{ + + inline const Aws::String& GetMessage() const{ return m_message; } + inline bool MessageHasBeenSet() const { return m_messageHasBeenSet; } + inline void SetMessage(const Aws::String& value) { m_messageHasBeenSet = true; m_message = value; } + inline void SetMessage(Aws::String&& value) { m_messageHasBeenSet = true; m_message = std::move(value); } + inline void SetMessage(const char* value) { m_messageHasBeenSet = true; m_message.assign(value); } + inline AccessDeniedException& WithMessage(const Aws::String& value) { SetMessage(value); return *this;} + inline AccessDeniedException& WithMessage(Aws::String&& value) { SetMessage(std::move(value)); return *this;} + inline AccessDeniedException& WithMessage(const char* value) { SetMessage(value); return *this;} + ///@} + + ///@{ + /** + *

    Reason the request was unauthorized.

    + */ + inline const AccessDeniedReason& GetReason() const{ return m_reason; } + inline bool ReasonHasBeenSet() const { return m_reasonHasBeenSet; } + inline void SetReason(const AccessDeniedReason& value) { m_reasonHasBeenSet = true; m_reason = value; } + inline void SetReason(AccessDeniedReason&& value) { m_reasonHasBeenSet = true; m_reason = std::move(value); } + inline AccessDeniedException& WithReason(const AccessDeniedReason& value) { SetReason(value); return *this;} + inline AccessDeniedException& WithReason(AccessDeniedReason&& value) { SetReason(std::move(value)); return *this;} + ///@} + private: + + Aws::String m_message; + bool m_messageHasBeenSet = false; + + AccessDeniedReason m_reason; + bool m_reasonHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AccessDeniedReason.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AccessDeniedReason.h new file mode 100644 index 00000000000..1f564c14baa --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AccessDeniedReason.h @@ -0,0 +1,32 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Model +{ + enum class AccessDeniedReason + { + NOT_SET, + IAM_AUTH, + DIRECTORY_AUTH, + DATA_DISABLED + }; + +namespace AccessDeniedReasonMapper +{ +AWS_DIRECTORYSERVICEDATA_API AccessDeniedReason GetAccessDeniedReasonForName(const Aws::String& name); + +AWS_DIRECTORYSERVICEDATA_API Aws::String GetNameForAccessDeniedReason(AccessDeniedReason value); +} // namespace AccessDeniedReasonMapper +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AddGroupMemberRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AddGroupMemberRequest.h new file mode 100644 index 00000000000..b976cf9405a --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AddGroupMemberRequest.h @@ -0,0 +1,145 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace Http +{ + class URI; +} //namespace Http +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + */ + class AddGroupMemberRequest : public DirectoryServiceDataRequest + { + public: + AWS_DIRECTORYSERVICEDATA_API AddGroupMemberRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "AddGroupMember"; } + + AWS_DIRECTORYSERVICEDATA_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICEDATA_API void AddQueryStringParameters(Aws::Http::URI& uri) const override; + + + ///@{ + /** + *

    A unique and case-sensitive identifier that you provide to make sure the + * idempotency of the request, so multiple identical calls have the same effect as + * one single call.

    A client token is valid for 8 hours after the first + * request that uses it completes. After 8 hours, any request with the same client + * token is treated as a new request. If the request succeeds, any future uses of + * that token will be idempotent for another 8 hours.

    If you submit a + * request with the same client token but change one of the other parameters within + * the 8-hour idempotency window, Directory Service Data returns an + * ConflictException.

    This parameter is optional when + * using the CLI or SDK.

    + */ + inline const Aws::String& GetClientToken() const{ return m_clientToken; } + inline bool ClientTokenHasBeenSet() const { return m_clientTokenHasBeenSet; } + inline void SetClientToken(const Aws::String& value) { m_clientTokenHasBeenSet = true; m_clientToken = value; } + inline void SetClientToken(Aws::String&& value) { m_clientTokenHasBeenSet = true; m_clientToken = std::move(value); } + inline void SetClientToken(const char* value) { m_clientTokenHasBeenSet = true; m_clientToken.assign(value); } + inline AddGroupMemberRequest& WithClientToken(const Aws::String& value) { SetClientToken(value); return *this;} + inline AddGroupMemberRequest& WithClientToken(Aws::String&& value) { SetClientToken(std::move(value)); return *this;} + inline AddGroupMemberRequest& WithClientToken(const char* value) { SetClientToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the group.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline AddGroupMemberRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline AddGroupMemberRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline AddGroupMemberRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The name of the group.

    + */ + inline const Aws::String& GetGroupName() const{ return m_groupName; } + inline bool GroupNameHasBeenSet() const { return m_groupNameHasBeenSet; } + inline void SetGroupName(const Aws::String& value) { m_groupNameHasBeenSet = true; m_groupName = value; } + inline void SetGroupName(Aws::String&& value) { m_groupNameHasBeenSet = true; m_groupName = std::move(value); } + inline void SetGroupName(const char* value) { m_groupNameHasBeenSet = true; m_groupName.assign(value); } + inline AddGroupMemberRequest& WithGroupName(const Aws::String& value) { SetGroupName(value); return *this;} + inline AddGroupMemberRequest& WithGroupName(Aws::String&& value) { SetGroupName(std::move(value)); return *this;} + inline AddGroupMemberRequest& WithGroupName(const char* value) { SetGroupName(value); return *this;} + ///@} + + ///@{ + /** + *

    The SAMAccountName of the user, group, or computer to add as a + * group member.

    + */ + inline const Aws::String& GetMemberName() const{ return m_memberName; } + inline bool MemberNameHasBeenSet() const { return m_memberNameHasBeenSet; } + inline void SetMemberName(const Aws::String& value) { m_memberNameHasBeenSet = true; m_memberName = value; } + inline void SetMemberName(Aws::String&& value) { m_memberNameHasBeenSet = true; m_memberName = std::move(value); } + inline void SetMemberName(const char* value) { m_memberNameHasBeenSet = true; m_memberName.assign(value); } + inline AddGroupMemberRequest& WithMemberName(const Aws::String& value) { SetMemberName(value); return *this;} + inline AddGroupMemberRequest& WithMemberName(Aws::String&& value) { SetMemberName(std::move(value)); return *this;} + inline AddGroupMemberRequest& WithMemberName(const char* value) { SetMemberName(value); return *this;} + ///@} + + ///@{ + /** + *

    The domain name that's associated with the group member. This parameter is + * required only when adding a member outside of your Managed Microsoft AD domain + * to a group inside of your Managed Microsoft AD domain. This parameter defaults + * to the Managed Microsoft AD domain.

    This parameter is case + * insensitive.

    + */ + inline const Aws::String& GetMemberRealm() const{ return m_memberRealm; } + inline bool MemberRealmHasBeenSet() const { return m_memberRealmHasBeenSet; } + inline void SetMemberRealm(const Aws::String& value) { m_memberRealmHasBeenSet = true; m_memberRealm = value; } + inline void SetMemberRealm(Aws::String&& value) { m_memberRealmHasBeenSet = true; m_memberRealm = std::move(value); } + inline void SetMemberRealm(const char* value) { m_memberRealmHasBeenSet = true; m_memberRealm.assign(value); } + inline AddGroupMemberRequest& WithMemberRealm(const Aws::String& value) { SetMemberRealm(value); return *this;} + inline AddGroupMemberRequest& WithMemberRealm(Aws::String&& value) { SetMemberRealm(std::move(value)); return *this;} + inline AddGroupMemberRequest& WithMemberRealm(const char* value) { SetMemberRealm(value); return *this;} + ///@} + private: + + Aws::String m_clientToken; + bool m_clientTokenHasBeenSet = false; + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + + Aws::String m_groupName; + bool m_groupNameHasBeenSet = false; + + Aws::String m_memberName; + bool m_memberNameHasBeenSet = false; + + Aws::String m_memberRealm; + bool m_memberRealmHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AddGroupMemberResult.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AddGroupMemberResult.h new file mode 100644 index 00000000000..98432ed90ed --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AddGroupMemberResult.h @@ -0,0 +1,52 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + class AddGroupMemberResult + { + public: + AWS_DIRECTORYSERVICEDATA_API AddGroupMemberResult(); + AWS_DIRECTORYSERVICEDATA_API AddGroupMemberResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICEDATA_API AddGroupMemberResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline AddGroupMemberResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline AddGroupMemberResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline AddGroupMemberResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AttributeValue.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AttributeValue.h new file mode 100644 index 00000000000..fc74f9ca44f --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/AttributeValue.h @@ -0,0 +1,116 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include + +namespace Aws +{ +namespace Utils +{ +namespace Json +{ + class JsonValue; + class JsonView; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + *

    The data type for an attribute. Each attribute value is described as a + * name-value pair. The name is the AD schema name, and the value is the data + * itself. For a list of supported attributes, see Directory + * Service Data Attributes.

    See Also:

    AWS + * API Reference

    + */ + class AttributeValue + { + public: + AWS_DIRECTORYSERVICEDATA_API AttributeValue(); + AWS_DIRECTORYSERVICEDATA_API AttributeValue(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API AttributeValue& operator=(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API Aws::Utils::Json::JsonValue Jsonize() const; + + + ///@{ + /** + *

    Indicates that the attribute type value is a boolean. For example:

    + * "BOOL": true

    + */ + inline bool GetBOOL() const{ return m_bOOL; } + inline bool BOOLHasBeenSet() const { return m_bOOLHasBeenSet; } + inline void SetBOOL(bool value) { m_bOOLHasBeenSet = true; m_bOOL = value; } + inline AttributeValue& WithBOOL(bool value) { SetBOOL(value); return *this;} + ///@} + + ///@{ + /** + *

    Indicates that the attribute type value is a number. For example:

    + * "N": "16"

    + */ + inline long long GetN() const{ return m_n; } + inline bool NHasBeenSet() const { return m_nHasBeenSet; } + inline void SetN(long long value) { m_nHasBeenSet = true; m_n = value; } + inline AttributeValue& WithN(long long value) { SetN(value); return *this;} + ///@} + + ///@{ + /** + *

    Indicates that the attribute type value is a string. For example:

    + * "S": "S Group"

    + */ + inline const Aws::String& GetS() const{ return m_s; } + inline bool SHasBeenSet() const { return m_sHasBeenSet; } + inline void SetS(const Aws::String& value) { m_sHasBeenSet = true; m_s = value; } + inline void SetS(Aws::String&& value) { m_sHasBeenSet = true; m_s = std::move(value); } + inline void SetS(const char* value) { m_sHasBeenSet = true; m_s.assign(value); } + inline AttributeValue& WithS(const Aws::String& value) { SetS(value); return *this;} + inline AttributeValue& WithS(Aws::String&& value) { SetS(std::move(value)); return *this;} + inline AttributeValue& WithS(const char* value) { SetS(value); return *this;} + ///@} + + ///@{ + /** + *

    Indicates that the attribute type value is a string set. For example:

    + *

    "SS": + * ["sample_service_class/host.sample.com:1234/sample_service_name_1", + * "sample_service_class/host.sample.com:1234/sample_service_name_2"]

    + */ + inline const Aws::Vector& GetSS() const{ return m_sS; } + inline bool SSHasBeenSet() const { return m_sSHasBeenSet; } + inline void SetSS(const Aws::Vector& value) { m_sSHasBeenSet = true; m_sS = value; } + inline void SetSS(Aws::Vector&& value) { m_sSHasBeenSet = true; m_sS = std::move(value); } + inline AttributeValue& WithSS(const Aws::Vector& value) { SetSS(value); return *this;} + inline AttributeValue& WithSS(Aws::Vector&& value) { SetSS(std::move(value)); return *this;} + inline AttributeValue& AddSS(const Aws::String& value) { m_sSHasBeenSet = true; m_sS.push_back(value); return *this; } + inline AttributeValue& AddSS(Aws::String&& value) { m_sSHasBeenSet = true; m_sS.push_back(std::move(value)); return *this; } + inline AttributeValue& AddSS(const char* value) { m_sSHasBeenSet = true; m_sS.push_back(value); return *this; } + ///@} + private: + + bool m_bOOL; + bool m_bOOLHasBeenSet = false; + + long long m_n; + bool m_nHasBeenSet = false; + + Aws::String m_s; + bool m_sHasBeenSet = false; + + Aws::Vector m_sS; + bool m_sSHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/CreateGroupRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/CreateGroupRequest.h new file mode 100644 index 00000000000..da2bfd05e06 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/CreateGroupRequest.h @@ -0,0 +1,166 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace Http +{ + class URI; +} //namespace Http +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + */ + class CreateGroupRequest : public DirectoryServiceDataRequest + { + public: + AWS_DIRECTORYSERVICEDATA_API CreateGroupRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "CreateGroup"; } + + AWS_DIRECTORYSERVICEDATA_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICEDATA_API void AddQueryStringParameters(Aws::Http::URI& uri) const override; + + + ///@{ + /** + *

    A unique and case-sensitive identifier that you provide to make sure the + * idempotency of the request, so multiple identical calls have the same effect as + * one single call.

    A client token is valid for 8 hours after the first + * request that uses it completes. After 8 hours, any request with the same client + * token is treated as a new request. If the request succeeds, any future uses of + * that token will be idempotent for another 8 hours.

    If you submit a + * request with the same client token but change one of the other parameters within + * the 8-hour idempotency window, Directory Service Data returns an + * ConflictException.

    This parameter is optional when + * using the CLI or SDK.

    + */ + inline const Aws::String& GetClientToken() const{ return m_clientToken; } + inline bool ClientTokenHasBeenSet() const { return m_clientTokenHasBeenSet; } + inline void SetClientToken(const Aws::String& value) { m_clientTokenHasBeenSet = true; m_clientToken = value; } + inline void SetClientToken(Aws::String&& value) { m_clientTokenHasBeenSet = true; m_clientToken = std::move(value); } + inline void SetClientToken(const char* value) { m_clientTokenHasBeenSet = true; m_clientToken.assign(value); } + inline CreateGroupRequest& WithClientToken(const Aws::String& value) { SetClientToken(value); return *this;} + inline CreateGroupRequest& WithClientToken(Aws::String&& value) { SetClientToken(std::move(value)); return *this;} + inline CreateGroupRequest& WithClientToken(const char* value) { SetClientToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the group.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline CreateGroupRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline CreateGroupRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline CreateGroupRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The scope of the AD group. For details, see Active + * Directory security group scope.

    + */ + inline const GroupScope& GetGroupScope() const{ return m_groupScope; } + inline bool GroupScopeHasBeenSet() const { return m_groupScopeHasBeenSet; } + inline void SetGroupScope(const GroupScope& value) { m_groupScopeHasBeenSet = true; m_groupScope = value; } + inline void SetGroupScope(GroupScope&& value) { m_groupScopeHasBeenSet = true; m_groupScope = std::move(value); } + inline CreateGroupRequest& WithGroupScope(const GroupScope& value) { SetGroupScope(value); return *this;} + inline CreateGroupRequest& WithGroupScope(GroupScope&& value) { SetGroupScope(std::move(value)); return *this;} + ///@} + + ///@{ + /** + *

    The AD group type. For details, see Active + * Directory security group type.

    + */ + inline const GroupType& GetGroupType() const{ return m_groupType; } + inline bool GroupTypeHasBeenSet() const { return m_groupTypeHasBeenSet; } + inline void SetGroupType(const GroupType& value) { m_groupTypeHasBeenSet = true; m_groupType = value; } + inline void SetGroupType(GroupType&& value) { m_groupTypeHasBeenSet = true; m_groupType = std::move(value); } + inline CreateGroupRequest& WithGroupType(const GroupType& value) { SetGroupType(value); return *this;} + inline CreateGroupRequest& WithGroupType(GroupType&& value) { SetGroupType(std::move(value)); return *this;} + ///@} + + ///@{ + /** + *

    An expression that defines one or more attributes with the data type and + * value of each attribute.

    + */ + inline const Aws::Map& GetOtherAttributes() const{ return m_otherAttributes; } + inline bool OtherAttributesHasBeenSet() const { return m_otherAttributesHasBeenSet; } + inline void SetOtherAttributes(const Aws::Map& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes = value; } + inline void SetOtherAttributes(Aws::Map&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes = std::move(value); } + inline CreateGroupRequest& WithOtherAttributes(const Aws::Map& value) { SetOtherAttributes(value); return *this;} + inline CreateGroupRequest& WithOtherAttributes(Aws::Map&& value) { SetOtherAttributes(std::move(value)); return *this;} + inline CreateGroupRequest& AddOtherAttributes(const Aws::String& key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, value); return *this; } + inline CreateGroupRequest& AddOtherAttributes(Aws::String&& key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(std::move(key), value); return *this; } + inline CreateGroupRequest& AddOtherAttributes(const Aws::String& key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, std::move(value)); return *this; } + inline CreateGroupRequest& AddOtherAttributes(Aws::String&& key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(std::move(key), std::move(value)); return *this; } + inline CreateGroupRequest& AddOtherAttributes(const char* key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, std::move(value)); return *this; } + inline CreateGroupRequest& AddOtherAttributes(const char* key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, value); return *this; } + ///@} + + ///@{ + /** + *

    The name of the group.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline bool SAMAccountNameHasBeenSet() const { return m_sAMAccountNameHasBeenSet; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName.assign(value); } + inline CreateGroupRequest& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline CreateGroupRequest& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline CreateGroupRequest& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + private: + + Aws::String m_clientToken; + bool m_clientTokenHasBeenSet = false; + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + + GroupScope m_groupScope; + bool m_groupScopeHasBeenSet = false; + + GroupType m_groupType; + bool m_groupTypeHasBeenSet = false; + + Aws::Map m_otherAttributes; + bool m_otherAttributesHasBeenSet = false; + + Aws::String m_sAMAccountName; + bool m_sAMAccountNameHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/CreateGroupResult.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/CreateGroupResult.h new file mode 100644 index 00000000000..750efd01b4f --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/CreateGroupResult.h @@ -0,0 +1,97 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + class CreateGroupResult + { + public: + AWS_DIRECTORYSERVICEDATA_API CreateGroupResult(); + AWS_DIRECTORYSERVICEDATA_API CreateGroupResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICEDATA_API CreateGroupResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the group.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryId.assign(value); } + inline CreateGroupResult& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline CreateGroupResult& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline CreateGroupResult& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The name of the group.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountName.assign(value); } + inline CreateGroupResult& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline CreateGroupResult& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline CreateGroupResult& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + + ///@{ + /** + *

    The unique security identifier (SID) of the group.

    + */ + inline const Aws::String& GetSID() const{ return m_sID; } + inline void SetSID(const Aws::String& value) { m_sID = value; } + inline void SetSID(Aws::String&& value) { m_sID = std::move(value); } + inline void SetSID(const char* value) { m_sID.assign(value); } + inline CreateGroupResult& WithSID(const Aws::String& value) { SetSID(value); return *this;} + inline CreateGroupResult& WithSID(Aws::String&& value) { SetSID(std::move(value)); return *this;} + inline CreateGroupResult& WithSID(const char* value) { SetSID(value); return *this;} + ///@} + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline CreateGroupResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline CreateGroupResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline CreateGroupResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + + Aws::String m_sAMAccountName; + + Aws::String m_sID; + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/CreateUserRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/CreateUserRequest.h new file mode 100644 index 00000000000..e02ba4ec3a7 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/CreateUserRequest.h @@ -0,0 +1,185 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace Http +{ + class URI; +} //namespace Http +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + */ + class CreateUserRequest : public DirectoryServiceDataRequest + { + public: + AWS_DIRECTORYSERVICEDATA_API CreateUserRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "CreateUser"; } + + AWS_DIRECTORYSERVICEDATA_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICEDATA_API void AddQueryStringParameters(Aws::Http::URI& uri) const override; + + + ///@{ + /** + *

    A unique and case-sensitive identifier that you provide to make sure the + * idempotency of the request, so multiple identical calls have the same effect as + * one single call.

    A client token is valid for 8 hours after the first + * request that uses it completes. After 8 hours, any request with the same client + * token is treated as a new request. If the request succeeds, any future uses of + * that token will be idempotent for another 8 hours.

    If you submit a + * request with the same client token but change one of the other parameters within + * the 8-hour idempotency window, Directory Service Data returns an + * ConflictException.

    This parameter is optional when + * using the CLI or SDK.

    + */ + inline const Aws::String& GetClientToken() const{ return m_clientToken; } + inline bool ClientTokenHasBeenSet() const { return m_clientTokenHasBeenSet; } + inline void SetClientToken(const Aws::String& value) { m_clientTokenHasBeenSet = true; m_clientToken = value; } + inline void SetClientToken(Aws::String&& value) { m_clientTokenHasBeenSet = true; m_clientToken = std::move(value); } + inline void SetClientToken(const char* value) { m_clientTokenHasBeenSet = true; m_clientToken.assign(value); } + inline CreateUserRequest& WithClientToken(const Aws::String& value) { SetClientToken(value); return *this;} + inline CreateUserRequest& WithClientToken(Aws::String&& value) { SetClientToken(std::move(value)); return *this;} + inline CreateUserRequest& WithClientToken(const char* value) { SetClientToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The identifier (ID) of the directory that’s associated with the user.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline CreateUserRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline CreateUserRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline CreateUserRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The email address of the user.

    + */ + inline const Aws::String& GetEmailAddress() const{ return m_emailAddress; } + inline bool EmailAddressHasBeenSet() const { return m_emailAddressHasBeenSet; } + inline void SetEmailAddress(const Aws::String& value) { m_emailAddressHasBeenSet = true; m_emailAddress = value; } + inline void SetEmailAddress(Aws::String&& value) { m_emailAddressHasBeenSet = true; m_emailAddress = std::move(value); } + inline void SetEmailAddress(const char* value) { m_emailAddressHasBeenSet = true; m_emailAddress.assign(value); } + inline CreateUserRequest& WithEmailAddress(const Aws::String& value) { SetEmailAddress(value); return *this;} + inline CreateUserRequest& WithEmailAddress(Aws::String&& value) { SetEmailAddress(std::move(value)); return *this;} + inline CreateUserRequest& WithEmailAddress(const char* value) { SetEmailAddress(value); return *this;} + ///@} + + ///@{ + /** + *

    The first name of the user.

    + */ + inline const Aws::String& GetGivenName() const{ return m_givenName; } + inline bool GivenNameHasBeenSet() const { return m_givenNameHasBeenSet; } + inline void SetGivenName(const Aws::String& value) { m_givenNameHasBeenSet = true; m_givenName = value; } + inline void SetGivenName(Aws::String&& value) { m_givenNameHasBeenSet = true; m_givenName = std::move(value); } + inline void SetGivenName(const char* value) { m_givenNameHasBeenSet = true; m_givenName.assign(value); } + inline CreateUserRequest& WithGivenName(const Aws::String& value) { SetGivenName(value); return *this;} + inline CreateUserRequest& WithGivenName(Aws::String&& value) { SetGivenName(std::move(value)); return *this;} + inline CreateUserRequest& WithGivenName(const char* value) { SetGivenName(value); return *this;} + ///@} + + ///@{ + /** + *

    An expression that defines one or more attribute names with the data type + * and value of each attribute. A key is an attribute name, and the value is a list + * of maps. For a list of supported attributes, see Directory + * Service Data Attributes.

    Attribute names are case + * insensitive.

    + */ + inline const Aws::Map& GetOtherAttributes() const{ return m_otherAttributes; } + inline bool OtherAttributesHasBeenSet() const { return m_otherAttributesHasBeenSet; } + inline void SetOtherAttributes(const Aws::Map& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes = value; } + inline void SetOtherAttributes(Aws::Map&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes = std::move(value); } + inline CreateUserRequest& WithOtherAttributes(const Aws::Map& value) { SetOtherAttributes(value); return *this;} + inline CreateUserRequest& WithOtherAttributes(Aws::Map&& value) { SetOtherAttributes(std::move(value)); return *this;} + inline CreateUserRequest& AddOtherAttributes(const Aws::String& key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, value); return *this; } + inline CreateUserRequest& AddOtherAttributes(Aws::String&& key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(std::move(key), value); return *this; } + inline CreateUserRequest& AddOtherAttributes(const Aws::String& key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, std::move(value)); return *this; } + inline CreateUserRequest& AddOtherAttributes(Aws::String&& key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(std::move(key), std::move(value)); return *this; } + inline CreateUserRequest& AddOtherAttributes(const char* key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, std::move(value)); return *this; } + inline CreateUserRequest& AddOtherAttributes(const char* key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, value); return *this; } + ///@} + + ///@{ + /** + *

    The name of the user.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline bool SAMAccountNameHasBeenSet() const { return m_sAMAccountNameHasBeenSet; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName.assign(value); } + inline CreateUserRequest& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline CreateUserRequest& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline CreateUserRequest& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + + ///@{ + /** + *

    The last name of the user.

    + */ + inline const Aws::String& GetSurname() const{ return m_surname; } + inline bool SurnameHasBeenSet() const { return m_surnameHasBeenSet; } + inline void SetSurname(const Aws::String& value) { m_surnameHasBeenSet = true; m_surname = value; } + inline void SetSurname(Aws::String&& value) { m_surnameHasBeenSet = true; m_surname = std::move(value); } + inline void SetSurname(const char* value) { m_surnameHasBeenSet = true; m_surname.assign(value); } + inline CreateUserRequest& WithSurname(const Aws::String& value) { SetSurname(value); return *this;} + inline CreateUserRequest& WithSurname(Aws::String&& value) { SetSurname(std::move(value)); return *this;} + inline CreateUserRequest& WithSurname(const char* value) { SetSurname(value); return *this;} + ///@} + private: + + Aws::String m_clientToken; + bool m_clientTokenHasBeenSet = false; + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + + Aws::String m_emailAddress; + bool m_emailAddressHasBeenSet = false; + + Aws::String m_givenName; + bool m_givenNameHasBeenSet = false; + + Aws::Map m_otherAttributes; + bool m_otherAttributesHasBeenSet = false; + + Aws::String m_sAMAccountName; + bool m_sAMAccountNameHasBeenSet = false; + + Aws::String m_surname; + bool m_surnameHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/CreateUserResult.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/CreateUserResult.h new file mode 100644 index 00000000000..c9791535a22 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/CreateUserResult.h @@ -0,0 +1,97 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + class CreateUserResult + { + public: + AWS_DIRECTORYSERVICEDATA_API CreateUserResult(); + AWS_DIRECTORYSERVICEDATA_API CreateUserResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICEDATA_API CreateUserResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + /** + *

    The identifier (ID) of the directory where the address block is added.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryId.assign(value); } + inline CreateUserResult& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline CreateUserResult& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline CreateUserResult& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The name of the user.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountName.assign(value); } + inline CreateUserResult& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline CreateUserResult& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline CreateUserResult& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + + ///@{ + /** + *

    The unique security identifier (SID) of the user.

    + */ + inline const Aws::String& GetSID() const{ return m_sID; } + inline void SetSID(const Aws::String& value) { m_sID = value; } + inline void SetSID(Aws::String&& value) { m_sID = std::move(value); } + inline void SetSID(const char* value) { m_sID.assign(value); } + inline CreateUserResult& WithSID(const Aws::String& value) { SetSID(value); return *this;} + inline CreateUserResult& WithSID(Aws::String&& value) { SetSID(std::move(value)); return *this;} + inline CreateUserResult& WithSID(const char* value) { SetSID(value); return *this;} + ///@} + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline CreateUserResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline CreateUserResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline CreateUserResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + + Aws::String m_sAMAccountName; + + Aws::String m_sID; + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DeleteGroupRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DeleteGroupRequest.h new file mode 100644 index 00000000000..0dcc557cf65 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DeleteGroupRequest.h @@ -0,0 +1,106 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace Http +{ + class URI; +} //namespace Http +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + */ + class DeleteGroupRequest : public DirectoryServiceDataRequest + { + public: + AWS_DIRECTORYSERVICEDATA_API DeleteGroupRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "DeleteGroup"; } + + AWS_DIRECTORYSERVICEDATA_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICEDATA_API void AddQueryStringParameters(Aws::Http::URI& uri) const override; + + + ///@{ + /** + *

    A unique and case-sensitive identifier that you provide to make sure the + * idempotency of the request, so multiple identical calls have the same effect as + * one single call.

    A client token is valid for 8 hours after the first + * request that uses it completes. After 8 hours, any request with the same client + * token is treated as a new request. If the request succeeds, any future uses of + * that token will be idempotent for another 8 hours.

    If you submit a + * request with the same client token but change one of the other parameters within + * the 8-hour idempotency window, Directory Service Data returns an + * ConflictException.

    This parameter is optional when + * using the CLI or SDK.

    + */ + inline const Aws::String& GetClientToken() const{ return m_clientToken; } + inline bool ClientTokenHasBeenSet() const { return m_clientTokenHasBeenSet; } + inline void SetClientToken(const Aws::String& value) { m_clientTokenHasBeenSet = true; m_clientToken = value; } + inline void SetClientToken(Aws::String&& value) { m_clientTokenHasBeenSet = true; m_clientToken = std::move(value); } + inline void SetClientToken(const char* value) { m_clientTokenHasBeenSet = true; m_clientToken.assign(value); } + inline DeleteGroupRequest& WithClientToken(const Aws::String& value) { SetClientToken(value); return *this;} + inline DeleteGroupRequest& WithClientToken(Aws::String&& value) { SetClientToken(std::move(value)); return *this;} + inline DeleteGroupRequest& WithClientToken(const char* value) { SetClientToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the group.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline DeleteGroupRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline DeleteGroupRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline DeleteGroupRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The name of the group.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline bool SAMAccountNameHasBeenSet() const { return m_sAMAccountNameHasBeenSet; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName.assign(value); } + inline DeleteGroupRequest& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline DeleteGroupRequest& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline DeleteGroupRequest& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + private: + + Aws::String m_clientToken; + bool m_clientTokenHasBeenSet = false; + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + + Aws::String m_sAMAccountName; + bool m_sAMAccountNameHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DeleteGroupResult.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DeleteGroupResult.h new file mode 100644 index 00000000000..bf20a04e41d --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DeleteGroupResult.h @@ -0,0 +1,52 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + class DeleteGroupResult + { + public: + AWS_DIRECTORYSERVICEDATA_API DeleteGroupResult(); + AWS_DIRECTORYSERVICEDATA_API DeleteGroupResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICEDATA_API DeleteGroupResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline DeleteGroupResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline DeleteGroupResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline DeleteGroupResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DeleteUserRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DeleteUserRequest.h new file mode 100644 index 00000000000..384bcffdd80 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DeleteUserRequest.h @@ -0,0 +1,106 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace Http +{ + class URI; +} //namespace Http +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + */ + class DeleteUserRequest : public DirectoryServiceDataRequest + { + public: + AWS_DIRECTORYSERVICEDATA_API DeleteUserRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "DeleteUser"; } + + AWS_DIRECTORYSERVICEDATA_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICEDATA_API void AddQueryStringParameters(Aws::Http::URI& uri) const override; + + + ///@{ + /** + *

    A unique and case-sensitive identifier that you provide to make sure the + * idempotency of the request, so multiple identical calls have the same effect as + * one single call.

    A client token is valid for 8 hours after the first + * request that uses it completes. After 8 hours, any request with the same client + * token is treated as a new request. If the request succeeds, any future uses of + * that token will be idempotent for another 8 hours.

    If you submit a + * request with the same client token but change one of the other parameters within + * the 8-hour idempotency window, Directory Service Data returns an + * ConflictException.

    This parameter is optional when + * using the CLI or SDK.

    + */ + inline const Aws::String& GetClientToken() const{ return m_clientToken; } + inline bool ClientTokenHasBeenSet() const { return m_clientTokenHasBeenSet; } + inline void SetClientToken(const Aws::String& value) { m_clientTokenHasBeenSet = true; m_clientToken = value; } + inline void SetClientToken(Aws::String&& value) { m_clientTokenHasBeenSet = true; m_clientToken = std::move(value); } + inline void SetClientToken(const char* value) { m_clientTokenHasBeenSet = true; m_clientToken.assign(value); } + inline DeleteUserRequest& WithClientToken(const Aws::String& value) { SetClientToken(value); return *this;} + inline DeleteUserRequest& WithClientToken(Aws::String&& value) { SetClientToken(std::move(value)); return *this;} + inline DeleteUserRequest& WithClientToken(const char* value) { SetClientToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the user.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline DeleteUserRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline DeleteUserRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline DeleteUserRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The name of the user.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline bool SAMAccountNameHasBeenSet() const { return m_sAMAccountNameHasBeenSet; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName.assign(value); } + inline DeleteUserRequest& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline DeleteUserRequest& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline DeleteUserRequest& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + private: + + Aws::String m_clientToken; + bool m_clientTokenHasBeenSet = false; + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + + Aws::String m_sAMAccountName; + bool m_sAMAccountNameHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DeleteUserResult.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DeleteUserResult.h new file mode 100644 index 00000000000..67ac4e7b9f0 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DeleteUserResult.h @@ -0,0 +1,52 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + class DeleteUserResult + { + public: + AWS_DIRECTORYSERVICEDATA_API DeleteUserResult(); + AWS_DIRECTORYSERVICEDATA_API DeleteUserResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICEDATA_API DeleteUserResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline DeleteUserResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline DeleteUserResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline DeleteUserResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DescribeGroupRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DescribeGroupRequest.h new file mode 100644 index 00000000000..2e3666fac24 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DescribeGroupRequest.h @@ -0,0 +1,121 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace Http +{ + class URI; +} //namespace Http +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + */ + class DescribeGroupRequest : public DirectoryServiceDataRequest + { + public: + AWS_DIRECTORYSERVICEDATA_API DescribeGroupRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "DescribeGroup"; } + + AWS_DIRECTORYSERVICEDATA_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICEDATA_API void AddQueryStringParameters(Aws::Http::URI& uri) const override; + + + ///@{ + /** + *

    The Identifier (ID) of the directory associated with the group.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline DescribeGroupRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline DescribeGroupRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline DescribeGroupRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    One or more attributes to be returned for the group. For a list of supported + * attributes, see Directory + * Service Data Attributes.

    + */ + inline const Aws::Vector& GetOtherAttributes() const{ return m_otherAttributes; } + inline bool OtherAttributesHasBeenSet() const { return m_otherAttributesHasBeenSet; } + inline void SetOtherAttributes(const Aws::Vector& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes = value; } + inline void SetOtherAttributes(Aws::Vector&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes = std::move(value); } + inline DescribeGroupRequest& WithOtherAttributes(const Aws::Vector& value) { SetOtherAttributes(value); return *this;} + inline DescribeGroupRequest& WithOtherAttributes(Aws::Vector&& value) { SetOtherAttributes(std::move(value)); return *this;} + inline DescribeGroupRequest& AddOtherAttributes(const Aws::String& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.push_back(value); return *this; } + inline DescribeGroupRequest& AddOtherAttributes(Aws::String&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.push_back(std::move(value)); return *this; } + inline DescribeGroupRequest& AddOtherAttributes(const char* value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.push_back(value); return *this; } + ///@} + + ///@{ + /** + *

    The domain name that's associated with the group.

    This + * parameter is optional, so you can return groups outside of your Managed + * Microsoft AD domain. When no value is defined, only your Managed Microsoft AD + * groups are returned.

    This value is case insensitive.

    + */ + inline const Aws::String& GetRealm() const{ return m_realm; } + inline bool RealmHasBeenSet() const { return m_realmHasBeenSet; } + inline void SetRealm(const Aws::String& value) { m_realmHasBeenSet = true; m_realm = value; } + inline void SetRealm(Aws::String&& value) { m_realmHasBeenSet = true; m_realm = std::move(value); } + inline void SetRealm(const char* value) { m_realmHasBeenSet = true; m_realm.assign(value); } + inline DescribeGroupRequest& WithRealm(const Aws::String& value) { SetRealm(value); return *this;} + inline DescribeGroupRequest& WithRealm(Aws::String&& value) { SetRealm(std::move(value)); return *this;} + inline DescribeGroupRequest& WithRealm(const char* value) { SetRealm(value); return *this;} + ///@} + + ///@{ + /** + *

    The name of the group.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline bool SAMAccountNameHasBeenSet() const { return m_sAMAccountNameHasBeenSet; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName.assign(value); } + inline DescribeGroupRequest& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline DescribeGroupRequest& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline DescribeGroupRequest& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + + Aws::Vector m_otherAttributes; + bool m_otherAttributesHasBeenSet = false; + + Aws::String m_realm; + bool m_realmHasBeenSet = false; + + Aws::String m_sAMAccountName; + bool m_sAMAccountNameHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DescribeGroupResult.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DescribeGroupResult.h new file mode 100644 index 00000000000..a24dfbdd9a9 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DescribeGroupResult.h @@ -0,0 +1,183 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + class DescribeGroupResult + { + public: + AWS_DIRECTORYSERVICEDATA_API DescribeGroupResult(); + AWS_DIRECTORYSERVICEDATA_API DescribeGroupResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICEDATA_API DescribeGroupResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the group.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryId.assign(value); } + inline DescribeGroupResult& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline DescribeGroupResult& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline DescribeGroupResult& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The distinguished + * name of the object.

    + */ + inline const Aws::String& GetDistinguishedName() const{ return m_distinguishedName; } + inline void SetDistinguishedName(const Aws::String& value) { m_distinguishedName = value; } + inline void SetDistinguishedName(Aws::String&& value) { m_distinguishedName = std::move(value); } + inline void SetDistinguishedName(const char* value) { m_distinguishedName.assign(value); } + inline DescribeGroupResult& WithDistinguishedName(const Aws::String& value) { SetDistinguishedName(value); return *this;} + inline DescribeGroupResult& WithDistinguishedName(Aws::String&& value) { SetDistinguishedName(std::move(value)); return *this;} + inline DescribeGroupResult& WithDistinguishedName(const char* value) { SetDistinguishedName(value); return *this;} + ///@} + + ///@{ + /** + *

    The scope of the AD group. For details, see Active + * Directory security groups.

    + */ + inline const GroupScope& GetGroupScope() const{ return m_groupScope; } + inline void SetGroupScope(const GroupScope& value) { m_groupScope = value; } + inline void SetGroupScope(GroupScope&& value) { m_groupScope = std::move(value); } + inline DescribeGroupResult& WithGroupScope(const GroupScope& value) { SetGroupScope(value); return *this;} + inline DescribeGroupResult& WithGroupScope(GroupScope&& value) { SetGroupScope(std::move(value)); return *this;} + ///@} + + ///@{ + /** + *

    The AD group type. For details, see Active + * Directory security group type.

    + */ + inline const GroupType& GetGroupType() const{ return m_groupType; } + inline void SetGroupType(const GroupType& value) { m_groupType = value; } + inline void SetGroupType(GroupType&& value) { m_groupType = std::move(value); } + inline DescribeGroupResult& WithGroupType(const GroupType& value) { SetGroupType(value); return *this;} + inline DescribeGroupResult& WithGroupType(GroupType&& value) { SetGroupType(std::move(value)); return *this;} + ///@} + + ///@{ + /** + *

    The attribute values that are returned for the attribute names that are + * included in the request.

    + */ + inline const Aws::Map& GetOtherAttributes() const{ return m_otherAttributes; } + inline void SetOtherAttributes(const Aws::Map& value) { m_otherAttributes = value; } + inline void SetOtherAttributes(Aws::Map&& value) { m_otherAttributes = std::move(value); } + inline DescribeGroupResult& WithOtherAttributes(const Aws::Map& value) { SetOtherAttributes(value); return *this;} + inline DescribeGroupResult& WithOtherAttributes(Aws::Map&& value) { SetOtherAttributes(std::move(value)); return *this;} + inline DescribeGroupResult& AddOtherAttributes(const Aws::String& key, const AttributeValue& value) { m_otherAttributes.emplace(key, value); return *this; } + inline DescribeGroupResult& AddOtherAttributes(Aws::String&& key, const AttributeValue& value) { m_otherAttributes.emplace(std::move(key), value); return *this; } + inline DescribeGroupResult& AddOtherAttributes(const Aws::String& key, AttributeValue&& value) { m_otherAttributes.emplace(key, std::move(value)); return *this; } + inline DescribeGroupResult& AddOtherAttributes(Aws::String&& key, AttributeValue&& value) { m_otherAttributes.emplace(std::move(key), std::move(value)); return *this; } + inline DescribeGroupResult& AddOtherAttributes(const char* key, AttributeValue&& value) { m_otherAttributes.emplace(key, std::move(value)); return *this; } + inline DescribeGroupResult& AddOtherAttributes(const char* key, const AttributeValue& value) { m_otherAttributes.emplace(key, value); return *this; } + ///@} + + ///@{ + /** + *

    The domain name that's associated with the group.

    + */ + inline const Aws::String& GetRealm() const{ return m_realm; } + inline void SetRealm(const Aws::String& value) { m_realm = value; } + inline void SetRealm(Aws::String&& value) { m_realm = std::move(value); } + inline void SetRealm(const char* value) { m_realm.assign(value); } + inline DescribeGroupResult& WithRealm(const Aws::String& value) { SetRealm(value); return *this;} + inline DescribeGroupResult& WithRealm(Aws::String&& value) { SetRealm(std::move(value)); return *this;} + inline DescribeGroupResult& WithRealm(const char* value) { SetRealm(value); return *this;} + ///@} + + ///@{ + /** + *

    The name of the group.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountName.assign(value); } + inline DescribeGroupResult& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline DescribeGroupResult& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline DescribeGroupResult& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + + ///@{ + /** + *

    The unique security identifier (SID) of the group.

    + */ + inline const Aws::String& GetSID() const{ return m_sID; } + inline void SetSID(const Aws::String& value) { m_sID = value; } + inline void SetSID(Aws::String&& value) { m_sID = std::move(value); } + inline void SetSID(const char* value) { m_sID.assign(value); } + inline DescribeGroupResult& WithSID(const Aws::String& value) { SetSID(value); return *this;} + inline DescribeGroupResult& WithSID(Aws::String&& value) { SetSID(std::move(value)); return *this;} + inline DescribeGroupResult& WithSID(const char* value) { SetSID(value); return *this;} + ///@} + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline DescribeGroupResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline DescribeGroupResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline DescribeGroupResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + + Aws::String m_distinguishedName; + + GroupScope m_groupScope; + + GroupType m_groupType; + + Aws::Map m_otherAttributes; + + Aws::String m_realm; + + Aws::String m_sAMAccountName; + + Aws::String m_sID; + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DescribeUserRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DescribeUserRequest.h new file mode 100644 index 00000000000..080e821b045 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DescribeUserRequest.h @@ -0,0 +1,122 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace Http +{ + class URI; +} //namespace Http +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + */ + class DescribeUserRequest : public DirectoryServiceDataRequest + { + public: + AWS_DIRECTORYSERVICEDATA_API DescribeUserRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "DescribeUser"; } + + AWS_DIRECTORYSERVICEDATA_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICEDATA_API void AddQueryStringParameters(Aws::Http::URI& uri) const override; + + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the user.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline DescribeUserRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline DescribeUserRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline DescribeUserRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    One or more attribute names to be returned for the user. A key is an + * attribute name, and the value is a list of maps. For a list of supported + * attributes, see Directory + * Service Data Attributes.

    + */ + inline const Aws::Vector& GetOtherAttributes() const{ return m_otherAttributes; } + inline bool OtherAttributesHasBeenSet() const { return m_otherAttributesHasBeenSet; } + inline void SetOtherAttributes(const Aws::Vector& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes = value; } + inline void SetOtherAttributes(Aws::Vector&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes = std::move(value); } + inline DescribeUserRequest& WithOtherAttributes(const Aws::Vector& value) { SetOtherAttributes(value); return *this;} + inline DescribeUserRequest& WithOtherAttributes(Aws::Vector&& value) { SetOtherAttributes(std::move(value)); return *this;} + inline DescribeUserRequest& AddOtherAttributes(const Aws::String& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.push_back(value); return *this; } + inline DescribeUserRequest& AddOtherAttributes(Aws::String&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.push_back(std::move(value)); return *this; } + inline DescribeUserRequest& AddOtherAttributes(const char* value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.push_back(value); return *this; } + ///@} + + ///@{ + /** + *

    The domain name that's associated with the user.

    This + * parameter is optional, so you can return users outside your Managed Microsoft AD + * domain. When no value is defined, only your Managed Microsoft AD users are + * returned.

    This value is case insensitive.

    + */ + inline const Aws::String& GetRealm() const{ return m_realm; } + inline bool RealmHasBeenSet() const { return m_realmHasBeenSet; } + inline void SetRealm(const Aws::String& value) { m_realmHasBeenSet = true; m_realm = value; } + inline void SetRealm(Aws::String&& value) { m_realmHasBeenSet = true; m_realm = std::move(value); } + inline void SetRealm(const char* value) { m_realmHasBeenSet = true; m_realm.assign(value); } + inline DescribeUserRequest& WithRealm(const Aws::String& value) { SetRealm(value); return *this;} + inline DescribeUserRequest& WithRealm(Aws::String&& value) { SetRealm(std::move(value)); return *this;} + inline DescribeUserRequest& WithRealm(const char* value) { SetRealm(value); return *this;} + ///@} + + ///@{ + /** + *

    The name of the user.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline bool SAMAccountNameHasBeenSet() const { return m_sAMAccountNameHasBeenSet; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName.assign(value); } + inline DescribeUserRequest& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline DescribeUserRequest& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline DescribeUserRequest& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + + Aws::Vector m_otherAttributes; + bool m_otherAttributesHasBeenSet = false; + + Aws::String m_realm; + bool m_realmHasBeenSet = false; + + Aws::String m_sAMAccountName; + bool m_sAMAccountNameHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DescribeUserResult.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DescribeUserResult.h new file mode 100644 index 00000000000..e7d47235413 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DescribeUserResult.h @@ -0,0 +1,225 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + class DescribeUserResult + { + public: + AWS_DIRECTORYSERVICEDATA_API DescribeUserResult(); + AWS_DIRECTORYSERVICEDATA_API DescribeUserResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICEDATA_API DescribeUserResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the user.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryId.assign(value); } + inline DescribeUserResult& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline DescribeUserResult& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline DescribeUserResult& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The distinguished + * name of the object.

    + */ + inline const Aws::String& GetDistinguishedName() const{ return m_distinguishedName; } + inline void SetDistinguishedName(const Aws::String& value) { m_distinguishedName = value; } + inline void SetDistinguishedName(Aws::String&& value) { m_distinguishedName = std::move(value); } + inline void SetDistinguishedName(const char* value) { m_distinguishedName.assign(value); } + inline DescribeUserResult& WithDistinguishedName(const Aws::String& value) { SetDistinguishedName(value); return *this;} + inline DescribeUserResult& WithDistinguishedName(Aws::String&& value) { SetDistinguishedName(std::move(value)); return *this;} + inline DescribeUserResult& WithDistinguishedName(const char* value) { SetDistinguishedName(value); return *this;} + ///@} + + ///@{ + /** + *

    The email address of the user.

    + */ + inline const Aws::String& GetEmailAddress() const{ return m_emailAddress; } + inline void SetEmailAddress(const Aws::String& value) { m_emailAddress = value; } + inline void SetEmailAddress(Aws::String&& value) { m_emailAddress = std::move(value); } + inline void SetEmailAddress(const char* value) { m_emailAddress.assign(value); } + inline DescribeUserResult& WithEmailAddress(const Aws::String& value) { SetEmailAddress(value); return *this;} + inline DescribeUserResult& WithEmailAddress(Aws::String&& value) { SetEmailAddress(std::move(value)); return *this;} + inline DescribeUserResult& WithEmailAddress(const char* value) { SetEmailAddress(value); return *this;} + ///@} + + ///@{ + /** + *

    Indicates whether the user account is active.

    + */ + inline bool GetEnabled() const{ return m_enabled; } + inline void SetEnabled(bool value) { m_enabled = value; } + inline DescribeUserResult& WithEnabled(bool value) { SetEnabled(value); return *this;} + ///@} + + ///@{ + /** + *

    The first name of the user.

    + */ + inline const Aws::String& GetGivenName() const{ return m_givenName; } + inline void SetGivenName(const Aws::String& value) { m_givenName = value; } + inline void SetGivenName(Aws::String&& value) { m_givenName = std::move(value); } + inline void SetGivenName(const char* value) { m_givenName.assign(value); } + inline DescribeUserResult& WithGivenName(const Aws::String& value) { SetGivenName(value); return *this;} + inline DescribeUserResult& WithGivenName(Aws::String&& value) { SetGivenName(std::move(value)); return *this;} + inline DescribeUserResult& WithGivenName(const char* value) { SetGivenName(value); return *this;} + ///@} + + ///@{ + /** + *

    The attribute values that are returned for the attribute names that are + * included in the request.

    Attribute names are case insensitive. + *

    + */ + inline const Aws::Map& GetOtherAttributes() const{ return m_otherAttributes; } + inline void SetOtherAttributes(const Aws::Map& value) { m_otherAttributes = value; } + inline void SetOtherAttributes(Aws::Map&& value) { m_otherAttributes = std::move(value); } + inline DescribeUserResult& WithOtherAttributes(const Aws::Map& value) { SetOtherAttributes(value); return *this;} + inline DescribeUserResult& WithOtherAttributes(Aws::Map&& value) { SetOtherAttributes(std::move(value)); return *this;} + inline DescribeUserResult& AddOtherAttributes(const Aws::String& key, const AttributeValue& value) { m_otherAttributes.emplace(key, value); return *this; } + inline DescribeUserResult& AddOtherAttributes(Aws::String&& key, const AttributeValue& value) { m_otherAttributes.emplace(std::move(key), value); return *this; } + inline DescribeUserResult& AddOtherAttributes(const Aws::String& key, AttributeValue&& value) { m_otherAttributes.emplace(key, std::move(value)); return *this; } + inline DescribeUserResult& AddOtherAttributes(Aws::String&& key, AttributeValue&& value) { m_otherAttributes.emplace(std::move(key), std::move(value)); return *this; } + inline DescribeUserResult& AddOtherAttributes(const char* key, AttributeValue&& value) { m_otherAttributes.emplace(key, std::move(value)); return *this; } + inline DescribeUserResult& AddOtherAttributes(const char* key, const AttributeValue& value) { m_otherAttributes.emplace(key, value); return *this; } + ///@} + + ///@{ + /** + *

    The domain name that's associated with the user.

    + */ + inline const Aws::String& GetRealm() const{ return m_realm; } + inline void SetRealm(const Aws::String& value) { m_realm = value; } + inline void SetRealm(Aws::String&& value) { m_realm = std::move(value); } + inline void SetRealm(const char* value) { m_realm.assign(value); } + inline DescribeUserResult& WithRealm(const Aws::String& value) { SetRealm(value); return *this;} + inline DescribeUserResult& WithRealm(Aws::String&& value) { SetRealm(std::move(value)); return *this;} + inline DescribeUserResult& WithRealm(const char* value) { SetRealm(value); return *this;} + ///@} + + ///@{ + /** + *

    The name of the user.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountName.assign(value); } + inline DescribeUserResult& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline DescribeUserResult& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline DescribeUserResult& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + + ///@{ + /** + *

    The unique security identifier (SID) of the user.

    + */ + inline const Aws::String& GetSID() const{ return m_sID; } + inline void SetSID(const Aws::String& value) { m_sID = value; } + inline void SetSID(Aws::String&& value) { m_sID = std::move(value); } + inline void SetSID(const char* value) { m_sID.assign(value); } + inline DescribeUserResult& WithSID(const Aws::String& value) { SetSID(value); return *this;} + inline DescribeUserResult& WithSID(Aws::String&& value) { SetSID(std::move(value)); return *this;} + inline DescribeUserResult& WithSID(const char* value) { SetSID(value); return *this;} + ///@} + + ///@{ + /** + *

    The last name of the user.

    + */ + inline const Aws::String& GetSurname() const{ return m_surname; } + inline void SetSurname(const Aws::String& value) { m_surname = value; } + inline void SetSurname(Aws::String&& value) { m_surname = std::move(value); } + inline void SetSurname(const char* value) { m_surname.assign(value); } + inline DescribeUserResult& WithSurname(const Aws::String& value) { SetSurname(value); return *this;} + inline DescribeUserResult& WithSurname(Aws::String&& value) { SetSurname(std::move(value)); return *this;} + inline DescribeUserResult& WithSurname(const char* value) { SetSurname(value); return *this;} + ///@} + + ///@{ + /** + *

    The UPN that is an Internet-style login name for a user and is based on the + * Internet standard RFC 822. + * The UPN is shorter than the distinguished name and easier to remember.

    + */ + inline const Aws::String& GetUserPrincipalName() const{ return m_userPrincipalName; } + inline void SetUserPrincipalName(const Aws::String& value) { m_userPrincipalName = value; } + inline void SetUserPrincipalName(Aws::String&& value) { m_userPrincipalName = std::move(value); } + inline void SetUserPrincipalName(const char* value) { m_userPrincipalName.assign(value); } + inline DescribeUserResult& WithUserPrincipalName(const Aws::String& value) { SetUserPrincipalName(value); return *this;} + inline DescribeUserResult& WithUserPrincipalName(Aws::String&& value) { SetUserPrincipalName(std::move(value)); return *this;} + inline DescribeUserResult& WithUserPrincipalName(const char* value) { SetUserPrincipalName(value); return *this;} + ///@} + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline DescribeUserResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline DescribeUserResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline DescribeUserResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + + Aws::String m_distinguishedName; + + Aws::String m_emailAddress; + + bool m_enabled; + + Aws::String m_givenName; + + Aws::Map m_otherAttributes; + + Aws::String m_realm; + + Aws::String m_sAMAccountName; + + Aws::String m_sID; + + Aws::String m_surname; + + Aws::String m_userPrincipalName; + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DirectoryUnavailableException.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DirectoryUnavailableException.h new file mode 100644 index 00000000000..28a7a41b0dc --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DirectoryUnavailableException.h @@ -0,0 +1,76 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include + +namespace Aws +{ +namespace Utils +{ +namespace Json +{ + class JsonValue; + class JsonView; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + *

    The request could not be completed due to a problem in the configuration or + * current state of the specified directory.

    See Also:

    AWS + * API Reference

    + */ + class DirectoryUnavailableException + { + public: + AWS_DIRECTORYSERVICEDATA_API DirectoryUnavailableException(); + AWS_DIRECTORYSERVICEDATA_API DirectoryUnavailableException(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API DirectoryUnavailableException& operator=(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API Aws::Utils::Json::JsonValue Jsonize() const; + + + ///@{ + + inline const Aws::String& GetMessage() const{ return m_message; } + inline bool MessageHasBeenSet() const { return m_messageHasBeenSet; } + inline void SetMessage(const Aws::String& value) { m_messageHasBeenSet = true; m_message = value; } + inline void SetMessage(Aws::String&& value) { m_messageHasBeenSet = true; m_message = std::move(value); } + inline void SetMessage(const char* value) { m_messageHasBeenSet = true; m_message.assign(value); } + inline DirectoryUnavailableException& WithMessage(const Aws::String& value) { SetMessage(value); return *this;} + inline DirectoryUnavailableException& WithMessage(Aws::String&& value) { SetMessage(std::move(value)); return *this;} + inline DirectoryUnavailableException& WithMessage(const char* value) { SetMessage(value); return *this;} + ///@} + + ///@{ + /** + *

    Reason the request failed for the specified directory.

    + */ + inline const DirectoryUnavailableReason& GetReason() const{ return m_reason; } + inline bool ReasonHasBeenSet() const { return m_reasonHasBeenSet; } + inline void SetReason(const DirectoryUnavailableReason& value) { m_reasonHasBeenSet = true; m_reason = value; } + inline void SetReason(DirectoryUnavailableReason&& value) { m_reasonHasBeenSet = true; m_reason = std::move(value); } + inline DirectoryUnavailableException& WithReason(const DirectoryUnavailableReason& value) { SetReason(value); return *this;} + inline DirectoryUnavailableException& WithReason(DirectoryUnavailableReason&& value) { SetReason(std::move(value)); return *this;} + ///@} + private: + + Aws::String m_message; + bool m_messageHasBeenSet = false; + + DirectoryUnavailableReason m_reason; + bool m_reasonHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DirectoryUnavailableReason.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DirectoryUnavailableReason.h new file mode 100644 index 00000000000..088920ad5f2 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DirectoryUnavailableReason.h @@ -0,0 +1,34 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Model +{ + enum class DirectoryUnavailableReason + { + NOT_SET, + INVALID_DIRECTORY_STATE, + DIRECTORY_TIMEOUT, + DIRECTORY_RESOURCES_EXCEEDED, + NO_DISK_SPACE, + TRUST_AUTH_FAILURE + }; + +namespace DirectoryUnavailableReasonMapper +{ +AWS_DIRECTORYSERVICEDATA_API DirectoryUnavailableReason GetDirectoryUnavailableReasonForName(const Aws::String& name); + +AWS_DIRECTORYSERVICEDATA_API Aws::String GetNameForDirectoryUnavailableReason(DirectoryUnavailableReason value); +} // namespace DirectoryUnavailableReasonMapper +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DisableUserRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DisableUserRequest.h new file mode 100644 index 00000000000..c2a7a50d434 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DisableUserRequest.h @@ -0,0 +1,106 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace Http +{ + class URI; +} //namespace Http +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + */ + class DisableUserRequest : public DirectoryServiceDataRequest + { + public: + AWS_DIRECTORYSERVICEDATA_API DisableUserRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "DisableUser"; } + + AWS_DIRECTORYSERVICEDATA_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICEDATA_API void AddQueryStringParameters(Aws::Http::URI& uri) const override; + + + ///@{ + /** + *

    A unique and case-sensitive identifier that you provide to make sure the + * idempotency of the request, so multiple identical calls have the same effect as + * one single call.

    A client token is valid for 8 hours after the first + * request that uses it completes. After 8 hours, any request with the same client + * token is treated as a new request. If the request succeeds, any future uses of + * that token will be idempotent for another 8 hours.

    If you submit a + * request with the same client token but change one of the other parameters within + * the 8-hour idempotency window, Directory Service Data returns an + * ConflictException.

    This parameter is optional when + * using the CLI or SDK.

    + */ + inline const Aws::String& GetClientToken() const{ return m_clientToken; } + inline bool ClientTokenHasBeenSet() const { return m_clientTokenHasBeenSet; } + inline void SetClientToken(const Aws::String& value) { m_clientTokenHasBeenSet = true; m_clientToken = value; } + inline void SetClientToken(Aws::String&& value) { m_clientTokenHasBeenSet = true; m_clientToken = std::move(value); } + inline void SetClientToken(const char* value) { m_clientTokenHasBeenSet = true; m_clientToken.assign(value); } + inline DisableUserRequest& WithClientToken(const Aws::String& value) { SetClientToken(value); return *this;} + inline DisableUserRequest& WithClientToken(Aws::String&& value) { SetClientToken(std::move(value)); return *this;} + inline DisableUserRequest& WithClientToken(const char* value) { SetClientToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the user.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline DisableUserRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline DisableUserRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline DisableUserRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The name of the user.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline bool SAMAccountNameHasBeenSet() const { return m_sAMAccountNameHasBeenSet; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName.assign(value); } + inline DisableUserRequest& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline DisableUserRequest& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline DisableUserRequest& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + private: + + Aws::String m_clientToken; + bool m_clientTokenHasBeenSet = false; + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + + Aws::String m_sAMAccountName; + bool m_sAMAccountNameHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DisableUserResult.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DisableUserResult.h new file mode 100644 index 00000000000..76633e5d902 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/DisableUserResult.h @@ -0,0 +1,52 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + class DisableUserResult + { + public: + AWS_DIRECTORYSERVICEDATA_API DisableUserResult(); + AWS_DIRECTORYSERVICEDATA_API DisableUserResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICEDATA_API DisableUserResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline DisableUserResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline DisableUserResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline DisableUserResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/Group.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/Group.h new file mode 100644 index 00000000000..eb08cfaa387 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/Group.h @@ -0,0 +1,158 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace Utils +{ +namespace Json +{ + class JsonValue; + class JsonView; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + *

    A group object that contains identifying information and attributes for a + * specified group.

    See Also:

    AWS + * API Reference

    + */ + class Group + { + public: + AWS_DIRECTORYSERVICEDATA_API Group(); + AWS_DIRECTORYSERVICEDATA_API Group(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API Group& operator=(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API Aws::Utils::Json::JsonValue Jsonize() const; + + + ///@{ + /** + *

    The distinguished + * name of the object.

    + */ + inline const Aws::String& GetDistinguishedName() const{ return m_distinguishedName; } + inline bool DistinguishedNameHasBeenSet() const { return m_distinguishedNameHasBeenSet; } + inline void SetDistinguishedName(const Aws::String& value) { m_distinguishedNameHasBeenSet = true; m_distinguishedName = value; } + inline void SetDistinguishedName(Aws::String&& value) { m_distinguishedNameHasBeenSet = true; m_distinguishedName = std::move(value); } + inline void SetDistinguishedName(const char* value) { m_distinguishedNameHasBeenSet = true; m_distinguishedName.assign(value); } + inline Group& WithDistinguishedName(const Aws::String& value) { SetDistinguishedName(value); return *this;} + inline Group& WithDistinguishedName(Aws::String&& value) { SetDistinguishedName(std::move(value)); return *this;} + inline Group& WithDistinguishedName(const char* value) { SetDistinguishedName(value); return *this;} + ///@} + + ///@{ + /** + *

    The scope of the AD group. For details, see Active + * Directory security groups

    + */ + inline const GroupScope& GetGroupScope() const{ return m_groupScope; } + inline bool GroupScopeHasBeenSet() const { return m_groupScopeHasBeenSet; } + inline void SetGroupScope(const GroupScope& value) { m_groupScopeHasBeenSet = true; m_groupScope = value; } + inline void SetGroupScope(GroupScope&& value) { m_groupScopeHasBeenSet = true; m_groupScope = std::move(value); } + inline Group& WithGroupScope(const GroupScope& value) { SetGroupScope(value); return *this;} + inline Group& WithGroupScope(GroupScope&& value) { SetGroupScope(std::move(value)); return *this;} + ///@} + + ///@{ + /** + *

    The AD group type. For details, see Active + * Directory security group type.

    + */ + inline const GroupType& GetGroupType() const{ return m_groupType; } + inline bool GroupTypeHasBeenSet() const { return m_groupTypeHasBeenSet; } + inline void SetGroupType(const GroupType& value) { m_groupTypeHasBeenSet = true; m_groupType = value; } + inline void SetGroupType(GroupType&& value) { m_groupTypeHasBeenSet = true; m_groupType = std::move(value); } + inline Group& WithGroupType(const GroupType& value) { SetGroupType(value); return *this;} + inline Group& WithGroupType(GroupType&& value) { SetGroupType(std::move(value)); return *this;} + ///@} + + ///@{ + /** + *

    An expression of one or more attributes, data types, and the values of a + * group.

    + */ + inline const Aws::Map& GetOtherAttributes() const{ return m_otherAttributes; } + inline bool OtherAttributesHasBeenSet() const { return m_otherAttributesHasBeenSet; } + inline void SetOtherAttributes(const Aws::Map& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes = value; } + inline void SetOtherAttributes(Aws::Map&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes = std::move(value); } + inline Group& WithOtherAttributes(const Aws::Map& value) { SetOtherAttributes(value); return *this;} + inline Group& WithOtherAttributes(Aws::Map&& value) { SetOtherAttributes(std::move(value)); return *this;} + inline Group& AddOtherAttributes(const Aws::String& key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, value); return *this; } + inline Group& AddOtherAttributes(Aws::String&& key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(std::move(key), value); return *this; } + inline Group& AddOtherAttributes(const Aws::String& key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, std::move(value)); return *this; } + inline Group& AddOtherAttributes(Aws::String&& key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(std::move(key), std::move(value)); return *this; } + inline Group& AddOtherAttributes(const char* key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, std::move(value)); return *this; } + inline Group& AddOtherAttributes(const char* key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, value); return *this; } + ///@} + + ///@{ + /** + *

    The name of the group.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline bool SAMAccountNameHasBeenSet() const { return m_sAMAccountNameHasBeenSet; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName.assign(value); } + inline Group& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline Group& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline Group& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + + ///@{ + /** + *

    The unique security identifier (SID) of the group.

    + */ + inline const Aws::String& GetSID() const{ return m_sID; } + inline bool SIDHasBeenSet() const { return m_sIDHasBeenSet; } + inline void SetSID(const Aws::String& value) { m_sIDHasBeenSet = true; m_sID = value; } + inline void SetSID(Aws::String&& value) { m_sIDHasBeenSet = true; m_sID = std::move(value); } + inline void SetSID(const char* value) { m_sIDHasBeenSet = true; m_sID.assign(value); } + inline Group& WithSID(const Aws::String& value) { SetSID(value); return *this;} + inline Group& WithSID(Aws::String&& value) { SetSID(std::move(value)); return *this;} + inline Group& WithSID(const char* value) { SetSID(value); return *this;} + ///@} + private: + + Aws::String m_distinguishedName; + bool m_distinguishedNameHasBeenSet = false; + + GroupScope m_groupScope; + bool m_groupScopeHasBeenSet = false; + + GroupType m_groupType; + bool m_groupTypeHasBeenSet = false; + + Aws::Map m_otherAttributes; + bool m_otherAttributesHasBeenSet = false; + + Aws::String m_sAMAccountName; + bool m_sAMAccountNameHasBeenSet = false; + + Aws::String m_sID; + bool m_sIDHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/GroupScope.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/GroupScope.h new file mode 100644 index 00000000000..96541c2d0fc --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/GroupScope.h @@ -0,0 +1,33 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Model +{ + enum class GroupScope + { + NOT_SET, + DomainLocal, + Global, + Universal, + BuiltinLocal + }; + +namespace GroupScopeMapper +{ +AWS_DIRECTORYSERVICEDATA_API GroupScope GetGroupScopeForName(const Aws::String& name); + +AWS_DIRECTORYSERVICEDATA_API Aws::String GetNameForGroupScope(GroupScope value); +} // namespace GroupScopeMapper +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/GroupSummary.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/GroupSummary.h new file mode 100644 index 00000000000..a21c329ff8d --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/GroupSummary.h @@ -0,0 +1,115 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace Utils +{ +namespace Json +{ + class JsonValue; + class JsonView; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + *

    A structure containing a subset of fields of a group object from a + * directory.

    See Also:

    AWS + * API Reference

    + */ + class GroupSummary + { + public: + AWS_DIRECTORYSERVICEDATA_API GroupSummary(); + AWS_DIRECTORYSERVICEDATA_API GroupSummary(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API GroupSummary& operator=(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API Aws::Utils::Json::JsonValue Jsonize() const; + + + ///@{ + /** + *

    The scope of the AD group. For details, see Active + * Directory security groups.

    + */ + inline const GroupScope& GetGroupScope() const{ return m_groupScope; } + inline bool GroupScopeHasBeenSet() const { return m_groupScopeHasBeenSet; } + inline void SetGroupScope(const GroupScope& value) { m_groupScopeHasBeenSet = true; m_groupScope = value; } + inline void SetGroupScope(GroupScope&& value) { m_groupScopeHasBeenSet = true; m_groupScope = std::move(value); } + inline GroupSummary& WithGroupScope(const GroupScope& value) { SetGroupScope(value); return *this;} + inline GroupSummary& WithGroupScope(GroupScope&& value) { SetGroupScope(std::move(value)); return *this;} + ///@} + + ///@{ + /** + *

    The AD group type. For details, see Active + * Directory security group type.

    + */ + inline const GroupType& GetGroupType() const{ return m_groupType; } + inline bool GroupTypeHasBeenSet() const { return m_groupTypeHasBeenSet; } + inline void SetGroupType(const GroupType& value) { m_groupTypeHasBeenSet = true; m_groupType = value; } + inline void SetGroupType(GroupType&& value) { m_groupTypeHasBeenSet = true; m_groupType = std::move(value); } + inline GroupSummary& WithGroupType(const GroupType& value) { SetGroupType(value); return *this;} + inline GroupSummary& WithGroupType(GroupType&& value) { SetGroupType(std::move(value)); return *this;} + ///@} + + ///@{ + /** + *

    The name of the group.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline bool SAMAccountNameHasBeenSet() const { return m_sAMAccountNameHasBeenSet; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName.assign(value); } + inline GroupSummary& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline GroupSummary& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline GroupSummary& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + + ///@{ + /** + *

    The unique security identifier (SID) of the group.

    + */ + inline const Aws::String& GetSID() const{ return m_sID; } + inline bool SIDHasBeenSet() const { return m_sIDHasBeenSet; } + inline void SetSID(const Aws::String& value) { m_sIDHasBeenSet = true; m_sID = value; } + inline void SetSID(Aws::String&& value) { m_sIDHasBeenSet = true; m_sID = std::move(value); } + inline void SetSID(const char* value) { m_sIDHasBeenSet = true; m_sID.assign(value); } + inline GroupSummary& WithSID(const Aws::String& value) { SetSID(value); return *this;} + inline GroupSummary& WithSID(Aws::String&& value) { SetSID(std::move(value)); return *this;} + inline GroupSummary& WithSID(const char* value) { SetSID(value); return *this;} + ///@} + private: + + GroupScope m_groupScope; + bool m_groupScopeHasBeenSet = false; + + GroupType m_groupType; + bool m_groupTypeHasBeenSet = false; + + Aws::String m_sAMAccountName; + bool m_sAMAccountNameHasBeenSet = false; + + Aws::String m_sID; + bool m_sIDHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/GroupType.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/GroupType.h new file mode 100644 index 00000000000..56a20192e26 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/GroupType.h @@ -0,0 +1,31 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Model +{ + enum class GroupType + { + NOT_SET, + Distribution, + Security + }; + +namespace GroupTypeMapper +{ +AWS_DIRECTORYSERVICEDATA_API GroupType GetGroupTypeForName(const Aws::String& name); + +AWS_DIRECTORYSERVICEDATA_API Aws::String GetNameForGroupType(GroupType value); +} // namespace GroupTypeMapper +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupMembersRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupMembersRequest.h new file mode 100644 index 00000000000..2c0d29a2dda --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupMembersRequest.h @@ -0,0 +1,150 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include + +namespace Aws +{ +namespace Http +{ + class URI; +} //namespace Http +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + */ + class ListGroupMembersRequest : public DirectoryServiceDataRequest + { + public: + AWS_DIRECTORYSERVICEDATA_API ListGroupMembersRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "ListGroupMembers"; } + + AWS_DIRECTORYSERVICEDATA_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICEDATA_API void AddQueryStringParameters(Aws::Http::URI& uri) const override; + + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the group.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline ListGroupMembersRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline ListGroupMembersRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline ListGroupMembersRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The maximum number of results to be returned per request.

    + */ + inline int GetMaxResults() const{ return m_maxResults; } + inline bool MaxResultsHasBeenSet() const { return m_maxResultsHasBeenSet; } + inline void SetMaxResults(int value) { m_maxResultsHasBeenSet = true; m_maxResults = value; } + inline ListGroupMembersRequest& WithMaxResults(int value) { SetMaxResults(value); return *this;} + ///@} + + ///@{ + /** + *

    The domain name that's associated with the group member. This parameter + * defaults to the Managed Microsoft AD domain.

    This parameter is + * optional and case insensitive.

    + */ + inline const Aws::String& GetMemberRealm() const{ return m_memberRealm; } + inline bool MemberRealmHasBeenSet() const { return m_memberRealmHasBeenSet; } + inline void SetMemberRealm(const Aws::String& value) { m_memberRealmHasBeenSet = true; m_memberRealm = value; } + inline void SetMemberRealm(Aws::String&& value) { m_memberRealmHasBeenSet = true; m_memberRealm = std::move(value); } + inline void SetMemberRealm(const char* value) { m_memberRealmHasBeenSet = true; m_memberRealm.assign(value); } + inline ListGroupMembersRequest& WithMemberRealm(const Aws::String& value) { SetMemberRealm(value); return *this;} + inline ListGroupMembersRequest& WithMemberRealm(Aws::String&& value) { SetMemberRealm(std::move(value)); return *this;} + inline ListGroupMembersRequest& WithMemberRealm(const char* value) { SetMemberRealm(value); return *this;} + ///@} + + ///@{ + /** + *

    An encoded paging token for paginated calls that can be passed back to + * retrieve the next page.

    + */ + inline const Aws::String& GetNextToken() const{ return m_nextToken; } + inline bool NextTokenHasBeenSet() const { return m_nextTokenHasBeenSet; } + inline void SetNextToken(const Aws::String& value) { m_nextTokenHasBeenSet = true; m_nextToken = value; } + inline void SetNextToken(Aws::String&& value) { m_nextTokenHasBeenSet = true; m_nextToken = std::move(value); } + inline void SetNextToken(const char* value) { m_nextTokenHasBeenSet = true; m_nextToken.assign(value); } + inline ListGroupMembersRequest& WithNextToken(const Aws::String& value) { SetNextToken(value); return *this;} + inline ListGroupMembersRequest& WithNextToken(Aws::String&& value) { SetNextToken(std::move(value)); return *this;} + inline ListGroupMembersRequest& WithNextToken(const char* value) { SetNextToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The domain name that's associated with the group.

    This + * parameter is optional, so you can return members from a group outside of your + * Managed Microsoft AD domain. When no value is defined, only members of your + * Managed Microsoft AD groups are returned.

    This value is case + * insensitive.

    + */ + inline const Aws::String& GetRealm() const{ return m_realm; } + inline bool RealmHasBeenSet() const { return m_realmHasBeenSet; } + inline void SetRealm(const Aws::String& value) { m_realmHasBeenSet = true; m_realm = value; } + inline void SetRealm(Aws::String&& value) { m_realmHasBeenSet = true; m_realm = std::move(value); } + inline void SetRealm(const char* value) { m_realmHasBeenSet = true; m_realm.assign(value); } + inline ListGroupMembersRequest& WithRealm(const Aws::String& value) { SetRealm(value); return *this;} + inline ListGroupMembersRequest& WithRealm(Aws::String&& value) { SetRealm(std::move(value)); return *this;} + inline ListGroupMembersRequest& WithRealm(const char* value) { SetRealm(value); return *this;} + ///@} + + ///@{ + /** + *

    The name of the group.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline bool SAMAccountNameHasBeenSet() const { return m_sAMAccountNameHasBeenSet; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName.assign(value); } + inline ListGroupMembersRequest& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline ListGroupMembersRequest& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline ListGroupMembersRequest& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + + int m_maxResults; + bool m_maxResultsHasBeenSet = false; + + Aws::String m_memberRealm; + bool m_memberRealmHasBeenSet = false; + + Aws::String m_nextToken; + bool m_nextTokenHasBeenSet = false; + + Aws::String m_realm; + bool m_realmHasBeenSet = false; + + Aws::String m_sAMAccountName; + bool m_sAMAccountNameHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupMembersResult.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupMembersResult.h new file mode 100644 index 00000000000..d15c64ed018 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupMembersResult.h @@ -0,0 +1,130 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + class ListGroupMembersResult + { + public: + AWS_DIRECTORYSERVICEDATA_API ListGroupMembersResult(); + AWS_DIRECTORYSERVICEDATA_API ListGroupMembersResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICEDATA_API ListGroupMembersResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + /** + *

    Identifier (ID) of the directory associated with the group.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryId.assign(value); } + inline ListGroupMembersResult& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline ListGroupMembersResult& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline ListGroupMembersResult& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The domain name that's associated with the member.

    + */ + inline const Aws::String& GetMemberRealm() const{ return m_memberRealm; } + inline void SetMemberRealm(const Aws::String& value) { m_memberRealm = value; } + inline void SetMemberRealm(Aws::String&& value) { m_memberRealm = std::move(value); } + inline void SetMemberRealm(const char* value) { m_memberRealm.assign(value); } + inline ListGroupMembersResult& WithMemberRealm(const Aws::String& value) { SetMemberRealm(value); return *this;} + inline ListGroupMembersResult& WithMemberRealm(Aws::String&& value) { SetMemberRealm(std::move(value)); return *this;} + inline ListGroupMembersResult& WithMemberRealm(const char* value) { SetMemberRealm(value); return *this;} + ///@} + + ///@{ + /** + *

    The member information that the request returns.

    + */ + inline const Aws::Vector& GetMembers() const{ return m_members; } + inline void SetMembers(const Aws::Vector& value) { m_members = value; } + inline void SetMembers(Aws::Vector&& value) { m_members = std::move(value); } + inline ListGroupMembersResult& WithMembers(const Aws::Vector& value) { SetMembers(value); return *this;} + inline ListGroupMembersResult& WithMembers(Aws::Vector&& value) { SetMembers(std::move(value)); return *this;} + inline ListGroupMembersResult& AddMembers(const Member& value) { m_members.push_back(value); return *this; } + inline ListGroupMembersResult& AddMembers(Member&& value) { m_members.push_back(std::move(value)); return *this; } + ///@} + + ///@{ + /** + *

    An encoded paging token for paginated calls that can be passed back to + * retrieve the next page.

    + */ + inline const Aws::String& GetNextToken() const{ return m_nextToken; } + inline void SetNextToken(const Aws::String& value) { m_nextToken = value; } + inline void SetNextToken(Aws::String&& value) { m_nextToken = std::move(value); } + inline void SetNextToken(const char* value) { m_nextToken.assign(value); } + inline ListGroupMembersResult& WithNextToken(const Aws::String& value) { SetNextToken(value); return *this;} + inline ListGroupMembersResult& WithNextToken(Aws::String&& value) { SetNextToken(std::move(value)); return *this;} + inline ListGroupMembersResult& WithNextToken(const char* value) { SetNextToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The domain name that's associated with the group.

    + */ + inline const Aws::String& GetRealm() const{ return m_realm; } + inline void SetRealm(const Aws::String& value) { m_realm = value; } + inline void SetRealm(Aws::String&& value) { m_realm = std::move(value); } + inline void SetRealm(const char* value) { m_realm.assign(value); } + inline ListGroupMembersResult& WithRealm(const Aws::String& value) { SetRealm(value); return *this;} + inline ListGroupMembersResult& WithRealm(Aws::String&& value) { SetRealm(std::move(value)); return *this;} + inline ListGroupMembersResult& WithRealm(const char* value) { SetRealm(value); return *this;} + ///@} + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline ListGroupMembersResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline ListGroupMembersResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline ListGroupMembersResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + + Aws::String m_memberRealm; + + Aws::Vector m_members; + + Aws::String m_nextToken; + + Aws::String m_realm; + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupsForMemberRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupsForMemberRequest.h new file mode 100644 index 00000000000..2c9248d4c1d --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupsForMemberRequest.h @@ -0,0 +1,152 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include + +namespace Aws +{ +namespace Http +{ + class URI; +} //namespace Http +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + */ + class ListGroupsForMemberRequest : public DirectoryServiceDataRequest + { + public: + AWS_DIRECTORYSERVICEDATA_API ListGroupsForMemberRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "ListGroupsForMember"; } + + AWS_DIRECTORYSERVICEDATA_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICEDATA_API void AddQueryStringParameters(Aws::Http::URI& uri) const override; + + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the member.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline ListGroupsForMemberRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline ListGroupsForMemberRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline ListGroupsForMemberRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The maximum number of results to be returned per request.

    + */ + inline int GetMaxResults() const{ return m_maxResults; } + inline bool MaxResultsHasBeenSet() const { return m_maxResultsHasBeenSet; } + inline void SetMaxResults(int value) { m_maxResultsHasBeenSet = true; m_maxResults = value; } + inline ListGroupsForMemberRequest& WithMaxResults(int value) { SetMaxResults(value); return *this;} + ///@} + + ///@{ + /** + *

    The domain name that's associated with the group member.

    + * This parameter is optional, so you can limit your results to the group members + * in a specific domain.

    This parameter is case insensitive and defaults + * to Realm

    + */ + inline const Aws::String& GetMemberRealm() const{ return m_memberRealm; } + inline bool MemberRealmHasBeenSet() const { return m_memberRealmHasBeenSet; } + inline void SetMemberRealm(const Aws::String& value) { m_memberRealmHasBeenSet = true; m_memberRealm = value; } + inline void SetMemberRealm(Aws::String&& value) { m_memberRealmHasBeenSet = true; m_memberRealm = std::move(value); } + inline void SetMemberRealm(const char* value) { m_memberRealmHasBeenSet = true; m_memberRealm.assign(value); } + inline ListGroupsForMemberRequest& WithMemberRealm(const Aws::String& value) { SetMemberRealm(value); return *this;} + inline ListGroupsForMemberRequest& WithMemberRealm(Aws::String&& value) { SetMemberRealm(std::move(value)); return *this;} + inline ListGroupsForMemberRequest& WithMemberRealm(const char* value) { SetMemberRealm(value); return *this;} + ///@} + + ///@{ + /** + *

    An encoded paging token for paginated calls that can be passed back to + * retrieve the next page.

    + */ + inline const Aws::String& GetNextToken() const{ return m_nextToken; } + inline bool NextTokenHasBeenSet() const { return m_nextTokenHasBeenSet; } + inline void SetNextToken(const Aws::String& value) { m_nextTokenHasBeenSet = true; m_nextToken = value; } + inline void SetNextToken(Aws::String&& value) { m_nextTokenHasBeenSet = true; m_nextToken = std::move(value); } + inline void SetNextToken(const char* value) { m_nextTokenHasBeenSet = true; m_nextToken.assign(value); } + inline ListGroupsForMemberRequest& WithNextToken(const Aws::String& value) { SetNextToken(value); return *this;} + inline ListGroupsForMemberRequest& WithNextToken(Aws::String&& value) { SetNextToken(std::move(value)); return *this;} + inline ListGroupsForMemberRequest& WithNextToken(const char* value) { SetNextToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The domain name that's associated with the group.

    This + * parameter is optional, so you can return groups outside of your Managed + * Microsoft AD domain. When no value is defined, only your Managed Microsoft AD + * groups are returned.

    This value is case insensitive and defaults to + * your Managed Microsoft AD domain.

    + */ + inline const Aws::String& GetRealm() const{ return m_realm; } + inline bool RealmHasBeenSet() const { return m_realmHasBeenSet; } + inline void SetRealm(const Aws::String& value) { m_realmHasBeenSet = true; m_realm = value; } + inline void SetRealm(Aws::String&& value) { m_realmHasBeenSet = true; m_realm = std::move(value); } + inline void SetRealm(const char* value) { m_realmHasBeenSet = true; m_realm.assign(value); } + inline ListGroupsForMemberRequest& WithRealm(const Aws::String& value) { SetRealm(value); return *this;} + inline ListGroupsForMemberRequest& WithRealm(Aws::String&& value) { SetRealm(std::move(value)); return *this;} + inline ListGroupsForMemberRequest& WithRealm(const char* value) { SetRealm(value); return *this;} + ///@} + + ///@{ + /** + *

    The SAMAccountName of the user, group, or computer that's a + * member of the group.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline bool SAMAccountNameHasBeenSet() const { return m_sAMAccountNameHasBeenSet; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName.assign(value); } + inline ListGroupsForMemberRequest& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline ListGroupsForMemberRequest& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline ListGroupsForMemberRequest& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + + int m_maxResults; + bool m_maxResultsHasBeenSet = false; + + Aws::String m_memberRealm; + bool m_memberRealmHasBeenSet = false; + + Aws::String m_nextToken; + bool m_nextTokenHasBeenSet = false; + + Aws::String m_realm; + bool m_realmHasBeenSet = false; + + Aws::String m_sAMAccountName; + bool m_sAMAccountNameHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupsForMemberResult.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupsForMemberResult.h new file mode 100644 index 00000000000..60e4420be14 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupsForMemberResult.h @@ -0,0 +1,130 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + class ListGroupsForMemberResult + { + public: + AWS_DIRECTORYSERVICEDATA_API ListGroupsForMemberResult(); + AWS_DIRECTORYSERVICEDATA_API ListGroupsForMemberResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICEDATA_API ListGroupsForMemberResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the member.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryId.assign(value); } + inline ListGroupsForMemberResult& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline ListGroupsForMemberResult& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline ListGroupsForMemberResult& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The group information that the request returns.

    + */ + inline const Aws::Vector& GetGroups() const{ return m_groups; } + inline void SetGroups(const Aws::Vector& value) { m_groups = value; } + inline void SetGroups(Aws::Vector&& value) { m_groups = std::move(value); } + inline ListGroupsForMemberResult& WithGroups(const Aws::Vector& value) { SetGroups(value); return *this;} + inline ListGroupsForMemberResult& WithGroups(Aws::Vector&& value) { SetGroups(std::move(value)); return *this;} + inline ListGroupsForMemberResult& AddGroups(const GroupSummary& value) { m_groups.push_back(value); return *this; } + inline ListGroupsForMemberResult& AddGroups(GroupSummary&& value) { m_groups.push_back(std::move(value)); return *this; } + ///@} + + ///@{ + /** + *

    The domain that's associated with the member.

    + */ + inline const Aws::String& GetMemberRealm() const{ return m_memberRealm; } + inline void SetMemberRealm(const Aws::String& value) { m_memberRealm = value; } + inline void SetMemberRealm(Aws::String&& value) { m_memberRealm = std::move(value); } + inline void SetMemberRealm(const char* value) { m_memberRealm.assign(value); } + inline ListGroupsForMemberResult& WithMemberRealm(const Aws::String& value) { SetMemberRealm(value); return *this;} + inline ListGroupsForMemberResult& WithMemberRealm(Aws::String&& value) { SetMemberRealm(std::move(value)); return *this;} + inline ListGroupsForMemberResult& WithMemberRealm(const char* value) { SetMemberRealm(value); return *this;} + ///@} + + ///@{ + /** + *

    An encoded paging token for paginated calls that can be passed back to + * retrieve the next page.

    + */ + inline const Aws::String& GetNextToken() const{ return m_nextToken; } + inline void SetNextToken(const Aws::String& value) { m_nextToken = value; } + inline void SetNextToken(Aws::String&& value) { m_nextToken = std::move(value); } + inline void SetNextToken(const char* value) { m_nextToken.assign(value); } + inline ListGroupsForMemberResult& WithNextToken(const Aws::String& value) { SetNextToken(value); return *this;} + inline ListGroupsForMemberResult& WithNextToken(Aws::String&& value) { SetNextToken(std::move(value)); return *this;} + inline ListGroupsForMemberResult& WithNextToken(const char* value) { SetNextToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The domain that's associated with the group.

    + */ + inline const Aws::String& GetRealm() const{ return m_realm; } + inline void SetRealm(const Aws::String& value) { m_realm = value; } + inline void SetRealm(Aws::String&& value) { m_realm = std::move(value); } + inline void SetRealm(const char* value) { m_realm.assign(value); } + inline ListGroupsForMemberResult& WithRealm(const Aws::String& value) { SetRealm(value); return *this;} + inline ListGroupsForMemberResult& WithRealm(Aws::String&& value) { SetRealm(std::move(value)); return *this;} + inline ListGroupsForMemberResult& WithRealm(const char* value) { SetRealm(value); return *this;} + ///@} + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline ListGroupsForMemberResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline ListGroupsForMemberResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline ListGroupsForMemberResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + + Aws::Vector m_groups; + + Aws::String m_memberRealm; + + Aws::String m_nextToken; + + Aws::String m_realm; + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupsRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupsRequest.h new file mode 100644 index 00000000000..2600410de47 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupsRequest.h @@ -0,0 +1,113 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include + +namespace Aws +{ +namespace Http +{ + class URI; +} //namespace Http +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + */ + class ListGroupsRequest : public DirectoryServiceDataRequest + { + public: + AWS_DIRECTORYSERVICEDATA_API ListGroupsRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "ListGroups"; } + + AWS_DIRECTORYSERVICEDATA_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICEDATA_API void AddQueryStringParameters(Aws::Http::URI& uri) const override; + + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the group.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline ListGroupsRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline ListGroupsRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline ListGroupsRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The maximum number of results to be returned per request.

    + */ + inline int GetMaxResults() const{ return m_maxResults; } + inline bool MaxResultsHasBeenSet() const { return m_maxResultsHasBeenSet; } + inline void SetMaxResults(int value) { m_maxResultsHasBeenSet = true; m_maxResults = value; } + inline ListGroupsRequest& WithMaxResults(int value) { SetMaxResults(value); return *this;} + ///@} + + ///@{ + /** + *

    An encoded paging token for paginated calls that can be passed back to + * retrieve the next page.

    + */ + inline const Aws::String& GetNextToken() const{ return m_nextToken; } + inline bool NextTokenHasBeenSet() const { return m_nextTokenHasBeenSet; } + inline void SetNextToken(const Aws::String& value) { m_nextTokenHasBeenSet = true; m_nextToken = value; } + inline void SetNextToken(Aws::String&& value) { m_nextTokenHasBeenSet = true; m_nextToken = std::move(value); } + inline void SetNextToken(const char* value) { m_nextTokenHasBeenSet = true; m_nextToken.assign(value); } + inline ListGroupsRequest& WithNextToken(const Aws::String& value) { SetNextToken(value); return *this;} + inline ListGroupsRequest& WithNextToken(Aws::String&& value) { SetNextToken(std::move(value)); return *this;} + inline ListGroupsRequest& WithNextToken(const char* value) { SetNextToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The domain name associated with the directory.

    This + * parameter is optional, so you can return groups outside of your Managed + * Microsoft AD domain. When no value is defined, only your Managed Microsoft AD + * groups are returned.

    This value is case insensitive.

    + */ + inline const Aws::String& GetRealm() const{ return m_realm; } + inline bool RealmHasBeenSet() const { return m_realmHasBeenSet; } + inline void SetRealm(const Aws::String& value) { m_realmHasBeenSet = true; m_realm = value; } + inline void SetRealm(Aws::String&& value) { m_realmHasBeenSet = true; m_realm = std::move(value); } + inline void SetRealm(const char* value) { m_realmHasBeenSet = true; m_realm.assign(value); } + inline ListGroupsRequest& WithRealm(const Aws::String& value) { SetRealm(value); return *this;} + inline ListGroupsRequest& WithRealm(Aws::String&& value) { SetRealm(std::move(value)); return *this;} + inline ListGroupsRequest& WithRealm(const char* value) { SetRealm(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + + int m_maxResults; + bool m_maxResultsHasBeenSet = false; + + Aws::String m_nextToken; + bool m_nextTokenHasBeenSet = false; + + Aws::String m_realm; + bool m_realmHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupsResult.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupsResult.h new file mode 100644 index 00000000000..c84a9205536 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListGroupsResult.h @@ -0,0 +1,115 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + class ListGroupsResult + { + public: + AWS_DIRECTORYSERVICEDATA_API ListGroupsResult(); + AWS_DIRECTORYSERVICEDATA_API ListGroupsResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICEDATA_API ListGroupsResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the group.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryId.assign(value); } + inline ListGroupsResult& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline ListGroupsResult& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline ListGroupsResult& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The group information that the request returns.

    + */ + inline const Aws::Vector& GetGroups() const{ return m_groups; } + inline void SetGroups(const Aws::Vector& value) { m_groups = value; } + inline void SetGroups(Aws::Vector&& value) { m_groups = std::move(value); } + inline ListGroupsResult& WithGroups(const Aws::Vector& value) { SetGroups(value); return *this;} + inline ListGroupsResult& WithGroups(Aws::Vector&& value) { SetGroups(std::move(value)); return *this;} + inline ListGroupsResult& AddGroups(const GroupSummary& value) { m_groups.push_back(value); return *this; } + inline ListGroupsResult& AddGroups(GroupSummary&& value) { m_groups.push_back(std::move(value)); return *this; } + ///@} + + ///@{ + /** + *

    An encoded paging token for paginated calls that can be passed back to + * retrieve the next page.

    + */ + inline const Aws::String& GetNextToken() const{ return m_nextToken; } + inline void SetNextToken(const Aws::String& value) { m_nextToken = value; } + inline void SetNextToken(Aws::String&& value) { m_nextToken = std::move(value); } + inline void SetNextToken(const char* value) { m_nextToken.assign(value); } + inline ListGroupsResult& WithNextToken(const Aws::String& value) { SetNextToken(value); return *this;} + inline ListGroupsResult& WithNextToken(Aws::String&& value) { SetNextToken(std::move(value)); return *this;} + inline ListGroupsResult& WithNextToken(const char* value) { SetNextToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The domain name associated with the group.

    + */ + inline const Aws::String& GetRealm() const{ return m_realm; } + inline void SetRealm(const Aws::String& value) { m_realm = value; } + inline void SetRealm(Aws::String&& value) { m_realm = std::move(value); } + inline void SetRealm(const char* value) { m_realm.assign(value); } + inline ListGroupsResult& WithRealm(const Aws::String& value) { SetRealm(value); return *this;} + inline ListGroupsResult& WithRealm(Aws::String&& value) { SetRealm(std::move(value)); return *this;} + inline ListGroupsResult& WithRealm(const char* value) { SetRealm(value); return *this;} + ///@} + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline ListGroupsResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline ListGroupsResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline ListGroupsResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + + Aws::Vector m_groups; + + Aws::String m_nextToken; + + Aws::String m_realm; + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListUsersRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListUsersRequest.h new file mode 100644 index 00000000000..403440b7c17 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListUsersRequest.h @@ -0,0 +1,113 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include + +namespace Aws +{ +namespace Http +{ + class URI; +} //namespace Http +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + */ + class ListUsersRequest : public DirectoryServiceDataRequest + { + public: + AWS_DIRECTORYSERVICEDATA_API ListUsersRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "ListUsers"; } + + AWS_DIRECTORYSERVICEDATA_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICEDATA_API void AddQueryStringParameters(Aws::Http::URI& uri) const override; + + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the user.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline ListUsersRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline ListUsersRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline ListUsersRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The maximum number of results to be returned per request.

    + */ + inline int GetMaxResults() const{ return m_maxResults; } + inline bool MaxResultsHasBeenSet() const { return m_maxResultsHasBeenSet; } + inline void SetMaxResults(int value) { m_maxResultsHasBeenSet = true; m_maxResults = value; } + inline ListUsersRequest& WithMaxResults(int value) { SetMaxResults(value); return *this;} + ///@} + + ///@{ + /** + *

    An encoded paging token for paginated calls that can be passed back to + * retrieve the next page.

    + */ + inline const Aws::String& GetNextToken() const{ return m_nextToken; } + inline bool NextTokenHasBeenSet() const { return m_nextTokenHasBeenSet; } + inline void SetNextToken(const Aws::String& value) { m_nextTokenHasBeenSet = true; m_nextToken = value; } + inline void SetNextToken(Aws::String&& value) { m_nextTokenHasBeenSet = true; m_nextToken = std::move(value); } + inline void SetNextToken(const char* value) { m_nextTokenHasBeenSet = true; m_nextToken.assign(value); } + inline ListUsersRequest& WithNextToken(const Aws::String& value) { SetNextToken(value); return *this;} + inline ListUsersRequest& WithNextToken(Aws::String&& value) { SetNextToken(std::move(value)); return *this;} + inline ListUsersRequest& WithNextToken(const char* value) { SetNextToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The domain name that's associated with the user.

    This + * parameter is optional, so you can return users outside of your Managed Microsoft + * AD domain. When no value is defined, only your Managed Microsoft AD users are + * returned.

    This value is case insensitive.

    + */ + inline const Aws::String& GetRealm() const{ return m_realm; } + inline bool RealmHasBeenSet() const { return m_realmHasBeenSet; } + inline void SetRealm(const Aws::String& value) { m_realmHasBeenSet = true; m_realm = value; } + inline void SetRealm(Aws::String&& value) { m_realmHasBeenSet = true; m_realm = std::move(value); } + inline void SetRealm(const char* value) { m_realmHasBeenSet = true; m_realm.assign(value); } + inline ListUsersRequest& WithRealm(const Aws::String& value) { SetRealm(value); return *this;} + inline ListUsersRequest& WithRealm(Aws::String&& value) { SetRealm(std::move(value)); return *this;} + inline ListUsersRequest& WithRealm(const char* value) { SetRealm(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + + int m_maxResults; + bool m_maxResultsHasBeenSet = false; + + Aws::String m_nextToken; + bool m_nextTokenHasBeenSet = false; + + Aws::String m_realm; + bool m_realmHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListUsersResult.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListUsersResult.h new file mode 100644 index 00000000000..c2308b3c89b --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ListUsersResult.h @@ -0,0 +1,115 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + class ListUsersResult + { + public: + AWS_DIRECTORYSERVICEDATA_API ListUsersResult(); + AWS_DIRECTORYSERVICEDATA_API ListUsersResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICEDATA_API ListUsersResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the user.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryId.assign(value); } + inline ListUsersResult& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline ListUsersResult& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline ListUsersResult& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    An encoded paging token for paginated calls that can be passed back to + * retrieve the next page.

    + */ + inline const Aws::String& GetNextToken() const{ return m_nextToken; } + inline void SetNextToken(const Aws::String& value) { m_nextToken = value; } + inline void SetNextToken(Aws::String&& value) { m_nextToken = std::move(value); } + inline void SetNextToken(const char* value) { m_nextToken.assign(value); } + inline ListUsersResult& WithNextToken(const Aws::String& value) { SetNextToken(value); return *this;} + inline ListUsersResult& WithNextToken(Aws::String&& value) { SetNextToken(std::move(value)); return *this;} + inline ListUsersResult& WithNextToken(const char* value) { SetNextToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The domain that's associated with the user.

    + */ + inline const Aws::String& GetRealm() const{ return m_realm; } + inline void SetRealm(const Aws::String& value) { m_realm = value; } + inline void SetRealm(Aws::String&& value) { m_realm = std::move(value); } + inline void SetRealm(const char* value) { m_realm.assign(value); } + inline ListUsersResult& WithRealm(const Aws::String& value) { SetRealm(value); return *this;} + inline ListUsersResult& WithRealm(Aws::String&& value) { SetRealm(std::move(value)); return *this;} + inline ListUsersResult& WithRealm(const char* value) { SetRealm(value); return *this;} + ///@} + + ///@{ + /** + *

    The user information that the request returns.

    + */ + inline const Aws::Vector& GetUsers() const{ return m_users; } + inline void SetUsers(const Aws::Vector& value) { m_users = value; } + inline void SetUsers(Aws::Vector&& value) { m_users = std::move(value); } + inline ListUsersResult& WithUsers(const Aws::Vector& value) { SetUsers(value); return *this;} + inline ListUsersResult& WithUsers(Aws::Vector&& value) { SetUsers(std::move(value)); return *this;} + inline ListUsersResult& AddUsers(const UserSummary& value) { m_users.push_back(value); return *this; } + inline ListUsersResult& AddUsers(UserSummary&& value) { m_users.push_back(std::move(value)); return *this; } + ///@} + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline ListUsersResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline ListUsersResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline ListUsersResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + + Aws::String m_nextToken; + + Aws::String m_realm; + + Aws::Vector m_users; + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/Member.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/Member.h new file mode 100644 index 00000000000..51fd5a29998 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/Member.h @@ -0,0 +1,95 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include + +namespace Aws +{ +namespace Utils +{ +namespace Json +{ + class JsonValue; + class JsonView; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + *

    A member object that contains identifying information for a specified + * member.

    See Also:

    AWS + * API Reference

    + */ + class Member + { + public: + AWS_DIRECTORYSERVICEDATA_API Member(); + AWS_DIRECTORYSERVICEDATA_API Member(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API Member& operator=(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API Aws::Utils::Json::JsonValue Jsonize() const; + + + ///@{ + /** + *

    The AD type of the member object.

    + */ + inline const MemberType& GetMemberType() const{ return m_memberType; } + inline bool MemberTypeHasBeenSet() const { return m_memberTypeHasBeenSet; } + inline void SetMemberType(const MemberType& value) { m_memberTypeHasBeenSet = true; m_memberType = value; } + inline void SetMemberType(MemberType&& value) { m_memberTypeHasBeenSet = true; m_memberType = std::move(value); } + inline Member& WithMemberType(const MemberType& value) { SetMemberType(value); return *this;} + inline Member& WithMemberType(MemberType&& value) { SetMemberType(std::move(value)); return *this;} + ///@} + + ///@{ + /** + *

    The name of the group member.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline bool SAMAccountNameHasBeenSet() const { return m_sAMAccountNameHasBeenSet; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName.assign(value); } + inline Member& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline Member& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline Member& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + + ///@{ + /** + *

    The unique security identifier (SID) of the group member.

    + */ + inline const Aws::String& GetSID() const{ return m_sID; } + inline bool SIDHasBeenSet() const { return m_sIDHasBeenSet; } + inline void SetSID(const Aws::String& value) { m_sIDHasBeenSet = true; m_sID = value; } + inline void SetSID(Aws::String&& value) { m_sIDHasBeenSet = true; m_sID = std::move(value); } + inline void SetSID(const char* value) { m_sIDHasBeenSet = true; m_sID.assign(value); } + inline Member& WithSID(const Aws::String& value) { SetSID(value); return *this;} + inline Member& WithSID(Aws::String&& value) { SetSID(std::move(value)); return *this;} + inline Member& WithSID(const char* value) { SetSID(value); return *this;} + ///@} + private: + + MemberType m_memberType; + bool m_memberTypeHasBeenSet = false; + + Aws::String m_sAMAccountName; + bool m_sAMAccountNameHasBeenSet = false; + + Aws::String m_sID; + bool m_sIDHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/MemberType.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/MemberType.h new file mode 100644 index 00000000000..44ecf1099a8 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/MemberType.h @@ -0,0 +1,32 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Model +{ + enum class MemberType + { + NOT_SET, + USER, + GROUP, + COMPUTER + }; + +namespace MemberTypeMapper +{ +AWS_DIRECTORYSERVICEDATA_API MemberType GetMemberTypeForName(const Aws::String& name); + +AWS_DIRECTORYSERVICEDATA_API Aws::String GetNameForMemberType(MemberType value); +} // namespace MemberTypeMapper +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/RemoveGroupMemberRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/RemoveGroupMemberRequest.h new file mode 100644 index 00000000000..a07250808dd --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/RemoveGroupMemberRequest.h @@ -0,0 +1,143 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace Http +{ + class URI; +} //namespace Http +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + */ + class RemoveGroupMemberRequest : public DirectoryServiceDataRequest + { + public: + AWS_DIRECTORYSERVICEDATA_API RemoveGroupMemberRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "RemoveGroupMember"; } + + AWS_DIRECTORYSERVICEDATA_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICEDATA_API void AddQueryStringParameters(Aws::Http::URI& uri) const override; + + + ///@{ + /** + *

    A unique and case-sensitive identifier that you provide to make sure the + * idempotency of the request, so multiple identical calls have the same effect as + * one single call.

    A client token is valid for 8 hours after the first + * request that uses it completes. After 8 hours, any request with the same client + * token is treated as a new request. If the request succeeds, any future uses of + * that token will be idempotent for another 8 hours.

    If you submit a + * request with the same client token but change one of the other parameters within + * the 8-hour idempotency window, Directory Service Data returns an + * ConflictException.

    This parameter is optional when + * using the CLI or SDK.

    + */ + inline const Aws::String& GetClientToken() const{ return m_clientToken; } + inline bool ClientTokenHasBeenSet() const { return m_clientTokenHasBeenSet; } + inline void SetClientToken(const Aws::String& value) { m_clientTokenHasBeenSet = true; m_clientToken = value; } + inline void SetClientToken(Aws::String&& value) { m_clientTokenHasBeenSet = true; m_clientToken = std::move(value); } + inline void SetClientToken(const char* value) { m_clientTokenHasBeenSet = true; m_clientToken.assign(value); } + inline RemoveGroupMemberRequest& WithClientToken(const Aws::String& value) { SetClientToken(value); return *this;} + inline RemoveGroupMemberRequest& WithClientToken(Aws::String&& value) { SetClientToken(std::move(value)); return *this;} + inline RemoveGroupMemberRequest& WithClientToken(const char* value) { SetClientToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the member.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline RemoveGroupMemberRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline RemoveGroupMemberRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline RemoveGroupMemberRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The name of the group.

    + */ + inline const Aws::String& GetGroupName() const{ return m_groupName; } + inline bool GroupNameHasBeenSet() const { return m_groupNameHasBeenSet; } + inline void SetGroupName(const Aws::String& value) { m_groupNameHasBeenSet = true; m_groupName = value; } + inline void SetGroupName(Aws::String&& value) { m_groupNameHasBeenSet = true; m_groupName = std::move(value); } + inline void SetGroupName(const char* value) { m_groupNameHasBeenSet = true; m_groupName.assign(value); } + inline RemoveGroupMemberRequest& WithGroupName(const Aws::String& value) { SetGroupName(value); return *this;} + inline RemoveGroupMemberRequest& WithGroupName(Aws::String&& value) { SetGroupName(std::move(value)); return *this;} + inline RemoveGroupMemberRequest& WithGroupName(const char* value) { SetGroupName(value); return *this;} + ///@} + + ///@{ + /** + *

    The SAMAccountName of the user, group, or computer to remove + * from the group.

    + */ + inline const Aws::String& GetMemberName() const{ return m_memberName; } + inline bool MemberNameHasBeenSet() const { return m_memberNameHasBeenSet; } + inline void SetMemberName(const Aws::String& value) { m_memberNameHasBeenSet = true; m_memberName = value; } + inline void SetMemberName(Aws::String&& value) { m_memberNameHasBeenSet = true; m_memberName = std::move(value); } + inline void SetMemberName(const char* value) { m_memberNameHasBeenSet = true; m_memberName.assign(value); } + inline RemoveGroupMemberRequest& WithMemberName(const Aws::String& value) { SetMemberName(value); return *this;} + inline RemoveGroupMemberRequest& WithMemberName(Aws::String&& value) { SetMemberName(std::move(value)); return *this;} + inline RemoveGroupMemberRequest& WithMemberName(const char* value) { SetMemberName(value); return *this;} + ///@} + + ///@{ + /** + *

    The domain name that's associated with the group member. This parameter + * defaults to the Managed Microsoft AD domain.

    This parameter is + * optional and case insensitive.

    + */ + inline const Aws::String& GetMemberRealm() const{ return m_memberRealm; } + inline bool MemberRealmHasBeenSet() const { return m_memberRealmHasBeenSet; } + inline void SetMemberRealm(const Aws::String& value) { m_memberRealmHasBeenSet = true; m_memberRealm = value; } + inline void SetMemberRealm(Aws::String&& value) { m_memberRealmHasBeenSet = true; m_memberRealm = std::move(value); } + inline void SetMemberRealm(const char* value) { m_memberRealmHasBeenSet = true; m_memberRealm.assign(value); } + inline RemoveGroupMemberRequest& WithMemberRealm(const Aws::String& value) { SetMemberRealm(value); return *this;} + inline RemoveGroupMemberRequest& WithMemberRealm(Aws::String&& value) { SetMemberRealm(std::move(value)); return *this;} + inline RemoveGroupMemberRequest& WithMemberRealm(const char* value) { SetMemberRealm(value); return *this;} + ///@} + private: + + Aws::String m_clientToken; + bool m_clientTokenHasBeenSet = false; + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + + Aws::String m_groupName; + bool m_groupNameHasBeenSet = false; + + Aws::String m_memberName; + bool m_memberNameHasBeenSet = false; + + Aws::String m_memberRealm; + bool m_memberRealmHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/RemoveGroupMemberResult.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/RemoveGroupMemberResult.h new file mode 100644 index 00000000000..3e6931bda51 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/RemoveGroupMemberResult.h @@ -0,0 +1,52 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + class RemoveGroupMemberResult + { + public: + AWS_DIRECTORYSERVICEDATA_API RemoveGroupMemberResult(); + AWS_DIRECTORYSERVICEDATA_API RemoveGroupMemberResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICEDATA_API RemoveGroupMemberResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline RemoveGroupMemberResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline RemoveGroupMemberResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline RemoveGroupMemberResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/SearchGroupsRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/SearchGroupsRequest.h new file mode 100644 index 00000000000..db1103fc374 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/SearchGroupsRequest.h @@ -0,0 +1,156 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace Http +{ + class URI; +} //namespace Http +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + */ + class SearchGroupsRequest : public DirectoryServiceDataRequest + { + public: + AWS_DIRECTORYSERVICEDATA_API SearchGroupsRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "SearchGroups"; } + + AWS_DIRECTORYSERVICEDATA_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICEDATA_API void AddQueryStringParameters(Aws::Http::URI& uri) const override; + + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the group.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline SearchGroupsRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline SearchGroupsRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline SearchGroupsRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The maximum number of results to be returned per request.

    + */ + inline int GetMaxResults() const{ return m_maxResults; } + inline bool MaxResultsHasBeenSet() const { return m_maxResultsHasBeenSet; } + inline void SetMaxResults(int value) { m_maxResultsHasBeenSet = true; m_maxResults = value; } + inline SearchGroupsRequest& WithMaxResults(int value) { SetMaxResults(value); return *this;} + ///@} + + ///@{ + /** + *

    An encoded paging token for paginated calls that can be passed back to + * retrieve the next page.

    + */ + inline const Aws::String& GetNextToken() const{ return m_nextToken; } + inline bool NextTokenHasBeenSet() const { return m_nextTokenHasBeenSet; } + inline void SetNextToken(const Aws::String& value) { m_nextTokenHasBeenSet = true; m_nextToken = value; } + inline void SetNextToken(Aws::String&& value) { m_nextTokenHasBeenSet = true; m_nextToken = std::move(value); } + inline void SetNextToken(const char* value) { m_nextTokenHasBeenSet = true; m_nextToken.assign(value); } + inline SearchGroupsRequest& WithNextToken(const Aws::String& value) { SetNextToken(value); return *this;} + inline SearchGroupsRequest& WithNextToken(Aws::String&& value) { SetNextToken(std::move(value)); return *this;} + inline SearchGroupsRequest& WithNextToken(const char* value) { SetNextToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The domain name that's associated with the group.

    This + * parameter is optional, so you can return groups outside of your Managed + * Microsoft AD domain. When no value is defined, only your Managed Microsoft AD + * groups are returned.

    This value is case insensitive.

    + */ + inline const Aws::String& GetRealm() const{ return m_realm; } + inline bool RealmHasBeenSet() const { return m_realmHasBeenSet; } + inline void SetRealm(const Aws::String& value) { m_realmHasBeenSet = true; m_realm = value; } + inline void SetRealm(Aws::String&& value) { m_realmHasBeenSet = true; m_realm = std::move(value); } + inline void SetRealm(const char* value) { m_realmHasBeenSet = true; m_realm.assign(value); } + inline SearchGroupsRequest& WithRealm(const Aws::String& value) { SetRealm(value); return *this;} + inline SearchGroupsRequest& WithRealm(Aws::String&& value) { SetRealm(std::move(value)); return *this;} + inline SearchGroupsRequest& WithRealm(const char* value) { SetRealm(value); return *this;} + ///@} + + ///@{ + /** + *

    One or more data attributes that are used to search for a group. For a list + * of supported attributes, see Directory + * Service Data Attributes.

    + */ + inline const Aws::Vector& GetSearchAttributes() const{ return m_searchAttributes; } + inline bool SearchAttributesHasBeenSet() const { return m_searchAttributesHasBeenSet; } + inline void SetSearchAttributes(const Aws::Vector& value) { m_searchAttributesHasBeenSet = true; m_searchAttributes = value; } + inline void SetSearchAttributes(Aws::Vector&& value) { m_searchAttributesHasBeenSet = true; m_searchAttributes = std::move(value); } + inline SearchGroupsRequest& WithSearchAttributes(const Aws::Vector& value) { SetSearchAttributes(value); return *this;} + inline SearchGroupsRequest& WithSearchAttributes(Aws::Vector&& value) { SetSearchAttributes(std::move(value)); return *this;} + inline SearchGroupsRequest& AddSearchAttributes(const Aws::String& value) { m_searchAttributesHasBeenSet = true; m_searchAttributes.push_back(value); return *this; } + inline SearchGroupsRequest& AddSearchAttributes(Aws::String&& value) { m_searchAttributesHasBeenSet = true; m_searchAttributes.push_back(std::move(value)); return *this; } + inline SearchGroupsRequest& AddSearchAttributes(const char* value) { m_searchAttributesHasBeenSet = true; m_searchAttributes.push_back(value); return *this; } + ///@} + + ///@{ + /** + *

    The attribute value that you want to search for.

    Wildcard + * (*) searches aren't supported. For a list of supported attributes, + * see Directory + * Service Data Attributes.

    + */ + inline const Aws::String& GetSearchString() const{ return m_searchString; } + inline bool SearchStringHasBeenSet() const { return m_searchStringHasBeenSet; } + inline void SetSearchString(const Aws::String& value) { m_searchStringHasBeenSet = true; m_searchString = value; } + inline void SetSearchString(Aws::String&& value) { m_searchStringHasBeenSet = true; m_searchString = std::move(value); } + inline void SetSearchString(const char* value) { m_searchStringHasBeenSet = true; m_searchString.assign(value); } + inline SearchGroupsRequest& WithSearchString(const Aws::String& value) { SetSearchString(value); return *this;} + inline SearchGroupsRequest& WithSearchString(Aws::String&& value) { SetSearchString(std::move(value)); return *this;} + inline SearchGroupsRequest& WithSearchString(const char* value) { SetSearchString(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + + int m_maxResults; + bool m_maxResultsHasBeenSet = false; + + Aws::String m_nextToken; + bool m_nextTokenHasBeenSet = false; + + Aws::String m_realm; + bool m_realmHasBeenSet = false; + + Aws::Vector m_searchAttributes; + bool m_searchAttributesHasBeenSet = false; + + Aws::String m_searchString; + bool m_searchStringHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/SearchGroupsResult.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/SearchGroupsResult.h new file mode 100644 index 00000000000..2990006fa8d --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/SearchGroupsResult.h @@ -0,0 +1,115 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + class SearchGroupsResult + { + public: + AWS_DIRECTORYSERVICEDATA_API SearchGroupsResult(); + AWS_DIRECTORYSERVICEDATA_API SearchGroupsResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICEDATA_API SearchGroupsResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the group.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryId.assign(value); } + inline SearchGroupsResult& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline SearchGroupsResult& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline SearchGroupsResult& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The group information that the request returns.

    + */ + inline const Aws::Vector& GetGroups() const{ return m_groups; } + inline void SetGroups(const Aws::Vector& value) { m_groups = value; } + inline void SetGroups(Aws::Vector&& value) { m_groups = std::move(value); } + inline SearchGroupsResult& WithGroups(const Aws::Vector& value) { SetGroups(value); return *this;} + inline SearchGroupsResult& WithGroups(Aws::Vector&& value) { SetGroups(std::move(value)); return *this;} + inline SearchGroupsResult& AddGroups(const Group& value) { m_groups.push_back(value); return *this; } + inline SearchGroupsResult& AddGroups(Group&& value) { m_groups.push_back(std::move(value)); return *this; } + ///@} + + ///@{ + /** + *

    An encoded paging token for paginated calls that can be passed back to + * retrieve the next page.

    + */ + inline const Aws::String& GetNextToken() const{ return m_nextToken; } + inline void SetNextToken(const Aws::String& value) { m_nextToken = value; } + inline void SetNextToken(Aws::String&& value) { m_nextToken = std::move(value); } + inline void SetNextToken(const char* value) { m_nextToken.assign(value); } + inline SearchGroupsResult& WithNextToken(const Aws::String& value) { SetNextToken(value); return *this;} + inline SearchGroupsResult& WithNextToken(Aws::String&& value) { SetNextToken(std::move(value)); return *this;} + inline SearchGroupsResult& WithNextToken(const char* value) { SetNextToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The domain that's associated with the group.

    + */ + inline const Aws::String& GetRealm() const{ return m_realm; } + inline void SetRealm(const Aws::String& value) { m_realm = value; } + inline void SetRealm(Aws::String&& value) { m_realm = std::move(value); } + inline void SetRealm(const char* value) { m_realm.assign(value); } + inline SearchGroupsResult& WithRealm(const Aws::String& value) { SetRealm(value); return *this;} + inline SearchGroupsResult& WithRealm(Aws::String&& value) { SetRealm(std::move(value)); return *this;} + inline SearchGroupsResult& WithRealm(const char* value) { SetRealm(value); return *this;} + ///@} + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline SearchGroupsResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline SearchGroupsResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline SearchGroupsResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + + Aws::Vector m_groups; + + Aws::String m_nextToken; + + Aws::String m_realm; + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/SearchUsersRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/SearchUsersRequest.h new file mode 100644 index 00000000000..cc2b3a0bb0b --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/SearchUsersRequest.h @@ -0,0 +1,156 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace Http +{ + class URI; +} //namespace Http +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + */ + class SearchUsersRequest : public DirectoryServiceDataRequest + { + public: + AWS_DIRECTORYSERVICEDATA_API SearchUsersRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "SearchUsers"; } + + AWS_DIRECTORYSERVICEDATA_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICEDATA_API void AddQueryStringParameters(Aws::Http::URI& uri) const override; + + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the user.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline SearchUsersRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline SearchUsersRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline SearchUsersRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The maximum number of results to be returned per request.

    + */ + inline int GetMaxResults() const{ return m_maxResults; } + inline bool MaxResultsHasBeenSet() const { return m_maxResultsHasBeenSet; } + inline void SetMaxResults(int value) { m_maxResultsHasBeenSet = true; m_maxResults = value; } + inline SearchUsersRequest& WithMaxResults(int value) { SetMaxResults(value); return *this;} + ///@} + + ///@{ + /** + *

    An encoded paging token for paginated calls that can be passed back to + * retrieve the next page.

    + */ + inline const Aws::String& GetNextToken() const{ return m_nextToken; } + inline bool NextTokenHasBeenSet() const { return m_nextTokenHasBeenSet; } + inline void SetNextToken(const Aws::String& value) { m_nextTokenHasBeenSet = true; m_nextToken = value; } + inline void SetNextToken(Aws::String&& value) { m_nextTokenHasBeenSet = true; m_nextToken = std::move(value); } + inline void SetNextToken(const char* value) { m_nextTokenHasBeenSet = true; m_nextToken.assign(value); } + inline SearchUsersRequest& WithNextToken(const Aws::String& value) { SetNextToken(value); return *this;} + inline SearchUsersRequest& WithNextToken(Aws::String&& value) { SetNextToken(std::move(value)); return *this;} + inline SearchUsersRequest& WithNextToken(const char* value) { SetNextToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The domain name that's associated with the user.

    This + * parameter is optional, so you can return users outside of your Managed Microsoft + * AD domain. When no value is defined, only your Managed Microsoft AD users are + * returned.

    This value is case insensitive.

    + */ + inline const Aws::String& GetRealm() const{ return m_realm; } + inline bool RealmHasBeenSet() const { return m_realmHasBeenSet; } + inline void SetRealm(const Aws::String& value) { m_realmHasBeenSet = true; m_realm = value; } + inline void SetRealm(Aws::String&& value) { m_realmHasBeenSet = true; m_realm = std::move(value); } + inline void SetRealm(const char* value) { m_realmHasBeenSet = true; m_realm.assign(value); } + inline SearchUsersRequest& WithRealm(const Aws::String& value) { SetRealm(value); return *this;} + inline SearchUsersRequest& WithRealm(Aws::String&& value) { SetRealm(std::move(value)); return *this;} + inline SearchUsersRequest& WithRealm(const char* value) { SetRealm(value); return *this;} + ///@} + + ///@{ + /** + *

    One or more data attributes that are used to search for a user. For a list + * of supported attributes, see Directory + * Service Data Attributes.

    + */ + inline const Aws::Vector& GetSearchAttributes() const{ return m_searchAttributes; } + inline bool SearchAttributesHasBeenSet() const { return m_searchAttributesHasBeenSet; } + inline void SetSearchAttributes(const Aws::Vector& value) { m_searchAttributesHasBeenSet = true; m_searchAttributes = value; } + inline void SetSearchAttributes(Aws::Vector&& value) { m_searchAttributesHasBeenSet = true; m_searchAttributes = std::move(value); } + inline SearchUsersRequest& WithSearchAttributes(const Aws::Vector& value) { SetSearchAttributes(value); return *this;} + inline SearchUsersRequest& WithSearchAttributes(Aws::Vector&& value) { SetSearchAttributes(std::move(value)); return *this;} + inline SearchUsersRequest& AddSearchAttributes(const Aws::String& value) { m_searchAttributesHasBeenSet = true; m_searchAttributes.push_back(value); return *this; } + inline SearchUsersRequest& AddSearchAttributes(Aws::String&& value) { m_searchAttributesHasBeenSet = true; m_searchAttributes.push_back(std::move(value)); return *this; } + inline SearchUsersRequest& AddSearchAttributes(const char* value) { m_searchAttributesHasBeenSet = true; m_searchAttributes.push_back(value); return *this; } + ///@} + + ///@{ + /** + *

    The attribute value that you want to search for.

    Wildcard + * (*) searches aren't supported. For a list of supported attributes, + * see Directory + * Service Data Attributes.

    + */ + inline const Aws::String& GetSearchString() const{ return m_searchString; } + inline bool SearchStringHasBeenSet() const { return m_searchStringHasBeenSet; } + inline void SetSearchString(const Aws::String& value) { m_searchStringHasBeenSet = true; m_searchString = value; } + inline void SetSearchString(Aws::String&& value) { m_searchStringHasBeenSet = true; m_searchString = std::move(value); } + inline void SetSearchString(const char* value) { m_searchStringHasBeenSet = true; m_searchString.assign(value); } + inline SearchUsersRequest& WithSearchString(const Aws::String& value) { SetSearchString(value); return *this;} + inline SearchUsersRequest& WithSearchString(Aws::String&& value) { SetSearchString(std::move(value)); return *this;} + inline SearchUsersRequest& WithSearchString(const char* value) { SetSearchString(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + + int m_maxResults; + bool m_maxResultsHasBeenSet = false; + + Aws::String m_nextToken; + bool m_nextTokenHasBeenSet = false; + + Aws::String m_realm; + bool m_realmHasBeenSet = false; + + Aws::Vector m_searchAttributes; + bool m_searchAttributesHasBeenSet = false; + + Aws::String m_searchString; + bool m_searchStringHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/SearchUsersResult.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/SearchUsersResult.h new file mode 100644 index 00000000000..623dc6c56af --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/SearchUsersResult.h @@ -0,0 +1,115 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + class SearchUsersResult + { + public: + AWS_DIRECTORYSERVICEDATA_API SearchUsersResult(); + AWS_DIRECTORYSERVICEDATA_API SearchUsersResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICEDATA_API SearchUsersResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + /** + *

    The identifier (ID) of the directory where the address block is added.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryId.assign(value); } + inline SearchUsersResult& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline SearchUsersResult& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline SearchUsersResult& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    An encoded paging token for paginated calls that can be passed back to + * retrieve the next page.

    + */ + inline const Aws::String& GetNextToken() const{ return m_nextToken; } + inline void SetNextToken(const Aws::String& value) { m_nextToken = value; } + inline void SetNextToken(Aws::String&& value) { m_nextToken = std::move(value); } + inline void SetNextToken(const char* value) { m_nextToken.assign(value); } + inline SearchUsersResult& WithNextToken(const Aws::String& value) { SetNextToken(value); return *this;} + inline SearchUsersResult& WithNextToken(Aws::String&& value) { SetNextToken(std::move(value)); return *this;} + inline SearchUsersResult& WithNextToken(const char* value) { SetNextToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The domain that's associated with the user.

    + */ + inline const Aws::String& GetRealm() const{ return m_realm; } + inline void SetRealm(const Aws::String& value) { m_realm = value; } + inline void SetRealm(Aws::String&& value) { m_realm = std::move(value); } + inline void SetRealm(const char* value) { m_realm.assign(value); } + inline SearchUsersResult& WithRealm(const Aws::String& value) { SetRealm(value); return *this;} + inline SearchUsersResult& WithRealm(Aws::String&& value) { SetRealm(std::move(value)); return *this;} + inline SearchUsersResult& WithRealm(const char* value) { SetRealm(value); return *this;} + ///@} + + ///@{ + /** + *

    The user information that the request returns.

    + */ + inline const Aws::Vector& GetUsers() const{ return m_users; } + inline void SetUsers(const Aws::Vector& value) { m_users = value; } + inline void SetUsers(Aws::Vector&& value) { m_users = std::move(value); } + inline SearchUsersResult& WithUsers(const Aws::Vector& value) { SetUsers(value); return *this;} + inline SearchUsersResult& WithUsers(Aws::Vector&& value) { SetUsers(std::move(value)); return *this;} + inline SearchUsersResult& AddUsers(const User& value) { m_users.push_back(value); return *this; } + inline SearchUsersResult& AddUsers(User&& value) { m_users.push_back(std::move(value)); return *this; } + ///@} + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline SearchUsersResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline SearchUsersResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline SearchUsersResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + + Aws::String m_nextToken; + + Aws::String m_realm; + + Aws::Vector m_users; + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ThrottlingException.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ThrottlingException.h new file mode 100644 index 00000000000..4526b1136db --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ThrottlingException.h @@ -0,0 +1,74 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include + +namespace Aws +{ +namespace Utils +{ +namespace Json +{ + class JsonValue; + class JsonView; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + *

    The limit on the number of requests per second has been exceeded. + *

    See Also:

    AWS + * API Reference

    + */ + class ThrottlingException + { + public: + AWS_DIRECTORYSERVICEDATA_API ThrottlingException(); + AWS_DIRECTORYSERVICEDATA_API ThrottlingException(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API ThrottlingException& operator=(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API Aws::Utils::Json::JsonValue Jsonize() const; + + + ///@{ + + inline const Aws::String& GetMessage() const{ return m_message; } + inline bool MessageHasBeenSet() const { return m_messageHasBeenSet; } + inline void SetMessage(const Aws::String& value) { m_messageHasBeenSet = true; m_message = value; } + inline void SetMessage(Aws::String&& value) { m_messageHasBeenSet = true; m_message = std::move(value); } + inline void SetMessage(const char* value) { m_messageHasBeenSet = true; m_message.assign(value); } + inline ThrottlingException& WithMessage(const Aws::String& value) { SetMessage(value); return *this;} + inline ThrottlingException& WithMessage(Aws::String&& value) { SetMessage(std::move(value)); return *this;} + inline ThrottlingException& WithMessage(const char* value) { SetMessage(value); return *this;} + ///@} + + ///@{ + /** + *

    The recommended amount of seconds to retry after a throttling exception. + *

    + */ + inline int GetRetryAfterSeconds() const{ return m_retryAfterSeconds; } + inline bool RetryAfterSecondsHasBeenSet() const { return m_retryAfterSecondsHasBeenSet; } + inline void SetRetryAfterSeconds(int value) { m_retryAfterSecondsHasBeenSet = true; m_retryAfterSeconds = value; } + inline ThrottlingException& WithRetryAfterSeconds(int value) { SetRetryAfterSeconds(value); return *this;} + ///@} + private: + + Aws::String m_message; + bool m_messageHasBeenSet = false; + + int m_retryAfterSeconds; + bool m_retryAfterSecondsHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateGroupRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateGroupRequest.h new file mode 100644 index 00000000000..ba9f02c8002 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateGroupRequest.h @@ -0,0 +1,184 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace Http +{ + class URI; +} //namespace Http +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + */ + class UpdateGroupRequest : public DirectoryServiceDataRequest + { + public: + AWS_DIRECTORYSERVICEDATA_API UpdateGroupRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "UpdateGroup"; } + + AWS_DIRECTORYSERVICEDATA_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICEDATA_API void AddQueryStringParameters(Aws::Http::URI& uri) const override; + + + ///@{ + /** + *

    A unique and case-sensitive identifier that you provide to make sure the + * idempotency of the request, so multiple identical calls have the same effect as + * one single call.

    A client token is valid for 8 hours after the first + * request that uses it completes. After 8 hours, any request with the same client + * token is treated as a new request. If the request succeeds, any future uses of + * that token will be idempotent for another 8 hours.

    If you submit a + * request with the same client token but change one of the other parameters within + * the 8-hour idempotency window, Directory Service Data returns an + * ConflictException.

    This parameter is optional when + * using the CLI or SDK.

    + */ + inline const Aws::String& GetClientToken() const{ return m_clientToken; } + inline bool ClientTokenHasBeenSet() const { return m_clientTokenHasBeenSet; } + inline void SetClientToken(const Aws::String& value) { m_clientTokenHasBeenSet = true; m_clientToken = value; } + inline void SetClientToken(Aws::String&& value) { m_clientTokenHasBeenSet = true; m_clientToken = std::move(value); } + inline void SetClientToken(const char* value) { m_clientTokenHasBeenSet = true; m_clientToken.assign(value); } + inline UpdateGroupRequest& WithClientToken(const Aws::String& value) { SetClientToken(value); return *this;} + inline UpdateGroupRequest& WithClientToken(Aws::String&& value) { SetClientToken(std::move(value)); return *this;} + inline UpdateGroupRequest& WithClientToken(const char* value) { SetClientToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the group.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline UpdateGroupRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline UpdateGroupRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline UpdateGroupRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The scope of the AD group. For details, see Active + * Directory security groups.

    + */ + inline const GroupScope& GetGroupScope() const{ return m_groupScope; } + inline bool GroupScopeHasBeenSet() const { return m_groupScopeHasBeenSet; } + inline void SetGroupScope(const GroupScope& value) { m_groupScopeHasBeenSet = true; m_groupScope = value; } + inline void SetGroupScope(GroupScope&& value) { m_groupScopeHasBeenSet = true; m_groupScope = std::move(value); } + inline UpdateGroupRequest& WithGroupScope(const GroupScope& value) { SetGroupScope(value); return *this;} + inline UpdateGroupRequest& WithGroupScope(GroupScope&& value) { SetGroupScope(std::move(value)); return *this;} + ///@} + + ///@{ + /** + *

    The AD group type. For details, see Active + * Directory security group type.

    + */ + inline const GroupType& GetGroupType() const{ return m_groupType; } + inline bool GroupTypeHasBeenSet() const { return m_groupTypeHasBeenSet; } + inline void SetGroupType(const GroupType& value) { m_groupTypeHasBeenSet = true; m_groupType = value; } + inline void SetGroupType(GroupType&& value) { m_groupTypeHasBeenSet = true; m_groupType = std::move(value); } + inline UpdateGroupRequest& WithGroupType(const GroupType& value) { SetGroupType(value); return *this;} + inline UpdateGroupRequest& WithGroupType(GroupType&& value) { SetGroupType(std::move(value)); return *this;} + ///@} + + ///@{ + /** + *

    An expression that defines one or more attributes with the data type and the + * value of each attribute.

    + */ + inline const Aws::Map& GetOtherAttributes() const{ return m_otherAttributes; } + inline bool OtherAttributesHasBeenSet() const { return m_otherAttributesHasBeenSet; } + inline void SetOtherAttributes(const Aws::Map& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes = value; } + inline void SetOtherAttributes(Aws::Map&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes = std::move(value); } + inline UpdateGroupRequest& WithOtherAttributes(const Aws::Map& value) { SetOtherAttributes(value); return *this;} + inline UpdateGroupRequest& WithOtherAttributes(Aws::Map&& value) { SetOtherAttributes(std::move(value)); return *this;} + inline UpdateGroupRequest& AddOtherAttributes(const Aws::String& key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, value); return *this; } + inline UpdateGroupRequest& AddOtherAttributes(Aws::String&& key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(std::move(key), value); return *this; } + inline UpdateGroupRequest& AddOtherAttributes(const Aws::String& key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, std::move(value)); return *this; } + inline UpdateGroupRequest& AddOtherAttributes(Aws::String&& key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(std::move(key), std::move(value)); return *this; } + inline UpdateGroupRequest& AddOtherAttributes(const char* key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, std::move(value)); return *this; } + inline UpdateGroupRequest& AddOtherAttributes(const char* key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, value); return *this; } + ///@} + + ///@{ + /** + *

    The name of the group.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline bool SAMAccountNameHasBeenSet() const { return m_sAMAccountNameHasBeenSet; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName.assign(value); } + inline UpdateGroupRequest& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline UpdateGroupRequest& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline UpdateGroupRequest& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + + ///@{ + /** + *

    The type of update to be performed. If no value exists for the attribute, + * use ADD. Otherwise, use REPLACE to change an attribute + * value or REMOVE to clear the attribute value.

    + */ + inline const UpdateType& GetUpdateType() const{ return m_updateType; } + inline bool UpdateTypeHasBeenSet() const { return m_updateTypeHasBeenSet; } + inline void SetUpdateType(const UpdateType& value) { m_updateTypeHasBeenSet = true; m_updateType = value; } + inline void SetUpdateType(UpdateType&& value) { m_updateTypeHasBeenSet = true; m_updateType = std::move(value); } + inline UpdateGroupRequest& WithUpdateType(const UpdateType& value) { SetUpdateType(value); return *this;} + inline UpdateGroupRequest& WithUpdateType(UpdateType&& value) { SetUpdateType(std::move(value)); return *this;} + ///@} + private: + + Aws::String m_clientToken; + bool m_clientTokenHasBeenSet = false; + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + + GroupScope m_groupScope; + bool m_groupScopeHasBeenSet = false; + + GroupType m_groupType; + bool m_groupTypeHasBeenSet = false; + + Aws::Map m_otherAttributes; + bool m_otherAttributesHasBeenSet = false; + + Aws::String m_sAMAccountName; + bool m_sAMAccountNameHasBeenSet = false; + + UpdateType m_updateType; + bool m_updateTypeHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateGroupResult.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateGroupResult.h new file mode 100644 index 00000000000..7d2091c737b --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateGroupResult.h @@ -0,0 +1,52 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + class UpdateGroupResult + { + public: + AWS_DIRECTORYSERVICEDATA_API UpdateGroupResult(); + AWS_DIRECTORYSERVICEDATA_API UpdateGroupResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICEDATA_API UpdateGroupResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline UpdateGroupResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline UpdateGroupResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline UpdateGroupResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateType.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateType.h new file mode 100644 index 00000000000..d0bf23f4a5e --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateType.h @@ -0,0 +1,32 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Model +{ + enum class UpdateType + { + NOT_SET, + ADD, + REPLACE, + REMOVE + }; + +namespace UpdateTypeMapper +{ +AWS_DIRECTORYSERVICEDATA_API UpdateType GetUpdateTypeForName(const Aws::String& name); + +AWS_DIRECTORYSERVICEDATA_API Aws::String GetNameForUpdateType(UpdateType value); +} // namespace UpdateTypeMapper +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateUserRequest.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateUserRequest.h new file mode 100644 index 00000000000..4c371197c43 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateUserRequest.h @@ -0,0 +1,203 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace Http +{ + class URI; +} //namespace Http +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + */ + class UpdateUserRequest : public DirectoryServiceDataRequest + { + public: + AWS_DIRECTORYSERVICEDATA_API UpdateUserRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "UpdateUser"; } + + AWS_DIRECTORYSERVICEDATA_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICEDATA_API void AddQueryStringParameters(Aws::Http::URI& uri) const override; + + + ///@{ + /** + *

    A unique and case-sensitive identifier that you provide to make sure the + * idempotency of the request, so multiple identical calls have the same effect as + * one single call.

    A client token is valid for 8 hours after the first + * request that uses it completes. After 8 hours, any request with the same client + * token is treated as a new request. If the request succeeds, any future uses of + * that token will be idempotent for another 8 hours.

    If you submit a + * request with the same client token but change one of the other parameters within + * the 8-hour idempotency window, Directory Service Data returns an + * ConflictException.

    This parameter is optional when + * using the CLI or SDK.

    + */ + inline const Aws::String& GetClientToken() const{ return m_clientToken; } + inline bool ClientTokenHasBeenSet() const { return m_clientTokenHasBeenSet; } + inline void SetClientToken(const Aws::String& value) { m_clientTokenHasBeenSet = true; m_clientToken = value; } + inline void SetClientToken(Aws::String&& value) { m_clientTokenHasBeenSet = true; m_clientToken = std::move(value); } + inline void SetClientToken(const char* value) { m_clientTokenHasBeenSet = true; m_clientToken.assign(value); } + inline UpdateUserRequest& WithClientToken(const Aws::String& value) { SetClientToken(value); return *this;} + inline UpdateUserRequest& WithClientToken(Aws::String&& value) { SetClientToken(std::move(value)); return *this;} + inline UpdateUserRequest& WithClientToken(const char* value) { SetClientToken(value); return *this;} + ///@} + + ///@{ + /** + *

    The identifier (ID) of the directory that's associated with the user.

    + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline UpdateUserRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline UpdateUserRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline UpdateUserRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + + ///@{ + /** + *

    The email address of the user.

    + */ + inline const Aws::String& GetEmailAddress() const{ return m_emailAddress; } + inline bool EmailAddressHasBeenSet() const { return m_emailAddressHasBeenSet; } + inline void SetEmailAddress(const Aws::String& value) { m_emailAddressHasBeenSet = true; m_emailAddress = value; } + inline void SetEmailAddress(Aws::String&& value) { m_emailAddressHasBeenSet = true; m_emailAddress = std::move(value); } + inline void SetEmailAddress(const char* value) { m_emailAddressHasBeenSet = true; m_emailAddress.assign(value); } + inline UpdateUserRequest& WithEmailAddress(const Aws::String& value) { SetEmailAddress(value); return *this;} + inline UpdateUserRequest& WithEmailAddress(Aws::String&& value) { SetEmailAddress(std::move(value)); return *this;} + inline UpdateUserRequest& WithEmailAddress(const char* value) { SetEmailAddress(value); return *this;} + ///@} + + ///@{ + /** + *

    The first name of the user.

    + */ + inline const Aws::String& GetGivenName() const{ return m_givenName; } + inline bool GivenNameHasBeenSet() const { return m_givenNameHasBeenSet; } + inline void SetGivenName(const Aws::String& value) { m_givenNameHasBeenSet = true; m_givenName = value; } + inline void SetGivenName(Aws::String&& value) { m_givenNameHasBeenSet = true; m_givenName = std::move(value); } + inline void SetGivenName(const char* value) { m_givenNameHasBeenSet = true; m_givenName.assign(value); } + inline UpdateUserRequest& WithGivenName(const Aws::String& value) { SetGivenName(value); return *this;} + inline UpdateUserRequest& WithGivenName(Aws::String&& value) { SetGivenName(std::move(value)); return *this;} + inline UpdateUserRequest& WithGivenName(const char* value) { SetGivenName(value); return *this;} + ///@} + + ///@{ + /** + *

    An expression that defines one or more attribute names with the data type + * and value of each attribute. A key is an attribute name, and the value is a list + * of maps. For a list of supported attributes, see Directory + * Service Data Attributes.

    Attribute names are case + * insensitive.

    + */ + inline const Aws::Map& GetOtherAttributes() const{ return m_otherAttributes; } + inline bool OtherAttributesHasBeenSet() const { return m_otherAttributesHasBeenSet; } + inline void SetOtherAttributes(const Aws::Map& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes = value; } + inline void SetOtherAttributes(Aws::Map&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes = std::move(value); } + inline UpdateUserRequest& WithOtherAttributes(const Aws::Map& value) { SetOtherAttributes(value); return *this;} + inline UpdateUserRequest& WithOtherAttributes(Aws::Map&& value) { SetOtherAttributes(std::move(value)); return *this;} + inline UpdateUserRequest& AddOtherAttributes(const Aws::String& key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, value); return *this; } + inline UpdateUserRequest& AddOtherAttributes(Aws::String&& key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(std::move(key), value); return *this; } + inline UpdateUserRequest& AddOtherAttributes(const Aws::String& key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, std::move(value)); return *this; } + inline UpdateUserRequest& AddOtherAttributes(Aws::String&& key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(std::move(key), std::move(value)); return *this; } + inline UpdateUserRequest& AddOtherAttributes(const char* key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, std::move(value)); return *this; } + inline UpdateUserRequest& AddOtherAttributes(const char* key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, value); return *this; } + ///@} + + ///@{ + /** + *

    The name of the user.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline bool SAMAccountNameHasBeenSet() const { return m_sAMAccountNameHasBeenSet; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName.assign(value); } + inline UpdateUserRequest& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline UpdateUserRequest& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline UpdateUserRequest& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + + ///@{ + /** + *

    The last name of the user.

    + */ + inline const Aws::String& GetSurname() const{ return m_surname; } + inline bool SurnameHasBeenSet() const { return m_surnameHasBeenSet; } + inline void SetSurname(const Aws::String& value) { m_surnameHasBeenSet = true; m_surname = value; } + inline void SetSurname(Aws::String&& value) { m_surnameHasBeenSet = true; m_surname = std::move(value); } + inline void SetSurname(const char* value) { m_surnameHasBeenSet = true; m_surname.assign(value); } + inline UpdateUserRequest& WithSurname(const Aws::String& value) { SetSurname(value); return *this;} + inline UpdateUserRequest& WithSurname(Aws::String&& value) { SetSurname(std::move(value)); return *this;} + inline UpdateUserRequest& WithSurname(const char* value) { SetSurname(value); return *this;} + ///@} + + ///@{ + /** + *

    The type of update to be performed. If no value exists for the attribute, + * use ADD. Otherwise, use REPLACE to change an attribute + * value or REMOVE to clear the attribute value.

    + */ + inline const UpdateType& GetUpdateType() const{ return m_updateType; } + inline bool UpdateTypeHasBeenSet() const { return m_updateTypeHasBeenSet; } + inline void SetUpdateType(const UpdateType& value) { m_updateTypeHasBeenSet = true; m_updateType = value; } + inline void SetUpdateType(UpdateType&& value) { m_updateTypeHasBeenSet = true; m_updateType = std::move(value); } + inline UpdateUserRequest& WithUpdateType(const UpdateType& value) { SetUpdateType(value); return *this;} + inline UpdateUserRequest& WithUpdateType(UpdateType&& value) { SetUpdateType(std::move(value)); return *this;} + ///@} + private: + + Aws::String m_clientToken; + bool m_clientTokenHasBeenSet = false; + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + + Aws::String m_emailAddress; + bool m_emailAddressHasBeenSet = false; + + Aws::String m_givenName; + bool m_givenNameHasBeenSet = false; + + Aws::Map m_otherAttributes; + bool m_otherAttributesHasBeenSet = false; + + Aws::String m_sAMAccountName; + bool m_sAMAccountNameHasBeenSet = false; + + Aws::String m_surname; + bool m_surnameHasBeenSet = false; + + UpdateType m_updateType; + bool m_updateTypeHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateUserResult.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateUserResult.h new file mode 100644 index 00000000000..687e4675b5c --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UpdateUserResult.h @@ -0,0 +1,52 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + class UpdateUserResult + { + public: + AWS_DIRECTORYSERVICEDATA_API UpdateUserResult(); + AWS_DIRECTORYSERVICEDATA_API UpdateUserResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICEDATA_API UpdateUserResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline UpdateUserResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline UpdateUserResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline UpdateUserResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/User.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/User.h new file mode 100644 index 00000000000..5e92ff81405 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/User.h @@ -0,0 +1,205 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include +#include + +namespace Aws +{ +namespace Utils +{ +namespace Json +{ + class JsonValue; + class JsonView; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + *

    A user object that contains identifying information and attributes for a + * specified user.

    See Also:

    AWS + * API Reference

    + */ + class User + { + public: + AWS_DIRECTORYSERVICEDATA_API User(); + AWS_DIRECTORYSERVICEDATA_API User(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API User& operator=(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API Aws::Utils::Json::JsonValue Jsonize() const; + + + ///@{ + /** + *

    The distinguished + * name of the object.

    + */ + inline const Aws::String& GetDistinguishedName() const{ return m_distinguishedName; } + inline bool DistinguishedNameHasBeenSet() const { return m_distinguishedNameHasBeenSet; } + inline void SetDistinguishedName(const Aws::String& value) { m_distinguishedNameHasBeenSet = true; m_distinguishedName = value; } + inline void SetDistinguishedName(Aws::String&& value) { m_distinguishedNameHasBeenSet = true; m_distinguishedName = std::move(value); } + inline void SetDistinguishedName(const char* value) { m_distinguishedNameHasBeenSet = true; m_distinguishedName.assign(value); } + inline User& WithDistinguishedName(const Aws::String& value) { SetDistinguishedName(value); return *this;} + inline User& WithDistinguishedName(Aws::String&& value) { SetDistinguishedName(std::move(value)); return *this;} + inline User& WithDistinguishedName(const char* value) { SetDistinguishedName(value); return *this;} + ///@} + + ///@{ + /** + *

    The email address of the user.

    + */ + inline const Aws::String& GetEmailAddress() const{ return m_emailAddress; } + inline bool EmailAddressHasBeenSet() const { return m_emailAddressHasBeenSet; } + inline void SetEmailAddress(const Aws::String& value) { m_emailAddressHasBeenSet = true; m_emailAddress = value; } + inline void SetEmailAddress(Aws::String&& value) { m_emailAddressHasBeenSet = true; m_emailAddress = std::move(value); } + inline void SetEmailAddress(const char* value) { m_emailAddressHasBeenSet = true; m_emailAddress.assign(value); } + inline User& WithEmailAddress(const Aws::String& value) { SetEmailAddress(value); return *this;} + inline User& WithEmailAddress(Aws::String&& value) { SetEmailAddress(std::move(value)); return *this;} + inline User& WithEmailAddress(const char* value) { SetEmailAddress(value); return *this;} + ///@} + + ///@{ + /** + *

    Indicates whether the user account is active.

    + */ + inline bool GetEnabled() const{ return m_enabled; } + inline bool EnabledHasBeenSet() const { return m_enabledHasBeenSet; } + inline void SetEnabled(bool value) { m_enabledHasBeenSet = true; m_enabled = value; } + inline User& WithEnabled(bool value) { SetEnabled(value); return *this;} + ///@} + + ///@{ + /** + *

    The first name of the user.

    + */ + inline const Aws::String& GetGivenName() const{ return m_givenName; } + inline bool GivenNameHasBeenSet() const { return m_givenNameHasBeenSet; } + inline void SetGivenName(const Aws::String& value) { m_givenNameHasBeenSet = true; m_givenName = value; } + inline void SetGivenName(Aws::String&& value) { m_givenNameHasBeenSet = true; m_givenName = std::move(value); } + inline void SetGivenName(const char* value) { m_givenNameHasBeenSet = true; m_givenName.assign(value); } + inline User& WithGivenName(const Aws::String& value) { SetGivenName(value); return *this;} + inline User& WithGivenName(Aws::String&& value) { SetGivenName(std::move(value)); return *this;} + inline User& WithGivenName(const char* value) { SetGivenName(value); return *this;} + ///@} + + ///@{ + /** + *

    An expression that includes one or more attributes, data types, and values + * of a user.

    + */ + inline const Aws::Map& GetOtherAttributes() const{ return m_otherAttributes; } + inline bool OtherAttributesHasBeenSet() const { return m_otherAttributesHasBeenSet; } + inline void SetOtherAttributes(const Aws::Map& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes = value; } + inline void SetOtherAttributes(Aws::Map&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes = std::move(value); } + inline User& WithOtherAttributes(const Aws::Map& value) { SetOtherAttributes(value); return *this;} + inline User& WithOtherAttributes(Aws::Map&& value) { SetOtherAttributes(std::move(value)); return *this;} + inline User& AddOtherAttributes(const Aws::String& key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, value); return *this; } + inline User& AddOtherAttributes(Aws::String&& key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(std::move(key), value); return *this; } + inline User& AddOtherAttributes(const Aws::String& key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, std::move(value)); return *this; } + inline User& AddOtherAttributes(Aws::String&& key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(std::move(key), std::move(value)); return *this; } + inline User& AddOtherAttributes(const char* key, AttributeValue&& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, std::move(value)); return *this; } + inline User& AddOtherAttributes(const char* key, const AttributeValue& value) { m_otherAttributesHasBeenSet = true; m_otherAttributes.emplace(key, value); return *this; } + ///@} + + ///@{ + /** + *

    The name of the user.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline bool SAMAccountNameHasBeenSet() const { return m_sAMAccountNameHasBeenSet; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName.assign(value); } + inline User& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline User& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline User& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + + ///@{ + /** + *

    The unique security identifier (SID) of the user.

    + */ + inline const Aws::String& GetSID() const{ return m_sID; } + inline bool SIDHasBeenSet() const { return m_sIDHasBeenSet; } + inline void SetSID(const Aws::String& value) { m_sIDHasBeenSet = true; m_sID = value; } + inline void SetSID(Aws::String&& value) { m_sIDHasBeenSet = true; m_sID = std::move(value); } + inline void SetSID(const char* value) { m_sIDHasBeenSet = true; m_sID.assign(value); } + inline User& WithSID(const Aws::String& value) { SetSID(value); return *this;} + inline User& WithSID(Aws::String&& value) { SetSID(std::move(value)); return *this;} + inline User& WithSID(const char* value) { SetSID(value); return *this;} + ///@} + + ///@{ + /** + *

    The last name of the user.

    + */ + inline const Aws::String& GetSurname() const{ return m_surname; } + inline bool SurnameHasBeenSet() const { return m_surnameHasBeenSet; } + inline void SetSurname(const Aws::String& value) { m_surnameHasBeenSet = true; m_surname = value; } + inline void SetSurname(Aws::String&& value) { m_surnameHasBeenSet = true; m_surname = std::move(value); } + inline void SetSurname(const char* value) { m_surnameHasBeenSet = true; m_surname.assign(value); } + inline User& WithSurname(const Aws::String& value) { SetSurname(value); return *this;} + inline User& WithSurname(Aws::String&& value) { SetSurname(std::move(value)); return *this;} + inline User& WithSurname(const char* value) { SetSurname(value); return *this;} + ///@} + + ///@{ + /** + *

    The UPN that is an internet-style login name for a user and based on the + * internet standard RFC 822. + * The UPN is shorter than the distinguished name and easier to remember.

    + */ + inline const Aws::String& GetUserPrincipalName() const{ return m_userPrincipalName; } + inline bool UserPrincipalNameHasBeenSet() const { return m_userPrincipalNameHasBeenSet; } + inline void SetUserPrincipalName(const Aws::String& value) { m_userPrincipalNameHasBeenSet = true; m_userPrincipalName = value; } + inline void SetUserPrincipalName(Aws::String&& value) { m_userPrincipalNameHasBeenSet = true; m_userPrincipalName = std::move(value); } + inline void SetUserPrincipalName(const char* value) { m_userPrincipalNameHasBeenSet = true; m_userPrincipalName.assign(value); } + inline User& WithUserPrincipalName(const Aws::String& value) { SetUserPrincipalName(value); return *this;} + inline User& WithUserPrincipalName(Aws::String&& value) { SetUserPrincipalName(std::move(value)); return *this;} + inline User& WithUserPrincipalName(const char* value) { SetUserPrincipalName(value); return *this;} + ///@} + private: + + Aws::String m_distinguishedName; + bool m_distinguishedNameHasBeenSet = false; + + Aws::String m_emailAddress; + bool m_emailAddressHasBeenSet = false; + + bool m_enabled; + bool m_enabledHasBeenSet = false; + + Aws::String m_givenName; + bool m_givenNameHasBeenSet = false; + + Aws::Map m_otherAttributes; + bool m_otherAttributesHasBeenSet = false; + + Aws::String m_sAMAccountName; + bool m_sAMAccountNameHasBeenSet = false; + + Aws::String m_sID; + bool m_sIDHasBeenSet = false; + + Aws::String m_surname; + bool m_surnameHasBeenSet = false; + + Aws::String m_userPrincipalName; + bool m_userPrincipalNameHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UserSummary.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UserSummary.h new file mode 100644 index 00000000000..65ecc89640b --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/UserSummary.h @@ -0,0 +1,126 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include + +namespace Aws +{ +namespace Utils +{ +namespace Json +{ + class JsonValue; + class JsonView; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + *

    A structure containing a subset of the fields of a user object from a + * directory.

    See Also:

    AWS + * API Reference

    + */ + class UserSummary + { + public: + AWS_DIRECTORYSERVICEDATA_API UserSummary(); + AWS_DIRECTORYSERVICEDATA_API UserSummary(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API UserSummary& operator=(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API Aws::Utils::Json::JsonValue Jsonize() const; + + + ///@{ + /** + *

    Indicates whether the user account is active.

    + */ + inline bool GetEnabled() const{ return m_enabled; } + inline bool EnabledHasBeenSet() const { return m_enabledHasBeenSet; } + inline void SetEnabled(bool value) { m_enabledHasBeenSet = true; m_enabled = value; } + inline UserSummary& WithEnabled(bool value) { SetEnabled(value); return *this;} + ///@} + + ///@{ + /** + *

    The first name of the user.

    + */ + inline const Aws::String& GetGivenName() const{ return m_givenName; } + inline bool GivenNameHasBeenSet() const { return m_givenNameHasBeenSet; } + inline void SetGivenName(const Aws::String& value) { m_givenNameHasBeenSet = true; m_givenName = value; } + inline void SetGivenName(Aws::String&& value) { m_givenNameHasBeenSet = true; m_givenName = std::move(value); } + inline void SetGivenName(const char* value) { m_givenNameHasBeenSet = true; m_givenName.assign(value); } + inline UserSummary& WithGivenName(const Aws::String& value) { SetGivenName(value); return *this;} + inline UserSummary& WithGivenName(Aws::String&& value) { SetGivenName(std::move(value)); return *this;} + inline UserSummary& WithGivenName(const char* value) { SetGivenName(value); return *this;} + ///@} + + ///@{ + /** + *

    The name of the user.

    + */ + inline const Aws::String& GetSAMAccountName() const{ return m_sAMAccountName; } + inline bool SAMAccountNameHasBeenSet() const { return m_sAMAccountNameHasBeenSet; } + inline void SetSAMAccountName(const Aws::String& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = value; } + inline void SetSAMAccountName(Aws::String&& value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName = std::move(value); } + inline void SetSAMAccountName(const char* value) { m_sAMAccountNameHasBeenSet = true; m_sAMAccountName.assign(value); } + inline UserSummary& WithSAMAccountName(const Aws::String& value) { SetSAMAccountName(value); return *this;} + inline UserSummary& WithSAMAccountName(Aws::String&& value) { SetSAMAccountName(std::move(value)); return *this;} + inline UserSummary& WithSAMAccountName(const char* value) { SetSAMAccountName(value); return *this;} + ///@} + + ///@{ + /** + *

    The unique security identifier (SID) of the user.

    + */ + inline const Aws::String& GetSID() const{ return m_sID; } + inline bool SIDHasBeenSet() const { return m_sIDHasBeenSet; } + inline void SetSID(const Aws::String& value) { m_sIDHasBeenSet = true; m_sID = value; } + inline void SetSID(Aws::String&& value) { m_sIDHasBeenSet = true; m_sID = std::move(value); } + inline void SetSID(const char* value) { m_sIDHasBeenSet = true; m_sID.assign(value); } + inline UserSummary& WithSID(const Aws::String& value) { SetSID(value); return *this;} + inline UserSummary& WithSID(Aws::String&& value) { SetSID(std::move(value)); return *this;} + inline UserSummary& WithSID(const char* value) { SetSID(value); return *this;} + ///@} + + ///@{ + /** + *

    The last name of the user.

    + */ + inline const Aws::String& GetSurname() const{ return m_surname; } + inline bool SurnameHasBeenSet() const { return m_surnameHasBeenSet; } + inline void SetSurname(const Aws::String& value) { m_surnameHasBeenSet = true; m_surname = value; } + inline void SetSurname(Aws::String&& value) { m_surnameHasBeenSet = true; m_surname = std::move(value); } + inline void SetSurname(const char* value) { m_surnameHasBeenSet = true; m_surname.assign(value); } + inline UserSummary& WithSurname(const Aws::String& value) { SetSurname(value); return *this;} + inline UserSummary& WithSurname(Aws::String&& value) { SetSurname(std::move(value)); return *this;} + inline UserSummary& WithSurname(const char* value) { SetSurname(value); return *this;} + ///@} + private: + + bool m_enabled; + bool m_enabledHasBeenSet = false; + + Aws::String m_givenName; + bool m_givenNameHasBeenSet = false; + + Aws::String m_sAMAccountName; + bool m_sAMAccountNameHasBeenSet = false; + + Aws::String m_sID; + bool m_sIDHasBeenSet = false; + + Aws::String m_surname; + bool m_surnameHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ValidationException.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ValidationException.h new file mode 100644 index 00000000000..f71c750caf4 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ValidationException.h @@ -0,0 +1,76 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include + +namespace Aws +{ +namespace Utils +{ +namespace Json +{ + class JsonValue; + class JsonView; +} // namespace Json +} // namespace Utils +namespace DirectoryServiceData +{ +namespace Model +{ + + /** + *

    The request isn't valid. Review the details in the error message to update + * the invalid parameters or values in your request.

    See Also:

    AWS + * API Reference

    + */ + class ValidationException + { + public: + AWS_DIRECTORYSERVICEDATA_API ValidationException(); + AWS_DIRECTORYSERVICEDATA_API ValidationException(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API ValidationException& operator=(Aws::Utils::Json::JsonView jsonValue); + AWS_DIRECTORYSERVICEDATA_API Aws::Utils::Json::JsonValue Jsonize() const; + + + ///@{ + + inline const Aws::String& GetMessage() const{ return m_message; } + inline bool MessageHasBeenSet() const { return m_messageHasBeenSet; } + inline void SetMessage(const Aws::String& value) { m_messageHasBeenSet = true; m_message = value; } + inline void SetMessage(Aws::String&& value) { m_messageHasBeenSet = true; m_message = std::move(value); } + inline void SetMessage(const char* value) { m_messageHasBeenSet = true; m_message.assign(value); } + inline ValidationException& WithMessage(const Aws::String& value) { SetMessage(value); return *this;} + inline ValidationException& WithMessage(Aws::String&& value) { SetMessage(std::move(value)); return *this;} + inline ValidationException& WithMessage(const char* value) { SetMessage(value); return *this;} + ///@} + + ///@{ + /** + *

    Reason the request failed validation.

    + */ + inline const ValidationExceptionReason& GetReason() const{ return m_reason; } + inline bool ReasonHasBeenSet() const { return m_reasonHasBeenSet; } + inline void SetReason(const ValidationExceptionReason& value) { m_reasonHasBeenSet = true; m_reason = value; } + inline void SetReason(ValidationExceptionReason&& value) { m_reasonHasBeenSet = true; m_reason = std::move(value); } + inline ValidationException& WithReason(const ValidationExceptionReason& value) { SetReason(value); return *this;} + inline ValidationException& WithReason(ValidationExceptionReason&& value) { SetReason(std::move(value)); return *this;} + ///@} + private: + + Aws::String m_message; + bool m_messageHasBeenSet = false; + + ValidationExceptionReason m_reason; + bool m_reasonHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ValidationExceptionReason.h b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ValidationExceptionReason.h new file mode 100644 index 00000000000..b08ea970de2 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/include/aws/directory-service-data/model/ValidationExceptionReason.h @@ -0,0 +1,44 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Model +{ + enum class ValidationExceptionReason + { + NOT_SET, + INVALID_REALM, + INVALID_DIRECTORY_TYPE, + INVALID_SECONDARY_REGION, + INVALID_NEXT_TOKEN, + INVALID_ATTRIBUTE_VALUE, + INVALID_ATTRIBUTE_NAME, + INVALID_ATTRIBUTE_FOR_USER, + INVALID_ATTRIBUTE_FOR_GROUP, + INVALID_ATTRIBUTE_FOR_SEARCH, + INVALID_ATTRIBUTE_FOR_MODIFY, + DUPLICATE_ATTRIBUTE, + MISSING_ATTRIBUTE, + ATTRIBUTE_EXISTS, + LDAP_SIZE_LIMIT_EXCEEDED, + LDAP_UNSUPPORTED_OPERATION + }; + +namespace ValidationExceptionReasonMapper +{ +AWS_DIRECTORYSERVICEDATA_API ValidationExceptionReason GetValidationExceptionReasonForName(const Aws::String& name); + +AWS_DIRECTORYSERVICEDATA_API Aws::String GetNameForValidationExceptionReason(ValidationExceptionReason value); +} // namespace ValidationExceptionReasonMapper +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataClient.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataClient.cpp new file mode 100644 index 00000000000..3674b11fec2 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataClient.cpp @@ -0,0 +1,727 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + + +using namespace Aws; +using namespace Aws::Auth; +using namespace Aws::Client; +using namespace Aws::DirectoryServiceData; +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Http; +using namespace Aws::Utils::Json; +using namespace smithy::components::tracing; +using ResolveEndpointOutcome = Aws::Endpoint::ResolveEndpointOutcome; + +namespace Aws +{ + namespace DirectoryServiceData + { + const char SERVICE_NAME[] = "ds-data"; + const char ALLOCATION_TAG[] = "DirectoryServiceDataClient"; + } +} +const char* DirectoryServiceDataClient::GetServiceName() {return SERVICE_NAME;} +const char* DirectoryServiceDataClient::GetAllocationTag() {return ALLOCATION_TAG;} + +DirectoryServiceDataClient::DirectoryServiceDataClient(const DirectoryServiceData::DirectoryServiceDataClientConfiguration& clientConfiguration, + std::shared_ptr endpointProvider) : + BASECLASS(clientConfiguration, + Aws::MakeShared(ALLOCATION_TAG, + Aws::MakeShared(ALLOCATION_TAG), + SERVICE_NAME, + Aws::Region::ComputeSignerRegion(clientConfiguration.region)), + Aws::MakeShared(ALLOCATION_TAG)), + m_clientConfiguration(clientConfiguration), + m_endpointProvider(endpointProvider ? std::move(endpointProvider) : Aws::MakeShared(ALLOCATION_TAG)) +{ + init(m_clientConfiguration); +} + +DirectoryServiceDataClient::DirectoryServiceDataClient(const AWSCredentials& credentials, + std::shared_ptr endpointProvider, + const DirectoryServiceData::DirectoryServiceDataClientConfiguration& clientConfiguration) : + BASECLASS(clientConfiguration, + Aws::MakeShared(ALLOCATION_TAG, + Aws::MakeShared(ALLOCATION_TAG, credentials), + SERVICE_NAME, + Aws::Region::ComputeSignerRegion(clientConfiguration.region)), + Aws::MakeShared(ALLOCATION_TAG)), + m_clientConfiguration(clientConfiguration), + m_endpointProvider(endpointProvider ? std::move(endpointProvider) : Aws::MakeShared(ALLOCATION_TAG)) +{ + init(m_clientConfiguration); +} + +DirectoryServiceDataClient::DirectoryServiceDataClient(const std::shared_ptr& credentialsProvider, + std::shared_ptr endpointProvider, + const DirectoryServiceData::DirectoryServiceDataClientConfiguration& clientConfiguration) : + BASECLASS(clientConfiguration, + Aws::MakeShared(ALLOCATION_TAG, + credentialsProvider, + SERVICE_NAME, + Aws::Region::ComputeSignerRegion(clientConfiguration.region)), + Aws::MakeShared(ALLOCATION_TAG)), + m_clientConfiguration(clientConfiguration), + m_endpointProvider(endpointProvider ? std::move(endpointProvider) : Aws::MakeShared(ALLOCATION_TAG)) +{ + init(m_clientConfiguration); +} + + /* Legacy constructors due deprecation */ + DirectoryServiceDataClient::DirectoryServiceDataClient(const Client::ClientConfiguration& clientConfiguration) : + BASECLASS(clientConfiguration, + Aws::MakeShared(ALLOCATION_TAG, + Aws::MakeShared(ALLOCATION_TAG), + SERVICE_NAME, + Aws::Region::ComputeSignerRegion(clientConfiguration.region)), + Aws::MakeShared(ALLOCATION_TAG)), + m_clientConfiguration(clientConfiguration), + m_endpointProvider(Aws::MakeShared(ALLOCATION_TAG)) +{ + init(m_clientConfiguration); +} + +DirectoryServiceDataClient::DirectoryServiceDataClient(const AWSCredentials& credentials, + const Client::ClientConfiguration& clientConfiguration) : + BASECLASS(clientConfiguration, + Aws::MakeShared(ALLOCATION_TAG, + Aws::MakeShared(ALLOCATION_TAG, credentials), + SERVICE_NAME, + Aws::Region::ComputeSignerRegion(clientConfiguration.region)), + Aws::MakeShared(ALLOCATION_TAG)), + m_clientConfiguration(clientConfiguration), + m_endpointProvider(Aws::MakeShared(ALLOCATION_TAG)) +{ + init(m_clientConfiguration); +} + +DirectoryServiceDataClient::DirectoryServiceDataClient(const std::shared_ptr& credentialsProvider, + const Client::ClientConfiguration& clientConfiguration) : + BASECLASS(clientConfiguration, + Aws::MakeShared(ALLOCATION_TAG, + credentialsProvider, + SERVICE_NAME, + Aws::Region::ComputeSignerRegion(clientConfiguration.region)), + Aws::MakeShared(ALLOCATION_TAG)), + m_clientConfiguration(clientConfiguration), + m_endpointProvider(Aws::MakeShared(ALLOCATION_TAG)) +{ + init(m_clientConfiguration); +} + + /* End of legacy constructors due deprecation */ +DirectoryServiceDataClient::~DirectoryServiceDataClient() +{ + ShutdownSdkClient(this, -1); +} + +std::shared_ptr& DirectoryServiceDataClient::accessEndpointProvider() +{ + return m_endpointProvider; +} + +void DirectoryServiceDataClient::init(const DirectoryServiceData::DirectoryServiceDataClientConfiguration& config) +{ + AWSClient::SetServiceClientName("Directory Service Data"); + if (!m_clientConfiguration.executor) { + if (!m_clientConfiguration.configFactories.executorCreateFn()) { + AWS_LOGSTREAM_FATAL(ALLOCATION_TAG, "Failed to initialize client: config is missing Executor or executorCreateFn"); + m_isInitialized = false; + return; + } + m_clientConfiguration.executor = m_clientConfiguration.configFactories.executorCreateFn(); + } + AWS_CHECK_PTR(SERVICE_NAME, m_endpointProvider); + m_endpointProvider->InitBuiltInParameters(config); +} + +void DirectoryServiceDataClient::OverrideEndpoint(const Aws::String& endpoint) +{ + AWS_CHECK_PTR(SERVICE_NAME, m_endpointProvider); + m_endpointProvider->OverrideEndpoint(endpoint); +} + +AddGroupMemberOutcome DirectoryServiceDataClient::AddGroupMember(const AddGroupMemberRequest& request) const +{ + AWS_OPERATION_GUARD(AddGroupMember); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, AddGroupMember, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + if (!request.DirectoryIdHasBeenSet()) + { + AWS_LOGSTREAM_ERROR("AddGroupMember", "Required field: DirectoryId, is not set"); + return AddGroupMemberOutcome(Aws::Client::AWSError(DirectoryServiceDataErrors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [DirectoryId]", false)); + } + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, AddGroupMember, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, AddGroupMember, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".AddGroupMember", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> AddGroupMemberOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, AddGroupMember, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + endpointResolutionOutcome.GetResult().AddPathSegments("/GroupMemberships/AddGroupMember"); + return AddGroupMemberOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + +CreateGroupOutcome DirectoryServiceDataClient::CreateGroup(const CreateGroupRequest& request) const +{ + AWS_OPERATION_GUARD(CreateGroup); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, CreateGroup, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + if (!request.DirectoryIdHasBeenSet()) + { + AWS_LOGSTREAM_ERROR("CreateGroup", "Required field: DirectoryId, is not set"); + return CreateGroupOutcome(Aws::Client::AWSError(DirectoryServiceDataErrors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [DirectoryId]", false)); + } + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, CreateGroup, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, CreateGroup, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".CreateGroup", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> CreateGroupOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, CreateGroup, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + endpointResolutionOutcome.GetResult().AddPathSegments("/Groups/CreateGroup"); + return CreateGroupOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + +CreateUserOutcome DirectoryServiceDataClient::CreateUser(const CreateUserRequest& request) const +{ + AWS_OPERATION_GUARD(CreateUser); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, CreateUser, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + if (!request.DirectoryIdHasBeenSet()) + { + AWS_LOGSTREAM_ERROR("CreateUser", "Required field: DirectoryId, is not set"); + return CreateUserOutcome(Aws::Client::AWSError(DirectoryServiceDataErrors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [DirectoryId]", false)); + } + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, CreateUser, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, CreateUser, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".CreateUser", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> CreateUserOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, CreateUser, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + endpointResolutionOutcome.GetResult().AddPathSegments("/Users/CreateUser"); + return CreateUserOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + +DeleteGroupOutcome DirectoryServiceDataClient::DeleteGroup(const DeleteGroupRequest& request) const +{ + AWS_OPERATION_GUARD(DeleteGroup); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, DeleteGroup, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + if (!request.DirectoryIdHasBeenSet()) + { + AWS_LOGSTREAM_ERROR("DeleteGroup", "Required field: DirectoryId, is not set"); + return DeleteGroupOutcome(Aws::Client::AWSError(DirectoryServiceDataErrors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [DirectoryId]", false)); + } + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, DeleteGroup, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, DeleteGroup, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".DeleteGroup", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> DeleteGroupOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, DeleteGroup, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + endpointResolutionOutcome.GetResult().AddPathSegments("/Groups/DeleteGroup"); + return DeleteGroupOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + +DeleteUserOutcome DirectoryServiceDataClient::DeleteUser(const DeleteUserRequest& request) const +{ + AWS_OPERATION_GUARD(DeleteUser); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, DeleteUser, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + if (!request.DirectoryIdHasBeenSet()) + { + AWS_LOGSTREAM_ERROR("DeleteUser", "Required field: DirectoryId, is not set"); + return DeleteUserOutcome(Aws::Client::AWSError(DirectoryServiceDataErrors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [DirectoryId]", false)); + } + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, DeleteUser, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, DeleteUser, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".DeleteUser", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> DeleteUserOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, DeleteUser, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + endpointResolutionOutcome.GetResult().AddPathSegments("/Users/DeleteUser"); + return DeleteUserOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + +DescribeGroupOutcome DirectoryServiceDataClient::DescribeGroup(const DescribeGroupRequest& request) const +{ + AWS_OPERATION_GUARD(DescribeGroup); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, DescribeGroup, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + if (!request.DirectoryIdHasBeenSet()) + { + AWS_LOGSTREAM_ERROR("DescribeGroup", "Required field: DirectoryId, is not set"); + return DescribeGroupOutcome(Aws::Client::AWSError(DirectoryServiceDataErrors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [DirectoryId]", false)); + } + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, DescribeGroup, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, DescribeGroup, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".DescribeGroup", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> DescribeGroupOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, DescribeGroup, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + endpointResolutionOutcome.GetResult().AddPathSegments("/Groups/DescribeGroup"); + return DescribeGroupOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + +DescribeUserOutcome DirectoryServiceDataClient::DescribeUser(const DescribeUserRequest& request) const +{ + AWS_OPERATION_GUARD(DescribeUser); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, DescribeUser, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + if (!request.DirectoryIdHasBeenSet()) + { + AWS_LOGSTREAM_ERROR("DescribeUser", "Required field: DirectoryId, is not set"); + return DescribeUserOutcome(Aws::Client::AWSError(DirectoryServiceDataErrors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [DirectoryId]", false)); + } + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, DescribeUser, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, DescribeUser, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".DescribeUser", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> DescribeUserOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, DescribeUser, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + endpointResolutionOutcome.GetResult().AddPathSegments("/Users/DescribeUser"); + return DescribeUserOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + +DisableUserOutcome DirectoryServiceDataClient::DisableUser(const DisableUserRequest& request) const +{ + AWS_OPERATION_GUARD(DisableUser); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, DisableUser, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + if (!request.DirectoryIdHasBeenSet()) + { + AWS_LOGSTREAM_ERROR("DisableUser", "Required field: DirectoryId, is not set"); + return DisableUserOutcome(Aws::Client::AWSError(DirectoryServiceDataErrors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [DirectoryId]", false)); + } + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, DisableUser, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, DisableUser, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".DisableUser", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> DisableUserOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, DisableUser, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + endpointResolutionOutcome.GetResult().AddPathSegments("/Users/DisableUser"); + return DisableUserOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + +ListGroupMembersOutcome DirectoryServiceDataClient::ListGroupMembers(const ListGroupMembersRequest& request) const +{ + AWS_OPERATION_GUARD(ListGroupMembers); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, ListGroupMembers, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + if (!request.DirectoryIdHasBeenSet()) + { + AWS_LOGSTREAM_ERROR("ListGroupMembers", "Required field: DirectoryId, is not set"); + return ListGroupMembersOutcome(Aws::Client::AWSError(DirectoryServiceDataErrors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [DirectoryId]", false)); + } + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, ListGroupMembers, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, ListGroupMembers, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".ListGroupMembers", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> ListGroupMembersOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, ListGroupMembers, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + endpointResolutionOutcome.GetResult().AddPathSegments("/GroupMemberships/ListGroupMembers"); + return ListGroupMembersOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + +ListGroupsOutcome DirectoryServiceDataClient::ListGroups(const ListGroupsRequest& request) const +{ + AWS_OPERATION_GUARD(ListGroups); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, ListGroups, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + if (!request.DirectoryIdHasBeenSet()) + { + AWS_LOGSTREAM_ERROR("ListGroups", "Required field: DirectoryId, is not set"); + return ListGroupsOutcome(Aws::Client::AWSError(DirectoryServiceDataErrors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [DirectoryId]", false)); + } + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, ListGroups, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, ListGroups, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".ListGroups", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> ListGroupsOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, ListGroups, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + endpointResolutionOutcome.GetResult().AddPathSegments("/Groups/ListGroups"); + return ListGroupsOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + +ListGroupsForMemberOutcome DirectoryServiceDataClient::ListGroupsForMember(const ListGroupsForMemberRequest& request) const +{ + AWS_OPERATION_GUARD(ListGroupsForMember); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, ListGroupsForMember, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + if (!request.DirectoryIdHasBeenSet()) + { + AWS_LOGSTREAM_ERROR("ListGroupsForMember", "Required field: DirectoryId, is not set"); + return ListGroupsForMemberOutcome(Aws::Client::AWSError(DirectoryServiceDataErrors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [DirectoryId]", false)); + } + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, ListGroupsForMember, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, ListGroupsForMember, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".ListGroupsForMember", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> ListGroupsForMemberOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, ListGroupsForMember, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + endpointResolutionOutcome.GetResult().AddPathSegments("/GroupMemberships/ListGroupsForMember"); + return ListGroupsForMemberOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + +ListUsersOutcome DirectoryServiceDataClient::ListUsers(const ListUsersRequest& request) const +{ + AWS_OPERATION_GUARD(ListUsers); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, ListUsers, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + if (!request.DirectoryIdHasBeenSet()) + { + AWS_LOGSTREAM_ERROR("ListUsers", "Required field: DirectoryId, is not set"); + return ListUsersOutcome(Aws::Client::AWSError(DirectoryServiceDataErrors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [DirectoryId]", false)); + } + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, ListUsers, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, ListUsers, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".ListUsers", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> ListUsersOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, ListUsers, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + endpointResolutionOutcome.GetResult().AddPathSegments("/Users/ListUsers"); + return ListUsersOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + +RemoveGroupMemberOutcome DirectoryServiceDataClient::RemoveGroupMember(const RemoveGroupMemberRequest& request) const +{ + AWS_OPERATION_GUARD(RemoveGroupMember); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, RemoveGroupMember, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + if (!request.DirectoryIdHasBeenSet()) + { + AWS_LOGSTREAM_ERROR("RemoveGroupMember", "Required field: DirectoryId, is not set"); + return RemoveGroupMemberOutcome(Aws::Client::AWSError(DirectoryServiceDataErrors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [DirectoryId]", false)); + } + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, RemoveGroupMember, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, RemoveGroupMember, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".RemoveGroupMember", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> RemoveGroupMemberOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, RemoveGroupMember, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + endpointResolutionOutcome.GetResult().AddPathSegments("/GroupMemberships/RemoveGroupMember"); + return RemoveGroupMemberOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + +SearchGroupsOutcome DirectoryServiceDataClient::SearchGroups(const SearchGroupsRequest& request) const +{ + AWS_OPERATION_GUARD(SearchGroups); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, SearchGroups, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + if (!request.DirectoryIdHasBeenSet()) + { + AWS_LOGSTREAM_ERROR("SearchGroups", "Required field: DirectoryId, is not set"); + return SearchGroupsOutcome(Aws::Client::AWSError(DirectoryServiceDataErrors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [DirectoryId]", false)); + } + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, SearchGroups, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, SearchGroups, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".SearchGroups", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> SearchGroupsOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, SearchGroups, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + endpointResolutionOutcome.GetResult().AddPathSegments("/Groups/SearchGroups"); + return SearchGroupsOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + +SearchUsersOutcome DirectoryServiceDataClient::SearchUsers(const SearchUsersRequest& request) const +{ + AWS_OPERATION_GUARD(SearchUsers); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, SearchUsers, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + if (!request.DirectoryIdHasBeenSet()) + { + AWS_LOGSTREAM_ERROR("SearchUsers", "Required field: DirectoryId, is not set"); + return SearchUsersOutcome(Aws::Client::AWSError(DirectoryServiceDataErrors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [DirectoryId]", false)); + } + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, SearchUsers, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, SearchUsers, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".SearchUsers", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> SearchUsersOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, SearchUsers, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + endpointResolutionOutcome.GetResult().AddPathSegments("/Users/SearchUsers"); + return SearchUsersOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + +UpdateGroupOutcome DirectoryServiceDataClient::UpdateGroup(const UpdateGroupRequest& request) const +{ + AWS_OPERATION_GUARD(UpdateGroup); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, UpdateGroup, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + if (!request.DirectoryIdHasBeenSet()) + { + AWS_LOGSTREAM_ERROR("UpdateGroup", "Required field: DirectoryId, is not set"); + return UpdateGroupOutcome(Aws::Client::AWSError(DirectoryServiceDataErrors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [DirectoryId]", false)); + } + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, UpdateGroup, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, UpdateGroup, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".UpdateGroup", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> UpdateGroupOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, UpdateGroup, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + endpointResolutionOutcome.GetResult().AddPathSegments("/Groups/UpdateGroup"); + return UpdateGroupOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + +UpdateUserOutcome DirectoryServiceDataClient::UpdateUser(const UpdateUserRequest& request) const +{ + AWS_OPERATION_GUARD(UpdateUser); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, UpdateUser, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + if (!request.DirectoryIdHasBeenSet()) + { + AWS_LOGSTREAM_ERROR("UpdateUser", "Required field: DirectoryId, is not set"); + return UpdateUserOutcome(Aws::Client::AWSError(DirectoryServiceDataErrors::MISSING_PARAMETER, "MISSING_PARAMETER", "Missing required field [DirectoryId]", false)); + } + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, UpdateUser, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, UpdateUser, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".UpdateUser", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> UpdateUserOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, UpdateUser, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + endpointResolutionOutcome.GetResult().AddPathSegments("/Users/UpdateUser"); + return UpdateUserOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataEndpointProvider.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataEndpointProvider.cpp new file mode 100644 index 00000000000..012fbb5df81 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataEndpointProvider.cpp @@ -0,0 +1,16 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Endpoint +{ +} // namespace Endpoint +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataEndpointRules.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataEndpointRules.cpp new file mode 100644 index 00000000000..9e8d39788f1 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataEndpointRules.cpp @@ -0,0 +1,176 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +namespace Aws +{ +namespace DirectoryServiceData +{ +const size_t DirectoryServiceDataEndpointRules::RulesBlobStrLen = 3728; +const size_t DirectoryServiceDataEndpointRules::RulesBlobSize = 3729; + +using RulesBlobT = Aws::Array; +static constexpr RulesBlobT RulesBlob = {{ +'{','"','v','e','r','s','i','o','n','"',':','"','1','.','0','"',',','"','p','a','r','a','m','e','t', +'e','r','s','"',':','{','"','R','e','g','i','o','n','"',':','{','"','b','u','i','l','t','I','n','"', +':','"','A','W','S',':',':','R','e','g','i','o','n','"',',','"','r','e','q','u','i','r','e','d','"', +':','f','a','l','s','e',',','"','d','o','c','u','m','e','n','t','a','t','i','o','n','"',':','"','T', +'h','e',' ','A','W','S',' ','r','e','g','i','o','n',' ','u','s','e','d',' ','t','o',' ','d','i','s', +'p','a','t','c','h',' ','t','h','e',' ','r','e','q','u','e','s','t','.','"',',','"','t','y','p','e', +'"',':','"','S','t','r','i','n','g','"','}',',','"','U','s','e','D','u','a','l','S','t','a','c','k', +'"',':','{','"','b','u','i','l','t','I','n','"',':','"','A','W','S',':',':','U','s','e','D','u','a', +'l','S','t','a','c','k','"',',','"','r','e','q','u','i','r','e','d','"',':','t','r','u','e',',','"', +'d','e','f','a','u','l','t','"',':','f','a','l','s','e',',','"','d','o','c','u','m','e','n','t','a', +'t','i','o','n','"',':','"','W','h','e','n',' ','t','r','u','e',',',' ','u','s','e',' ','t','h','e', +' ','d','u','a','l','-','s','t','a','c','k',' ','e','n','d','p','o','i','n','t','.',' ','I','f',' ', +'t','h','e',' ','c','o','n','f','i','g','u','r','e','d',' ','e','n','d','p','o','i','n','t',' ','d', +'o','e','s',' ','n','o','t',' ','s','u','p','p','o','r','t',' ','d','u','a','l','-','s','t','a','c', +'k',',',' ','d','i','s','p','a','t','c','h','i','n','g',' ','t','h','e',' ','r','e','q','u','e','s', +'t',' ','M','A','Y',' ','r','e','t','u','r','n',' ','a','n',' ','e','r','r','o','r','.','"',',','"', +'t','y','p','e','"',':','"','B','o','o','l','e','a','n','"','}',',','"','U','s','e','F','I','P','S', +'"',':','{','"','b','u','i','l','t','I','n','"',':','"','A','W','S',':',':','U','s','e','F','I','P', +'S','"',',','"','r','e','q','u','i','r','e','d','"',':','t','r','u','e',',','"','d','e','f','a','u', +'l','t','"',':','f','a','l','s','e',',','"','d','o','c','u','m','e','n','t','a','t','i','o','n','"', +':','"','W','h','e','n',' ','t','r','u','e',',',' ','s','e','n','d',' ','t','h','i','s',' ','r','e', +'q','u','e','s','t',' ','t','o',' ','t','h','e',' ','F','I','P','S','-','c','o','m','p','l','i','a', +'n','t',' ','r','e','g','i','o','n','a','l',' ','e','n','d','p','o','i','n','t','.',' ','I','f',' ', +'t','h','e',' ','c','o','n','f','i','g','u','r','e','d',' ','e','n','d','p','o','i','n','t',' ','d', +'o','e','s',' ','n','o','t',' ','h','a','v','e',' ','a',' ','F','I','P','S',' ','c','o','m','p','l', +'i','a','n','t',' ','e','n','d','p','o','i','n','t',',',' ','d','i','s','p','a','t','c','h','i','n', +'g',' ','t','h','e',' ','r','e','q','u','e','s','t',' ','w','i','l','l',' ','r','e','t','u','r','n', +' ','a','n',' ','e','r','r','o','r','.','"',',','"','t','y','p','e','"',':','"','B','o','o','l','e', +'a','n','"','}',',','"','E','n','d','p','o','i','n','t','"',':','{','"','b','u','i','l','t','I','n', +'"',':','"','S','D','K',':',':','E','n','d','p','o','i','n','t','"',',','"','r','e','q','u','i','r', +'e','d','"',':','f','a','l','s','e',',','"','d','o','c','u','m','e','n','t','a','t','i','o','n','"', +':','"','O','v','e','r','r','i','d','e',' ','t','h','e',' ','e','n','d','p','o','i','n','t',' ','u', +'s','e','d',' ','t','o',' ','s','e','n','d',' ','t','h','i','s',' ','r','e','q','u','e','s','t','"', +',','"','t','y','p','e','"',':','"','S','t','r','i','n','g','"','}','}',',','"','r','u','l','e','s', +'"',':','[','{','"','c','o','n','d','i','t','i','o','n','s','"',':','[','{','"','f','n','"',':','"', +'i','s','S','e','t','"',',','"','a','r','g','v','"',':','[','{','"','r','e','f','"',':','"','E','n', +'d','p','o','i','n','t','"','}',']','}',']',',','"','r','u','l','e','s','"',':','[','{','"','c','o', +'n','d','i','t','i','o','n','s','"',':','[','{','"','f','n','"',':','"','b','o','o','l','e','a','n', +'E','q','u','a','l','s','"',',','"','a','r','g','v','"',':','[','{','"','r','e','f','"',':','"','U', +'s','e','F','I','P','S','"','}',',','t','r','u','e',']','}',']',',','"','e','r','r','o','r','"',':', +'"','I','n','v','a','l','i','d',' ','C','o','n','f','i','g','u','r','a','t','i','o','n',':',' ','F', +'I','P','S',' ','a','n','d',' ','c','u','s','t','o','m',' ','e','n','d','p','o','i','n','t',' ','a', +'r','e',' ','n','o','t',' ','s','u','p','p','o','r','t','e','d','"',',','"','t','y','p','e','"',':', +'"','e','r','r','o','r','"','}',',','{','"','c','o','n','d','i','t','i','o','n','s','"',':','[',']', +',','"','r','u','l','e','s','"',':','[','{','"','c','o','n','d','i','t','i','o','n','s','"',':','[', +'{','"','f','n','"',':','"','b','o','o','l','e','a','n','E','q','u','a','l','s','"',',','"','a','r', +'g','v','"',':','[','{','"','r','e','f','"',':','"','U','s','e','D','u','a','l','S','t','a','c','k', +'"','}',',','t','r','u','e',']','}',']',',','"','e','r','r','o','r','"',':','"','I','n','v','a','l', +'i','d',' ','C','o','n','f','i','g','u','r','a','t','i','o','n',':',' ','D','u','a','l','s','t','a', +'c','k',' ','a','n','d',' ','c','u','s','t','o','m',' ','e','n','d','p','o','i','n','t',' ','a','r', +'e',' ','n','o','t',' ','s','u','p','p','o','r','t','e','d','"',',','"','t','y','p','e','"',':','"', +'e','r','r','o','r','"','}',',','{','"','c','o','n','d','i','t','i','o','n','s','"',':','[',']',',', +'"','e','n','d','p','o','i','n','t','"',':','{','"','u','r','l','"',':','{','"','r','e','f','"',':', +'"','E','n','d','p','o','i','n','t','"','}',',','"','p','r','o','p','e','r','t','i','e','s','"',':', +'{','}',',','"','h','e','a','d','e','r','s','"',':','{','}','}',',','"','t','y','p','e','"',':','"', +'e','n','d','p','o','i','n','t','"','}',']',',','"','t','y','p','e','"',':','"','t','r','e','e','"', +'}',']',',','"','t','y','p','e','"',':','"','t','r','e','e','"','}',',','{','"','c','o','n','d','i', +'t','i','o','n','s','"',':','[',']',',','"','r','u','l','e','s','"',':','[','{','"','c','o','n','d', +'i','t','i','o','n','s','"',':','[','{','"','f','n','"',':','"','i','s','S','e','t','"',',','"','a', +'r','g','v','"',':','[','{','"','r','e','f','"',':','"','R','e','g','i','o','n','"','}',']','}',']', +',','"','r','u','l','e','s','"',':','[','{','"','c','o','n','d','i','t','i','o','n','s','"',':','[', +'{','"','f','n','"',':','"','a','w','s','.','p','a','r','t','i','t','i','o','n','"',',','"','a','r', +'g','v','"',':','[','{','"','r','e','f','"',':','"','R','e','g','i','o','n','"','}',']',',','"','a', +'s','s','i','g','n','"',':','"','P','a','r','t','i','t','i','o','n','R','e','s','u','l','t','"','}', +']',',','"','r','u','l','e','s','"',':','[','{','"','c','o','n','d','i','t','i','o','n','s','"',':', +'[','{','"','f','n','"',':','"','b','o','o','l','e','a','n','E','q','u','a','l','s','"',',','"','a', +'r','g','v','"',':','[','{','"','r','e','f','"',':','"','U','s','e','F','I','P','S','"','}',',','t', +'r','u','e',']','}',',','{','"','f','n','"',':','"','b','o','o','l','e','a','n','E','q','u','a','l', +'s','"',',','"','a','r','g','v','"',':','[','{','"','r','e','f','"',':','"','U','s','e','D','u','a', +'l','S','t','a','c','k','"','}',',','t','r','u','e',']','}',']',',','"','r','u','l','e','s','"',':', +'[','{','"','c','o','n','d','i','t','i','o','n','s','"',':','[','{','"','f','n','"',':','"','b','o', +'o','l','e','a','n','E','q','u','a','l','s','"',',','"','a','r','g','v','"',':','[','t','r','u','e', +',','{','"','f','n','"',':','"','g','e','t','A','t','t','r','"',',','"','a','r','g','v','"',':','[', +'{','"','r','e','f','"',':','"','P','a','r','t','i','t','i','o','n','R','e','s','u','l','t','"','}', +',','"','s','u','p','p','o','r','t','s','F','I','P','S','"',']','}',']','}',',','{','"','f','n','"', +':','"','b','o','o','l','e','a','n','E','q','u','a','l','s','"',',','"','a','r','g','v','"',':','[', +'t','r','u','e',',','{','"','f','n','"',':','"','g','e','t','A','t','t','r','"',',','"','a','r','g', +'v','"',':','[','{','"','r','e','f','"',':','"','P','a','r','t','i','t','i','o','n','R','e','s','u', +'l','t','"','}',',','"','s','u','p','p','o','r','t','s','D','u','a','l','S','t','a','c','k','"',']', +'}',']','}',']',',','"','r','u','l','e','s','"',':','[','{','"','c','o','n','d','i','t','i','o','n', +'s','"',':','[',']',',','"','r','u','l','e','s','"',':','[','{','"','c','o','n','d','i','t','i','o', +'n','s','"',':','[',']',',','"','e','n','d','p','o','i','n','t','"',':','{','"','u','r','l','"',':', +'"','h','t','t','p','s',':','/','/','d','s','-','d','a','t','a','-','f','i','p','s','.','{','R','e', +'g','i','o','n','}','.','{','P','a','r','t','i','t','i','o','n','R','e','s','u','l','t','#','d','u', +'a','l','S','t','a','c','k','D','n','s','S','u','f','f','i','x','}','"',',','"','p','r','o','p','e', +'r','t','i','e','s','"',':','{','}',',','"','h','e','a','d','e','r','s','"',':','{','}','}',',','"', +'t','y','p','e','"',':','"','e','n','d','p','o','i','n','t','"','}',']',',','"','t','y','p','e','"', +':','"','t','r','e','e','"','}',']',',','"','t','y','p','e','"',':','"','t','r','e','e','"','}',',', +'{','"','c','o','n','d','i','t','i','o','n','s','"',':','[',']',',','"','e','r','r','o','r','"',':', +'"','F','I','P','S',' ','a','n','d',' ','D','u','a','l','S','t','a','c','k',' ','a','r','e',' ','e', +'n','a','b','l','e','d',',',' ','b','u','t',' ','t','h','i','s',' ','p','a','r','t','i','t','i','o', +'n',' ','d','o','e','s',' ','n','o','t',' ','s','u','p','p','o','r','t',' ','o','n','e',' ','o','r', +' ','b','o','t','h','"',',','"','t','y','p','e','"',':','"','e','r','r','o','r','"','}',']',',','"', +'t','y','p','e','"',':','"','t','r','e','e','"','}',',','{','"','c','o','n','d','i','t','i','o','n', +'s','"',':','[','{','"','f','n','"',':','"','b','o','o','l','e','a','n','E','q','u','a','l','s','"', +',','"','a','r','g','v','"',':','[','{','"','r','e','f','"',':','"','U','s','e','F','I','P','S','"', +'}',',','t','r','u','e',']','}',']',',','"','r','u','l','e','s','"',':','[','{','"','c','o','n','d', +'i','t','i','o','n','s','"',':','[','{','"','f','n','"',':','"','b','o','o','l','e','a','n','E','q', +'u','a','l','s','"',',','"','a','r','g','v','"',':','[','{','"','f','n','"',':','"','g','e','t','A', +'t','t','r','"',',','"','a','r','g','v','"',':','[','{','"','r','e','f','"',':','"','P','a','r','t', +'i','t','i','o','n','R','e','s','u','l','t','"','}',',','"','s','u','p','p','o','r','t','s','F','I', +'P','S','"',']','}',',','t','r','u','e',']','}',']',',','"','r','u','l','e','s','"',':','[','{','"', +'c','o','n','d','i','t','i','o','n','s','"',':','[',']',',','"','r','u','l','e','s','"',':','[','{', +'"','c','o','n','d','i','t','i','o','n','s','"',':','[',']',',','"','e','n','d','p','o','i','n','t', +'"',':','{','"','u','r','l','"',':','"','h','t','t','p','s',':','/','/','d','s','-','d','a','t','a', +'-','f','i','p','s','.','{','R','e','g','i','o','n','}','.','{','P','a','r','t','i','t','i','o','n', +'R','e','s','u','l','t','#','d','n','s','S','u','f','f','i','x','}','"',',','"','p','r','o','p','e', +'r','t','i','e','s','"',':','{','}',',','"','h','e','a','d','e','r','s','"',':','{','}','}',',','"', +'t','y','p','e','"',':','"','e','n','d','p','o','i','n','t','"','}',']',',','"','t','y','p','e','"', +':','"','t','r','e','e','"','}',']',',','"','t','y','p','e','"',':','"','t','r','e','e','"','}',',', +'{','"','c','o','n','d','i','t','i','o','n','s','"',':','[',']',',','"','e','r','r','o','r','"',':', +'"','F','I','P','S',' ','i','s',' ','e','n','a','b','l','e','d',' ','b','u','t',' ','t','h','i','s', +' ','p','a','r','t','i','t','i','o','n',' ','d','o','e','s',' ','n','o','t',' ','s','u','p','p','o', +'r','t',' ','F','I','P','S','"',',','"','t','y','p','e','"',':','"','e','r','r','o','r','"','}',']', +',','"','t','y','p','e','"',':','"','t','r','e','e','"','}',',','{','"','c','o','n','d','i','t','i', +'o','n','s','"',':','[','{','"','f','n','"',':','"','b','o','o','l','e','a','n','E','q','u','a','l', +'s','"',',','"','a','r','g','v','"',':','[','{','"','r','e','f','"',':','"','U','s','e','D','u','a', +'l','S','t','a','c','k','"','}',',','t','r','u','e',']','}',']',',','"','r','u','l','e','s','"',':', +'[','{','"','c','o','n','d','i','t','i','o','n','s','"',':','[','{','"','f','n','"',':','"','b','o', +'o','l','e','a','n','E','q','u','a','l','s','"',',','"','a','r','g','v','"',':','[','t','r','u','e', +',','{','"','f','n','"',':','"','g','e','t','A','t','t','r','"',',','"','a','r','g','v','"',':','[', +'{','"','r','e','f','"',':','"','P','a','r','t','i','t','i','o','n','R','e','s','u','l','t','"','}', +',','"','s','u','p','p','o','r','t','s','D','u','a','l','S','t','a','c','k','"',']','}',']','}',']', +',','"','r','u','l','e','s','"',':','[','{','"','c','o','n','d','i','t','i','o','n','s','"',':','[', +']',',','"','r','u','l','e','s','"',':','[','{','"','c','o','n','d','i','t','i','o','n','s','"',':', +'[',']',',','"','e','n','d','p','o','i','n','t','"',':','{','"','u','r','l','"',':','"','h','t','t', +'p','s',':','/','/','d','s','-','d','a','t','a','.','{','R','e','g','i','o','n','}','.','{','P','a', +'r','t','i','t','i','o','n','R','e','s','u','l','t','#','d','u','a','l','S','t','a','c','k','D','n', +'s','S','u','f','f','i','x','}','"',',','"','p','r','o','p','e','r','t','i','e','s','"',':','{','}', +',','"','h','e','a','d','e','r','s','"',':','{','}','}',',','"','t','y','p','e','"',':','"','e','n', +'d','p','o','i','n','t','"','}',']',',','"','t','y','p','e','"',':','"','t','r','e','e','"','}',']', +',','"','t','y','p','e','"',':','"','t','r','e','e','"','}',',','{','"','c','o','n','d','i','t','i', +'o','n','s','"',':','[',']',',','"','e','r','r','o','r','"',':','"','D','u','a','l','S','t','a','c', +'k',' ','i','s',' ','e','n','a','b','l','e','d',' ','b','u','t',' ','t','h','i','s',' ','p','a','r', +'t','i','t','i','o','n',' ','d','o','e','s',' ','n','o','t',' ','s','u','p','p','o','r','t',' ','D', +'u','a','l','S','t','a','c','k','"',',','"','t','y','p','e','"',':','"','e','r','r','o','r','"','}', +']',',','"','t','y','p','e','"',':','"','t','r','e','e','"','}',',','{','"','c','o','n','d','i','t', +'i','o','n','s','"',':','[',']',',','"','r','u','l','e','s','"',':','[','{','"','c','o','n','d','i', +'t','i','o','n','s','"',':','[',']',',','"','e','n','d','p','o','i','n','t','"',':','{','"','u','r', +'l','"',':','"','h','t','t','p','s',':','/','/','d','s','-','d','a','t','a','.','{','R','e','g','i', +'o','n','}','.','{','P','a','r','t','i','t','i','o','n','R','e','s','u','l','t','#','d','n','s','S', +'u','f','f','i','x','}','"',',','"','p','r','o','p','e','r','t','i','e','s','"',':','{','}',',','"', +'h','e','a','d','e','r','s','"',':','{','}','}',',','"','t','y','p','e','"',':','"','e','n','d','p', +'o','i','n','t','"','}',']',',','"','t','y','p','e','"',':','"','t','r','e','e','"','}',']',',','"', +'t','y','p','e','"',':','"','t','r','e','e','"','}',']',',','"','t','y','p','e','"',':','"','t','r', +'e','e','"','}',',','{','"','c','o','n','d','i','t','i','o','n','s','"',':','[',']',',','"','e','r', +'r','o','r','"',':','"','I','n','v','a','l','i','d',' ','C','o','n','f','i','g','u','r','a','t','i', +'o','n',':',' ','M','i','s','s','i','n','g',' ','R','e','g','i','o','n','"',',','"','t','y','p','e', +'"',':','"','e','r','r','o','r','"','}',']',',','"','t','y','p','e','"',':','"','t','r','e','e','"', +'}',']','}','\0' +}}; + +const char* DirectoryServiceDataEndpointRules::GetRulesBlob() +{ + return RulesBlob.data(); +} + +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataErrorMarshaller.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataErrorMarshaller.cpp new file mode 100644 index 00000000000..f998703fcda --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataErrorMarshaller.cpp @@ -0,0 +1,22 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include + +using namespace Aws::Client; +using namespace Aws::DirectoryServiceData; + +AWSError DirectoryServiceDataErrorMarshaller::FindErrorByName(const char* errorName) const +{ + AWSError error = DirectoryServiceDataErrorMapper::GetErrorForName(errorName); + if(error.GetErrorType() != CoreErrors::UNKNOWN) + { + return error; + } + + return AWSErrorMarshaller::FindErrorByName(errorName); +} \ No newline at end of file diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataErrors.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataErrors.cpp new file mode 100644 index 00000000000..3287ed3d774 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataErrors.cpp @@ -0,0 +1,76 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include +#include + +using namespace Aws::Client; +using namespace Aws::Utils; +using namespace Aws::DirectoryServiceData; +using namespace Aws::DirectoryServiceData::Model; + +namespace Aws +{ +namespace DirectoryServiceData +{ +template<> AWS_DIRECTORYSERVICEDATA_API ThrottlingException DirectoryServiceDataError::GetModeledError() +{ + assert(this->GetErrorType() == DirectoryServiceDataErrors::THROTTLING); + return ThrottlingException(this->GetJsonPayload().View()); +} + +template<> AWS_DIRECTORYSERVICEDATA_API ValidationException DirectoryServiceDataError::GetModeledError() +{ + assert(this->GetErrorType() == DirectoryServiceDataErrors::VALIDATION); + return ValidationException(this->GetJsonPayload().View()); +} + +template<> AWS_DIRECTORYSERVICEDATA_API DirectoryUnavailableException DirectoryServiceDataError::GetModeledError() +{ + assert(this->GetErrorType() == DirectoryServiceDataErrors::DIRECTORY_UNAVAILABLE); + return DirectoryUnavailableException(this->GetJsonPayload().View()); +} + +template<> AWS_DIRECTORYSERVICEDATA_API AccessDeniedException DirectoryServiceDataError::GetModeledError() +{ + assert(this->GetErrorType() == DirectoryServiceDataErrors::ACCESS_DENIED); + return AccessDeniedException(this->GetJsonPayload().View()); +} + +namespace DirectoryServiceDataErrorMapper +{ + +static const int CONFLICT_HASH = HashingUtils::HashString("ConflictException"); +static const int INTERNAL_SERVER_HASH = HashingUtils::HashString("InternalServerException"); +static const int DIRECTORY_UNAVAILABLE_HASH = HashingUtils::HashString("DirectoryUnavailableException"); + + +AWSError GetErrorForName(const char* errorName) +{ + int hashCode = HashingUtils::HashString(errorName); + + if (hashCode == CONFLICT_HASH) + { + return AWSError(static_cast(DirectoryServiceDataErrors::CONFLICT), RetryableType::NOT_RETRYABLE); + } + else if (hashCode == INTERNAL_SERVER_HASH) + { + return AWSError(static_cast(DirectoryServiceDataErrors::INTERNAL_SERVER), RetryableType::RETRYABLE); + } + else if (hashCode == DIRECTORY_UNAVAILABLE_HASH) + { + return AWSError(static_cast(DirectoryServiceDataErrors::DIRECTORY_UNAVAILABLE), RetryableType::RETRYABLE); + } + return AWSError(CoreErrors::UNKNOWN, false); +} + +} // namespace DirectoryServiceDataErrorMapper +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataRequest.cpp new file mode 100644 index 00000000000..a7b26984fff --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/DirectoryServiceDataRequest.cpp @@ -0,0 +1,14 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + + +#include + +namespace Aws +{ +namespace DirectoryServiceData +{ +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/AccessDeniedException.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/AccessDeniedException.cpp new file mode 100644 index 00000000000..8ec58c1fbb3 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/AccessDeniedException.cpp @@ -0,0 +1,73 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Model +{ + +AccessDeniedException::AccessDeniedException() : + m_messageHasBeenSet(false), + m_reason(AccessDeniedReason::NOT_SET), + m_reasonHasBeenSet(false) +{ +} + +AccessDeniedException::AccessDeniedException(JsonView jsonValue) + : AccessDeniedException() +{ + *this = jsonValue; +} + +AccessDeniedException& AccessDeniedException::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("Message")) + { + m_message = jsonValue.GetString("Message"); + + m_messageHasBeenSet = true; + } + + if(jsonValue.ValueExists("Reason")) + { + m_reason = AccessDeniedReasonMapper::GetAccessDeniedReasonForName(jsonValue.GetString("Reason")); + + m_reasonHasBeenSet = true; + } + + return *this; +} + +JsonValue AccessDeniedException::Jsonize() const +{ + JsonValue payload; + + if(m_messageHasBeenSet) + { + payload.WithString("Message", m_message); + + } + + if(m_reasonHasBeenSet) + { + payload.WithString("Reason", AccessDeniedReasonMapper::GetNameForAccessDeniedReason(m_reason)); + } + + return payload; +} + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/AccessDeniedReason.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/AccessDeniedReason.cpp new file mode 100644 index 00000000000..d160b9d44b5 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/AccessDeniedReason.cpp @@ -0,0 +1,79 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +using namespace Aws::Utils; + + +namespace Aws +{ + namespace DirectoryServiceData + { + namespace Model + { + namespace AccessDeniedReasonMapper + { + + static const int IAM_AUTH_HASH = HashingUtils::HashString("IAM_AUTH"); + static const int DIRECTORY_AUTH_HASH = HashingUtils::HashString("DIRECTORY_AUTH"); + static const int DATA_DISABLED_HASH = HashingUtils::HashString("DATA_DISABLED"); + + + AccessDeniedReason GetAccessDeniedReasonForName(const Aws::String& name) + { + int hashCode = HashingUtils::HashString(name.c_str()); + if (hashCode == IAM_AUTH_HASH) + { + return AccessDeniedReason::IAM_AUTH; + } + else if (hashCode == DIRECTORY_AUTH_HASH) + { + return AccessDeniedReason::DIRECTORY_AUTH; + } + else if (hashCode == DATA_DISABLED_HASH) + { + return AccessDeniedReason::DATA_DISABLED; + } + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + overflowContainer->StoreOverflow(hashCode, name); + return static_cast(hashCode); + } + + return AccessDeniedReason::NOT_SET; + } + + Aws::String GetNameForAccessDeniedReason(AccessDeniedReason enumValue) + { + switch(enumValue) + { + case AccessDeniedReason::NOT_SET: + return {}; + case AccessDeniedReason::IAM_AUTH: + return "IAM_AUTH"; + case AccessDeniedReason::DIRECTORY_AUTH: + return "DIRECTORY_AUTH"; + case AccessDeniedReason::DATA_DISABLED: + return "DATA_DISABLED"; + default: + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + return overflowContainer->RetrieveOverflow(static_cast(enumValue)); + } + + return {}; + } + } + + } // namespace AccessDeniedReasonMapper + } // namespace Model + } // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/AddGroupMemberRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/AddGroupMemberRequest.cpp new file mode 100644 index 00000000000..4c7719d4b54 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/AddGroupMemberRequest.cpp @@ -0,0 +1,72 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws::Http; + +AddGroupMemberRequest::AddGroupMemberRequest() : + m_clientToken(Aws::Utils::UUID::PseudoRandomUUID()), + m_clientTokenHasBeenSet(true), + m_directoryIdHasBeenSet(false), + m_groupNameHasBeenSet(false), + m_memberNameHasBeenSet(false), + m_memberRealmHasBeenSet(false) +{ +} + +Aws::String AddGroupMemberRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_clientTokenHasBeenSet) + { + payload.WithString("ClientToken", m_clientToken); + + } + + if(m_groupNameHasBeenSet) + { + payload.WithString("GroupName", m_groupName); + + } + + if(m_memberNameHasBeenSet) + { + payload.WithString("MemberName", m_memberName); + + } + + if(m_memberRealmHasBeenSet) + { + payload.WithString("MemberRealm", m_memberRealm); + + } + + return payload.View().WriteReadable(); +} + +void AddGroupMemberRequest::AddQueryStringParameters(URI& uri) const +{ + Aws::StringStream ss; + if(m_directoryIdHasBeenSet) + { + ss << m_directoryId; + uri.AddQueryStringParameter("DirectoryId", ss.str()); + ss.str(""); + } + +} + + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/AddGroupMemberResult.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/AddGroupMemberResult.cpp new file mode 100644 index 00000000000..7b33acee62b --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/AddGroupMemberResult.cpp @@ -0,0 +1,42 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +AddGroupMemberResult::AddGroupMemberResult() +{ +} + +AddGroupMemberResult::AddGroupMemberResult(const Aws::AmazonWebServiceResult& result) +{ + *this = result; +} + +AddGroupMemberResult& AddGroupMemberResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + AWS_UNREFERENCED_PARAM(result); + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/AttributeValue.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/AttributeValue.cpp new file mode 100644 index 00000000000..68f6480faa0 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/AttributeValue.cpp @@ -0,0 +1,111 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Model +{ + +AttributeValue::AttributeValue() : + m_bOOL(false), + m_bOOLHasBeenSet(false), + m_n(0), + m_nHasBeenSet(false), + m_sHasBeenSet(false), + m_sSHasBeenSet(false) +{ +} + +AttributeValue::AttributeValue(JsonView jsonValue) + : AttributeValue() +{ + *this = jsonValue; +} + +AttributeValue& AttributeValue::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("BOOL")) + { + m_bOOL = jsonValue.GetBool("BOOL"); + + m_bOOLHasBeenSet = true; + } + + if(jsonValue.ValueExists("N")) + { + m_n = jsonValue.GetInt64("N"); + + m_nHasBeenSet = true; + } + + if(jsonValue.ValueExists("S")) + { + m_s = jsonValue.GetString("S"); + + m_sHasBeenSet = true; + } + + if(jsonValue.ValueExists("SS")) + { + Aws::Utils::Array sSJsonList = jsonValue.GetArray("SS"); + for(unsigned sSIndex = 0; sSIndex < sSJsonList.GetLength(); ++sSIndex) + { + m_sS.push_back(sSJsonList[sSIndex].AsString()); + } + m_sSHasBeenSet = true; + } + + return *this; +} + +JsonValue AttributeValue::Jsonize() const +{ + JsonValue payload; + + if(m_bOOLHasBeenSet) + { + payload.WithBool("BOOL", m_bOOL); + + } + + if(m_nHasBeenSet) + { + payload.WithInt64("N", m_n); + + } + + if(m_sHasBeenSet) + { + payload.WithString("S", m_s); + + } + + if(m_sSHasBeenSet) + { + Aws::Utils::Array sSJsonList(m_sS.size()); + for(unsigned sSIndex = 0; sSIndex < sSJsonList.GetLength(); ++sSIndex) + { + sSJsonList[sSIndex].AsString(m_sS[sSIndex]); + } + payload.WithArray("SS", std::move(sSJsonList)); + + } + + return payload; +} + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/CreateGroupRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/CreateGroupRequest.cpp new file mode 100644 index 00000000000..54b039b84c2 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/CreateGroupRequest.cpp @@ -0,0 +1,84 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws::Http; + +CreateGroupRequest::CreateGroupRequest() : + m_clientToken(Aws::Utils::UUID::PseudoRandomUUID()), + m_clientTokenHasBeenSet(true), + m_directoryIdHasBeenSet(false), + m_groupScope(GroupScope::NOT_SET), + m_groupScopeHasBeenSet(false), + m_groupType(GroupType::NOT_SET), + m_groupTypeHasBeenSet(false), + m_otherAttributesHasBeenSet(false), + m_sAMAccountNameHasBeenSet(false) +{ +} + +Aws::String CreateGroupRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_clientTokenHasBeenSet) + { + payload.WithString("ClientToken", m_clientToken); + + } + + if(m_groupScopeHasBeenSet) + { + payload.WithString("GroupScope", GroupScopeMapper::GetNameForGroupScope(m_groupScope)); + } + + if(m_groupTypeHasBeenSet) + { + payload.WithString("GroupType", GroupTypeMapper::GetNameForGroupType(m_groupType)); + } + + if(m_otherAttributesHasBeenSet) + { + JsonValue otherAttributesJsonMap; + for(auto& otherAttributesItem : m_otherAttributes) + { + otherAttributesJsonMap.WithObject(otherAttributesItem.first, otherAttributesItem.second.Jsonize()); + } + payload.WithObject("OtherAttributes", std::move(otherAttributesJsonMap)); + + } + + if(m_sAMAccountNameHasBeenSet) + { + payload.WithString("SAMAccountName", m_sAMAccountName); + + } + + return payload.View().WriteReadable(); +} + +void CreateGroupRequest::AddQueryStringParameters(URI& uri) const +{ + Aws::StringStream ss; + if(m_directoryIdHasBeenSet) + { + ss << m_directoryId; + uri.AddQueryStringParameter("DirectoryId", ss.str()); + ss.str(""); + } + +} + + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/CreateGroupResult.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/CreateGroupResult.cpp new file mode 100644 index 00000000000..7d41de46477 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/CreateGroupResult.cpp @@ -0,0 +1,60 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +CreateGroupResult::CreateGroupResult() +{ +} + +CreateGroupResult::CreateGroupResult(const Aws::AmazonWebServiceResult& result) +{ + *this = result; +} + +CreateGroupResult& CreateGroupResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + JsonView jsonValue = result.GetPayload().View(); + if(jsonValue.ValueExists("DirectoryId")) + { + m_directoryId = jsonValue.GetString("DirectoryId"); + + } + + if(jsonValue.ValueExists("SAMAccountName")) + { + m_sAMAccountName = jsonValue.GetString("SAMAccountName"); + + } + + if(jsonValue.ValueExists("SID")) + { + m_sID = jsonValue.GetString("SID"); + + } + + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/CreateUserRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/CreateUserRequest.cpp new file mode 100644 index 00000000000..2a463ad2a42 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/CreateUserRequest.cpp @@ -0,0 +1,91 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws::Http; + +CreateUserRequest::CreateUserRequest() : + m_clientToken(Aws::Utils::UUID::PseudoRandomUUID()), + m_clientTokenHasBeenSet(true), + m_directoryIdHasBeenSet(false), + m_emailAddressHasBeenSet(false), + m_givenNameHasBeenSet(false), + m_otherAttributesHasBeenSet(false), + m_sAMAccountNameHasBeenSet(false), + m_surnameHasBeenSet(false) +{ +} + +Aws::String CreateUserRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_clientTokenHasBeenSet) + { + payload.WithString("ClientToken", m_clientToken); + + } + + if(m_emailAddressHasBeenSet) + { + payload.WithString("EmailAddress", m_emailAddress); + + } + + if(m_givenNameHasBeenSet) + { + payload.WithString("GivenName", m_givenName); + + } + + if(m_otherAttributesHasBeenSet) + { + JsonValue otherAttributesJsonMap; + for(auto& otherAttributesItem : m_otherAttributes) + { + otherAttributesJsonMap.WithObject(otherAttributesItem.first, otherAttributesItem.second.Jsonize()); + } + payload.WithObject("OtherAttributes", std::move(otherAttributesJsonMap)); + + } + + if(m_sAMAccountNameHasBeenSet) + { + payload.WithString("SAMAccountName", m_sAMAccountName); + + } + + if(m_surnameHasBeenSet) + { + payload.WithString("Surname", m_surname); + + } + + return payload.View().WriteReadable(); +} + +void CreateUserRequest::AddQueryStringParameters(URI& uri) const +{ + Aws::StringStream ss; + if(m_directoryIdHasBeenSet) + { + ss << m_directoryId; + uri.AddQueryStringParameter("DirectoryId", ss.str()); + ss.str(""); + } + +} + + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/CreateUserResult.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/CreateUserResult.cpp new file mode 100644 index 00000000000..a7be17158ab --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/CreateUserResult.cpp @@ -0,0 +1,60 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +CreateUserResult::CreateUserResult() +{ +} + +CreateUserResult::CreateUserResult(const Aws::AmazonWebServiceResult& result) +{ + *this = result; +} + +CreateUserResult& CreateUserResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + JsonView jsonValue = result.GetPayload().View(); + if(jsonValue.ValueExists("DirectoryId")) + { + m_directoryId = jsonValue.GetString("DirectoryId"); + + } + + if(jsonValue.ValueExists("SAMAccountName")) + { + m_sAMAccountName = jsonValue.GetString("SAMAccountName"); + + } + + if(jsonValue.ValueExists("SID")) + { + m_sID = jsonValue.GetString("SID"); + + } + + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/DeleteGroupRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DeleteGroupRequest.cpp new file mode 100644 index 00000000000..67042ac67af --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DeleteGroupRequest.cpp @@ -0,0 +1,58 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws::Http; + +DeleteGroupRequest::DeleteGroupRequest() : + m_clientToken(Aws::Utils::UUID::PseudoRandomUUID()), + m_clientTokenHasBeenSet(true), + m_directoryIdHasBeenSet(false), + m_sAMAccountNameHasBeenSet(false) +{ +} + +Aws::String DeleteGroupRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_clientTokenHasBeenSet) + { + payload.WithString("ClientToken", m_clientToken); + + } + + if(m_sAMAccountNameHasBeenSet) + { + payload.WithString("SAMAccountName", m_sAMAccountName); + + } + + return payload.View().WriteReadable(); +} + +void DeleteGroupRequest::AddQueryStringParameters(URI& uri) const +{ + Aws::StringStream ss; + if(m_directoryIdHasBeenSet) + { + ss << m_directoryId; + uri.AddQueryStringParameter("DirectoryId", ss.str()); + ss.str(""); + } + +} + + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/DeleteGroupResult.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DeleteGroupResult.cpp new file mode 100644 index 00000000000..3bbd818e041 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DeleteGroupResult.cpp @@ -0,0 +1,42 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +DeleteGroupResult::DeleteGroupResult() +{ +} + +DeleteGroupResult::DeleteGroupResult(const Aws::AmazonWebServiceResult& result) +{ + *this = result; +} + +DeleteGroupResult& DeleteGroupResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + AWS_UNREFERENCED_PARAM(result); + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/DeleteUserRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DeleteUserRequest.cpp new file mode 100644 index 00000000000..822aa8839e8 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DeleteUserRequest.cpp @@ -0,0 +1,58 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws::Http; + +DeleteUserRequest::DeleteUserRequest() : + m_clientToken(Aws::Utils::UUID::PseudoRandomUUID()), + m_clientTokenHasBeenSet(true), + m_directoryIdHasBeenSet(false), + m_sAMAccountNameHasBeenSet(false) +{ +} + +Aws::String DeleteUserRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_clientTokenHasBeenSet) + { + payload.WithString("ClientToken", m_clientToken); + + } + + if(m_sAMAccountNameHasBeenSet) + { + payload.WithString("SAMAccountName", m_sAMAccountName); + + } + + return payload.View().WriteReadable(); +} + +void DeleteUserRequest::AddQueryStringParameters(URI& uri) const +{ + Aws::StringStream ss; + if(m_directoryIdHasBeenSet) + { + ss << m_directoryId; + uri.AddQueryStringParameter("DirectoryId", ss.str()); + ss.str(""); + } + +} + + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/DeleteUserResult.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DeleteUserResult.cpp new file mode 100644 index 00000000000..1e9ef6f7cd1 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DeleteUserResult.cpp @@ -0,0 +1,42 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +DeleteUserResult::DeleteUserResult() +{ +} + +DeleteUserResult::DeleteUserResult(const Aws::AmazonWebServiceResult& result) +{ + *this = result; +} + +DeleteUserResult& DeleteUserResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + AWS_UNREFERENCED_PARAM(result); + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/DescribeGroupRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DescribeGroupRequest.cpp new file mode 100644 index 00000000000..b8f6960842b --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DescribeGroupRequest.cpp @@ -0,0 +1,69 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws::Http; + +DescribeGroupRequest::DescribeGroupRequest() : + m_directoryIdHasBeenSet(false), + m_otherAttributesHasBeenSet(false), + m_realmHasBeenSet(false), + m_sAMAccountNameHasBeenSet(false) +{ +} + +Aws::String DescribeGroupRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_otherAttributesHasBeenSet) + { + Aws::Utils::Array otherAttributesJsonList(m_otherAttributes.size()); + for(unsigned otherAttributesIndex = 0; otherAttributesIndex < otherAttributesJsonList.GetLength(); ++otherAttributesIndex) + { + otherAttributesJsonList[otherAttributesIndex].AsString(m_otherAttributes[otherAttributesIndex]); + } + payload.WithArray("OtherAttributes", std::move(otherAttributesJsonList)); + + } + + if(m_realmHasBeenSet) + { + payload.WithString("Realm", m_realm); + + } + + if(m_sAMAccountNameHasBeenSet) + { + payload.WithString("SAMAccountName", m_sAMAccountName); + + } + + return payload.View().WriteReadable(); +} + +void DescribeGroupRequest::AddQueryStringParameters(URI& uri) const +{ + Aws::StringStream ss; + if(m_directoryIdHasBeenSet) + { + ss << m_directoryId; + uri.AddQueryStringParameter("DirectoryId", ss.str()); + ss.str(""); + } + +} + + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/DescribeGroupResult.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DescribeGroupResult.cpp new file mode 100644 index 00000000000..70de4026c28 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DescribeGroupResult.cpp @@ -0,0 +1,96 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +DescribeGroupResult::DescribeGroupResult() : + m_groupScope(GroupScope::NOT_SET), + m_groupType(GroupType::NOT_SET) +{ +} + +DescribeGroupResult::DescribeGroupResult(const Aws::AmazonWebServiceResult& result) + : DescribeGroupResult() +{ + *this = result; +} + +DescribeGroupResult& DescribeGroupResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + JsonView jsonValue = result.GetPayload().View(); + if(jsonValue.ValueExists("DirectoryId")) + { + m_directoryId = jsonValue.GetString("DirectoryId"); + + } + + if(jsonValue.ValueExists("DistinguishedName")) + { + m_distinguishedName = jsonValue.GetString("DistinguishedName"); + + } + + if(jsonValue.ValueExists("GroupScope")) + { + m_groupScope = GroupScopeMapper::GetGroupScopeForName(jsonValue.GetString("GroupScope")); + + } + + if(jsonValue.ValueExists("GroupType")) + { + m_groupType = GroupTypeMapper::GetGroupTypeForName(jsonValue.GetString("GroupType")); + + } + + if(jsonValue.ValueExists("OtherAttributes")) + { + Aws::Map otherAttributesJsonMap = jsonValue.GetObject("OtherAttributes").GetAllObjects(); + for(auto& otherAttributesItem : otherAttributesJsonMap) + { + m_otherAttributes[otherAttributesItem.first] = otherAttributesItem.second.AsObject(); + } + } + + if(jsonValue.ValueExists("Realm")) + { + m_realm = jsonValue.GetString("Realm"); + + } + + if(jsonValue.ValueExists("SAMAccountName")) + { + m_sAMAccountName = jsonValue.GetString("SAMAccountName"); + + } + + if(jsonValue.ValueExists("SID")) + { + m_sID = jsonValue.GetString("SID"); + + } + + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/DescribeUserRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DescribeUserRequest.cpp new file mode 100644 index 00000000000..15e28968789 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DescribeUserRequest.cpp @@ -0,0 +1,69 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws::Http; + +DescribeUserRequest::DescribeUserRequest() : + m_directoryIdHasBeenSet(false), + m_otherAttributesHasBeenSet(false), + m_realmHasBeenSet(false), + m_sAMAccountNameHasBeenSet(false) +{ +} + +Aws::String DescribeUserRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_otherAttributesHasBeenSet) + { + Aws::Utils::Array otherAttributesJsonList(m_otherAttributes.size()); + for(unsigned otherAttributesIndex = 0; otherAttributesIndex < otherAttributesJsonList.GetLength(); ++otherAttributesIndex) + { + otherAttributesJsonList[otherAttributesIndex].AsString(m_otherAttributes[otherAttributesIndex]); + } + payload.WithArray("OtherAttributes", std::move(otherAttributesJsonList)); + + } + + if(m_realmHasBeenSet) + { + payload.WithString("Realm", m_realm); + + } + + if(m_sAMAccountNameHasBeenSet) + { + payload.WithString("SAMAccountName", m_sAMAccountName); + + } + + return payload.View().WriteReadable(); +} + +void DescribeUserRequest::AddQueryStringParameters(URI& uri) const +{ + Aws::StringStream ss; + if(m_directoryIdHasBeenSet) + { + ss << m_directoryId; + uri.AddQueryStringParameter("DirectoryId", ss.str()); + ss.str(""); + } + +} + + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/DescribeUserResult.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DescribeUserResult.cpp new file mode 100644 index 00000000000..f5f5e8cdcda --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DescribeUserResult.cpp @@ -0,0 +1,113 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +DescribeUserResult::DescribeUserResult() : + m_enabled(false) +{ +} + +DescribeUserResult::DescribeUserResult(const Aws::AmazonWebServiceResult& result) + : DescribeUserResult() +{ + *this = result; +} + +DescribeUserResult& DescribeUserResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + JsonView jsonValue = result.GetPayload().View(); + if(jsonValue.ValueExists("DirectoryId")) + { + m_directoryId = jsonValue.GetString("DirectoryId"); + + } + + if(jsonValue.ValueExists("DistinguishedName")) + { + m_distinguishedName = jsonValue.GetString("DistinguishedName"); + + } + + if(jsonValue.ValueExists("EmailAddress")) + { + m_emailAddress = jsonValue.GetString("EmailAddress"); + + } + + if(jsonValue.ValueExists("Enabled")) + { + m_enabled = jsonValue.GetBool("Enabled"); + + } + + if(jsonValue.ValueExists("GivenName")) + { + m_givenName = jsonValue.GetString("GivenName"); + + } + + if(jsonValue.ValueExists("OtherAttributes")) + { + Aws::Map otherAttributesJsonMap = jsonValue.GetObject("OtherAttributes").GetAllObjects(); + for(auto& otherAttributesItem : otherAttributesJsonMap) + { + m_otherAttributes[otherAttributesItem.first] = otherAttributesItem.second.AsObject(); + } + } + + if(jsonValue.ValueExists("Realm")) + { + m_realm = jsonValue.GetString("Realm"); + + } + + if(jsonValue.ValueExists("SAMAccountName")) + { + m_sAMAccountName = jsonValue.GetString("SAMAccountName"); + + } + + if(jsonValue.ValueExists("SID")) + { + m_sID = jsonValue.GetString("SID"); + + } + + if(jsonValue.ValueExists("Surname")) + { + m_surname = jsonValue.GetString("Surname"); + + } + + if(jsonValue.ValueExists("UserPrincipalName")) + { + m_userPrincipalName = jsonValue.GetString("UserPrincipalName"); + + } + + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/DirectoryUnavailableException.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DirectoryUnavailableException.cpp new file mode 100644 index 00000000000..dc171b52a3c --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DirectoryUnavailableException.cpp @@ -0,0 +1,73 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Model +{ + +DirectoryUnavailableException::DirectoryUnavailableException() : + m_messageHasBeenSet(false), + m_reason(DirectoryUnavailableReason::NOT_SET), + m_reasonHasBeenSet(false) +{ +} + +DirectoryUnavailableException::DirectoryUnavailableException(JsonView jsonValue) + : DirectoryUnavailableException() +{ + *this = jsonValue; +} + +DirectoryUnavailableException& DirectoryUnavailableException::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("Message")) + { + m_message = jsonValue.GetString("Message"); + + m_messageHasBeenSet = true; + } + + if(jsonValue.ValueExists("Reason")) + { + m_reason = DirectoryUnavailableReasonMapper::GetDirectoryUnavailableReasonForName(jsonValue.GetString("Reason")); + + m_reasonHasBeenSet = true; + } + + return *this; +} + +JsonValue DirectoryUnavailableException::Jsonize() const +{ + JsonValue payload; + + if(m_messageHasBeenSet) + { + payload.WithString("Message", m_message); + + } + + if(m_reasonHasBeenSet) + { + payload.WithString("Reason", DirectoryUnavailableReasonMapper::GetNameForDirectoryUnavailableReason(m_reason)); + } + + return payload; +} + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/DirectoryUnavailableReason.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DirectoryUnavailableReason.cpp new file mode 100644 index 00000000000..895a0526b8b --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DirectoryUnavailableReason.cpp @@ -0,0 +1,93 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +using namespace Aws::Utils; + + +namespace Aws +{ + namespace DirectoryServiceData + { + namespace Model + { + namespace DirectoryUnavailableReasonMapper + { + + static const int INVALID_DIRECTORY_STATE_HASH = HashingUtils::HashString("INVALID_DIRECTORY_STATE"); + static const int DIRECTORY_TIMEOUT_HASH = HashingUtils::HashString("DIRECTORY_TIMEOUT"); + static const int DIRECTORY_RESOURCES_EXCEEDED_HASH = HashingUtils::HashString("DIRECTORY_RESOURCES_EXCEEDED"); + static const int NO_DISK_SPACE_HASH = HashingUtils::HashString("NO_DISK_SPACE"); + static const int TRUST_AUTH_FAILURE_HASH = HashingUtils::HashString("TRUST_AUTH_FAILURE"); + + + DirectoryUnavailableReason GetDirectoryUnavailableReasonForName(const Aws::String& name) + { + int hashCode = HashingUtils::HashString(name.c_str()); + if (hashCode == INVALID_DIRECTORY_STATE_HASH) + { + return DirectoryUnavailableReason::INVALID_DIRECTORY_STATE; + } + else if (hashCode == DIRECTORY_TIMEOUT_HASH) + { + return DirectoryUnavailableReason::DIRECTORY_TIMEOUT; + } + else if (hashCode == DIRECTORY_RESOURCES_EXCEEDED_HASH) + { + return DirectoryUnavailableReason::DIRECTORY_RESOURCES_EXCEEDED; + } + else if (hashCode == NO_DISK_SPACE_HASH) + { + return DirectoryUnavailableReason::NO_DISK_SPACE; + } + else if (hashCode == TRUST_AUTH_FAILURE_HASH) + { + return DirectoryUnavailableReason::TRUST_AUTH_FAILURE; + } + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + overflowContainer->StoreOverflow(hashCode, name); + return static_cast(hashCode); + } + + return DirectoryUnavailableReason::NOT_SET; + } + + Aws::String GetNameForDirectoryUnavailableReason(DirectoryUnavailableReason enumValue) + { + switch(enumValue) + { + case DirectoryUnavailableReason::NOT_SET: + return {}; + case DirectoryUnavailableReason::INVALID_DIRECTORY_STATE: + return "INVALID_DIRECTORY_STATE"; + case DirectoryUnavailableReason::DIRECTORY_TIMEOUT: + return "DIRECTORY_TIMEOUT"; + case DirectoryUnavailableReason::DIRECTORY_RESOURCES_EXCEEDED: + return "DIRECTORY_RESOURCES_EXCEEDED"; + case DirectoryUnavailableReason::NO_DISK_SPACE: + return "NO_DISK_SPACE"; + case DirectoryUnavailableReason::TRUST_AUTH_FAILURE: + return "TRUST_AUTH_FAILURE"; + default: + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + return overflowContainer->RetrieveOverflow(static_cast(enumValue)); + } + + return {}; + } + } + + } // namespace DirectoryUnavailableReasonMapper + } // namespace Model + } // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/DisableUserRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DisableUserRequest.cpp new file mode 100644 index 00000000000..3b7b4b30654 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DisableUserRequest.cpp @@ -0,0 +1,58 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws::Http; + +DisableUserRequest::DisableUserRequest() : + m_clientToken(Aws::Utils::UUID::PseudoRandomUUID()), + m_clientTokenHasBeenSet(true), + m_directoryIdHasBeenSet(false), + m_sAMAccountNameHasBeenSet(false) +{ +} + +Aws::String DisableUserRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_clientTokenHasBeenSet) + { + payload.WithString("ClientToken", m_clientToken); + + } + + if(m_sAMAccountNameHasBeenSet) + { + payload.WithString("SAMAccountName", m_sAMAccountName); + + } + + return payload.View().WriteReadable(); +} + +void DisableUserRequest::AddQueryStringParameters(URI& uri) const +{ + Aws::StringStream ss; + if(m_directoryIdHasBeenSet) + { + ss << m_directoryId; + uri.AddQueryStringParameter("DirectoryId", ss.str()); + ss.str(""); + } + +} + + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/DisableUserResult.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DisableUserResult.cpp new file mode 100644 index 00000000000..bd52e940260 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/DisableUserResult.cpp @@ -0,0 +1,42 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +DisableUserResult::DisableUserResult() +{ +} + +DisableUserResult::DisableUserResult(const Aws::AmazonWebServiceResult& result) +{ + *this = result; +} + +DisableUserResult& DisableUserResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + AWS_UNREFERENCED_PARAM(result); + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/Group.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/Group.cpp new file mode 100644 index 00000000000..f6067850de4 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/Group.cpp @@ -0,0 +1,137 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Model +{ + +Group::Group() : + m_distinguishedNameHasBeenSet(false), + m_groupScope(GroupScope::NOT_SET), + m_groupScopeHasBeenSet(false), + m_groupType(GroupType::NOT_SET), + m_groupTypeHasBeenSet(false), + m_otherAttributesHasBeenSet(false), + m_sAMAccountNameHasBeenSet(false), + m_sIDHasBeenSet(false) +{ +} + +Group::Group(JsonView jsonValue) + : Group() +{ + *this = jsonValue; +} + +Group& Group::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("DistinguishedName")) + { + m_distinguishedName = jsonValue.GetString("DistinguishedName"); + + m_distinguishedNameHasBeenSet = true; + } + + if(jsonValue.ValueExists("GroupScope")) + { + m_groupScope = GroupScopeMapper::GetGroupScopeForName(jsonValue.GetString("GroupScope")); + + m_groupScopeHasBeenSet = true; + } + + if(jsonValue.ValueExists("GroupType")) + { + m_groupType = GroupTypeMapper::GetGroupTypeForName(jsonValue.GetString("GroupType")); + + m_groupTypeHasBeenSet = true; + } + + if(jsonValue.ValueExists("OtherAttributes")) + { + Aws::Map otherAttributesJsonMap = jsonValue.GetObject("OtherAttributes").GetAllObjects(); + for(auto& otherAttributesItem : otherAttributesJsonMap) + { + m_otherAttributes[otherAttributesItem.first] = otherAttributesItem.second.AsObject(); + } + m_otherAttributesHasBeenSet = true; + } + + if(jsonValue.ValueExists("SAMAccountName")) + { + m_sAMAccountName = jsonValue.GetString("SAMAccountName"); + + m_sAMAccountNameHasBeenSet = true; + } + + if(jsonValue.ValueExists("SID")) + { + m_sID = jsonValue.GetString("SID"); + + m_sIDHasBeenSet = true; + } + + return *this; +} + +JsonValue Group::Jsonize() const +{ + JsonValue payload; + + if(m_distinguishedNameHasBeenSet) + { + payload.WithString("DistinguishedName", m_distinguishedName); + + } + + if(m_groupScopeHasBeenSet) + { + payload.WithString("GroupScope", GroupScopeMapper::GetNameForGroupScope(m_groupScope)); + } + + if(m_groupTypeHasBeenSet) + { + payload.WithString("GroupType", GroupTypeMapper::GetNameForGroupType(m_groupType)); + } + + if(m_otherAttributesHasBeenSet) + { + JsonValue otherAttributesJsonMap; + for(auto& otherAttributesItem : m_otherAttributes) + { + otherAttributesJsonMap.WithObject(otherAttributesItem.first, otherAttributesItem.second.Jsonize()); + } + payload.WithObject("OtherAttributes", std::move(otherAttributesJsonMap)); + + } + + if(m_sAMAccountNameHasBeenSet) + { + payload.WithString("SAMAccountName", m_sAMAccountName); + + } + + if(m_sIDHasBeenSet) + { + payload.WithString("SID", m_sID); + + } + + return payload; +} + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/GroupScope.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/GroupScope.cpp new file mode 100644 index 00000000000..ef3a069f01f --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/GroupScope.cpp @@ -0,0 +1,86 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +using namespace Aws::Utils; + + +namespace Aws +{ + namespace DirectoryServiceData + { + namespace Model + { + namespace GroupScopeMapper + { + + static const int DomainLocal_HASH = HashingUtils::HashString("DomainLocal"); + static const int Global_HASH = HashingUtils::HashString("Global"); + static const int Universal_HASH = HashingUtils::HashString("Universal"); + static const int BuiltinLocal_HASH = HashingUtils::HashString("BuiltinLocal"); + + + GroupScope GetGroupScopeForName(const Aws::String& name) + { + int hashCode = HashingUtils::HashString(name.c_str()); + if (hashCode == DomainLocal_HASH) + { + return GroupScope::DomainLocal; + } + else if (hashCode == Global_HASH) + { + return GroupScope::Global; + } + else if (hashCode == Universal_HASH) + { + return GroupScope::Universal; + } + else if (hashCode == BuiltinLocal_HASH) + { + return GroupScope::BuiltinLocal; + } + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + overflowContainer->StoreOverflow(hashCode, name); + return static_cast(hashCode); + } + + return GroupScope::NOT_SET; + } + + Aws::String GetNameForGroupScope(GroupScope enumValue) + { + switch(enumValue) + { + case GroupScope::NOT_SET: + return {}; + case GroupScope::DomainLocal: + return "DomainLocal"; + case GroupScope::Global: + return "Global"; + case GroupScope::Universal: + return "Universal"; + case GroupScope::BuiltinLocal: + return "BuiltinLocal"; + default: + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + return overflowContainer->RetrieveOverflow(static_cast(enumValue)); + } + + return {}; + } + } + + } // namespace GroupScopeMapper + } // namespace Model + } // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/GroupSummary.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/GroupSummary.cpp new file mode 100644 index 00000000000..c3ee9dd4dab --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/GroupSummary.cpp @@ -0,0 +1,101 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Model +{ + +GroupSummary::GroupSummary() : + m_groupScope(GroupScope::NOT_SET), + m_groupScopeHasBeenSet(false), + m_groupType(GroupType::NOT_SET), + m_groupTypeHasBeenSet(false), + m_sAMAccountNameHasBeenSet(false), + m_sIDHasBeenSet(false) +{ +} + +GroupSummary::GroupSummary(JsonView jsonValue) + : GroupSummary() +{ + *this = jsonValue; +} + +GroupSummary& GroupSummary::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("GroupScope")) + { + m_groupScope = GroupScopeMapper::GetGroupScopeForName(jsonValue.GetString("GroupScope")); + + m_groupScopeHasBeenSet = true; + } + + if(jsonValue.ValueExists("GroupType")) + { + m_groupType = GroupTypeMapper::GetGroupTypeForName(jsonValue.GetString("GroupType")); + + m_groupTypeHasBeenSet = true; + } + + if(jsonValue.ValueExists("SAMAccountName")) + { + m_sAMAccountName = jsonValue.GetString("SAMAccountName"); + + m_sAMAccountNameHasBeenSet = true; + } + + if(jsonValue.ValueExists("SID")) + { + m_sID = jsonValue.GetString("SID"); + + m_sIDHasBeenSet = true; + } + + return *this; +} + +JsonValue GroupSummary::Jsonize() const +{ + JsonValue payload; + + if(m_groupScopeHasBeenSet) + { + payload.WithString("GroupScope", GroupScopeMapper::GetNameForGroupScope(m_groupScope)); + } + + if(m_groupTypeHasBeenSet) + { + payload.WithString("GroupType", GroupTypeMapper::GetNameForGroupType(m_groupType)); + } + + if(m_sAMAccountNameHasBeenSet) + { + payload.WithString("SAMAccountName", m_sAMAccountName); + + } + + if(m_sIDHasBeenSet) + { + payload.WithString("SID", m_sID); + + } + + return payload; +} + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/GroupType.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/GroupType.cpp new file mode 100644 index 00000000000..5cec41d2d16 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/GroupType.cpp @@ -0,0 +1,72 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +using namespace Aws::Utils; + + +namespace Aws +{ + namespace DirectoryServiceData + { + namespace Model + { + namespace GroupTypeMapper + { + + static const int Distribution_HASH = HashingUtils::HashString("Distribution"); + static const int Security_HASH = HashingUtils::HashString("Security"); + + + GroupType GetGroupTypeForName(const Aws::String& name) + { + int hashCode = HashingUtils::HashString(name.c_str()); + if (hashCode == Distribution_HASH) + { + return GroupType::Distribution; + } + else if (hashCode == Security_HASH) + { + return GroupType::Security; + } + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + overflowContainer->StoreOverflow(hashCode, name); + return static_cast(hashCode); + } + + return GroupType::NOT_SET; + } + + Aws::String GetNameForGroupType(GroupType enumValue) + { + switch(enumValue) + { + case GroupType::NOT_SET: + return {}; + case GroupType::Distribution: + return "Distribution"; + case GroupType::Security: + return "Security"; + default: + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + return overflowContainer->RetrieveOverflow(static_cast(enumValue)); + } + + return {}; + } + } + + } // namespace GroupTypeMapper + } // namespace Model + } // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupMembersRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupMembersRequest.cpp new file mode 100644 index 00000000000..91cc20e3285 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupMembersRequest.cpp @@ -0,0 +1,79 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws::Http; + +ListGroupMembersRequest::ListGroupMembersRequest() : + m_directoryIdHasBeenSet(false), + m_maxResults(0), + m_maxResultsHasBeenSet(false), + m_memberRealmHasBeenSet(false), + m_nextTokenHasBeenSet(false), + m_realmHasBeenSet(false), + m_sAMAccountNameHasBeenSet(false) +{ +} + +Aws::String ListGroupMembersRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_maxResultsHasBeenSet) + { + payload.WithInteger("MaxResults", m_maxResults); + + } + + if(m_memberRealmHasBeenSet) + { + payload.WithString("MemberRealm", m_memberRealm); + + } + + if(m_nextTokenHasBeenSet) + { + payload.WithString("NextToken", m_nextToken); + + } + + if(m_realmHasBeenSet) + { + payload.WithString("Realm", m_realm); + + } + + if(m_sAMAccountNameHasBeenSet) + { + payload.WithString("SAMAccountName", m_sAMAccountName); + + } + + return payload.View().WriteReadable(); +} + +void ListGroupMembersRequest::AddQueryStringParameters(URI& uri) const +{ + Aws::StringStream ss; + if(m_directoryIdHasBeenSet) + { + ss << m_directoryId; + uri.AddQueryStringParameter("DirectoryId", ss.str()); + ss.str(""); + } + +} + + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupMembersResult.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupMembersResult.cpp new file mode 100644 index 00000000000..ce4e9f73a4f --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupMembersResult.cpp @@ -0,0 +1,75 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +ListGroupMembersResult::ListGroupMembersResult() +{ +} + +ListGroupMembersResult::ListGroupMembersResult(const Aws::AmazonWebServiceResult& result) +{ + *this = result; +} + +ListGroupMembersResult& ListGroupMembersResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + JsonView jsonValue = result.GetPayload().View(); + if(jsonValue.ValueExists("DirectoryId")) + { + m_directoryId = jsonValue.GetString("DirectoryId"); + + } + + if(jsonValue.ValueExists("MemberRealm")) + { + m_memberRealm = jsonValue.GetString("MemberRealm"); + + } + + if(jsonValue.ValueExists("Members")) + { + Aws::Utils::Array membersJsonList = jsonValue.GetArray("Members"); + for(unsigned membersIndex = 0; membersIndex < membersJsonList.GetLength(); ++membersIndex) + { + m_members.push_back(membersJsonList[membersIndex].AsObject()); + } + } + + if(jsonValue.ValueExists("NextToken")) + { + m_nextToken = jsonValue.GetString("NextToken"); + + } + + if(jsonValue.ValueExists("Realm")) + { + m_realm = jsonValue.GetString("Realm"); + + } + + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupsForMemberRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupsForMemberRequest.cpp new file mode 100644 index 00000000000..c611f626985 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupsForMemberRequest.cpp @@ -0,0 +1,79 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws::Http; + +ListGroupsForMemberRequest::ListGroupsForMemberRequest() : + m_directoryIdHasBeenSet(false), + m_maxResults(0), + m_maxResultsHasBeenSet(false), + m_memberRealmHasBeenSet(false), + m_nextTokenHasBeenSet(false), + m_realmHasBeenSet(false), + m_sAMAccountNameHasBeenSet(false) +{ +} + +Aws::String ListGroupsForMemberRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_maxResultsHasBeenSet) + { + payload.WithInteger("MaxResults", m_maxResults); + + } + + if(m_memberRealmHasBeenSet) + { + payload.WithString("MemberRealm", m_memberRealm); + + } + + if(m_nextTokenHasBeenSet) + { + payload.WithString("NextToken", m_nextToken); + + } + + if(m_realmHasBeenSet) + { + payload.WithString("Realm", m_realm); + + } + + if(m_sAMAccountNameHasBeenSet) + { + payload.WithString("SAMAccountName", m_sAMAccountName); + + } + + return payload.View().WriteReadable(); +} + +void ListGroupsForMemberRequest::AddQueryStringParameters(URI& uri) const +{ + Aws::StringStream ss; + if(m_directoryIdHasBeenSet) + { + ss << m_directoryId; + uri.AddQueryStringParameter("DirectoryId", ss.str()); + ss.str(""); + } + +} + + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupsForMemberResult.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupsForMemberResult.cpp new file mode 100644 index 00000000000..acb828a8fdf --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupsForMemberResult.cpp @@ -0,0 +1,75 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +ListGroupsForMemberResult::ListGroupsForMemberResult() +{ +} + +ListGroupsForMemberResult::ListGroupsForMemberResult(const Aws::AmazonWebServiceResult& result) +{ + *this = result; +} + +ListGroupsForMemberResult& ListGroupsForMemberResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + JsonView jsonValue = result.GetPayload().View(); + if(jsonValue.ValueExists("DirectoryId")) + { + m_directoryId = jsonValue.GetString("DirectoryId"); + + } + + if(jsonValue.ValueExists("Groups")) + { + Aws::Utils::Array groupsJsonList = jsonValue.GetArray("Groups"); + for(unsigned groupsIndex = 0; groupsIndex < groupsJsonList.GetLength(); ++groupsIndex) + { + m_groups.push_back(groupsJsonList[groupsIndex].AsObject()); + } + } + + if(jsonValue.ValueExists("MemberRealm")) + { + m_memberRealm = jsonValue.GetString("MemberRealm"); + + } + + if(jsonValue.ValueExists("NextToken")) + { + m_nextToken = jsonValue.GetString("NextToken"); + + } + + if(jsonValue.ValueExists("Realm")) + { + m_realm = jsonValue.GetString("Realm"); + + } + + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupsRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupsRequest.cpp new file mode 100644 index 00000000000..0fa14a15da8 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupsRequest.cpp @@ -0,0 +1,65 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws::Http; + +ListGroupsRequest::ListGroupsRequest() : + m_directoryIdHasBeenSet(false), + m_maxResults(0), + m_maxResultsHasBeenSet(false), + m_nextTokenHasBeenSet(false), + m_realmHasBeenSet(false) +{ +} + +Aws::String ListGroupsRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_maxResultsHasBeenSet) + { + payload.WithInteger("MaxResults", m_maxResults); + + } + + if(m_nextTokenHasBeenSet) + { + payload.WithString("NextToken", m_nextToken); + + } + + if(m_realmHasBeenSet) + { + payload.WithString("Realm", m_realm); + + } + + return payload.View().WriteReadable(); +} + +void ListGroupsRequest::AddQueryStringParameters(URI& uri) const +{ + Aws::StringStream ss; + if(m_directoryIdHasBeenSet) + { + ss << m_directoryId; + uri.AddQueryStringParameter("DirectoryId", ss.str()); + ss.str(""); + } + +} + + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupsResult.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupsResult.cpp new file mode 100644 index 00000000000..befd8a09cf7 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListGroupsResult.cpp @@ -0,0 +1,69 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +ListGroupsResult::ListGroupsResult() +{ +} + +ListGroupsResult::ListGroupsResult(const Aws::AmazonWebServiceResult& result) +{ + *this = result; +} + +ListGroupsResult& ListGroupsResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + JsonView jsonValue = result.GetPayload().View(); + if(jsonValue.ValueExists("DirectoryId")) + { + m_directoryId = jsonValue.GetString("DirectoryId"); + + } + + if(jsonValue.ValueExists("Groups")) + { + Aws::Utils::Array groupsJsonList = jsonValue.GetArray("Groups"); + for(unsigned groupsIndex = 0; groupsIndex < groupsJsonList.GetLength(); ++groupsIndex) + { + m_groups.push_back(groupsJsonList[groupsIndex].AsObject()); + } + } + + if(jsonValue.ValueExists("NextToken")) + { + m_nextToken = jsonValue.GetString("NextToken"); + + } + + if(jsonValue.ValueExists("Realm")) + { + m_realm = jsonValue.GetString("Realm"); + + } + + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListUsersRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListUsersRequest.cpp new file mode 100644 index 00000000000..3d73690ddb4 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListUsersRequest.cpp @@ -0,0 +1,65 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws::Http; + +ListUsersRequest::ListUsersRequest() : + m_directoryIdHasBeenSet(false), + m_maxResults(0), + m_maxResultsHasBeenSet(false), + m_nextTokenHasBeenSet(false), + m_realmHasBeenSet(false) +{ +} + +Aws::String ListUsersRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_maxResultsHasBeenSet) + { + payload.WithInteger("MaxResults", m_maxResults); + + } + + if(m_nextTokenHasBeenSet) + { + payload.WithString("NextToken", m_nextToken); + + } + + if(m_realmHasBeenSet) + { + payload.WithString("Realm", m_realm); + + } + + return payload.View().WriteReadable(); +} + +void ListUsersRequest::AddQueryStringParameters(URI& uri) const +{ + Aws::StringStream ss; + if(m_directoryIdHasBeenSet) + { + ss << m_directoryId; + uri.AddQueryStringParameter("DirectoryId", ss.str()); + ss.str(""); + } + +} + + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListUsersResult.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListUsersResult.cpp new file mode 100644 index 00000000000..b0c6d36575d --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ListUsersResult.cpp @@ -0,0 +1,69 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +ListUsersResult::ListUsersResult() +{ +} + +ListUsersResult::ListUsersResult(const Aws::AmazonWebServiceResult& result) +{ + *this = result; +} + +ListUsersResult& ListUsersResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + JsonView jsonValue = result.GetPayload().View(); + if(jsonValue.ValueExists("DirectoryId")) + { + m_directoryId = jsonValue.GetString("DirectoryId"); + + } + + if(jsonValue.ValueExists("NextToken")) + { + m_nextToken = jsonValue.GetString("NextToken"); + + } + + if(jsonValue.ValueExists("Realm")) + { + m_realm = jsonValue.GetString("Realm"); + + } + + if(jsonValue.ValueExists("Users")) + { + Aws::Utils::Array usersJsonList = jsonValue.GetArray("Users"); + for(unsigned usersIndex = 0; usersIndex < usersJsonList.GetLength(); ++usersIndex) + { + m_users.push_back(usersJsonList[usersIndex].AsObject()); + } + } + + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/Member.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/Member.cpp new file mode 100644 index 00000000000..9775060a8e2 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/Member.cpp @@ -0,0 +1,87 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Model +{ + +Member::Member() : + m_memberType(MemberType::NOT_SET), + m_memberTypeHasBeenSet(false), + m_sAMAccountNameHasBeenSet(false), + m_sIDHasBeenSet(false) +{ +} + +Member::Member(JsonView jsonValue) + : Member() +{ + *this = jsonValue; +} + +Member& Member::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("MemberType")) + { + m_memberType = MemberTypeMapper::GetMemberTypeForName(jsonValue.GetString("MemberType")); + + m_memberTypeHasBeenSet = true; + } + + if(jsonValue.ValueExists("SAMAccountName")) + { + m_sAMAccountName = jsonValue.GetString("SAMAccountName"); + + m_sAMAccountNameHasBeenSet = true; + } + + if(jsonValue.ValueExists("SID")) + { + m_sID = jsonValue.GetString("SID"); + + m_sIDHasBeenSet = true; + } + + return *this; +} + +JsonValue Member::Jsonize() const +{ + JsonValue payload; + + if(m_memberTypeHasBeenSet) + { + payload.WithString("MemberType", MemberTypeMapper::GetNameForMemberType(m_memberType)); + } + + if(m_sAMAccountNameHasBeenSet) + { + payload.WithString("SAMAccountName", m_sAMAccountName); + + } + + if(m_sIDHasBeenSet) + { + payload.WithString("SID", m_sID); + + } + + return payload; +} + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/MemberType.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/MemberType.cpp new file mode 100644 index 00000000000..a1331206cce --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/MemberType.cpp @@ -0,0 +1,79 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +using namespace Aws::Utils; + + +namespace Aws +{ + namespace DirectoryServiceData + { + namespace Model + { + namespace MemberTypeMapper + { + + static const int USER_HASH = HashingUtils::HashString("USER"); + static const int GROUP_HASH = HashingUtils::HashString("GROUP"); + static const int COMPUTER_HASH = HashingUtils::HashString("COMPUTER"); + + + MemberType GetMemberTypeForName(const Aws::String& name) + { + int hashCode = HashingUtils::HashString(name.c_str()); + if (hashCode == USER_HASH) + { + return MemberType::USER; + } + else if (hashCode == GROUP_HASH) + { + return MemberType::GROUP; + } + else if (hashCode == COMPUTER_HASH) + { + return MemberType::COMPUTER; + } + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + overflowContainer->StoreOverflow(hashCode, name); + return static_cast(hashCode); + } + + return MemberType::NOT_SET; + } + + Aws::String GetNameForMemberType(MemberType enumValue) + { + switch(enumValue) + { + case MemberType::NOT_SET: + return {}; + case MemberType::USER: + return "USER"; + case MemberType::GROUP: + return "GROUP"; + case MemberType::COMPUTER: + return "COMPUTER"; + default: + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + return overflowContainer->RetrieveOverflow(static_cast(enumValue)); + } + + return {}; + } + } + + } // namespace MemberTypeMapper + } // namespace Model + } // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/RemoveGroupMemberRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/RemoveGroupMemberRequest.cpp new file mode 100644 index 00000000000..1b986bcea9b --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/RemoveGroupMemberRequest.cpp @@ -0,0 +1,72 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws::Http; + +RemoveGroupMemberRequest::RemoveGroupMemberRequest() : + m_clientToken(Aws::Utils::UUID::PseudoRandomUUID()), + m_clientTokenHasBeenSet(true), + m_directoryIdHasBeenSet(false), + m_groupNameHasBeenSet(false), + m_memberNameHasBeenSet(false), + m_memberRealmHasBeenSet(false) +{ +} + +Aws::String RemoveGroupMemberRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_clientTokenHasBeenSet) + { + payload.WithString("ClientToken", m_clientToken); + + } + + if(m_groupNameHasBeenSet) + { + payload.WithString("GroupName", m_groupName); + + } + + if(m_memberNameHasBeenSet) + { + payload.WithString("MemberName", m_memberName); + + } + + if(m_memberRealmHasBeenSet) + { + payload.WithString("MemberRealm", m_memberRealm); + + } + + return payload.View().WriteReadable(); +} + +void RemoveGroupMemberRequest::AddQueryStringParameters(URI& uri) const +{ + Aws::StringStream ss; + if(m_directoryIdHasBeenSet) + { + ss << m_directoryId; + uri.AddQueryStringParameter("DirectoryId", ss.str()); + ss.str(""); + } + +} + + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/RemoveGroupMemberResult.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/RemoveGroupMemberResult.cpp new file mode 100644 index 00000000000..91c43e15c41 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/RemoveGroupMemberResult.cpp @@ -0,0 +1,42 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +RemoveGroupMemberResult::RemoveGroupMemberResult() +{ +} + +RemoveGroupMemberResult::RemoveGroupMemberResult(const Aws::AmazonWebServiceResult& result) +{ + *this = result; +} + +RemoveGroupMemberResult& RemoveGroupMemberResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + AWS_UNREFERENCED_PARAM(result); + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/SearchGroupsRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/SearchGroupsRequest.cpp new file mode 100644 index 00000000000..99f26424493 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/SearchGroupsRequest.cpp @@ -0,0 +1,84 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws::Http; + +SearchGroupsRequest::SearchGroupsRequest() : + m_directoryIdHasBeenSet(false), + m_maxResults(0), + m_maxResultsHasBeenSet(false), + m_nextTokenHasBeenSet(false), + m_realmHasBeenSet(false), + m_searchAttributesHasBeenSet(false), + m_searchStringHasBeenSet(false) +{ +} + +Aws::String SearchGroupsRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_maxResultsHasBeenSet) + { + payload.WithInteger("MaxResults", m_maxResults); + + } + + if(m_nextTokenHasBeenSet) + { + payload.WithString("NextToken", m_nextToken); + + } + + if(m_realmHasBeenSet) + { + payload.WithString("Realm", m_realm); + + } + + if(m_searchAttributesHasBeenSet) + { + Aws::Utils::Array searchAttributesJsonList(m_searchAttributes.size()); + for(unsigned searchAttributesIndex = 0; searchAttributesIndex < searchAttributesJsonList.GetLength(); ++searchAttributesIndex) + { + searchAttributesJsonList[searchAttributesIndex].AsString(m_searchAttributes[searchAttributesIndex]); + } + payload.WithArray("SearchAttributes", std::move(searchAttributesJsonList)); + + } + + if(m_searchStringHasBeenSet) + { + payload.WithString("SearchString", m_searchString); + + } + + return payload.View().WriteReadable(); +} + +void SearchGroupsRequest::AddQueryStringParameters(URI& uri) const +{ + Aws::StringStream ss; + if(m_directoryIdHasBeenSet) + { + ss << m_directoryId; + uri.AddQueryStringParameter("DirectoryId", ss.str()); + ss.str(""); + } + +} + + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/SearchGroupsResult.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/SearchGroupsResult.cpp new file mode 100644 index 00000000000..957342e1f6f --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/SearchGroupsResult.cpp @@ -0,0 +1,69 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +SearchGroupsResult::SearchGroupsResult() +{ +} + +SearchGroupsResult::SearchGroupsResult(const Aws::AmazonWebServiceResult& result) +{ + *this = result; +} + +SearchGroupsResult& SearchGroupsResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + JsonView jsonValue = result.GetPayload().View(); + if(jsonValue.ValueExists("DirectoryId")) + { + m_directoryId = jsonValue.GetString("DirectoryId"); + + } + + if(jsonValue.ValueExists("Groups")) + { + Aws::Utils::Array groupsJsonList = jsonValue.GetArray("Groups"); + for(unsigned groupsIndex = 0; groupsIndex < groupsJsonList.GetLength(); ++groupsIndex) + { + m_groups.push_back(groupsJsonList[groupsIndex].AsObject()); + } + } + + if(jsonValue.ValueExists("NextToken")) + { + m_nextToken = jsonValue.GetString("NextToken"); + + } + + if(jsonValue.ValueExists("Realm")) + { + m_realm = jsonValue.GetString("Realm"); + + } + + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/SearchUsersRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/SearchUsersRequest.cpp new file mode 100644 index 00000000000..96a9dcc88f1 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/SearchUsersRequest.cpp @@ -0,0 +1,84 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws::Http; + +SearchUsersRequest::SearchUsersRequest() : + m_directoryIdHasBeenSet(false), + m_maxResults(0), + m_maxResultsHasBeenSet(false), + m_nextTokenHasBeenSet(false), + m_realmHasBeenSet(false), + m_searchAttributesHasBeenSet(false), + m_searchStringHasBeenSet(false) +{ +} + +Aws::String SearchUsersRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_maxResultsHasBeenSet) + { + payload.WithInteger("MaxResults", m_maxResults); + + } + + if(m_nextTokenHasBeenSet) + { + payload.WithString("NextToken", m_nextToken); + + } + + if(m_realmHasBeenSet) + { + payload.WithString("Realm", m_realm); + + } + + if(m_searchAttributesHasBeenSet) + { + Aws::Utils::Array searchAttributesJsonList(m_searchAttributes.size()); + for(unsigned searchAttributesIndex = 0; searchAttributesIndex < searchAttributesJsonList.GetLength(); ++searchAttributesIndex) + { + searchAttributesJsonList[searchAttributesIndex].AsString(m_searchAttributes[searchAttributesIndex]); + } + payload.WithArray("SearchAttributes", std::move(searchAttributesJsonList)); + + } + + if(m_searchStringHasBeenSet) + { + payload.WithString("SearchString", m_searchString); + + } + + return payload.View().WriteReadable(); +} + +void SearchUsersRequest::AddQueryStringParameters(URI& uri) const +{ + Aws::StringStream ss; + if(m_directoryIdHasBeenSet) + { + ss << m_directoryId; + uri.AddQueryStringParameter("DirectoryId", ss.str()); + ss.str(""); + } + +} + + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/SearchUsersResult.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/SearchUsersResult.cpp new file mode 100644 index 00000000000..f03bfcc2712 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/SearchUsersResult.cpp @@ -0,0 +1,69 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +SearchUsersResult::SearchUsersResult() +{ +} + +SearchUsersResult::SearchUsersResult(const Aws::AmazonWebServiceResult& result) +{ + *this = result; +} + +SearchUsersResult& SearchUsersResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + JsonView jsonValue = result.GetPayload().View(); + if(jsonValue.ValueExists("DirectoryId")) + { + m_directoryId = jsonValue.GetString("DirectoryId"); + + } + + if(jsonValue.ValueExists("NextToken")) + { + m_nextToken = jsonValue.GetString("NextToken"); + + } + + if(jsonValue.ValueExists("Realm")) + { + m_realm = jsonValue.GetString("Realm"); + + } + + if(jsonValue.ValueExists("Users")) + { + Aws::Utils::Array usersJsonList = jsonValue.GetArray("Users"); + for(unsigned usersIndex = 0; usersIndex < usersJsonList.GetLength(); ++usersIndex) + { + m_users.push_back(usersJsonList[usersIndex].AsObject()); + } + } + + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/ThrottlingException.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ThrottlingException.cpp new file mode 100644 index 00000000000..9ffd642116f --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ThrottlingException.cpp @@ -0,0 +1,62 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Model +{ + +ThrottlingException::ThrottlingException() : + m_messageHasBeenSet(false), + m_retryAfterSeconds(0), + m_retryAfterSecondsHasBeenSet(false) +{ +} + +ThrottlingException::ThrottlingException(JsonView jsonValue) + : ThrottlingException() +{ + *this = jsonValue; +} + +ThrottlingException& ThrottlingException::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("Message")) + { + m_message = jsonValue.GetString("Message"); + + m_messageHasBeenSet = true; + } + + return *this; +} + +JsonValue ThrottlingException::Jsonize() const +{ + JsonValue payload; + + if(m_messageHasBeenSet) + { + payload.WithString("Message", m_message); + + } + + return payload; +} + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateGroupRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateGroupRequest.cpp new file mode 100644 index 00000000000..872ae652d09 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateGroupRequest.cpp @@ -0,0 +1,91 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws::Http; + +UpdateGroupRequest::UpdateGroupRequest() : + m_clientToken(Aws::Utils::UUID::PseudoRandomUUID()), + m_clientTokenHasBeenSet(true), + m_directoryIdHasBeenSet(false), + m_groupScope(GroupScope::NOT_SET), + m_groupScopeHasBeenSet(false), + m_groupType(GroupType::NOT_SET), + m_groupTypeHasBeenSet(false), + m_otherAttributesHasBeenSet(false), + m_sAMAccountNameHasBeenSet(false), + m_updateType(UpdateType::NOT_SET), + m_updateTypeHasBeenSet(false) +{ +} + +Aws::String UpdateGroupRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_clientTokenHasBeenSet) + { + payload.WithString("ClientToken", m_clientToken); + + } + + if(m_groupScopeHasBeenSet) + { + payload.WithString("GroupScope", GroupScopeMapper::GetNameForGroupScope(m_groupScope)); + } + + if(m_groupTypeHasBeenSet) + { + payload.WithString("GroupType", GroupTypeMapper::GetNameForGroupType(m_groupType)); + } + + if(m_otherAttributesHasBeenSet) + { + JsonValue otherAttributesJsonMap; + for(auto& otherAttributesItem : m_otherAttributes) + { + otherAttributesJsonMap.WithObject(otherAttributesItem.first, otherAttributesItem.second.Jsonize()); + } + payload.WithObject("OtherAttributes", std::move(otherAttributesJsonMap)); + + } + + if(m_sAMAccountNameHasBeenSet) + { + payload.WithString("SAMAccountName", m_sAMAccountName); + + } + + if(m_updateTypeHasBeenSet) + { + payload.WithString("UpdateType", UpdateTypeMapper::GetNameForUpdateType(m_updateType)); + } + + return payload.View().WriteReadable(); +} + +void UpdateGroupRequest::AddQueryStringParameters(URI& uri) const +{ + Aws::StringStream ss; + if(m_directoryIdHasBeenSet) + { + ss << m_directoryId; + uri.AddQueryStringParameter("DirectoryId", ss.str()); + ss.str(""); + } + +} + + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateGroupResult.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateGroupResult.cpp new file mode 100644 index 00000000000..ae3a26a2721 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateGroupResult.cpp @@ -0,0 +1,42 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +UpdateGroupResult::UpdateGroupResult() +{ +} + +UpdateGroupResult::UpdateGroupResult(const Aws::AmazonWebServiceResult& result) +{ + *this = result; +} + +UpdateGroupResult& UpdateGroupResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + AWS_UNREFERENCED_PARAM(result); + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateType.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateType.cpp new file mode 100644 index 00000000000..e589826bf7b --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateType.cpp @@ -0,0 +1,79 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +using namespace Aws::Utils; + + +namespace Aws +{ + namespace DirectoryServiceData + { + namespace Model + { + namespace UpdateTypeMapper + { + + static const int ADD_HASH = HashingUtils::HashString("ADD"); + static const int REPLACE_HASH = HashingUtils::HashString("REPLACE"); + static const int REMOVE_HASH = HashingUtils::HashString("REMOVE"); + + + UpdateType GetUpdateTypeForName(const Aws::String& name) + { + int hashCode = HashingUtils::HashString(name.c_str()); + if (hashCode == ADD_HASH) + { + return UpdateType::ADD; + } + else if (hashCode == REPLACE_HASH) + { + return UpdateType::REPLACE; + } + else if (hashCode == REMOVE_HASH) + { + return UpdateType::REMOVE; + } + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + overflowContainer->StoreOverflow(hashCode, name); + return static_cast(hashCode); + } + + return UpdateType::NOT_SET; + } + + Aws::String GetNameForUpdateType(UpdateType enumValue) + { + switch(enumValue) + { + case UpdateType::NOT_SET: + return {}; + case UpdateType::ADD: + return "ADD"; + case UpdateType::REPLACE: + return "REPLACE"; + case UpdateType::REMOVE: + return "REMOVE"; + default: + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + return overflowContainer->RetrieveOverflow(static_cast(enumValue)); + } + + return {}; + } + } + + } // namespace UpdateTypeMapper + } // namespace Model + } // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateUserRequest.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateUserRequest.cpp new file mode 100644 index 00000000000..a7d92889be0 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateUserRequest.cpp @@ -0,0 +1,98 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws::Http; + +UpdateUserRequest::UpdateUserRequest() : + m_clientToken(Aws::Utils::UUID::PseudoRandomUUID()), + m_clientTokenHasBeenSet(true), + m_directoryIdHasBeenSet(false), + m_emailAddressHasBeenSet(false), + m_givenNameHasBeenSet(false), + m_otherAttributesHasBeenSet(false), + m_sAMAccountNameHasBeenSet(false), + m_surnameHasBeenSet(false), + m_updateType(UpdateType::NOT_SET), + m_updateTypeHasBeenSet(false) +{ +} + +Aws::String UpdateUserRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_clientTokenHasBeenSet) + { + payload.WithString("ClientToken", m_clientToken); + + } + + if(m_emailAddressHasBeenSet) + { + payload.WithString("EmailAddress", m_emailAddress); + + } + + if(m_givenNameHasBeenSet) + { + payload.WithString("GivenName", m_givenName); + + } + + if(m_otherAttributesHasBeenSet) + { + JsonValue otherAttributesJsonMap; + for(auto& otherAttributesItem : m_otherAttributes) + { + otherAttributesJsonMap.WithObject(otherAttributesItem.first, otherAttributesItem.second.Jsonize()); + } + payload.WithObject("OtherAttributes", std::move(otherAttributesJsonMap)); + + } + + if(m_sAMAccountNameHasBeenSet) + { + payload.WithString("SAMAccountName", m_sAMAccountName); + + } + + if(m_surnameHasBeenSet) + { + payload.WithString("Surname", m_surname); + + } + + if(m_updateTypeHasBeenSet) + { + payload.WithString("UpdateType", UpdateTypeMapper::GetNameForUpdateType(m_updateType)); + } + + return payload.View().WriteReadable(); +} + +void UpdateUserRequest::AddQueryStringParameters(URI& uri) const +{ + Aws::StringStream ss; + if(m_directoryIdHasBeenSet) + { + ss << m_directoryId; + uri.AddQueryStringParameter("DirectoryId", ss.str()); + ss.str(""); + } + +} + + + diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateUserResult.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateUserResult.cpp new file mode 100644 index 00000000000..781d224b4e8 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/UpdateUserResult.cpp @@ -0,0 +1,42 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryServiceData::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +UpdateUserResult::UpdateUserResult() +{ +} + +UpdateUserResult::UpdateUserResult(const Aws::AmazonWebServiceResult& result) +{ + *this = result; +} + +UpdateUserResult& UpdateUserResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + AWS_UNREFERENCED_PARAM(result); + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/User.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/User.cpp new file mode 100644 index 00000000000..a5c90950fa5 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/User.cpp @@ -0,0 +1,180 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Model +{ + +User::User() : + m_distinguishedNameHasBeenSet(false), + m_emailAddressHasBeenSet(false), + m_enabled(false), + m_enabledHasBeenSet(false), + m_givenNameHasBeenSet(false), + m_otherAttributesHasBeenSet(false), + m_sAMAccountNameHasBeenSet(false), + m_sIDHasBeenSet(false), + m_surnameHasBeenSet(false), + m_userPrincipalNameHasBeenSet(false) +{ +} + +User::User(JsonView jsonValue) + : User() +{ + *this = jsonValue; +} + +User& User::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("DistinguishedName")) + { + m_distinguishedName = jsonValue.GetString("DistinguishedName"); + + m_distinguishedNameHasBeenSet = true; + } + + if(jsonValue.ValueExists("EmailAddress")) + { + m_emailAddress = jsonValue.GetString("EmailAddress"); + + m_emailAddressHasBeenSet = true; + } + + if(jsonValue.ValueExists("Enabled")) + { + m_enabled = jsonValue.GetBool("Enabled"); + + m_enabledHasBeenSet = true; + } + + if(jsonValue.ValueExists("GivenName")) + { + m_givenName = jsonValue.GetString("GivenName"); + + m_givenNameHasBeenSet = true; + } + + if(jsonValue.ValueExists("OtherAttributes")) + { + Aws::Map otherAttributesJsonMap = jsonValue.GetObject("OtherAttributes").GetAllObjects(); + for(auto& otherAttributesItem : otherAttributesJsonMap) + { + m_otherAttributes[otherAttributesItem.first] = otherAttributesItem.second.AsObject(); + } + m_otherAttributesHasBeenSet = true; + } + + if(jsonValue.ValueExists("SAMAccountName")) + { + m_sAMAccountName = jsonValue.GetString("SAMAccountName"); + + m_sAMAccountNameHasBeenSet = true; + } + + if(jsonValue.ValueExists("SID")) + { + m_sID = jsonValue.GetString("SID"); + + m_sIDHasBeenSet = true; + } + + if(jsonValue.ValueExists("Surname")) + { + m_surname = jsonValue.GetString("Surname"); + + m_surnameHasBeenSet = true; + } + + if(jsonValue.ValueExists("UserPrincipalName")) + { + m_userPrincipalName = jsonValue.GetString("UserPrincipalName"); + + m_userPrincipalNameHasBeenSet = true; + } + + return *this; +} + +JsonValue User::Jsonize() const +{ + JsonValue payload; + + if(m_distinguishedNameHasBeenSet) + { + payload.WithString("DistinguishedName", m_distinguishedName); + + } + + if(m_emailAddressHasBeenSet) + { + payload.WithString("EmailAddress", m_emailAddress); + + } + + if(m_enabledHasBeenSet) + { + payload.WithBool("Enabled", m_enabled); + + } + + if(m_givenNameHasBeenSet) + { + payload.WithString("GivenName", m_givenName); + + } + + if(m_otherAttributesHasBeenSet) + { + JsonValue otherAttributesJsonMap; + for(auto& otherAttributesItem : m_otherAttributes) + { + otherAttributesJsonMap.WithObject(otherAttributesItem.first, otherAttributesItem.second.Jsonize()); + } + payload.WithObject("OtherAttributes", std::move(otherAttributesJsonMap)); + + } + + if(m_sAMAccountNameHasBeenSet) + { + payload.WithString("SAMAccountName", m_sAMAccountName); + + } + + if(m_sIDHasBeenSet) + { + payload.WithString("SID", m_sID); + + } + + if(m_surnameHasBeenSet) + { + payload.WithString("Surname", m_surname); + + } + + if(m_userPrincipalNameHasBeenSet) + { + payload.WithString("UserPrincipalName", m_userPrincipalName); + + } + + return payload; +} + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/UserSummary.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/UserSummary.cpp new file mode 100644 index 00000000000..9e0e4a04b45 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/UserSummary.cpp @@ -0,0 +1,116 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Model +{ + +UserSummary::UserSummary() : + m_enabled(false), + m_enabledHasBeenSet(false), + m_givenNameHasBeenSet(false), + m_sAMAccountNameHasBeenSet(false), + m_sIDHasBeenSet(false), + m_surnameHasBeenSet(false) +{ +} + +UserSummary::UserSummary(JsonView jsonValue) + : UserSummary() +{ + *this = jsonValue; +} + +UserSummary& UserSummary::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("Enabled")) + { + m_enabled = jsonValue.GetBool("Enabled"); + + m_enabledHasBeenSet = true; + } + + if(jsonValue.ValueExists("GivenName")) + { + m_givenName = jsonValue.GetString("GivenName"); + + m_givenNameHasBeenSet = true; + } + + if(jsonValue.ValueExists("SAMAccountName")) + { + m_sAMAccountName = jsonValue.GetString("SAMAccountName"); + + m_sAMAccountNameHasBeenSet = true; + } + + if(jsonValue.ValueExists("SID")) + { + m_sID = jsonValue.GetString("SID"); + + m_sIDHasBeenSet = true; + } + + if(jsonValue.ValueExists("Surname")) + { + m_surname = jsonValue.GetString("Surname"); + + m_surnameHasBeenSet = true; + } + + return *this; +} + +JsonValue UserSummary::Jsonize() const +{ + JsonValue payload; + + if(m_enabledHasBeenSet) + { + payload.WithBool("Enabled", m_enabled); + + } + + if(m_givenNameHasBeenSet) + { + payload.WithString("GivenName", m_givenName); + + } + + if(m_sAMAccountNameHasBeenSet) + { + payload.WithString("SAMAccountName", m_sAMAccountName); + + } + + if(m_sIDHasBeenSet) + { + payload.WithString("SID", m_sID); + + } + + if(m_surnameHasBeenSet) + { + payload.WithString("Surname", m_surname); + + } + + return payload; +} + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/ValidationException.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ValidationException.cpp new file mode 100644 index 00000000000..3e66486c7e9 --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ValidationException.cpp @@ -0,0 +1,73 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +namespace Aws +{ +namespace DirectoryServiceData +{ +namespace Model +{ + +ValidationException::ValidationException() : + m_messageHasBeenSet(false), + m_reason(ValidationExceptionReason::NOT_SET), + m_reasonHasBeenSet(false) +{ +} + +ValidationException::ValidationException(JsonView jsonValue) + : ValidationException() +{ + *this = jsonValue; +} + +ValidationException& ValidationException::operator =(JsonView jsonValue) +{ + if(jsonValue.ValueExists("Message")) + { + m_message = jsonValue.GetString("Message"); + + m_messageHasBeenSet = true; + } + + if(jsonValue.ValueExists("Reason")) + { + m_reason = ValidationExceptionReasonMapper::GetValidationExceptionReasonForName(jsonValue.GetString("Reason")); + + m_reasonHasBeenSet = true; + } + + return *this; +} + +JsonValue ValidationException::Jsonize() const +{ + JsonValue payload; + + if(m_messageHasBeenSet) + { + payload.WithString("Message", m_message); + + } + + if(m_reasonHasBeenSet) + { + payload.WithString("Reason", ValidationExceptionReasonMapper::GetNameForValidationExceptionReason(m_reason)); + } + + return payload; +} + +} // namespace Model +} // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-directory-service-data/source/model/ValidationExceptionReason.cpp b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ValidationExceptionReason.cpp new file mode 100644 index 00000000000..7efde6827ad --- /dev/null +++ b/generated/src/aws-cpp-sdk-directory-service-data/source/model/ValidationExceptionReason.cpp @@ -0,0 +1,163 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +using namespace Aws::Utils; + + +namespace Aws +{ + namespace DirectoryServiceData + { + namespace Model + { + namespace ValidationExceptionReasonMapper + { + + static const int INVALID_REALM_HASH = HashingUtils::HashString("INVALID_REALM"); + static const int INVALID_DIRECTORY_TYPE_HASH = HashingUtils::HashString("INVALID_DIRECTORY_TYPE"); + static const int INVALID_SECONDARY_REGION_HASH = HashingUtils::HashString("INVALID_SECONDARY_REGION"); + static const int INVALID_NEXT_TOKEN_HASH = HashingUtils::HashString("INVALID_NEXT_TOKEN"); + static const int INVALID_ATTRIBUTE_VALUE_HASH = HashingUtils::HashString("INVALID_ATTRIBUTE_VALUE"); + static const int INVALID_ATTRIBUTE_NAME_HASH = HashingUtils::HashString("INVALID_ATTRIBUTE_NAME"); + static const int INVALID_ATTRIBUTE_FOR_USER_HASH = HashingUtils::HashString("INVALID_ATTRIBUTE_FOR_USER"); + static const int INVALID_ATTRIBUTE_FOR_GROUP_HASH = HashingUtils::HashString("INVALID_ATTRIBUTE_FOR_GROUP"); + static const int INVALID_ATTRIBUTE_FOR_SEARCH_HASH = HashingUtils::HashString("INVALID_ATTRIBUTE_FOR_SEARCH"); + static const int INVALID_ATTRIBUTE_FOR_MODIFY_HASH = HashingUtils::HashString("INVALID_ATTRIBUTE_FOR_MODIFY"); + static const int DUPLICATE_ATTRIBUTE_HASH = HashingUtils::HashString("DUPLICATE_ATTRIBUTE"); + static const int MISSING_ATTRIBUTE_HASH = HashingUtils::HashString("MISSING_ATTRIBUTE"); + static const int ATTRIBUTE_EXISTS_HASH = HashingUtils::HashString("ATTRIBUTE_EXISTS"); + static const int LDAP_SIZE_LIMIT_EXCEEDED_HASH = HashingUtils::HashString("LDAP_SIZE_LIMIT_EXCEEDED"); + static const int LDAP_UNSUPPORTED_OPERATION_HASH = HashingUtils::HashString("LDAP_UNSUPPORTED_OPERATION"); + + + ValidationExceptionReason GetValidationExceptionReasonForName(const Aws::String& name) + { + int hashCode = HashingUtils::HashString(name.c_str()); + if (hashCode == INVALID_REALM_HASH) + { + return ValidationExceptionReason::INVALID_REALM; + } + else if (hashCode == INVALID_DIRECTORY_TYPE_HASH) + { + return ValidationExceptionReason::INVALID_DIRECTORY_TYPE; + } + else if (hashCode == INVALID_SECONDARY_REGION_HASH) + { + return ValidationExceptionReason::INVALID_SECONDARY_REGION; + } + else if (hashCode == INVALID_NEXT_TOKEN_HASH) + { + return ValidationExceptionReason::INVALID_NEXT_TOKEN; + } + else if (hashCode == INVALID_ATTRIBUTE_VALUE_HASH) + { + return ValidationExceptionReason::INVALID_ATTRIBUTE_VALUE; + } + else if (hashCode == INVALID_ATTRIBUTE_NAME_HASH) + { + return ValidationExceptionReason::INVALID_ATTRIBUTE_NAME; + } + else if (hashCode == INVALID_ATTRIBUTE_FOR_USER_HASH) + { + return ValidationExceptionReason::INVALID_ATTRIBUTE_FOR_USER; + } + else if (hashCode == INVALID_ATTRIBUTE_FOR_GROUP_HASH) + { + return ValidationExceptionReason::INVALID_ATTRIBUTE_FOR_GROUP; + } + else if (hashCode == INVALID_ATTRIBUTE_FOR_SEARCH_HASH) + { + return ValidationExceptionReason::INVALID_ATTRIBUTE_FOR_SEARCH; + } + else if (hashCode == INVALID_ATTRIBUTE_FOR_MODIFY_HASH) + { + return ValidationExceptionReason::INVALID_ATTRIBUTE_FOR_MODIFY; + } + else if (hashCode == DUPLICATE_ATTRIBUTE_HASH) + { + return ValidationExceptionReason::DUPLICATE_ATTRIBUTE; + } + else if (hashCode == MISSING_ATTRIBUTE_HASH) + { + return ValidationExceptionReason::MISSING_ATTRIBUTE; + } + else if (hashCode == ATTRIBUTE_EXISTS_HASH) + { + return ValidationExceptionReason::ATTRIBUTE_EXISTS; + } + else if (hashCode == LDAP_SIZE_LIMIT_EXCEEDED_HASH) + { + return ValidationExceptionReason::LDAP_SIZE_LIMIT_EXCEEDED; + } + else if (hashCode == LDAP_UNSUPPORTED_OPERATION_HASH) + { + return ValidationExceptionReason::LDAP_UNSUPPORTED_OPERATION; + } + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + overflowContainer->StoreOverflow(hashCode, name); + return static_cast(hashCode); + } + + return ValidationExceptionReason::NOT_SET; + } + + Aws::String GetNameForValidationExceptionReason(ValidationExceptionReason enumValue) + { + switch(enumValue) + { + case ValidationExceptionReason::NOT_SET: + return {}; + case ValidationExceptionReason::INVALID_REALM: + return "INVALID_REALM"; + case ValidationExceptionReason::INVALID_DIRECTORY_TYPE: + return "INVALID_DIRECTORY_TYPE"; + case ValidationExceptionReason::INVALID_SECONDARY_REGION: + return "INVALID_SECONDARY_REGION"; + case ValidationExceptionReason::INVALID_NEXT_TOKEN: + return "INVALID_NEXT_TOKEN"; + case ValidationExceptionReason::INVALID_ATTRIBUTE_VALUE: + return "INVALID_ATTRIBUTE_VALUE"; + case ValidationExceptionReason::INVALID_ATTRIBUTE_NAME: + return "INVALID_ATTRIBUTE_NAME"; + case ValidationExceptionReason::INVALID_ATTRIBUTE_FOR_USER: + return "INVALID_ATTRIBUTE_FOR_USER"; + case ValidationExceptionReason::INVALID_ATTRIBUTE_FOR_GROUP: + return "INVALID_ATTRIBUTE_FOR_GROUP"; + case ValidationExceptionReason::INVALID_ATTRIBUTE_FOR_SEARCH: + return "INVALID_ATTRIBUTE_FOR_SEARCH"; + case ValidationExceptionReason::INVALID_ATTRIBUTE_FOR_MODIFY: + return "INVALID_ATTRIBUTE_FOR_MODIFY"; + case ValidationExceptionReason::DUPLICATE_ATTRIBUTE: + return "DUPLICATE_ATTRIBUTE"; + case ValidationExceptionReason::MISSING_ATTRIBUTE: + return "MISSING_ATTRIBUTE"; + case ValidationExceptionReason::ATTRIBUTE_EXISTS: + return "ATTRIBUTE_EXISTS"; + case ValidationExceptionReason::LDAP_SIZE_LIMIT_EXCEEDED: + return "LDAP_SIZE_LIMIT_EXCEEDED"; + case ValidationExceptionReason::LDAP_UNSUPPORTED_OPERATION: + return "LDAP_UNSUPPORTED_OPERATION"; + default: + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + return overflowContainer->RetrieveOverflow(static_cast(enumValue)); + } + + return {}; + } + } + + } // namespace ValidationExceptionReasonMapper + } // namespace Model + } // namespace DirectoryServiceData +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-ds/include/aws/ds/DirectoryServiceClient.h b/generated/src/aws-cpp-sdk-ds/include/aws/ds/DirectoryServiceClient.h index 3ba70c40465..534901970ef 100644 --- a/generated/src/aws-cpp-sdk-ds/include/aws/ds/DirectoryServiceClient.h +++ b/generated/src/aws-cpp-sdk-ds/include/aws/ds/DirectoryServiceClient.h @@ -806,6 +806,32 @@ namespace DirectoryService return SubmitAsync(&DirectoryServiceClient::DescribeDirectories, request, handler, context); } + /** + *

    Obtains status of directory data access enablement through the Directory + * Service Data API for the specified directory.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::DescribeDirectoryDataAccessOutcome DescribeDirectoryDataAccess(const Model::DescribeDirectoryDataAccessRequest& request) const; + + /** + * A Callable wrapper for DescribeDirectoryDataAccess that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::DescribeDirectoryDataAccessOutcomeCallable DescribeDirectoryDataAccessCallable(const DescribeDirectoryDataAccessRequestT& request) const + { + return SubmitCallable(&DirectoryServiceClient::DescribeDirectoryDataAccess, request); + } + + /** + * An Async wrapper for DescribeDirectoryDataAccess that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void DescribeDirectoryDataAccessAsync(const DescribeDirectoryDataAccessRequestT& request, const DescribeDirectoryDataAccessResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceClient::DescribeDirectoryDataAccess, request, handler, context); + } + /** *

    Provides information about any domain controllers in your * directory.

    See Also:

    Deactivates access to directory data via the Directory Service Data API for + * the specified directory.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::DisableDirectoryDataAccessOutcome DisableDirectoryDataAccess(const Model::DisableDirectoryDataAccessRequest& request) const; + + /** + * A Callable wrapper for DisableDirectoryDataAccess that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::DisableDirectoryDataAccessOutcomeCallable DisableDirectoryDataAccessCallable(const DisableDirectoryDataAccessRequestT& request) const + { + return SubmitCallable(&DirectoryServiceClient::DisableDirectoryDataAccess, request); + } + + /** + * An Async wrapper for DisableDirectoryDataAccess that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void DisableDirectoryDataAccessAsync(const DisableDirectoryDataAccessRequestT& request, const DisableDirectoryDataAccessResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceClient::DisableDirectoryDataAccess, request, handler, context); + } + /** *

    Deactivates LDAP secure calls for the specified directory.

    See * Also:

    Enables access to directory data via the Directory Service Data API for the + * specified directory.

    See Also:

    AWS + * API Reference

    + */ + virtual Model::EnableDirectoryDataAccessOutcome EnableDirectoryDataAccess(const Model::EnableDirectoryDataAccessRequest& request) const; + + /** + * A Callable wrapper for EnableDirectoryDataAccess that returns a future to the operation so that it can be executed in parallel to other requests. + */ + template + Model::EnableDirectoryDataAccessOutcomeCallable EnableDirectoryDataAccessCallable(const EnableDirectoryDataAccessRequestT& request) const + { + return SubmitCallable(&DirectoryServiceClient::EnableDirectoryDataAccess, request); + } + + /** + * An Async wrapper for EnableDirectoryDataAccess that queues the request into a thread executor and triggers associated callback when operation has finished. + */ + template + void EnableDirectoryDataAccessAsync(const EnableDirectoryDataAccessRequestT& request, const EnableDirectoryDataAccessResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const + { + return SubmitAsync(&DirectoryServiceClient::EnableDirectoryDataAccess, request, handler, context); + } + /** *

    Activates the switch for the specific directory to always use LDAP secure * calls.

    See Also:

    Resets the password for any user in your Managed Microsoft AD or Simple AD - * directory.

    You can reset the password for any user in your directory with - * the following exceptions:

    • For Simple AD, you cannot reset the - * password for any user that is a member of either the Domain Admins or + * directory. Disabled users will become enabled and can be authenticated following + * the API call.

      You can reset the password for any user in your directory + * with the following exceptions:

      Outbound:

      • Type: All + * traffic, Protocol: All, Range: All, Destination: 0.0.0.0/0

      + *

      These security rules impact an internal network interface that is not exposed + * publicly.

      */ inline bool GetUpdateSecurityGroupForDirectoryControllers() const{ return m_updateSecurityGroupForDirectoryControllers; } inline bool UpdateSecurityGroupForDirectoryControllersHasBeenSet() const { return m_updateSecurityGroupForDirectoryControllersHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/CreateTrustRequest.h b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/CreateTrustRequest.h index 1fff5543eeb..fe413c115b6 100644 --- a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/CreateTrustRequest.h +++ b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/CreateTrustRequest.h @@ -80,8 +80,8 @@ namespace Model ///@{ /** - *

      The trust password. The must be the same password that was used when creating - * the trust relationship on the external domain.

      + *

      The trust password. The trust password must be the same password that was + * used when creating the trust relationship on the external domain.

      */ inline const Aws::String& GetTrustPassword() const{ return m_trustPassword; } inline bool TrustPasswordHasBeenSet() const { return m_trustPasswordHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DataAccessStatus.h b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DataAccessStatus.h new file mode 100644 index 00000000000..f445f3bcfee --- /dev/null +++ b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DataAccessStatus.h @@ -0,0 +1,34 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include + +namespace Aws +{ +namespace DirectoryService +{ +namespace Model +{ + enum class DataAccessStatus + { + NOT_SET, + Disabled, + Disabling, + Enabled, + Enabling, + Failed + }; + +namespace DataAccessStatusMapper +{ +AWS_DIRECTORYSERVICE_API DataAccessStatus GetDataAccessStatusForName(const Aws::String& name); + +AWS_DIRECTORYSERVICE_API Aws::String GetNameForDataAccessStatus(DataAccessStatus value); +} // namespace DataAccessStatusMapper +} // namespace Model +} // namespace DirectoryService +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DescribeDirectoryDataAccessRequest.h b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DescribeDirectoryDataAccessRequest.h new file mode 100644 index 00000000000..37790c774dd --- /dev/null +++ b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DescribeDirectoryDataAccessRequest.h @@ -0,0 +1,58 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include + +namespace Aws +{ +namespace DirectoryService +{ +namespace Model +{ + + /** + */ + class DescribeDirectoryDataAccessRequest : public DirectoryServiceRequest + { + public: + AWS_DIRECTORYSERVICE_API DescribeDirectoryDataAccessRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "DescribeDirectoryDataAccess"; } + + AWS_DIRECTORYSERVICE_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICE_API Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override; + + + ///@{ + /** + *

      The directory identifier.

      + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline DescribeDirectoryDataAccessRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline DescribeDirectoryDataAccessRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline DescribeDirectoryDataAccessRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryService +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DescribeDirectoryDataAccessResult.h b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DescribeDirectoryDataAccessResult.h new file mode 100644 index 00000000000..2d75147857d --- /dev/null +++ b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DescribeDirectoryDataAccessResult.h @@ -0,0 +1,66 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryService +{ +namespace Model +{ + class DescribeDirectoryDataAccessResult + { + public: + AWS_DIRECTORYSERVICE_API DescribeDirectoryDataAccessResult(); + AWS_DIRECTORYSERVICE_API DescribeDirectoryDataAccessResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICE_API DescribeDirectoryDataAccessResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + /** + *

      The current status of data access through the Directory Service Data API.

      + */ + inline const DataAccessStatus& GetDataAccessStatus() const{ return m_dataAccessStatus; } + inline void SetDataAccessStatus(const DataAccessStatus& value) { m_dataAccessStatus = value; } + inline void SetDataAccessStatus(DataAccessStatus&& value) { m_dataAccessStatus = std::move(value); } + inline DescribeDirectoryDataAccessResult& WithDataAccessStatus(const DataAccessStatus& value) { SetDataAccessStatus(value); return *this;} + inline DescribeDirectoryDataAccessResult& WithDataAccessStatus(DataAccessStatus&& value) { SetDataAccessStatus(std::move(value)); return *this;} + ///@} + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline DescribeDirectoryDataAccessResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline DescribeDirectoryDataAccessResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline DescribeDirectoryDataAccessResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + DataAccessStatus m_dataAccessStatus; + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryService +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DirectoryDescription.h b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DirectoryDescription.h index 953101d44d0..2c69481c055 100644 --- a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DirectoryDescription.h +++ b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DirectoryDescription.h @@ -266,7 +266,7 @@ namespace Model ///@{ /** - *

      The directory size.

      + *

      The directory type.

      */ inline const DirectoryType& GetType() const{ return m_type; } inline bool TypeHasBeenSet() const { return m_typeHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DirectoryStage.h b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DirectoryStage.h index 321d72a957e..bb98cffa4bf 100644 --- a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DirectoryStage.h +++ b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DirectoryStage.h @@ -26,7 +26,8 @@ namespace Model RestoreFailed, Deleting, Deleted, - Failed + Failed, + Updating }; namespace DirectoryStageMapper diff --git a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DirectoryUnavailableException.h b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DirectoryUnavailableException.h index 0bad2088c5e..8a68c990177 100644 --- a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DirectoryUnavailableException.h +++ b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DirectoryUnavailableException.h @@ -24,8 +24,7 @@ namespace Model { /** - *

      The specified directory is unavailable or could not be found.

      See - * Also:

      The specified directory is unavailable.

      See Also:

      AWS * API Reference

      */ diff --git a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DisableClientAuthenticationRequest.h b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DisableClientAuthenticationRequest.h index 074be2dcc7e..ae249de9b3c 100644 --- a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DisableClientAuthenticationRequest.h +++ b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DisableClientAuthenticationRequest.h @@ -51,8 +51,8 @@ namespace Model ///@{ /** - *

      The type of client authentication to disable. Currently, only the parameter, - * SmartCard is supported.

      + *

      The type of client authentication to disable. Currently the only parameter + * "SmartCard" is supported.

      */ inline const ClientAuthenticationType& GetType() const{ return m_type; } inline bool TypeHasBeenSet() const { return m_typeHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DisableDirectoryDataAccessRequest.h b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DisableDirectoryDataAccessRequest.h new file mode 100644 index 00000000000..f28edaf30d6 --- /dev/null +++ b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DisableDirectoryDataAccessRequest.h @@ -0,0 +1,58 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include + +namespace Aws +{ +namespace DirectoryService +{ +namespace Model +{ + + /** + */ + class DisableDirectoryDataAccessRequest : public DirectoryServiceRequest + { + public: + AWS_DIRECTORYSERVICE_API DisableDirectoryDataAccessRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "DisableDirectoryDataAccess"; } + + AWS_DIRECTORYSERVICE_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICE_API Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override; + + + ///@{ + /** + *

      The directory identifier.

      + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline DisableDirectoryDataAccessRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline DisableDirectoryDataAccessRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline DisableDirectoryDataAccessRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryService +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DisableDirectoryDataAccessResult.h b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DisableDirectoryDataAccessResult.h new file mode 100644 index 00000000000..85ceaff9b9f --- /dev/null +++ b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DisableDirectoryDataAccessResult.h @@ -0,0 +1,52 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryService +{ +namespace Model +{ + class DisableDirectoryDataAccessResult + { + public: + AWS_DIRECTORYSERVICE_API DisableDirectoryDataAccessResult(); + AWS_DIRECTORYSERVICE_API DisableDirectoryDataAccessResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICE_API DisableDirectoryDataAccessResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline DisableDirectoryDataAccessResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline DisableDirectoryDataAccessResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline DisableDirectoryDataAccessResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryService +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DomainControllerStatus.h b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DomainControllerStatus.h index f127cad1e6c..2f9fbe09012 100644 --- a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DomainControllerStatus.h +++ b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/DomainControllerStatus.h @@ -22,7 +22,8 @@ namespace Model Restoring, Deleting, Deleted, - Failed + Failed, + Updating }; namespace DomainControllerStatusMapper diff --git a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/EnableDirectoryDataAccessRequest.h b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/EnableDirectoryDataAccessRequest.h new file mode 100644 index 00000000000..f940a43ef83 --- /dev/null +++ b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/EnableDirectoryDataAccessRequest.h @@ -0,0 +1,58 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include +#include + +namespace Aws +{ +namespace DirectoryService +{ +namespace Model +{ + + /** + */ + class EnableDirectoryDataAccessRequest : public DirectoryServiceRequest + { + public: + AWS_DIRECTORYSERVICE_API EnableDirectoryDataAccessRequest(); + + // Service request name is the Operation name which will send this request out, + // each operation should has unique request name, so that we can get operation's name from this request. + // Note: this is not true for response, multiple operations may have the same response name, + // so we can not get operation's name from response. + inline virtual const char* GetServiceRequestName() const override { return "EnableDirectoryDataAccess"; } + + AWS_DIRECTORYSERVICE_API Aws::String SerializePayload() const override; + + AWS_DIRECTORYSERVICE_API Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override; + + + ///@{ + /** + *

      The directory identifier.

      + */ + inline const Aws::String& GetDirectoryId() const{ return m_directoryId; } + inline bool DirectoryIdHasBeenSet() const { return m_directoryIdHasBeenSet; } + inline void SetDirectoryId(const Aws::String& value) { m_directoryIdHasBeenSet = true; m_directoryId = value; } + inline void SetDirectoryId(Aws::String&& value) { m_directoryIdHasBeenSet = true; m_directoryId = std::move(value); } + inline void SetDirectoryId(const char* value) { m_directoryIdHasBeenSet = true; m_directoryId.assign(value); } + inline EnableDirectoryDataAccessRequest& WithDirectoryId(const Aws::String& value) { SetDirectoryId(value); return *this;} + inline EnableDirectoryDataAccessRequest& WithDirectoryId(Aws::String&& value) { SetDirectoryId(std::move(value)); return *this;} + inline EnableDirectoryDataAccessRequest& WithDirectoryId(const char* value) { SetDirectoryId(value); return *this;} + ///@} + private: + + Aws::String m_directoryId; + bool m_directoryIdHasBeenSet = false; + }; + +} // namespace Model +} // namespace DirectoryService +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/EnableDirectoryDataAccessResult.h b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/EnableDirectoryDataAccessResult.h new file mode 100644 index 00000000000..c942ce52201 --- /dev/null +++ b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/EnableDirectoryDataAccessResult.h @@ -0,0 +1,52 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#pragma once +#include +#include +#include + +namespace Aws +{ +template +class AmazonWebServiceResult; + +namespace Utils +{ +namespace Json +{ + class JsonValue; +} // namespace Json +} // namespace Utils +namespace DirectoryService +{ +namespace Model +{ + class EnableDirectoryDataAccessResult + { + public: + AWS_DIRECTORYSERVICE_API EnableDirectoryDataAccessResult(); + AWS_DIRECTORYSERVICE_API EnableDirectoryDataAccessResult(const Aws::AmazonWebServiceResult& result); + AWS_DIRECTORYSERVICE_API EnableDirectoryDataAccessResult& operator=(const Aws::AmazonWebServiceResult& result); + + + ///@{ + + inline const Aws::String& GetRequestId() const{ return m_requestId; } + inline void SetRequestId(const Aws::String& value) { m_requestId = value; } + inline void SetRequestId(Aws::String&& value) { m_requestId = std::move(value); } + inline void SetRequestId(const char* value) { m_requestId.assign(value); } + inline EnableDirectoryDataAccessResult& WithRequestId(const Aws::String& value) { SetRequestId(value); return *this;} + inline EnableDirectoryDataAccessResult& WithRequestId(Aws::String&& value) { SetRequestId(std::move(value)); return *this;} + inline EnableDirectoryDataAccessResult& WithRequestId(const char* value) { SetRequestId(value); return *this;} + ///@} + private: + + Aws::String m_requestId; + }; + +} // namespace Model +} // namespace DirectoryService +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/RadiusSettings.h b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/RadiusSettings.h index 957d0590ac5..31e0502f466 100644 --- a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/RadiusSettings.h +++ b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/RadiusSettings.h @@ -82,7 +82,7 @@ namespace Model ///@{ /** *

      The maximum number of times that communication with the RADIUS server is - * attempted.

      + * retried after the initial attempt.

      */ inline int GetRadiusRetries() const{ return m_radiusRetries; } inline bool RadiusRetriesHasBeenSet() const { return m_radiusRetriesHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/Tag.h b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/Tag.h index 9e414ea9234..26708906f06 100644 --- a/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/Tag.h +++ b/generated/src/aws-cpp-sdk-ds/include/aws/ds/model/Tag.h @@ -42,7 +42,7 @@ namespace Model /** *

      Required name of the tag. The string value can be Unicode characters and * cannot be prefixed with "aws:". The string can contain only the set of Unicode - * letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: + * letters, digits, white-space, '_', '.', '/', '=', '+', '-', ':', '@'(Java regex: * "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$").

      */ inline const Aws::String& GetKey() const{ return m_key; } @@ -59,7 +59,7 @@ namespace Model /** *

      The optional value of the tag. The string value can be Unicode characters. * The string can contain only the set of Unicode letters, digits, white-space, - * '_', '.', '/', '=', '+', '-' (Java regex: + * '_', '.', '/', '=', '+', '-', ':', '@' (Java regex: * "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-]*)$").

      */ inline const Aws::String& GetValue() const{ return m_value; } diff --git a/generated/src/aws-cpp-sdk-ds/source/DirectoryServiceClient.cpp b/generated/src/aws-cpp-sdk-ds/source/DirectoryServiceClient.cpp index 160737c1eff..0acd4548f26 100644 --- a/generated/src/aws-cpp-sdk-ds/source/DirectoryServiceClient.cpp +++ b/generated/src/aws-cpp-sdk-ds/source/DirectoryServiceClient.cpp @@ -46,6 +46,7 @@ #include #include #include +#include #include #include #include @@ -56,10 +57,12 @@ #include #include #include +#include #include #include #include #include +#include #include #include #include @@ -881,6 +884,32 @@ DescribeDirectoriesOutcome DirectoryServiceClient::DescribeDirectories(const Des {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); } +DescribeDirectoryDataAccessOutcome DirectoryServiceClient::DescribeDirectoryDataAccess(const DescribeDirectoryDataAccessRequest& request) const +{ + AWS_OPERATION_GUARD(DescribeDirectoryDataAccess); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, DescribeDirectoryDataAccess, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, DescribeDirectoryDataAccess, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, DescribeDirectoryDataAccess, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".DescribeDirectoryDataAccess", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> DescribeDirectoryDataAccessOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, DescribeDirectoryDataAccess, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + return DescribeDirectoryDataAccessOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + DescribeDomainControllersOutcome DirectoryServiceClient::DescribeDomainControllers(const DescribeDomainControllersRequest& request) const { AWS_OPERATION_GUARD(DescribeDomainControllers); @@ -1141,6 +1170,32 @@ DisableClientAuthenticationOutcome DirectoryServiceClient::DisableClientAuthenti {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); } +DisableDirectoryDataAccessOutcome DirectoryServiceClient::DisableDirectoryDataAccess(const DisableDirectoryDataAccessRequest& request) const +{ + AWS_OPERATION_GUARD(DisableDirectoryDataAccess); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, DisableDirectoryDataAccess, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, DisableDirectoryDataAccess, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, DisableDirectoryDataAccess, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".DisableDirectoryDataAccess", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> DisableDirectoryDataAccessOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, DisableDirectoryDataAccess, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + return DisableDirectoryDataAccessOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + DisableLDAPSOutcome DirectoryServiceClient::DisableLDAPS(const DisableLDAPSRequest& request) const { AWS_OPERATION_GUARD(DisableLDAPS); @@ -1245,6 +1300,32 @@ EnableClientAuthenticationOutcome DirectoryServiceClient::EnableClientAuthentica {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); } +EnableDirectoryDataAccessOutcome DirectoryServiceClient::EnableDirectoryDataAccess(const EnableDirectoryDataAccessRequest& request) const +{ + AWS_OPERATION_GUARD(EnableDirectoryDataAccess); + AWS_OPERATION_CHECK_PTR(m_endpointProvider, EnableDirectoryDataAccess, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE); + AWS_OPERATION_CHECK_PTR(m_telemetryProvider, EnableDirectoryDataAccess, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto tracer = m_telemetryProvider->getTracer(this->GetServiceClientName(), {}); + auto meter = m_telemetryProvider->getMeter(this->GetServiceClientName(), {}); + AWS_OPERATION_CHECK_PTR(meter, EnableDirectoryDataAccess, CoreErrors, CoreErrors::NOT_INITIALIZED); + auto span = tracer->CreateSpan(Aws::String(this->GetServiceClientName()) + ".EnableDirectoryDataAccess", + {{ TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName() }, { TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName() }, { TracingUtils::SMITHY_SYSTEM_DIMENSION, TracingUtils::SMITHY_METHOD_AWS_VALUE }}, + smithy::components::tracing::SpanKind::CLIENT); + return TracingUtils::MakeCallWithTiming( + [&]()-> EnableDirectoryDataAccessOutcome { + auto endpointResolutionOutcome = TracingUtils::MakeCallWithTiming( + [&]() -> ResolveEndpointOutcome { return m_endpointProvider->ResolveEndpoint(request.GetEndpointContextParams()); }, + TracingUtils::SMITHY_CLIENT_ENDPOINT_RESOLUTION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); + AWS_OPERATION_CHECK_SUCCESS(endpointResolutionOutcome, EnableDirectoryDataAccess, CoreErrors, CoreErrors::ENDPOINT_RESOLUTION_FAILURE, endpointResolutionOutcome.GetError().GetMessage()); + return EnableDirectoryDataAccessOutcome(MakeRequest(request, endpointResolutionOutcome.GetResult(), Aws::Http::HttpMethod::HTTP_POST, Aws::Auth::SIGV4_SIGNER)); + }, + TracingUtils::SMITHY_CLIENT_DURATION_METRIC, + *meter, + {{TracingUtils::SMITHY_METHOD_DIMENSION, request.GetServiceRequestName()}, {TracingUtils::SMITHY_SERVICE_DIMENSION, this->GetServiceClientName()}}); +} + EnableLDAPSOutcome DirectoryServiceClient::EnableLDAPS(const EnableLDAPSRequest& request) const { AWS_OPERATION_GUARD(EnableLDAPS); diff --git a/generated/src/aws-cpp-sdk-ds/source/model/DataAccessStatus.cpp b/generated/src/aws-cpp-sdk-ds/source/model/DataAccessStatus.cpp new file mode 100644 index 00000000000..361858ecbf2 --- /dev/null +++ b/generated/src/aws-cpp-sdk-ds/source/model/DataAccessStatus.cpp @@ -0,0 +1,93 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include + +using namespace Aws::Utils; + + +namespace Aws +{ + namespace DirectoryService + { + namespace Model + { + namespace DataAccessStatusMapper + { + + static const int Disabled_HASH = HashingUtils::HashString("Disabled"); + static const int Disabling_HASH = HashingUtils::HashString("Disabling"); + static const int Enabled_HASH = HashingUtils::HashString("Enabled"); + static const int Enabling_HASH = HashingUtils::HashString("Enabling"); + static const int Failed_HASH = HashingUtils::HashString("Failed"); + + + DataAccessStatus GetDataAccessStatusForName(const Aws::String& name) + { + int hashCode = HashingUtils::HashString(name.c_str()); + if (hashCode == Disabled_HASH) + { + return DataAccessStatus::Disabled; + } + else if (hashCode == Disabling_HASH) + { + return DataAccessStatus::Disabling; + } + else if (hashCode == Enabled_HASH) + { + return DataAccessStatus::Enabled; + } + else if (hashCode == Enabling_HASH) + { + return DataAccessStatus::Enabling; + } + else if (hashCode == Failed_HASH) + { + return DataAccessStatus::Failed; + } + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + overflowContainer->StoreOverflow(hashCode, name); + return static_cast(hashCode); + } + + return DataAccessStatus::NOT_SET; + } + + Aws::String GetNameForDataAccessStatus(DataAccessStatus enumValue) + { + switch(enumValue) + { + case DataAccessStatus::NOT_SET: + return {}; + case DataAccessStatus::Disabled: + return "Disabled"; + case DataAccessStatus::Disabling: + return "Disabling"; + case DataAccessStatus::Enabled: + return "Enabled"; + case DataAccessStatus::Enabling: + return "Enabling"; + case DataAccessStatus::Failed: + return "Failed"; + default: + EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); + if(overflowContainer) + { + return overflowContainer->RetrieveOverflow(static_cast(enumValue)); + } + + return {}; + } + } + + } // namespace DataAccessStatusMapper + } // namespace Model + } // namespace DirectoryService +} // namespace Aws diff --git a/generated/src/aws-cpp-sdk-ds/source/model/DescribeDirectoryDataAccessRequest.cpp b/generated/src/aws-cpp-sdk-ds/source/model/DescribeDirectoryDataAccessRequest.cpp new file mode 100644 index 00000000000..7dcf4ef7d0f --- /dev/null +++ b/generated/src/aws-cpp-sdk-ds/source/model/DescribeDirectoryDataAccessRequest.cpp @@ -0,0 +1,43 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::DirectoryService::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +DescribeDirectoryDataAccessRequest::DescribeDirectoryDataAccessRequest() : + m_directoryIdHasBeenSet(false) +{ +} + +Aws::String DescribeDirectoryDataAccessRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_directoryIdHasBeenSet) + { + payload.WithString("DirectoryId", m_directoryId); + + } + + return payload.View().WriteReadable(); +} + +Aws::Http::HeaderValueCollection DescribeDirectoryDataAccessRequest::GetRequestSpecificHeaders() const +{ + Aws::Http::HeaderValueCollection headers; + headers.insert(Aws::Http::HeaderValuePair("X-Amz-Target", "DirectoryService_20150416.DescribeDirectoryDataAccess")); + return headers; + +} + + + + diff --git a/generated/src/aws-cpp-sdk-ds/source/model/DescribeDirectoryDataAccessResult.cpp b/generated/src/aws-cpp-sdk-ds/source/model/DescribeDirectoryDataAccessResult.cpp new file mode 100644 index 00000000000..e0ea4cba267 --- /dev/null +++ b/generated/src/aws-cpp-sdk-ds/source/model/DescribeDirectoryDataAccessResult.cpp @@ -0,0 +1,50 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryService::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +DescribeDirectoryDataAccessResult::DescribeDirectoryDataAccessResult() : + m_dataAccessStatus(DataAccessStatus::NOT_SET) +{ +} + +DescribeDirectoryDataAccessResult::DescribeDirectoryDataAccessResult(const Aws::AmazonWebServiceResult& result) + : DescribeDirectoryDataAccessResult() +{ + *this = result; +} + +DescribeDirectoryDataAccessResult& DescribeDirectoryDataAccessResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + JsonView jsonValue = result.GetPayload().View(); + if(jsonValue.ValueExists("DataAccessStatus")) + { + m_dataAccessStatus = DataAccessStatusMapper::GetDataAccessStatusForName(jsonValue.GetString("DataAccessStatus")); + + } + + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-ds/source/model/DirectoryStage.cpp b/generated/src/aws-cpp-sdk-ds/source/model/DirectoryStage.cpp index c9342e85815..89cf475c90b 100644 --- a/generated/src/aws-cpp-sdk-ds/source/model/DirectoryStage.cpp +++ b/generated/src/aws-cpp-sdk-ds/source/model/DirectoryStage.cpp @@ -31,6 +31,7 @@ namespace Aws static const int Deleting_HASH = HashingUtils::HashString("Deleting"); static const int Deleted_HASH = HashingUtils::HashString("Deleted"); static const int Failed_HASH = HashingUtils::HashString("Failed"); + static const int Updating_HASH = HashingUtils::HashString("Updating"); DirectoryStage GetDirectoryStageForName(const Aws::String& name) @@ -80,6 +81,10 @@ namespace Aws { return DirectoryStage::Failed; } + else if (hashCode == Updating_HASH) + { + return DirectoryStage::Updating; + } EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); if(overflowContainer) { @@ -118,6 +123,8 @@ namespace Aws return "Deleted"; case DirectoryStage::Failed: return "Failed"; + case DirectoryStage::Updating: + return "Updating"; default: EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); if(overflowContainer) diff --git a/generated/src/aws-cpp-sdk-ds/source/model/DisableDirectoryDataAccessRequest.cpp b/generated/src/aws-cpp-sdk-ds/source/model/DisableDirectoryDataAccessRequest.cpp new file mode 100644 index 00000000000..ebf1f769725 --- /dev/null +++ b/generated/src/aws-cpp-sdk-ds/source/model/DisableDirectoryDataAccessRequest.cpp @@ -0,0 +1,43 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::DirectoryService::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +DisableDirectoryDataAccessRequest::DisableDirectoryDataAccessRequest() : + m_directoryIdHasBeenSet(false) +{ +} + +Aws::String DisableDirectoryDataAccessRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_directoryIdHasBeenSet) + { + payload.WithString("DirectoryId", m_directoryId); + + } + + return payload.View().WriteReadable(); +} + +Aws::Http::HeaderValueCollection DisableDirectoryDataAccessRequest::GetRequestSpecificHeaders() const +{ + Aws::Http::HeaderValueCollection headers; + headers.insert(Aws::Http::HeaderValuePair("X-Amz-Target", "DirectoryService_20150416.DisableDirectoryDataAccess")); + return headers; + +} + + + + diff --git a/generated/src/aws-cpp-sdk-ds/source/model/DisableDirectoryDataAccessResult.cpp b/generated/src/aws-cpp-sdk-ds/source/model/DisableDirectoryDataAccessResult.cpp new file mode 100644 index 00000000000..0896ccd03a1 --- /dev/null +++ b/generated/src/aws-cpp-sdk-ds/source/model/DisableDirectoryDataAccessResult.cpp @@ -0,0 +1,42 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryService::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +DisableDirectoryDataAccessResult::DisableDirectoryDataAccessResult() +{ +} + +DisableDirectoryDataAccessResult::DisableDirectoryDataAccessResult(const Aws::AmazonWebServiceResult& result) +{ + *this = result; +} + +DisableDirectoryDataAccessResult& DisableDirectoryDataAccessResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + AWS_UNREFERENCED_PARAM(result); + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-ds/source/model/DomainControllerStatus.cpp b/generated/src/aws-cpp-sdk-ds/source/model/DomainControllerStatus.cpp index b182544694a..e56c7d0abf3 100644 --- a/generated/src/aws-cpp-sdk-ds/source/model/DomainControllerStatus.cpp +++ b/generated/src/aws-cpp-sdk-ds/source/model/DomainControllerStatus.cpp @@ -27,6 +27,7 @@ namespace Aws static const int Deleting_HASH = HashingUtils::HashString("Deleting"); static const int Deleted_HASH = HashingUtils::HashString("Deleted"); static const int Failed_HASH = HashingUtils::HashString("Failed"); + static const int Updating_HASH = HashingUtils::HashString("Updating"); DomainControllerStatus GetDomainControllerStatusForName(const Aws::String& name) @@ -60,6 +61,10 @@ namespace Aws { return DomainControllerStatus::Failed; } + else if (hashCode == Updating_HASH) + { + return DomainControllerStatus::Updating; + } EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); if(overflowContainer) { @@ -90,6 +95,8 @@ namespace Aws return "Deleted"; case DomainControllerStatus::Failed: return "Failed"; + case DomainControllerStatus::Updating: + return "Updating"; default: EnumParseOverflowContainer* overflowContainer = Aws::GetEnumOverflowContainer(); if(overflowContainer) diff --git a/generated/src/aws-cpp-sdk-ds/source/model/EnableDirectoryDataAccessRequest.cpp b/generated/src/aws-cpp-sdk-ds/source/model/EnableDirectoryDataAccessRequest.cpp new file mode 100644 index 00000000000..ab47d7229e8 --- /dev/null +++ b/generated/src/aws-cpp-sdk-ds/source/model/EnableDirectoryDataAccessRequest.cpp @@ -0,0 +1,43 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + +using namespace Aws::DirectoryService::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; + +EnableDirectoryDataAccessRequest::EnableDirectoryDataAccessRequest() : + m_directoryIdHasBeenSet(false) +{ +} + +Aws::String EnableDirectoryDataAccessRequest::SerializePayload() const +{ + JsonValue payload; + + if(m_directoryIdHasBeenSet) + { + payload.WithString("DirectoryId", m_directoryId); + + } + + return payload.View().WriteReadable(); +} + +Aws::Http::HeaderValueCollection EnableDirectoryDataAccessRequest::GetRequestSpecificHeaders() const +{ + Aws::Http::HeaderValueCollection headers; + headers.insert(Aws::Http::HeaderValuePair("X-Amz-Target", "DirectoryService_20150416.EnableDirectoryDataAccess")); + return headers; + +} + + + + diff --git a/generated/src/aws-cpp-sdk-ds/source/model/EnableDirectoryDataAccessResult.cpp b/generated/src/aws-cpp-sdk-ds/source/model/EnableDirectoryDataAccessResult.cpp new file mode 100644 index 00000000000..6cffe9c60b8 --- /dev/null +++ b/generated/src/aws-cpp-sdk-ds/source/model/EnableDirectoryDataAccessResult.cpp @@ -0,0 +1,42 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include +#include + +#include + +using namespace Aws::DirectoryService::Model; +using namespace Aws::Utils::Json; +using namespace Aws::Utils; +using namespace Aws; + +EnableDirectoryDataAccessResult::EnableDirectoryDataAccessResult() +{ +} + +EnableDirectoryDataAccessResult::EnableDirectoryDataAccessResult(const Aws::AmazonWebServiceResult& result) +{ + *this = result; +} + +EnableDirectoryDataAccessResult& EnableDirectoryDataAccessResult::operator =(const Aws::AmazonWebServiceResult& result) +{ + AWS_UNREFERENCED_PARAM(result); + + const auto& headers = result.GetHeaderValueCollection(); + const auto& requestIdIter = headers.find("x-amzn-requestid"); + if(requestIdIter != headers.end()) + { + m_requestId = requestIdIter->second; + } + + + return *this; +} diff --git a/generated/src/aws-cpp-sdk-guardduty/include/aws/guardduty/model/EcsTaskDetails.h b/generated/src/aws-cpp-sdk-guardduty/include/aws/guardduty/model/EcsTaskDetails.h index 5a77c155b9a..229e8f792fb 100644 --- a/generated/src/aws-cpp-sdk-guardduty/include/aws/guardduty/model/EcsTaskDetails.h +++ b/generated/src/aws-cpp-sdk-guardduty/include/aws/guardduty/model/EcsTaskDetails.h @@ -178,6 +178,21 @@ namespace Model inline EcsTaskDetails& WithGroup(Aws::String&& value) { SetGroup(std::move(value)); return *this;} inline EcsTaskDetails& WithGroup(const char* value) { SetGroup(value); return *this;} ///@} + + ///@{ + /** + *

      A capacity on which the task is running. For example, Fargate + * and EC2.

      + */ + inline const Aws::String& GetLaunchType() const{ return m_launchType; } + inline bool LaunchTypeHasBeenSet() const { return m_launchTypeHasBeenSet; } + inline void SetLaunchType(const Aws::String& value) { m_launchTypeHasBeenSet = true; m_launchType = value; } + inline void SetLaunchType(Aws::String&& value) { m_launchTypeHasBeenSet = true; m_launchType = std::move(value); } + inline void SetLaunchType(const char* value) { m_launchTypeHasBeenSet = true; m_launchType.assign(value); } + inline EcsTaskDetails& WithLaunchType(const Aws::String& value) { SetLaunchType(value); return *this;} + inline EcsTaskDetails& WithLaunchType(Aws::String&& value) { SetLaunchType(std::move(value)); return *this;} + inline EcsTaskDetails& WithLaunchType(const char* value) { SetLaunchType(value); return *this;} + ///@} private: Aws::String m_arn; @@ -209,6 +224,9 @@ namespace Model Aws::String m_group; bool m_groupHasBeenSet = false; + + Aws::String m_launchType; + bool m_launchTypeHasBeenSet = false; }; } // namespace Model diff --git a/generated/src/aws-cpp-sdk-guardduty/source/model/EcsTaskDetails.cpp b/generated/src/aws-cpp-sdk-guardduty/source/model/EcsTaskDetails.cpp index 9a6d63b841e..60e299b8530 100644 --- a/generated/src/aws-cpp-sdk-guardduty/source/model/EcsTaskDetails.cpp +++ b/generated/src/aws-cpp-sdk-guardduty/source/model/EcsTaskDetails.cpp @@ -28,7 +28,8 @@ EcsTaskDetails::EcsTaskDetails() : m_tagsHasBeenSet(false), m_volumesHasBeenSet(false), m_containersHasBeenSet(false), - m_groupHasBeenSet(false) + m_groupHasBeenSet(false), + m_launchTypeHasBeenSet(false) { } @@ -119,6 +120,13 @@ EcsTaskDetails& EcsTaskDetails::operator =(JsonView jsonValue) m_groupHasBeenSet = true; } + if(jsonValue.ValueExists("launchType")) + { + m_launchType = jsonValue.GetString("launchType"); + + m_launchTypeHasBeenSet = true; + } + return *this; } @@ -199,6 +207,12 @@ JsonValue EcsTaskDetails::Jsonize() const } + if(m_launchTypeHasBeenSet) + { + payload.WithString("launchType", m_launchType); + + } + return payload; } diff --git a/generated/src/aws-cpp-sdk-guardduty/source/model/KubernetesApiCallAction.cpp b/generated/src/aws-cpp-sdk-guardduty/source/model/KubernetesApiCallAction.cpp index 985a53d6a09..fa62f50a42e 100644 --- a/generated/src/aws-cpp-sdk-guardduty/source/model/KubernetesApiCallAction.cpp +++ b/generated/src/aws-cpp-sdk-guardduty/source/model/KubernetesApiCallAction.cpp @@ -56,12 +56,12 @@ KubernetesApiCallAction& KubernetesApiCallAction::operator =(JsonView jsonValue) m_verbHasBeenSet = true; } - if(jsonValue.ValueExists("sourceIps")) + if(jsonValue.ValueExists("sourceIPs")) { - Aws::Utils::Array sourceIpsJsonList = jsonValue.GetArray("sourceIps"); - for(unsigned sourceIpsIndex = 0; sourceIpsIndex < sourceIpsJsonList.GetLength(); ++sourceIpsIndex) + Aws::Utils::Array sourceIPsJsonList = jsonValue.GetArray("sourceIPs"); + for(unsigned sourceIPsIndex = 0; sourceIPsIndex < sourceIPsJsonList.GetLength(); ++sourceIPsIndex) { - m_sourceIps.push_back(sourceIpsJsonList[sourceIpsIndex].AsString()); + m_sourceIps.push_back(sourceIPsJsonList[sourceIPsIndex].AsString()); } m_sourceIpsHasBeenSet = true; } @@ -143,12 +143,12 @@ JsonValue KubernetesApiCallAction::Jsonize() const if(m_sourceIpsHasBeenSet) { - Aws::Utils::Array sourceIpsJsonList(m_sourceIps.size()); - for(unsigned sourceIpsIndex = 0; sourceIpsIndex < sourceIpsJsonList.GetLength(); ++sourceIpsIndex) + Aws::Utils::Array sourceIPsJsonList(m_sourceIps.size()); + for(unsigned sourceIPsIndex = 0; sourceIPsIndex < sourceIPsJsonList.GetLength(); ++sourceIPsIndex) { - sourceIpsJsonList[sourceIpsIndex].AsString(m_sourceIps[sourceIpsIndex]); + sourceIPsJsonList[sourceIPsIndex].AsString(m_sourceIps[sourceIPsIndex]); } - payload.WithArray("sourceIps", std::move(sourceIpsJsonList)); + payload.WithArray("sourceIPs", std::move(sourceIPsJsonList)); } diff --git a/generated/src/aws-cpp-sdk-mailmanager/include/aws/mailmanager/MailManagerClient.h b/generated/src/aws-cpp-sdk-mailmanager/include/aws/mailmanager/MailManagerClient.h index 9b0d83774ef..a249486cac9 100644 --- a/generated/src/aws-cpp-sdk-mailmanager/include/aws/mailmanager/MailManagerClient.h +++ b/generated/src/aws-cpp-sdk-mailmanager/include/aws/mailmanager/MailManagerClient.h @@ -16,15 +16,15 @@ namespace Aws namespace MailManager { /** - *

      AWS SES Mail Manager API

      AWS SES Mail Manager API contains - * operations and data types that comprise the Mail Manager feature of Amazon - * Simple Email Service.

      Mail Manager is a set of Amazon SES email gateway - * features designed to help you strengthen your organization's email - * infrastructure, simplify email workflow management, and streamline email - * compliance control. To learn more, see the Amazon SES Mail Manager API

      The Amazon SES Mail + * Manager API contains operations and data types that comprise the Mail Manager + * feature of Amazon Simple Email Service + * (SES).

      Mail Manager is a set of Amazon SES email gateway features + * designed to help you strengthen your organization's email infrastructure, + * simplify email workflow management, and streamline email compliance control. To + * learn more, see the Mail Manager - * chapter in the Amazon SES Developer Guide.

      + * chapter in the Amazon SES Developer Guide.

      */ class AWS_MAILMANAGER_API MailManagerClient : public Aws::Client::AWSJsonClient, public Aws::Client::ClientWithAsyncTemplateMethods { @@ -1239,7 +1239,7 @@ namespace MailManager } /** - *

      >Update attributes of an already provisioned rule set.

      See + *

      Update attributes of an already provisioned rule set.

      See * Also:

      AWS * API Reference

      diff --git a/generated/src/aws-cpp-sdk-mailmanager/include/aws/mailmanager/model/RuleStringToEvaluate.h b/generated/src/aws-cpp-sdk-mailmanager/include/aws/mailmanager/model/RuleStringToEvaluate.h index 856b3a8b633..4fc72a193e1 100644 --- a/generated/src/aws-cpp-sdk-mailmanager/include/aws/mailmanager/model/RuleStringToEvaluate.h +++ b/generated/src/aws-cpp-sdk-mailmanager/include/aws/mailmanager/model/RuleStringToEvaluate.h @@ -6,6 +6,7 @@ #pragma once #include #include +#include #include namespace Aws @@ -49,10 +50,28 @@ namespace Model inline RuleStringToEvaluate& WithAttribute(const RuleStringEmailAttribute& value) { SetAttribute(value); return *this;} inline RuleStringToEvaluate& WithAttribute(RuleStringEmailAttribute&& value) { SetAttribute(std::move(value)); return *this;} ///@} + + ///@{ + /** + *

      The email MIME X-Header attribute to evaluate in a string condition + * expression.

      + */ + inline const Aws::String& GetMimeHeaderAttribute() const{ return m_mimeHeaderAttribute; } + inline bool MimeHeaderAttributeHasBeenSet() const { return m_mimeHeaderAttributeHasBeenSet; } + inline void SetMimeHeaderAttribute(const Aws::String& value) { m_mimeHeaderAttributeHasBeenSet = true; m_mimeHeaderAttribute = value; } + inline void SetMimeHeaderAttribute(Aws::String&& value) { m_mimeHeaderAttributeHasBeenSet = true; m_mimeHeaderAttribute = std::move(value); } + inline void SetMimeHeaderAttribute(const char* value) { m_mimeHeaderAttributeHasBeenSet = true; m_mimeHeaderAttribute.assign(value); } + inline RuleStringToEvaluate& WithMimeHeaderAttribute(const Aws::String& value) { SetMimeHeaderAttribute(value); return *this;} + inline RuleStringToEvaluate& WithMimeHeaderAttribute(Aws::String&& value) { SetMimeHeaderAttribute(std::move(value)); return *this;} + inline RuleStringToEvaluate& WithMimeHeaderAttribute(const char* value) { SetMimeHeaderAttribute(value); return *this;} + ///@} private: RuleStringEmailAttribute m_attribute; bool m_attributeHasBeenSet = false; + + Aws::String m_mimeHeaderAttribute; + bool m_mimeHeaderAttributeHasBeenSet = false; }; } // namespace Model diff --git a/generated/src/aws-cpp-sdk-mailmanager/source/model/RuleStringToEvaluate.cpp b/generated/src/aws-cpp-sdk-mailmanager/source/model/RuleStringToEvaluate.cpp index c24b4d3b668..5a1850dfa24 100644 --- a/generated/src/aws-cpp-sdk-mailmanager/source/model/RuleStringToEvaluate.cpp +++ b/generated/src/aws-cpp-sdk-mailmanager/source/model/RuleStringToEvaluate.cpp @@ -20,7 +20,8 @@ namespace Model RuleStringToEvaluate::RuleStringToEvaluate() : m_attribute(RuleStringEmailAttribute::NOT_SET), - m_attributeHasBeenSet(false) + m_attributeHasBeenSet(false), + m_mimeHeaderAttributeHasBeenSet(false) { } @@ -39,6 +40,13 @@ RuleStringToEvaluate& RuleStringToEvaluate::operator =(JsonView jsonValue) m_attributeHasBeenSet = true; } + if(jsonValue.ValueExists("MimeHeaderAttribute")) + { + m_mimeHeaderAttribute = jsonValue.GetString("MimeHeaderAttribute"); + + m_mimeHeaderAttributeHasBeenSet = true; + } + return *this; } @@ -51,6 +59,12 @@ JsonValue RuleStringToEvaluate::Jsonize() const payload.WithString("Attribute", RuleStringEmailAttributeMapper::GetNameForRuleStringEmailAttribute(m_attribute)); } + if(m_mimeHeaderAttributeHasBeenSet) + { + payload.WithString("MimeHeaderAttribute", m_mimeHeaderAttribute); + + } + return payload; } diff --git a/generated/src/aws-cpp-sdk-rds/include/aws/rds/RDSClient.h b/generated/src/aws-cpp-sdk-rds/include/aws/rds/RDSClient.h index 013f92bb9e7..ef1c9d53e77 100644 --- a/generated/src/aws-cpp-sdk-rds/include/aws/rds/RDSClient.h +++ b/generated/src/aws-cpp-sdk-rds/include/aws/rds/RDSClient.h @@ -4725,9 +4725,16 @@ namespace Aws * replace the original DB instance with the DB instance created from the * snapshot.

      If you are restoring from a shared manual DB snapshot, the * DBSnapshotIdentifier must be the ARN of the shared DB snapshot.

      - *

      This command doesn't apply to Aurora MySQL and Aurora PostgreSQL. For - * Aurora, use RestoreDBClusterFromSnapshot.

      See - * Also:

      To restore from a DB snapshot with an unsupported engine version, you must + * first upgrade the engine version of the snapshot. For more information about + * upgrading a RDS for MySQL DB snapshot engine version, see Upgrading + * a MySQL DB snapshot engine version. For more information about upgrading a + * RDS for PostgreSQL DB snapshot engine version, Upgrading + * a PostgreSQL DB snapshot engine version.

      This command doesn't + * apply to Aurora MySQL and Aurora PostgreSQL. For Aurora, use + * RestoreDBClusterFromSnapshot.

      See Also:

      AWS * API Reference

      */ diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/S3CrtClient.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/S3CrtClient.h index dc637eb1eca..c804b5e05c0 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/S3CrtClient.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/S3CrtClient.h @@ -260,9 +260,15 @@ namespace Aws * permissions - For information about permissions required to use the * multipart upload API, see Multipart - * Upload and Permissions in the Amazon S3 User Guide.

    • - *

      Directory bucket permissions - To grant access to this API operation - * on a directory bucket, we recommend that you use the in the Amazon S3 User Guide.

      If you + * provide an additional + * checksum value in your MultipartUpload requests and the object + * is encrypted with Key Management Service, you must have permission to use the + * kms:Decrypt action for the CompleteMultipartUpload + * request to succeed.

    • Directory bucket permissions - To + * grant access to this API operation on a directory bucket, we recommend that you + * use the * CreateSession API operation for session-based authorization. * Specifically, you grant the s3express:CreateSession permission to @@ -275,17 +281,15 @@ namespace Aws * automatically to avoid service interruptions when a session expires. For more * information about authorization, see - * CreateSession .

    • If you provide an additional - * checksum value in your MultipartUpload requests and the object - * is encrypted with Key Management Service, you must have permission to use the - * kms:Decrypt action for the CompleteMultipartUpload - * request to succeed.

    Special errors
    • - *

      Error Code: EntityTooSmall

      • Description: Your - * proposed upload is smaller than the minimum allowed object size. Each part must - * be at least 5 MB in size, except the last part.

      • HTTP Status - * Code: 400 Bad Request

    • Error Code: - * InvalidPart

      • Description: One or more of the + * CreateSession .

        If the object is encrypted with SSE-KMS, + * you must also have the kms:GenerateDataKey and + * kms:Decrypt permissions in IAM identity-based policies and KMS key + * policies for the KMS key.

    Special errors
    + *
    • Error Code: EntityTooSmall

      • + *

        Description: Your proposed upload is smaller than the minimum allowed object + * size. Each part must be at least 5 MB in size, except the last part.

      • + *
      • HTTP Status Code: 400 Bad Request

    • Error + * Code: InvalidPart

      • Description: One or more of the * specified parts could not be found. The part might not have been uploaded, or * the specified ETag might not have matched the uploaded part's ETag.

      • *
      • HTTP Status Code: 400 Bad Request

    • Error @@ -401,8 +405,11 @@ namespace Aws * s3express:CreateSession permission in the Action * element of a policy to write the object to the destination. The * s3express:SessionMode condition key can't be set to - * ReadOnly on the copy destination bucket.

    For - * example policies, see ReadOnly on the copy destination bucket.

  • If the + * object is encrypted with SSE-KMS, you must also have the + * kms:GenerateDataKey and kms:Decrypt permissions in IAM + * identity-based policies and KMS key policies for the KMS key.

    For example + * policies, see Example * bucket policies for S3 Express One Zone and Amazon @@ -728,10 +735,54 @@ namespace Aws * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html"> * Protecting data using server-side encryption with customer-provided encryption * keys (SSE-C) in the Amazon S3 User Guide.

  • - *

    Directory buckets -For directory buckets, only server-side encryption - * with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

    - *
  • HTTP Host header syntax

    Directory buckets - * - The HTTP Host header syntax is + *

    Directory buckets - For directory buckets, there are only two + * supported options for server-side encryption: server-side encryption with Amazon + * S3 managed keys (SSE-S3) (AES256) and server-side encryption with + * KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's + * default encryption uses the desired encryption configuration and you don't + * override the bucket default encryption in your CreateSession + * requests or PUT object requests. Then, new objects are + * automatically encrypted with the desired encryption settings. For more + * information, see Protecting + * data with server-side encryption in the Amazon S3 User Guide. For + * more information about the encryption overriding behaviors in directory buckets, + * see Specifying + * server-side encryption with KMS for new object uploads.

    In the Zonal + * endpoint API calls (except CopyObject + * and UploadPartCopy) + * using the REST API, the encryption request headers must match the encryption + * settings that are specified in the CreateSession request. You can't + * override the values of the encryption settings + * (x-amz-server-side-encryption, + * x-amz-server-side-encryption-aws-kms-key-id, + * x-amz-server-side-encryption-context, and + * x-amz-server-side-encryption-bucket-key-enabled) that are specified + * in the CreateSession request. You don't need to explicitly specify + * these encryption settings values in Zonal endpoint API calls, and Amazon S3 will + * use the encryption settings values from the CreateSession request + * to protect new objects in the directory bucket.

    When you use the + * CLI or the Amazon Web Services SDKs, for CreateSession, the session + * token refreshes automatically to avoid service interruptions when a session + * expires. The CLI or the Amazon Web Services SDKs use the bucket's default + * encryption configuration for the CreateSession request. It's not + * supported to override the encryption settings values in the + * CreateSession request. So in the Zonal endpoint API calls (except + * CopyObject + * and UploadPartCopy), + * the encryption request headers must match the default encryption configuration + * of the directory bucket.

    For directory buckets, when you + * perform a CreateMultipartUpload operation and an + * UploadPartCopy operation, the request headers you provide in the + * CreateMultipartUpload request must match the default encryption + * configuration of the destination bucket.

    HTTP + * Host header syntax

    Directory buckets - The HTTP Host + * header syntax is * Bucket_name.s3express-az_id.region.amazonaws.com.

    *

    The following operations are related to * CreateMultipartUpload:

    • Creates a session that establishes temporary security credentials to support - * fast authentication and authorization for the Zonal endpoint APIs on directory - * buckets. For more information about Zonal endpoint APIs that include the - * Availability Zone in the request endpoint, see S3 * Express One Zone APIs in the Amazon S3 User Guide.

      To make * Zonal endpoint API requests on a directory bucket, use the @@ -782,13 +833,13 @@ namespace Aws * CreateSession API request on the bucket, which returns temporary * security credentials that include the access key ID, secret access key, session * token, and expiration. These credentials have associated permissions to access - * the Zonal endpoint APIs. After the session is created, you don’t need to use - * other policies to grant permissions to each Zonal endpoint API individually. - * Instead, in your Zonal endpoint API requests, you sign your requests by applying - * the temporary security credentials of the session to the request headers and - * following the SigV4 protocol for authentication. You also apply the session - * token to the x-amz-s3session-token request header for - * authorization. Temporary security credentials are scoped to the bucket and + * the Zonal endpoint API operations. After the session is created, you don’t need + * to use other policies to grant permissions to each Zonal endpoint API + * individually. Instead, in your Zonal endpoint API requests, you sign your + * requests by applying the temporary security credentials of the session to the + * request headers and following the SigV4 protocol for authentication. You also + * apply the session token to the x-amz-s3session-token request header + * for authorization. Temporary security credentials are scoped to the bucket and * expire after 5 minutes. After the expiration time, any calls that you make with * those credentials will fail. You must use IAM credentials again to make a * CreateSession API request that generates a new set of temporary @@ -806,19 +857,19 @@ namespace Aws * Path-style requests are not supported. For more information, see Regional * and Zonal endpoints in the Amazon S3 User Guide.

    • - * CopyObject API operation - Unlike other Zonal endpoint - * APIs, the CopyObject API operation doesn't use the temporary + * CopyObject API operation - Unlike other Zonal endpoint API + * operations, the CopyObject API operation doesn't use the temporary * security credentials returned from the CreateSession API operation * for authentication and authorization. For information about authentication and * authorization of the CopyObject API operation on directory buckets, * see CopyObject.

      *
    • HeadBucket API operation - Unlike other - * Zonal endpoint APIs, the HeadBucket API operation doesn't use the - * temporary security credentials returned from the CreateSession API - * operation for authentication and authorization. For information about - * authentication and authorization of the HeadBucket API operation on - * directory buckets, see HeadBucket API operation doesn't + * use the temporary security credentials returned from the + * CreateSession API operation for authentication and authorization. + * For information about authentication and authorization of the + * HeadBucket API operation on directory buckets, see HeadBucket.

      *
    Permissions

    To obtain temporary * security credentials, you must create a bucket policy or an IAM identity-based @@ -834,10 +885,75 @@ namespace Aws * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-identity-policies.html">Amazon * Web Services Identity and Access Management (IAM) identity-based policies for S3 * Express One Zone in the Amazon S3 User Guide.

    To grant - * cross-account access to Zonal endpoint APIs, the bucket policy should also grant - * both accounts the s3express:CreateSession permission.

    - *
    HTTP Host header syntax

    Directory buckets - The HTTP - * Host header syntax is + * cross-account access to Zonal endpoint API operations, the bucket policy should + * also grant both accounts the s3express:CreateSession + * permission.

    If you want to encrypt objects with SSE-KMS, you must also + * have the kms:GenerateDataKey and the kms:Decrypt + * permissions in IAM identity-based policies and KMS key policies for the target + * KMS key.

    Encryption

    For directory buckets, there are + * only two supported options for server-side encryption: server-side encryption + * with Amazon S3 managed keys (SSE-S3) (AES256) and server-side + * encryption with KMS keys (SSE-KMS) (aws:kms). We recommend that the + * bucket's default encryption uses the desired encryption configuration and you + * don't override the bucket default encryption in your CreateSession + * requests or PUT object requests. Then, new objects are + * automatically encrypted with the desired encryption settings. For more + * information, see Protecting + * data with server-side encryption in the Amazon S3 User Guide. For + * more information about the encryption overriding behaviors in directory buckets, + * see Specifying + * server-side encryption with KMS for new object uploads.

    For Zonal + * endpoint (object-level) API operations except CopyObject + * and UploadPartCopy, + * you authenticate and authorize requests through CreateSession + * for low latency. To encrypt new objects in a directory bucket with SSE-KMS, you + * must specify SSE-KMS as the directory bucket's default encryption configuration + * with a KMS key (specifically, a customer + * managed key). Then, when a session is created for Zonal endpoint API + * operations, new objects are automatically encrypted and decrypted with SSE-KMS + * and S3 Bucket Keys during the session.

    Only 1 customer + * managed key is supported per directory bucket for the lifetime of the + * bucket. Amazon + * Web Services managed key (aws/s3) isn't supported. After you + * specify SSE-KMS as your bucket's default encryption configuration with a + * customer managed key, you can't change the customer managed key for the bucket's + * SSE-KMS configuration.

    In the Zonal endpoint API calls (except + * CopyObject + * and UploadPartCopy) + * using the REST API, you can't override the values of the encryption settings + * (x-amz-server-side-encryption, + * x-amz-server-side-encryption-aws-kms-key-id, + * x-amz-server-side-encryption-context, and + * x-amz-server-side-encryption-bucket-key-enabled) from the + * CreateSession request. You don't need to explicitly specify these + * encryption settings values in Zonal endpoint API calls, and Amazon S3 will use + * the encryption settings values from the CreateSession request to + * protect new objects in the directory bucket.

    When you use the CLI + * or the Amazon Web Services SDKs, for CreateSession, the session + * token refreshes automatically to avoid service interruptions when a session + * expires. The CLI or the Amazon Web Services SDKs use the bucket's default + * encryption configuration for the CreateSession request. It's not + * supported to override the encryption settings values in the + * CreateSession request. Also, in the Zonal endpoint API calls + * (except CopyObject + * and UploadPartCopy), + * it's not supported to override the values of the encryption settings from the + * CreateSession request.

    HTTP Host header + * syntax

    Directory buckets - The HTTP Host header syntax is + * * Bucket_name.s3express-az_id.region.amazonaws.com.

    *

    See Also:

    AWS @@ -1001,21 +1117,39 @@ namespace Aws } /** - *

    This operation is not supported by directory buckets.

    *

    This implementation of the DELETE action resets the default encryption for - * the bucket as server-side encryption with Amazon S3 managed keys (SSE-S3). For - * information about the bucket default encryption feature, see + *

    Permissions
    • General purpose + * bucket permissions - The s3:PutEncryptionConfiguration + * permission is required in a policy. The bucket owner has this permission by + * default. The bucket owner can grant this permission to others. For more + * information about permissions, see Permissions - * Related to Bucket Subresource Operations and and Managing - * Access Permissions to your Amazon S3 Resources in the Amazon S3 User - * Guide.

      The following operations are related to + * Access Permissions to Your Amazon S3 Resources.

    • + * Directory bucket permissions - To grant access to this API operation, you + * must have the s3express:PutEncryptionConfiguration permission in an + * IAM identity-based policy instead of a bucket policy. Cross-account access to + * this API operation isn't supported. This operation can only be performed by the + * Amazon Web Services account that owns the resource. For more information about + * directory bucket policies and permissions, see Amazon + * Web Services Identity and Access Management (IAM) for S3 Express One Zone in + * the Amazon S3 User Guide.

    HTTP Host header + * syntax

    Directory buckets - The HTTP Host header syntax is + * s3express-control.region.amazonaws.com.

    + *

    The following operations are related to * DeleteBucketEncryption:

    Storage classes
    + *

    If the object you are retrieving is stored in the S3 Glacier Flexible * Retrieval storage class, the S3 Glacier Deep Archive storage class, the S3 * Intelligent-Tiering Archive Access tier, or the S3 Intelligent-Tiering Deep * Archive Access tier, before you can retrieve the object you must first restore a @@ -2730,9 +2886,14 @@ namespace Aws * server-side encryption with Amazon Web Services KMS keys (DSSE-KMS). If you * include the header in your GetObject requests for the object that * uses these types of keys, you’ll get an HTTP 400 Bad Request - * error.

    Overriding response header values through the request
    - *

    There are times when you want to override certain response header values - * of a GetObject response. For example, you might override the + * error.

    Directory buckets - For directory buckets, there are only + * two supported options for server-side encryption: SSE-S3 and SSE-KMS. SSE-C + * isn't supported. For more information, see Protecting + * data with server-side encryption in the Amazon S3 User Guide.

    + *
    Overriding response header values through the request
    + *

    There are times when you want to override certain response header values of a + * GetObject response. For example, you might override the * Content-Disposition response header value through your * GetObject request.

    You can override values for a set of * response headers. These modified response header values are included only in a @@ -2837,9 +2998,9 @@ namespace Aws * and Zonal endpoints in the Amazon S3 User Guide.

    *
    Permissions
    • General purpose bucket * permissions - To use GetObjectAttributes, you must have READ - * access to the object. The permissions that you need to use this operation with - * depend on whether the bucket is versioned. If the bucket is versioned, you need - * both the s3:GetObjectVersion and + * access to the object. The permissions that you need to use this operation depend + * on whether the bucket is versioned. If the bucket is versioned, you need both + * the s3:GetObjectVersion and * s3:GetObjectVersionAttributes permissions for this operation. If * the bucket is not versioned, you need the s3:GetObject and * s3:GetObjectAttributes permissions. For more information, see - * CreateSession .

    Encryption
    - *

    Encryption request headers, like - * x-amz-server-side-encryption, should not be sent for - * HEAD requests if your object uses server-side encryption with Key - * Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with - * Amazon Web Services KMS keys (DSSE-KMS), or server-side encryption with Amazon - * S3 managed encryption keys (SSE-S3). The + * CreateSession .

    If the object is encrypted with SSE-KMS, + * you must also have the kms:GenerateDataKey and + * kms:Decrypt permissions in IAM identity-based policies and KMS key + * policies for the KMS key.

    Encryption
    + *

    Encryption request headers, like x-amz-server-side-encryption, + * should not be sent for HEAD requests if your object uses + * server-side encryption with Key Management Service (KMS) keys (SSE-KMS), + * dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), + * or server-side encryption with Amazon S3 managed encryption keys (SSE-S3). The * x-amz-server-side-encryption header is used when you * PUT an object to S3 and want to specify the encryption method. If * you include this header in a GET request for an object that uses @@ -2890,8 +3053,20 @@ namespace Aws * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side * Encryption (Using Customer-Provided Encryption Keys) in the Amazon S3 * User Guide.

    Directory bucket permissions - For - * directory buckets, only server-side encryption with Amazon S3 managed keys - * (SSE-S3) (AES256) is supported.

    + * directory buckets, there are only two supported options for server-side + * encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) + * (AES256) and server-side encryption with KMS keys (SSE-KMS) + * (aws:kms). We recommend that the bucket's default encryption uses + * the desired encryption configuration and you don't override the bucket default + * encryption in your CreateSession requests or PUT + * object requests. Then, new objects are automatically encrypted with the desired + * encryption settings. For more information, see Protecting + * data with server-side encryption in the Amazon S3 User Guide. For + * more information about the encryption overriding behaviors in directory buckets, + * see Specifying + * server-side encryption with KMS for new object uploads.

    *
    Versioning

    Directory buckets - S3 Versioning isn't * enabled and supported for directory buckets. For this API operation, only the * null value of the version ID is supported by directory buckets. You @@ -3293,8 +3468,13 @@ namespace Aws * automatically to avoid service interruptions when a session expires. For more * information about authorization, see - * CreateSession .

    Encryption
    - *

    Encryption request headers, like + * CreateSession .

    If you enable + * x-amz-checksum-mode in the request and the object is encrypted with + * Amazon Web Services Key Management Service (Amazon Web Services KMS), you must + * also have the kms:GenerateDataKey and kms:Decrypt + * permissions in IAM identity-based policies and KMS key policies for the KMS key + * to retrieve the checksum of the object.

    + *
    Encryption

    Encryption request headers, like * x-amz-server-side-encryption, should not be sent for * HEAD requests if your object uses server-side encryption with Key * Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with @@ -3316,22 +3496,24 @@ namespace Aws *

    For more information about SSE-C, see Server-Side * Encryption (Using Customer-Provided Encryption Keys) in the Amazon S3 - * User Guide.

    Directory bucket permissions - For - * directory buckets, only server-side encryption with Amazon S3 managed keys - * (SSE-S3) (AES256) is supported.

    - *
    Versioning
    • If the current version of the object is a - * delete marker, Amazon S3 behaves as if the object was deleted and includes - * x-amz-delete-marker: true in the response.

    • If the - * specified version is a delete marker, the response returns a 405 Method - * Not Allowed error and the Last-Modified: timestamp response - * header.

    • Directory buckets - Delete - * marker is not supported by directory buckets.

    • Directory - * buckets - S3 Versioning isn't enabled and supported for directory buckets. - * For this API operation, only the null value of the version ID is - * supported by directory buckets. You can only specify null to the - * versionId query parameter in the request.

    - *
    HTTP Host header syntax

    Directory buckets - The - * HTTP Host header syntax is + * User Guide.

    Directory bucket - For directory buckets, + * there are only two supported options for server-side encryption: SSE-S3 and + * SSE-KMS. SSE-C isn't supported. For more information, see Protecting + * data with server-side encryption in the Amazon S3 User Guide.

    + *
    Versioning
    • If the current version of + * the object is a delete marker, Amazon S3 behaves as if the object was deleted + * and includes x-amz-delete-marker: true in the response.

    • + *
    • If the specified version is a delete marker, the response returns a + * 405 Method Not Allowed error and the Last-Modified: + * timestamp response header.

    • + * Directory buckets - Delete marker is not supported by directory + * buckets.

    • Directory buckets - S3 Versioning isn't + * enabled and supported for directory buckets. For this API operation, only the + * null value of the version ID is supported by directory buckets. You + * can only specify null to the versionId query parameter + * in the request.

    HTTP Host header syntax
    + *

    Directory buckets - The HTTP Host header syntax is * Bucket_name.s3express-az_id.region.amazonaws.com.

    *

    For directory buckets, you must make requests for this API operation * to the Zonal endpoint. These endpoints support virtual-hosted-style requests in @@ -4332,37 +4514,103 @@ namespace Aws } /** - *

    This operation is not supported by directory buckets.

    - *

    This action uses the encryption subresource to configure default - * encryption and Amazon S3 Bucket Keys for an existing bucket.

    By default, - * all buckets have a default encryption configuration that uses server-side - * encryption with Amazon S3 managed keys (SSE-S3). You can optionally configure - * default encryption for a bucket by using server-side encryption with Key - * Management Service (KMS) keys (SSE-KMS) or dual-layer server-side encryption + *

    This operation configures default encryption and Amazon S3 Bucket Keys for an + * existing bucket.

    Directory buckets - For directory + * buckets, you must make requests for this API operation to the Regional endpoint. + * These endpoints support path-style requests in the format + * https://s3express-control.region_code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. For more information, + * see Regional + * and Zonal endpoints in the Amazon S3 User Guide.

    By + * default, all buckets have a default encryption configuration that uses + * server-side encryption with Amazon S3 managed keys (SSE-S3).

    + *

    If you're specifying a customer managed KMS key, we recommend using a fully + * qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the + * key within the requester’s account. This behavior can result in data that's + * encrypted with a KMS key that belongs to the requester, and not the bucket + * owner.

    Also, this action requires Amazon Web Services Signature Version + * 4. For more information, see * Authenticating Requests (Amazon Web Services Signature Version 4).

    - *

    To use this operation, you must have permission to perform the - * s3:PutEncryptionConfiguration action. The bucket owner has this - * permission by default. The bucket owner can grant this permission to others. For - * more information about permissions, see

    Permissions
    HTTP Host + * header syntax

    Directory buckets - The HTTP Host header + * syntax is s3express-control.region.amazonaws.com.

    + *

    The following operations are related to * PutBucketEncryption:

    Data integrity with + * CreateSession .

    If the object is encrypted with SSE-KMS, + * you must also have the kms:GenerateDataKey and + * kms:Decrypt permissions in IAM identity-based policies and KMS key + * policies for the KMS key.

    Data integrity with * Content-MD5
    • General purpose bucket - To ensure * that data is not corrupted traversing the network, use the * Content-MD5 header. When you use this header, Amazon S3 checks the @@ -5955,12 +6206,15 @@ namespace Aws * automatically to avoid service interruptions when a session expires. For more * information about authorization, see - * CreateSession .

    Data integrity
    - *

    General purpose bucket - To ensure that data is not corrupted - * traversing the network, specify the Content-MD5 header in the - * upload part request. Amazon S3 checks the part data against the provided MD5 - * value. If they do not match, Amazon S3 returns an error. If the upload request - * is signed with Signature Version 4, then Amazon Web Services S3 uses the + * CreateSession .

    If the object is encrypted with SSE-KMS, + * you must also have the kms:GenerateDataKey and + * kms:Decrypt permissions in IAM identity-based policies and KMS key + * policies for the KMS key.

    Data integrity

    + * General purpose bucket - To ensure that data is not corrupted traversing + * the network, specify the Content-MD5 header in the upload part + * request. Amazon S3 checks the part data against the provided MD5 value. If they + * do not match, Amazon S3 returns an error. If the upload request is signed with + * Signature Version 4, then Amazon Web Services S3 uses the * x-amz-content-sha256 header as a checksum instead of * Content-MD5. For more information see Authenticating @@ -5990,16 +6244,18 @@ namespace Aws * identical encryption information in each part upload using the following request * headers.

    • x-amz-server-side-encryption-customer-algorithm

      *
    • x-amz-server-side-encryption-customer-key

    • - *

      x-amz-server-side-encryption-customer-key-MD5

  • - * Directory bucket - For directory buckets, only server-side encryption - * with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

    - *
  • For more information, see x-amz-server-side-encryption-customer-key-MD5

    For more + * information, see Using - * Server-Side Encryption in the Amazon S3 User Guide.

    - *
    Special errors
    • Error Code: NoSuchUpload - *

      • Description: The specified multipart upload does not exist. - * The upload ID might be invalid, or the multipart upload might have been aborted - * or completed.

      • HTTP Status Code: 404 Not Found

      • + * Server-Side Encryption in the Amazon S3 User Guide.

      • + *

        Directory buckets - For directory buckets, there are only two + * supported options for server-side encryption: server-side encryption with Amazon + * S3 managed keys (SSE-S3) (AES256) and server-side encryption with + * KMS keys (SSE-KMS) (aws:kms).

    Special + * errors
    • Error Code: NoSuchUpload

        + *
      • Description: The specified multipart upload does not exist. The upload + * ID might be invalid, or the multipart upload might have been aborted or + * completed.

      • HTTP Status Code: 404 Not Found

      • *

        SOAP Fault Code Prefix: Client

    HTTP * Host header syntax

    Directory buckets - The HTTP Host * header syntax is @@ -6120,8 +6376,11 @@ namespace Aws * bucket, you must have the s3express:CreateSession * permission in the Action element of a policy to write the object to * the destination. The s3express:SessionMode condition key cannot be - * set to ReadOnly on the copy destination.

    For - * example policies, see ReadOnly on the copy destination.

    If the + * object is encrypted with SSE-KMS, you must also have the + * kms:GenerateDataKey and kms:Decrypt permissions in IAM + * identity-based policies and KMS key policies for the KMS key.

    For example + * policies, see Example * bucket policies for S3 Express One Zone and Amazon @@ -6133,12 +6392,27 @@ namespace Aws * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject * and UploadPart. - *

  • Directory buckets - For directory buckets, only - * server-side encryption with Amazon S3 managed keys (SSE-S3) - * (AES256) is supported.

  • Special - * errors
    • Error Code: NoSuchUpload

        - *
      • Description: The specified multipart upload does not exist. The upload - * ID might be invalid, or the multipart upload might have been aborted or + *

      • Directory buckets - For directory buckets, there are + * only two supported options for server-side encryption: server-side encryption + * with Amazon S3 managed keys (SSE-S3) (AES256) and server-side + * encryption with KMS keys (SSE-KMS) (aws:kms). For more information, + * see Protecting + * data with server-side encryption in the Amazon S3 User Guide.

        + *

        For directory buckets, when you perform a + * CreateMultipartUpload operation and an UploadPartCopy + * operation, the request headers you provide in the + * CreateMultipartUpload request must match the default encryption + * configuration of the destination bucket.

        S3 Bucket Keys aren't + * supported, when you copy SSE-KMS encrypted objects from general purpose buckets + * to directory buckets, from directory buckets to general purpose buckets, or + * between directory buckets, through UploadPartCopy. + * In this case, Amazon S3 makes a call to KMS every time a copy request is made + * for a KMS-encrypted object.

    Special errors
    + *
    • Error Code: NoSuchUpload

      • + *

        Description: The specified multipart upload does not exist. The upload ID + * might be invalid, or the multipart upload might have been aborted or * completed.

      • HTTP Status Code: 404 Not Found

      *
    • Error Code: InvalidRequest

      • *

        Description: The specified copy source is not supported as a byte-range copy diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CompleteMultipartUploadResult.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CompleteMultipartUploadResult.h index 14c3449640a..d704e6e0e9c 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CompleteMultipartUploadResult.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CompleteMultipartUploadResult.h @@ -195,9 +195,7 @@ namespace Model ///@{ /** *

        The server-side encryption algorithm used when storing this object in Amazon - * S3 (for example, AES256, aws:kms).

        For - * directory buckets, only server-side encryption with Amazon S3 managed keys - * (SSE-S3) (AES256) is supported.

        + * S3 (for example, AES256, aws:kms).

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } @@ -223,9 +221,8 @@ namespace Model ///@{ /** - *

        If present, indicates the ID of the Key Management Service (KMS) symmetric - * encryption customer managed key that was used for the object.

        This - * functionality is not supported for directory buckets.

        + *

        If present, indicates the ID of the KMS key that was used for object + * encryption.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } @@ -239,8 +236,7 @@ namespace Model ///@{ /** *

        Indicates whether the multipart upload uses an S3 Bucket Key for server-side - * encryption with Key Management Service (KMS) keys (SSE-KMS).

        This - * functionality is not supported for directory buckets.

        + * encryption with Key Management Service (KMS) keys (SSE-KMS).

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CopyObjectRequest.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CopyObjectRequest.h index ae5a9675baa..b639b675853 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CopyObjectRequest.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CopyObjectRequest.h @@ -558,33 +558,66 @@ namespace Model ///@{ /** *

        The server-side encryption algorithm used when storing this object in Amazon - * S3 (for example, AES256, aws:kms, - * aws:kms:dsse). Unrecognized or unsupported values won’t write a - * destination object and will receive a 400 Bad Request response. - *

        Amazon S3 automatically encrypts all new objects that are copied to an - * S3 bucket. When copying an object, if you don't specify encryption information - * in your copy request, the encryption setting of the target object is set to the - * default encryption configuration of the destination bucket. By default, all - * buckets have a base level of encryption configuration that uses server-side - * encryption with Amazon S3 managed keys (SSE-S3). If the destination bucket has a - * default encryption configuration that uses server-side encryption with Key - * Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with - * Amazon Web Services KMS keys (DSSE-KMS), or server-side encryption with - * customer-provided encryption keys (SSE-C), Amazon S3 uses the corresponding KMS - * key, or a customer-provided key to encrypt the target object copy.

        When - * you perform a CopyObject operation, if you want to use a different - * type of encryption setting for the target object, you can specify appropriate + * S3. Unrecognized or unsupported values won’t write a destination object and will + * receive a 400 Bad Request response.

        Amazon S3 automatically + * encrypts all new objects that are copied to an S3 bucket. When copying an + * object, if you don't specify encryption information in your copy request, the + * encryption setting of the target object is set to the default encryption + * configuration of the destination bucket. By default, all buckets have a base + * level of encryption configuration that uses server-side encryption with Amazon + * S3 managed keys (SSE-S3). If the destination bucket has a different default + * encryption configuration, Amazon S3 uses the corresponding encryption key to + * encrypt the target object copy.

        With server-side encryption, Amazon S3 + * encrypts your data as it writes your data to disks in its data centers and + * decrypts the data when you access it. For more information about server-side + * encryption, see Using + * Server-Side Encryption in the Amazon S3 User Guide.

        + * General purpose buckets

        • For general purpose buckets, + * there are the following supported options for server-side encryption: + * server-side encryption with Key Management Service (KMS) keys (SSE-KMS), + * dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), + * and server-side encryption with customer-provided encryption keys (SSE-C). + * Amazon S3 uses the corresponding KMS key, or a customer-provided key to encrypt + * the target object copy.

        • When you perform a + * CopyObject operation, if you want to use a different type of + * encryption setting for the target object, you can specify appropriate * encryption-related headers to encrypt the target object with an Amazon S3 * managed key, a KMS key, or a customer-provided key. If the encryption setting in * your request is different from the default encryption configuration of the * destination bucket, the encryption setting in your request takes precedence. - *

          With server-side encryption, Amazon S3 encrypts your data as it writes - * your data to disks in its data centers and decrypts the data when you access it. - * For more information about server-side encryption, see Using - * Server-Side Encryption in the Amazon S3 User Guide.

          For - * directory buckets, only server-side encryption with Amazon S3 managed keys - * (SSE-S3) (AES256) is supported.

          + *

        Directory buckets

        • For directory + * buckets, there are only two supported options for server-side encryption: + * server-side encryption with Amazon S3 managed keys (SSE-S3) + * (AES256) and server-side encryption with KMS keys (SSE-KMS) + * (aws:kms). We recommend that the bucket's default encryption uses + * the desired encryption configuration and you don't override the bucket default + * encryption in your CreateSession requests or PUT + * object requests. Then, new objects are automatically encrypted with the desired + * encryption settings. For more information, see Protecting + * data with server-side encryption in the Amazon S3 User Guide. For + * more information about the encryption overriding behaviors in directory buckets, + * see Specifying + * server-side encryption with KMS for new object uploads.

        • To + * encrypt new object copies to a directory bucket with SSE-KMS, we recommend you + * specify SSE-KMS as the directory bucket's default encryption configuration with + * a KMS key (specifically, a customer + * managed key). Amazon + * Web Services managed key (aws/s3) isn't supported. Your SSE-KMS + * configuration can only support 1 customer + * managed key per directory bucket for the lifetime of the bucket. After you + * specify a customer managed key for SSE-KMS, you can't override the customer + * managed key for the bucket's SSE-KMS configuration. Then, when you perform a + * CopyObject operation and want to specify server-side encryption + * settings for new object copies with SSE-KMS in the encryption-related request + * headers, you must ensure the encryption key is the same customer managed key + * that you specified for the directory bucket's default encryption configuration. + *

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline bool ServerSideEncryptionHasBeenSet() const { return m_serverSideEncryptionHasBeenSet; } @@ -715,15 +748,24 @@ namespace Model ///@{ /** - *

        Specifies the KMS ID (Key ID, Key ARN, or Key Alias) to use for object + *

        Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object * encryption. All GET and PUT requests for an object protected by KMS will fail if * they're not made via SSL or using SigV4. For information about configuring any * of the officially supported Amazon Web Services SDKs and Amazon Web Services * CLI, see Specifying * the Signature Version in Request Authentication in the Amazon S3 User - * Guide.

        This functionality is not supported when the - * destination bucket is a directory bucket.

        + * Guide.

        Directory buckets - If you specify + * x-amz-server-side-encryption with aws:kms, you must + * specify the x-amz-server-side-encryption-aws-kms-key-id header + * with the ID (Key ID or Key ARN) of the KMS symmetric encryption customer managed + * key to use. Otherwise, you get an HTTP 400 Bad Request error. Only + * use the key ID or key ARN. The key alias format of the KMS key isn't supported. + * Your SSE-KMS configuration can only support 1 customer + * managed key per directory bucket for the lifetime of the bucket. Amazon + * Web Services managed key (aws/s3) isn't supported.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline bool SSEKMSKeyIdHasBeenSet() const { return m_sSEKMSKeyIdHasBeenSet; } @@ -737,12 +779,19 @@ namespace Model ///@{ /** - *

        Specifies the Amazon Web Services KMS Encryption Context to use for object - * encryption. The value of this header is a base64-encoded UTF-8 string holding - * JSON with the encryption context key-value pairs. This value must be explicitly - * added to specify encryption context for CopyObject requests.

        - *

        This functionality is not supported when the destination bucket is a - * directory bucket.

        + *

        Specifies the Amazon Web Services KMS Encryption Context as an additional + * encryption context to use for the destination object encryption. The value of + * this header is a base64-encoded UTF-8 string holding JSON with the encryption + * context key-value pairs.

        General purpose buckets - This value + * must be explicitly added to specify encryption context for + * CopyObject requests if you want an additional encryption context + * for your destination object. The additional encryption context of the source + * object won't be copied to the destination object. For more information, see Encryption + * context in the Amazon S3 User Guide.

        Directory buckets + * - You can optionally provide an explicit encryption context value. The value + * must match the default encryption context - the bucket Amazon Resource Name + * (ARN). An additional encryption context value is not supported.

        */ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; } inline bool SSEKMSEncryptionContextHasBeenSet() const { return m_sSEKMSEncryptionContextHasBeenSet; } @@ -764,9 +813,13 @@ namespace Model * a COPY action doesn’t affect bucket-level settings for S3 Bucket Key.

        For * more information, see Amazon S3 - * Bucket Keys in the Amazon S3 User Guide.

        This - * functionality is not supported when the destination bucket is a directory - * bucket.

        + * Bucket Keys in the Amazon S3 User Guide.

        Directory + * buckets - S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted + * objects from general purpose buckets to directory buckets, from directory + * buckets to general purpose buckets, or between directory buckets, through CopyObject. + * In this case, Amazon S3 makes a call to KMS every time a copy request is made + * for a KMS-encrypted object.

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline bool BucketKeyEnabledHasBeenSet() const { return m_bucketKeyEnabledHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CopyObjectResult.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CopyObjectResult.h index c961b1ef5b2..29f469b1d5d 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CopyObjectResult.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CopyObjectResult.h @@ -83,9 +83,7 @@ namespace Model /** *

        The server-side encryption algorithm used when you store this object in * Amazon S3 (for example, AES256, aws:kms, - * aws:kms:dsse).

        For directory buckets, only - * server-side encryption with Amazon S3 managed keys (SSE-S3) - * (AES256) is supported.

        + * aws:kms:dsse).

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } @@ -128,9 +126,8 @@ namespace Model ///@{ /** - *

        If present, indicates the ID of the Key Management Service (KMS) symmetric - * encryption customer managed key that was used for the object.

        This - * functionality is not supported for directory buckets.

        + *

        If present, indicates the ID of the KMS key that was used for object + * encryption.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } @@ -145,8 +142,7 @@ namespace Model /** *

        If present, indicates the Amazon Web Services KMS Encryption Context to use * for object encryption. The value of this header is a base64-encoded UTF-8 string - * holding JSON with the encryption context key-value pairs.

        This - * functionality is not supported for directory buckets.

        + * holding JSON with the encryption context key-value pairs.

        */ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; } inline void SetSSEKMSEncryptionContext(const Aws::String& value) { m_sSEKMSEncryptionContext = value; } @@ -160,8 +156,7 @@ namespace Model ///@{ /** *

        Indicates whether the copied object uses an S3 Bucket Key for server-side - * encryption with Key Management Service (KMS) keys (SSE-KMS).

        This - * functionality is not supported for directory buckets.

        + * encryption with Key Management Service (KMS) keys (SSE-KMS).

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CreateMultipartUploadRequest.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CreateMultipartUploadRequest.h index 9014d07bf68..1cfa2778dfc 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CreateMultipartUploadRequest.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CreateMultipartUploadRequest.h @@ -418,9 +418,49 @@ namespace Model ///@{ /** *

        The server-side encryption algorithm used when you store this object in - * Amazon S3 (for example, AES256, aws:kms).

        - *

        For directory buckets, only server-side encryption with Amazon S3 managed - * keys (SSE-S3) (AES256) is supported.

        + * Amazon S3 (for example, AES256, aws:kms).

          + *
        • Directory buckets - For directory buckets, there are only two + * supported options for server-side encryption: server-side encryption with Amazon + * S3 managed keys (SSE-S3) (AES256) and server-side encryption with + * KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's + * default encryption uses the desired encryption configuration and you don't + * override the bucket default encryption in your CreateSession + * requests or PUT object requests. Then, new objects are + * automatically encrypted with the desired encryption settings. For more + * information, see Protecting + * data with server-side encryption in the Amazon S3 User Guide. For + * more information about the encryption overriding behaviors in directory buckets, + * see Specifying + * server-side encryption with KMS for new object uploads.

          In the Zonal + * endpoint API calls (except CopyObject + * and UploadPartCopy) + * using the REST API, the encryption request headers must match the encryption + * settings that are specified in the CreateSession request. You can't + * override the values of the encryption settings + * (x-amz-server-side-encryption, + * x-amz-server-side-encryption-aws-kms-key-id, + * x-amz-server-side-encryption-context, and + * x-amz-server-side-encryption-bucket-key-enabled) that are specified + * in the CreateSession request. You don't need to explicitly specify + * these encryption settings values in Zonal endpoint API calls, and Amazon S3 will + * use the encryption settings values from the CreateSession request + * to protect new objects in the directory bucket.

          When you use the + * CLI or the Amazon Web Services SDKs, for CreateSession, the session + * token refreshes automatically to avoid service interruptions when a session + * expires. The CLI or the Amazon Web Services SDKs use the bucket's default + * encryption configuration for the CreateSession request. It's not + * supported to override the encryption settings values in the + * CreateSession request. So in the Zonal endpoint API calls (except + * CopyObject + * and UploadPartCopy), + * the encryption request headers must match the default encryption configuration + * of the directory bucket.

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline bool ServerSideEncryptionHasBeenSet() const { return m_serverSideEncryptionHasBeenSet; } @@ -521,9 +561,27 @@ namespace Model ///@{ /** - *

        Specifies the ID (Key ID, Key ARN, or Key Alias) of the symmetric encryption - * customer managed key to use for object encryption.

        This - * functionality is not supported for directory buckets.

        + *

        Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object + * encryption. If the KMS key doesn't exist in the same account that's issuing the + * command, you must use the full Key ARN not the Key ID.

        General + * purpose buckets - If you specify x-amz-server-side-encryption + * with aws:kms or aws:kms:dsse, this header specifies + * the ID (Key ID, Key ARN, or Key Alias) of the KMS key to use. If you specify + * x-amz-server-side-encryption:aws:kms or + * x-amz-server-side-encryption:aws:kms:dsse, but do not provide + * x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the + * Amazon Web Services managed key (aws/s3) to protect the data.

        + *

        Directory buckets - If you specify + * x-amz-server-side-encryption with aws:kms, you must + * specify the x-amz-server-side-encryption-aws-kms-key-id header + * with the ID (Key ID or Key ARN) of the KMS symmetric encryption customer managed + * key to use. Otherwise, you get an HTTP 400 Bad Request error. Only + * use the key ID or key ARN. The key alias format of the KMS key isn't supported. + * Your SSE-KMS configuration can only support 1 customer + * managed key per directory bucket for the lifetime of the bucket. Amazon + * Web Services managed key (aws/s3) isn't supported.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline bool SSEKMSKeyIdHasBeenSet() const { return m_sSEKMSKeyIdHasBeenSet; } @@ -538,9 +596,12 @@ namespace Model ///@{ /** *

        Specifies the Amazon Web Services KMS Encryption Context to use for object - * encryption. The value of this header is a base64-encoded UTF-8 string holding - * JSON with the encryption context key-value pairs.

        This - * functionality is not supported for directory buckets.

        + * encryption. The value of this header is a Base64-encoded string of a UTF-8 + * encoded JSON, which contains the encryption context as key-value pairs.

        + * Directory buckets - You can optionally provide an explicit encryption + * context value. The value must match the default encryption context - the bucket + * Amazon Resource Name (ARN). An additional encryption context value is not + * supported.

        */ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; } inline bool SSEKMSEncryptionContextHasBeenSet() const { return m_sSEKMSEncryptionContextHasBeenSet; } @@ -555,11 +616,25 @@ namespace Model ///@{ /** *

        Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption - * with server-side encryption using Key Management Service (KMS) keys (SSE-KMS). - * Setting this header to true causes Amazon S3 to use an S3 Bucket - * Key for object encryption with SSE-KMS.

        Specifying this header with an - * object action doesn’t affect bucket-level settings for S3 Bucket Key.

        - *

        This functionality is not supported for directory buckets.

        + * with server-side encryption using Key Management Service (KMS) keys + * (SSE-KMS).

        General purpose buckets - Setting this header to + * true causes Amazon S3 to use an S3 Bucket Key for object encryption + * with SSE-KMS. Also, specifying this header with a PUT action doesn't affect + * bucket-level settings for S3 Bucket Key.

        Directory buckets - S3 + * Bucket Keys are always enabled for GET and PUT + * operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't + * supported, when you copy SSE-KMS encrypted objects from general purpose buckets + * to directory buckets, from directory buckets to general purpose buckets, or + * between directory buckets, through CopyObject, + * UploadPartCopy, + * the + * Copy operation in Batch Operations, or the + * import jobs. In this case, Amazon S3 makes a call to KMS every time a copy + * request is made for a KMS-encrypted object.

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline bool BucketKeyEnabledHasBeenSet() const { return m_bucketKeyEnabledHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CreateMultipartUploadResult.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CreateMultipartUploadResult.h index 86c596eb9d8..e898d06e50b 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CreateMultipartUploadResult.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CreateMultipartUploadResult.h @@ -117,9 +117,7 @@ namespace Model ///@{ /** *

        The server-side encryption algorithm used when you store this object in - * Amazon S3 (for example, AES256, aws:kms).

        - *

        For directory buckets, only server-side encryption with Amazon S3 managed - * keys (SSE-S3) (AES256) is supported.

        + * Amazon S3 (for example, AES256, aws:kms).

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } @@ -162,9 +160,8 @@ namespace Model ///@{ /** - *

        If present, indicates the ID of the Key Management Service (KMS) symmetric - * encryption customer managed key that was used for the object.

        This - * functionality is not supported for directory buckets.

        + *

        If present, indicates the ID of the KMS key that was used for object + * encryption.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } @@ -178,9 +175,9 @@ namespace Model ///@{ /** *

        If present, indicates the Amazon Web Services KMS Encryption Context to use - * for object encryption. The value of this header is a base64-encoded UTF-8 string - * holding JSON with the encryption context key-value pairs.

        This - * functionality is not supported for directory buckets.

        + * for object encryption. The value of this header is a Base64-encoded string of a + * UTF-8 encoded JSON, which contains the encryption context as key-value + * pairs.

        */ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; } inline void SetSSEKMSEncryptionContext(const Aws::String& value) { m_sSEKMSEncryptionContext = value; } @@ -194,8 +191,7 @@ namespace Model ///@{ /** *

        Indicates whether the multipart upload uses an S3 Bucket Key for server-side - * encryption with Key Management Service (KMS) keys (SSE-KMS).

        This - * functionality is not supported for directory buckets.

        + * encryption with Key Management Service (KMS) keys (SSE-KMS).

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CreateSessionRequest.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CreateSessionRequest.h index ef231244a64..57e0eca21ef 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CreateSessionRequest.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CreateSessionRequest.h @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -52,9 +53,9 @@ namespace Model *

        Specifies the mode of the session that will be created, either * ReadWrite or ReadOnly. By default, a * ReadWrite session is created. A ReadWrite session is - * capable of executing all the Zonal endpoint APIs on a directory bucket. A - * ReadOnly session is constrained to execute the following Zonal - * endpoint APIs: GetObject, HeadObject, + * capable of executing all the Zonal endpoint API operations on a directory + * bucket. A ReadOnly session is constrained to execute the following + * Zonal endpoint API operations: GetObject, HeadObject, * ListObjectsV2, GetObjectAttributes, * ListParts, and ListMultipartUploads.

        */ @@ -80,6 +81,103 @@ namespace Model inline CreateSessionRequest& WithBucket(const char* value) { SetBucket(value); return *this;} ///@} + ///@{ + /** + *

        The server-side encryption algorithm to use when you store objects in the + * directory bucket.

        For directory buckets, there are only two supported + * options for server-side encryption: server-side encryption with Amazon S3 + * managed keys (SSE-S3) (AES256) and server-side encryption with KMS + * keys (SSE-KMS) (aws:kms). By default, Amazon S3 encrypts data with + * SSE-S3. For more information, see Protecting + * data with server-side encryption in the Amazon S3 User Guide.

        + */ + inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } + inline bool ServerSideEncryptionHasBeenSet() const { return m_serverSideEncryptionHasBeenSet; } + inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryptionHasBeenSet = true; m_serverSideEncryption = value; } + inline void SetServerSideEncryption(ServerSideEncryption&& value) { m_serverSideEncryptionHasBeenSet = true; m_serverSideEncryption = std::move(value); } + inline CreateSessionRequest& WithServerSideEncryption(const ServerSideEncryption& value) { SetServerSideEncryption(value); return *this;} + inline CreateSessionRequest& WithServerSideEncryption(ServerSideEncryption&& value) { SetServerSideEncryption(std::move(value)); return *this;} + ///@} + + ///@{ + /** + *

        If you specify x-amz-server-side-encryption with + * aws:kms, you must specify the + * x-amz-server-side-encryption-aws-kms-key-id header with the ID (Key ID or + * Key ARN) of the KMS symmetric encryption customer managed key to use. Otherwise, + * you get an HTTP 400 Bad Request error. Only use the key ID or key + * ARN. The key alias format of the KMS key isn't supported. Also, if the KMS key + * doesn't exist in the same account that't issuing the command, you must use the + * full Key ARN not the Key ID.

        Your SSE-KMS configuration can only support + * 1 customer + * managed key per directory bucket for the lifetime of the bucket. Amazon + * Web Services managed key (aws/s3) isn't supported.

        + */ + inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } + inline bool SSEKMSKeyIdHasBeenSet() const { return m_sSEKMSKeyIdHasBeenSet; } + inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyIdHasBeenSet = true; m_sSEKMSKeyId = value; } + inline void SetSSEKMSKeyId(Aws::String&& value) { m_sSEKMSKeyIdHasBeenSet = true; m_sSEKMSKeyId = std::move(value); } + inline void SetSSEKMSKeyId(const char* value) { m_sSEKMSKeyIdHasBeenSet = true; m_sSEKMSKeyId.assign(value); } + inline CreateSessionRequest& WithSSEKMSKeyId(const Aws::String& value) { SetSSEKMSKeyId(value); return *this;} + inline CreateSessionRequest& WithSSEKMSKeyId(Aws::String&& value) { SetSSEKMSKeyId(std::move(value)); return *this;} + inline CreateSessionRequest& WithSSEKMSKeyId(const char* value) { SetSSEKMSKeyId(value); return *this;} + ///@} + + ///@{ + /** + *

        Specifies the Amazon Web Services KMS Encryption Context as an additional + * encryption context to use for object encryption. The value of this header is a + * Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption + * context as key-value pairs. This value is stored as object metadata and + * automatically gets passed on to Amazon Web Services KMS for future + * GetObject operations on this object.

        General purpose + * buckets - This value must be explicitly added during CopyObject + * operations if you want an additional encryption context for your object. For + * more information, see Encryption + * context in the Amazon S3 User Guide.

        Directory buckets + * - You can optionally provide an explicit encryption context value. The value + * must match the default encryption context - the bucket Amazon Resource Name + * (ARN). An additional encryption context value is not supported.

        + */ + inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; } + inline bool SSEKMSEncryptionContextHasBeenSet() const { return m_sSEKMSEncryptionContextHasBeenSet; } + inline void SetSSEKMSEncryptionContext(const Aws::String& value) { m_sSEKMSEncryptionContextHasBeenSet = true; m_sSEKMSEncryptionContext = value; } + inline void SetSSEKMSEncryptionContext(Aws::String&& value) { m_sSEKMSEncryptionContextHasBeenSet = true; m_sSEKMSEncryptionContext = std::move(value); } + inline void SetSSEKMSEncryptionContext(const char* value) { m_sSEKMSEncryptionContextHasBeenSet = true; m_sSEKMSEncryptionContext.assign(value); } + inline CreateSessionRequest& WithSSEKMSEncryptionContext(const Aws::String& value) { SetSSEKMSEncryptionContext(value); return *this;} + inline CreateSessionRequest& WithSSEKMSEncryptionContext(Aws::String&& value) { SetSSEKMSEncryptionContext(std::move(value)); return *this;} + inline CreateSessionRequest& WithSSEKMSEncryptionContext(const char* value) { SetSSEKMSEncryptionContext(value); return *this;} + ///@} + + ///@{ + /** + *

        Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption + * with server-side encryption using KMS keys (SSE-KMS).

        S3 Bucket Keys are + * always enabled for GET and PUT operations in a + * directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when + * you copy SSE-KMS encrypted objects from general purpose buckets to directory + * buckets, from directory buckets to general purpose buckets, or between directory + * buckets, through CopyObject, + * UploadPartCopy, + * the + * Copy operation in Batch Operations, or the + * import jobs. In this case, Amazon S3 makes a call to KMS every time a copy + * request is made for a KMS-encrypted object.

        + */ + inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } + inline bool BucketKeyEnabledHasBeenSet() const { return m_bucketKeyEnabledHasBeenSet; } + inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabledHasBeenSet = true; m_bucketKeyEnabled = value; } + inline CreateSessionRequest& WithBucketKeyEnabled(bool value) { SetBucketKeyEnabled(value); return *this;} + ///@} + ///@{ inline const Aws::Map& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; } @@ -104,6 +202,18 @@ namespace Model Aws::String m_bucket; bool m_bucketHasBeenSet = false; + ServerSideEncryption m_serverSideEncryption; + bool m_serverSideEncryptionHasBeenSet = false; + + Aws::String m_sSEKMSKeyId; + bool m_sSEKMSKeyIdHasBeenSet = false; + + Aws::String m_sSEKMSEncryptionContext; + bool m_sSEKMSEncryptionContextHasBeenSet = false; + + bool m_bucketKeyEnabled; + bool m_bucketKeyEnabledHasBeenSet = false; + Aws::Map m_customizedAccessLogTag; bool m_customizedAccessLogTagHasBeenSet = false; }; diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CreateSessionResult.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CreateSessionResult.h index 6844fff3f07..bdfcc2cc331 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CreateSessionResult.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/CreateSessionResult.h @@ -5,8 +5,9 @@ #pragma once #include -#include +#include #include +#include #include namespace Aws @@ -33,6 +34,61 @@ namespace Model AWS_S3CRT_API CreateSessionResult& operator=(const Aws::AmazonWebServiceResult& result); + ///@{ + /** + *

        The server-side encryption algorithm used when you store objects in the + * directory bucket.

        + */ + inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } + inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } + inline void SetServerSideEncryption(ServerSideEncryption&& value) { m_serverSideEncryption = std::move(value); } + inline CreateSessionResult& WithServerSideEncryption(const ServerSideEncryption& value) { SetServerSideEncryption(value); return *this;} + inline CreateSessionResult& WithServerSideEncryption(ServerSideEncryption&& value) { SetServerSideEncryption(std::move(value)); return *this;} + ///@} + + ///@{ + /** + *

        If you specify x-amz-server-side-encryption with + * aws:kms, this header indicates the ID of the KMS symmetric + * encryption customer managed key that was used for object encryption.

        + */ + inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } + inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } + inline void SetSSEKMSKeyId(Aws::String&& value) { m_sSEKMSKeyId = std::move(value); } + inline void SetSSEKMSKeyId(const char* value) { m_sSEKMSKeyId.assign(value); } + inline CreateSessionResult& WithSSEKMSKeyId(const Aws::String& value) { SetSSEKMSKeyId(value); return *this;} + inline CreateSessionResult& WithSSEKMSKeyId(Aws::String&& value) { SetSSEKMSKeyId(std::move(value)); return *this;} + inline CreateSessionResult& WithSSEKMSKeyId(const char* value) { SetSSEKMSKeyId(value); return *this;} + ///@} + + ///@{ + /** + *

        If present, indicates the Amazon Web Services KMS Encryption Context to use + * for object encryption. The value of this header is a Base64-encoded string of a + * UTF-8 encoded JSON, which contains the encryption context as key-value pairs. + * This value is stored as object metadata and automatically gets passed on to + * Amazon Web Services KMS for future GetObject operations on this + * object.

        + */ + inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; } + inline void SetSSEKMSEncryptionContext(const Aws::String& value) { m_sSEKMSEncryptionContext = value; } + inline void SetSSEKMSEncryptionContext(Aws::String&& value) { m_sSEKMSEncryptionContext = std::move(value); } + inline void SetSSEKMSEncryptionContext(const char* value) { m_sSEKMSEncryptionContext.assign(value); } + inline CreateSessionResult& WithSSEKMSEncryptionContext(const Aws::String& value) { SetSSEKMSEncryptionContext(value); return *this;} + inline CreateSessionResult& WithSSEKMSEncryptionContext(Aws::String&& value) { SetSSEKMSEncryptionContext(std::move(value)); return *this;} + inline CreateSessionResult& WithSSEKMSEncryptionContext(const char* value) { SetSSEKMSEncryptionContext(value); return *this;} + ///@} + + ///@{ + /** + *

        Indicates whether to use an S3 Bucket Key for server-side encryption with KMS + * keys (SSE-KMS).

        + */ + inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } + inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } + inline CreateSessionResult& WithBucketKeyEnabled(bool value) { SetBucketKeyEnabled(value); return *this;} + ///@} + ///@{ /** *

        The established temporary security credentials for the created session.

        @@ -56,6 +112,14 @@ namespace Model ///@} private: + ServerSideEncryption m_serverSideEncryption; + + Aws::String m_sSEKMSKeyId; + + Aws::String m_sSEKMSEncryptionContext; + + bool m_bucketKeyEnabled; + SessionCredentials m_credentials; Aws::String m_requestId; diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/DeleteBucketEncryptionRequest.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/DeleteBucketEncryptionRequest.h index 2a6e0b89f62..b46469daec0 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/DeleteBucketEncryptionRequest.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/DeleteBucketEncryptionRequest.h @@ -49,7 +49,16 @@ namespace Model ///@{ /** *

        The name of the bucket containing the server-side encryption configuration to - * delete.

        + * delete.

        Directory buckets - When you use this operation with a + * directory bucket, you must use path-style requests in the format + * https://s3express-control.region_code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names + * must be unique in the chosen Availability Zone. Bucket names must also follow + * the format bucket_base_name--az_id--x-s3 (for + * example, DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For + * information about bucket naming restrictions, see Directory + * bucket naming rules in the Amazon S3 User Guide

        */ inline const Aws::String& GetBucket() const{ return m_bucket; } inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; } @@ -65,7 +74,10 @@ namespace Model /** *

        The account ID of the expected bucket owner. If the account ID that you * provide does not match the actual owner of the bucket, the request fails with - * the HTTP status code 403 Forbidden (access denied).

        + * the HTTP status code 403 Forbidden (access denied).

        + *

        For directory buckets, this header is not supported in this API operation. If + * you specify this header, the request fails with the HTTP status code 501 + * Not Implemented.

        */ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; } inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/ExistingObjectReplication.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/ExistingObjectReplication.h index 7f71d6e0b50..aa825e05e97 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/ExistingObjectReplication.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/ExistingObjectReplication.h @@ -23,11 +23,12 @@ namespace Model { /** - *

        Optional configuration to replicate existing source bucket objects. For more - * information, see Replicating - * Existing Objects in the Amazon S3 User Guide.

        See - * Also:

        Optional configuration to replicate existing source bucket objects.

        + *

        This parameter is no longer supported. To replicate existing objects, + * see Replicating + * existing objects with S3 Batch Replication in the Amazon S3 User + * Guide.

        See Also:

        AWS * API Reference

        */ diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/GetBucketEncryptionRequest.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/GetBucketEncryptionRequest.h index 22cbe96a162..a7ebccb8e9c 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/GetBucketEncryptionRequest.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/GetBucketEncryptionRequest.h @@ -49,7 +49,16 @@ namespace Model ///@{ /** *

        The name of the bucket from which the server-side encryption configuration is - * retrieved.

        + * retrieved.

        Directory buckets - When you use this operation with + * a directory bucket, you must use path-style requests in the format + * https://s3express-control.region_code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names + * must be unique in the chosen Availability Zone. Bucket names must also follow + * the format bucket_base_name--az_id--x-s3 (for + * example, DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For + * information about bucket naming restrictions, see Directory + * bucket naming rules in the Amazon S3 User Guide

        */ inline const Aws::String& GetBucket() const{ return m_bucket; } inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; } @@ -65,7 +74,10 @@ namespace Model /** *

        The account ID of the expected bucket owner. If the account ID that you * provide does not match the actual owner of the bucket, the request fails with - * the HTTP status code 403 Forbidden (access denied).

        + * the HTTP status code 403 Forbidden (access denied).

        + *

        For directory buckets, this header is not supported in this API operation. If + * you specify this header, the request fails with the HTTP status code 501 + * Not Implemented.

        */ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; } inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/GetObjectRequest.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/GetObjectRequest.h index 3f64761cfa3..448dd0740ff 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/GetObjectRequest.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/GetObjectRequest.h @@ -448,8 +448,9 @@ namespace Model ///@{ /** - *

        To retrieve the checksum, this mode must be enabled.

        In addition, if - * you enable checksum mode and the object is uploaded with a To retrieve the checksum, this mode must be enabled.

        General + * purpose buckets - In addition, if you enable checksum mode and the object is + * uploaded with a checksum * and encrypted with an Key Management Service (KMS) key, you must have permission * to use the kms:Decrypt action to retrieve the checksum.

        diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/GetObjectResult.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/GetObjectResult.h index 2bfd656f007..b9270c920d0 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/GetObjectResult.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/GetObjectResult.h @@ -359,10 +359,7 @@ namespace Model ///@{ /** *

        The server-side encryption algorithm used when you store this object in - * Amazon S3 (for example, AES256, aws:kms, - * aws:kms:dsse).

        For directory buckets, only - * server-side encryption with Amazon S3 managed keys (SSE-S3) - * (AES256) is supported.

        + * Amazon S3.

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } @@ -423,9 +420,8 @@ namespace Model ///@{ /** - *

        If present, indicates the ID of the Key Management Service (KMS) symmetric - * encryption customer managed key that was used for the object.

        This - * functionality is not supported for directory buckets.

        + *

        If present, indicates the ID of the KMS key that was used for object + * encryption.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } @@ -439,8 +435,7 @@ namespace Model ///@{ /** *

        Indicates whether the object uses an S3 Bucket Key for server-side encryption - * with Key Management Service (KMS) keys (SSE-KMS).

        This - * functionality is not supported for directory buckets.

        + * with Key Management Service (KMS) keys (SSE-KMS).

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/HeadObjectRequest.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/HeadObjectRequest.h index db54a2b8de6..f48eae52c94 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/HeadObjectRequest.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/HeadObjectRequest.h @@ -399,11 +399,17 @@ namespace Model ///@{ /** - *

        To retrieve the checksum, this parameter must be enabled.

        In addition, - * if you enable checksum mode and the object is uploaded with a To retrieve the checksum, this parameter must be enabled.

        General + * purpose buckets - If you enable checksum mode and the object is uploaded + * with a checksum * and encrypted with an Key Management Service (KMS) key, you must have permission - * to use the kms:Decrypt action to retrieve the checksum.

        + * to use the kms:Decrypt action to retrieve the checksum.

        + * Directory buckets - If you enable ChecksumMode and the + * object is encrypted with Amazon Web Services Key Management Service (Amazon Web + * Services KMS), you must also have the kms:GenerateDataKey and + * kms:Decrypt permissions in IAM identity-based policies and KMS key + * policies for the KMS key to retrieve the checksum of the object.

        */ inline const ChecksumMode& GetChecksumMode() const{ return m_checksumMode; } inline bool ChecksumModeHasBeenSet() const { return m_checksumModeHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/HeadObjectResult.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/HeadObjectResult.h index 1ee647ba67a..064a93cb5c9 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/HeadObjectResult.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/HeadObjectResult.h @@ -363,9 +363,7 @@ namespace Model /** *

        The server-side encryption algorithm used when you store this object in * Amazon S3 (for example, AES256, aws:kms, - * aws:kms:dsse).

        For directory buckets, only - * server-side encryption with Amazon S3 managed keys (SSE-S3) - * (AES256) is supported.

        + * aws:kms:dsse).

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } @@ -426,9 +424,8 @@ namespace Model ///@{ /** - *

        If present, indicates the ID of the Key Management Service (KMS) symmetric - * encryption customer managed key that was used for the object.

        This - * functionality is not supported for directory buckets.

        + *

        If present, indicates the ID of the KMS key that was used for object + * encryption.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } @@ -442,8 +439,7 @@ namespace Model ///@{ /** *

        Indicates whether the object uses an S3 Bucket Key for server-side encryption - * with Key Management Service (KMS) keys (SSE-KMS).

        This - * functionality is not supported for directory buckets.

        + * with Key Management Service (KMS) keys (SSE-KMS).

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/PutBucketEncryptionRequest.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/PutBucketEncryptionRequest.h index 01b69a2989c..7bb09b89dad 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/PutBucketEncryptionRequest.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/PutBucketEncryptionRequest.h @@ -53,14 +53,17 @@ namespace Model ///@{ /** *

        Specifies default encryption for a bucket using server-side encryption with - * different key options. By default, all buckets have a default encryption - * configuration that uses server-side encryption with Amazon S3 managed keys - * (SSE-S3). You can optionally configure default encryption for a bucket by using - * server-side encryption with an Amazon Web Services KMS key (SSE-KMS) or a - * customer-provided key (SSE-C). For information about the bucket default - * encryption feature, see Amazon - * S3 Bucket Default Encryption in the Amazon S3 User Guide.

        + * different key options.

        Directory buckets - When you use this + * operation with a directory bucket, you must use path-style requests in the + * format + * https://s3express-control.region_code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names + * must be unique in the chosen Availability Zone. Bucket names must also follow + * the format bucket_base_name--az_id--x-s3 (for + * example, DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For + * information about bucket naming restrictions, see Directory + * bucket naming rules in the Amazon S3 User Guide

        */ inline const Aws::String& GetBucket() const{ return m_bucket; } inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; } @@ -77,7 +80,8 @@ namespace Model *

        The base64-encoded 128-bit MD5 digest of the server-side encryption * configuration.

        For requests made using the Amazon Web Services Command * Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated - * automatically.

        + * automatically.

        This functionality is not supported for directory + * buckets.

        */ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; } inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; } @@ -100,7 +104,9 @@ namespace Model * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking * object integrity in the Amazon S3 User Guide.

        If you provide * an individual checksum, Amazon S3 ignores any provided - * ChecksumAlgorithm parameter.

        + * ChecksumAlgorithm parameter.

        For directory buckets, + * when you use Amazon Web Services SDKs, CRC32 is the default + * checksum algorithm that's used for performance.

        */ inline const ChecksumAlgorithm& GetChecksumAlgorithm() const{ return m_checksumAlgorithm; } inline bool ChecksumAlgorithmHasBeenSet() const { return m_checksumAlgorithmHasBeenSet; } @@ -124,7 +130,10 @@ namespace Model /** *

        The account ID of the expected bucket owner. If the account ID that you * provide does not match the actual owner of the bucket, the request fails with - * the HTTP status code 403 Forbidden (access denied).

        + * the HTTP status code 403 Forbidden (access denied).

        + *

        For directory buckets, this header is not supported in this API operation. If + * you specify this header, the request fails with the HTTP status code 501 + * Not Implemented.

        */ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; } inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/PutObjectRequest.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/PutObjectRequest.h index e42076baee0..cc6a78e2628 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/PutObjectRequest.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/PutObjectRequest.h @@ -483,20 +483,59 @@ namespace Model /** *

        The server-side encryption algorithm that was used when you store this object * in Amazon S3 (for example, AES256, aws:kms, - * aws:kms:dsse).

        General purpose buckets - You have - * four mutually exclusive options to protect data using server-side encryption in - * Amazon S3, depending on how you choose to manage the encryption keys. - * Specifically, the encryption key options are Amazon S3 managed keys (SSE-S3), - * Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and customer-provided keys - * (SSE-C). Amazon S3 encrypts data with server-side encryption by using Amazon S3 - * managed keys (SSE-S3) by default. You can optionally tell Amazon S3 to encrypt - * data at rest by using server-side encryption with other key options. For more - * information, see aws:kms:dsse).

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline bool ServerSideEncryptionHasBeenSet() const { return m_serverSideEncryptionHasBeenSet; } @@ -610,17 +649,27 @@ namespace Model ///@{ /** - *

        If x-amz-server-side-encryption has a valid value of - * aws:kms or aws:kms:dsse, this header specifies the ID - * (Key ID, Key ARN, or Key Alias) of the Key Management Service (KMS) symmetric - * encryption customer managed key that was used for the object. If you specify + *

        Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object + * encryption. If the KMS key doesn't exist in the same account that's issuing the + * command, you must use the full Key ARN not the Key ID.

        General + * purpose buckets - If you specify x-amz-server-side-encryption + * with aws:kms or aws:kms:dsse, this header specifies + * the ID (Key ID, Key ARN, or Key Alias) of the KMS key to use. If you specify * x-amz-server-side-encryption:aws:kms or - * x-amz-server-side-encryption:aws:kms:dsse, but do not provide - * x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon - * Web Services managed key (aws/s3) to protect the data. If the KMS - * key does not exist in the same account that's issuing the command, you must use - * the full ARN and not just the ID.

        This functionality is not - * supported for directory buckets.

        + * x-amz-server-side-encryption:aws:kms:dsse, but do not provide + * x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the + * Amazon Web Services managed key (aws/s3) to protect the data.

        + *

        Directory buckets - If you specify + * x-amz-server-side-encryption with aws:kms, you must + * specify the x-amz-server-side-encryption-aws-kms-key-id header + * with the ID (Key ID or Key ARN) of the KMS symmetric encryption customer managed + * key to use. Otherwise, you get an HTTP 400 Bad Request error. Only + * use the key ID or key ARN. The key alias format of the KMS key isn't supported. + * Your SSE-KMS configuration can only support 1 customer + * managed key per directory bucket for the lifetime of the bucket. Amazon + * Web Services managed key (aws/s3) isn't supported.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline bool SSEKMSKeyIdHasBeenSet() const { return m_sSEKMSKeyIdHasBeenSet; } @@ -634,14 +683,20 @@ namespace Model ///@{ /** - *

        Specifies the Amazon Web Services KMS Encryption Context to use for object - * encryption. The value of this header is a base64-encoded UTF-8 string holding - * JSON with the encryption context key-value pairs. This value is stored as object - * metadata and automatically gets passed on to Amazon Web Services KMS for future - * GetObject or CopyObject operations on this object. - * This value must be explicitly added during CopyObject - * operations.

        This functionality is not supported for directory - * buckets.

        + *

        Specifies the Amazon Web Services KMS Encryption Context as an additional + * encryption context to use for object encryption. The value of this header is a + * Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption + * context as key-value pairs. This value is stored as object metadata and + * automatically gets passed on to Amazon Web Services KMS for future + * GetObject operations on this object.

        General purpose + * buckets - This value must be explicitly added during CopyObject + * operations if you want an additional encryption context for your object. For + * more information, see Encryption + * context in the Amazon S3 User Guide.

        Directory buckets + * - You can optionally provide an explicit encryption context value. The value + * must match the default encryption context - the bucket Amazon Resource Name + * (ARN). An additional encryption context value is not supported.

        */ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; } inline bool SSEKMSEncryptionContextHasBeenSet() const { return m_sSEKMSEncryptionContextHasBeenSet; } @@ -656,11 +711,25 @@ namespace Model ///@{ /** *

        Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption - * with server-side encryption using Key Management Service (KMS) keys (SSE-KMS). - * Setting this header to true causes Amazon S3 to use an S3 Bucket - * Key for object encryption with SSE-KMS.

        Specifying this header with a PUT - * action doesn’t affect bucket-level settings for S3 Bucket Key.

        - *

        This functionality is not supported for directory buckets.

        + * with server-side encryption using Key Management Service (KMS) keys + * (SSE-KMS).

        General purpose buckets - Setting this header to + * true causes Amazon S3 to use an S3 Bucket Key for object encryption + * with SSE-KMS. Also, specifying this header with a PUT action doesn't affect + * bucket-level settings for S3 Bucket Key.

        Directory buckets - S3 + * Bucket Keys are always enabled for GET and PUT + * operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't + * supported, when you copy SSE-KMS encrypted objects from general purpose buckets + * to directory buckets, from directory buckets to general purpose buckets, or + * between directory buckets, through CopyObject, + * UploadPartCopy, + * the + * Copy operation in Batch Operations, or the + * import jobs. In this case, Amazon S3 makes a call to KMS every time a copy + * request is made for a KMS-encrypted object.

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline bool BucketKeyEnabledHasBeenSet() const { return m_bucketKeyEnabledHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/PutObjectResult.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/PutObjectResult.h index 0a817321577..b25b3ef0477 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/PutObjectResult.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/PutObjectResult.h @@ -154,10 +154,7 @@ namespace Model ///@{ /** *

        The server-side encryption algorithm used when you store this object in - * Amazon S3 (for example, AES256, aws:kms, - * aws:kms:dsse).

        For directory buckets, only - * server-side encryption with Amazon S3 managed keys (SSE-S3) - * (AES256) is supported.

        + * Amazon S3.

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } @@ -224,11 +221,8 @@ namespace Model ///@{ /** - *

        If x-amz-server-side-encryption has a valid value of - * aws:kms or aws:kms:dsse, this header indicates the ID - * of the Key Management Service (KMS) symmetric encryption customer managed key - * that was used for the object.

        This functionality is not supported - * for directory buckets.

        + *

        If present, indicates the ID of the KMS key that was used for object + * encryption.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } @@ -242,12 +236,11 @@ namespace Model ///@{ /** *

        If present, indicates the Amazon Web Services KMS Encryption Context to use - * for object encryption. The value of this header is a base64-encoded UTF-8 string - * holding JSON with the encryption context key-value pairs. This value is stored - * as object metadata and automatically gets passed on to Amazon Web Services KMS - * for future GetObject or CopyObject operations on this - * object.

        This functionality is not supported for directory - * buckets.

        + * for object encryption. The value of this header is a Base64-encoded string of a + * UTF-8 encoded JSON, which contains the encryption context as key-value pairs. + * This value is stored as object metadata and automatically gets passed on to + * Amazon Web Services KMS for future GetObject operations on this + * object.

        */ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; } inline void SetSSEKMSEncryptionContext(const Aws::String& value) { m_sSEKMSEncryptionContext = value; } @@ -261,8 +254,7 @@ namespace Model ///@{ /** *

        Indicates whether the uploaded object uses an S3 Bucket Key for server-side - * encryption with Key Management Service (KMS) keys (SSE-KMS).

        This - * functionality is not supported for directory buckets.

        + * encryption with Key Management Service (KMS) keys (SSE-KMS).

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/ReplicationRule.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/ReplicationRule.h index dd50a3f91ba..0490152fdb7 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/ReplicationRule.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/ReplicationRule.h @@ -115,10 +115,12 @@ namespace Model ///@{ /** - *

        Optional configuration to replicate existing source bucket objects. For more - * information, see Replicating - * Existing Objects in the Amazon S3 User Guide.

        + *

        Optional configuration to replicate existing source bucket objects.

        + *

        This parameter is no longer supported. To replicate existing objects, + * see Replicating + * existing objects with S3 Batch Replication in the Amazon S3 User + * Guide.

        */ inline const ExistingObjectReplication& GetExistingObjectReplication() const{ return m_existingObjectReplication; } inline bool ExistingObjectReplicationHasBeenSet() const { return m_existingObjectReplicationHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/ServerSideEncryptionByDefault.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/ServerSideEncryptionByDefault.h index fa93c4d6058..b8973617122 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/ServerSideEncryptionByDefault.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/ServerSideEncryptionByDefault.h @@ -26,18 +26,21 @@ namespace Model /** *

        Describes the default server-side encryption to apply to new objects in the * bucket. If a PUT Object request doesn't specify any server-side encryption, this - * default encryption will be applied. If you don't specify a customer managed key - * at configuration, Amazon S3 automatically creates an Amazon Web Services KMS key - * in your Amazon Web Services account the first time that you add an object - * encrypted with SSE-KMS to a bucket. By default, Amazon S3 uses this KMS key for - * SSE-KMS. For more information, see PUT - * Bucket encryption in the Amazon S3 API Reference.

        If - * you're specifying a customer managed KMS key, we recommend using a fully - * qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the - * key within the requester’s account. This behavior can result in data that's - * encrypted with a KMS key that belongs to the requester, and not the bucket - * owner.

        See Also:

        PutBucketEncryption.

        + *
        • General purpose buckets - If you don't specify a + * customer managed key at configuration, Amazon S3 automatically creates an Amazon + * Web Services KMS key (aws/s3) in your Amazon Web Services account + * the first time that you add an object encrypted with SSE-KMS to a bucket. By + * default, Amazon S3 uses this KMS key for SSE-KMS.

        • + * Directory buckets - Your SSE-KMS configuration can only support 1 customer + * managed key per directory bucket for the lifetime of the bucket. Amazon + * Web Services managed key (aws/s3) isn't supported.

        • + *
        • Directory buckets - For directory buckets, there are only two + * supported options for server-side encryption: SSE-S3 and SSE-KMS.

        • + *

        See Also:

        AWS * API Reference

        */ @@ -54,6 +57,9 @@ namespace Model ///@{ /** *

        Server-side encryption algorithm to use for the default encryption.

        + *

        For directory buckets, there are only two supported values for + * server-side encryption: AES256 and aws:kms.

        + * */ inline const ServerSideEncryption& GetSSEAlgorithm() const{ return m_sSEAlgorithm; } inline bool SSEAlgorithmHasBeenSet() const { return m_sSEAlgorithmHasBeenSet; } @@ -65,21 +71,34 @@ namespace Model ///@{ /** - *

        Amazon Web Services Key Management Service (KMS) customer Amazon Web Services - * KMS key ID to use for the default encryption. This parameter is allowed if and - * only if SSEAlgorithm is set to aws:kms or - * aws:kms:dsse.

        You can specify the key ID, key alias, or the - * Amazon Resource Name (ARN) of the KMS key.

        • Key ID: + *

          Amazon Web Services Key Management Service (KMS) customer managed key ID to + * use for the default encryption.

          • General purpose + * buckets - This parameter is allowed if and only if SSEAlgorithm + * is set to aws:kms or aws:kms:dsse.

          • + * Directory buckets - This parameter is allowed if and only if + * SSEAlgorithm is set to aws:kms.

          + *

          You can specify the key ID, key alias, or the Amazon Resource Name + * (ARN) of the KMS key.

          • Key ID: * 1234abcd-12ab-34cd-56ef-1234567890ab

          • Key ARN: * arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab *

          • Key Alias: alias/alias-name

          - *

          If you use a key ID, you can run into a LogDestination undeliverable error - * when creating a VPC flow log.

          If you are using encryption with - * cross-account or Amazon Web Services service operations you must use a fully - * qualified KMS key ARN. For more information, see If you are using encryption with cross-account or Amazon Web Services service + * operations, you must use a fully qualified KMS key ARN. For more information, + * see Using - * encryption for cross-account operations.

          Amazon S3 only - * supports symmetric encryption KMS keys. For more information, see .

          Amazon S3 only supports symmetric encryption + * KMS keys. For more information, see Asymmetric * keys in Amazon Web Services KMS in the Amazon Web Services Key Management * Service Developer Guide.

          diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/ServerSideEncryptionRule.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/ServerSideEncryptionRule.h index 3979fde5854..4f99b5dd669 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/ServerSideEncryptionRule.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/ServerSideEncryptionRule.h @@ -23,12 +23,17 @@ namespace Model { /** - *

          Specifies the default server-side encryption configuration.

          If - * you're specifying a customer managed KMS key, we recommend using a fully - * qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the - * key within the requester’s account. This behavior can result in data that's - * encrypted with a KMS key that belongs to the requester, and not the bucket - * owner.

          See Also:

          Specifies the default server-side encryption configuration.

          See Also:

          AWS * API Reference

          */ @@ -61,10 +66,25 @@ namespace Model *

          Specifies whether Amazon S3 should use an S3 Bucket Key with server-side * encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects * are not affected. Setting the BucketKeyEnabled element to - * true causes Amazon S3 to use an S3 Bucket Key. By default, S3 - * Bucket Key is not enabled.

          For more information, see true causes Amazon S3 to use an S3 Bucket Key.

          */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline bool BucketKeyEnabledHasBeenSet() const { return m_bucketKeyEnabledHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/SessionCredentials.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/SessionCredentials.h index 8901145f279..8a05a2153e2 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/SessionCredentials.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/SessionCredentials.h @@ -26,7 +26,7 @@ namespace Model /** *

          The established temporary security credentials of the session.

          * Directory buckets - These session credentials are only supported for the - * authentication and authorization of Zonal endpoint APIs on directory + * authentication and authorization of Zonal endpoint API operations on directory * buckets.

          See Also:

          AWS * API Reference

          diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/UploadPartCopyResult.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/UploadPartCopyResult.h index fd77766d127..931adfe2697 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/UploadPartCopyResult.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/UploadPartCopyResult.h @@ -64,9 +64,7 @@ namespace Model ///@{ /** *

          The server-side encryption algorithm used when you store this object in - * Amazon S3 (for example, AES256, aws:kms).

          - *

          For directory buckets, only server-side encryption with Amazon S3 managed - * keys (SSE-S3) (AES256) is supported.

          + * Amazon S3 (for example, AES256, aws:kms).

          */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } @@ -109,9 +107,8 @@ namespace Model ///@{ /** - *

          If present, indicates the ID of the Key Management Service (KMS) symmetric - * encryption customer managed key that was used for the object.

          This - * functionality is not supported for directory buckets.

          + *

          If present, indicates the ID of the KMS key that was used for object + * encryption.

          */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } @@ -125,8 +122,7 @@ namespace Model ///@{ /** *

          Indicates whether the multipart upload uses an S3 Bucket Key for server-side - * encryption with Key Management Service (KMS) keys (SSE-KMS).

          This - * functionality is not supported for directory buckets.

          + * encryption with Key Management Service (KMS) keys (SSE-KMS).

          */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/UploadPartResult.h b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/UploadPartResult.h index 0978e057f88..ec4fecea18e 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/UploadPartResult.h +++ b/generated/src/aws-cpp-sdk-s3-crt/include/aws/s3-crt/model/UploadPartResult.h @@ -37,9 +37,7 @@ namespace Model ///@{ /** *

          The server-side encryption algorithm used when you store this object in - * Amazon S3 (for example, AES256, aws:kms).

          - *

          For directory buckets, only server-side encryption with Amazon S3 managed - * keys (SSE-S3) (AES256) is supported.

          + * Amazon S3 (for example, AES256, aws:kms).

          */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } @@ -175,9 +173,8 @@ namespace Model ///@{ /** - *

          If present, indicates the ID of the Key Management Service (KMS) symmetric - * encryption customer managed key that was used for the object.

          This - * functionality is not supported for directory buckets.

          + *

          If present, indicates the ID of the KMS key that was used for object + * encryption.

          */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } @@ -191,8 +188,7 @@ namespace Model ///@{ /** *

          Indicates whether the multipart upload uses an S3 Bucket Key for server-side - * encryption with Key Management Service (KMS) keys (SSE-KMS).

          This - * functionality is not supported for directory buckets.

          + * encryption with Key Management Service (KMS) keys (SSE-KMS).

          */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/source/model/CreateSessionRequest.cpp b/generated/src/aws-cpp-sdk-s3-crt/source/model/CreateSessionRequest.cpp index b3ac44e270a..f8307dfc5fc 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/source/model/CreateSessionRequest.cpp +++ b/generated/src/aws-cpp-sdk-s3-crt/source/model/CreateSessionRequest.cpp @@ -21,6 +21,12 @@ CreateSessionRequest::CreateSessionRequest() : m_sessionMode(SessionMode::NOT_SET), m_sessionModeHasBeenSet(false), m_bucketHasBeenSet(false), + m_serverSideEncryption(ServerSideEncryption::NOT_SET), + m_serverSideEncryptionHasBeenSet(false), + m_sSEKMSKeyIdHasBeenSet(false), + m_sSEKMSEncryptionContextHasBeenSet(false), + m_bucketKeyEnabled(false), + m_bucketKeyEnabledHasBeenSet(false), m_customizedAccessLogTagHasBeenSet(false) { } @@ -80,6 +86,32 @@ Aws::Http::HeaderValueCollection CreateSessionRequest::GetRequestSpecificHeaders headers.emplace("x-amz-create-session-mode", SessionModeMapper::GetNameForSessionMode(m_sessionMode)); } + if(m_serverSideEncryptionHasBeenSet && m_serverSideEncryption != ServerSideEncryption::NOT_SET) + { + headers.emplace("x-amz-server-side-encryption", ServerSideEncryptionMapper::GetNameForServerSideEncryption(m_serverSideEncryption)); + } + + if(m_sSEKMSKeyIdHasBeenSet) + { + ss << m_sSEKMSKeyId; + headers.emplace("x-amz-server-side-encryption-aws-kms-key-id", ss.str()); + ss.str(""); + } + + if(m_sSEKMSEncryptionContextHasBeenSet) + { + ss << m_sSEKMSEncryptionContext; + headers.emplace("x-amz-server-side-encryption-context", ss.str()); + ss.str(""); + } + + if(m_bucketKeyEnabledHasBeenSet) + { + ss << std::boolalpha << m_bucketKeyEnabled; + headers.emplace("x-amz-server-side-encryption-bucket-key-enabled", ss.str()); + ss.str(""); + } + return headers; } diff --git a/generated/src/aws-cpp-sdk-s3-crt/source/model/CreateSessionResult.cpp b/generated/src/aws-cpp-sdk-s3-crt/source/model/CreateSessionResult.cpp index 69acbf5f679..7380455dfa3 100644 --- a/generated/src/aws-cpp-sdk-s3-crt/source/model/CreateSessionResult.cpp +++ b/generated/src/aws-cpp-sdk-s3-crt/source/model/CreateSessionResult.cpp @@ -16,11 +16,14 @@ using namespace Aws::Utils::Xml; using namespace Aws::Utils; using namespace Aws; -CreateSessionResult::CreateSessionResult() +CreateSessionResult::CreateSessionResult() : + m_serverSideEncryption(ServerSideEncryption::NOT_SET), + m_bucketKeyEnabled(false) { } CreateSessionResult::CreateSessionResult(const Aws::AmazonWebServiceResult& result) + : CreateSessionResult() { *this = result; } @@ -40,6 +43,30 @@ CreateSessionResult& CreateSessionResult::operator =(const Aws::AmazonWebService } const auto& headers = result.GetHeaderValueCollection(); + const auto& serverSideEncryptionIter = headers.find("x-amz-server-side-encryption"); + if(serverSideEncryptionIter != headers.end()) + { + m_serverSideEncryption = ServerSideEncryptionMapper::GetServerSideEncryptionForName(serverSideEncryptionIter->second); + } + + const auto& sSEKMSKeyIdIter = headers.find("x-amz-server-side-encryption-aws-kms-key-id"); + if(sSEKMSKeyIdIter != headers.end()) + { + m_sSEKMSKeyId = sSEKMSKeyIdIter->second; + } + + const auto& sSEKMSEncryptionContextIter = headers.find("x-amz-server-side-encryption-context"); + if(sSEKMSEncryptionContextIter != headers.end()) + { + m_sSEKMSEncryptionContext = sSEKMSEncryptionContextIter->second; + } + + const auto& bucketKeyEnabledIter = headers.find("x-amz-server-side-encryption-bucket-key-enabled"); + if(bucketKeyEnabledIter != headers.end()) + { + m_bucketKeyEnabled = StringUtils::ConvertToBool(bucketKeyEnabledIter->second.c_str()); + } + const auto& requestIdIter = headers.find("x-amz-request-id"); if(requestIdIter != headers.end()) { diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/S3Client.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/S3Client.h index 37540b18563..8bd48ec3ee3 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/S3Client.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/S3Client.h @@ -270,9 +270,15 @@ namespace Aws * permissions - For information about permissions required to use the * multipart upload API, see Multipart - * Upload and Permissions in the Amazon S3 User Guide.

        • - *

          Directory bucket permissions - To grant access to this API operation - * on a directory bucket, we recommend that you use the in the Amazon S3 User Guide.

          If you + * provide an additional + * checksum value in your MultipartUpload requests and the object + * is encrypted with Key Management Service, you must have permission to use the + * kms:Decrypt action for the CompleteMultipartUpload + * request to succeed.

        • Directory bucket permissions - To + * grant access to this API operation on a directory bucket, we recommend that you + * use the * CreateSession API operation for session-based authorization. * Specifically, you grant the s3express:CreateSession permission to @@ -285,17 +291,15 @@ namespace Aws * automatically to avoid service interruptions when a session expires. For more * information about authorization, see - * CreateSession .

        • If you provide an additional - * checksum value in your MultipartUpload requests and the object - * is encrypted with Key Management Service, you must have permission to use the - * kms:Decrypt action for the CompleteMultipartUpload - * request to succeed.

    Special errors
    • - *

      Error Code: EntityTooSmall

      • Description: Your - * proposed upload is smaller than the minimum allowed object size. Each part must - * be at least 5 MB in size, except the last part.

      • HTTP Status - * Code: 400 Bad Request

    • Error Code: - * InvalidPart

      • Description: One or more of the + * CreateSession .

        If the object is encrypted with SSE-KMS, + * you must also have the kms:GenerateDataKey and + * kms:Decrypt permissions in IAM identity-based policies and KMS key + * policies for the KMS key.

    Special errors
    + *
    • Error Code: EntityTooSmall

      • + *

        Description: Your proposed upload is smaller than the minimum allowed object + * size. Each part must be at least 5 MB in size, except the last part.

      • + *
      • HTTP Status Code: 400 Bad Request

    • Error + * Code: InvalidPart

      • Description: One or more of the * specified parts could not be found. The part might not have been uploaded, or * the specified ETag might not have matched the uploaded part's ETag.

      • *
      • HTTP Status Code: 400 Bad Request

    • Error @@ -411,8 +415,11 @@ namespace Aws * s3express:CreateSession permission in the Action * element of a policy to write the object to the destination. The * s3express:SessionMode condition key can't be set to - * ReadOnly on the copy destination bucket.

    For - * example policies, see ReadOnly on the copy destination bucket.

    If the + * object is encrypted with SSE-KMS, you must also have the + * kms:GenerateDataKey and kms:Decrypt permissions in IAM + * identity-based policies and KMS key policies for the KMS key.

    For example + * policies, see Example * bucket policies for S3 Express One Zone and Amazon @@ -742,10 +749,54 @@ namespace Aws * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html"> * Protecting data using server-side encryption with customer-provided encryption * keys (SSE-C) in the Amazon S3 User Guide.

  • - *

    Directory buckets -For directory buckets, only server-side encryption - * with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

    - *
  • HTTP Host header syntax

    Directory buckets - * - The HTTP Host header syntax is + *

    Directory buckets - For directory buckets, there are only two + * supported options for server-side encryption: server-side encryption with Amazon + * S3 managed keys (SSE-S3) (AES256) and server-side encryption with + * KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's + * default encryption uses the desired encryption configuration and you don't + * override the bucket default encryption in your CreateSession + * requests or PUT object requests. Then, new objects are + * automatically encrypted with the desired encryption settings. For more + * information, see Protecting + * data with server-side encryption in the Amazon S3 User Guide. For + * more information about the encryption overriding behaviors in directory buckets, + * see Specifying + * server-side encryption with KMS for new object uploads.

    In the Zonal + * endpoint API calls (except CopyObject + * and UploadPartCopy) + * using the REST API, the encryption request headers must match the encryption + * settings that are specified in the CreateSession request. You can't + * override the values of the encryption settings + * (x-amz-server-side-encryption, + * x-amz-server-side-encryption-aws-kms-key-id, + * x-amz-server-side-encryption-context, and + * x-amz-server-side-encryption-bucket-key-enabled) that are specified + * in the CreateSession request. You don't need to explicitly specify + * these encryption settings values in Zonal endpoint API calls, and Amazon S3 will + * use the encryption settings values from the CreateSession request + * to protect new objects in the directory bucket.

    When you use the + * CLI or the Amazon Web Services SDKs, for CreateSession, the session + * token refreshes automatically to avoid service interruptions when a session + * expires. The CLI or the Amazon Web Services SDKs use the bucket's default + * encryption configuration for the CreateSession request. It's not + * supported to override the encryption settings values in the + * CreateSession request. So in the Zonal endpoint API calls (except + * CopyObject + * and UploadPartCopy), + * the encryption request headers must match the default encryption configuration + * of the directory bucket.

    For directory buckets, when you + * perform a CreateMultipartUpload operation and an + * UploadPartCopy operation, the request headers you provide in the + * CreateMultipartUpload request must match the default encryption + * configuration of the destination bucket.

    HTTP + * Host header syntax

    Directory buckets - The HTTP Host + * header syntax is * Bucket_name.s3express-az_id.region.amazonaws.com.

    *

    The following operations are related to * CreateMultipartUpload:

    • Creates a session that establishes temporary security credentials to support - * fast authentication and authorization for the Zonal endpoint APIs on directory - * buckets. For more information about Zonal endpoint APIs that include the - * Availability Zone in the request endpoint, see S3 * Express One Zone APIs in the Amazon S3 User Guide.

      To make * Zonal endpoint API requests on a directory bucket, use the @@ -796,13 +847,13 @@ namespace Aws * CreateSession API request on the bucket, which returns temporary * security credentials that include the access key ID, secret access key, session * token, and expiration. These credentials have associated permissions to access - * the Zonal endpoint APIs. After the session is created, you don’t need to use - * other policies to grant permissions to each Zonal endpoint API individually. - * Instead, in your Zonal endpoint API requests, you sign your requests by applying - * the temporary security credentials of the session to the request headers and - * following the SigV4 protocol for authentication. You also apply the session - * token to the x-amz-s3session-token request header for - * authorization. Temporary security credentials are scoped to the bucket and + * the Zonal endpoint API operations. After the session is created, you don’t need + * to use other policies to grant permissions to each Zonal endpoint API + * individually. Instead, in your Zonal endpoint API requests, you sign your + * requests by applying the temporary security credentials of the session to the + * request headers and following the SigV4 protocol for authentication. You also + * apply the session token to the x-amz-s3session-token request header + * for authorization. Temporary security credentials are scoped to the bucket and * expire after 5 minutes. After the expiration time, any calls that you make with * those credentials will fail. You must use IAM credentials again to make a * CreateSession API request that generates a new set of temporary @@ -820,19 +871,19 @@ namespace Aws * Path-style requests are not supported. For more information, see Regional * and Zonal endpoints in the Amazon S3 User Guide.

    • - * CopyObject API operation - Unlike other Zonal endpoint - * APIs, the CopyObject API operation doesn't use the temporary + * CopyObject API operation - Unlike other Zonal endpoint API + * operations, the CopyObject API operation doesn't use the temporary * security credentials returned from the CreateSession API operation * for authentication and authorization. For information about authentication and * authorization of the CopyObject API operation on directory buckets, * see CopyObject.

      *
    • HeadBucket API operation - Unlike other - * Zonal endpoint APIs, the HeadBucket API operation doesn't use the - * temporary security credentials returned from the CreateSession API - * operation for authentication and authorization. For information about - * authentication and authorization of the HeadBucket API operation on - * directory buckets, see HeadBucket API operation doesn't + * use the temporary security credentials returned from the + * CreateSession API operation for authentication and authorization. + * For information about authentication and authorization of the + * HeadBucket API operation on directory buckets, see HeadBucket.

      *
    Permissions

    To obtain temporary * security credentials, you must create a bucket policy or an IAM identity-based @@ -848,10 +899,75 @@ namespace Aws * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-identity-policies.html">Amazon * Web Services Identity and Access Management (IAM) identity-based policies for S3 * Express One Zone in the Amazon S3 User Guide.

    To grant - * cross-account access to Zonal endpoint APIs, the bucket policy should also grant - * both accounts the s3express:CreateSession permission.

    - *
    HTTP Host header syntax

    Directory buckets - The HTTP - * Host header syntax is + * cross-account access to Zonal endpoint API operations, the bucket policy should + * also grant both accounts the s3express:CreateSession + * permission.

    If you want to encrypt objects with SSE-KMS, you must also + * have the kms:GenerateDataKey and the kms:Decrypt + * permissions in IAM identity-based policies and KMS key policies for the target + * KMS key.

    Encryption

    For directory buckets, there are + * only two supported options for server-side encryption: server-side encryption + * with Amazon S3 managed keys (SSE-S3) (AES256) and server-side + * encryption with KMS keys (SSE-KMS) (aws:kms). We recommend that the + * bucket's default encryption uses the desired encryption configuration and you + * don't override the bucket default encryption in your CreateSession + * requests or PUT object requests. Then, new objects are + * automatically encrypted with the desired encryption settings. For more + * information, see Protecting + * data with server-side encryption in the Amazon S3 User Guide. For + * more information about the encryption overriding behaviors in directory buckets, + * see Specifying + * server-side encryption with KMS for new object uploads.

    For Zonal + * endpoint (object-level) API operations except CopyObject + * and UploadPartCopy, + * you authenticate and authorize requests through CreateSession + * for low latency. To encrypt new objects in a directory bucket with SSE-KMS, you + * must specify SSE-KMS as the directory bucket's default encryption configuration + * with a KMS key (specifically, a customer + * managed key). Then, when a session is created for Zonal endpoint API + * operations, new objects are automatically encrypted and decrypted with SSE-KMS + * and S3 Bucket Keys during the session.

    Only 1 customer + * managed key is supported per directory bucket for the lifetime of the + * bucket. Amazon + * Web Services managed key (aws/s3) isn't supported. After you + * specify SSE-KMS as your bucket's default encryption configuration with a + * customer managed key, you can't change the customer managed key for the bucket's + * SSE-KMS configuration.

    In the Zonal endpoint API calls (except + * CopyObject + * and UploadPartCopy) + * using the REST API, you can't override the values of the encryption settings + * (x-amz-server-side-encryption, + * x-amz-server-side-encryption-aws-kms-key-id, + * x-amz-server-side-encryption-context, and + * x-amz-server-side-encryption-bucket-key-enabled) from the + * CreateSession request. You don't need to explicitly specify these + * encryption settings values in Zonal endpoint API calls, and Amazon S3 will use + * the encryption settings values from the CreateSession request to + * protect new objects in the directory bucket.

    When you use the CLI + * or the Amazon Web Services SDKs, for CreateSession, the session + * token refreshes automatically to avoid service interruptions when a session + * expires. The CLI or the Amazon Web Services SDKs use the bucket's default + * encryption configuration for the CreateSession request. It's not + * supported to override the encryption settings values in the + * CreateSession request. Also, in the Zonal endpoint API calls + * (except CopyObject + * and UploadPartCopy), + * it's not supported to override the values of the encryption settings from the + * CreateSession request.

    HTTP Host header + * syntax

    Directory buckets - The HTTP Host header syntax is + * * Bucket_name.s3express-az_id.region.amazonaws.com.

    *

    See Also:

    AWS @@ -1015,21 +1131,39 @@ namespace Aws } /** - *

    This operation is not supported by directory buckets.

    *

    This implementation of the DELETE action resets the default encryption for - * the bucket as server-side encryption with Amazon S3 managed keys (SSE-S3). For - * information about the bucket default encryption feature, see + *

    Permissions
    • General purpose + * bucket permissions - The s3:PutEncryptionConfiguration + * permission is required in a policy. The bucket owner has this permission by + * default. The bucket owner can grant this permission to others. For more + * information about permissions, see Permissions - * Related to Bucket Subresource Operations and and Managing - * Access Permissions to your Amazon S3 Resources in the Amazon S3 User - * Guide.

      The following operations are related to + * Access Permissions to Your Amazon S3 Resources.

    • + * Directory bucket permissions - To grant access to this API operation, you + * must have the s3express:PutEncryptionConfiguration permission in an + * IAM identity-based policy instead of a bucket policy. Cross-account access to + * this API operation isn't supported. This operation can only be performed by the + * Amazon Web Services account that owns the resource. For more information about + * directory bucket policies and permissions, see Amazon + * Web Services Identity and Access Management (IAM) for S3 Express One Zone in + * the Amazon S3 User Guide.

    HTTP Host header + * syntax

    Directory buckets - The HTTP Host header syntax is + * s3express-control.region.amazonaws.com.

    + *

    The following operations are related to * DeleteBucketEncryption:

    Storage classes
    + *

    If the object you are retrieving is stored in the S3 Glacier Flexible * Retrieval storage class, the S3 Glacier Deep Archive storage class, the S3 * Intelligent-Tiering Archive Access tier, or the S3 Intelligent-Tiering Deep * Archive Access tier, before you can retrieve the object you must first restore a @@ -2744,9 +2900,14 @@ namespace Aws * server-side encryption with Amazon Web Services KMS keys (DSSE-KMS). If you * include the header in your GetObject requests for the object that * uses these types of keys, you’ll get an HTTP 400 Bad Request - * error.

    Overriding response header values through the request
    - *

    There are times when you want to override certain response header values - * of a GetObject response. For example, you might override the + * error.

    Directory buckets - For directory buckets, there are only + * two supported options for server-side encryption: SSE-S3 and SSE-KMS. SSE-C + * isn't supported. For more information, see Protecting + * data with server-side encryption in the Amazon S3 User Guide.

    + *
    Overriding response header values through the request
    + *

    There are times when you want to override certain response header values of a + * GetObject response. For example, you might override the * Content-Disposition response header value through your * GetObject request.

    You can override values for a set of * response headers. These modified response header values are included only in a @@ -2855,9 +3016,9 @@ namespace Aws * and Zonal endpoints in the Amazon S3 User Guide.

    *
    Permissions
    • General purpose bucket * permissions - To use GetObjectAttributes, you must have READ - * access to the object. The permissions that you need to use this operation with - * depend on whether the bucket is versioned. If the bucket is versioned, you need - * both the s3:GetObjectVersion and + * access to the object. The permissions that you need to use this operation depend + * on whether the bucket is versioned. If the bucket is versioned, you need both + * the s3:GetObjectVersion and * s3:GetObjectVersionAttributes permissions for this operation. If * the bucket is not versioned, you need the s3:GetObject and * s3:GetObjectAttributes permissions. For more information, see - * CreateSession .

    Encryption
    - *

    Encryption request headers, like - * x-amz-server-side-encryption, should not be sent for - * HEAD requests if your object uses server-side encryption with Key - * Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with - * Amazon Web Services KMS keys (DSSE-KMS), or server-side encryption with Amazon - * S3 managed encryption keys (SSE-S3). The + * CreateSession .

    If the object is encrypted with SSE-KMS, + * you must also have the kms:GenerateDataKey and + * kms:Decrypt permissions in IAM identity-based policies and KMS key + * policies for the KMS key.

    Encryption
    + *

    Encryption request headers, like x-amz-server-side-encryption, + * should not be sent for HEAD requests if your object uses + * server-side encryption with Key Management Service (KMS) keys (SSE-KMS), + * dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), + * or server-side encryption with Amazon S3 managed encryption keys (SSE-S3). The * x-amz-server-side-encryption header is used when you * PUT an object to S3 and want to specify the encryption method. If * you include this header in a GET request for an object that uses @@ -2908,8 +3071,20 @@ namespace Aws * href="https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html">Server-Side * Encryption (Using Customer-Provided Encryption Keys) in the Amazon S3 * User Guide.

    Directory bucket permissions - For - * directory buckets, only server-side encryption with Amazon S3 managed keys - * (SSE-S3) (AES256) is supported.

    + * directory buckets, there are only two supported options for server-side + * encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) + * (AES256) and server-side encryption with KMS keys (SSE-KMS) + * (aws:kms). We recommend that the bucket's default encryption uses + * the desired encryption configuration and you don't override the bucket default + * encryption in your CreateSession requests or PUT + * object requests. Then, new objects are automatically encrypted with the desired + * encryption settings. For more information, see Protecting + * data with server-side encryption in the Amazon S3 User Guide. For + * more information about the encryption overriding behaviors in directory buckets, + * see Specifying + * server-side encryption with KMS for new object uploads.

    *
    Versioning

    Directory buckets - S3 Versioning isn't * enabled and supported for directory buckets. For this API operation, only the * null value of the version ID is supported by directory buckets. You @@ -3311,8 +3486,13 @@ namespace Aws * automatically to avoid service interruptions when a session expires. For more * information about authorization, see - * CreateSession .

    Encryption
    - *

    Encryption request headers, like + * CreateSession .

    If you enable + * x-amz-checksum-mode in the request and the object is encrypted with + * Amazon Web Services Key Management Service (Amazon Web Services KMS), you must + * also have the kms:GenerateDataKey and kms:Decrypt + * permissions in IAM identity-based policies and KMS key policies for the KMS key + * to retrieve the checksum of the object.

    + *
    Encryption

    Encryption request headers, like * x-amz-server-side-encryption, should not be sent for * HEAD requests if your object uses server-side encryption with Key * Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with @@ -3334,22 +3514,24 @@ namespace Aws *

    For more information about SSE-C, see Server-Side * Encryption (Using Customer-Provided Encryption Keys) in the Amazon S3 - * User Guide.

    Directory bucket permissions - For - * directory buckets, only server-side encryption with Amazon S3 managed keys - * (SSE-S3) (AES256) is supported.

    - *
    Versioning
    • If the current version of the object is a - * delete marker, Amazon S3 behaves as if the object was deleted and includes - * x-amz-delete-marker: true in the response.

    • If the - * specified version is a delete marker, the response returns a 405 Method - * Not Allowed error and the Last-Modified: timestamp response - * header.

    • Directory buckets - Delete - * marker is not supported by directory buckets.

    • Directory - * buckets - S3 Versioning isn't enabled and supported for directory buckets. - * For this API operation, only the null value of the version ID is - * supported by directory buckets. You can only specify null to the - * versionId query parameter in the request.

    - *
    HTTP Host header syntax

    Directory buckets - The - * HTTP Host header syntax is + * User Guide.

    Directory bucket - For directory buckets, + * there are only two supported options for server-side encryption: SSE-S3 and + * SSE-KMS. SSE-C isn't supported. For more information, see Protecting + * data with server-side encryption in the Amazon S3 User Guide.

    + *
    Versioning
    • If the current version of + * the object is a delete marker, Amazon S3 behaves as if the object was deleted + * and includes x-amz-delete-marker: true in the response.

    • + *
    • If the specified version is a delete marker, the response returns a + * 405 Method Not Allowed error and the Last-Modified: + * timestamp response header.

    • + * Directory buckets - Delete marker is not supported by directory + * buckets.

    • Directory buckets - S3 Versioning isn't + * enabled and supported for directory buckets. For this API operation, only the + * null value of the version ID is supported by directory buckets. You + * can only specify null to the versionId query parameter + * in the request.

    HTTP Host header syntax
    + *

    Directory buckets - The HTTP Host header syntax is * Bucket_name.s3express-az_id.region.amazonaws.com.

    *

    For directory buckets, you must make requests for this API operation * to the Zonal endpoint. These endpoints support virtual-hosted-style requests in @@ -4350,37 +4532,103 @@ namespace Aws } /** - *

    This operation is not supported by directory buckets.

    - *

    This action uses the encryption subresource to configure default - * encryption and Amazon S3 Bucket Keys for an existing bucket.

    By default, - * all buckets have a default encryption configuration that uses server-side - * encryption with Amazon S3 managed keys (SSE-S3). You can optionally configure - * default encryption for a bucket by using server-side encryption with Key - * Management Service (KMS) keys (SSE-KMS) or dual-layer server-side encryption + *

    This operation configures default encryption and Amazon S3 Bucket Keys for an + * existing bucket.

    Directory buckets - For directory + * buckets, you must make requests for this API operation to the Regional endpoint. + * These endpoints support path-style requests in the format + * https://s3express-control.region_code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. For more information, + * see Regional + * and Zonal endpoints in the Amazon S3 User Guide.

    By + * default, all buckets have a default encryption configuration that uses + * server-side encryption with Amazon S3 managed keys (SSE-S3).

    + *

    If you're specifying a customer managed KMS key, we recommend using a fully + * qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the + * key within the requester’s account. This behavior can result in data that's + * encrypted with a KMS key that belongs to the requester, and not the bucket + * owner.

    Also, this action requires Amazon Web Services Signature Version + * 4. For more information, see * Authenticating Requests (Amazon Web Services Signature Version 4).

    - *

    To use this operation, you must have permission to perform the - * s3:PutEncryptionConfiguration action. The bucket owner has this - * permission by default. The bucket owner can grant this permission to others. For - * more information about permissions, see

    Permissions
    HTTP Host + * header syntax

    Directory buckets - The HTTP Host header + * syntax is s3express-control.region.amazonaws.com.

    + *

    The following operations are related to * PutBucketEncryption:

    Data integrity with + * CreateSession .

    If the object is encrypted with SSE-KMS, + * you must also have the kms:GenerateDataKey and + * kms:Decrypt permissions in IAM identity-based policies and KMS key + * policies for the KMS key.

    Data integrity with * Content-MD5
    • General purpose bucket - To ensure * that data is not corrupted traversing the network, use the * Content-MD5 header. When you use this header, Amazon S3 checks the @@ -5977,12 +6228,15 @@ namespace Aws * automatically to avoid service interruptions when a session expires. For more * information about authorization, see - * CreateSession .

    Data integrity
    - *

    General purpose bucket - To ensure that data is not corrupted - * traversing the network, specify the Content-MD5 header in the - * upload part request. Amazon S3 checks the part data against the provided MD5 - * value. If they do not match, Amazon S3 returns an error. If the upload request - * is signed with Signature Version 4, then Amazon Web Services S3 uses the + * CreateSession .

    If the object is encrypted with SSE-KMS, + * you must also have the kms:GenerateDataKey and + * kms:Decrypt permissions in IAM identity-based policies and KMS key + * policies for the KMS key.

    Data integrity

    + * General purpose bucket - To ensure that data is not corrupted traversing + * the network, specify the Content-MD5 header in the upload part + * request. Amazon S3 checks the part data against the provided MD5 value. If they + * do not match, Amazon S3 returns an error. If the upload request is signed with + * Signature Version 4, then Amazon Web Services S3 uses the * x-amz-content-sha256 header as a checksum instead of * Content-MD5. For more information see Authenticating @@ -6012,16 +6266,18 @@ namespace Aws * identical encryption information in each part upload using the following request * headers.

    • x-amz-server-side-encryption-customer-algorithm

      *
    • x-amz-server-side-encryption-customer-key

    • - *

      x-amz-server-side-encryption-customer-key-MD5

  • - * Directory bucket - For directory buckets, only server-side encryption - * with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

    - *
  • For more information, see x-amz-server-side-encryption-customer-key-MD5

    For more + * information, see Using - * Server-Side Encryption in the Amazon S3 User Guide.

    - *
    Special errors
    • Error Code: NoSuchUpload - *

      • Description: The specified multipart upload does not exist. - * The upload ID might be invalid, or the multipart upload might have been aborted - * or completed.

      • HTTP Status Code: 404 Not Found

      • + * Server-Side Encryption in the Amazon S3 User Guide.

      • + *

        Directory buckets - For directory buckets, there are only two + * supported options for server-side encryption: server-side encryption with Amazon + * S3 managed keys (SSE-S3) (AES256) and server-side encryption with + * KMS keys (SSE-KMS) (aws:kms).

    Special + * errors
    • Error Code: NoSuchUpload

        + *
      • Description: The specified multipart upload does not exist. The upload + * ID might be invalid, or the multipart upload might have been aborted or + * completed.

      • HTTP Status Code: 404 Not Found

      • *

        SOAP Fault Code Prefix: Client

    HTTP * Host header syntax

    Directory buckets - The HTTP Host * header syntax is @@ -6142,8 +6398,11 @@ namespace Aws * bucket, you must have the s3express:CreateSession * permission in the Action element of a policy to write the object to * the destination. The s3express:SessionMode condition key cannot be - * set to ReadOnly on the copy destination.

    For - * example policies, see ReadOnly on the copy destination.

    If the + * object is encrypted with SSE-KMS, you must also have the + * kms:GenerateDataKey and kms:Decrypt permissions in IAM + * identity-based policies and KMS key policies for the KMS key.

    For example + * policies, see Example * bucket policies for S3 Express One Zone and Amazon @@ -6155,12 +6414,27 @@ namespace Aws * href="https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html">CopyObject * and UploadPart. - *

  • Directory buckets - For directory buckets, only - * server-side encryption with Amazon S3 managed keys (SSE-S3) - * (AES256) is supported.

  • Special - * errors
    • Error Code: NoSuchUpload

        - *
      • Description: The specified multipart upload does not exist. The upload - * ID might be invalid, or the multipart upload might have been aborted or + *

      • Directory buckets - For directory buckets, there are + * only two supported options for server-side encryption: server-side encryption + * with Amazon S3 managed keys (SSE-S3) (AES256) and server-side + * encryption with KMS keys (SSE-KMS) (aws:kms). For more information, + * see Protecting + * data with server-side encryption in the Amazon S3 User Guide.

        + *

        For directory buckets, when you perform a + * CreateMultipartUpload operation and an UploadPartCopy + * operation, the request headers you provide in the + * CreateMultipartUpload request must match the default encryption + * configuration of the destination bucket.

        S3 Bucket Keys aren't + * supported, when you copy SSE-KMS encrypted objects from general purpose buckets + * to directory buckets, from directory buckets to general purpose buckets, or + * between directory buckets, through UploadPartCopy. + * In this case, Amazon S3 makes a call to KMS every time a copy request is made + * for a KMS-encrypted object.

    Special errors
    + *
    • Error Code: NoSuchUpload

      • + *

        Description: The specified multipart upload does not exist. The upload ID + * might be invalid, or the multipart upload might have been aborted or * completed.

      • HTTP Status Code: 404 Not Found

      *
    • Error Code: InvalidRequest

      • *

        Description: The specified copy source is not supported as a byte-range copy diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CompleteMultipartUploadResult.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CompleteMultipartUploadResult.h index 87337c1c938..67473dcc080 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CompleteMultipartUploadResult.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CompleteMultipartUploadResult.h @@ -195,9 +195,7 @@ namespace Model ///@{ /** *

        The server-side encryption algorithm used when storing this object in Amazon - * S3 (for example, AES256, aws:kms).

        For - * directory buckets, only server-side encryption with Amazon S3 managed keys - * (SSE-S3) (AES256) is supported.

        + * S3 (for example, AES256, aws:kms).

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } @@ -223,9 +221,8 @@ namespace Model ///@{ /** - *

        If present, indicates the ID of the Key Management Service (KMS) symmetric - * encryption customer managed key that was used for the object.

        This - * functionality is not supported for directory buckets.

        + *

        If present, indicates the ID of the KMS key that was used for object + * encryption.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } @@ -239,8 +236,7 @@ namespace Model ///@{ /** *

        Indicates whether the multipart upload uses an S3 Bucket Key for server-side - * encryption with Key Management Service (KMS) keys (SSE-KMS).

        This - * functionality is not supported for directory buckets.

        + * encryption with Key Management Service (KMS) keys (SSE-KMS).

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectRequest.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectRequest.h index 407381f8d73..8d23e498d9e 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectRequest.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectRequest.h @@ -558,33 +558,66 @@ namespace Model ///@{ /** *

        The server-side encryption algorithm used when storing this object in Amazon - * S3 (for example, AES256, aws:kms, - * aws:kms:dsse). Unrecognized or unsupported values won’t write a - * destination object and will receive a 400 Bad Request response. - *

        Amazon S3 automatically encrypts all new objects that are copied to an - * S3 bucket. When copying an object, if you don't specify encryption information - * in your copy request, the encryption setting of the target object is set to the - * default encryption configuration of the destination bucket. By default, all - * buckets have a base level of encryption configuration that uses server-side - * encryption with Amazon S3 managed keys (SSE-S3). If the destination bucket has a - * default encryption configuration that uses server-side encryption with Key - * Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with - * Amazon Web Services KMS keys (DSSE-KMS), or server-side encryption with - * customer-provided encryption keys (SSE-C), Amazon S3 uses the corresponding KMS - * key, or a customer-provided key to encrypt the target object copy.

        When - * you perform a CopyObject operation, if you want to use a different - * type of encryption setting for the target object, you can specify appropriate + * S3. Unrecognized or unsupported values won’t write a destination object and will + * receive a 400 Bad Request response.

        Amazon S3 automatically + * encrypts all new objects that are copied to an S3 bucket. When copying an + * object, if you don't specify encryption information in your copy request, the + * encryption setting of the target object is set to the default encryption + * configuration of the destination bucket. By default, all buckets have a base + * level of encryption configuration that uses server-side encryption with Amazon + * S3 managed keys (SSE-S3). If the destination bucket has a different default + * encryption configuration, Amazon S3 uses the corresponding encryption key to + * encrypt the target object copy.

        With server-side encryption, Amazon S3 + * encrypts your data as it writes your data to disks in its data centers and + * decrypts the data when you access it. For more information about server-side + * encryption, see Using + * Server-Side Encryption in the Amazon S3 User Guide.

        + * General purpose buckets

        • For general purpose buckets, + * there are the following supported options for server-side encryption: + * server-side encryption with Key Management Service (KMS) keys (SSE-KMS), + * dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), + * and server-side encryption with customer-provided encryption keys (SSE-C). + * Amazon S3 uses the corresponding KMS key, or a customer-provided key to encrypt + * the target object copy.

        • When you perform a + * CopyObject operation, if you want to use a different type of + * encryption setting for the target object, you can specify appropriate * encryption-related headers to encrypt the target object with an Amazon S3 * managed key, a KMS key, or a customer-provided key. If the encryption setting in * your request is different from the default encryption configuration of the * destination bucket, the encryption setting in your request takes precedence. - *

          With server-side encryption, Amazon S3 encrypts your data as it writes - * your data to disks in its data centers and decrypts the data when you access it. - * For more information about server-side encryption, see Using - * Server-Side Encryption in the Amazon S3 User Guide.

          For - * directory buckets, only server-side encryption with Amazon S3 managed keys - * (SSE-S3) (AES256) is supported.

          + *

        Directory buckets

        • For directory + * buckets, there are only two supported options for server-side encryption: + * server-side encryption with Amazon S3 managed keys (SSE-S3) + * (AES256) and server-side encryption with KMS keys (SSE-KMS) + * (aws:kms). We recommend that the bucket's default encryption uses + * the desired encryption configuration and you don't override the bucket default + * encryption in your CreateSession requests or PUT + * object requests. Then, new objects are automatically encrypted with the desired + * encryption settings. For more information, see Protecting + * data with server-side encryption in the Amazon S3 User Guide. For + * more information about the encryption overriding behaviors in directory buckets, + * see Specifying + * server-side encryption with KMS for new object uploads.

        • To + * encrypt new object copies to a directory bucket with SSE-KMS, we recommend you + * specify SSE-KMS as the directory bucket's default encryption configuration with + * a KMS key (specifically, a customer + * managed key). Amazon + * Web Services managed key (aws/s3) isn't supported. Your SSE-KMS + * configuration can only support 1 customer + * managed key per directory bucket for the lifetime of the bucket. After you + * specify a customer managed key for SSE-KMS, you can't override the customer + * managed key for the bucket's SSE-KMS configuration. Then, when you perform a + * CopyObject operation and want to specify server-side encryption + * settings for new object copies with SSE-KMS in the encryption-related request + * headers, you must ensure the encryption key is the same customer managed key + * that you specified for the directory bucket's default encryption configuration. + *

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline bool ServerSideEncryptionHasBeenSet() const { return m_serverSideEncryptionHasBeenSet; } @@ -715,15 +748,24 @@ namespace Model ///@{ /** - *

        Specifies the KMS ID (Key ID, Key ARN, or Key Alias) to use for object + *

        Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object * encryption. All GET and PUT requests for an object protected by KMS will fail if * they're not made via SSL or using SigV4. For information about configuring any * of the officially supported Amazon Web Services SDKs and Amazon Web Services * CLI, see Specifying * the Signature Version in Request Authentication in the Amazon S3 User - * Guide.

        This functionality is not supported when the - * destination bucket is a directory bucket.

        + * Guide.

        Directory buckets - If you specify + * x-amz-server-side-encryption with aws:kms, you must + * specify the x-amz-server-side-encryption-aws-kms-key-id header + * with the ID (Key ID or Key ARN) of the KMS symmetric encryption customer managed + * key to use. Otherwise, you get an HTTP 400 Bad Request error. Only + * use the key ID or key ARN. The key alias format of the KMS key isn't supported. + * Your SSE-KMS configuration can only support 1 customer + * managed key per directory bucket for the lifetime of the bucket. Amazon + * Web Services managed key (aws/s3) isn't supported.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline bool SSEKMSKeyIdHasBeenSet() const { return m_sSEKMSKeyIdHasBeenSet; } @@ -737,12 +779,19 @@ namespace Model ///@{ /** - *

        Specifies the Amazon Web Services KMS Encryption Context to use for object - * encryption. The value of this header is a base64-encoded UTF-8 string holding - * JSON with the encryption context key-value pairs. This value must be explicitly - * added to specify encryption context for CopyObject requests.

        - *

        This functionality is not supported when the destination bucket is a - * directory bucket.

        + *

        Specifies the Amazon Web Services KMS Encryption Context as an additional + * encryption context to use for the destination object encryption. The value of + * this header is a base64-encoded UTF-8 string holding JSON with the encryption + * context key-value pairs.

        General purpose buckets - This value + * must be explicitly added to specify encryption context for + * CopyObject requests if you want an additional encryption context + * for your destination object. The additional encryption context of the source + * object won't be copied to the destination object. For more information, see Encryption + * context in the Amazon S3 User Guide.

        Directory buckets + * - You can optionally provide an explicit encryption context value. The value + * must match the default encryption context - the bucket Amazon Resource Name + * (ARN). An additional encryption context value is not supported.

        */ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; } inline bool SSEKMSEncryptionContextHasBeenSet() const { return m_sSEKMSEncryptionContextHasBeenSet; } @@ -764,9 +813,13 @@ namespace Model * a COPY action doesn’t affect bucket-level settings for S3 Bucket Key.

        For * more information, see Amazon S3 - * Bucket Keys in the Amazon S3 User Guide.

        This - * functionality is not supported when the destination bucket is a directory - * bucket.

        + * Bucket Keys in the Amazon S3 User Guide.

        Directory + * buckets - S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted + * objects from general purpose buckets to directory buckets, from directory + * buckets to general purpose buckets, or between directory buckets, through CopyObject. + * In this case, Amazon S3 makes a call to KMS every time a copy request is made + * for a KMS-encrypted object.

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline bool BucketKeyEnabledHasBeenSet() const { return m_bucketKeyEnabledHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectResult.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectResult.h index 496d6dbc728..a37b3b47819 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectResult.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CopyObjectResult.h @@ -83,9 +83,7 @@ namespace Model /** *

        The server-side encryption algorithm used when you store this object in * Amazon S3 (for example, AES256, aws:kms, - * aws:kms:dsse).

        For directory buckets, only - * server-side encryption with Amazon S3 managed keys (SSE-S3) - * (AES256) is supported.

        + * aws:kms:dsse).

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } @@ -128,9 +126,8 @@ namespace Model ///@{ /** - *

        If present, indicates the ID of the Key Management Service (KMS) symmetric - * encryption customer managed key that was used for the object.

        This - * functionality is not supported for directory buckets.

        + *

        If present, indicates the ID of the KMS key that was used for object + * encryption.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } @@ -145,8 +142,7 @@ namespace Model /** *

        If present, indicates the Amazon Web Services KMS Encryption Context to use * for object encryption. The value of this header is a base64-encoded UTF-8 string - * holding JSON with the encryption context key-value pairs.

        This - * functionality is not supported for directory buckets.

        + * holding JSON with the encryption context key-value pairs.

        */ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; } inline void SetSSEKMSEncryptionContext(const Aws::String& value) { m_sSEKMSEncryptionContext = value; } @@ -160,8 +156,7 @@ namespace Model ///@{ /** *

        Indicates whether the copied object uses an S3 Bucket Key for server-side - * encryption with Key Management Service (KMS) keys (SSE-KMS).

        This - * functionality is not supported for directory buckets.

        + * encryption with Key Management Service (KMS) keys (SSE-KMS).

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CreateMultipartUploadRequest.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CreateMultipartUploadRequest.h index d8317e092c4..ce4647833fc 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CreateMultipartUploadRequest.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CreateMultipartUploadRequest.h @@ -418,9 +418,49 @@ namespace Model ///@{ /** *

        The server-side encryption algorithm used when you store this object in - * Amazon S3 (for example, AES256, aws:kms).

        - *

        For directory buckets, only server-side encryption with Amazon S3 managed - * keys (SSE-S3) (AES256) is supported.

        + * Amazon S3 (for example, AES256, aws:kms).

          + *
        • Directory buckets - For directory buckets, there are only two + * supported options for server-side encryption: server-side encryption with Amazon + * S3 managed keys (SSE-S3) (AES256) and server-side encryption with + * KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's + * default encryption uses the desired encryption configuration and you don't + * override the bucket default encryption in your CreateSession + * requests or PUT object requests. Then, new objects are + * automatically encrypted with the desired encryption settings. For more + * information, see Protecting + * data with server-side encryption in the Amazon S3 User Guide. For + * more information about the encryption overriding behaviors in directory buckets, + * see Specifying + * server-side encryption with KMS for new object uploads.

          In the Zonal + * endpoint API calls (except CopyObject + * and UploadPartCopy) + * using the REST API, the encryption request headers must match the encryption + * settings that are specified in the CreateSession request. You can't + * override the values of the encryption settings + * (x-amz-server-side-encryption, + * x-amz-server-side-encryption-aws-kms-key-id, + * x-amz-server-side-encryption-context, and + * x-amz-server-side-encryption-bucket-key-enabled) that are specified + * in the CreateSession request. You don't need to explicitly specify + * these encryption settings values in Zonal endpoint API calls, and Amazon S3 will + * use the encryption settings values from the CreateSession request + * to protect new objects in the directory bucket.

          When you use the + * CLI or the Amazon Web Services SDKs, for CreateSession, the session + * token refreshes automatically to avoid service interruptions when a session + * expires. The CLI or the Amazon Web Services SDKs use the bucket's default + * encryption configuration for the CreateSession request. It's not + * supported to override the encryption settings values in the + * CreateSession request. So in the Zonal endpoint API calls (except + * CopyObject + * and UploadPartCopy), + * the encryption request headers must match the default encryption configuration + * of the directory bucket.

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline bool ServerSideEncryptionHasBeenSet() const { return m_serverSideEncryptionHasBeenSet; } @@ -521,9 +561,27 @@ namespace Model ///@{ /** - *

        Specifies the ID (Key ID, Key ARN, or Key Alias) of the symmetric encryption - * customer managed key to use for object encryption.

        This - * functionality is not supported for directory buckets.

        + *

        Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object + * encryption. If the KMS key doesn't exist in the same account that's issuing the + * command, you must use the full Key ARN not the Key ID.

        General + * purpose buckets - If you specify x-amz-server-side-encryption + * with aws:kms or aws:kms:dsse, this header specifies + * the ID (Key ID, Key ARN, or Key Alias) of the KMS key to use. If you specify + * x-amz-server-side-encryption:aws:kms or + * x-amz-server-side-encryption:aws:kms:dsse, but do not provide + * x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the + * Amazon Web Services managed key (aws/s3) to protect the data.

        + *

        Directory buckets - If you specify + * x-amz-server-side-encryption with aws:kms, you must + * specify the x-amz-server-side-encryption-aws-kms-key-id header + * with the ID (Key ID or Key ARN) of the KMS symmetric encryption customer managed + * key to use. Otherwise, you get an HTTP 400 Bad Request error. Only + * use the key ID or key ARN. The key alias format of the KMS key isn't supported. + * Your SSE-KMS configuration can only support 1 customer + * managed key per directory bucket for the lifetime of the bucket. Amazon + * Web Services managed key (aws/s3) isn't supported.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline bool SSEKMSKeyIdHasBeenSet() const { return m_sSEKMSKeyIdHasBeenSet; } @@ -538,9 +596,12 @@ namespace Model ///@{ /** *

        Specifies the Amazon Web Services KMS Encryption Context to use for object - * encryption. The value of this header is a base64-encoded UTF-8 string holding - * JSON with the encryption context key-value pairs.

        This - * functionality is not supported for directory buckets.

        + * encryption. The value of this header is a Base64-encoded string of a UTF-8 + * encoded JSON, which contains the encryption context as key-value pairs.

        + * Directory buckets - You can optionally provide an explicit encryption + * context value. The value must match the default encryption context - the bucket + * Amazon Resource Name (ARN). An additional encryption context value is not + * supported.

        */ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; } inline bool SSEKMSEncryptionContextHasBeenSet() const { return m_sSEKMSEncryptionContextHasBeenSet; } @@ -555,11 +616,25 @@ namespace Model ///@{ /** *

        Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption - * with server-side encryption using Key Management Service (KMS) keys (SSE-KMS). - * Setting this header to true causes Amazon S3 to use an S3 Bucket - * Key for object encryption with SSE-KMS.

        Specifying this header with an - * object action doesn’t affect bucket-level settings for S3 Bucket Key.

        - *

        This functionality is not supported for directory buckets.

        + * with server-side encryption using Key Management Service (KMS) keys + * (SSE-KMS).

        General purpose buckets - Setting this header to + * true causes Amazon S3 to use an S3 Bucket Key for object encryption + * with SSE-KMS. Also, specifying this header with a PUT action doesn't affect + * bucket-level settings for S3 Bucket Key.

        Directory buckets - S3 + * Bucket Keys are always enabled for GET and PUT + * operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't + * supported, when you copy SSE-KMS encrypted objects from general purpose buckets + * to directory buckets, from directory buckets to general purpose buckets, or + * between directory buckets, through CopyObject, + * UploadPartCopy, + * the + * Copy operation in Batch Operations, or the + * import jobs. In this case, Amazon S3 makes a call to KMS every time a copy + * request is made for a KMS-encrypted object.

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline bool BucketKeyEnabledHasBeenSet() const { return m_bucketKeyEnabledHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CreateMultipartUploadResult.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CreateMultipartUploadResult.h index 31baed11c29..9a949f6c1bb 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CreateMultipartUploadResult.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CreateMultipartUploadResult.h @@ -117,9 +117,7 @@ namespace Model ///@{ /** *

        The server-side encryption algorithm used when you store this object in - * Amazon S3 (for example, AES256, aws:kms).

        - *

        For directory buckets, only server-side encryption with Amazon S3 managed - * keys (SSE-S3) (AES256) is supported.

        + * Amazon S3 (for example, AES256, aws:kms).

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } @@ -162,9 +160,8 @@ namespace Model ///@{ /** - *

        If present, indicates the ID of the Key Management Service (KMS) symmetric - * encryption customer managed key that was used for the object.

        This - * functionality is not supported for directory buckets.

        + *

        If present, indicates the ID of the KMS key that was used for object + * encryption.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } @@ -178,9 +175,9 @@ namespace Model ///@{ /** *

        If present, indicates the Amazon Web Services KMS Encryption Context to use - * for object encryption. The value of this header is a base64-encoded UTF-8 string - * holding JSON with the encryption context key-value pairs.

        This - * functionality is not supported for directory buckets.

        + * for object encryption. The value of this header is a Base64-encoded string of a + * UTF-8 encoded JSON, which contains the encryption context as key-value + * pairs.

        */ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; } inline void SetSSEKMSEncryptionContext(const Aws::String& value) { m_sSEKMSEncryptionContext = value; } @@ -194,8 +191,7 @@ namespace Model ///@{ /** *

        Indicates whether the multipart upload uses an S3 Bucket Key for server-side - * encryption with Key Management Service (KMS) keys (SSE-KMS).

        This - * functionality is not supported for directory buckets.

        + * encryption with Key Management Service (KMS) keys (SSE-KMS).

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CreateSessionRequest.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CreateSessionRequest.h index 01ffcc6a8a8..fa95f00f53c 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CreateSessionRequest.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CreateSessionRequest.h @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -52,9 +53,9 @@ namespace Model *

        Specifies the mode of the session that will be created, either * ReadWrite or ReadOnly. By default, a * ReadWrite session is created. A ReadWrite session is - * capable of executing all the Zonal endpoint APIs on a directory bucket. A - * ReadOnly session is constrained to execute the following Zonal - * endpoint APIs: GetObject, HeadObject, + * capable of executing all the Zonal endpoint API operations on a directory + * bucket. A ReadOnly session is constrained to execute the following + * Zonal endpoint API operations: GetObject, HeadObject, * ListObjectsV2, GetObjectAttributes, * ListParts, and ListMultipartUploads.

        */ @@ -80,6 +81,103 @@ namespace Model inline CreateSessionRequest& WithBucket(const char* value) { SetBucket(value); return *this;} ///@} + ///@{ + /** + *

        The server-side encryption algorithm to use when you store objects in the + * directory bucket.

        For directory buckets, there are only two supported + * options for server-side encryption: server-side encryption with Amazon S3 + * managed keys (SSE-S3) (AES256) and server-side encryption with KMS + * keys (SSE-KMS) (aws:kms). By default, Amazon S3 encrypts data with + * SSE-S3. For more information, see Protecting + * data with server-side encryption in the Amazon S3 User Guide.

        + */ + inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } + inline bool ServerSideEncryptionHasBeenSet() const { return m_serverSideEncryptionHasBeenSet; } + inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryptionHasBeenSet = true; m_serverSideEncryption = value; } + inline void SetServerSideEncryption(ServerSideEncryption&& value) { m_serverSideEncryptionHasBeenSet = true; m_serverSideEncryption = std::move(value); } + inline CreateSessionRequest& WithServerSideEncryption(const ServerSideEncryption& value) { SetServerSideEncryption(value); return *this;} + inline CreateSessionRequest& WithServerSideEncryption(ServerSideEncryption&& value) { SetServerSideEncryption(std::move(value)); return *this;} + ///@} + + ///@{ + /** + *

        If you specify x-amz-server-side-encryption with + * aws:kms, you must specify the + * x-amz-server-side-encryption-aws-kms-key-id header with the ID (Key ID or + * Key ARN) of the KMS symmetric encryption customer managed key to use. Otherwise, + * you get an HTTP 400 Bad Request error. Only use the key ID or key + * ARN. The key alias format of the KMS key isn't supported. Also, if the KMS key + * doesn't exist in the same account that't issuing the command, you must use the + * full Key ARN not the Key ID.

        Your SSE-KMS configuration can only support + * 1 customer + * managed key per directory bucket for the lifetime of the bucket. Amazon + * Web Services managed key (aws/s3) isn't supported.

        + */ + inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } + inline bool SSEKMSKeyIdHasBeenSet() const { return m_sSEKMSKeyIdHasBeenSet; } + inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyIdHasBeenSet = true; m_sSEKMSKeyId = value; } + inline void SetSSEKMSKeyId(Aws::String&& value) { m_sSEKMSKeyIdHasBeenSet = true; m_sSEKMSKeyId = std::move(value); } + inline void SetSSEKMSKeyId(const char* value) { m_sSEKMSKeyIdHasBeenSet = true; m_sSEKMSKeyId.assign(value); } + inline CreateSessionRequest& WithSSEKMSKeyId(const Aws::String& value) { SetSSEKMSKeyId(value); return *this;} + inline CreateSessionRequest& WithSSEKMSKeyId(Aws::String&& value) { SetSSEKMSKeyId(std::move(value)); return *this;} + inline CreateSessionRequest& WithSSEKMSKeyId(const char* value) { SetSSEKMSKeyId(value); return *this;} + ///@} + + ///@{ + /** + *

        Specifies the Amazon Web Services KMS Encryption Context as an additional + * encryption context to use for object encryption. The value of this header is a + * Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption + * context as key-value pairs. This value is stored as object metadata and + * automatically gets passed on to Amazon Web Services KMS for future + * GetObject operations on this object.

        General purpose + * buckets - This value must be explicitly added during CopyObject + * operations if you want an additional encryption context for your object. For + * more information, see Encryption + * context in the Amazon S3 User Guide.

        Directory buckets + * - You can optionally provide an explicit encryption context value. The value + * must match the default encryption context - the bucket Amazon Resource Name + * (ARN). An additional encryption context value is not supported.

        + */ + inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; } + inline bool SSEKMSEncryptionContextHasBeenSet() const { return m_sSEKMSEncryptionContextHasBeenSet; } + inline void SetSSEKMSEncryptionContext(const Aws::String& value) { m_sSEKMSEncryptionContextHasBeenSet = true; m_sSEKMSEncryptionContext = value; } + inline void SetSSEKMSEncryptionContext(Aws::String&& value) { m_sSEKMSEncryptionContextHasBeenSet = true; m_sSEKMSEncryptionContext = std::move(value); } + inline void SetSSEKMSEncryptionContext(const char* value) { m_sSEKMSEncryptionContextHasBeenSet = true; m_sSEKMSEncryptionContext.assign(value); } + inline CreateSessionRequest& WithSSEKMSEncryptionContext(const Aws::String& value) { SetSSEKMSEncryptionContext(value); return *this;} + inline CreateSessionRequest& WithSSEKMSEncryptionContext(Aws::String&& value) { SetSSEKMSEncryptionContext(std::move(value)); return *this;} + inline CreateSessionRequest& WithSSEKMSEncryptionContext(const char* value) { SetSSEKMSEncryptionContext(value); return *this;} + ///@} + + ///@{ + /** + *

        Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption + * with server-side encryption using KMS keys (SSE-KMS).

        S3 Bucket Keys are + * always enabled for GET and PUT operations in a + * directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when + * you copy SSE-KMS encrypted objects from general purpose buckets to directory + * buckets, from directory buckets to general purpose buckets, or between directory + * buckets, through CopyObject, + * UploadPartCopy, + * the + * Copy operation in Batch Operations, or the + * import jobs. In this case, Amazon S3 makes a call to KMS every time a copy + * request is made for a KMS-encrypted object.

        + */ + inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } + inline bool BucketKeyEnabledHasBeenSet() const { return m_bucketKeyEnabledHasBeenSet; } + inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabledHasBeenSet = true; m_bucketKeyEnabled = value; } + inline CreateSessionRequest& WithBucketKeyEnabled(bool value) { SetBucketKeyEnabled(value); return *this;} + ///@} + ///@{ inline const Aws::Map& GetCustomizedAccessLogTag() const{ return m_customizedAccessLogTag; } @@ -104,6 +202,18 @@ namespace Model Aws::String m_bucket; bool m_bucketHasBeenSet = false; + ServerSideEncryption m_serverSideEncryption; + bool m_serverSideEncryptionHasBeenSet = false; + + Aws::String m_sSEKMSKeyId; + bool m_sSEKMSKeyIdHasBeenSet = false; + + Aws::String m_sSEKMSEncryptionContext; + bool m_sSEKMSEncryptionContextHasBeenSet = false; + + bool m_bucketKeyEnabled; + bool m_bucketKeyEnabledHasBeenSet = false; + Aws::Map m_customizedAccessLogTag; bool m_customizedAccessLogTagHasBeenSet = false; }; diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CreateSessionResult.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CreateSessionResult.h index cf1c35aba83..b75460b43c8 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CreateSessionResult.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/CreateSessionResult.h @@ -5,8 +5,9 @@ #pragma once #include -#include +#include #include +#include #include namespace Aws @@ -33,6 +34,61 @@ namespace Model AWS_S3_API CreateSessionResult& operator=(const Aws::AmazonWebServiceResult& result); + ///@{ + /** + *

        The server-side encryption algorithm used when you store objects in the + * directory bucket.

        + */ + inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } + inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } + inline void SetServerSideEncryption(ServerSideEncryption&& value) { m_serverSideEncryption = std::move(value); } + inline CreateSessionResult& WithServerSideEncryption(const ServerSideEncryption& value) { SetServerSideEncryption(value); return *this;} + inline CreateSessionResult& WithServerSideEncryption(ServerSideEncryption&& value) { SetServerSideEncryption(std::move(value)); return *this;} + ///@} + + ///@{ + /** + *

        If you specify x-amz-server-side-encryption with + * aws:kms, this header indicates the ID of the KMS symmetric + * encryption customer managed key that was used for object encryption.

        + */ + inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } + inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } + inline void SetSSEKMSKeyId(Aws::String&& value) { m_sSEKMSKeyId = std::move(value); } + inline void SetSSEKMSKeyId(const char* value) { m_sSEKMSKeyId.assign(value); } + inline CreateSessionResult& WithSSEKMSKeyId(const Aws::String& value) { SetSSEKMSKeyId(value); return *this;} + inline CreateSessionResult& WithSSEKMSKeyId(Aws::String&& value) { SetSSEKMSKeyId(std::move(value)); return *this;} + inline CreateSessionResult& WithSSEKMSKeyId(const char* value) { SetSSEKMSKeyId(value); return *this;} + ///@} + + ///@{ + /** + *

        If present, indicates the Amazon Web Services KMS Encryption Context to use + * for object encryption. The value of this header is a Base64-encoded string of a + * UTF-8 encoded JSON, which contains the encryption context as key-value pairs. + * This value is stored as object metadata and automatically gets passed on to + * Amazon Web Services KMS for future GetObject operations on this + * object.

        + */ + inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; } + inline void SetSSEKMSEncryptionContext(const Aws::String& value) { m_sSEKMSEncryptionContext = value; } + inline void SetSSEKMSEncryptionContext(Aws::String&& value) { m_sSEKMSEncryptionContext = std::move(value); } + inline void SetSSEKMSEncryptionContext(const char* value) { m_sSEKMSEncryptionContext.assign(value); } + inline CreateSessionResult& WithSSEKMSEncryptionContext(const Aws::String& value) { SetSSEKMSEncryptionContext(value); return *this;} + inline CreateSessionResult& WithSSEKMSEncryptionContext(Aws::String&& value) { SetSSEKMSEncryptionContext(std::move(value)); return *this;} + inline CreateSessionResult& WithSSEKMSEncryptionContext(const char* value) { SetSSEKMSEncryptionContext(value); return *this;} + ///@} + + ///@{ + /** + *

        Indicates whether to use an S3 Bucket Key for server-side encryption with KMS + * keys (SSE-KMS).

        + */ + inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } + inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } + inline CreateSessionResult& WithBucketKeyEnabled(bool value) { SetBucketKeyEnabled(value); return *this;} + ///@} + ///@{ /** *

        The established temporary security credentials for the created session.

        @@ -56,6 +112,14 @@ namespace Model ///@} private: + ServerSideEncryption m_serverSideEncryption; + + Aws::String m_sSEKMSKeyId; + + Aws::String m_sSEKMSEncryptionContext; + + bool m_bucketKeyEnabled; + SessionCredentials m_credentials; Aws::String m_requestId; diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketEncryptionRequest.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketEncryptionRequest.h index 9f5600fa9ad..c2cec0d23c7 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketEncryptionRequest.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/DeleteBucketEncryptionRequest.h @@ -49,7 +49,16 @@ namespace Model ///@{ /** *

        The name of the bucket containing the server-side encryption configuration to - * delete.

        + * delete.

        Directory buckets - When you use this operation with a + * directory bucket, you must use path-style requests in the format + * https://s3express-control.region_code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names + * must be unique in the chosen Availability Zone. Bucket names must also follow + * the format bucket_base_name--az_id--x-s3 (for + * example, DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For + * information about bucket naming restrictions, see Directory + * bucket naming rules in the Amazon S3 User Guide

        */ inline const Aws::String& GetBucket() const{ return m_bucket; } inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; } @@ -65,7 +74,10 @@ namespace Model /** *

        The account ID of the expected bucket owner. If the account ID that you * provide does not match the actual owner of the bucket, the request fails with - * the HTTP status code 403 Forbidden (access denied).

        + * the HTTP status code 403 Forbidden (access denied).

        + *

        For directory buckets, this header is not supported in this API operation. If + * you specify this header, the request fails with the HTTP status code 501 + * Not Implemented.

        */ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; } inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ExistingObjectReplication.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ExistingObjectReplication.h index 2f818d732ee..3aa4e6fda79 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ExistingObjectReplication.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ExistingObjectReplication.h @@ -23,11 +23,12 @@ namespace Model { /** - *

        Optional configuration to replicate existing source bucket objects. For more - * information, see Replicating - * Existing Objects in the Amazon S3 User Guide.

        See - * Also:

        Optional configuration to replicate existing source bucket objects.

        + *

        This parameter is no longer supported. To replicate existing objects, + * see Replicating + * existing objects with S3 Batch Replication in the Amazon S3 User + * Guide.

        See Also:

        AWS * API Reference

        */ diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketEncryptionRequest.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketEncryptionRequest.h index 7b8a3d19ded..616fb237c23 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketEncryptionRequest.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/GetBucketEncryptionRequest.h @@ -49,7 +49,16 @@ namespace Model ///@{ /** *

        The name of the bucket from which the server-side encryption configuration is - * retrieved.

        + * retrieved.

        Directory buckets - When you use this operation with + * a directory bucket, you must use path-style requests in the format + * https://s3express-control.region_code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names + * must be unique in the chosen Availability Zone. Bucket names must also follow + * the format bucket_base_name--az_id--x-s3 (for + * example, DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For + * information about bucket naming restrictions, see Directory + * bucket naming rules in the Amazon S3 User Guide

        */ inline const Aws::String& GetBucket() const{ return m_bucket; } inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; } @@ -65,7 +74,10 @@ namespace Model /** *

        The account ID of the expected bucket owner. If the account ID that you * provide does not match the actual owner of the bucket, the request fails with - * the HTTP status code 403 Forbidden (access denied).

        + * the HTTP status code 403 Forbidden (access denied).

        + *

        For directory buckets, this header is not supported in this API operation. If + * you specify this header, the request fails with the HTTP status code 501 + * Not Implemented.

        */ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; } inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectRequest.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectRequest.h index 65499fa49da..727c5eb11ed 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectRequest.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectRequest.h @@ -448,8 +448,9 @@ namespace Model ///@{ /** - *

        To retrieve the checksum, this mode must be enabled.

        In addition, if - * you enable checksum mode and the object is uploaded with a To retrieve the checksum, this mode must be enabled.

        General + * purpose buckets - In addition, if you enable checksum mode and the object is + * uploaded with a checksum * and encrypted with an Key Management Service (KMS) key, you must have permission * to use the kms:Decrypt action to retrieve the checksum.

        diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectResult.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectResult.h index c3c5148d073..822b1d669d1 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectResult.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/GetObjectResult.h @@ -359,10 +359,7 @@ namespace Model ///@{ /** *

        The server-side encryption algorithm used when you store this object in - * Amazon S3 (for example, AES256, aws:kms, - * aws:kms:dsse).

        For directory buckets, only - * server-side encryption with Amazon S3 managed keys (SSE-S3) - * (AES256) is supported.

        + * Amazon S3.

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } @@ -423,9 +420,8 @@ namespace Model ///@{ /** - *

        If present, indicates the ID of the Key Management Service (KMS) symmetric - * encryption customer managed key that was used for the object.

        This - * functionality is not supported for directory buckets.

        + *

        If present, indicates the ID of the KMS key that was used for object + * encryption.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } @@ -439,8 +435,7 @@ namespace Model ///@{ /** *

        Indicates whether the object uses an S3 Bucket Key for server-side encryption - * with Key Management Service (KMS) keys (SSE-KMS).

        This - * functionality is not supported for directory buckets.

        + * with Key Management Service (KMS) keys (SSE-KMS).

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/HeadObjectRequest.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/HeadObjectRequest.h index 51fb035be12..9e867a58927 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/HeadObjectRequest.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/HeadObjectRequest.h @@ -399,11 +399,17 @@ namespace Model ///@{ /** - *

        To retrieve the checksum, this parameter must be enabled.

        In addition, - * if you enable checksum mode and the object is uploaded with a To retrieve the checksum, this parameter must be enabled.

        General + * purpose buckets - If you enable checksum mode and the object is uploaded + * with a checksum * and encrypted with an Key Management Service (KMS) key, you must have permission - * to use the kms:Decrypt action to retrieve the checksum.

        + * to use the kms:Decrypt action to retrieve the checksum.

        + * Directory buckets - If you enable ChecksumMode and the + * object is encrypted with Amazon Web Services Key Management Service (Amazon Web + * Services KMS), you must also have the kms:GenerateDataKey and + * kms:Decrypt permissions in IAM identity-based policies and KMS key + * policies for the KMS key to retrieve the checksum of the object.

        */ inline const ChecksumMode& GetChecksumMode() const{ return m_checksumMode; } inline bool ChecksumModeHasBeenSet() const { return m_checksumModeHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/HeadObjectResult.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/HeadObjectResult.h index c20b275f026..3da84af3b37 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/HeadObjectResult.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/HeadObjectResult.h @@ -363,9 +363,7 @@ namespace Model /** *

        The server-side encryption algorithm used when you store this object in * Amazon S3 (for example, AES256, aws:kms, - * aws:kms:dsse).

        For directory buckets, only - * server-side encryption with Amazon S3 managed keys (SSE-S3) - * (AES256) is supported.

        + * aws:kms:dsse).

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } @@ -426,9 +424,8 @@ namespace Model ///@{ /** - *

        If present, indicates the ID of the Key Management Service (KMS) symmetric - * encryption customer managed key that was used for the object.

        This - * functionality is not supported for directory buckets.

        + *

        If present, indicates the ID of the KMS key that was used for object + * encryption.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } @@ -442,8 +439,7 @@ namespace Model ///@{ /** *

        Indicates whether the object uses an S3 Bucket Key for server-side encryption - * with Key Management Service (KMS) keys (SSE-KMS).

        This - * functionality is not supported for directory buckets.

        + * with Key Management Service (KMS) keys (SSE-KMS).

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketEncryptionRequest.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketEncryptionRequest.h index bca564f41fc..b9ca2ea8f73 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketEncryptionRequest.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/PutBucketEncryptionRequest.h @@ -53,14 +53,17 @@ namespace Model ///@{ /** *

        Specifies default encryption for a bucket using server-side encryption with - * different key options. By default, all buckets have a default encryption - * configuration that uses server-side encryption with Amazon S3 managed keys - * (SSE-S3). You can optionally configure default encryption for a bucket by using - * server-side encryption with an Amazon Web Services KMS key (SSE-KMS) or a - * customer-provided key (SSE-C). For information about the bucket default - * encryption feature, see Amazon - * S3 Bucket Default Encryption in the Amazon S3 User Guide.

        + * different key options.

        Directory buckets - When you use this + * operation with a directory bucket, you must use path-style requests in the + * format + * https://s3express-control.region_code.amazonaws.com/bucket-name + * . Virtual-hosted-style requests aren't supported. Directory bucket names + * must be unique in the chosen Availability Zone. Bucket names must also follow + * the format bucket_base_name--az_id--x-s3 (for + * example, DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For + * information about bucket naming restrictions, see Directory + * bucket naming rules in the Amazon S3 User Guide

        */ inline const Aws::String& GetBucket() const{ return m_bucket; } inline bool BucketHasBeenSet() const { return m_bucketHasBeenSet; } @@ -77,7 +80,8 @@ namespace Model *

        The base64-encoded 128-bit MD5 digest of the server-side encryption * configuration.

        For requests made using the Amazon Web Services Command * Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated - * automatically.

        + * automatically.

        This functionality is not supported for directory + * buckets.

        */ inline const Aws::String& GetContentMD5() const{ return m_contentMD5; } inline bool ContentMD5HasBeenSet() const { return m_contentMD5HasBeenSet; } @@ -100,7 +104,9 @@ namespace Model * href="https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html">Checking * object integrity in the Amazon S3 User Guide.

        If you provide * an individual checksum, Amazon S3 ignores any provided - * ChecksumAlgorithm parameter.

        + * ChecksumAlgorithm parameter.

        For directory buckets, + * when you use Amazon Web Services SDKs, CRC32 is the default + * checksum algorithm that's used for performance.

        */ inline const ChecksumAlgorithm& GetChecksumAlgorithm() const{ return m_checksumAlgorithm; } inline bool ChecksumAlgorithmHasBeenSet() const { return m_checksumAlgorithmHasBeenSet; } @@ -124,7 +130,10 @@ namespace Model /** *

        The account ID of the expected bucket owner. If the account ID that you * provide does not match the actual owner of the bucket, the request fails with - * the HTTP status code 403 Forbidden (access denied).

        + * the HTTP status code 403 Forbidden (access denied).

        + *

        For directory buckets, this header is not supported in this API operation. If + * you specify this header, the request fails with the HTTP status code 501 + * Not Implemented.

        */ inline const Aws::String& GetExpectedBucketOwner() const{ return m_expectedBucketOwner; } inline bool ExpectedBucketOwnerHasBeenSet() const { return m_expectedBucketOwnerHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectRequest.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectRequest.h index 391ecc9f328..a16bda11638 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectRequest.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectRequest.h @@ -483,20 +483,59 @@ namespace Model /** *

        The server-side encryption algorithm that was used when you store this object * in Amazon S3 (for example, AES256, aws:kms, - * aws:kms:dsse).

        General purpose buckets - You have - * four mutually exclusive options to protect data using server-side encryption in - * Amazon S3, depending on how you choose to manage the encryption keys. - * Specifically, the encryption key options are Amazon S3 managed keys (SSE-S3), - * Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and customer-provided keys - * (SSE-C). Amazon S3 encrypts data with server-side encryption by using Amazon S3 - * managed keys (SSE-S3) by default. You can optionally tell Amazon S3 to encrypt - * data at rest by using server-side encryption with other key options. For more - * information, see aws:kms:dsse).

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline bool ServerSideEncryptionHasBeenSet() const { return m_serverSideEncryptionHasBeenSet; } @@ -610,17 +649,27 @@ namespace Model ///@{ /** - *

        If x-amz-server-side-encryption has a valid value of - * aws:kms or aws:kms:dsse, this header specifies the ID - * (Key ID, Key ARN, or Key Alias) of the Key Management Service (KMS) symmetric - * encryption customer managed key that was used for the object. If you specify + *

        Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object + * encryption. If the KMS key doesn't exist in the same account that's issuing the + * command, you must use the full Key ARN not the Key ID.

        General + * purpose buckets - If you specify x-amz-server-side-encryption + * with aws:kms or aws:kms:dsse, this header specifies + * the ID (Key ID, Key ARN, or Key Alias) of the KMS key to use. If you specify * x-amz-server-side-encryption:aws:kms or - * x-amz-server-side-encryption:aws:kms:dsse, but do not provide - * x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon - * Web Services managed key (aws/s3) to protect the data. If the KMS - * key does not exist in the same account that's issuing the command, you must use - * the full ARN and not just the ID.

        This functionality is not - * supported for directory buckets.

        + * x-amz-server-side-encryption:aws:kms:dsse, but do not provide + * x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the + * Amazon Web Services managed key (aws/s3) to protect the data.

        + *

        Directory buckets - If you specify + * x-amz-server-side-encryption with aws:kms, you must + * specify the x-amz-server-side-encryption-aws-kms-key-id header + * with the ID (Key ID or Key ARN) of the KMS symmetric encryption customer managed + * key to use. Otherwise, you get an HTTP 400 Bad Request error. Only + * use the key ID or key ARN. The key alias format of the KMS key isn't supported. + * Your SSE-KMS configuration can only support 1 customer + * managed key per directory bucket for the lifetime of the bucket. Amazon + * Web Services managed key (aws/s3) isn't supported.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline bool SSEKMSKeyIdHasBeenSet() const { return m_sSEKMSKeyIdHasBeenSet; } @@ -634,14 +683,20 @@ namespace Model ///@{ /** - *

        Specifies the Amazon Web Services KMS Encryption Context to use for object - * encryption. The value of this header is a base64-encoded UTF-8 string holding - * JSON with the encryption context key-value pairs. This value is stored as object - * metadata and automatically gets passed on to Amazon Web Services KMS for future - * GetObject or CopyObject operations on this object. - * This value must be explicitly added during CopyObject - * operations.

        This functionality is not supported for directory - * buckets.

        + *

        Specifies the Amazon Web Services KMS Encryption Context as an additional + * encryption context to use for object encryption. The value of this header is a + * Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption + * context as key-value pairs. This value is stored as object metadata and + * automatically gets passed on to Amazon Web Services KMS for future + * GetObject operations on this object.

        General purpose + * buckets - This value must be explicitly added during CopyObject + * operations if you want an additional encryption context for your object. For + * more information, see Encryption + * context in the Amazon S3 User Guide.

        Directory buckets + * - You can optionally provide an explicit encryption context value. The value + * must match the default encryption context - the bucket Amazon Resource Name + * (ARN). An additional encryption context value is not supported.

        */ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; } inline bool SSEKMSEncryptionContextHasBeenSet() const { return m_sSEKMSEncryptionContextHasBeenSet; } @@ -656,11 +711,25 @@ namespace Model ///@{ /** *

        Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption - * with server-side encryption using Key Management Service (KMS) keys (SSE-KMS). - * Setting this header to true causes Amazon S3 to use an S3 Bucket - * Key for object encryption with SSE-KMS.

        Specifying this header with a PUT - * action doesn’t affect bucket-level settings for S3 Bucket Key.

        - *

        This functionality is not supported for directory buckets.

        + * with server-side encryption using Key Management Service (KMS) keys + * (SSE-KMS).

        General purpose buckets - Setting this header to + * true causes Amazon S3 to use an S3 Bucket Key for object encryption + * with SSE-KMS. Also, specifying this header with a PUT action doesn't affect + * bucket-level settings for S3 Bucket Key.

        Directory buckets - S3 + * Bucket Keys are always enabled for GET and PUT + * operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't + * supported, when you copy SSE-KMS encrypted objects from general purpose buckets + * to directory buckets, from directory buckets to general purpose buckets, or + * between directory buckets, through CopyObject, + * UploadPartCopy, + * the + * Copy operation in Batch Operations, or the + * import jobs. In this case, Amazon S3 makes a call to KMS every time a copy + * request is made for a KMS-encrypted object.

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline bool BucketKeyEnabledHasBeenSet() const { return m_bucketKeyEnabledHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectResult.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectResult.h index a3269bd7339..43e1924dfa8 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectResult.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/PutObjectResult.h @@ -154,10 +154,7 @@ namespace Model ///@{ /** *

        The server-side encryption algorithm used when you store this object in - * Amazon S3 (for example, AES256, aws:kms, - * aws:kms:dsse).

        For directory buckets, only - * server-side encryption with Amazon S3 managed keys (SSE-S3) - * (AES256) is supported.

        + * Amazon S3.

        */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } @@ -224,11 +221,8 @@ namespace Model ///@{ /** - *

        If x-amz-server-side-encryption has a valid value of - * aws:kms or aws:kms:dsse, this header indicates the ID - * of the Key Management Service (KMS) symmetric encryption customer managed key - * that was used for the object.

        This functionality is not supported - * for directory buckets.

        + *

        If present, indicates the ID of the KMS key that was used for object + * encryption.

        */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } @@ -242,12 +236,11 @@ namespace Model ///@{ /** *

        If present, indicates the Amazon Web Services KMS Encryption Context to use - * for object encryption. The value of this header is a base64-encoded UTF-8 string - * holding JSON with the encryption context key-value pairs. This value is stored - * as object metadata and automatically gets passed on to Amazon Web Services KMS - * for future GetObject or CopyObject operations on this - * object.

        This functionality is not supported for directory - * buckets.

        + * for object encryption. The value of this header is a Base64-encoded string of a + * UTF-8 encoded JSON, which contains the encryption context as key-value pairs. + * This value is stored as object metadata and automatically gets passed on to + * Amazon Web Services KMS for future GetObject operations on this + * object.

        */ inline const Aws::String& GetSSEKMSEncryptionContext() const{ return m_sSEKMSEncryptionContext; } inline void SetSSEKMSEncryptionContext(const Aws::String& value) { m_sSEKMSEncryptionContext = value; } @@ -261,8 +254,7 @@ namespace Model ///@{ /** *

        Indicates whether the uploaded object uses an S3 Bucket Key for server-side - * encryption with Key Management Service (KMS) keys (SSE-KMS).

        This - * functionality is not supported for directory buckets.

        + * encryption with Key Management Service (KMS) keys (SSE-KMS).

        */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRule.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRule.h index fb51fb5b7c4..e1e2e60b953 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRule.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ReplicationRule.h @@ -115,10 +115,12 @@ namespace Model ///@{ /** - *

        Optional configuration to replicate existing source bucket objects. For more - * information, see Replicating - * Existing Objects in the Amazon S3 User Guide.

        + *

        Optional configuration to replicate existing source bucket objects.

        + *

        This parameter is no longer supported. To replicate existing objects, + * see Replicating + * existing objects with S3 Batch Replication in the Amazon S3 User + * Guide.

        */ inline const ExistingObjectReplication& GetExistingObjectReplication() const{ return m_existingObjectReplication; } inline bool ExistingObjectReplicationHasBeenSet() const { return m_existingObjectReplicationHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionByDefault.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionByDefault.h index f6f2aed386a..19568d07241 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionByDefault.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionByDefault.h @@ -26,18 +26,21 @@ namespace Model /** *

        Describes the default server-side encryption to apply to new objects in the * bucket. If a PUT Object request doesn't specify any server-side encryption, this - * default encryption will be applied. If you don't specify a customer managed key - * at configuration, Amazon S3 automatically creates an Amazon Web Services KMS key - * in your Amazon Web Services account the first time that you add an object - * encrypted with SSE-KMS to a bucket. By default, Amazon S3 uses this KMS key for - * SSE-KMS. For more information, see PUT - * Bucket encryption in the Amazon S3 API Reference.

        If - * you're specifying a customer managed KMS key, we recommend using a fully - * qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the - * key within the requester’s account. This behavior can result in data that's - * encrypted with a KMS key that belongs to the requester, and not the bucket - * owner.

        See Also:

        PutBucketEncryption.

        + *
        • General purpose buckets - If you don't specify a + * customer managed key at configuration, Amazon S3 automatically creates an Amazon + * Web Services KMS key (aws/s3) in your Amazon Web Services account + * the first time that you add an object encrypted with SSE-KMS to a bucket. By + * default, Amazon S3 uses this KMS key for SSE-KMS.

        • + * Directory buckets - Your SSE-KMS configuration can only support 1 customer + * managed key per directory bucket for the lifetime of the bucket. Amazon + * Web Services managed key (aws/s3) isn't supported.

        • + *
        • Directory buckets - For directory buckets, there are only two + * supported options for server-side encryption: SSE-S3 and SSE-KMS.

        • + *

        See Also:

        AWS * API Reference

        */ @@ -54,6 +57,9 @@ namespace Model ///@{ /** *

        Server-side encryption algorithm to use for the default encryption.

        + *

        For directory buckets, there are only two supported values for + * server-side encryption: AES256 and aws:kms.

        + * */ inline const ServerSideEncryption& GetSSEAlgorithm() const{ return m_sSEAlgorithm; } inline bool SSEAlgorithmHasBeenSet() const { return m_sSEAlgorithmHasBeenSet; } @@ -65,21 +71,34 @@ namespace Model ///@{ /** - *

        Amazon Web Services Key Management Service (KMS) customer Amazon Web Services - * KMS key ID to use for the default encryption. This parameter is allowed if and - * only if SSEAlgorithm is set to aws:kms or - * aws:kms:dsse.

        You can specify the key ID, key alias, or the - * Amazon Resource Name (ARN) of the KMS key.

        • Key ID: + *

          Amazon Web Services Key Management Service (KMS) customer managed key ID to + * use for the default encryption.

          • General purpose + * buckets - This parameter is allowed if and only if SSEAlgorithm + * is set to aws:kms or aws:kms:dsse.

          • + * Directory buckets - This parameter is allowed if and only if + * SSEAlgorithm is set to aws:kms.

          + *

          You can specify the key ID, key alias, or the Amazon Resource Name + * (ARN) of the KMS key.

          • Key ID: * 1234abcd-12ab-34cd-56ef-1234567890ab

          • Key ARN: * arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab *

          • Key Alias: alias/alias-name

          - *

          If you use a key ID, you can run into a LogDestination undeliverable error - * when creating a VPC flow log.

          If you are using encryption with - * cross-account or Amazon Web Services service operations you must use a fully - * qualified KMS key ARN. For more information, see If you are using encryption with cross-account or Amazon Web Services service + * operations, you must use a fully qualified KMS key ARN. For more information, + * see Using - * encryption for cross-account operations.

          Amazon S3 only - * supports symmetric encryption KMS keys. For more information, see .

          Amazon S3 only supports symmetric encryption + * KMS keys. For more information, see Asymmetric * keys in Amazon Web Services KMS in the Amazon Web Services Key Management * Service Developer Guide.

          diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionRule.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionRule.h index f96c2fc84a8..d56f9b44b05 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionRule.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/ServerSideEncryptionRule.h @@ -23,12 +23,17 @@ namespace Model { /** - *

          Specifies the default server-side encryption configuration.

          If - * you're specifying a customer managed KMS key, we recommend using a fully - * qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the - * key within the requester’s account. This behavior can result in data that's - * encrypted with a KMS key that belongs to the requester, and not the bucket - * owner.

          See Also:

          Specifies the default server-side encryption configuration.

          See Also:

          AWS * API Reference

          */ @@ -61,10 +66,25 @@ namespace Model *

          Specifies whether Amazon S3 should use an S3 Bucket Key with server-side * encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects * are not affected. Setting the BucketKeyEnabled element to - * true causes Amazon S3 to use an S3 Bucket Key. By default, S3 - * Bucket Key is not enabled.

          For more information, see true causes Amazon S3 to use an S3 Bucket Key.

          */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline bool BucketKeyEnabledHasBeenSet() const { return m_bucketKeyEnabledHasBeenSet; } diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/SessionCredentials.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/SessionCredentials.h index cd011cd4dbf..cc45cc32b5b 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/SessionCredentials.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/SessionCredentials.h @@ -26,7 +26,7 @@ namespace Model /** *

          The established temporary security credentials of the session.

          * Directory buckets - These session credentials are only supported for the - * authentication and authorization of Zonal endpoint APIs on directory + * authentication and authorization of Zonal endpoint API operations on directory * buckets.

          See Also:

          AWS * API Reference

          diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartCopyResult.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartCopyResult.h index 3cfe2d48409..1febf48a966 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartCopyResult.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartCopyResult.h @@ -64,9 +64,7 @@ namespace Model ///@{ /** *

          The server-side encryption algorithm used when you store this object in - * Amazon S3 (for example, AES256, aws:kms).

          - *

          For directory buckets, only server-side encryption with Amazon S3 managed - * keys (SSE-S3) (AES256) is supported.

          + * Amazon S3 (for example, AES256, aws:kms).

          */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } @@ -109,9 +107,8 @@ namespace Model ///@{ /** - *

          If present, indicates the ID of the Key Management Service (KMS) symmetric - * encryption customer managed key that was used for the object.

          This - * functionality is not supported for directory buckets.

          + *

          If present, indicates the ID of the KMS key that was used for object + * encryption.

          */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } @@ -125,8 +122,7 @@ namespace Model ///@{ /** *

          Indicates whether the multipart upload uses an S3 Bucket Key for server-side - * encryption with Key Management Service (KMS) keys (SSE-KMS).

          This - * functionality is not supported for directory buckets.

          + * encryption with Key Management Service (KMS) keys (SSE-KMS).

          */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } diff --git a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartResult.h b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartResult.h index c7fd9baf1e7..88e30be4438 100644 --- a/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartResult.h +++ b/generated/src/aws-cpp-sdk-s3/include/aws/s3/model/UploadPartResult.h @@ -37,9 +37,7 @@ namespace Model ///@{ /** *

          The server-side encryption algorithm used when you store this object in - * Amazon S3 (for example, AES256, aws:kms).

          - *

          For directory buckets, only server-side encryption with Amazon S3 managed - * keys (SSE-S3) (AES256) is supported.

          + * Amazon S3 (for example, AES256, aws:kms).

          */ inline const ServerSideEncryption& GetServerSideEncryption() const{ return m_serverSideEncryption; } inline void SetServerSideEncryption(const ServerSideEncryption& value) { m_serverSideEncryption = value; } @@ -175,9 +173,8 @@ namespace Model ///@{ /** - *

          If present, indicates the ID of the Key Management Service (KMS) symmetric - * encryption customer managed key that was used for the object.

          This - * functionality is not supported for directory buckets.

          + *

          If present, indicates the ID of the KMS key that was used for object + * encryption.

          */ inline const Aws::String& GetSSEKMSKeyId() const{ return m_sSEKMSKeyId; } inline void SetSSEKMSKeyId(const Aws::String& value) { m_sSEKMSKeyId = value; } @@ -191,8 +188,7 @@ namespace Model ///@{ /** *

          Indicates whether the multipart upload uses an S3 Bucket Key for server-side - * encryption with Key Management Service (KMS) keys (SSE-KMS).

          This - * functionality is not supported for directory buckets.

          + * encryption with Key Management Service (KMS) keys (SSE-KMS).

          */ inline bool GetBucketKeyEnabled() const{ return m_bucketKeyEnabled; } inline void SetBucketKeyEnabled(bool value) { m_bucketKeyEnabled = value; } diff --git a/generated/src/aws-cpp-sdk-s3/source/model/CreateSessionRequest.cpp b/generated/src/aws-cpp-sdk-s3/source/model/CreateSessionRequest.cpp index ed529b5c526..2ea3b112408 100644 --- a/generated/src/aws-cpp-sdk-s3/source/model/CreateSessionRequest.cpp +++ b/generated/src/aws-cpp-sdk-s3/source/model/CreateSessionRequest.cpp @@ -21,6 +21,12 @@ CreateSessionRequest::CreateSessionRequest() : m_sessionMode(SessionMode::NOT_SET), m_sessionModeHasBeenSet(false), m_bucketHasBeenSet(false), + m_serverSideEncryption(ServerSideEncryption::NOT_SET), + m_serverSideEncryptionHasBeenSet(false), + m_sSEKMSKeyIdHasBeenSet(false), + m_sSEKMSEncryptionContextHasBeenSet(false), + m_bucketKeyEnabled(false), + m_bucketKeyEnabledHasBeenSet(false), m_customizedAccessLogTagHasBeenSet(false) { } @@ -80,6 +86,32 @@ Aws::Http::HeaderValueCollection CreateSessionRequest::GetRequestSpecificHeaders headers.emplace("x-amz-create-session-mode", SessionModeMapper::GetNameForSessionMode(m_sessionMode)); } + if(m_serverSideEncryptionHasBeenSet && m_serverSideEncryption != ServerSideEncryption::NOT_SET) + { + headers.emplace("x-amz-server-side-encryption", ServerSideEncryptionMapper::GetNameForServerSideEncryption(m_serverSideEncryption)); + } + + if(m_sSEKMSKeyIdHasBeenSet) + { + ss << m_sSEKMSKeyId; + headers.emplace("x-amz-server-side-encryption-aws-kms-key-id", ss.str()); + ss.str(""); + } + + if(m_sSEKMSEncryptionContextHasBeenSet) + { + ss << m_sSEKMSEncryptionContext; + headers.emplace("x-amz-server-side-encryption-context", ss.str()); + ss.str(""); + } + + if(m_bucketKeyEnabledHasBeenSet) + { + ss << std::boolalpha << m_bucketKeyEnabled; + headers.emplace("x-amz-server-side-encryption-bucket-key-enabled", ss.str()); + ss.str(""); + } + return headers; } diff --git a/generated/src/aws-cpp-sdk-s3/source/model/CreateSessionResult.cpp b/generated/src/aws-cpp-sdk-s3/source/model/CreateSessionResult.cpp index 0d960b972a3..630913ade3e 100644 --- a/generated/src/aws-cpp-sdk-s3/source/model/CreateSessionResult.cpp +++ b/generated/src/aws-cpp-sdk-s3/source/model/CreateSessionResult.cpp @@ -16,11 +16,14 @@ using namespace Aws::Utils::Xml; using namespace Aws::Utils; using namespace Aws; -CreateSessionResult::CreateSessionResult() +CreateSessionResult::CreateSessionResult() : + m_serverSideEncryption(ServerSideEncryption::NOT_SET), + m_bucketKeyEnabled(false) { } CreateSessionResult::CreateSessionResult(const Aws::AmazonWebServiceResult& result) + : CreateSessionResult() { *this = result; } @@ -40,6 +43,30 @@ CreateSessionResult& CreateSessionResult::operator =(const Aws::AmazonWebService } const auto& headers = result.GetHeaderValueCollection(); + const auto& serverSideEncryptionIter = headers.find("x-amz-server-side-encryption"); + if(serverSideEncryptionIter != headers.end()) + { + m_serverSideEncryption = ServerSideEncryptionMapper::GetServerSideEncryptionForName(serverSideEncryptionIter->second); + } + + const auto& sSEKMSKeyIdIter = headers.find("x-amz-server-side-encryption-aws-kms-key-id"); + if(sSEKMSKeyIdIter != headers.end()) + { + m_sSEKMSKeyId = sSEKMSKeyIdIter->second; + } + + const auto& sSEKMSEncryptionContextIter = headers.find("x-amz-server-side-encryption-context"); + if(sSEKMSEncryptionContextIter != headers.end()) + { + m_sSEKMSEncryptionContext = sSEKMSEncryptionContextIter->second; + } + + const auto& bucketKeyEnabledIter = headers.find("x-amz-server-side-encryption-bucket-key-enabled"); + if(bucketKeyEnabledIter != headers.end()) + { + m_bucketKeyEnabled = StringUtils::ConvertToBool(bucketKeyEnabledIter->second.c_str()); + } + const auto& requestIdIter = headers.find("x-amz-request-id"); if(requestIdIter != headers.end()) { diff --git a/generated/tests/directory-service-data-gen-tests/CMakeLists.txt b/generated/tests/directory-service-data-gen-tests/CMakeLists.txt new file mode 100644 index 00000000000..a0bcbc7f061 --- /dev/null +++ b/generated/tests/directory-service-data-gen-tests/CMakeLists.txt @@ -0,0 +1,42 @@ +add_project(directory-service-data-gen-tests + "Tests for the AWS DIRECTORY-SERVICE-DATA C++ SDK" + testing-resources + aws-cpp-sdk-directory-service-data + aws-cpp-sdk-core) + +file(GLOB AWS_DIRECTORY-SERVICE-DATA_GENERATED_TEST_SRC + "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp" +) + +if(MSVC AND BUILD_SHARED_LIBS) + add_definitions(-DGTEST_LINKED_AS_SHARED_LIBRARY=1) +endif() + +if (CMAKE_CROSSCOMPILING) + set(AUTORUN_UNIT_TESTS OFF) +endif() + +if (AUTORUN_UNIT_TESTS) + enable_testing() +endif() + +if(PLATFORM_ANDROID AND BUILD_SHARED_LIBS) + add_library(${PROJECT_NAME} "${AWS_DIRECTORY-SERVICE-DATA_GENERATED_TEST_SRC}") +else() + add_executable(${PROJECT_NAME} "${AWS_DIRECTORY-SERVICE-DATA_GENERATED_TEST_SRC}") +endif() + +set_compiler_flags(${PROJECT_NAME}) +set_compiler_warnings(${PROJECT_NAME}) + +target_link_libraries(${PROJECT_NAME} ${PROJECT_LIBS}) + +if (AUTORUN_UNIT_TESTS) + ADD_CUSTOM_COMMAND( TARGET ${PROJECT_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E env LD_LIBRARY_PATH=${AWS_AUTORUN_LD_LIBRARY_PATH}:$ENV{LD_LIBRARY_PATH} $ + ARGS "--gtest_brief=1") +endif() + +if(NOT CMAKE_CROSSCOMPILING) + SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES OUTPUT_NAME ${PROJECT_NAME}) +endif() \ No newline at end of file diff --git a/generated/tests/directory-service-data-gen-tests/DirectoryServiceDataEndpointProviderTests.cpp b/generated/tests/directory-service-data-gen-tests/DirectoryServiceDataEndpointProviderTests.cpp new file mode 100644 index 00000000000..8fcc8912ec6 --- /dev/null +++ b/generated/tests/directory-service-data-gen-tests/DirectoryServiceDataEndpointProviderTests.cpp @@ -0,0 +1,428 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include + +#include + + +static const char* ALLOCATION_TAG = "AWSDirectoryServiceDataEndpointProviderTests"; +using DirectoryServiceDataEndpointProvider = Aws::DirectoryServiceData::Endpoint::DirectoryServiceDataEndpointProvider; +using EndpointParameters = Aws::Vector; +using ResolveEndpointOutcome = Aws::Endpoint::ResolveEndpointOutcome; + +using EpParam = Aws::Endpoint::EndpointParameter; +using EpProp = Aws::Endpoint::EndpointParameter; // just a container to store test expectations +using ExpEpProps = Aws::UnorderedMap>>; +using ExpEpAuthScheme = Aws::Vector; +using ExpEpHeaders = Aws::UnorderedMap>; + +struct DirectoryServiceDataEndpointProviderEndpointTestCase +{ + using OperationParamsFromTest = EndpointParameters; + + struct Expect + { + struct Endpoint + { + Aws::String url; + ExpEpAuthScheme authScheme; + ExpEpProps properties; + ExpEpHeaders headers; + } endpoint; + Aws::String error; + }; + struct OperationInput + { + Aws::String operationName; + OperationParamsFromTest operationParams; + OperationParamsFromTest builtinParams; + OperationParamsFromTest clientParams; + }; + + Aws::String documentation; + // Specification tells us it is Client Initialization parameters + // At the same time, specification tells us to test EndpointProvider not the client itself + // Hence params here will be set as a client params (just like a dedicated field above). + Aws::Vector params; + Aws::Vector tags; + Expect expect; + // Aws::Vector operationInput; +}; + +class DirectoryServiceDataEndpointProviderTests : public ::testing::TestWithParam +{ +public: + static const size_t TEST_CASES_SZ; +protected: + static Aws::Vector getTestCase(); + static Aws::UniquePtrSafeDeleted> TEST_CASES; + static void SetUpTestSuite() + { + TEST_CASES = Aws::MakeUniqueSafeDeleted>(ALLOCATION_TAG, getTestCase()); + ASSERT_TRUE(TEST_CASES) << "Failed to allocate TEST_CASES table"; + assert(TEST_CASES->size() == TEST_CASES_SZ); + } + + static void TearDownTestSuite() + { + TEST_CASES.reset(); + } +}; + +Aws::UniquePtrSafeDeleted> DirectoryServiceDataEndpointProviderTests::TEST_CASES; +const size_t DirectoryServiceDataEndpointProviderTests::TEST_CASES_SZ = 25; + +Aws::Vector DirectoryServiceDataEndpointProviderTests::getTestCase() { + + Aws::Vector test_cases = { + /*TEST CASE 0*/ + {"For region us-east-1 with FIPS enabled and DualStack enabled", // documentation + {EpParam("UseFIPS", true), EpParam("Region", "us-east-1"), EpParam("UseDualStack", true)}, // params + {}, // tags + {{/*epUrl*/"https://ds-data-fips.us-east-1.api.aws", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 1*/ + {"For region us-east-1 with FIPS enabled and DualStack disabled", // documentation + {EpParam("UseFIPS", true), EpParam("Region", "us-east-1"), EpParam("UseDualStack", false)}, // params + {}, // tags + {{/*epUrl*/"https://ds-data-fips.us-east-1.amazonaws.com", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 2*/ + {"For region us-east-1 with FIPS disabled and DualStack enabled", // documentation + {EpParam("UseFIPS", false), EpParam("Region", "us-east-1"), EpParam("UseDualStack", true)}, // params + {}, // tags + {{/*epUrl*/"https://ds-data.us-east-1.api.aws", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 3*/ + {"For region us-east-1 with FIPS disabled and DualStack disabled", // documentation + {EpParam("UseFIPS", false), EpParam("Region", "us-east-1"), EpParam("UseDualStack", false)}, // params + {}, // tags + {{/*epUrl*/"https://ds-data.us-east-1.amazonaws.com", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 4*/ + {"For region cn-north-1 with FIPS enabled and DualStack enabled", // documentation + {EpParam("UseFIPS", true), EpParam("Region", "cn-north-1"), EpParam("UseDualStack", true)}, // params + {}, // tags + {{/*epUrl*/"https://ds-data-fips.cn-north-1.api.amazonwebservices.com.cn", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 5*/ + {"For region cn-north-1 with FIPS enabled and DualStack disabled", // documentation + {EpParam("UseFIPS", true), EpParam("Region", "cn-north-1"), EpParam("UseDualStack", false)}, // params + {}, // tags + {{/*epUrl*/"https://ds-data-fips.cn-north-1.amazonaws.com.cn", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 6*/ + {"For region cn-north-1 with FIPS disabled and DualStack enabled", // documentation + {EpParam("UseFIPS", false), EpParam("Region", "cn-north-1"), EpParam("UseDualStack", true)}, // params + {}, // tags + {{/*epUrl*/"https://ds-data.cn-north-1.api.amazonwebservices.com.cn", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 7*/ + {"For region cn-north-1 with FIPS disabled and DualStack disabled", // documentation + {EpParam("UseFIPS", false), EpParam("Region", "cn-north-1"), EpParam("UseDualStack", false)}, // params + {}, // tags + {{/*epUrl*/"https://ds-data.cn-north-1.amazonaws.com.cn", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 8*/ + {"For region us-gov-east-1 with FIPS enabled and DualStack enabled", // documentation + {EpParam("UseFIPS", true), EpParam("Region", "us-gov-east-1"), EpParam("UseDualStack", true)}, // params + {}, // tags + {{/*epUrl*/"https://ds-data-fips.us-gov-east-1.api.aws", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 9*/ + {"For region us-gov-east-1 with FIPS enabled and DualStack disabled", // documentation + {EpParam("UseFIPS", true), EpParam("Region", "us-gov-east-1"), EpParam("UseDualStack", false)}, // params + {}, // tags + {{/*epUrl*/"https://ds-data-fips.us-gov-east-1.amazonaws.com", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 10*/ + {"For region us-gov-east-1 with FIPS disabled and DualStack enabled", // documentation + {EpParam("UseFIPS", false), EpParam("Region", "us-gov-east-1"), EpParam("UseDualStack", true)}, // params + {}, // tags + {{/*epUrl*/"https://ds-data.us-gov-east-1.api.aws", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 11*/ + {"For region us-gov-east-1 with FIPS disabled and DualStack disabled", // documentation + {EpParam("UseFIPS", false), EpParam("Region", "us-gov-east-1"), EpParam("UseDualStack", false)}, // params + {}, // tags + {{/*epUrl*/"https://ds-data.us-gov-east-1.amazonaws.com", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 12*/ + {"For region us-iso-east-1 with FIPS enabled and DualStack enabled", // documentation + {EpParam("UseFIPS", true), EpParam("Region", "us-iso-east-1"), EpParam("UseDualStack", true)}, // params + {}, // tags + {{/*No endpoint expected*/}, /*error*/"FIPS and DualStack are enabled, but this partition does not support one or both"} // expect + }, + /*TEST CASE 13*/ + {"For region us-iso-east-1 with FIPS enabled and DualStack disabled", // documentation + {EpParam("UseFIPS", true), EpParam("Region", "us-iso-east-1"), EpParam("UseDualStack", false)}, // params + {}, // tags + {{/*epUrl*/"https://ds-data-fips.us-iso-east-1.c2s.ic.gov", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 14*/ + {"For region us-iso-east-1 with FIPS disabled and DualStack enabled", // documentation + {EpParam("UseFIPS", false), EpParam("Region", "us-iso-east-1"), EpParam("UseDualStack", true)}, // params + {}, // tags + {{/*No endpoint expected*/}, /*error*/"DualStack is enabled but this partition does not support DualStack"} // expect + }, + /*TEST CASE 15*/ + {"For region us-iso-east-1 with FIPS disabled and DualStack disabled", // documentation + {EpParam("UseFIPS", false), EpParam("Region", "us-iso-east-1"), EpParam("UseDualStack", false)}, // params + {}, // tags + {{/*epUrl*/"https://ds-data.us-iso-east-1.c2s.ic.gov", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 16*/ + {"For region us-isob-east-1 with FIPS enabled and DualStack enabled", // documentation + {EpParam("UseFIPS", true), EpParam("Region", "us-isob-east-1"), EpParam("UseDualStack", true)}, // params + {}, // tags + {{/*No endpoint expected*/}, /*error*/"FIPS and DualStack are enabled, but this partition does not support one or both"} // expect + }, + /*TEST CASE 17*/ + {"For region us-isob-east-1 with FIPS enabled and DualStack disabled", // documentation + {EpParam("UseFIPS", true), EpParam("Region", "us-isob-east-1"), EpParam("UseDualStack", false)}, // params + {}, // tags + {{/*epUrl*/"https://ds-data-fips.us-isob-east-1.sc2s.sgov.gov", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 18*/ + {"For region us-isob-east-1 with FIPS disabled and DualStack enabled", // documentation + {EpParam("UseFIPS", false), EpParam("Region", "us-isob-east-1"), EpParam("UseDualStack", true)}, // params + {}, // tags + {{/*No endpoint expected*/}, /*error*/"DualStack is enabled but this partition does not support DualStack"} // expect + }, + /*TEST CASE 19*/ + {"For region us-isob-east-1 with FIPS disabled and DualStack disabled", // documentation + {EpParam("UseFIPS", false), EpParam("Region", "us-isob-east-1"), EpParam("UseDualStack", false)}, // params + {}, // tags + {{/*epUrl*/"https://ds-data.us-isob-east-1.sc2s.sgov.gov", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 20*/ + {"For custom endpoint with region set and fips disabled and dualstack disabled", // documentation + {EpParam("UseFIPS", false), EpParam("Endpoint", "https://example.com"), EpParam("Region", "us-east-1"), EpParam("UseDualStack", false)}, // params + {}, // tags + {{/*epUrl*/"https://example.com", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 21*/ + {"For custom endpoint with region not set and fips disabled and dualstack disabled", // documentation + {EpParam("UseFIPS", false), EpParam("Endpoint", "https://example.com"), EpParam("UseDualStack", false)}, // params + {}, // tags + {{/*epUrl*/"https://example.com", + {/*authScheme*/}, + {/*properties*/}, + {/*headers*/}}, {/*No error*/}} // expect + }, + /*TEST CASE 22*/ + {"For custom endpoint with fips enabled and dualstack disabled", // documentation + {EpParam("UseFIPS", true), EpParam("Endpoint", "https://example.com"), EpParam("Region", "us-east-1"), EpParam("UseDualStack", false)}, // params + {}, // tags + {{/*No endpoint expected*/}, /*error*/"Invalid Configuration: FIPS and custom endpoint are not supported"} // expect + }, + /*TEST CASE 23*/ + {"For custom endpoint with fips disabled and dualstack enabled", // documentation + {EpParam("UseFIPS", false), EpParam("Endpoint", "https://example.com"), EpParam("Region", "us-east-1"), EpParam("UseDualStack", true)}, // params + {}, // tags + {{/*No endpoint expected*/}, /*error*/"Invalid Configuration: Dualstack and custom endpoint are not supported"} // expect + }, + /*TEST CASE 24*/ + {"Missing region", // documentation + {}, // params + {}, // tags + {{/*No endpoint expected*/}, /*error*/"Invalid Configuration: Missing Region"} // expect + } + }; + return test_cases; +} + +Aws::String RulesToSdkSignerName(const Aws::String& rulesSignerName) +{ + Aws::String sdkSigner = "NullSigner"; + if (rulesSignerName == "sigv4") { + sdkSigner = "SignatureV4"; + } else if (rulesSignerName == "sigv4a") { + sdkSigner = "AsymmetricSignatureV4"; + } else if (rulesSignerName == "none") { + sdkSigner = "NullSigner"; + } else if (rulesSignerName == "bearer") { + sdkSigner = "Bearer"; + } else if (rulesSignerName == "s3Express") { + sdkSigner = "S3ExpressSigner"; + } else { + sdkSigner = rulesSignerName; + } + + return sdkSigner; +} + +void ValidateOutcome(const ResolveEndpointOutcome& outcome, const DirectoryServiceDataEndpointProviderEndpointTestCase::Expect& expect) +{ + if(!expect.error.empty()) + { + ASSERT_FALSE(outcome.IsSuccess()) << "Expected failure with message:\n" << expect.error; + ASSERT_EQ(outcome.GetError().GetMessage(), expect.error); + } + else + { + AWS_ASSERT_SUCCESS(outcome); + ASSERT_EQ(outcome.GetResult().GetURL(), expect.endpoint.url); + const auto expAuthSchemesIt = expect.endpoint.properties.find("authSchemes"); + if (expAuthSchemesIt != expect.endpoint.properties.end()) + { + // in the list of AuthSchemes, select the one with a highest priority + const Aws::Vector priotityList = {"s3Express", "sigv4a", "sigv4", "bearer", "none", ""}; + const auto expectedAuthSchemePropsIt = std::find_first_of(expAuthSchemesIt->second.begin(), expAuthSchemesIt->second.end(), + priotityList.begin(), priotityList.end(), [](const Aws::Vector& props, const Aws::String& expName) + { + const auto& propNameIt = std::find_if(props.begin(), props.end(), [](const EpProp& prop) + { + return prop.GetName() == "name"; + }); + assert(propNameIt != props.end()); + return propNameIt->GetStrValueNoCheck() == expName; + }); + assert(expectedAuthSchemePropsIt != expAuthSchemesIt->second.end()); + + const auto& endpointResultAttrs = outcome.GetResult().GetAttributes(); + ASSERT_TRUE(endpointResultAttrs) << "Expected non-empty EndpointAttributes (authSchemes)"; + for (const auto& expProperty : *expectedAuthSchemePropsIt) + { + if (expProperty.GetName() == "name") { + ASSERT_TRUE(!endpointResultAttrs->authScheme.GetName().empty()); + ASSERT_EQ(RulesToSdkSignerName(expProperty.GetStrValueNoCheck()), endpointResultAttrs->authScheme.GetName()); + } else if (expProperty.GetName() == "signingName") { + ASSERT_TRUE(endpointResultAttrs->authScheme.GetSigningName()); + ASSERT_EQ(expProperty.GetStrValueNoCheck(), endpointResultAttrs->authScheme.GetSigningName().value()); + } else if (expProperty.GetName() == "signingRegion") { + ASSERT_TRUE(endpointResultAttrs->authScheme.GetSigningRegion()); + ASSERT_EQ(expProperty.GetStrValueNoCheck(), endpointResultAttrs->authScheme.GetSigningRegion().value()); + } else if (expProperty.GetName() == "signingRegionSet") { + ASSERT_TRUE(endpointResultAttrs->authScheme.GetSigningRegionSet()); + ASSERT_EQ(expProperty.GetStrValueNoCheck(), endpointResultAttrs->authScheme.GetSigningRegionSet().value()); + } else if (expProperty.GetName() == "disableDoubleEncoding") { + ASSERT_TRUE(endpointResultAttrs->authScheme.GetDisableDoubleEncoding()); + ASSERT_EQ(expProperty.GetBoolValueNoCheck(), endpointResultAttrs->authScheme.GetDisableDoubleEncoding().value()); + } else { + FAIL() << "Unsupported Auth type property " << expProperty.GetName() << ". Need to update test."; + } + } + } + + EXPECT_EQ(expect.endpoint.headers.empty(), outcome.GetResult().GetHeaders().empty()); + for(const auto& expHeaderVec : expect.endpoint.headers) + { + const auto& retHeaderIt = outcome.GetResult().GetHeaders().find(expHeaderVec.first); + ASSERT_TRUE(retHeaderIt != outcome.GetResult().GetHeaders().end()); + + auto retHeaderVec = Aws::Utils::StringUtils::Split(retHeaderIt->second, ';'); + std::sort(retHeaderVec.begin(), retHeaderVec.end()); + + auto expHeaderVecSorted = expHeaderVec.second; + std::sort(expHeaderVecSorted.begin(), expHeaderVecSorted.end()); + + ASSERT_EQ(expHeaderVecSorted, retHeaderVec); + } + } +} + +TEST_P(DirectoryServiceDataEndpointProviderTests, EndpointProviderTest) +{ + const size_t TEST_CASE_IDX = GetParam(); + ASSERT_LT(TEST_CASE_IDX, TEST_CASES->size()) << "Something is wrong with the test fixture itself."; + const DirectoryServiceDataEndpointProviderEndpointTestCase& TEST_CASE = TEST_CASES->at(TEST_CASE_IDX); + SCOPED_TRACE(Aws::String("\nTEST CASE # ") + Aws::Utils::StringUtils::to_string(TEST_CASE_IDX) + ": " + TEST_CASE.documentation); + SCOPED_TRACE(Aws::String("\n--gtest_filter=EndpointTestsFromModel/DirectoryServiceDataEndpointProviderTests.EndpointProviderTest/") + Aws::Utils::StringUtils::to_string(TEST_CASE_IDX)); + + std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG); + ASSERT_TRUE(endpointProvider) << "Failed to allocate/initialize DirectoryServiceDataEndpointProvider"; + + EndpointParameters endpointParameters; + for(const auto& param : TEST_CASE.params) + { + endpointParameters.emplace(endpointParameters.end(), Aws::Endpoint::EndpointParameter(param)); + } + auto resolvedEndpointOutcome = endpointProvider->ResolveEndpoint(endpointParameters); + ValidateOutcome(resolvedEndpointOutcome, TEST_CASE.expect); + +#if 0 // temporarily disabled + for(const auto& operation : TEST_CASE.operationInput) + { + /* + * Most specific to least specific value locations: + staticContextParams + contextParam + clientContextParams + Built-In Bindings + Built-in binding default values + */ + const Aws::Vector> + operationInputParams = {std::cref(operation.builtinParams), std::cref(operation.clientParams), std::cref(operation.operationParams)}; + + for(const auto& paramSource : operationInputParams) + { + for(const auto& param : paramSource.get()) + { + endpointParameters.emplace(endpointParameters.end(), Aws::Endpoint::EndpointParameter(param)); + } + } + auto resolvedEndpointOutcomePerOperation = endpointProvider->ResolveEndpoint(endpointParameters); + ValidateOutcome(resolvedEndpointOutcomePerOperation, TEST_CASE.expect); + } +#endif +} + +INSTANTIATE_TEST_SUITE_P(EndpointTestsFromModel, + DirectoryServiceDataEndpointProviderTests, + ::testing::Range((size_t) 0u, DirectoryServiceDataEndpointProviderTests::TEST_CASES_SZ)); diff --git a/generated/tests/directory-service-data-gen-tests/RunTests.cpp b/generated/tests/directory-service-data-gen-tests/RunTests.cpp new file mode 100644 index 00000000000..f2f10a7c789 --- /dev/null +++ b/generated/tests/directory-service-data-gen-tests/RunTests.cpp @@ -0,0 +1,29 @@ +/** + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0. + */ + +#include +#include +#include +#include +#include + +int main(int argc, char** argv) +{ + Aws::SDKOptions options; + options.loggingOptions.logLevel = Aws::Utils::Logging::LogLevel::Trace; + + AWS_BEGIN_MEMORY_TEST_EX(options, 1024, 128); + Aws::Testing::InitPlatformTest(options); + Aws::Testing::ParseArgs(argc, argv); + + Aws::InitAPI(options); + ::testing::InitGoogleTest(&argc, argv); + int exitCode = RUN_ALL_TESTS(); + Aws::ShutdownAPI(options); + + AWS_END_MEMORY_TEST_EX; + Aws::Testing::ShutdownPlatformTest(options); + return exitCode; +} diff --git a/src/aws-cpp-sdk-core/include/aws/core/VersionConfig.h b/src/aws-cpp-sdk-core/include/aws/core/VersionConfig.h index 8f0e6d2d6bf..f5406ae7595 100644 --- a/src/aws-cpp-sdk-core/include/aws/core/VersionConfig.h +++ b/src/aws-cpp-sdk-core/include/aws/core/VersionConfig.h @@ -4,7 +4,7 @@ */ #pragma once -#define AWS_SDK_VERSION_STRING "1.11.407" +#define AWS_SDK_VERSION_STRING "1.11.408" #define AWS_SDK_VERSION_MAJOR 1 #define AWS_SDK_VERSION_MINOR 11 -#define AWS_SDK_VERSION_PATCH 407 +#define AWS_SDK_VERSION_PATCH 408 diff --git a/tools/code-generation/api-descriptions/ce-2017-10-25.normal.json b/tools/code-generation/api-descriptions/ce-2017-10-25.normal.json index 16f78dc1216..a58a550e307 100644 --- a/tools/code-generation/api-descriptions/ce-2017-10-25.normal.json +++ b/tools/code-generation/api-descriptions/ce-2017-10-25.normal.json @@ -5,13 +5,15 @@ "endpointPrefix":"ce", "jsonVersion":"1.1", "protocol":"json", + "protocols":["json"], "serviceAbbreviation":"AWS Cost Explorer", "serviceFullName":"AWS Cost Explorer Service", "serviceId":"Cost Explorer", "signatureVersion":"v4", "signingName":"ce", "targetPrefix":"AWSInsightsIndexService", - "uid":"ce-2017-10-25" + "uid":"ce-2017-10-25", + "auth":["aws.auth#sigv4"] }, "operations":{ "CreateAnomalyMonitor":{ @@ -651,7 +653,7 @@ }, "DimensionValue":{ "shape":"GenericString", - "documentation":"

          The dimension for the anomaly (for example, an Amazon Web Service in a service monitor).

          " + "documentation":"

          The dimension for the anomaly (for example, an Amazon Web Servicesservice in a service monitor).

          " }, "RootCauses":{ "shape":"RootCauses", @@ -1715,6 +1717,20 @@ }, "documentation":"

          The field that contains a list of disk (local storage) metrics that are associated with the current instance.

          " }, + "DynamoDBCapacityDetails":{ + "type":"structure", + "members":{ + "CapacityUnits":{ + "shape":"GenericString", + "documentation":"

          The capacity unit of the recommended reservation.

          " + }, + "Region":{ + "shape":"GenericString", + "documentation":"

          The Amazon Web Services Region of the recommended reservation.

          " + } + }, + "documentation":"

          The DynamoDB reservations that Amazon Web Services recommends that you purchase.

          " + }, "EBSResourceUtilization":{ "type":"structure", "members":{ @@ -2431,7 +2447,7 @@ }, "Context":{ "shape":"Context", - "documentation":"

          The context for the call to GetDimensionValues. This can be RESERVATIONS or COST_AND_USAGE. The default value is COST_AND_USAGE. If the context is set to RESERVATIONS, the resulting dimension values can be used in the GetReservationUtilization operation. If the context is set to COST_AND_USAGE, the resulting dimension values can be used in the GetCostAndUsage operation.

          If you set the context to COST_AND_USAGE, you can use the following dimensions for searching:

          • AZ - The Availability Zone. An example is us-east-1a.

          • BILLING_ENTITY - The Amazon Web Services seller that your account is with. Possible values are the following:

            - Amazon Web Services(Amazon Web Services): The entity that sells Amazon Web Services.

            - AISPL (Amazon Internet Services Pvt. Ltd.): The local Indian entity that's an acting reseller for Amazon Web Services in India.

            - Amazon Web Services Marketplace: The entity that supports the sale of solutions that are built on Amazon Web Services by third-party software providers.

          • CACHE_ENGINE - The Amazon ElastiCache operating system. Examples are Windows or Linux.

          • DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service deployments. Valid values are SingleAZ and MultiAZ.

          • DATABASE_ENGINE - The Amazon Relational Database Service database. Examples are Aurora or MySQL.

          • INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.

          • INSTANCE_TYPE_FAMILY - A family of instance types optimized to fit different use cases. Examples are Compute Optimized (for example, C4, C5, C6g, and C7g), Memory Optimization (for example, R4, R5n, R5b, and R6g).

          • INVOICING_ENTITY - The name of the entity that issues the Amazon Web Services invoice.

          • LEGAL_ENTITY_NAME - The name of the organization that sells you Amazon Web Services services, such as Amazon Web Services.

          • LINKED_ACCOUNT - The description in the attribute map that includes the full name of the member account. The value field contains the Amazon Web Services ID of the member account.

          • OPERATING_SYSTEM - The operating system. Examples are Windows or Linux.

          • OPERATION - The action performed. Examples include RunInstance and CreateBucket.

          • PLATFORM - The Amazon EC2 operating system. Examples are Windows or Linux.

          • PURCHASE_TYPE - The reservation type of the purchase that this usage is related to. Examples include On-Demand Instances and Standard Reserved Instances.

          • RESERVATION_ID - The unique identifier for an Amazon Web Services Reservation Instance.

          • SAVINGS_PLAN_ARN - The unique identifier for your Savings Plans.

          • SAVINGS_PLANS_TYPE - Type of Savings Plans (EC2 Instance or Compute).

          • SERVICE - The Amazon Web Services service such as Amazon DynamoDB.

          • TENANCY - The tenancy of a resource. Examples are shared or dedicated.

          • USAGE_TYPE - The type of usage. An example is DataTransfer-In-Bytes. The response for the GetDimensionValues operation includes a unit attribute. Examples include GB and Hrs.

          • USAGE_TYPE_GROUP - The grouping of common usage types. An example is Amazon EC2: CloudWatch – Alarms. The response for this operation includes a unit attribute.

          • REGION - The Amazon Web Services Region.

          • RECORD_TYPE - The different types of charges such as Reserved Instance (RI) fees, usage costs, tax refunds, and credits.

          • RESOURCE_ID - The unique identifier of the resource. ResourceId is an opt-in feature only available for last 14 days for EC2-Compute Service.

          If you set the context to RESERVATIONS, you can use the following dimensions for searching:

          • AZ - The Availability Zone. An example is us-east-1a.

          • CACHE_ENGINE - The Amazon ElastiCache operating system. Examples are Windows or Linux.

          • DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service deployments. Valid values are SingleAZ and MultiAZ.

          • INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.

          • LINKED_ACCOUNT - The description in the attribute map that includes the full name of the member account. The value field contains the Amazon Web Services ID of the member account.

          • PLATFORM - The Amazon EC2 operating system. Examples are Windows or Linux.

          • REGION - The Amazon Web Services Region.

          • SCOPE (Utilization only) - The scope of a Reserved Instance (RI). Values are regional or a single Availability Zone.

          • TAG (Coverage only) - The tags that are associated with a Reserved Instance (RI).

          • TENANCY - The tenancy of a resource. Examples are shared or dedicated.

          If you set the context to SAVINGS_PLANS, you can use the following dimensions for searching:

          • SAVINGS_PLANS_TYPE - Type of Savings Plans (EC2 Instance or Compute)

          • PAYMENT_OPTION - The payment option for the given Savings Plans (for example, All Upfront)

          • REGION - The Amazon Web Services Region.

          • INSTANCE_TYPE_FAMILY - The family of instances (For example, m5)

          • LINKED_ACCOUNT - The description in the attribute map that includes the full name of the member account. The value field contains the Amazon Web Services ID of the member account.

          • SAVINGS_PLAN_ARN - The unique identifier for your Savings Plans.

          " + "documentation":"

          The context for the call to GetDimensionValues. This can be RESERVATIONS or COST_AND_USAGE. The default value is COST_AND_USAGE. If the context is set to RESERVATIONS, the resulting dimension values can be used in the GetReservationUtilization operation. If the context is set to COST_AND_USAGE, the resulting dimension values can be used in the GetCostAndUsage operation.

          If you set the context to COST_AND_USAGE, you can use the following dimensions for searching:

          • AZ - The Availability Zone. An example is us-east-1a.

          • BILLING_ENTITY - The Amazon Web Services seller that your account is with. Possible values are the following:

            - Amazon Web Services(Amazon Web Services): The entity that sells Amazon Web Servicesservices.

            - AISPL (Amazon Internet Services Pvt. Ltd.): The local Indian entity that's an acting reseller for Amazon Web Servicesservices in India.

            - Amazon Web Services Marketplace: The entity that supports the sale of solutions that are built on Amazon Web Services by third-party software providers.

          • CACHE_ENGINE - The Amazon ElastiCache operating system. Examples are Windows or Linux.

          • DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service deployments. Valid values are SingleAZ and MultiAZ.

          • DATABASE_ENGINE - The Amazon Relational Database Service database. Examples are Aurora or MySQL.

          • INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.

          • INSTANCE_TYPE_FAMILY - A family of instance types optimized to fit different use cases. Examples are Compute Optimized (for example, C4, C5, C6g, and C7g), Memory Optimization (for example, R4, R5n, R5b, and R6g).

          • INVOICING_ENTITY - The name of the entity that issues the Amazon Web Services invoice.

          • LEGAL_ENTITY_NAME - The name of the organization that sells you Amazon Web Services services, such as Amazon Web Services.

          • LINKED_ACCOUNT - The description in the attribute map that includes the full name of the member account. The value field contains the Amazon Web Services ID of the member account.

          • OPERATING_SYSTEM - The operating system. Examples are Windows or Linux.

          • OPERATION - The action performed. Examples include RunInstance and CreateBucket.

          • PLATFORM - The Amazon EC2 operating system. Examples are Windows or Linux.

          • PURCHASE_TYPE - The reservation type of the purchase that this usage is related to. Examples include On-Demand Instances and Standard Reserved Instances.

          • RESERVATION_ID - The unique identifier for an Amazon Web Services Reservation Instance.

          • SAVINGS_PLAN_ARN - The unique identifier for your Savings Plans.

          • SAVINGS_PLANS_TYPE - Type of Savings Plans (EC2 Instance or Compute).

          • SERVICE - The Amazon Web Services service such as Amazon DynamoDB.

          • TENANCY - The tenancy of a resource. Examples are shared or dedicated.

          • USAGE_TYPE - The type of usage. An example is DataTransfer-In-Bytes. The response for the GetDimensionValues operation includes a unit attribute. Examples include GB and Hrs.

          • USAGE_TYPE_GROUP - The grouping of common usage types. An example is Amazon EC2: CloudWatch – Alarms. The response for this operation includes a unit attribute.

          • REGION - The Amazon Web Services Region.

          • RECORD_TYPE - The different types of charges such as Reserved Instance (RI) fees, usage costs, tax refunds, and credits.

          • RESOURCE_ID - The unique identifier of the resource. ResourceId is an opt-in feature only available for last 14 days for EC2-Compute Service.

          If you set the context to RESERVATIONS, you can use the following dimensions for searching:

          • AZ - The Availability Zone. An example is us-east-1a.

          • CACHE_ENGINE - The Amazon ElastiCache operating system. Examples are Windows or Linux.

          • DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service deployments. Valid values are SingleAZ and MultiAZ.

          • INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.

          • LINKED_ACCOUNT - The description in the attribute map that includes the full name of the member account. The value field contains the Amazon Web Services ID of the member account.

          • PLATFORM - The Amazon EC2 operating system. Examples are Windows or Linux.

          • REGION - The Amazon Web Services Region.

          • SCOPE (Utilization only) - The scope of a Reserved Instance (RI). Values are regional or a single Availability Zone.

          • TAG (Coverage only) - The tags that are associated with a Reserved Instance (RI).

          • TENANCY - The tenancy of a resource. Examples are shared or dedicated.

          If you set the context to SAVINGS_PLANS, you can use the following dimensions for searching:

          • SAVINGS_PLANS_TYPE - Type of Savings Plans (EC2 Instance or Compute)

          • PAYMENT_OPTION - The payment option for the given Savings Plans (for example, All Upfront)

          • REGION - The Amazon Web Services Region.

          • INSTANCE_TYPE_FAMILY - The family of instances (For example, m5)

          • LINKED_ACCOUNT - The description in the attribute map that includes the full name of the member account. The value field contains the Amazon Web Services ID of the member account.

          • SAVINGS_PLAN_ARN - The unique identifier for your Savings Plans.

          " }, "Filter":{"shape":"Expression"}, "SortBy":{ @@ -3967,15 +3983,15 @@ }, "AverageUtilization":{ "shape":"GenericString", - "documentation":"

          The average utilization of your instances. Amazon Web Services uses this to calculate your recommended reservation purchases.

          " + "documentation":"

          The average utilization of your recommendations. Amazon Web Services uses this to calculate your recommended reservation purchases.

          " }, "EstimatedBreakEvenInMonths":{ "shape":"GenericString", - "documentation":"

          How long Amazon Web Services estimates that it takes for this instance to start saving you money, in months.

          " + "documentation":"

          How long Amazon Web Services estimates that it takes for this recommendation to start saving you money, in months.

          " }, "CurrencyCode":{ "shape":"GenericString", - "documentation":"

          The currency code that Amazon Web Services used to calculate the costs for this instance.

          " + "documentation":"

          The currency code that Amazon Web Services used to calculate the costs for this recommendation.

          " }, "EstimatedMonthlySavingsAmount":{ "shape":"GenericString", @@ -3995,11 +4011,31 @@ }, "UpfrontCost":{ "shape":"GenericString", - "documentation":"

          How much purchasing this instance costs you upfront.

          " + "documentation":"

          How much purchasing this recommendation costs you upfront.

          " }, "RecurringStandardMonthlyCost":{ "shape":"GenericString", - "documentation":"

          How much purchasing this instance costs you on a monthly basis.

          " + "documentation":"

          How much purchasing this recommendation costs you on a monthly basis.

          " + }, + "ReservedCapacityDetails":{ + "shape":"ReservedCapacityDetails", + "documentation":"

          Details about the reservations that Amazon Web Services recommends that you purchase.

          " + }, + "RecommendedNumberOfCapacityUnitsToPurchase":{ + "shape":"GenericString", + "documentation":"

          The number of reserved capacity units that Amazon Web Services recommends that you purchase.

          " + }, + "MinimumNumberOfCapacityUnitsUsedPerHour":{ + "shape":"GenericString", + "documentation":"

          The minimum number of provisioned capacity units that you used in an hour during the historical period. Amazon Web Services uses this to calculate your recommended reservation purchases.

          " + }, + "MaximumNumberOfCapacityUnitsUsedPerHour":{ + "shape":"GenericString", + "documentation":"

          The maximum number of provisioned capacity units that you used in an hour during the historical period. Amazon Web Services uses this to calculate your recommended reservation purchases.

          " + }, + "AverageNumberOfCapacityUnitsUsedPerHour":{ + "shape":"GenericString", + "documentation":"

          The average number of provisioned capacity units that you used in an hour during the historical period. Amazon Web Services uses this to calculate your recommended reservation purchases.

          " } }, "documentation":"

          Details about your recommended reservation purchase.

          " @@ -4074,6 +4110,16 @@ "type":"list", "member":{"shape":"ReservationUtilizationGroup"} }, + "ReservedCapacityDetails":{ + "type":"structure", + "members":{ + "DynamoDBCapacityDetails":{ + "shape":"DynamoDBCapacityDetails", + "documentation":"

          The DynamoDB reservations that Amazon Web Services recommends that you purchase.

          " + } + }, + "documentation":"

          Details about the reservations that Amazon Web Services recommends that you purchase.

          " + }, "ReservedHours":{"type":"string"}, "ReservedNormalizedUnits":{"type":"string"}, "ResourceDetails":{ @@ -4281,7 +4327,7 @@ "members":{ "Service":{ "shape":"GenericString", - "documentation":"

          The Amazon Web Service name that's associated with the cost anomaly.

          " + "documentation":"

          The Amazon Web Servicesservice name that's associated with the cost anomaly.

          " }, "Region":{ "shape":"GenericString", @@ -4300,7 +4346,7 @@ "documentation":"

          The member account name value that's associated with the cost anomaly.

          " } }, - "documentation":"

          The combination of Amazon Web Service, linked account, linked account name, Region, and usage type where a cost anomaly is observed. The linked account name will only be available when the account name can be identified.

          " + "documentation":"

          The combination of Amazon Web Servicesservice, linked account, linked account name, Region, and usage type where a cost anomaly is observed. The linked account name will only be available when the account name can be identified.

          " }, "RootCauses":{ "type":"list", diff --git a/tools/code-generation/api-descriptions/directory-service-data-2023-05-31.normal.json b/tools/code-generation/api-descriptions/directory-service-data-2023-05-31.normal.json new file mode 100644 index 00000000000..722826c46bf --- /dev/null +++ b/tools/code-generation/api-descriptions/directory-service-data-2023-05-31.normal.json @@ -0,0 +1,1688 @@ +{ + "version":"2.0", + "metadata":{ + "apiVersion":"2023-05-31", + "endpointPrefix":"ds-data", + "jsonVersion":"1.1", + "protocol":"rest-json", + "protocols":["rest-json"], + "serviceFullName":"AWS Directory Service Data", + "serviceId":"Directory Service Data", + "signatureVersion":"v4", + "signingName":"ds-data", + "uid":"directory-service-data-2023-05-31" + }, + "operations":{ + "AddGroupMember":{ + "name":"AddGroupMember", + "http":{ + "method":"POST", + "requestUri":"/GroupMemberships/AddGroupMember", + "responseCode":200 + }, + "input":{"shape":"AddGroupMemberRequest"}, + "output":{"shape":"AddGroupMemberResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

          Adds an existing user, group, or computer as a group member.

          " + }, + "CreateGroup":{ + "name":"CreateGroup", + "http":{ + "method":"POST", + "requestUri":"/Groups/CreateGroup", + "responseCode":200 + }, + "input":{"shape":"CreateGroupRequest"}, + "output":{"shape":"CreateGroupResult"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

          Creates a new group.

          " + }, + "CreateUser":{ + "name":"CreateUser", + "http":{ + "method":"POST", + "requestUri":"/Users/CreateUser", + "responseCode":200 + }, + "input":{"shape":"CreateUserRequest"}, + "output":{"shape":"CreateUserResult"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

          Creates a new user.

          " + }, + "DeleteGroup":{ + "name":"DeleteGroup", + "http":{ + "method":"POST", + "requestUri":"/Groups/DeleteGroup", + "responseCode":200 + }, + "input":{"shape":"DeleteGroupRequest"}, + "output":{"shape":"DeleteGroupResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

          Deletes a group.

          " + }, + "DeleteUser":{ + "name":"DeleteUser", + "http":{ + "method":"POST", + "requestUri":"/Users/DeleteUser", + "responseCode":200 + }, + "input":{"shape":"DeleteUserRequest"}, + "output":{"shape":"DeleteUserResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

          Deletes a user.

          " + }, + "DescribeGroup":{ + "name":"DescribeGroup", + "http":{ + "method":"POST", + "requestUri":"/Groups/DescribeGroup", + "responseCode":200 + }, + "input":{"shape":"DescribeGroupRequest"}, + "output":{"shape":"DescribeGroupResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

          Returns information about a specific group.

          " + }, + "DescribeUser":{ + "name":"DescribeUser", + "http":{ + "method":"POST", + "requestUri":"/Users/DescribeUser", + "responseCode":200 + }, + "input":{"shape":"DescribeUserRequest"}, + "output":{"shape":"DescribeUserResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

          Returns information about a specific user.

          " + }, + "DisableUser":{ + "name":"DisableUser", + "http":{ + "method":"POST", + "requestUri":"/Users/DisableUser", + "responseCode":200 + }, + "input":{"shape":"DisableUserRequest"}, + "output":{"shape":"DisableUserResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

          Deactivates an active user account. For information about how to enable an inactive user account, see ResetUserPassword in the Directory Service API Reference.

          " + }, + "ListGroupMembers":{ + "name":"ListGroupMembers", + "http":{ + "method":"POST", + "requestUri":"/GroupMemberships/ListGroupMembers", + "responseCode":200 + }, + "input":{"shape":"ListGroupMembersRequest"}, + "output":{"shape":"ListGroupMembersResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

          Returns member information for the specified group.

          This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the ListGroupMembers.NextToken member contains a token that you pass in the next call to ListGroupMembers. This retrieves the next set of items.

          You can also specify a maximum number of return results with the MaxResults parameter.

          " + }, + "ListGroups":{ + "name":"ListGroups", + "http":{ + "method":"POST", + "requestUri":"/Groups/ListGroups", + "responseCode":200 + }, + "input":{"shape":"ListGroupsRequest"}, + "output":{"shape":"ListGroupsResult"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

          Returns group information for the specified directory.

          This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the ListGroups.NextToken member contains a token that you pass in the next call to ListGroups. This retrieves the next set of items.

          You can also specify a maximum number of return results with the MaxResults parameter.

          " + }, + "ListGroupsForMember":{ + "name":"ListGroupsForMember", + "http":{ + "method":"POST", + "requestUri":"/GroupMemberships/ListGroupsForMember", + "responseCode":200 + }, + "input":{"shape":"ListGroupsForMemberRequest"}, + "output":{"shape":"ListGroupsForMemberResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

          Returns group information for the specified member.

          This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the ListGroupsForMember.NextToken member contains a token that you pass in the next call to ListGroupsForMember. This retrieves the next set of items.

          You can also specify a maximum number of return results with the MaxResults parameter.

          " + }, + "ListUsers":{ + "name":"ListUsers", + "http":{ + "method":"POST", + "requestUri":"/Users/ListUsers", + "responseCode":200 + }, + "input":{"shape":"ListUsersRequest"}, + "output":{"shape":"ListUsersResult"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

          Returns user information for the specified directory.

          This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the ListUsers.NextToken member contains a token that you pass in the next call to ListUsers. This retrieves the next set of items.

          You can also specify a maximum number of return results with the MaxResults parameter.

          " + }, + "RemoveGroupMember":{ + "name":"RemoveGroupMember", + "http":{ + "method":"POST", + "requestUri":"/GroupMemberships/RemoveGroupMember", + "responseCode":200 + }, + "input":{"shape":"RemoveGroupMemberRequest"}, + "output":{"shape":"RemoveGroupMemberResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

          Removes a member from a group.

          " + }, + "SearchGroups":{ + "name":"SearchGroups", + "http":{ + "method":"POST", + "requestUri":"/Groups/SearchGroups", + "responseCode":200 + }, + "input":{"shape":"SearchGroupsRequest"}, + "output":{"shape":"SearchGroupsResult"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

          Searches the specified directory for a group. You can find groups that match the SearchString parameter with the value of their attributes included in the SearchString parameter.

          This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the SearchGroups.NextToken member contains a token that you pass in the next call to SearchGroups. This retrieves the next set of items.

          You can also specify a maximum number of return results with the MaxResults parameter.

          " + }, + "SearchUsers":{ + "name":"SearchUsers", + "http":{ + "method":"POST", + "requestUri":"/Users/SearchUsers", + "responseCode":200 + }, + "input":{"shape":"SearchUsersRequest"}, + "output":{"shape":"SearchUsersResult"}, + "errors":[ + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

          Searches the specified directory for a user. You can find users that match the SearchString parameter with the value of their attributes included in the SearchString parameter.

          This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the SearchUsers.NextToken member contains a token that you pass in the next call to SearchUsers. This retrieves the next set of items.

          You can also specify a maximum number of return results with the MaxResults parameter.

          " + }, + "UpdateGroup":{ + "name":"UpdateGroup", + "http":{ + "method":"POST", + "requestUri":"/Groups/UpdateGroup", + "responseCode":200 + }, + "input":{"shape":"UpdateGroupRequest"}, + "output":{"shape":"UpdateGroupResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

          Updates group information.

          " + }, + "UpdateUser":{ + "name":"UpdateUser", + "http":{ + "method":"POST", + "requestUri":"/Users/UpdateUser", + "responseCode":200 + }, + "input":{"shape":"UpdateUserRequest"}, + "output":{"shape":"UpdateUserResult"}, + "errors":[ + {"shape":"ResourceNotFoundException"}, + {"shape":"AccessDeniedException"}, + {"shape":"InternalServerException"}, + {"shape":"ValidationException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottlingException"} + ], + "documentation":"

          Updates user information.

          " + } + }, + "shapes":{ + "AccessDeniedException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ExceptionMessage"}, + "Reason":{ + "shape":"AccessDeniedReason", + "documentation":"

          Reason the request was unauthorized.

          " + } + }, + "documentation":"

          You don't have permission to perform the request or access the directory. It can also occur when the DirectoryId doesn't exist or the user, member, or group might be outside of your organizational unit (OU).

          Make sure that you have the authentication and authorization to perform the action. Review the directory information in the request, and make sure that the object isn't outside of your OU.

          ", + "error":{ + "httpStatusCode":403, + "senderFault":true + }, + "exception":true + }, + "AccessDeniedReason":{ + "type":"string", + "enum":[ + "IAM_AUTH", + "DIRECTORY_AUTH", + "DATA_DISABLED" + ] + }, + "AddGroupMemberRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "GroupName", + "MemberName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

          A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

          A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

          If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

          This parameter is optional when using the CLI or SDK.

          ", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the group.

          ", + "location":"querystring", + "locationName":"DirectoryId" + }, + "GroupName":{ + "shape":"GroupName", + "documentation":"

          The name of the group.

          " + }, + "MemberName":{ + "shape":"MemberName", + "documentation":"

          The SAMAccountName of the user, group, or computer to add as a group member.

          " + }, + "MemberRealm":{ + "shape":"Realm", + "documentation":"

          The domain name that's associated with the group member. This parameter is required only when adding a member outside of your Managed Microsoft AD domain to a group inside of your Managed Microsoft AD domain. This parameter defaults to the Managed Microsoft AD domain.

          This parameter is case insensitive.

          " + } + } + }, + "AddGroupMemberResult":{ + "type":"structure", + "members":{ + } + }, + "AttributeValue":{ + "type":"structure", + "members":{ + "BOOL":{ + "shape":"BooleanAttributeValue", + "documentation":"

          Indicates that the attribute type value is a boolean. For example:

          \"BOOL\": true

          " + }, + "N":{ + "shape":"NumberAttributeValue", + "documentation":"

          Indicates that the attribute type value is a number. For example:

          \"N\": \"16\"

          " + }, + "S":{ + "shape":"StringAttributeValue", + "documentation":"

          Indicates that the attribute type value is a string. For example:

          \"S\": \"S Group\"

          " + }, + "SS":{ + "shape":"StringSetAttributeValue", + "documentation":"

          Indicates that the attribute type value is a string set. For example:

          \"SS\": [\"sample_service_class/host.sample.com:1234/sample_service_name_1\", \"sample_service_class/host.sample.com:1234/sample_service_name_2\"]

          " + } + }, + "documentation":"

          The data type for an attribute. Each attribute value is described as a name-value pair. The name is the AD schema name, and the value is the data itself. For a list of supported attributes, see Directory Service Data Attributes.

          ", + "union":true + }, + "Attributes":{ + "type":"map", + "key":{"shape":"LdapDisplayName"}, + "value":{"shape":"AttributeValue"}, + "max":25, + "min":1 + }, + "Boolean":{ + "type":"boolean", + "box":true + }, + "BooleanAttributeValue":{ + "type":"boolean", + "box":true, + "sensitive":true + }, + "ClientToken":{ + "type":"string", + "max":128, + "min":1, + "pattern":"^[\\x00-\\x7F]+$" + }, + "ConflictException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ExceptionMessage"} + }, + "documentation":"

          This error will occur when you try to create a resource that conflicts with an existing object. It can also occur when adding a member to a group that the member is already in.

          This error can be caused by a request sent within the 8-hour idempotency window with the same client token but different input parameters. Client tokens should not be re-used across different requests. After 8 hours, any request with the same client token is treated as a new request.

          ", + "error":{ + "httpStatusCode":409, + "senderFault":true + }, + "exception":true + }, + "CreateGroupRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

          A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

          A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

          If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

          This parameter is optional when using the CLI or SDK.

          ", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the group.

          ", + "location":"querystring", + "locationName":"DirectoryId" + }, + "GroupScope":{ + "shape":"GroupScope", + "documentation":"

          The scope of the AD group. For details, see Active Directory security group scope.

          " + }, + "GroupType":{ + "shape":"GroupType", + "documentation":"

          The AD group type. For details, see Active Directory security group type.

          " + }, + "OtherAttributes":{ + "shape":"Attributes", + "documentation":"

          An expression that defines one or more attributes with the data type and value of each attribute.

          " + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

          The name of the group.

          " + } + } + }, + "CreateGroupResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the group.

          " + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

          The name of the group.

          " + }, + "SID":{ + "shape":"SID", + "documentation":"

          The unique security identifier (SID) of the group.

          " + } + } + }, + "CreateUserRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

          A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

          A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

          If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

          This parameter is optional when using the CLI or SDK.

          ", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that’s associated with the user.

          ", + "location":"querystring", + "locationName":"DirectoryId" + }, + "EmailAddress":{ + "shape":"EmailAddress", + "documentation":"

          The email address of the user.

          " + }, + "GivenName":{ + "shape":"GivenName", + "documentation":"

          The first name of the user.

          " + }, + "OtherAttributes":{ + "shape":"Attributes", + "documentation":"

          An expression that defines one or more attribute names with the data type and value of each attribute. A key is an attribute name, and the value is a list of maps. For a list of supported attributes, see Directory Service Data Attributes.

          Attribute names are case insensitive.

          " + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

          The name of the user.

          " + }, + "Surname":{ + "shape":"Surname", + "documentation":"

          The last name of the user.

          " + } + } + }, + "CreateUserResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory where the address block is added.

          " + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

          The name of the user.

          " + }, + "SID":{ + "shape":"SID", + "documentation":"

          The unique security identifier (SID) of the user.

          " + } + } + }, + "DeleteGroupRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

          A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

          A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

          If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

          This parameter is optional when using the CLI or SDK.

          ", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the group.

          ", + "location":"querystring", + "locationName":"DirectoryId" + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

          The name of the group.

          " + } + } + }, + "DeleteGroupResult":{ + "type":"structure", + "members":{ + } + }, + "DeleteUserRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

          A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

          A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

          If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

          This parameter is optional when using the CLI or SDK.

          ", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the user.

          ", + "location":"querystring", + "locationName":"DirectoryId" + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

          The name of the user.

          " + } + } + }, + "DeleteUserResult":{ + "type":"structure", + "members":{ + } + }, + "DescribeGroupRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The Identifier (ID) of the directory associated with the group.

          ", + "location":"querystring", + "locationName":"DirectoryId" + }, + "OtherAttributes":{ + "shape":"LdapDisplayNameList", + "documentation":"

          One or more attributes to be returned for the group. For a list of supported attributes, see Directory Service Data Attributes.

          " + }, + "Realm":{ + "shape":"Realm", + "documentation":"

          The domain name that's associated with the group.

          This parameter is optional, so you can return groups outside of your Managed Microsoft AD domain. When no value is defined, only your Managed Microsoft AD groups are returned.

          This value is case insensitive.

          " + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

          The name of the group.

          " + } + } + }, + "DescribeGroupResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the group.

          " + }, + "DistinguishedName":{ + "shape":"DistinguishedName", + "documentation":"

          The distinguished name of the object.

          " + }, + "GroupScope":{ + "shape":"GroupScope", + "documentation":"

          The scope of the AD group. For details, see Active Directory security groups.

          " + }, + "GroupType":{ + "shape":"GroupType", + "documentation":"

          The AD group type. For details, see Active Directory security group type.

          " + }, + "OtherAttributes":{ + "shape":"Attributes", + "documentation":"

          The attribute values that are returned for the attribute names that are included in the request.

          " + }, + "Realm":{ + "shape":"Realm", + "documentation":"

          The domain name that's associated with the group.

          " + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

          The name of the group.

          " + }, + "SID":{ + "shape":"SID", + "documentation":"

          The unique security identifier (SID) of the group.

          " + } + } + }, + "DescribeUserRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the user.

          ", + "location":"querystring", + "locationName":"DirectoryId" + }, + "OtherAttributes":{ + "shape":"LdapDisplayNameList", + "documentation":"

          One or more attribute names to be returned for the user. A key is an attribute name, and the value is a list of maps. For a list of supported attributes, see Directory Service Data Attributes.

          " + }, + "Realm":{ + "shape":"Realm", + "documentation":"

          The domain name that's associated with the user.

          This parameter is optional, so you can return users outside your Managed Microsoft AD domain. When no value is defined, only your Managed Microsoft AD users are returned.

          This value is case insensitive.

          " + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

          The name of the user.

          " + } + } + }, + "DescribeUserResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the user.

          " + }, + "DistinguishedName":{ + "shape":"DistinguishedName", + "documentation":"

          The distinguished name of the object.

          " + }, + "EmailAddress":{ + "shape":"EmailAddress", + "documentation":"

          The email address of the user.

          " + }, + "Enabled":{ + "shape":"Boolean", + "documentation":"

          Indicates whether the user account is active.

          " + }, + "GivenName":{ + "shape":"GivenName", + "documentation":"

          The first name of the user.

          " + }, + "OtherAttributes":{ + "shape":"Attributes", + "documentation":"

          The attribute values that are returned for the attribute names that are included in the request.

          Attribute names are case insensitive.

          " + }, + "Realm":{ + "shape":"Realm", + "documentation":"

          The domain name that's associated with the user.

          " + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

          The name of the user.

          " + }, + "SID":{ + "shape":"SID", + "documentation":"

          The unique security identifier (SID) of the user.

          " + }, + "Surname":{ + "shape":"Surname", + "documentation":"

          The last name of the user.

          " + }, + "UserPrincipalName":{ + "shape":"UserPrincipalName", + "documentation":"

          The UPN that is an Internet-style login name for a user and is based on the Internet standard RFC 822. The UPN is shorter than the distinguished name and easier to remember.

          " + } + } + }, + "DirectoryId":{ + "type":"string", + "pattern":"^d-[0-9a-f]{10}$" + }, + "DirectoryUnavailableException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ExceptionMessage"}, + "Reason":{ + "shape":"DirectoryUnavailableReason", + "documentation":"

          Reason the request failed for the specified directory.

          " + } + }, + "documentation":"

          The request could not be completed due to a problem in the configuration or current state of the specified directory.

          ", + "error":{ + "httpStatusCode":400, + "senderFault":true + }, + "exception":true, + "retryable":{"throttling":false} + }, + "DirectoryUnavailableReason":{ + "type":"string", + "enum":[ + "INVALID_DIRECTORY_STATE", + "DIRECTORY_TIMEOUT", + "DIRECTORY_RESOURCES_EXCEEDED", + "NO_DISK_SPACE", + "TRUST_AUTH_FAILURE" + ] + }, + "DisableUserRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

          A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

          A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

          If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

          This parameter is optional when using the CLI or SDK.

          ", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the user.

          ", + "location":"querystring", + "locationName":"DirectoryId" + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

          The name of the user.

          " + } + } + }, + "DisableUserResult":{ + "type":"structure", + "members":{ + } + }, + "DistinguishedName":{ + "type":"string", + "max":256, + "min":1, + "sensitive":true + }, + "EmailAddress":{ + "type":"string", + "max":256, + "min":1, + "sensitive":true + }, + "ExceptionMessage":{"type":"string"}, + "GivenName":{ + "type":"string", + "max":64, + "min":1, + "sensitive":true + }, + "Group":{ + "type":"structure", + "required":["SAMAccountName"], + "members":{ + "DistinguishedName":{ + "shape":"DistinguishedName", + "documentation":"

          The distinguished name of the object.

          " + }, + "GroupScope":{ + "shape":"GroupScope", + "documentation":"

          The scope of the AD group. For details, see Active Directory security groups

          " + }, + "GroupType":{ + "shape":"GroupType", + "documentation":"

          The AD group type. For details, see Active Directory security group type.

          " + }, + "OtherAttributes":{ + "shape":"Attributes", + "documentation":"

          An expression of one or more attributes, data types, and the values of a group.

          " + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

          The name of the group.

          " + }, + "SID":{ + "shape":"SID", + "documentation":"

          The unique security identifier (SID) of the group.

          " + } + }, + "documentation":"

          A group object that contains identifying information and attributes for a specified group.

          " + }, + "GroupList":{ + "type":"list", + "member":{"shape":"Group"} + }, + "GroupName":{ + "type":"string", + "max":64, + "min":1, + "pattern":"^[^:;|=+\"*?<>/\\\\,\\[\\]@]+$" + }, + "GroupScope":{ + "type":"string", + "enum":[ + "DomainLocal", + "Global", + "Universal", + "BuiltinLocal" + ] + }, + "GroupSummary":{ + "type":"structure", + "required":[ + "GroupScope", + "GroupType", + "SAMAccountName", + "SID" + ], + "members":{ + "GroupScope":{ + "shape":"GroupScope", + "documentation":"

          The scope of the AD group. For details, see Active Directory security groups.

          " + }, + "GroupType":{ + "shape":"GroupType", + "documentation":"

          The AD group type. For details, see Active Directory security group type.

          " + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

          The name of the group.

          " + }, + "SID":{ + "shape":"SID", + "documentation":"

          The unique security identifier (SID) of the group.

          " + } + }, + "documentation":"

          A structure containing a subset of fields of a group object from a directory.

          " + }, + "GroupSummaryList":{ + "type":"list", + "member":{"shape":"GroupSummary"} + }, + "GroupType":{ + "type":"string", + "enum":[ + "Distribution", + "Security" + ] + }, + "Integer":{ + "type":"integer", + "box":true + }, + "InternalServerException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ExceptionMessage"} + }, + "documentation":"

          The operation didn't succeed because an internal error occurred. Try again later.

          ", + "error":{"httpStatusCode":500}, + "exception":true, + "fault":true, + "retryable":{"throttling":false} + }, + "LdapDisplayName":{ + "type":"string", + "max":63, + "min":1, + "pattern":"^[A-Za-z*][A-Za-z-*]*$" + }, + "LdapDisplayNameList":{ + "type":"list", + "member":{"shape":"LdapDisplayName"}, + "max":25, + "min":1 + }, + "ListGroupMembersRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the group.

          ", + "location":"querystring", + "locationName":"DirectoryId" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

          The maximum number of results to be returned per request.

          " + }, + "MemberRealm":{ + "shape":"Realm", + "documentation":"

          The domain name that's associated with the group member. This parameter defaults to the Managed Microsoft AD domain.

          This parameter is optional and case insensitive.

          " + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

          An encoded paging token for paginated calls that can be passed back to retrieve the next page.

          " + }, + "Realm":{ + "shape":"Realm", + "documentation":"

          The domain name that's associated with the group.

          This parameter is optional, so you can return members from a group outside of your Managed Microsoft AD domain. When no value is defined, only members of your Managed Microsoft AD groups are returned.

          This value is case insensitive.

          " + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

          The name of the group.

          " + } + } + }, + "ListGroupMembersResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          Identifier (ID) of the directory associated with the group.

          " + }, + "MemberRealm":{ + "shape":"Realm", + "documentation":"

          The domain name that's associated with the member.

          " + }, + "Members":{ + "shape":"MemberList", + "documentation":"

          The member information that the request returns.

          " + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

          An encoded paging token for paginated calls that can be passed back to retrieve the next page.

          " + }, + "Realm":{ + "shape":"Realm", + "documentation":"

          The domain name that's associated with the group.

          " + } + } + }, + "ListGroupsForMemberRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the member.

          ", + "location":"querystring", + "locationName":"DirectoryId" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

          The maximum number of results to be returned per request.

          " + }, + "MemberRealm":{ + "shape":"Realm", + "documentation":"

          The domain name that's associated with the group member.

          This parameter is optional, so you can limit your results to the group members in a specific domain.

          This parameter is case insensitive and defaults to Realm

          " + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

          An encoded paging token for paginated calls that can be passed back to retrieve the next page.

          " + }, + "Realm":{ + "shape":"Realm", + "documentation":"

          The domain name that's associated with the group.

          This parameter is optional, so you can return groups outside of your Managed Microsoft AD domain. When no value is defined, only your Managed Microsoft AD groups are returned.

          This value is case insensitive and defaults to your Managed Microsoft AD domain.

          " + }, + "SAMAccountName":{ + "shape":"MemberName", + "documentation":"

          The SAMAccountName of the user, group, or computer that's a member of the group.

          " + } + } + }, + "ListGroupsForMemberResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the member.

          " + }, + "Groups":{ + "shape":"GroupSummaryList", + "documentation":"

          The group information that the request returns.

          " + }, + "MemberRealm":{ + "shape":"Realm", + "documentation":"

          The domain that's associated with the member.

          " + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

          An encoded paging token for paginated calls that can be passed back to retrieve the next page.

          " + }, + "Realm":{ + "shape":"Realm", + "documentation":"

          The domain that's associated with the group.

          " + } + } + }, + "ListGroupsRequest":{ + "type":"structure", + "required":["DirectoryId"], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the group.

          ", + "location":"querystring", + "locationName":"DirectoryId" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

          The maximum number of results to be returned per request.

          " + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

          An encoded paging token for paginated calls that can be passed back to retrieve the next page.

          " + }, + "Realm":{ + "shape":"Realm", + "documentation":"

          The domain name associated with the directory.

          This parameter is optional, so you can return groups outside of your Managed Microsoft AD domain. When no value is defined, only your Managed Microsoft AD groups are returned.

          This value is case insensitive.

          " + } + } + }, + "ListGroupsResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the group.

          " + }, + "Groups":{ + "shape":"GroupSummaryList", + "documentation":"

          The group information that the request returns.

          " + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

          An encoded paging token for paginated calls that can be passed back to retrieve the next page.

          " + }, + "Realm":{ + "shape":"Realm", + "documentation":"

          The domain name associated with the group.

          " + } + } + }, + "ListUsersRequest":{ + "type":"structure", + "required":["DirectoryId"], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the user.

          ", + "location":"querystring", + "locationName":"DirectoryId" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

          The maximum number of results to be returned per request.

          " + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

          An encoded paging token for paginated calls that can be passed back to retrieve the next page.

          " + }, + "Realm":{ + "shape":"Realm", + "documentation":"

          The domain name that's associated with the user.

          This parameter is optional, so you can return users outside of your Managed Microsoft AD domain. When no value is defined, only your Managed Microsoft AD users are returned.

          This value is case insensitive.

          " + } + } + }, + "ListUsersResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the user.

          " + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

          An encoded paging token for paginated calls that can be passed back to retrieve the next page.

          " + }, + "Realm":{ + "shape":"Realm", + "documentation":"

          The domain that's associated with the user.

          " + }, + "Users":{ + "shape":"UserSummaryList", + "documentation":"

          The user information that the request returns.

          " + } + } + }, + "MaxResults":{ + "type":"integer", + "box":true, + "max":250, + "min":1 + }, + "Member":{ + "type":"structure", + "required":[ + "MemberType", + "SAMAccountName", + "SID" + ], + "members":{ + "MemberType":{ + "shape":"MemberType", + "documentation":"

          The AD type of the member object.

          " + }, + "SAMAccountName":{ + "shape":"MemberName", + "documentation":"

          The name of the group member.

          " + }, + "SID":{ + "shape":"SID", + "documentation":"

          The unique security identifier (SID) of the group member.

          " + } + }, + "documentation":"

          A member object that contains identifying information for a specified member.

          " + }, + "MemberList":{ + "type":"list", + "member":{"shape":"Member"} + }, + "MemberName":{ + "type":"string", + "max":63, + "min":1, + "pattern":"^[^:;|=+\"*?<>/\\\\,\\[\\]@]+$" + }, + "MemberType":{ + "type":"string", + "enum":[ + "USER", + "GROUP", + "COMPUTER" + ] + }, + "NextToken":{ + "type":"string", + "max":6144, + "min":1, + "sensitive":true + }, + "NumberAttributeValue":{ + "type":"long", + "box":true, + "sensitive":true + }, + "Realm":{ + "type":"string", + "max":255, + "min":1, + "pattern":"^([a-zA-Z0-9]+[\\\\.-])+([a-zA-Z0-9])+[.]?$" + }, + "RemoveGroupMemberRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "GroupName", + "MemberName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

          A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

          A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

          If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

          This parameter is optional when using the CLI or SDK.

          ", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the member.

          ", + "location":"querystring", + "locationName":"DirectoryId" + }, + "GroupName":{ + "shape":"GroupName", + "documentation":"

          The name of the group.

          " + }, + "MemberName":{ + "shape":"MemberName", + "documentation":"

          The SAMAccountName of the user, group, or computer to remove from the group.

          " + }, + "MemberRealm":{ + "shape":"Realm", + "documentation":"

          The domain name that's associated with the group member. This parameter defaults to the Managed Microsoft AD domain.

          This parameter is optional and case insensitive.

          " + } + } + }, + "RemoveGroupMemberResult":{ + "type":"structure", + "members":{ + } + }, + "ResourceNotFoundException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ExceptionMessage"} + }, + "documentation":"

          The resource couldn't be found.

          ", + "error":{ + "httpStatusCode":404, + "senderFault":true + }, + "exception":true + }, + "SID":{ + "type":"string", + "max":256, + "min":1 + }, + "SearchGroupsRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SearchAttributes", + "SearchString" + ], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the group.

          ", + "location":"querystring", + "locationName":"DirectoryId" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

          The maximum number of results to be returned per request.

          " + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

          An encoded paging token for paginated calls that can be passed back to retrieve the next page.

          " + }, + "Realm":{ + "shape":"Realm", + "documentation":"

          The domain name that's associated with the group.

          This parameter is optional, so you can return groups outside of your Managed Microsoft AD domain. When no value is defined, only your Managed Microsoft AD groups are returned.

          This value is case insensitive.

          " + }, + "SearchAttributes":{ + "shape":"LdapDisplayNameList", + "documentation":"

          One or more data attributes that are used to search for a group. For a list of supported attributes, see Directory Service Data Attributes.

          " + }, + "SearchString":{ + "shape":"SearchString", + "documentation":"

          The attribute value that you want to search for.

          Wildcard (*) searches aren't supported. For a list of supported attributes, see Directory Service Data Attributes.

          " + } + } + }, + "SearchGroupsResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the group.

          " + }, + "Groups":{ + "shape":"GroupList", + "documentation":"

          The group information that the request returns.

          " + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

          An encoded paging token for paginated calls that can be passed back to retrieve the next page.

          " + }, + "Realm":{ + "shape":"Realm", + "documentation":"

          The domain that's associated with the group.

          " + } + } + }, + "SearchString":{ + "type":"string", + "max":64, + "min":1, + "sensitive":true + }, + "SearchUsersRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SearchAttributes", + "SearchString" + ], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the user.

          ", + "location":"querystring", + "locationName":"DirectoryId" + }, + "MaxResults":{ + "shape":"MaxResults", + "documentation":"

          The maximum number of results to be returned per request.

          " + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

          An encoded paging token for paginated calls that can be passed back to retrieve the next page.

          " + }, + "Realm":{ + "shape":"Realm", + "documentation":"

          The domain name that's associated with the user.

          This parameter is optional, so you can return users outside of your Managed Microsoft AD domain. When no value is defined, only your Managed Microsoft AD users are returned.

          This value is case insensitive.

          " + }, + "SearchAttributes":{ + "shape":"LdapDisplayNameList", + "documentation":"

          One or more data attributes that are used to search for a user. For a list of supported attributes, see Directory Service Data Attributes.

          " + }, + "SearchString":{ + "shape":"SearchString", + "documentation":"

          The attribute value that you want to search for.

          Wildcard (*) searches aren't supported. For a list of supported attributes, see Directory Service Data Attributes.

          " + } + } + }, + "SearchUsersResult":{ + "type":"structure", + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory where the address block is added.

          " + }, + "NextToken":{ + "shape":"NextToken", + "documentation":"

          An encoded paging token for paginated calls that can be passed back to retrieve the next page.

          " + }, + "Realm":{ + "shape":"Realm", + "documentation":"

          The domain that's associated with the user.

          " + }, + "Users":{ + "shape":"UserList", + "documentation":"

          The user information that the request returns.

          " + } + } + }, + "StringAttributeValue":{ + "type":"string", + "max":1024, + "min":1, + "sensitive":true + }, + "StringSetAttributeValue":{ + "type":"list", + "member":{"shape":"StringAttributeValue"}, + "max":25, + "min":0, + "sensitive":true + }, + "Surname":{ + "type":"string", + "max":64, + "min":1, + "sensitive":true + }, + "ThrottlingException":{ + "type":"structure", + "required":["Message"], + "members":{ + "Message":{"shape":"ExceptionMessage"}, + "RetryAfterSeconds":{ + "shape":"Integer", + "documentation":"

          The recommended amount of seconds to retry after a throttling exception.

          ", + "location":"header", + "locationName":"Retry-After" + } + }, + "documentation":"

          The limit on the number of requests per second has been exceeded.

          ", + "error":{ + "httpStatusCode":429, + "senderFault":true + }, + "exception":true, + "retryable":{"throttling":true} + }, + "UpdateGroupRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

          A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

          A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

          If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

          This parameter is optional when using the CLI or SDK.

          ", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the group.

          ", + "location":"querystring", + "locationName":"DirectoryId" + }, + "GroupScope":{ + "shape":"GroupScope", + "documentation":"

          The scope of the AD group. For details, see Active Directory security groups.

          " + }, + "GroupType":{ + "shape":"GroupType", + "documentation":"

          The AD group type. For details, see Active Directory security group type.

          " + }, + "OtherAttributes":{ + "shape":"Attributes", + "documentation":"

          An expression that defines one or more attributes with the data type and the value of each attribute.

          " + }, + "SAMAccountName":{ + "shape":"GroupName", + "documentation":"

          The name of the group.

          " + }, + "UpdateType":{ + "shape":"UpdateType", + "documentation":"

          The type of update to be performed. If no value exists for the attribute, use ADD. Otherwise, use REPLACE to change an attribute value or REMOVE to clear the attribute value.

          " + } + } + }, + "UpdateGroupResult":{ + "type":"structure", + "members":{ + } + }, + "UpdateType":{ + "type":"string", + "enum":[ + "ADD", + "REPLACE", + "REMOVE" + ] + }, + "UpdateUserRequest":{ + "type":"structure", + "required":[ + "DirectoryId", + "SAMAccountName" + ], + "members":{ + "ClientToken":{ + "shape":"ClientToken", + "documentation":"

          A unique and case-sensitive identifier that you provide to make sure the idempotency of the request, so multiple identical calls have the same effect as one single call.

          A client token is valid for 8 hours after the first request that uses it completes. After 8 hours, any request with the same client token is treated as a new request. If the request succeeds, any future uses of that token will be idempotent for another 8 hours.

          If you submit a request with the same client token but change one of the other parameters within the 8-hour idempotency window, Directory Service Data returns an ConflictException.

          This parameter is optional when using the CLI or SDK.

          ", + "idempotencyToken":true + }, + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The identifier (ID) of the directory that's associated with the user.

          ", + "location":"querystring", + "locationName":"DirectoryId" + }, + "EmailAddress":{ + "shape":"EmailAddress", + "documentation":"

          The email address of the user.

          " + }, + "GivenName":{ + "shape":"GivenName", + "documentation":"

          The first name of the user.

          " + }, + "OtherAttributes":{ + "shape":"Attributes", + "documentation":"

          An expression that defines one or more attribute names with the data type and value of each attribute. A key is an attribute name, and the value is a list of maps. For a list of supported attributes, see Directory Service Data Attributes.

          Attribute names are case insensitive.

          " + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

          The name of the user.

          " + }, + "Surname":{ + "shape":"Surname", + "documentation":"

          The last name of the user.

          " + }, + "UpdateType":{ + "shape":"UpdateType", + "documentation":"

          The type of update to be performed. If no value exists for the attribute, use ADD. Otherwise, use REPLACE to change an attribute value or REMOVE to clear the attribute value.

          " + } + } + }, + "UpdateUserResult":{ + "type":"structure", + "members":{ + } + }, + "User":{ + "type":"structure", + "required":["SAMAccountName"], + "members":{ + "DistinguishedName":{ + "shape":"DistinguishedName", + "documentation":"

          The distinguished name of the object.

          " + }, + "EmailAddress":{ + "shape":"EmailAddress", + "documentation":"

          The email address of the user.

          " + }, + "Enabled":{ + "shape":"Boolean", + "documentation":"

          Indicates whether the user account is active.

          " + }, + "GivenName":{ + "shape":"GivenName", + "documentation":"

          The first name of the user.

          " + }, + "OtherAttributes":{ + "shape":"Attributes", + "documentation":"

          An expression that includes one or more attributes, data types, and values of a user.

          " + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

          The name of the user.

          " + }, + "SID":{ + "shape":"SID", + "documentation":"

          The unique security identifier (SID) of the user.

          " + }, + "Surname":{ + "shape":"Surname", + "documentation":"

          The last name of the user.

          " + }, + "UserPrincipalName":{ + "shape":"UserPrincipalName", + "documentation":"

          The UPN that is an internet-style login name for a user and based on the internet standard RFC 822. The UPN is shorter than the distinguished name and easier to remember.

          " + } + }, + "documentation":"

          A user object that contains identifying information and attributes for a specified user.

          " + }, + "UserList":{ + "type":"list", + "member":{"shape":"User"} + }, + "UserName":{ + "type":"string", + "max":20, + "min":1, + "pattern":"^[\\w\\-.]+$" + }, + "UserPrincipalName":{ + "type":"string", + "max":256, + "min":1, + "sensitive":true + }, + "UserSummary":{ + "type":"structure", + "required":[ + "Enabled", + "SAMAccountName", + "SID" + ], + "members":{ + "Enabled":{ + "shape":"Boolean", + "documentation":"

          Indicates whether the user account is active.

          " + }, + "GivenName":{ + "shape":"GivenName", + "documentation":"

          The first name of the user.

          " + }, + "SAMAccountName":{ + "shape":"UserName", + "documentation":"

          The name of the user.

          " + }, + "SID":{ + "shape":"SID", + "documentation":"

          The unique security identifier (SID) of the user.

          " + }, + "Surname":{ + "shape":"Surname", + "documentation":"

          The last name of the user.

          " + } + }, + "documentation":"

          A structure containing a subset of the fields of a user object from a directory.

          " + }, + "UserSummaryList":{ + "type":"list", + "member":{"shape":"UserSummary"} + }, + "ValidationException":{ + "type":"structure", + "members":{ + "Message":{"shape":"ExceptionMessage"}, + "Reason":{ + "shape":"ValidationExceptionReason", + "documentation":"

          Reason the request failed validation.

          " + } + }, + "documentation":"

          The request isn't valid. Review the details in the error message to update the invalid parameters or values in your request.

          ", + "error":{ + "httpStatusCode":400, + "senderFault":true + }, + "exception":true + }, + "ValidationExceptionReason":{ + "type":"string", + "enum":[ + "INVALID_REALM", + "INVALID_DIRECTORY_TYPE", + "INVALID_SECONDARY_REGION", + "INVALID_NEXT_TOKEN", + "INVALID_ATTRIBUTE_VALUE", + "INVALID_ATTRIBUTE_NAME", + "INVALID_ATTRIBUTE_FOR_USER", + "INVALID_ATTRIBUTE_FOR_GROUP", + "INVALID_ATTRIBUTE_FOR_SEARCH", + "INVALID_ATTRIBUTE_FOR_MODIFY", + "DUPLICATE_ATTRIBUTE", + "MISSING_ATTRIBUTE", + "ATTRIBUTE_EXISTS", + "LDAP_SIZE_LIMIT_EXCEEDED", + "LDAP_UNSUPPORTED_OPERATION" + ] + } + }, + "documentation":"

          Amazon Web Services Directory Service Data is an extension of Directory Service. This API reference provides detailed information about Directory Service Data operations and object types.

          With Directory Service Data, you can create, read, update, and delete users, groups, and memberships from your Managed Microsoft AD without additional costs and without deploying dedicated management instances. You can also perform built-in object management tasks across directories without direct network connectivity, which simplifies provisioning and access management to achieve fully automated deployments. Directory Service Data supports user and group write operations, such as CreateUser and CreateGroup, within the organizational unit (OU) of your Managed Microsoft AD. Directory Service Data supports read operations, such as ListUsers and ListGroups, on all users, groups, and group memberships within your Managed Microsoft AD and across trusted realms. Directory Service Data supports adding and removing group members in your OU and the Amazon Web Services Delegated Groups OU, so you can grant and deny access to specific roles and permissions. For more information, see Manage users and groups in the Directory Service Administration Guide.

          Directory management operations and configuration changes made against the Directory Service API will also reflect in Directory Service Data API with eventual consistency. You can expect a short delay between management changes, such as adding a new directory trust and calling the Directory Service Data API for the newly created trusted realm.

          Directory Service Data connects to your Managed Microsoft AD domain controllers and performs operations on underlying directory objects. When you create your Managed Microsoft AD, you choose subnets for domain controllers that Directory Service creates on your behalf. If a domain controller is unavailable, Directory Service Data uses an available domain controller. As a result, you might notice eventual consistency while objects replicate from one domain controller to another domain controller. For more information, see What gets created in the Directory Service Administration Guide. Directory limits vary by Managed Microsoft AD edition:

          • Standard edition – Supports 8 transactions per second (TPS) for read operations and 4 TPS for write operations per directory. There's a concurrency limit of 10 concurrent requests.

          • Enterprise edition – Supports 16 transactions per second (TPS) for read operations and 8 TPS for write operations per directory. There's a concurrency limit of 10 concurrent requests.

          • Amazon Web Services Account - Supports a total of 100 TPS for Directory Service Data operations across all directories.

          Directory Service Data only supports the Managed Microsoft AD directory type and is only available in the primary Amazon Web Services Region. For more information, see Managed Microsoft AD and Primary vs additional Regions in the Directory Service Administration Guide.

          " +} diff --git a/tools/code-generation/api-descriptions/ds-2015-04-16.normal.json b/tools/code-generation/api-descriptions/ds-2015-04-16.normal.json index 00e6e0435e9..92bd99148bb 100644 --- a/tools/code-generation/api-descriptions/ds-2015-04-16.normal.json +++ b/tools/code-generation/api-descriptions/ds-2015-04-16.normal.json @@ -452,6 +452,23 @@ ], "documentation":"

          Obtains information about the directories that belong to this account.

          You can retrieve information about specific directories by passing the directory identifiers in the DirectoryIds parameter. Otherwise, all directories that belong to the current account are returned.

          This operation supports pagination with the use of the NextToken request and response parameters. If more results are available, the DescribeDirectoriesResult.NextToken member contains a token that you pass in the next call to DescribeDirectories to retrieve the next set of items.

          You can also specify a maximum number of return results with the Limit parameter.

          " }, + "DescribeDirectoryDataAccess":{ + "name":"DescribeDirectoryDataAccess", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribeDirectoryDataAccessRequest"}, + "output":{"shape":"DescribeDirectoryDataAccessResult"}, + "errors":[ + {"shape":"DirectoryDoesNotExistException"}, + {"shape":"UnsupportedOperationException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ClientException"}, + {"shape":"ServiceException"} + ], + "documentation":"

          Obtains status of directory data access enablement through the Directory Service Data API for the specified directory.

          " + }, "DescribeDomainControllers":{ "name":"DescribeDomainControllers", "http":{ @@ -630,6 +647,25 @@ ], "documentation":"

          Disables alternative client authentication methods for the specified directory.

          " }, + "DisableDirectoryDataAccess":{ + "name":"DisableDirectoryDataAccess", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DisableDirectoryDataAccessRequest"}, + "output":{"shape":"DisableDirectoryDataAccessResult"}, + "errors":[ + {"shape":"DirectoryDoesNotExistException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"UnsupportedOperationException"}, + {"shape":"DirectoryInDesiredStateException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ClientException"}, + {"shape":"ServiceException"} + ], + "documentation":"

          Deactivates access to directory data via the Directory Service Data API for the specified directory.

          " + }, "DisableLDAPS":{ "name":"DisableLDAPS", "http":{ @@ -700,6 +736,25 @@ ], "documentation":"

          Enables alternative client authentication methods for the specified directory.

          " }, + "EnableDirectoryDataAccess":{ + "name":"EnableDirectoryDataAccess", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"EnableDirectoryDataAccessRequest"}, + "output":{"shape":"EnableDirectoryDataAccessResult"}, + "errors":[ + {"shape":"DirectoryDoesNotExistException"}, + {"shape":"DirectoryUnavailableException"}, + {"shape":"UnsupportedOperationException"}, + {"shape":"DirectoryInDesiredStateException"}, + {"shape":"AccessDeniedException"}, + {"shape":"ClientException"}, + {"shape":"ServiceException"} + ], + "documentation":"

          Enables access to directory data via the Directory Service Data API for the specified directory.

          " + }, "EnableLDAPS":{ "name":"EnableLDAPS", "http":{ @@ -990,7 +1045,7 @@ {"shape":"ClientException"}, {"shape":"ServiceException"} ], - "documentation":"

          Resets the password for any user in your Managed Microsoft AD or Simple AD directory.

          You can reset the password for any user in your directory with the following exceptions:

          • For Simple AD, you cannot reset the password for any user that is a member of either the Domain Admins or Enterprise Admins group except for the administrator user.

          • For Managed Microsoft AD, you can only reset the password for a user that is in an OU based off of the NetBIOS name that you typed when you created your directory. For example, you cannot reset the password for a user in the Amazon Web Services Reserved OU. For more information about the OU structure for an Managed Microsoft AD directory, see What Gets Created in the Directory Service Administration Guide.

          " + "documentation":"

          Resets the password for any user in your Managed Microsoft AD or Simple AD directory. Disabled users will become enabled and can be authenticated following the API call.

          You can reset the password for any user in your directory with the following exceptions:

          • For Simple AD, you cannot reset the password for any user that is a member of either the Domain Admins or Enterprise Admins group except for the administrator user.

          • For Managed Microsoft AD, you can only reset the password for a user that is in an OU based off of the NetBIOS name that you typed when you created your directory. For example, you cannot reset the password for a user in the Amazon Web Services Reserved OU. For more information about the OU structure for an Managed Microsoft AD directory, see What Gets Created in the Directory Service Administration Guide.

          " }, "RestoreFromSnapshot":{ "name":"RestoreFromSnapshot", @@ -1219,7 +1274,7 @@ "Message":{"shape":"ExceptionMessage"}, "RequestId":{"shape":"RequestId"} }, - "documentation":"

          Client authentication is not available in this region at this time.

          ", + "documentation":"

          You do not have sufficient access to perform this action.

          ", "exception":true }, "AccessUrl":{ @@ -1244,7 +1299,7 @@ }, "UpdateSecurityGroupForDirectoryControllers":{ "shape":"UpdateSecurityGroupForDirectoryControllers", - "documentation":"

          If set to true, updates the inbound and outbound rules of the security group that has the description: \"Amazon Web Services created security group for directory ID directory controllers.\" Following are the new rules:

          Inbound:

          • Type: Custom UDP Rule, Protocol: UDP, Range: 88, Source: 0.0.0.0/0

          • Type: Custom UDP Rule, Protocol: UDP, Range: 123, Source: 0.0.0.0/0

          • Type: Custom UDP Rule, Protocol: UDP, Range: 138, Source: 0.0.0.0/0

          • Type: Custom UDP Rule, Protocol: UDP, Range: 389, Source: 0.0.0.0/0

          • Type: Custom UDP Rule, Protocol: UDP, Range: 464, Source: 0.0.0.0/0

          • Type: Custom UDP Rule, Protocol: UDP, Range: 445, Source: 0.0.0.0/0

          • Type: Custom TCP Rule, Protocol: TCP, Range: 88, Source: 0.0.0.0/0

          • Type: Custom TCP Rule, Protocol: TCP, Range: 135, Source: 0.0.0.0/0

          • Type: Custom TCP Rule, Protocol: TCP, Range: 445, Source: 0.0.0.0/0

          • Type: Custom TCP Rule, Protocol: TCP, Range: 464, Source: 0.0.0.0/0

          • Type: Custom TCP Rule, Protocol: TCP, Range: 636, Source: 0.0.0.0/0

          • Type: Custom TCP Rule, Protocol: TCP, Range: 1024-65535, Source: 0.0.0.0/0

          • Type: Custom TCP Rule, Protocol: TCP, Range: 3268-33269, Source: 0.0.0.0/0

          • Type: DNS (UDP), Protocol: UDP, Range: 53, Source: 0.0.0.0/0

          • Type: DNS (TCP), Protocol: TCP, Range: 53, Source: 0.0.0.0/0

          • Type: LDAP, Protocol: TCP, Range: 389, Source: 0.0.0.0/0

          • Type: All ICMP, Protocol: All, Range: N/A, Source: 0.0.0.0/0

          Outbound:

          • Type: All traffic, Protocol: All, Range: All, Destination: 0.0.0.0/0

          These security rules impact an internal network interface that is not exposed publicly.

          " + "documentation":"

          If set to true, updates the inbound and outbound rules of the security group that has the description: \"Amazon Web Services created security group for directory ID directory controllers.\" Following are the new rules:

          Inbound:

          • Type: Custom UDP Rule, Protocol: UDP, Range: 88, Source: Managed Microsoft AD VPC IPv4 CIDR

          • Type: Custom UDP Rule, Protocol: UDP, Range: 123, Source: Managed Microsoft AD VPC IPv4 CIDR

          • Type: Custom UDP Rule, Protocol: UDP, Range: 138, Source: Managed Microsoft AD VPC IPv4 CIDR

          • Type: Custom UDP Rule, Protocol: UDP, Range: 389, Source: Managed Microsoft AD VPC IPv4 CIDR

          • Type: Custom UDP Rule, Protocol: UDP, Range: 464, Source: Managed Microsoft AD VPC IPv4 CIDR

          • Type: Custom UDP Rule, Protocol: UDP, Range: 445, Source: Managed Microsoft AD VPC IPv4 CIDR

          • Type: Custom TCP Rule, Protocol: TCP, Range: 88, Source: Managed Microsoft AD VPC IPv4 CIDR

          • Type: Custom TCP Rule, Protocol: TCP, Range: 135, Source: Managed Microsoft AD VPC IPv4 CIDR

          • Type: Custom TCP Rule, Protocol: TCP, Range: 445, Source: Managed Microsoft AD VPC IPv4 CIDR

          • Type: Custom TCP Rule, Protocol: TCP, Range: 464, Source: Managed Microsoft AD VPC IPv4 CIDR

          • Type: Custom TCP Rule, Protocol: TCP, Range: 636, Source: Managed Microsoft AD VPC IPv4 CIDR

          • Type: Custom TCP Rule, Protocol: TCP, Range: 1024-65535, Source: Managed Microsoft AD VPC IPv4 CIDR

          • Type: Custom TCP Rule, Protocol: TCP, Range: 3268-33269, Source: Managed Microsoft AD VPC IPv4 CIDR

          • Type: DNS (UDP), Protocol: UDP, Range: 53, Source: Managed Microsoft AD VPC IPv4 CIDR

          • Type: DNS (TCP), Protocol: TCP, Range: 53, Source: Managed Microsoft AD VPC IPv4 CIDR

          • Type: LDAP, Protocol: TCP, Range: 389, Source: Managed Microsoft AD VPC IPv4 CIDR

          • Type: All ICMP, Protocol: All, Range: N/A, Source: Managed Microsoft AD VPC IPv4 CIDR

          Outbound:

          • Type: All traffic, Protocol: All, Range: All, Destination: 0.0.0.0/0

          These security rules impact an internal network interface that is not exposed publicly.

          " } } }, @@ -1951,7 +2006,7 @@ }, "TrustPassword":{ "shape":"TrustPassword", - "documentation":"

          The trust password. The must be the same password that was used when creating the trust relationship on the external domain.

          " + "documentation":"

          The trust password. The trust password must be the same password that was used when creating the trust relationship on the external domain.

          " }, "TrustDirection":{ "shape":"TrustDirection", @@ -1993,6 +2048,16 @@ "min":1, "pattern":"^(?!.*\\\\|.*\"|.*\\/|.*\\[|.*\\]|.*:|.*;|.*\\||.*=|.*,|.*\\+|.*\\*|.*\\?|.*<|.*>|.*@).*$" }, + "DataAccessStatus":{ + "type":"string", + "enum":[ + "Disabled", + "Disabling", + "Enabled", + "Enabling", + "Failed" + ] + }, "DeleteAssociatedConditionalForwarder":{"type":"boolean"}, "DeleteConditionalForwarderRequest":{ "type":"structure", @@ -2264,6 +2329,25 @@ }, "documentation":"

          Contains the results of the DescribeDirectories operation.

          " }, + "DescribeDirectoryDataAccessRequest":{ + "type":"structure", + "required":["DirectoryId"], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The directory identifier.

          " + } + } + }, + "DescribeDirectoryDataAccessResult":{ + "type":"structure", + "members":{ + "DataAccessStatus":{ + "shape":"DataAccessStatus", + "documentation":"

          The current status of data access through the Directory Service Data API.

          " + } + } + }, "DescribeDomainControllersRequest":{ "type":"structure", "required":["DirectoryId"], @@ -2753,7 +2837,7 @@ }, "Type":{ "shape":"DirectoryType", - "documentation":"

          The directory size.

          " + "documentation":"

          The directory type.

          " }, "VpcSettings":{ "shape":"DirectoryVpcSettingsDescription", @@ -2925,7 +3009,8 @@ "RestoreFailed", "Deleting", "Deleted", - "Failed" + "Failed", + "Updating" ] }, "DirectoryType":{ @@ -2943,7 +3028,7 @@ "Message":{"shape":"ExceptionMessage"}, "RequestId":{"shape":"RequestId"} }, - "documentation":"

          The specified directory is unavailable or could not be found.

          ", + "documentation":"

          The specified directory is unavailable.

          ", "exception":true }, "DirectoryVpcSettings":{ @@ -2999,7 +3084,7 @@ }, "Type":{ "shape":"ClientAuthenticationType", - "documentation":"

          The type of client authentication to disable. Currently, only the parameter, SmartCard is supported.

          " + "documentation":"

          The type of client authentication to disable. Currently the only parameter \"SmartCard\" is supported.

          " } } }, @@ -3008,6 +3093,21 @@ "members":{ } }, + "DisableDirectoryDataAccessRequest":{ + "type":"structure", + "required":["DirectoryId"], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The directory identifier.

          " + } + } + }, + "DisableDirectoryDataAccessResult":{ + "type":"structure", + "members":{ + } + }, "DisableLDAPSRequest":{ "type":"structure", "required":[ @@ -3148,7 +3248,8 @@ "Restoring", "Deleting", "Deleted", - "Failed" + "Failed", + "Updating" ] }, "DomainControllerStatusReason":{"type":"string"}, @@ -3178,6 +3279,21 @@ "members":{ } }, + "EnableDirectoryDataAccessRequest":{ + "type":"structure", + "required":["DirectoryId"], + "members":{ + "DirectoryId":{ + "shape":"DirectoryId", + "documentation":"

          The directory identifier.

          " + } + } + }, + "EnableDirectoryDataAccessResult":{ + "type":"structure", + "members":{ + } + }, "EnableLDAPSRequest":{ "type":"structure", "required":[ @@ -3865,7 +3981,7 @@ }, "RadiusRetries":{ "shape":"RadiusRetries", - "documentation":"

          The maximum number of times that communication with the RADIUS server is attempted.

          " + "documentation":"

          The maximum number of times that communication with the RADIUS server is retried after the initial attempt.

          " }, "SharedSecret":{ "shape":"RadiusSharedSecret", @@ -3903,7 +4019,7 @@ }, "RadiusTimeout":{ "type":"integer", - "max":20, + "max":50, "min":1 }, "RegionDescription":{ @@ -4635,11 +4751,11 @@ "members":{ "Key":{ "shape":"TagKey", - "documentation":"

          Required name of the tag. The string value can be Unicode characters and cannot be prefixed with \"aws:\". The string can contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-]*)$\").

          " + "documentation":"

          Required name of the tag. The string value can be Unicode characters and cannot be prefixed with \"aws:\". The string can contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-', ':', '@'(Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-]*)$\").

          " }, "Value":{ "shape":"TagValue", - "documentation":"

          The optional value of the tag. The string value can be Unicode characters. The string can contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-]*)$\").

          " + "documentation":"

          The optional value of the tag. The string value can be Unicode characters. The string can contain only the set of Unicode letters, digits, white-space, '_', '.', '/', '=', '+', '-', ':', '@' (Java regex: \"^([\\\\p{L}\\\\p{Z}\\\\p{N}_.:/=+\\\\-]*)$\").

          " } }, "documentation":"

          Metadata assigned to a directory consisting of a key-value pair.

          " diff --git a/tools/code-generation/api-descriptions/guardduty-2017-11-28.normal.json b/tools/code-generation/api-descriptions/guardduty-2017-11-28.normal.json index 3d36f7a8c8e..67f67e8bc7e 100644 --- a/tools/code-generation/api-descriptions/guardduty-2017-11-28.normal.json +++ b/tools/code-generation/api-descriptions/guardduty-2017-11-28.normal.json @@ -3739,6 +3739,11 @@ "shape":"String", "documentation":"

          The name of the task group that's associated with the task.

          ", "locationName":"group" + }, + "LaunchType":{ + "shape":"String", + "documentation":"

          A capacity on which the task is running. For example, Fargate and EC2.

          ", + "locationName":"launchType" } }, "documentation":"

          Contains information about the task in an ECS cluster.

          " @@ -5263,7 +5268,7 @@ "SourceIps":{ "shape":"SourceIps", "documentation":"

          The IP of the Kubernetes API caller and the IPs of any proxies or load balancers between the caller and the API endpoint.

          ", - "locationName":"sourceIps" + "locationName":"sourceIPs" }, "UserAgent":{ "shape":"String", diff --git a/tools/code-generation/api-descriptions/mailmanager-2023-10-17.normal.json b/tools/code-generation/api-descriptions/mailmanager-2023-10-17.normal.json index 1991fd06c29..ddfb826d08c 100644 --- a/tools/code-generation/api-descriptions/mailmanager-2023-10-17.normal.json +++ b/tools/code-generation/api-descriptions/mailmanager-2023-10-17.normal.json @@ -11,7 +11,8 @@ "signatureVersion":"v4", "signingName":"ses", "targetPrefix":"MailManagerSvc", - "uid":"mailmanager-2023-10-17" + "uid":"mailmanager-2023-10-17", + "auth":["aws.auth#sigv4"] }, "operations":{ "CreateAddonInstance":{ @@ -717,7 +718,7 @@ {"shape":"ConflictException"}, {"shape":"ResourceNotFoundException"} ], - "documentation":"

          >Update attributes of an already provisioned rule set.

          ", + "documentation":"

          Update attributes of an already provisioned rule set.

          ", "idempotent":true }, "UpdateTrafficPolicy":{ @@ -2725,6 +2726,10 @@ }, "documentation":"

          The textual body content of an email message.

          " }, + "MimeHeaderAttribute":{ + "type":"string", + "pattern":"^X-[a-zA-Z0-9-]{1,256}$" + }, "NameOrArn":{ "type":"string", "max":2048, @@ -3388,6 +3393,10 @@ "Attribute":{ "shape":"RuleStringEmailAttribute", "documentation":"

          The email attribute to evaluate in a string condition expression.

          " + }, + "MimeHeaderAttribute":{ + "shape":"MimeHeaderAttribute", + "documentation":"

          The email MIME X-Header attribute to evaluate in a string condition expression.

          " } }, "documentation":"

          The string to evaluate in a string condition expression.

          ", @@ -3750,9 +3759,14 @@ "type":"list", "member":{"shape":"String"} }, + "StringValue":{ + "type":"string", + "max":2048, + "min":1 + }, "StringValueList":{ "type":"list", - "member":{"shape":"String"}, + "member":{"shape":"StringValue"}, "max":10, "min":1 }, @@ -4052,5 +4066,5 @@ "exception":true } }, - "documentation":"

          AWS SES Mail Manager API

          AWS SES Mail Manager API contains operations and data types that comprise the Mail Manager feature of Amazon Simple Email Service.

          Mail Manager is a set of Amazon SES email gateway features designed to help you strengthen your organization's email infrastructure, simplify email workflow management, and streamline email compliance control. To learn more, see the Mail Manager chapter in the Amazon SES Developer Guide.

          " + "documentation":"

          Amazon SES Mail Manager API

          The Amazon SES Mail Manager API contains operations and data types that comprise the Mail Manager feature of Amazon Simple Email Service (SES).

          Mail Manager is a set of Amazon SES email gateway features designed to help you strengthen your organization's email infrastructure, simplify email workflow management, and streamline email compliance control. To learn more, see the Mail Manager chapter in the Amazon SES Developer Guide.

          " } diff --git a/tools/code-generation/api-descriptions/rds-2014-10-31.normal.json b/tools/code-generation/api-descriptions/rds-2014-10-31.normal.json index 8a726e1b3ff..98b62383429 100644 --- a/tools/code-generation/api-descriptions/rds-2014-10-31.normal.json +++ b/tools/code-generation/api-descriptions/rds-2014-10-31.normal.json @@ -2703,7 +2703,7 @@ {"shape":"CertificateNotFoundFault"}, {"shape":"TenantDatabaseQuotaExceededFault"} ], - "documentation":"

          Creates a new DB instance from a DB snapshot. The target database is created from the source database restore point with most of the source's original configuration, including the default security group and DB parameter group. By default, the new DB instance is created as a Single-AZ deployment, except when the instance is a SQL Server instance that has an option group associated with mirroring. In this case, the instance becomes a Multi-AZ deployment, not a Single-AZ deployment.

          If you want to replace your original DB instance with the new, restored DB instance, then rename your original DB instance before you call the RestoreDBInstanceFromDBSnapshot operation. RDS doesn't allow two DB instances with the same name. After you have renamed your original DB instance with a different identifier, then you can pass the original name of the DB instance as the DBInstanceIdentifier in the call to the RestoreDBInstanceFromDBSnapshot operation. The result is that you replace the original DB instance with the DB instance created from the snapshot.

          If you are restoring from a shared manual DB snapshot, the DBSnapshotIdentifier must be the ARN of the shared DB snapshot.

          This command doesn't apply to Aurora MySQL and Aurora PostgreSQL. For Aurora, use RestoreDBClusterFromSnapshot.

          " + "documentation":"

          Creates a new DB instance from a DB snapshot. The target database is created from the source database restore point with most of the source's original configuration, including the default security group and DB parameter group. By default, the new DB instance is created as a Single-AZ deployment, except when the instance is a SQL Server instance that has an option group associated with mirroring. In this case, the instance becomes a Multi-AZ deployment, not a Single-AZ deployment.

          If you want to replace your original DB instance with the new, restored DB instance, then rename your original DB instance before you call the RestoreDBInstanceFromDBSnapshot operation. RDS doesn't allow two DB instances with the same name. After you have renamed your original DB instance with a different identifier, then you can pass the original name of the DB instance as the DBInstanceIdentifier in the call to the RestoreDBInstanceFromDBSnapshot operation. The result is that you replace the original DB instance with the DB instance created from the snapshot.

          If you are restoring from a shared manual DB snapshot, the DBSnapshotIdentifier must be the ARN of the shared DB snapshot.

          To restore from a DB snapshot with an unsupported engine version, you must first upgrade the engine version of the snapshot. For more information about upgrading a RDS for MySQL DB snapshot engine version, see Upgrading a MySQL DB snapshot engine version. For more information about upgrading a RDS for PostgreSQL DB snapshot engine version, Upgrading a PostgreSQL DB snapshot engine version.

          This command doesn't apply to Aurora MySQL and Aurora PostgreSQL. For Aurora, use RestoreDBClusterFromSnapshot.

          " }, "RestoreDBInstanceFromS3":{ "name":"RestoreDBInstanceFromS3", diff --git a/tools/code-generation/api-descriptions/s3-2006-03-01.normal.json b/tools/code-generation/api-descriptions/s3-2006-03-01.normal.json index 2d55da80e16..dfc7ca0e2c4 100644 --- a/tools/code-generation/api-descriptions/s3-2006-03-01.normal.json +++ b/tools/code-generation/api-descriptions/s3-2006-03-01.normal.json @@ -39,7 +39,7 @@ "input":{"shape":"CompleteMultipartUploadRequest"}, "output":{"shape":"CompleteMultipartUploadOutput"}, "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadComplete.html", - "documentation":"

          Completes a multipart upload by assembling previously uploaded parts.

          You first initiate the multipart upload and then upload all parts using the UploadPart operation or the UploadPartCopy operation. After successfully uploading all relevant parts of an upload, you call this CompleteMultipartUpload operation to complete the upload. Upon receiving this request, Amazon S3 concatenates all the parts in ascending order by part number to create a new object. In the CompleteMultipartUpload request, you must provide the parts list and ensure that the parts list is complete. The CompleteMultipartUpload API operation concatenates the parts that you provide in the list. For each part in the list, you must provide the PartNumber value and the ETag value that are returned after that part was uploaded.

          The processing of a CompleteMultipartUpload request could take several minutes to finalize. After Amazon S3 begins processing the request, it sends an HTTP response header that specifies a 200 OK response. While processing is in progress, Amazon S3 periodically sends white space characters to keep the connection from timing out. A request could fail after the initial 200 OK response has been sent. This means that a 200 OK response can contain either a success or an error. The error response might be embedded in the 200 OK response. If you call this API operation directly, make sure to design your application to parse the contents of the response and handle it appropriately. If you use Amazon Web Services SDKs, SDKs handle this condition. The SDKs detect the embedded error and apply error handling per your configuration settings (including automatically retrying the request as appropriate). If the condition persists, the SDKs throw an exception (or, for the SDKs that don't use exceptions, they return an error).

          Note that if CompleteMultipartUpload fails, applications should be prepared to retry any failed requests (including 500 error responses). For more information, see Amazon S3 Error Best Practices.

          You can't use Content-Type: application/x-www-form-urlencoded for the CompleteMultipartUpload requests. Also, if you don't provide a Content-Type header, CompleteMultipartUpload can still return a 200 OK response.

          For more information about multipart uploads, see Uploading Objects Using Multipart Upload in the Amazon S3 User Guide.

          Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          Permissions
          • General purpose bucket permissions - For information about permissions required to use the multipart upload API, see Multipart Upload and Permissions in the Amazon S3 User Guide.

          • Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the CreateSession API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see CreateSession .

          • If you provide an additional checksum value in your MultipartUpload requests and the object is encrypted with Key Management Service, you must have permission to use the kms:Decrypt action for the CompleteMultipartUpload request to succeed.

          Special errors
          • Error Code: EntityTooSmall

            • Description: Your proposed upload is smaller than the minimum allowed object size. Each part must be at least 5 MB in size, except the last part.

            • HTTP Status Code: 400 Bad Request

          • Error Code: InvalidPart

            • Description: One or more of the specified parts could not be found. The part might not have been uploaded, or the specified ETag might not have matched the uploaded part's ETag.

            • HTTP Status Code: 400 Bad Request

          • Error Code: InvalidPartOrder

            • Description: The list of parts was not in ascending order. The parts list must be specified in order by part number.

            • HTTP Status Code: 400 Bad Request

          • Error Code: NoSuchUpload

            • Description: The specified multipart upload does not exist. The upload ID might be invalid, or the multipart upload might have been aborted or completed.

            • HTTP Status Code: 404 Not Found

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          The following operations are related to CompleteMultipartUpload:

          " + "documentation":"

          Completes a multipart upload by assembling previously uploaded parts.

          You first initiate the multipart upload and then upload all parts using the UploadPart operation or the UploadPartCopy operation. After successfully uploading all relevant parts of an upload, you call this CompleteMultipartUpload operation to complete the upload. Upon receiving this request, Amazon S3 concatenates all the parts in ascending order by part number to create a new object. In the CompleteMultipartUpload request, you must provide the parts list and ensure that the parts list is complete. The CompleteMultipartUpload API operation concatenates the parts that you provide in the list. For each part in the list, you must provide the PartNumber value and the ETag value that are returned after that part was uploaded.

          The processing of a CompleteMultipartUpload request could take several minutes to finalize. After Amazon S3 begins processing the request, it sends an HTTP response header that specifies a 200 OK response. While processing is in progress, Amazon S3 periodically sends white space characters to keep the connection from timing out. A request could fail after the initial 200 OK response has been sent. This means that a 200 OK response can contain either a success or an error. The error response might be embedded in the 200 OK response. If you call this API operation directly, make sure to design your application to parse the contents of the response and handle it appropriately. If you use Amazon Web Services SDKs, SDKs handle this condition. The SDKs detect the embedded error and apply error handling per your configuration settings (including automatically retrying the request as appropriate). If the condition persists, the SDKs throw an exception (or, for the SDKs that don't use exceptions, they return an error).

          Note that if CompleteMultipartUpload fails, applications should be prepared to retry any failed requests (including 500 error responses). For more information, see Amazon S3 Error Best Practices.

          You can't use Content-Type: application/x-www-form-urlencoded for the CompleteMultipartUpload requests. Also, if you don't provide a Content-Type header, CompleteMultipartUpload can still return a 200 OK response.

          For more information about multipart uploads, see Uploading Objects Using Multipart Upload in the Amazon S3 User Guide.

          Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          Permissions
          • General purpose bucket permissions - For information about permissions required to use the multipart upload API, see Multipart Upload and Permissions in the Amazon S3 User Guide.

            If you provide an additional checksum value in your MultipartUpload requests and the object is encrypted with Key Management Service, you must have permission to use the kms:Decrypt action for the CompleteMultipartUpload request to succeed.

          • Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the CreateSession API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see CreateSession .

            If the object is encrypted with SSE-KMS, you must also have the kms:GenerateDataKey and kms:Decrypt permissions in IAM identity-based policies and KMS key policies for the KMS key.

          Special errors
          • Error Code: EntityTooSmall

            • Description: Your proposed upload is smaller than the minimum allowed object size. Each part must be at least 5 MB in size, except the last part.

            • HTTP Status Code: 400 Bad Request

          • Error Code: InvalidPart

            • Description: One or more of the specified parts could not be found. The part might not have been uploaded, or the specified ETag might not have matched the uploaded part's ETag.

            • HTTP Status Code: 400 Bad Request

          • Error Code: InvalidPartOrder

            • Description: The list of parts was not in ascending order. The parts list must be specified in order by part number.

            • HTTP Status Code: 400 Bad Request

          • Error Code: NoSuchUpload

            • Description: The specified multipart upload does not exist. The upload ID might be invalid, or the multipart upload might have been aborted or completed.

            • HTTP Status Code: 404 Not Found

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          The following operations are related to CompleteMultipartUpload:

          " }, "CopyObject":{ "name":"CopyObject", @@ -53,7 +53,7 @@ {"shape":"ObjectNotInActiveTierError"} ], "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectCOPY.html", - "documentation":"

          Creates a copy of an object that is already stored in Amazon S3.

          You can store individual objects of up to 5 TB in Amazon S3. You create a copy of your object up to 5 GB in size in a single atomic action using this API. However, to copy an object greater than 5 GB, you must use the multipart upload Upload Part - Copy (UploadPartCopy) API. For more information, see Copy Object Using the REST Multipart Upload API.

          You can copy individual objects between general purpose buckets, between directory buckets, and between general purpose buckets and directory buckets.

          • Amazon S3 supports copy operations using Multi-Region Access Points only as a destination when using the Multi-Region Access Point ARN.

          • Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          • VPC endpoints don't support cross-Region requests (including copies). If you're using VPC endpoints, your source and destination buckets should be in the same Amazon Web Services Region as your VPC endpoint.

          Both the Region that you want to copy the object from and the Region that you want to copy the object to must be enabled for your account. For more information about how to enable a Region for your account, see Enable or disable a Region for standalone accounts in the Amazon Web Services Account Management Guide.

          Amazon S3 transfer acceleration does not support cross-Region copies. If you request a cross-Region copy using a transfer acceleration endpoint, you get a 400 Bad Request error. For more information, see Transfer Acceleration.

          Authentication and authorization

          All CopyObject requests must be authenticated and signed by using IAM credentials (access key ID and secret access key for the IAM identities). All headers with the x-amz- prefix, including x-amz-copy-source, must be signed. For more information, see REST Authentication.

          Directory buckets - You must use the IAM credentials to authenticate and authorize your access to the CopyObject API operation, instead of using the temporary security credentials through the CreateSession API operation.

          Amazon Web Services CLI or SDKs handles authentication and authorization on your behalf.

          Permissions

          You must have read access to the source object and write access to the destination bucket.

          • General purpose bucket permissions - You must have permissions in an IAM policy based on the source and destination bucket types in a CopyObject operation.

            • If the source object is in a general purpose bucket, you must have s3:GetObject permission to read the source object that is being copied.

            • If the destination bucket is a general purpose bucket, you must have s3:PutObject permission to write the object copy to the destination bucket.

          • Directory bucket permissions - You must have permissions in a bucket policy or an IAM identity-based policy based on the source and destination bucket types in a CopyObject operation.

            • If the source object that you want to copy is in a directory bucket, you must have the s3express:CreateSession permission in the Action element of a policy to read the object. By default, the session is in the ReadWrite mode. If you want to restrict the access, you can explicitly set the s3express:SessionMode condition key to ReadOnly on the copy source bucket.

            • If the copy destination is a directory bucket, you must have the s3express:CreateSession permission in the Action element of a policy to write the object to the destination. The s3express:SessionMode condition key can't be set to ReadOnly on the copy destination bucket.

            For example policies, see Example bucket policies for S3 Express One Zone and Amazon Web Services Identity and Access Management (IAM) identity-based policies for S3 Express One Zone in the Amazon S3 User Guide.

          Response and special errors

          When the request is an HTTP 1.1 request, the response is chunk encoded. When the request is not an HTTP 1.1 request, the response would not contain the Content-Length. You always need to read the entire response body to check if the copy succeeds.

          • If the copy is successful, you receive a response with information about the copied object.

          • A copy request might return an error when Amazon S3 receives the copy request or while Amazon S3 is copying the files. A 200 OK response can contain either a success or an error.

            • If the error occurs before the copy action starts, you receive a standard Amazon S3 error.

            • If the error occurs during the copy operation, the error response is embedded in the 200 OK response. For example, in a cross-region copy, you may encounter throttling and receive a 200 OK response. For more information, see Resolve the Error 200 response when copying objects to Amazon S3. The 200 OK status code means the copy was accepted, but it doesn't mean the copy is complete. Another example is when you disconnect from Amazon S3 before the copy is complete, Amazon S3 might cancel the copy and you may receive a 200 OK response. You must stay connected to Amazon S3 until the entire response is successfully received and processed.

              If you call this API operation directly, make sure to design your application to parse the content of the response and handle it appropriately. If you use Amazon Web Services SDKs, SDKs handle this condition. The SDKs detect the embedded error and apply error handling per your configuration settings (including automatically retrying the request as appropriate). If the condition persists, the SDKs throw an exception (or, for the SDKs that don't use exceptions, they return an error).

          Charge

          The copy request charge is based on the storage class and Region that you specify for the destination object. The request can also result in a data retrieval charge for the source if the source storage class bills for data retrieval. If the copy source is in a different region, the data transfer is billed to the copy source account. For pricing information, see Amazon S3 pricing.

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          The following operations are related to CopyObject:

          ", + "documentation":"

          Creates a copy of an object that is already stored in Amazon S3.

          You can store individual objects of up to 5 TB in Amazon S3. You create a copy of your object up to 5 GB in size in a single atomic action using this API. However, to copy an object greater than 5 GB, you must use the multipart upload Upload Part - Copy (UploadPartCopy) API. For more information, see Copy Object Using the REST Multipart Upload API.

          You can copy individual objects between general purpose buckets, between directory buckets, and between general purpose buckets and directory buckets.

          • Amazon S3 supports copy operations using Multi-Region Access Points only as a destination when using the Multi-Region Access Point ARN.

          • Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          • VPC endpoints don't support cross-Region requests (including copies). If you're using VPC endpoints, your source and destination buckets should be in the same Amazon Web Services Region as your VPC endpoint.

          Both the Region that you want to copy the object from and the Region that you want to copy the object to must be enabled for your account. For more information about how to enable a Region for your account, see Enable or disable a Region for standalone accounts in the Amazon Web Services Account Management Guide.

          Amazon S3 transfer acceleration does not support cross-Region copies. If you request a cross-Region copy using a transfer acceleration endpoint, you get a 400 Bad Request error. For more information, see Transfer Acceleration.

          Authentication and authorization

          All CopyObject requests must be authenticated and signed by using IAM credentials (access key ID and secret access key for the IAM identities). All headers with the x-amz- prefix, including x-amz-copy-source, must be signed. For more information, see REST Authentication.

          Directory buckets - You must use the IAM credentials to authenticate and authorize your access to the CopyObject API operation, instead of using the temporary security credentials through the CreateSession API operation.

          Amazon Web Services CLI or SDKs handles authentication and authorization on your behalf.

          Permissions

          You must have read access to the source object and write access to the destination bucket.

          • General purpose bucket permissions - You must have permissions in an IAM policy based on the source and destination bucket types in a CopyObject operation.

            • If the source object is in a general purpose bucket, you must have s3:GetObject permission to read the source object that is being copied.

            • If the destination bucket is a general purpose bucket, you must have s3:PutObject permission to write the object copy to the destination bucket.

          • Directory bucket permissions - You must have permissions in a bucket policy or an IAM identity-based policy based on the source and destination bucket types in a CopyObject operation.

            • If the source object that you want to copy is in a directory bucket, you must have the s3express:CreateSession permission in the Action element of a policy to read the object. By default, the session is in the ReadWrite mode. If you want to restrict the access, you can explicitly set the s3express:SessionMode condition key to ReadOnly on the copy source bucket.

            • If the copy destination is a directory bucket, you must have the s3express:CreateSession permission in the Action element of a policy to write the object to the destination. The s3express:SessionMode condition key can't be set to ReadOnly on the copy destination bucket.

            If the object is encrypted with SSE-KMS, you must also have the kms:GenerateDataKey and kms:Decrypt permissions in IAM identity-based policies and KMS key policies for the KMS key.

            For example policies, see Example bucket policies for S3 Express One Zone and Amazon Web Services Identity and Access Management (IAM) identity-based policies for S3 Express One Zone in the Amazon S3 User Guide.

          Response and special errors

          When the request is an HTTP 1.1 request, the response is chunk encoded. When the request is not an HTTP 1.1 request, the response would not contain the Content-Length. You always need to read the entire response body to check if the copy succeeds.

          • If the copy is successful, you receive a response with information about the copied object.

          • A copy request might return an error when Amazon S3 receives the copy request or while Amazon S3 is copying the files. A 200 OK response can contain either a success or an error.

            • If the error occurs before the copy action starts, you receive a standard Amazon S3 error.

            • If the error occurs during the copy operation, the error response is embedded in the 200 OK response. For example, in a cross-region copy, you may encounter throttling and receive a 200 OK response. For more information, see Resolve the Error 200 response when copying objects to Amazon S3. The 200 OK status code means the copy was accepted, but it doesn't mean the copy is complete. Another example is when you disconnect from Amazon S3 before the copy is complete, Amazon S3 might cancel the copy and you may receive a 200 OK response. You must stay connected to Amazon S3 until the entire response is successfully received and processed.

              If you call this API operation directly, make sure to design your application to parse the content of the response and handle it appropriately. If you use Amazon Web Services SDKs, SDKs handle this condition. The SDKs detect the embedded error and apply error handling per your configuration settings (including automatically retrying the request as appropriate). If the condition persists, the SDKs throw an exception (or, for the SDKs that don't use exceptions, they return an error).

          Charge

          The copy request charge is based on the storage class and Region that you specify for the destination object. The request can also result in a data retrieval charge for the source if the source storage class bills for data retrieval. If the copy source is in a different region, the data transfer is billed to the copy source account. For pricing information, see Amazon S3 pricing.

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          The following operations are related to CopyObject:

          ", "alias":"PutObjectCopy", "staticContextParams":{ "DisableS3ExpressSessionAuth":{"value":true} @@ -88,7 +88,7 @@ "input":{"shape":"CreateMultipartUploadRequest"}, "output":{"shape":"CreateMultipartUploadOutput"}, "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadInitiate.html", - "documentation":"

          This action initiates a multipart upload and returns an upload ID. This upload ID is used to associate all of the parts in the specific multipart upload. You specify this upload ID in each of your subsequent upload part requests (see UploadPart). You also include this upload ID in the final request to either complete or abort the multipart upload request. For more information about multipart uploads, see Multipart Upload Overview in the Amazon S3 User Guide.

          After you initiate a multipart upload and upload one or more parts, to stop being charged for storing the uploaded parts, you must either complete or abort the multipart upload. Amazon S3 frees up the space used to store the parts and stops charging you for storing them only after you either complete or abort a multipart upload.

          If you have configured a lifecycle rule to abort incomplete multipart uploads, the created multipart upload must be completed within the number of days specified in the bucket lifecycle configuration. Otherwise, the incomplete multipart upload becomes eligible for an abort action and Amazon S3 aborts the multipart upload. For more information, see Aborting Incomplete Multipart Uploads Using a Bucket Lifecycle Configuration.

          • Directory buckets - S3 Lifecycle is not supported by directory buckets.

          • Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          Request signing

          For request signing, multipart upload is just a series of regular requests. You initiate a multipart upload, send one or more requests to upload parts, and then complete the multipart upload process. You sign each request individually. There is nothing special about signing multipart upload requests. For more information about signing, see Authenticating Requests (Amazon Web Services Signature Version 4) in the Amazon S3 User Guide.

          Permissions
          • General purpose bucket permissions - To perform a multipart upload with encryption using an Key Management Service (KMS) KMS key, the requester must have permission to the kms:Decrypt and kms:GenerateDataKey actions on the key. The requester must also have permissions for the kms:GenerateDataKey action for the CreateMultipartUpload API. Then, the requester needs permissions for the kms:Decrypt action on the UploadPart and UploadPartCopy APIs. These permissions are required because Amazon S3 must decrypt and read data from the encrypted file parts before it completes the multipart upload. For more information, see Multipart upload API and permissions and Protecting data using server-side encryption with Amazon Web Services KMS in the Amazon S3 User Guide.

          • Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the CreateSession API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see CreateSession .

          Encryption
          • General purpose buckets - Server-side encryption is for data encryption at rest. Amazon S3 encrypts your data as it writes it to disks in its data centers and decrypts it when you access it. Amazon S3 automatically encrypts all new objects that are uploaded to an S3 bucket. When doing a multipart upload, if you don't specify encryption information in your request, the encryption setting of the uploaded parts is set to the default encryption configuration of the destination bucket. By default, all buckets have a base level of encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3). If the destination bucket has a default encryption configuration that uses server-side encryption with an Key Management Service (KMS) key (SSE-KMS), or a customer-provided encryption key (SSE-C), Amazon S3 uses the corresponding KMS key, or a customer-provided key to encrypt the uploaded parts. When you perform a CreateMultipartUpload operation, if you want to use a different type of encryption setting for the uploaded parts, you can request that Amazon S3 encrypts the object with a different encryption key (such as an Amazon S3 managed key, a KMS key, or a customer-provided key). When the encryption setting in your request is different from the default encryption configuration of the destination bucket, the encryption setting in your request takes precedence. If you choose to provide your own encryption key, the request headers you provide in UploadPart and UploadPartCopy requests must match the headers you used in the CreateMultipartUpload request.

            • Use KMS keys (SSE-KMS) that include the Amazon Web Services managed key (aws/s3) and KMS customer managed keys stored in Key Management Service (KMS) – If you want Amazon Web Services to manage the keys used to encrypt data, specify the following headers in the request.

              • x-amz-server-side-encryption

              • x-amz-server-side-encryption-aws-kms-key-id

              • x-amz-server-side-encryption-context

              • If you specify x-amz-server-side-encryption:aws:kms, but don't provide x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon Web Services managed key (aws/s3 key) in KMS to protect the data.

              • To perform a multipart upload with encryption by using an Amazon Web Services KMS key, the requester must have permission to the kms:Decrypt and kms:GenerateDataKey* actions on the key. These permissions are required because Amazon S3 must decrypt and read data from the encrypted file parts before it completes the multipart upload. For more information, see Multipart upload API and permissions and Protecting data using server-side encryption with Amazon Web Services KMS in the Amazon S3 User Guide.

              • If your Identity and Access Management (IAM) user or role is in the same Amazon Web Services account as the KMS key, then you must have these permissions on the key policy. If your IAM user or role is in a different account from the key, then you must have the permissions on both the key policy and your IAM user or role.

              • All GET and PUT requests for an object protected by KMS fail if you don't make them by using Secure Sockets Layer (SSL), Transport Layer Security (TLS), or Signature Version 4. For information about configuring any of the officially supported Amazon Web Services SDKs and Amazon Web Services CLI, see Specifying the Signature Version in Request Authentication in the Amazon S3 User Guide.

              For more information about server-side encryption with KMS keys (SSE-KMS), see Protecting Data Using Server-Side Encryption with KMS keys in the Amazon S3 User Guide.

            • Use customer-provided encryption keys (SSE-C) – If you want to manage your own encryption keys, provide all the following headers in the request.

              • x-amz-server-side-encryption-customer-algorithm

              • x-amz-server-side-encryption-customer-key

              • x-amz-server-side-encryption-customer-key-MD5

              For more information about server-side encryption with customer-provided encryption keys (SSE-C), see Protecting data using server-side encryption with customer-provided encryption keys (SSE-C) in the Amazon S3 User Guide.

          • Directory buckets -For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          The following operations are related to CreateMultipartUpload:

          ", + "documentation":"

          This action initiates a multipart upload and returns an upload ID. This upload ID is used to associate all of the parts in the specific multipart upload. You specify this upload ID in each of your subsequent upload part requests (see UploadPart). You also include this upload ID in the final request to either complete or abort the multipart upload request. For more information about multipart uploads, see Multipart Upload Overview in the Amazon S3 User Guide.

          After you initiate a multipart upload and upload one or more parts, to stop being charged for storing the uploaded parts, you must either complete or abort the multipart upload. Amazon S3 frees up the space used to store the parts and stops charging you for storing them only after you either complete or abort a multipart upload.

          If you have configured a lifecycle rule to abort incomplete multipart uploads, the created multipart upload must be completed within the number of days specified in the bucket lifecycle configuration. Otherwise, the incomplete multipart upload becomes eligible for an abort action and Amazon S3 aborts the multipart upload. For more information, see Aborting Incomplete Multipart Uploads Using a Bucket Lifecycle Configuration.

          • Directory buckets - S3 Lifecycle is not supported by directory buckets.

          • Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          Request signing

          For request signing, multipart upload is just a series of regular requests. You initiate a multipart upload, send one or more requests to upload parts, and then complete the multipart upload process. You sign each request individually. There is nothing special about signing multipart upload requests. For more information about signing, see Authenticating Requests (Amazon Web Services Signature Version 4) in the Amazon S3 User Guide.

          Permissions
          • General purpose bucket permissions - To perform a multipart upload with encryption using an Key Management Service (KMS) KMS key, the requester must have permission to the kms:Decrypt and kms:GenerateDataKey actions on the key. The requester must also have permissions for the kms:GenerateDataKey action for the CreateMultipartUpload API. Then, the requester needs permissions for the kms:Decrypt action on the UploadPart and UploadPartCopy APIs. These permissions are required because Amazon S3 must decrypt and read data from the encrypted file parts before it completes the multipart upload. For more information, see Multipart upload API and permissions and Protecting data using server-side encryption with Amazon Web Services KMS in the Amazon S3 User Guide.

          • Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the CreateSession API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see CreateSession .

          Encryption
          • General purpose buckets - Server-side encryption is for data encryption at rest. Amazon S3 encrypts your data as it writes it to disks in its data centers and decrypts it when you access it. Amazon S3 automatically encrypts all new objects that are uploaded to an S3 bucket. When doing a multipart upload, if you don't specify encryption information in your request, the encryption setting of the uploaded parts is set to the default encryption configuration of the destination bucket. By default, all buckets have a base level of encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3). If the destination bucket has a default encryption configuration that uses server-side encryption with an Key Management Service (KMS) key (SSE-KMS), or a customer-provided encryption key (SSE-C), Amazon S3 uses the corresponding KMS key, or a customer-provided key to encrypt the uploaded parts. When you perform a CreateMultipartUpload operation, if you want to use a different type of encryption setting for the uploaded parts, you can request that Amazon S3 encrypts the object with a different encryption key (such as an Amazon S3 managed key, a KMS key, or a customer-provided key). When the encryption setting in your request is different from the default encryption configuration of the destination bucket, the encryption setting in your request takes precedence. If you choose to provide your own encryption key, the request headers you provide in UploadPart and UploadPartCopy requests must match the headers you used in the CreateMultipartUpload request.

            • Use KMS keys (SSE-KMS) that include the Amazon Web Services managed key (aws/s3) and KMS customer managed keys stored in Key Management Service (KMS) – If you want Amazon Web Services to manage the keys used to encrypt data, specify the following headers in the request.

              • x-amz-server-side-encryption

              • x-amz-server-side-encryption-aws-kms-key-id

              • x-amz-server-side-encryption-context

              • If you specify x-amz-server-side-encryption:aws:kms, but don't provide x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon Web Services managed key (aws/s3 key) in KMS to protect the data.

              • To perform a multipart upload with encryption by using an Amazon Web Services KMS key, the requester must have permission to the kms:Decrypt and kms:GenerateDataKey* actions on the key. These permissions are required because Amazon S3 must decrypt and read data from the encrypted file parts before it completes the multipart upload. For more information, see Multipart upload API and permissions and Protecting data using server-side encryption with Amazon Web Services KMS in the Amazon S3 User Guide.

              • If your Identity and Access Management (IAM) user or role is in the same Amazon Web Services account as the KMS key, then you must have these permissions on the key policy. If your IAM user or role is in a different account from the key, then you must have the permissions on both the key policy and your IAM user or role.

              • All GET and PUT requests for an object protected by KMS fail if you don't make them by using Secure Sockets Layer (SSL), Transport Layer Security (TLS), or Signature Version 4. For information about configuring any of the officially supported Amazon Web Services SDKs and Amazon Web Services CLI, see Specifying the Signature Version in Request Authentication in the Amazon S3 User Guide.

              For more information about server-side encryption with KMS keys (SSE-KMS), see Protecting Data Using Server-Side Encryption with KMS keys in the Amazon S3 User Guide.

            • Use customer-provided encryption keys (SSE-C) – If you want to manage your own encryption keys, provide all the following headers in the request.

              • x-amz-server-side-encryption-customer-algorithm

              • x-amz-server-side-encryption-customer-key

              • x-amz-server-side-encryption-customer-key-MD5

              For more information about server-side encryption with customer-provided encryption keys (SSE-C), see Protecting data using server-side encryption with customer-provided encryption keys (SSE-C) in the Amazon S3 User Guide.

          • Directory buckets - For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your CreateSession requests or PUT object requests. Then, new objects are automatically encrypted with the desired encryption settings. For more information, see Protecting data with server-side encryption in the Amazon S3 User Guide. For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

            In the Zonal endpoint API calls (except CopyObject and UploadPartCopy) using the REST API, the encryption request headers must match the encryption settings that are specified in the CreateSession request. You can't override the values of the encryption settings (x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-id, x-amz-server-side-encryption-context, and x-amz-server-side-encryption-bucket-key-enabled) that are specified in the CreateSession request. You don't need to explicitly specify these encryption settings values in Zonal endpoint API calls, and Amazon S3 will use the encryption settings values from the CreateSession request to protect new objects in the directory bucket.

            When you use the CLI or the Amazon Web Services SDKs, for CreateSession, the session token refreshes automatically to avoid service interruptions when a session expires. The CLI or the Amazon Web Services SDKs use the bucket's default encryption configuration for the CreateSession request. It's not supported to override the encryption settings values in the CreateSession request. So in the Zonal endpoint API calls (except CopyObject and UploadPartCopy), the encryption request headers must match the default encryption configuration of the directory bucket.

            For directory buckets, when you perform a CreateMultipartUpload operation and an UploadPartCopy operation, the request headers you provide in the CreateMultipartUpload request must match the default encryption configuration of the destination bucket.

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          The following operations are related to CreateMultipartUpload:

          ", "alias":"InitiateMultipartUpload" }, "CreateSession":{ @@ -102,7 +102,7 @@ "errors":[ {"shape":"NoSuchBucket"} ], - "documentation":"

          Creates a session that establishes temporary security credentials to support fast authentication and authorization for the Zonal endpoint APIs on directory buckets. For more information about Zonal endpoint APIs that include the Availability Zone in the request endpoint, see S3 Express One Zone APIs in the Amazon S3 User Guide.

          To make Zonal endpoint API requests on a directory bucket, use the CreateSession API operation. Specifically, you grant s3express:CreateSession permission to a bucket in a bucket policy or an IAM identity-based policy. Then, you use IAM credentials to make the CreateSession API request on the bucket, which returns temporary security credentials that include the access key ID, secret access key, session token, and expiration. These credentials have associated permissions to access the Zonal endpoint APIs. After the session is created, you don’t need to use other policies to grant permissions to each Zonal endpoint API individually. Instead, in your Zonal endpoint API requests, you sign your requests by applying the temporary security credentials of the session to the request headers and following the SigV4 protocol for authentication. You also apply the session token to the x-amz-s3session-token request header for authorization. Temporary security credentials are scoped to the bucket and expire after 5 minutes. After the expiration time, any calls that you make with those credentials will fail. You must use IAM credentials again to make a CreateSession API request that generates a new set of temporary credentials for use. Temporary credentials cannot be extended or refreshed beyond the original specified interval.

          If you use Amazon Web Services SDKs, SDKs handle the session token refreshes automatically to avoid service interruptions when a session expires. We recommend that you use the Amazon Web Services SDKs to initiate and manage requests to the CreateSession API. For more information, see Performance guidelines and design patterns in the Amazon S3 User Guide.

          • You must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com. Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          • CopyObject API operation - Unlike other Zonal endpoint APIs, the CopyObject API operation doesn't use the temporary security credentials returned from the CreateSession API operation for authentication and authorization. For information about authentication and authorization of the CopyObject API operation on directory buckets, see CopyObject.

          • HeadBucket API operation - Unlike other Zonal endpoint APIs, the HeadBucket API operation doesn't use the temporary security credentials returned from the CreateSession API operation for authentication and authorization. For information about authentication and authorization of the HeadBucket API operation on directory buckets, see HeadBucket.

          Permissions

          To obtain temporary security credentials, you must create a bucket policy or an IAM identity-based policy that grants s3express:CreateSession permission to the bucket. In a policy, you can have the s3express:SessionMode condition key to control who can create a ReadWrite or ReadOnly session. For more information about ReadWrite or ReadOnly sessions, see x-amz-create-session-mode . For example policies, see Example bucket policies for S3 Express One Zone and Amazon Web Services Identity and Access Management (IAM) identity-based policies for S3 Express One Zone in the Amazon S3 User Guide.

          To grant cross-account access to Zonal endpoint APIs, the bucket policy should also grant both accounts the s3express:CreateSession permission.

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          ", + "documentation":"

          Creates a session that establishes temporary security credentials to support fast authentication and authorization for the Zonal endpoint API operations on directory buckets. For more information about Zonal endpoint API operations that include the Availability Zone in the request endpoint, see S3 Express One Zone APIs in the Amazon S3 User Guide.

          To make Zonal endpoint API requests on a directory bucket, use the CreateSession API operation. Specifically, you grant s3express:CreateSession permission to a bucket in a bucket policy or an IAM identity-based policy. Then, you use IAM credentials to make the CreateSession API request on the bucket, which returns temporary security credentials that include the access key ID, secret access key, session token, and expiration. These credentials have associated permissions to access the Zonal endpoint API operations. After the session is created, you don’t need to use other policies to grant permissions to each Zonal endpoint API individually. Instead, in your Zonal endpoint API requests, you sign your requests by applying the temporary security credentials of the session to the request headers and following the SigV4 protocol for authentication. You also apply the session token to the x-amz-s3session-token request header for authorization. Temporary security credentials are scoped to the bucket and expire after 5 minutes. After the expiration time, any calls that you make with those credentials will fail. You must use IAM credentials again to make a CreateSession API request that generates a new set of temporary credentials for use. Temporary credentials cannot be extended or refreshed beyond the original specified interval.

          If you use Amazon Web Services SDKs, SDKs handle the session token refreshes automatically to avoid service interruptions when a session expires. We recommend that you use the Amazon Web Services SDKs to initiate and manage requests to the CreateSession API. For more information, see Performance guidelines and design patterns in the Amazon S3 User Guide.

          • You must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com. Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          • CopyObject API operation - Unlike other Zonal endpoint API operations, the CopyObject API operation doesn't use the temporary security credentials returned from the CreateSession API operation for authentication and authorization. For information about authentication and authorization of the CopyObject API operation on directory buckets, see CopyObject.

          • HeadBucket API operation - Unlike other Zonal endpoint API operations, the HeadBucket API operation doesn't use the temporary security credentials returned from the CreateSession API operation for authentication and authorization. For information about authentication and authorization of the HeadBucket API operation on directory buckets, see HeadBucket.

          Permissions

          To obtain temporary security credentials, you must create a bucket policy or an IAM identity-based policy that grants s3express:CreateSession permission to the bucket. In a policy, you can have the s3express:SessionMode condition key to control who can create a ReadWrite or ReadOnly session. For more information about ReadWrite or ReadOnly sessions, see x-amz-create-session-mode . For example policies, see Example bucket policies for S3 Express One Zone and Amazon Web Services Identity and Access Management (IAM) identity-based policies for S3 Express One Zone in the Amazon S3 User Guide.

          To grant cross-account access to Zonal endpoint API operations, the bucket policy should also grant both accounts the s3express:CreateSession permission.

          If you want to encrypt objects with SSE-KMS, you must also have the kms:GenerateDataKey and the kms:Decrypt permissions in IAM identity-based policies and KMS key policies for the target KMS key.

          Encryption

          For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your CreateSession requests or PUT object requests. Then, new objects are automatically encrypted with the desired encryption settings. For more information, see Protecting data with server-side encryption in the Amazon S3 User Guide. For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

          For Zonal endpoint (object-level) API operations except CopyObject and UploadPartCopy, you authenticate and authorize requests through CreateSession for low latency. To encrypt new objects in a directory bucket with SSE-KMS, you must specify SSE-KMS as the directory bucket's default encryption configuration with a KMS key (specifically, a customer managed key). Then, when a session is created for Zonal endpoint API operations, new objects are automatically encrypted and decrypted with SSE-KMS and S3 Bucket Keys during the session.

          Only 1 customer managed key is supported per directory bucket for the lifetime of the bucket. Amazon Web Services managed key (aws/s3) isn't supported. After you specify SSE-KMS as your bucket's default encryption configuration with a customer managed key, you can't change the customer managed key for the bucket's SSE-KMS configuration.

          In the Zonal endpoint API calls (except CopyObject and UploadPartCopy) using the REST API, you can't override the values of the encryption settings (x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-id, x-amz-server-side-encryption-context, and x-amz-server-side-encryption-bucket-key-enabled) from the CreateSession request. You don't need to explicitly specify these encryption settings values in Zonal endpoint API calls, and Amazon S3 will use the encryption settings values from the CreateSession request to protect new objects in the directory bucket.

          When you use the CLI or the Amazon Web Services SDKs, for CreateSession, the session token refreshes automatically to avoid service interruptions when a session expires. The CLI or the Amazon Web Services SDKs use the bucket's default encryption configuration for the CreateSession request. It's not supported to override the encryption settings values in the CreateSession request. Also, in the Zonal endpoint API calls (except CopyObject and UploadPartCopy), it's not supported to override the values of the encryption settings from the CreateSession request.

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          ", "staticContextParams":{ "DisableS3ExpressSessionAuth":{"value":true} } @@ -156,7 +156,7 @@ "responseCode":204 }, "input":{"shape":"DeleteBucketEncryptionRequest"}, - "documentation":"

          This operation is not supported by directory buckets.

          This implementation of the DELETE action resets the default encryption for the bucket as server-side encryption with Amazon S3 managed keys (SSE-S3). For information about the bucket default encryption feature, see Amazon S3 Bucket Default Encryption in the Amazon S3 User Guide.

          To use this operation, you must have permissions to perform the s3:PutEncryptionConfiguration action. The bucket owner has this permission by default. The bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to your Amazon S3 Resources in the Amazon S3 User Guide.

          The following operations are related to DeleteBucketEncryption:

          ", + "documentation":"

          This implementation of the DELETE action resets the default encryption for the bucket as server-side encryption with Amazon S3 managed keys (SSE-S3).

          Permissions
          • General purpose bucket permissions - The s3:PutEncryptionConfiguration permission is required in a policy. The bucket owner has this permission by default. The bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Operations and Managing Access Permissions to Your Amazon S3 Resources.

          • Directory bucket permissions - To grant access to this API operation, you must have the s3express:PutEncryptionConfiguration permission in an IAM identity-based policy instead of a bucket policy. Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is s3express-control.region.amazonaws.com.

          The following operations are related to DeleteBucketEncryption:

          ", "staticContextParams":{ "UseS3ExpressControlEndpoint":{"value":true} } @@ -396,7 +396,7 @@ }, "input":{"shape":"GetBucketEncryptionRequest"}, "output":{"shape":"GetBucketEncryptionOutput"}, - "documentation":"

          This operation is not supported by directory buckets.

          Returns the default encryption configuration for an Amazon S3 bucket. By default, all buckets have a default encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3). For information about the bucket default encryption feature, see Amazon S3 Bucket Default Encryption in the Amazon S3 User Guide.

          To use this operation, you must have permission to perform the s3:GetEncryptionConfiguration action. The bucket owner has this permission by default. The bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 Resources.

          The following operations are related to GetBucketEncryption:

          ", + "documentation":"

          Returns the default encryption configuration for an Amazon S3 bucket. By default, all buckets have a default encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3).

          Permissions
          • General purpose bucket permissions - The s3:GetEncryptionConfiguration permission is required in a policy. The bucket owner has this permission by default. The bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Operations and Managing Access Permissions to Your Amazon S3 Resources.

          • Directory bucket permissions - To grant access to this API operation, you must have the s3express:GetEncryptionConfiguration permission in an IAM identity-based policy instead of a bucket policy. Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is s3express-control.region.amazonaws.com.

          The following operations are related to GetBucketEncryption:

          ", "staticContextParams":{ "UseS3ExpressControlEndpoint":{"value":true} } @@ -646,7 +646,7 @@ {"shape":"InvalidObjectState"} ], "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectGET.html", - "documentation":"

          Retrieves an object from Amazon S3.

          In the GetObject request, specify the full key name for the object.

          General purpose buckets - Both the virtual-hosted-style requests and the path-style requests are supported. For a virtual hosted-style request example, if you have the object photos/2006/February/sample.jpg, specify the object key name as /photos/2006/February/sample.jpg. For a path-style request example, if you have the object photos/2006/February/sample.jpg in the bucket named examplebucket, specify the object key name as /examplebucket/photos/2006/February/sample.jpg. For more information about request types, see HTTP Host Header Bucket Specification in the Amazon S3 User Guide.

          Directory buckets - Only virtual-hosted-style requests are supported. For a virtual hosted-style request example, if you have the object photos/2006/February/sample.jpg in the bucket named examplebucket--use1-az5--x-s3, specify the object key name as /photos/2006/February/sample.jpg. Also, when you make requests to this API operation, your requests are sent to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          Permissions
          • General purpose bucket permissions - You must have the required permissions in a policy. To use GetObject, you must have the READ access to the object (or version). If you grant READ access to the anonymous user, the GetObject operation returns the object without using an authorization header. For more information, see Specifying permissions in a policy in the Amazon S3 User Guide.

            If you include a versionId in your request header, you must have the s3:GetObjectVersion permission to access a specific version of an object. The s3:GetObject permission is not required in this scenario.

            If you request the current version of an object without a specific versionId in the request header, only the s3:GetObject permission is required. The s3:GetObjectVersion permission is not required in this scenario.

            If the object that you request doesn’t exist, the error that Amazon S3 returns depends on whether you also have the s3:ListBucket permission.

            • If you have the s3:ListBucket permission on the bucket, Amazon S3 returns an HTTP status code 404 Not Found error.

            • If you don’t have the s3:ListBucket permission, Amazon S3 returns an HTTP status code 403 Access Denied error.

          • Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the CreateSession API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see CreateSession .

          Storage classes

          If the object you are retrieving is stored in the S3 Glacier Flexible Retrieval storage class, the S3 Glacier Deep Archive storage class, the S3 Intelligent-Tiering Archive Access tier, or the S3 Intelligent-Tiering Deep Archive Access tier, before you can retrieve the object you must first restore a copy using RestoreObject. Otherwise, this operation returns an InvalidObjectState error. For information about restoring archived objects, see Restoring Archived Objects in the Amazon S3 User Guide.

          Directory buckets - For directory buckets, only the S3 Express One Zone storage class is supported to store newly created objects. Unsupported storage class values won't write a destination object and will respond with the HTTP status code 400 Bad Request.

          Encryption

          Encryption request headers, like x-amz-server-side-encryption, should not be sent for the GetObject requests, if your object uses server-side encryption with Amazon S3 managed encryption keys (SSE-S3), server-side encryption with Key Management Service (KMS) keys (SSE-KMS), or dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS). If you include the header in your GetObject requests for the object that uses these types of keys, you’ll get an HTTP 400 Bad Request error.

          Overriding response header values through the request

          There are times when you want to override certain response header values of a GetObject response. For example, you might override the Content-Disposition response header value through your GetObject request.

          You can override values for a set of response headers. These modified response header values are included only in a successful response, that is, when the HTTP status code 200 OK is returned. The headers you can override using the following query parameters in the request are a subset of the headers that Amazon S3 accepts when you create an object.

          The response headers that you can override for the GetObject response are Cache-Control, Content-Disposition, Content-Encoding, Content-Language, Content-Type, and Expires.

          To override values for a set of response headers in the GetObject response, you can use the following query parameters in the request.

          • response-cache-control

          • response-content-disposition

          • response-content-encoding

          • response-content-language

          • response-content-type

          • response-expires

          When you use these parameters, you must sign the request by using either an Authorization header or a presigned URL. These parameters cannot be used with an unsigned (anonymous) request.

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          The following operations are related to GetObject:

          ", + "documentation":"

          Retrieves an object from Amazon S3.

          In the GetObject request, specify the full key name for the object.

          General purpose buckets - Both the virtual-hosted-style requests and the path-style requests are supported. For a virtual hosted-style request example, if you have the object photos/2006/February/sample.jpg, specify the object key name as /photos/2006/February/sample.jpg. For a path-style request example, if you have the object photos/2006/February/sample.jpg in the bucket named examplebucket, specify the object key name as /examplebucket/photos/2006/February/sample.jpg. For more information about request types, see HTTP Host Header Bucket Specification in the Amazon S3 User Guide.

          Directory buckets - Only virtual-hosted-style requests are supported. For a virtual hosted-style request example, if you have the object photos/2006/February/sample.jpg in the bucket named examplebucket--use1-az5--x-s3, specify the object key name as /photos/2006/February/sample.jpg. Also, when you make requests to this API operation, your requests are sent to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          Permissions
          • General purpose bucket permissions - You must have the required permissions in a policy. To use GetObject, you must have the READ access to the object (or version). If you grant READ access to the anonymous user, the GetObject operation returns the object without using an authorization header. For more information, see Specifying permissions in a policy in the Amazon S3 User Guide.

            If you include a versionId in your request header, you must have the s3:GetObjectVersion permission to access a specific version of an object. The s3:GetObject permission is not required in this scenario.

            If you request the current version of an object without a specific versionId in the request header, only the s3:GetObject permission is required. The s3:GetObjectVersion permission is not required in this scenario.

            If the object that you request doesn’t exist, the error that Amazon S3 returns depends on whether you also have the s3:ListBucket permission.

            • If you have the s3:ListBucket permission on the bucket, Amazon S3 returns an HTTP status code 404 Not Found error.

            • If you don’t have the s3:ListBucket permission, Amazon S3 returns an HTTP status code 403 Access Denied error.

          • Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the CreateSession API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see CreateSession .

            If the object is encrypted using SSE-KMS, you must also have the kms:GenerateDataKey and kms:Decrypt permissions in IAM identity-based policies and KMS key policies for the KMS key.

          Storage classes

          If the object you are retrieving is stored in the S3 Glacier Flexible Retrieval storage class, the S3 Glacier Deep Archive storage class, the S3 Intelligent-Tiering Archive Access tier, or the S3 Intelligent-Tiering Deep Archive Access tier, before you can retrieve the object you must first restore a copy using RestoreObject. Otherwise, this operation returns an InvalidObjectState error. For information about restoring archived objects, see Restoring Archived Objects in the Amazon S3 User Guide.

          Directory buckets - For directory buckets, only the S3 Express One Zone storage class is supported to store newly created objects. Unsupported storage class values won't write a destination object and will respond with the HTTP status code 400 Bad Request.

          Encryption

          Encryption request headers, like x-amz-server-side-encryption, should not be sent for the GetObject requests, if your object uses server-side encryption with Amazon S3 managed encryption keys (SSE-S3), server-side encryption with Key Management Service (KMS) keys (SSE-KMS), or dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS). If you include the header in your GetObject requests for the object that uses these types of keys, you’ll get an HTTP 400 Bad Request error.

          Directory buckets - For directory buckets, there are only two supported options for server-side encryption: SSE-S3 and SSE-KMS. SSE-C isn't supported. For more information, see Protecting data with server-side encryption in the Amazon S3 User Guide.

          Overriding response header values through the request

          There are times when you want to override certain response header values of a GetObject response. For example, you might override the Content-Disposition response header value through your GetObject request.

          You can override values for a set of response headers. These modified response header values are included only in a successful response, that is, when the HTTP status code 200 OK is returned. The headers you can override using the following query parameters in the request are a subset of the headers that Amazon S3 accepts when you create an object.

          The response headers that you can override for the GetObject response are Cache-Control, Content-Disposition, Content-Encoding, Content-Language, Content-Type, and Expires.

          To override values for a set of response headers in the GetObject response, you can use the following query parameters in the request.

          • response-cache-control

          • response-content-disposition

          • response-content-encoding

          • response-content-language

          • response-content-type

          • response-expires

          When you use these parameters, you must sign the request by using either an Authorization header or a presigned URL. These parameters cannot be used with an unsigned (anonymous) request.

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          The following operations are related to GetObject:

          ", "httpChecksum":{ "requestValidationModeMember":"ChecksumMode", "responseAlgorithms":[ @@ -682,7 +682,7 @@ "errors":[ {"shape":"NoSuchKey"} ], - "documentation":"

          Retrieves all the metadata from an object without returning the object itself. This operation is useful if you're interested only in an object's metadata.

          GetObjectAttributes combines the functionality of HeadObject and ListParts. All of the data returned with each of those individual calls can be returned with a single call to GetObjectAttributes.

          Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          Permissions
          • General purpose bucket permissions - To use GetObjectAttributes, you must have READ access to the object. The permissions that you need to use this operation with depend on whether the bucket is versioned. If the bucket is versioned, you need both the s3:GetObjectVersion and s3:GetObjectVersionAttributes permissions for this operation. If the bucket is not versioned, you need the s3:GetObject and s3:GetObjectAttributes permissions. For more information, see Specifying Permissions in a Policy in the Amazon S3 User Guide. If the object that you request does not exist, the error Amazon S3 returns depends on whether you also have the s3:ListBucket permission.

            • If you have the s3:ListBucket permission on the bucket, Amazon S3 returns an HTTP status code 404 Not Found (\"no such key\") error.

            • If you don't have the s3:ListBucket permission, Amazon S3 returns an HTTP status code 403 Forbidden (\"access denied\") error.

          • Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the CreateSession API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see CreateSession .

          Encryption

          Encryption request headers, like x-amz-server-side-encryption, should not be sent for HEAD requests if your object uses server-side encryption with Key Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), or server-side encryption with Amazon S3 managed encryption keys (SSE-S3). The x-amz-server-side-encryption header is used when you PUT an object to S3 and want to specify the encryption method. If you include this header in a GET request for an object that uses these types of keys, you’ll get an HTTP 400 Bad Request error. It's because the encryption method can't be changed when you retrieve the object.

          If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you retrieve the metadata from the object, you must use the following headers to provide the encryption key for the server to be able to retrieve the object's metadata. The headers are:

          • x-amz-server-side-encryption-customer-algorithm

          • x-amz-server-side-encryption-customer-key

          • x-amz-server-side-encryption-customer-key-MD5

          For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided Encryption Keys) in the Amazon S3 User Guide.

          Directory bucket permissions - For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

          Versioning

          Directory buckets - S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the null value of the version ID is supported by directory buckets. You can only specify null to the versionId query parameter in the request.

          Conditional request headers

          Consider the following when using request headers:

          • If both of the If-Match and If-Unmodified-Since headers are present in the request as follows, then Amazon S3 returns the HTTP status code 200 OK and the data requested:

            • If-Match condition evaluates to true.

            • If-Unmodified-Since condition evaluates to false.

            For more information about conditional requests, see RFC 7232.

          • If both of the If-None-Match and If-Modified-Since headers are present in the request as follows, then Amazon S3 returns the HTTP status code 304 Not Modified:

            • If-None-Match condition evaluates to false.

            • If-Modified-Since condition evaluates to true.

            For more information about conditional requests, see RFC 7232.

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          The following actions are related to GetObjectAttributes:

          " + "documentation":"

          Retrieves all the metadata from an object without returning the object itself. This operation is useful if you're interested only in an object's metadata.

          GetObjectAttributes combines the functionality of HeadObject and ListParts. All of the data returned with each of those individual calls can be returned with a single call to GetObjectAttributes.

          Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          Permissions
          • General purpose bucket permissions - To use GetObjectAttributes, you must have READ access to the object. The permissions that you need to use this operation depend on whether the bucket is versioned. If the bucket is versioned, you need both the s3:GetObjectVersion and s3:GetObjectVersionAttributes permissions for this operation. If the bucket is not versioned, you need the s3:GetObject and s3:GetObjectAttributes permissions. For more information, see Specifying Permissions in a Policy in the Amazon S3 User Guide. If the object that you request does not exist, the error Amazon S3 returns depends on whether you also have the s3:ListBucket permission.

            • If you have the s3:ListBucket permission on the bucket, Amazon S3 returns an HTTP status code 404 Not Found (\"no such key\") error.

            • If you don't have the s3:ListBucket permission, Amazon S3 returns an HTTP status code 403 Forbidden (\"access denied\") error.

          • Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the CreateSession API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see CreateSession .

            If the object is encrypted with SSE-KMS, you must also have the kms:GenerateDataKey and kms:Decrypt permissions in IAM identity-based policies and KMS key policies for the KMS key.

          Encryption

          Encryption request headers, like x-amz-server-side-encryption, should not be sent for HEAD requests if your object uses server-side encryption with Key Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), or server-side encryption with Amazon S3 managed encryption keys (SSE-S3). The x-amz-server-side-encryption header is used when you PUT an object to S3 and want to specify the encryption method. If you include this header in a GET request for an object that uses these types of keys, you’ll get an HTTP 400 Bad Request error. It's because the encryption method can't be changed when you retrieve the object.

          If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you retrieve the metadata from the object, you must use the following headers to provide the encryption key for the server to be able to retrieve the object's metadata. The headers are:

          • x-amz-server-side-encryption-customer-algorithm

          • x-amz-server-side-encryption-customer-key

          • x-amz-server-side-encryption-customer-key-MD5

          For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided Encryption Keys) in the Amazon S3 User Guide.

          Directory bucket permissions - For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your CreateSession requests or PUT object requests. Then, new objects are automatically encrypted with the desired encryption settings. For more information, see Protecting data with server-side encryption in the Amazon S3 User Guide. For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

          Versioning

          Directory buckets - S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the null value of the version ID is supported by directory buckets. You can only specify null to the versionId query parameter in the request.

          Conditional request headers

          Consider the following when using request headers:

          • If both of the If-Match and If-Unmodified-Since headers are present in the request as follows, then Amazon S3 returns the HTTP status code 200 OK and the data requested:

            • If-Match condition evaluates to true.

            • If-Unmodified-Since condition evaluates to false.

            For more information about conditional requests, see RFC 7232.

          • If both of the If-None-Match and If-Modified-Since headers are present in the request as follows, then Amazon S3 returns the HTTP status code 304 Not Modified:

            • If-None-Match condition evaluates to false.

            • If-Modified-Since condition evaluates to true.

            For more information about conditional requests, see RFC 7232.

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          The following actions are related to GetObjectAttributes:

          " }, "GetObjectLegalHold":{ "name":"GetObjectLegalHold", @@ -774,7 +774,7 @@ {"shape":"NoSuchKey"} ], "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectHEAD.html", - "documentation":"

          The HEAD operation retrieves metadata from an object without returning the object itself. This operation is useful if you're interested only in an object's metadata.

          A HEAD request has the same options as a GET operation on an object. The response is identical to the GET response except that there is no response body. Because of this, if the HEAD request generates an error, it returns a generic code, such as 400 Bad Request, 403 Forbidden, 404 Not Found, 405 Method Not Allowed, 412 Precondition Failed, or 304 Not Modified. It's not possible to retrieve the exact exception of these error codes.

          Request headers are limited to 8 KB in size. For more information, see Common Request Headers.

          Permissions

          • General purpose bucket permissions - To use HEAD, you must have the s3:GetObject permission. You need the relevant read object (or version) permission for this operation. For more information, see Actions, resources, and condition keys for Amazon S3 in the Amazon S3 User Guide.

            If the object you request doesn't exist, the error that Amazon S3 returns depends on whether you also have the s3:ListBucket permission.

            • If you have the s3:ListBucket permission on the bucket, Amazon S3 returns an HTTP status code 404 Not Found error.

            • If you don’t have the s3:ListBucket permission, Amazon S3 returns an HTTP status code 403 Forbidden error.

          • Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the CreateSession API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see CreateSession .

          Encryption

          Encryption request headers, like x-amz-server-side-encryption, should not be sent for HEAD requests if your object uses server-side encryption with Key Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), or server-side encryption with Amazon S3 managed encryption keys (SSE-S3). The x-amz-server-side-encryption header is used when you PUT an object to S3 and want to specify the encryption method. If you include this header in a HEAD request for an object that uses these types of keys, you’ll get an HTTP 400 Bad Request error. It's because the encryption method can't be changed when you retrieve the object.

          If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you retrieve the metadata from the object, you must use the following headers to provide the encryption key for the server to be able to retrieve the object's metadata. The headers are:

          • x-amz-server-side-encryption-customer-algorithm

          • x-amz-server-side-encryption-customer-key

          • x-amz-server-side-encryption-customer-key-MD5

          For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided Encryption Keys) in the Amazon S3 User Guide.

          Directory bucket permissions - For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

          Versioning
          • If the current version of the object is a delete marker, Amazon S3 behaves as if the object was deleted and includes x-amz-delete-marker: true in the response.

          • If the specified version is a delete marker, the response returns a 405 Method Not Allowed error and the Last-Modified: timestamp response header.

          • Directory buckets - Delete marker is not supported by directory buckets.

          • Directory buckets - S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the null value of the version ID is supported by directory buckets. You can only specify null to the versionId query parameter in the request.

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          The following actions are related to HeadObject:

          " + "documentation":"

          The HEAD operation retrieves metadata from an object without returning the object itself. This operation is useful if you're interested only in an object's metadata.

          A HEAD request has the same options as a GET operation on an object. The response is identical to the GET response except that there is no response body. Because of this, if the HEAD request generates an error, it returns a generic code, such as 400 Bad Request, 403 Forbidden, 404 Not Found, 405 Method Not Allowed, 412 Precondition Failed, or 304 Not Modified. It's not possible to retrieve the exact exception of these error codes.

          Request headers are limited to 8 KB in size. For more information, see Common Request Headers.

          Permissions

          • General purpose bucket permissions - To use HEAD, you must have the s3:GetObject permission. You need the relevant read object (or version) permission for this operation. For more information, see Actions, resources, and condition keys for Amazon S3 in the Amazon S3 User Guide.

            If the object you request doesn't exist, the error that Amazon S3 returns depends on whether you also have the s3:ListBucket permission.

            • If you have the s3:ListBucket permission on the bucket, Amazon S3 returns an HTTP status code 404 Not Found error.

            • If you don’t have the s3:ListBucket permission, Amazon S3 returns an HTTP status code 403 Forbidden error.

          • Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the CreateSession API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see CreateSession .

            If you enable x-amz-checksum-mode in the request and the object is encrypted with Amazon Web Services Key Management Service (Amazon Web Services KMS), you must also have the kms:GenerateDataKey and kms:Decrypt permissions in IAM identity-based policies and KMS key policies for the KMS key to retrieve the checksum of the object.

          Encryption

          Encryption request headers, like x-amz-server-side-encryption, should not be sent for HEAD requests if your object uses server-side encryption with Key Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), or server-side encryption with Amazon S3 managed encryption keys (SSE-S3). The x-amz-server-side-encryption header is used when you PUT an object to S3 and want to specify the encryption method. If you include this header in a HEAD request for an object that uses these types of keys, you’ll get an HTTP 400 Bad Request error. It's because the encryption method can't be changed when you retrieve the object.

          If you encrypt an object by using server-side encryption with customer-provided encryption keys (SSE-C) when you store the object in Amazon S3, then when you retrieve the metadata from the object, you must use the following headers to provide the encryption key for the server to be able to retrieve the object's metadata. The headers are:

          • x-amz-server-side-encryption-customer-algorithm

          • x-amz-server-side-encryption-customer-key

          • x-amz-server-side-encryption-customer-key-MD5

          For more information about SSE-C, see Server-Side Encryption (Using Customer-Provided Encryption Keys) in the Amazon S3 User Guide.

          Directory bucket - For directory buckets, there are only two supported options for server-side encryption: SSE-S3 and SSE-KMS. SSE-C isn't supported. For more information, see Protecting data with server-side encryption in the Amazon S3 User Guide.

          Versioning
          • If the current version of the object is a delete marker, Amazon S3 behaves as if the object was deleted and includes x-amz-delete-marker: true in the response.

          • If the specified version is a delete marker, the response returns a 405 Method Not Allowed error and the Last-Modified: timestamp response header.

          • Directory buckets - Delete marker is not supported by directory buckets.

          • Directory buckets - S3 Versioning isn't enabled and supported for directory buckets. For this API operation, only the null value of the version ID is supported by directory buckets. You can only specify null to the versionId query parameter in the request.

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          The following actions are related to HeadObject:

          " }, "ListBucketAnalyticsConfigurations":{ "name":"ListBucketAnalyticsConfigurations", @@ -981,7 +981,7 @@ "requestUri":"/{Bucket}?encryption" }, "input":{"shape":"PutBucketEncryptionRequest"}, - "documentation":"

          This operation is not supported by directory buckets.

          This action uses the encryption subresource to configure default encryption and Amazon S3 Bucket Keys for an existing bucket.

          By default, all buckets have a default encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3). You can optionally configure default encryption for a bucket by using server-side encryption with Key Management Service (KMS) keys (SSE-KMS) or dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS). If you specify default encryption by using SSE-KMS, you can also configure Amazon S3 Bucket Keys. If you use PutBucketEncryption to set your default bucket encryption to SSE-KMS, you should verify that your KMS key ID is correct. Amazon S3 does not validate the KMS key ID provided in PutBucketEncryption requests.

          If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester’s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.

          Also, this action requires Amazon Web Services Signature Version 4. For more information, see Authenticating Requests (Amazon Web Services Signature Version 4).

          To use this operation, you must have permission to perform the s3:PutEncryptionConfiguration action. The bucket owner has this permission by default. The bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 Resources in the Amazon S3 User Guide.

          The following operations are related to PutBucketEncryption:

          ", + "documentation":"

          This operation configures default encryption and Amazon S3 Bucket Keys for an existing bucket.

          Directory buckets - For directory buckets, you must make requests for this API operation to the Regional endpoint. These endpoints support path-style requests in the format https://s3express-control.region_code.amazonaws.com/bucket-name . Virtual-hosted-style requests aren't supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          By default, all buckets have a default encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3).

          • General purpose buckets

            • You can optionally configure default encryption for a bucket by using server-side encryption with Key Management Service (KMS) keys (SSE-KMS) or dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS). If you specify default encryption by using SSE-KMS, you can also configure Amazon S3 Bucket Keys. For information about the bucket default encryption feature, see Amazon S3 Bucket Default Encryption in the Amazon S3 User Guide.

            • If you use PutBucketEncryption to set your default bucket encryption to SSE-KMS, you should verify that your KMS key ID is correct. Amazon S3 doesn't validate the KMS key ID provided in PutBucketEncryption requests.

          • Directory buckets - You can optionally configure default encryption for a bucket by using server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

            • We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your CreateSession requests or PUT object requests. Then, new objects are automatically encrypted with the desired encryption settings. For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

            • Your SSE-KMS configuration can only support 1 customer managed key per directory bucket for the lifetime of the bucket. Amazon Web Services managed key (aws/s3) isn't supported.

            • S3 Bucket Keys are always enabled for GET and PUT operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject, UploadPartCopy, the Copy operation in Batch Operations, or the import jobs. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

            • When you specify an KMS customer managed key for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.

            • For directory buckets, if you use PutBucketEncryption to set your default bucket encryption to SSE-KMS, Amazon S3 validates the KMS key ID provided in PutBucketEncryption requests.

          If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester’s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.

          Also, this action requires Amazon Web Services Signature Version 4. For more information, see Authenticating Requests (Amazon Web Services Signature Version 4).

          Permissions
          • General purpose bucket permissions - The s3:PutEncryptionConfiguration permission is required in a policy. The bucket owner has this permission by default. The bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Operations and Managing Access Permissions to Your Amazon S3 Resources in the Amazon S3 User Guide.

          • Directory bucket permissions - To grant access to this API operation, you must have the s3express:PutEncryptionConfiguration permission in an IAM identity-based policy instead of a bucket policy. Cross-account access to this API operation isn't supported. This operation can only be performed by the Amazon Web Services account that owns the resource. For more information about directory bucket policies and permissions, see Amazon Web Services Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide.

            To set a directory bucket default encryption with SSE-KMS, you must also have the kms:GenerateDataKey and the kms:Decrypt permissions in IAM identity-based policies and KMS key policies for the target KMS key.

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is s3express-control.region.amazonaws.com.

          The following operations are related to PutBucketEncryption:

          ", "httpChecksum":{ "requestAlgorithmMember":"ChecksumAlgorithm", "requestChecksumRequired":true @@ -1230,7 +1230,7 @@ "input":{"shape":"PutObjectRequest"}, "output":{"shape":"PutObjectOutput"}, "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectPUT.html", - "documentation":"

          Adds an object to a bucket.

          • Amazon S3 never adds partial objects; if you receive a success response, Amazon S3 added the entire object to the bucket. You cannot use PutObject to only update a single piece of metadata for an existing object. You must put the entire object with updated metadata if you want to update some values.

          • If your bucket uses the bucket owner enforced setting for Object Ownership, ACLs are disabled and no longer affect permissions. All objects written to the bucket by any account will be owned by the bucket owner.

          • Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          Amazon S3 is a distributed system. If it receives multiple write requests for the same object simultaneously, it overwrites all but the last object written. However, Amazon S3 provides features that can modify this behavior:

          • S3 Object Lock - To prevent objects from being deleted or overwritten, you can use Amazon S3 Object Lock in the Amazon S3 User Guide.

            This functionality is not supported for directory buckets.

          • S3 Versioning - When you enable versioning for a bucket, if Amazon S3 receives multiple write requests for the same object simultaneously, it stores all versions of the objects. For each write request that is made to the same object, Amazon S3 automatically generates a unique version ID of that object being stored in Amazon S3. You can retrieve, replace, or delete any version of the object. For more information about versioning, see Adding Objects to Versioning-Enabled Buckets in the Amazon S3 User Guide. For information about returning the versioning state of a bucket, see GetBucketVersioning.

            This functionality is not supported for directory buckets.

          Permissions
          • General purpose bucket permissions - The following permissions are required in your policies when your PutObject request includes specific headers.

            • s3:PutObject - To successfully complete the PutObject request, you must always have the s3:PutObject permission on a bucket to add an object to it.

            • s3:PutObjectAcl - To successfully change the objects ACL of your PutObject request, you must have the s3:PutObjectAcl.

            • s3:PutObjectTagging - To successfully set the tag-set with your PutObject request, you must have the s3:PutObjectTagging.

          • Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the CreateSession API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see CreateSession .

          Data integrity with Content-MD5
          • General purpose bucket - To ensure that data is not corrupted traversing the network, use the Content-MD5 header. When you use this header, Amazon S3 checks the object against the provided MD5 value and, if they do not match, Amazon S3 returns an error. Alternatively, when the object's ETag is its MD5 digest, you can calculate the MD5 while putting the object to Amazon S3 and compare the returned ETag to the calculated MD5 value.

          • Directory bucket - This functionality is not supported for directory buckets.

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          For more information about related Amazon S3 APIs, see the following:

          ", + "documentation":"

          Adds an object to a bucket.

          • Amazon S3 never adds partial objects; if you receive a success response, Amazon S3 added the entire object to the bucket. You cannot use PutObject to only update a single piece of metadata for an existing object. You must put the entire object with updated metadata if you want to update some values.

          • If your bucket uses the bucket owner enforced setting for Object Ownership, ACLs are disabled and no longer affect permissions. All objects written to the bucket by any account will be owned by the bucket owner.

          • Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          Amazon S3 is a distributed system. If it receives multiple write requests for the same object simultaneously, it overwrites all but the last object written. However, Amazon S3 provides features that can modify this behavior:

          • S3 Object Lock - To prevent objects from being deleted or overwritten, you can use Amazon S3 Object Lock in the Amazon S3 User Guide.

            This functionality is not supported for directory buckets.

          • S3 Versioning - When you enable versioning for a bucket, if Amazon S3 receives multiple write requests for the same object simultaneously, it stores all versions of the objects. For each write request that is made to the same object, Amazon S3 automatically generates a unique version ID of that object being stored in Amazon S3. You can retrieve, replace, or delete any version of the object. For more information about versioning, see Adding Objects to Versioning-Enabled Buckets in the Amazon S3 User Guide. For information about returning the versioning state of a bucket, see GetBucketVersioning.

            This functionality is not supported for directory buckets.

          Permissions
          • General purpose bucket permissions - The following permissions are required in your policies when your PutObject request includes specific headers.

            • s3:PutObject - To successfully complete the PutObject request, you must always have the s3:PutObject permission on a bucket to add an object to it.

            • s3:PutObjectAcl - To successfully change the objects ACL of your PutObject request, you must have the s3:PutObjectAcl.

            • s3:PutObjectTagging - To successfully set the tag-set with your PutObject request, you must have the s3:PutObjectTagging.

          • Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the CreateSession API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see CreateSession .

            If the object is encrypted with SSE-KMS, you must also have the kms:GenerateDataKey and kms:Decrypt permissions in IAM identity-based policies and KMS key policies for the KMS key.

          Data integrity with Content-MD5
          • General purpose bucket - To ensure that data is not corrupted traversing the network, use the Content-MD5 header. When you use this header, Amazon S3 checks the object against the provided MD5 value and, if they do not match, Amazon S3 returns an error. Alternatively, when the object's ETag is its MD5 digest, you can calculate the MD5 while putting the object to Amazon S3 and compare the returned ETag to the calculated MD5 value.

          • Directory bucket - This functionality is not supported for directory buckets.

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          For more information about related Amazon S3 APIs, see the following:

          ", "httpChecksum":{ "requestAlgorithmMember":"ChecksumAlgorithm", "requestChecksumRequired":false @@ -1368,7 +1368,7 @@ "input":{"shape":"UploadPartRequest"}, "output":{"shape":"UploadPartOutput"}, "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadUploadPart.html", - "documentation":"

          Uploads a part in a multipart upload.

          In this operation, you provide new data as a part of an object in your request. However, you have an option to specify your existing Amazon S3 object as a data source for the part you are uploading. To upload a part from an existing object, you use the UploadPartCopy operation.

          You must initiate a multipart upload (see CreateMultipartUpload) before you can upload any part. In response to your initiate request, Amazon S3 returns an upload ID, a unique identifier that you must include in your upload part request.

          Part numbers can be any number from 1 to 10,000, inclusive. A part number uniquely identifies a part and also defines its position within the object being created. If you upload a new part using the same part number that was used with a previous part, the previously uploaded part is overwritten.

          For information about maximum and minimum part sizes and other multipart upload specifications, see Multipart upload limits in the Amazon S3 User Guide.

          After you initiate multipart upload and upload one or more parts, you must either complete or abort multipart upload in order to stop getting charged for storage of the uploaded parts. Only after you either complete or abort multipart upload, Amazon S3 frees up the parts storage and stops charging you for the parts storage.

          For more information on multipart uploads, go to Multipart Upload Overview in the Amazon S3 User Guide .

          Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          Permissions
          • General purpose bucket permissions - To perform a multipart upload with encryption using an Key Management Service key, the requester must have permission to the kms:Decrypt and kms:GenerateDataKey actions on the key. The requester must also have permissions for the kms:GenerateDataKey action for the CreateMultipartUpload API. Then, the requester needs permissions for the kms:Decrypt action on the UploadPart and UploadPartCopy APIs.

            These permissions are required because Amazon S3 must decrypt and read data from the encrypted file parts before it completes the multipart upload. For more information about KMS permissions, see Protecting data using server-side encryption with KMS in the Amazon S3 User Guide. For information about the permissions required to use the multipart upload API, see Multipart upload and permissions and Multipart upload API and permissions in the Amazon S3 User Guide.

          • Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the CreateSession API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see CreateSession .

          Data integrity

          General purpose bucket - To ensure that data is not corrupted traversing the network, specify the Content-MD5 header in the upload part request. Amazon S3 checks the part data against the provided MD5 value. If they do not match, Amazon S3 returns an error. If the upload request is signed with Signature Version 4, then Amazon Web Services S3 uses the x-amz-content-sha256 header as a checksum instead of Content-MD5. For more information see Authenticating Requests: Using the Authorization Header (Amazon Web Services Signature Version 4).

          Directory buckets - MD5 is not supported by directory buckets. You can use checksum algorithms to check object integrity.

          Encryption
          • General purpose bucket - Server-side encryption is for data encryption at rest. Amazon S3 encrypts your data as it writes it to disks in its data centers and decrypts it when you access it. You have mutually exclusive options to protect data using server-side encryption in Amazon S3, depending on how you choose to manage the encryption keys. Specifically, the encryption key options are Amazon S3 managed keys (SSE-S3), Amazon Web Services KMS keys (SSE-KMS), and Customer-Provided Keys (SSE-C). Amazon S3 encrypts data with server-side encryption using Amazon S3 managed keys (SSE-S3) by default. You can optionally tell Amazon S3 to encrypt data at rest using server-side encryption with other key options. The option you use depends on whether you want to use KMS keys (SSE-KMS) or provide your own encryption key (SSE-C).

            Server-side encryption is supported by the S3 Multipart Upload operations. Unless you are using a customer-provided encryption key (SSE-C), you don't need to specify the encryption parameters in each UploadPart request. Instead, you only need to specify the server-side encryption parameters in the initial Initiate Multipart request. For more information, see CreateMultipartUpload.

            If you request server-side encryption using a customer-provided encryption key (SSE-C) in your initiate multipart upload request, you must provide identical encryption information in each part upload using the following request headers.

            • x-amz-server-side-encryption-customer-algorithm

            • x-amz-server-side-encryption-customer-key

            • x-amz-server-side-encryption-customer-key-MD5

          • Directory bucket - For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

          For more information, see Using Server-Side Encryption in the Amazon S3 User Guide.

          Special errors
          • Error Code: NoSuchUpload

            • Description: The specified multipart upload does not exist. The upload ID might be invalid, or the multipart upload might have been aborted or completed.

            • HTTP Status Code: 404 Not Found

            • SOAP Fault Code Prefix: Client

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          The following operations are related to UploadPart:

          ", + "documentation":"

          Uploads a part in a multipart upload.

          In this operation, you provide new data as a part of an object in your request. However, you have an option to specify your existing Amazon S3 object as a data source for the part you are uploading. To upload a part from an existing object, you use the UploadPartCopy operation.

          You must initiate a multipart upload (see CreateMultipartUpload) before you can upload any part. In response to your initiate request, Amazon S3 returns an upload ID, a unique identifier that you must include in your upload part request.

          Part numbers can be any number from 1 to 10,000, inclusive. A part number uniquely identifies a part and also defines its position within the object being created. If you upload a new part using the same part number that was used with a previous part, the previously uploaded part is overwritten.

          For information about maximum and minimum part sizes and other multipart upload specifications, see Multipart upload limits in the Amazon S3 User Guide.

          After you initiate multipart upload and upload one or more parts, you must either complete or abort multipart upload in order to stop getting charged for storage of the uploaded parts. Only after you either complete or abort multipart upload, Amazon S3 frees up the parts storage and stops charging you for the parts storage.

          For more information on multipart uploads, go to Multipart Upload Overview in the Amazon S3 User Guide .

          Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          Permissions
          • General purpose bucket permissions - To perform a multipart upload with encryption using an Key Management Service key, the requester must have permission to the kms:Decrypt and kms:GenerateDataKey actions on the key. The requester must also have permissions for the kms:GenerateDataKey action for the CreateMultipartUpload API. Then, the requester needs permissions for the kms:Decrypt action on the UploadPart and UploadPartCopy APIs.

            These permissions are required because Amazon S3 must decrypt and read data from the encrypted file parts before it completes the multipart upload. For more information about KMS permissions, see Protecting data using server-side encryption with KMS in the Amazon S3 User Guide. For information about the permissions required to use the multipart upload API, see Multipart upload and permissions and Multipart upload API and permissions in the Amazon S3 User Guide.

          • Directory bucket permissions - To grant access to this API operation on a directory bucket, we recommend that you use the CreateSession API operation for session-based authorization. Specifically, you grant the s3express:CreateSession permission to the directory bucket in a bucket policy or an IAM identity-based policy. Then, you make the CreateSession API call on the bucket to obtain a session token. With the session token in your request header, you can make API requests to this operation. After the session token expires, you make another CreateSession API call to generate a new session token for use. Amazon Web Services CLI or SDKs create session and refresh the session token automatically to avoid service interruptions when a session expires. For more information about authorization, see CreateSession .

            If the object is encrypted with SSE-KMS, you must also have the kms:GenerateDataKey and kms:Decrypt permissions in IAM identity-based policies and KMS key policies for the KMS key.

          Data integrity

          General purpose bucket - To ensure that data is not corrupted traversing the network, specify the Content-MD5 header in the upload part request. Amazon S3 checks the part data against the provided MD5 value. If they do not match, Amazon S3 returns an error. If the upload request is signed with Signature Version 4, then Amazon Web Services S3 uses the x-amz-content-sha256 header as a checksum instead of Content-MD5. For more information see Authenticating Requests: Using the Authorization Header (Amazon Web Services Signature Version 4).

          Directory buckets - MD5 is not supported by directory buckets. You can use checksum algorithms to check object integrity.

          Encryption
          • General purpose bucket - Server-side encryption is for data encryption at rest. Amazon S3 encrypts your data as it writes it to disks in its data centers and decrypts it when you access it. You have mutually exclusive options to protect data using server-side encryption in Amazon S3, depending on how you choose to manage the encryption keys. Specifically, the encryption key options are Amazon S3 managed keys (SSE-S3), Amazon Web Services KMS keys (SSE-KMS), and Customer-Provided Keys (SSE-C). Amazon S3 encrypts data with server-side encryption using Amazon S3 managed keys (SSE-S3) by default. You can optionally tell Amazon S3 to encrypt data at rest using server-side encryption with other key options. The option you use depends on whether you want to use KMS keys (SSE-KMS) or provide your own encryption key (SSE-C).

            Server-side encryption is supported by the S3 Multipart Upload operations. Unless you are using a customer-provided encryption key (SSE-C), you don't need to specify the encryption parameters in each UploadPart request. Instead, you only need to specify the server-side encryption parameters in the initial Initiate Multipart request. For more information, see CreateMultipartUpload.

            If you request server-side encryption using a customer-provided encryption key (SSE-C) in your initiate multipart upload request, you must provide identical encryption information in each part upload using the following request headers.

            • x-amz-server-side-encryption-customer-algorithm

            • x-amz-server-side-encryption-customer-key

            • x-amz-server-side-encryption-customer-key-MD5

            For more information, see Using Server-Side Encryption in the Amazon S3 User Guide.

          • Directory buckets - For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms).

          Special errors
          • Error Code: NoSuchUpload

            • Description: The specified multipart upload does not exist. The upload ID might be invalid, or the multipart upload might have been aborted or completed.

            • HTTP Status Code: 404 Not Found

            • SOAP Fault Code Prefix: Client

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          The following operations are related to UploadPart:

          ", "httpChecksum":{ "requestAlgorithmMember":"ChecksumAlgorithm", "requestChecksumRequired":false @@ -1383,7 +1383,7 @@ "input":{"shape":"UploadPartCopyRequest"}, "output":{"shape":"UploadPartCopyOutput"}, "documentationUrl":"http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html", - "documentation":"

          Uploads a part by copying data from an existing object as data source. To specify the data source, you add the request header x-amz-copy-source in your request. To specify a byte range, you add the request header x-amz-copy-source-range in your request.

          For information about maximum and minimum part sizes and other multipart upload specifications, see Multipart upload limits in the Amazon S3 User Guide.

          Instead of copying data from an existing object as part data, you might use the UploadPart action to upload new data as a part of an object in your request.

          You must initiate a multipart upload before you can upload any part. In response to your initiate request, Amazon S3 returns the upload ID, a unique identifier that you must include in your upload part request.

          For conceptual information about multipart uploads, see Uploading Objects Using Multipart Upload in the Amazon S3 User Guide. For information about copying objects using a single atomic action vs. a multipart upload, see Operations on Objects in the Amazon S3 User Guide.

          Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          Authentication and authorization

          All UploadPartCopy requests must be authenticated and signed by using IAM credentials (access key ID and secret access key for the IAM identities). All headers with the x-amz- prefix, including x-amz-copy-source, must be signed. For more information, see REST Authentication.

          Directory buckets - You must use IAM credentials to authenticate and authorize your access to the UploadPartCopy API operation, instead of using the temporary security credentials through the CreateSession API operation.

          Amazon Web Services CLI or SDKs handles authentication and authorization on your behalf.

          Permissions

          You must have READ access to the source object and WRITE access to the destination bucket.

          • General purpose bucket permissions - You must have the permissions in a policy based on the bucket types of your source bucket and destination bucket in an UploadPartCopy operation.

            • If the source object is in a general purpose bucket, you must have the s3:GetObject permission to read the source object that is being copied.

            • If the destination bucket is a general purpose bucket, you must have the s3:PutObject permission to write the object copy to the destination bucket.

            • To perform a multipart upload with encryption using an Key Management Service key, the requester must have permission to the kms:Decrypt and kms:GenerateDataKey actions on the key. The requester must also have permissions for the kms:GenerateDataKey action for the CreateMultipartUpload API. Then, the requester needs permissions for the kms:Decrypt action on the UploadPart and UploadPartCopy APIs. These permissions are required because Amazon S3 must decrypt and read data from the encrypted file parts before it completes the multipart upload. For more information about KMS permissions, see Protecting data using server-side encryption with KMS in the Amazon S3 User Guide. For information about the permissions required to use the multipart upload API, see Multipart upload and permissions and Multipart upload API and permissions in the Amazon S3 User Guide.

          • Directory bucket permissions - You must have permissions in a bucket policy or an IAM identity-based policy based on the source and destination bucket types in an UploadPartCopy operation.

            • If the source object that you want to copy is in a directory bucket, you must have the s3express:CreateSession permission in the Action element of a policy to read the object. By default, the session is in the ReadWrite mode. If you want to restrict the access, you can explicitly set the s3express:SessionMode condition key to ReadOnly on the copy source bucket.

            • If the copy destination is a directory bucket, you must have the s3express:CreateSession permission in the Action element of a policy to write the object to the destination. The s3express:SessionMode condition key cannot be set to ReadOnly on the copy destination.

            For example policies, see Example bucket policies for S3 Express One Zone and Amazon Web Services Identity and Access Management (IAM) identity-based policies for S3 Express One Zone in the Amazon S3 User Guide.

          Encryption
          • General purpose buckets - For information about using server-side encryption with customer-provided encryption keys with the UploadPartCopy operation, see CopyObject and UploadPart.

          • Directory buckets - For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

          Special errors
          • Error Code: NoSuchUpload

            • Description: The specified multipart upload does not exist. The upload ID might be invalid, or the multipart upload might have been aborted or completed.

            • HTTP Status Code: 404 Not Found

          • Error Code: InvalidRequest

            • Description: The specified copy source is not supported as a byte-range copy source.

            • HTTP Status Code: 400 Bad Request

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          The following operations are related to UploadPartCopy:

          ", + "documentation":"

          Uploads a part by copying data from an existing object as data source. To specify the data source, you add the request header x-amz-copy-source in your request. To specify a byte range, you add the request header x-amz-copy-source-range in your request.

          For information about maximum and minimum part sizes and other multipart upload specifications, see Multipart upload limits in the Amazon S3 User Guide.

          Instead of copying data from an existing object as part data, you might use the UploadPart action to upload new data as a part of an object in your request.

          You must initiate a multipart upload before you can upload any part. In response to your initiate request, Amazon S3 returns the upload ID, a unique identifier that you must include in your upload part request.

          For conceptual information about multipart uploads, see Uploading Objects Using Multipart Upload in the Amazon S3 User Guide. For information about copying objects using a single atomic action vs. a multipart upload, see Operations on Objects in the Amazon S3 User Guide.

          Directory buckets - For directory buckets, you must make requests for this API operation to the Zonal endpoint. These endpoints support virtual-hosted-style requests in the format https://bucket_name.s3express-az_id.region.amazonaws.com/key-name . Path-style requests are not supported. For more information, see Regional and Zonal endpoints in the Amazon S3 User Guide.

          Authentication and authorization

          All UploadPartCopy requests must be authenticated and signed by using IAM credentials (access key ID and secret access key for the IAM identities). All headers with the x-amz- prefix, including x-amz-copy-source, must be signed. For more information, see REST Authentication.

          Directory buckets - You must use IAM credentials to authenticate and authorize your access to the UploadPartCopy API operation, instead of using the temporary security credentials through the CreateSession API operation.

          Amazon Web Services CLI or SDKs handles authentication and authorization on your behalf.

          Permissions

          You must have READ access to the source object and WRITE access to the destination bucket.

          • General purpose bucket permissions - You must have the permissions in a policy based on the bucket types of your source bucket and destination bucket in an UploadPartCopy operation.

            • If the source object is in a general purpose bucket, you must have the s3:GetObject permission to read the source object that is being copied.

            • If the destination bucket is a general purpose bucket, you must have the s3:PutObject permission to write the object copy to the destination bucket.

            • To perform a multipart upload with encryption using an Key Management Service key, the requester must have permission to the kms:Decrypt and kms:GenerateDataKey actions on the key. The requester must also have permissions for the kms:GenerateDataKey action for the CreateMultipartUpload API. Then, the requester needs permissions for the kms:Decrypt action on the UploadPart and UploadPartCopy APIs. These permissions are required because Amazon S3 must decrypt and read data from the encrypted file parts before it completes the multipart upload. For more information about KMS permissions, see Protecting data using server-side encryption with KMS in the Amazon S3 User Guide. For information about the permissions required to use the multipart upload API, see Multipart upload and permissions and Multipart upload API and permissions in the Amazon S3 User Guide.

          • Directory bucket permissions - You must have permissions in a bucket policy or an IAM identity-based policy based on the source and destination bucket types in an UploadPartCopy operation.

            • If the source object that you want to copy is in a directory bucket, you must have the s3express:CreateSession permission in the Action element of a policy to read the object. By default, the session is in the ReadWrite mode. If you want to restrict the access, you can explicitly set the s3express:SessionMode condition key to ReadOnly on the copy source bucket.

            • If the copy destination is a directory bucket, you must have the s3express:CreateSession permission in the Action element of a policy to write the object to the destination. The s3express:SessionMode condition key cannot be set to ReadOnly on the copy destination.

            If the object is encrypted with SSE-KMS, you must also have the kms:GenerateDataKey and kms:Decrypt permissions in IAM identity-based policies and KMS key policies for the KMS key.

            For example policies, see Example bucket policies for S3 Express One Zone and Amazon Web Services Identity and Access Management (IAM) identity-based policies for S3 Express One Zone in the Amazon S3 User Guide.

          Encryption
          • General purpose buckets - For information about using server-side encryption with customer-provided encryption keys with the UploadPartCopy operation, see CopyObject and UploadPart.

          • Directory buckets - For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). For more information, see Protecting data with server-side encryption in the Amazon S3 User Guide.

            For directory buckets, when you perform a CreateMultipartUpload operation and an UploadPartCopy operation, the request headers you provide in the CreateMultipartUpload request must match the default encryption configuration of the destination bucket.

            S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through UploadPartCopy. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

          Special errors
          • Error Code: NoSuchUpload

            • Description: The specified multipart upload does not exist. The upload ID might be invalid, or the multipart upload might have been aborted or completed.

            • HTTP Status Code: 404 Not Found

          • Error Code: InvalidRequest

            • Description: The specified copy source is not supported as a byte-range copy source.

            • HTTP Status Code: 400 Bad Request

          HTTP Host header syntax

          Directory buckets - The HTTP Host header syntax is Bucket_name.s3express-az_id.region.amazonaws.com.

          The following operations are related to UploadPartCopy:

          ", "staticContextParams":{ "DisableS3ExpressSessionAuth":{"value":true} } @@ -2053,7 +2053,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

          The server-side encryption algorithm used when storing this object in Amazon S3 (for example, AES256, aws:kms).

          For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

          ", + "documentation":"

          The server-side encryption algorithm used when storing this object in Amazon S3 (for example, AES256, aws:kms).

          ", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -2065,13 +2065,13 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

          If present, indicates the ID of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object.

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          If present, indicates the ID of the KMS key that was used for object encryption.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

          Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

          ", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -2291,7 +2291,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

          The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse).

          For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

          ", + "documentation":"

          The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse).

          ", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -2309,19 +2309,19 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

          If present, indicates the ID of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object.

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          If present, indicates the ID of the KMS key that was used for object encryption.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "SSEKMSEncryptionContext":{ "shape":"SSEKMSEncryptionContext", - "documentation":"

          If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs.

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-context" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

          Indicates whether the copied object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          Indicates whether the copied object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

          ", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -2478,7 +2478,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

          The server-side encryption algorithm used when storing this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse). Unrecognized or unsupported values won’t write a destination object and will receive a 400 Bad Request response.

          Amazon S3 automatically encrypts all new objects that are copied to an S3 bucket. When copying an object, if you don't specify encryption information in your copy request, the encryption setting of the target object is set to the default encryption configuration of the destination bucket. By default, all buckets have a base level of encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3). If the destination bucket has a default encryption configuration that uses server-side encryption with Key Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), or server-side encryption with customer-provided encryption keys (SSE-C), Amazon S3 uses the corresponding KMS key, or a customer-provided key to encrypt the target object copy.

          When you perform a CopyObject operation, if you want to use a different type of encryption setting for the target object, you can specify appropriate encryption-related headers to encrypt the target object with an Amazon S3 managed key, a KMS key, or a customer-provided key. If the encryption setting in your request is different from the default encryption configuration of the destination bucket, the encryption setting in your request takes precedence.

          With server-side encryption, Amazon S3 encrypts your data as it writes your data to disks in its data centers and decrypts the data when you access it. For more information about server-side encryption, see Using Server-Side Encryption in the Amazon S3 User Guide.

          For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

          ", + "documentation":"

          The server-side encryption algorithm used when storing this object in Amazon S3. Unrecognized or unsupported values won’t write a destination object and will receive a 400 Bad Request response.

          Amazon S3 automatically encrypts all new objects that are copied to an S3 bucket. When copying an object, if you don't specify encryption information in your copy request, the encryption setting of the target object is set to the default encryption configuration of the destination bucket. By default, all buckets have a base level of encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3). If the destination bucket has a different default encryption configuration, Amazon S3 uses the corresponding encryption key to encrypt the target object copy.

          With server-side encryption, Amazon S3 encrypts your data as it writes your data to disks in its data centers and decrypts the data when you access it. For more information about server-side encryption, see Using Server-Side Encryption in the Amazon S3 User Guide.

          General purpose buckets

          • For general purpose buckets, there are the following supported options for server-side encryption: server-side encryption with Key Management Service (KMS) keys (SSE-KMS), dual-layer server-side encryption with Amazon Web Services KMS keys (DSSE-KMS), and server-side encryption with customer-provided encryption keys (SSE-C). Amazon S3 uses the corresponding KMS key, or a customer-provided key to encrypt the target object copy.

          • When you perform a CopyObject operation, if you want to use a different type of encryption setting for the target object, you can specify appropriate encryption-related headers to encrypt the target object with an Amazon S3 managed key, a KMS key, or a customer-provided key. If the encryption setting in your request is different from the default encryption configuration of the destination bucket, the encryption setting in your request takes precedence.

          Directory buckets

          • For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your CreateSession requests or PUT object requests. Then, new objects are automatically encrypted with the desired encryption settings. For more information, see Protecting data with server-side encryption in the Amazon S3 User Guide. For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

          • To encrypt new object copies to a directory bucket with SSE-KMS, we recommend you specify SSE-KMS as the directory bucket's default encryption configuration with a KMS key (specifically, a customer managed key). Amazon Web Services managed key (aws/s3) isn't supported. Your SSE-KMS configuration can only support 1 customer managed key per directory bucket for the lifetime of the bucket. After you specify a customer managed key for SSE-KMS, you can't override the customer managed key for the bucket's SSE-KMS configuration. Then, when you perform a CopyObject operation and want to specify server-side encryption settings for new object copies with SSE-KMS in the encryption-related request headers, you must ensure the encryption key is the same customer managed key that you specified for the directory bucket's default encryption configuration.

          ", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -2514,19 +2514,19 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

          Specifies the KMS ID (Key ID, Key ARN, or Key Alias) to use for object encryption. All GET and PUT requests for an object protected by KMS will fail if they're not made via SSL or using SigV4. For information about configuring any of the officially supported Amazon Web Services SDKs and Amazon Web Services CLI, see Specifying the Signature Version in Request Authentication in the Amazon S3 User Guide.

          This functionality is not supported when the destination bucket is a directory bucket.

          ", + "documentation":"

          Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object encryption. All GET and PUT requests for an object protected by KMS will fail if they're not made via SSL or using SigV4. For information about configuring any of the officially supported Amazon Web Services SDKs and Amazon Web Services CLI, see Specifying the Signature Version in Request Authentication in the Amazon S3 User Guide.

          Directory buckets - If you specify x-amz-server-side-encryption with aws:kms, you must specify the x-amz-server-side-encryption-aws-kms-key-id header with the ID (Key ID or Key ARN) of the KMS symmetric encryption customer managed key to use. Otherwise, you get an HTTP 400 Bad Request error. Only use the key ID or key ARN. The key alias format of the KMS key isn't supported. Your SSE-KMS configuration can only support 1 customer managed key per directory bucket for the lifetime of the bucket. Amazon Web Services managed key (aws/s3) isn't supported.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "SSEKMSEncryptionContext":{ "shape":"SSEKMSEncryptionContext", - "documentation":"

          Specifies the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs. This value must be explicitly added to specify encryption context for CopyObject requests.

          This functionality is not supported when the destination bucket is a directory bucket.

          ", + "documentation":"

          Specifies the Amazon Web Services KMS Encryption Context as an additional encryption context to use for the destination object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs.

          General purpose buckets - This value must be explicitly added to specify encryption context for CopyObject requests if you want an additional encryption context for your destination object. The additional encryption context of the source object won't be copied to the destination object. For more information, see Encryption context in the Amazon S3 User Guide.

          Directory buckets - You can optionally provide an explicit encryption context value. The value must match the default encryption context - the bucket Amazon Resource Name (ARN). An additional encryption context value is not supported.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-context" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

          Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS). If a target object uses SSE-KMS, you can enable an S3 Bucket Key for the object.

          Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS. Specifying this header with a COPY action doesn’t affect bucket-level settings for S3 Bucket Key.

          For more information, see Amazon S3 Bucket Keys in the Amazon S3 User Guide.

          This functionality is not supported when the destination bucket is a directory bucket.

          ", + "documentation":"

          Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS). If a target object uses SSE-KMS, you can enable an S3 Bucket Key for the object.

          Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS. Specifying this header with a COPY action doesn’t affect bucket-level settings for S3 Bucket Key.

          For more information, see Amazon S3 Bucket Keys in the Amazon S3 User Guide.

          Directory buckets - S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -2793,7 +2793,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

          The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms).

          For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

          ", + "documentation":"

          The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms).

          ", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -2811,19 +2811,19 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

          If present, indicates the ID of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object.

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          If present, indicates the ID of the KMS key that was used for object encryption.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "SSEKMSEncryptionContext":{ "shape":"SSEKMSEncryptionContext", - "documentation":"

          If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs.

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-context" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

          Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

          ", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -2935,7 +2935,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

          The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms).

          For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

          ", + "documentation":"

          The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms).

          • Directory buckets - For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your CreateSession requests or PUT object requests. Then, new objects are automatically encrypted with the desired encryption settings. For more information, see Protecting data with server-side encryption in the Amazon S3 User Guide. For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

            In the Zonal endpoint API calls (except CopyObject and UploadPartCopy) using the REST API, the encryption request headers must match the encryption settings that are specified in the CreateSession request. You can't override the values of the encryption settings (x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-id, x-amz-server-side-encryption-context, and x-amz-server-side-encryption-bucket-key-enabled) that are specified in the CreateSession request. You don't need to explicitly specify these encryption settings values in Zonal endpoint API calls, and Amazon S3 will use the encryption settings values from the CreateSession request to protect new objects in the directory bucket.

            When you use the CLI or the Amazon Web Services SDKs, for CreateSession, the session token refreshes automatically to avoid service interruptions when a session expires. The CLI or the Amazon Web Services SDKs use the bucket's default encryption configuration for the CreateSession request. It's not supported to override the encryption settings values in the CreateSession request. So in the Zonal endpoint API calls (except CopyObject and UploadPartCopy), the encryption request headers must match the default encryption configuration of the directory bucket.

          ", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -2971,19 +2971,19 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

          Specifies the ID (Key ID, Key ARN, or Key Alias) of the symmetric encryption customer managed key to use for object encryption.

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object encryption. If the KMS key doesn't exist in the same account that's issuing the command, you must use the full Key ARN not the Key ID.

          General purpose buckets - If you specify x-amz-server-side-encryption with aws:kms or aws:kms:dsse, this header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key to use. If you specify x-amz-server-side-encryption:aws:kms or x-amz-server-side-encryption:aws:kms:dsse, but do not provide x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon Web Services managed key (aws/s3) to protect the data.

          Directory buckets - If you specify x-amz-server-side-encryption with aws:kms, you must specify the x-amz-server-side-encryption-aws-kms-key-id header with the ID (Key ID or Key ARN) of the KMS symmetric encryption customer managed key to use. Otherwise, you get an HTTP 400 Bad Request error. Only use the key ID or key ARN. The key alias format of the KMS key isn't supported. Your SSE-KMS configuration can only support 1 customer managed key per directory bucket for the lifetime of the bucket. Amazon Web Services managed key (aws/s3) isn't supported.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "SSEKMSEncryptionContext":{ "shape":"SSEKMSEncryptionContext", - "documentation":"

          Specifies the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs.

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          Specifies the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs.

          Directory buckets - You can optionally provide an explicit encryption context value. The value must match the default encryption context - the bucket Amazon Resource Name (ARN). An additional encryption context value is not supported.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-context" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

          Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS). Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.

          Specifying this header with an object action doesn’t affect bucket-level settings for S3 Bucket Key.

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS).

          General purpose buckets - Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS. Also, specifying this header with a PUT action doesn't affect bucket-level settings for S3 Bucket Key.

          Directory buckets - S3 Bucket Keys are always enabled for GET and PUT operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject, UploadPartCopy, the Copy operation in Batch Operations, or the import jobs. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -3034,6 +3034,30 @@ "type":"structure", "required":["Credentials"], "members":{ + "ServerSideEncryption":{ + "shape":"ServerSideEncryption", + "documentation":"

          The server-side encryption algorithm used when you store objects in the directory bucket.

          ", + "location":"header", + "locationName":"x-amz-server-side-encryption" + }, + "SSEKMSKeyId":{ + "shape":"SSEKMSKeyId", + "documentation":"

          If you specify x-amz-server-side-encryption with aws:kms, this header indicates the ID of the KMS symmetric encryption customer managed key that was used for object encryption.

          ", + "location":"header", + "locationName":"x-amz-server-side-encryption-aws-kms-key-id" + }, + "SSEKMSEncryptionContext":{ + "shape":"SSEKMSEncryptionContext", + "documentation":"

          If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future GetObject operations on this object.

          ", + "location":"header", + "locationName":"x-amz-server-side-encryption-context" + }, + "BucketKeyEnabled":{ + "shape":"BucketKeyEnabled", + "documentation":"

          Indicates whether to use an S3 Bucket Key for server-side encryption with KMS keys (SSE-KMS).

          ", + "location":"header", + "locationName":"x-amz-server-side-encryption-bucket-key-enabled" + }, "Credentials":{ "shape":"SessionCredentials", "documentation":"

          The established temporary security credentials for the created session.

          ", @@ -3047,7 +3071,7 @@ "members":{ "SessionMode":{ "shape":"SessionMode", - "documentation":"

          Specifies the mode of the session that will be created, either ReadWrite or ReadOnly. By default, a ReadWrite session is created. A ReadWrite session is capable of executing all the Zonal endpoint APIs on a directory bucket. A ReadOnly session is constrained to execute the following Zonal endpoint APIs: GetObject, HeadObject, ListObjectsV2, GetObjectAttributes, ListParts, and ListMultipartUploads.

          ", + "documentation":"

          Specifies the mode of the session that will be created, either ReadWrite or ReadOnly. By default, a ReadWrite session is created. A ReadWrite session is capable of executing all the Zonal endpoint API operations on a directory bucket. A ReadOnly session is constrained to execute the following Zonal endpoint API operations: GetObject, HeadObject, ListObjectsV2, GetObjectAttributes, ListParts, and ListMultipartUploads.

          ", "location":"header", "locationName":"x-amz-create-session-mode" }, @@ -3057,6 +3081,30 @@ "contextParam":{"name":"Bucket"}, "location":"uri", "locationName":"Bucket" + }, + "ServerSideEncryption":{ + "shape":"ServerSideEncryption", + "documentation":"

          The server-side encryption algorithm to use when you store objects in the directory bucket.

          For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). By default, Amazon S3 encrypts data with SSE-S3. For more information, see Protecting data with server-side encryption in the Amazon S3 User Guide.

          ", + "location":"header", + "locationName":"x-amz-server-side-encryption" + }, + "SSEKMSKeyId":{ + "shape":"SSEKMSKeyId", + "documentation":"

          If you specify x-amz-server-side-encryption with aws:kms, you must specify the x-amz-server-side-encryption-aws-kms-key-id header with the ID (Key ID or Key ARN) of the KMS symmetric encryption customer managed key to use. Otherwise, you get an HTTP 400 Bad Request error. Only use the key ID or key ARN. The key alias format of the KMS key isn't supported. Also, if the KMS key doesn't exist in the same account that't issuing the command, you must use the full Key ARN not the Key ID.

          Your SSE-KMS configuration can only support 1 customer managed key per directory bucket for the lifetime of the bucket. Amazon Web Services managed key (aws/s3) isn't supported.

          ", + "location":"header", + "locationName":"x-amz-server-side-encryption-aws-kms-key-id" + }, + "SSEKMSEncryptionContext":{ + "shape":"SSEKMSEncryptionContext", + "documentation":"

          Specifies the Amazon Web Services KMS Encryption Context as an additional encryption context to use for object encryption. The value of this header is a Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future GetObject operations on this object.

          General purpose buckets - This value must be explicitly added during CopyObject operations if you want an additional encryption context for your object. For more information, see Encryption context in the Amazon S3 User Guide.

          Directory buckets - You can optionally provide an explicit encryption context value. The value must match the default encryption context - the bucket Amazon Resource Name (ARN). An additional encryption context value is not supported.

          ", + "location":"header", + "locationName":"x-amz-server-side-encryption-context" + }, + "BucketKeyEnabled":{ + "shape":"BucketKeyEnabled", + "documentation":"

          Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using KMS keys (SSE-KMS).

          S3 Bucket Keys are always enabled for GET and PUT operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject, UploadPartCopy, the Copy operation in Batch Operations, or the import jobs. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

          ", + "location":"header", + "locationName":"x-amz-server-side-encryption-bucket-key-enabled" } } }, @@ -3164,14 +3212,14 @@ "members":{ "Bucket":{ "shape":"BucketName", - "documentation":"

          The name of the bucket containing the server-side encryption configuration to delete.

          ", + "documentation":"

          The name of the bucket containing the server-side encryption configuration to delete.

          Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region_code.amazonaws.com/bucket-name . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must also follow the format bucket_base_name--az_id--x-s3 (for example, DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide

          ", "contextParam":{"name":"Bucket"}, "location":"uri", "locationName":"Bucket" }, "ExpectedBucketOwner":{ "shape":"AccountId", - "documentation":"

          The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

          ", + "documentation":"

          The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

          For directory buckets, this header is not supported in this API operation. If you specify this header, the request fails with the HTTP status code 501 Not Implemented.

          ", "location":"header", "locationName":"x-amz-expected-bucket-owner" } @@ -3861,7 +3909,7 @@ "documentation":"

          Specifies whether Amazon S3 replicates existing source bucket objects.

          " } }, - "documentation":"

          Optional configuration to replicate existing source bucket objects. For more information, see Replicating Existing Objects in the Amazon S3 User Guide.

          " + "documentation":"

          Optional configuration to replicate existing source bucket objects.

          This parameter is no longer supported. To replicate existing objects, see Replicating existing objects with S3 Batch Replication in the Amazon S3 User Guide.

          " }, "ExistingObjectReplicationStatus":{ "type":"string", @@ -4086,14 +4134,14 @@ "members":{ "Bucket":{ "shape":"BucketName", - "documentation":"

          The name of the bucket from which the server-side encryption configuration is retrieved.

          ", + "documentation":"

          The name of the bucket from which the server-side encryption configuration is retrieved.

          Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region_code.amazonaws.com/bucket-name . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must also follow the format bucket_base_name--az_id--x-s3 (for example, DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide

          ", "contextParam":{"name":"Bucket"}, "location":"uri", "locationName":"Bucket" }, "ExpectedBucketOwner":{ "shape":"AccountId", - "documentation":"

          The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

          ", + "documentation":"

          The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

          For directory buckets, this header is not supported in this API operation. If you specify this header, the request fails with the HTTP status code 501 Not Implemented.

          ", "location":"header", "locationName":"x-amz-expected-bucket-owner" } @@ -5010,7 +5058,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

          The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse).

          For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

          ", + "documentation":"

          The server-side encryption algorithm used when you store this object in Amazon S3.

          ", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -5034,13 +5082,13 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

          If present, indicates the ID of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object.

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          If present, indicates the ID of the KMS key that was used for object encryption.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

          Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

          ", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -5224,7 +5272,7 @@ }, "ChecksumMode":{ "shape":"ChecksumMode", - "documentation":"

          To retrieve the checksum, this mode must be enabled.

          In addition, if you enable checksum mode and the object is uploaded with a checksum and encrypted with an Key Management Service (KMS) key, you must have permission to use the kms:Decrypt action to retrieve the checksum.

          ", + "documentation":"

          To retrieve the checksum, this mode must be enabled.

          General purpose buckets - In addition, if you enable checksum mode and the object is uploaded with a checksum and encrypted with an Key Management Service (KMS) key, you must have permission to use the kms:Decrypt action to retrieve the checksum.

          ", "location":"header", "locationName":"x-amz-checksum-mode" } @@ -5666,7 +5714,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

          The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse).

          For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

          ", + "documentation":"

          The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse).

          ", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -5690,13 +5738,13 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

          If present, indicates the ID of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object.

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          If present, indicates the ID of the KMS key that was used for object encryption.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

          Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          Indicates whether the object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

          ", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -5873,7 +5921,7 @@ }, "ChecksumMode":{ "shape":"ChecksumMode", - "documentation":"

          To retrieve the checksum, this parameter must be enabled.

          In addition, if you enable checksum mode and the object is uploaded with a checksum and encrypted with an Key Management Service (KMS) key, you must have permission to use the kms:Decrypt action to retrieve the checksum.

          ", + "documentation":"

          To retrieve the checksum, this parameter must be enabled.

          General purpose buckets - If you enable checksum mode and the object is uploaded with a checksum and encrypted with an Key Management Service (KMS) key, you must have permission to use the kms:Decrypt action to retrieve the checksum.

          Directory buckets - If you enable ChecksumMode and the object is encrypted with Amazon Web Services Key Management Service (Amazon Web Services KMS), you must also have the kms:GenerateDataKey and kms:Decrypt permissions in IAM identity-based policies and KMS key policies for the KMS key to retrieve the checksum of the object.

          ", "location":"header", "locationName":"x-amz-checksum-mode" } @@ -8411,20 +8459,20 @@ "members":{ "Bucket":{ "shape":"BucketName", - "documentation":"

          Specifies default encryption for a bucket using server-side encryption with different key options. By default, all buckets have a default encryption configuration that uses server-side encryption with Amazon S3 managed keys (SSE-S3). You can optionally configure default encryption for a bucket by using server-side encryption with an Amazon Web Services KMS key (SSE-KMS) or a customer-provided key (SSE-C). For information about the bucket default encryption feature, see Amazon S3 Bucket Default Encryption in the Amazon S3 User Guide.

          ", + "documentation":"

          Specifies default encryption for a bucket using server-side encryption with different key options.

          Directory buckets - When you use this operation with a directory bucket, you must use path-style requests in the format https://s3express-control.region_code.amazonaws.com/bucket-name . Virtual-hosted-style requests aren't supported. Directory bucket names must be unique in the chosen Availability Zone. Bucket names must also follow the format bucket_base_name--az_id--x-s3 (for example, DOC-EXAMPLE-BUCKET--usw2-az1--x-s3). For information about bucket naming restrictions, see Directory bucket naming rules in the Amazon S3 User Guide

          ", "contextParam":{"name":"Bucket"}, "location":"uri", "locationName":"Bucket" }, "ContentMD5":{ "shape":"ContentMD5", - "documentation":"

          The base64-encoded 128-bit MD5 digest of the server-side encryption configuration.

          For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

          ", + "documentation":"

          The base64-encoded 128-bit MD5 digest of the server-side encryption configuration.

          For requests made using the Amazon Web Services Command Line Interface (CLI) or Amazon Web Services SDKs, this field is calculated automatically.

          This functionality is not supported for directory buckets.

          ", "location":"header", "locationName":"Content-MD5" }, "ChecksumAlgorithm":{ "shape":"ChecksumAlgorithm", - "documentation":"

          Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more information, see Checking object integrity in the Amazon S3 User Guide.

          If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm parameter.

          ", + "documentation":"

          Indicates the algorithm used to create the checksum for the object when you use the SDK. This header will not provide any additional functionality if you don't use the SDK. When you send this header, there must be a corresponding x-amz-checksum or x-amz-trailer header sent. Otherwise, Amazon S3 fails the request with the HTTP status code 400 Bad Request. For more information, see Checking object integrity in the Amazon S3 User Guide.

          If you provide an individual checksum, Amazon S3 ignores any provided ChecksumAlgorithm parameter.

          For directory buckets, when you use Amazon Web Services SDKs, CRC32 is the default checksum algorithm that's used for performance.

          ", "location":"header", "locationName":"x-amz-sdk-checksum-algorithm" }, @@ -8435,7 +8483,7 @@ }, "ExpectedBucketOwner":{ "shape":"AccountId", - "documentation":"

          The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

          ", + "documentation":"

          The account ID of the expected bucket owner. If the account ID that you provide does not match the actual owner of the bucket, the request fails with the HTTP status code 403 Forbidden (access denied).

          For directory buckets, this header is not supported in this API operation. If you specify this header, the request fails with the HTTP status code 501 Not Implemented.

          ", "location":"header", "locationName":"x-amz-expected-bucket-owner" } @@ -9299,7 +9347,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

          The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse).

          For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

          ", + "documentation":"

          The server-side encryption algorithm used when you store this object in Amazon S3.

          ", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -9323,19 +9371,19 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

          If x-amz-server-side-encryption has a valid value of aws:kms or aws:kms:dsse, this header indicates the ID of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object.

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          If present, indicates the ID of the KMS key that was used for object encryption.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "SSEKMSEncryptionContext":{ "shape":"SSEKMSEncryptionContext", - "documentation":"

          If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future GetObject or CopyObject operations on this object.

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          If present, indicates the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future GetObject operations on this object.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-context" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

          Indicates whether the uploaded object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          Indicates whether the uploaded object uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

          ", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -9494,7 +9542,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

          The server-side encryption algorithm that was used when you store this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse).

          General purpose buckets - You have four mutually exclusive options to protect data using server-side encryption in Amazon S3, depending on how you choose to manage the encryption keys. Specifically, the encryption key options are Amazon S3 managed keys (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and customer-provided keys (SSE-C). Amazon S3 encrypts data with server-side encryption by using Amazon S3 managed keys (SSE-S3) by default. You can optionally tell Amazon S3 to encrypt data at rest by using server-side encryption with other key options. For more information, see Using Server-Side Encryption in the Amazon S3 User Guide.

          Directory buckets - For directory buckets, only the server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) value is supported.

          ", + "documentation":"

          The server-side encryption algorithm that was used when you store this object in Amazon S3 (for example, AES256, aws:kms, aws:kms:dsse).

          • General purpose buckets - You have four mutually exclusive options to protect data using server-side encryption in Amazon S3, depending on how you choose to manage the encryption keys. Specifically, the encryption key options are Amazon S3 managed keys (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and customer-provided keys (SSE-C). Amazon S3 encrypts data with server-side encryption by using Amazon S3 managed keys (SSE-S3) by default. You can optionally tell Amazon S3 to encrypt data at rest by using server-side encryption with other key options. For more information, see Using Server-Side Encryption in the Amazon S3 User Guide.

          • Directory buckets - For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (aws:kms). We recommend that the bucket's default encryption uses the desired encryption configuration and you don't override the bucket default encryption in your CreateSession requests or PUT object requests. Then, new objects are automatically encrypted with the desired encryption settings. For more information, see Protecting data with server-side encryption in the Amazon S3 User Guide. For more information about the encryption overriding behaviors in directory buckets, see Specifying server-side encryption with KMS for new object uploads.

            In the Zonal endpoint API calls (except CopyObject and UploadPartCopy) using the REST API, the encryption request headers must match the encryption settings that are specified in the CreateSession request. You can't override the values of the encryption settings (x-amz-server-side-encryption, x-amz-server-side-encryption-aws-kms-key-id, x-amz-server-side-encryption-context, and x-amz-server-side-encryption-bucket-key-enabled) that are specified in the CreateSession request. You don't need to explicitly specify these encryption settings values in Zonal endpoint API calls, and Amazon S3 will use the encryption settings values from the CreateSession request to protect new objects in the directory bucket.

            When you use the CLI or the Amazon Web Services SDKs, for CreateSession, the session token refreshes automatically to avoid service interruptions when a session expires. The CLI or the Amazon Web Services SDKs use the bucket's default encryption configuration for the CreateSession request. It's not supported to override the encryption settings values in the CreateSession request. So in the Zonal endpoint API calls (except CopyObject and UploadPartCopy), the encryption request headers must match the default encryption configuration of the directory bucket.

          ", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -9530,19 +9578,19 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

          If x-amz-server-side-encryption has a valid value of aws:kms or aws:kms:dsse, this header specifies the ID (Key ID, Key ARN, or Key Alias) of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object. If you specify x-amz-server-side-encryption:aws:kms or x-amz-server-side-encryption:aws:kms:dsse, but do not provide x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon Web Services managed key (aws/s3) to protect the data. If the KMS key does not exist in the same account that's issuing the command, you must use the full ARN and not just the ID.

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object encryption. If the KMS key doesn't exist in the same account that's issuing the command, you must use the full Key ARN not the Key ID.

          General purpose buckets - If you specify x-amz-server-side-encryption with aws:kms or aws:kms:dsse, this header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key to use. If you specify x-amz-server-side-encryption:aws:kms or x-amz-server-side-encryption:aws:kms:dsse, but do not provide x-amz-server-side-encryption-aws-kms-key-id, Amazon S3 uses the Amazon Web Services managed key (aws/s3) to protect the data.

          Directory buckets - If you specify x-amz-server-side-encryption with aws:kms, you must specify the x-amz-server-side-encryption-aws-kms-key-id header with the ID (Key ID or Key ARN) of the KMS symmetric encryption customer managed key to use. Otherwise, you get an HTTP 400 Bad Request error. Only use the key ID or key ARN. The key alias format of the KMS key isn't supported. Your SSE-KMS configuration can only support 1 customer managed key per directory bucket for the lifetime of the bucket. Amazon Web Services managed key (aws/s3) isn't supported.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "SSEKMSEncryptionContext":{ "shape":"SSEKMSEncryptionContext", - "documentation":"

          Specifies the Amazon Web Services KMS Encryption Context to use for object encryption. The value of this header is a base64-encoded UTF-8 string holding JSON with the encryption context key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future GetObject or CopyObject operations on this object. This value must be explicitly added during CopyObject operations.

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          Specifies the Amazon Web Services KMS Encryption Context as an additional encryption context to use for object encryption. The value of this header is a Base64-encoded string of a UTF-8 encoded JSON, which contains the encryption context as key-value pairs. This value is stored as object metadata and automatically gets passed on to Amazon Web Services KMS for future GetObject operations on this object.

          General purpose buckets - This value must be explicitly added during CopyObject operations if you want an additional encryption context for your object. For more information, see Encryption context in the Amazon S3 User Guide.

          Directory buckets - You can optionally provide an explicit encryption context value. The value must match the default encryption context - the bucket Amazon Resource Name (ARN). An additional encryption context value is not supported.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-context" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

          Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS). Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.

          Specifying this header with a PUT action doesn’t affect bucket-level settings for S3 Bucket Key.

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS).

          General purpose buckets - Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS. Also, specifying this header with a PUT action doesn't affect bucket-level settings for S3 Bucket Key.

          Directory buckets - S3 Bucket Keys are always enabled for GET and PUT operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject, UploadPartCopy, the Copy operation in Batch Operations, or the import jobs. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -9961,7 +10009,7 @@ }, "ExistingObjectReplication":{ "shape":"ExistingObjectReplication", - "documentation":"

          Optional configuration to replicate existing source bucket objects. For more information, see Replicating Existing Objects in the Amazon S3 User Guide.

          " + "documentation":"

          Optional configuration to replicate existing source bucket objects.

          This parameter is no longer supported. To replicate existing objects, see Replicating existing objects with S3 Batch Replication in the Amazon S3 User Guide.

          " }, "Destination":{ "shape":"Destination", @@ -10537,14 +10585,14 @@ "members":{ "SSEAlgorithm":{ "shape":"ServerSideEncryption", - "documentation":"

          Server-side encryption algorithm to use for the default encryption.

          " + "documentation":"

          Server-side encryption algorithm to use for the default encryption.

          For directory buckets, there are only two supported values for server-side encryption: AES256 and aws:kms.

          " }, "KMSMasterKeyID":{ "shape":"SSEKMSKeyId", - "documentation":"

          Amazon Web Services Key Management Service (KMS) customer Amazon Web Services KMS key ID to use for the default encryption. This parameter is allowed if and only if SSEAlgorithm is set to aws:kms or aws:kms:dsse.

          You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key.

          • Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab

          • Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

          • Key Alias: alias/alias-name

          If you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log.

          If you are using encryption with cross-account or Amazon Web Services service operations you must use a fully qualified KMS key ARN. For more information, see Using encryption for cross-account operations.

          Amazon S3 only supports symmetric encryption KMS keys. For more information, see Asymmetric keys in Amazon Web Services KMS in the Amazon Web Services Key Management Service Developer Guide.

          " + "documentation":"

          Amazon Web Services Key Management Service (KMS) customer managed key ID to use for the default encryption.

          • General purpose buckets - This parameter is allowed if and only if SSEAlgorithm is set to aws:kms or aws:kms:dsse.

          • Directory buckets - This parameter is allowed if and only if SSEAlgorithm is set to aws:kms.

          You can specify the key ID, key alias, or the Amazon Resource Name (ARN) of the KMS key.

          • Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab

          • Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

          • Key Alias: alias/alias-name

          If you are using encryption with cross-account or Amazon Web Services service operations, you must use a fully qualified KMS key ARN. For more information, see Using encryption for cross-account operations.

          • General purpose buckets - If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester’s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner. Also, if you use a key ID, you can run into a LogDestination undeliverable error when creating a VPC flow log.

          • Directory buckets - When you specify an KMS customer managed key for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.

          Amazon S3 only supports symmetric encryption KMS keys. For more information, see Asymmetric keys in Amazon Web Services KMS in the Amazon Web Services Key Management Service Developer Guide.

          " } }, - "documentation":"

          Describes the default server-side encryption to apply to new objects in the bucket. If a PUT Object request doesn't specify any server-side encryption, this default encryption will be applied. If you don't specify a customer managed key at configuration, Amazon S3 automatically creates an Amazon Web Services KMS key in your Amazon Web Services account the first time that you add an object encrypted with SSE-KMS to a bucket. By default, Amazon S3 uses this KMS key for SSE-KMS. For more information, see PUT Bucket encryption in the Amazon S3 API Reference.

          If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester’s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.

          " + "documentation":"

          Describes the default server-side encryption to apply to new objects in the bucket. If a PUT Object request doesn't specify any server-side encryption, this default encryption will be applied. For more information, see PutBucketEncryption.

          • General purpose buckets - If you don't specify a customer managed key at configuration, Amazon S3 automatically creates an Amazon Web Services KMS key (aws/s3) in your Amazon Web Services account the first time that you add an object encrypted with SSE-KMS to a bucket. By default, Amazon S3 uses this KMS key for SSE-KMS.

          • Directory buckets - Your SSE-KMS configuration can only support 1 customer managed key per directory bucket for the lifetime of the bucket. Amazon Web Services managed key (aws/s3) isn't supported.

          • Directory buckets - For directory buckets, there are only two supported options for server-side encryption: SSE-S3 and SSE-KMS.

          " }, "ServerSideEncryptionConfiguration":{ "type":"structure", @@ -10567,10 +10615,10 @@ }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

          Specifies whether Amazon S3 should use an S3 Bucket Key with server-side encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects are not affected. Setting the BucketKeyEnabled element to true causes Amazon S3 to use an S3 Bucket Key. By default, S3 Bucket Key is not enabled.

          For more information, see Amazon S3 Bucket Keys in the Amazon S3 User Guide.

          " + "documentation":"

          Specifies whether Amazon S3 should use an S3 Bucket Key with server-side encryption using KMS (SSE-KMS) for new objects in the bucket. Existing objects are not affected. Setting the BucketKeyEnabled element to true causes Amazon S3 to use an S3 Bucket Key.

          • General purpose buckets - By default, S3 Bucket Key is not enabled. For more information, see Amazon S3 Bucket Keys in the Amazon S3 User Guide.

          • Directory buckets - S3 Bucket Keys are always enabled for GET and PUT operations in a directory bucket and can’t be disabled. S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through CopyObject, UploadPartCopy, the Copy operation in Batch Operations, or the import jobs. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object.

          " } }, - "documentation":"

          Specifies the default server-side encryption configuration.

          If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester’s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.

          " + "documentation":"

          Specifies the default server-side encryption configuration.

          • General purpose buckets - If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester’s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner.

          • Directory buckets - When you specify an KMS customer managed key for encryption in your directory bucket, only use the key ID or key ARN. The key alias format of the KMS key isn't supported.

          " }, "ServerSideEncryptionRules":{ "type":"list", @@ -10611,7 +10659,7 @@ "locationName":"Expiration" } }, - "documentation":"

          The established temporary security credentials of the session.

          Directory buckets - These session credentials are only supported for the authentication and authorization of Zonal endpoint APIs on directory buckets.

          " + "documentation":"

          The established temporary security credentials of the session.

          Directory buckets - These session credentials are only supported for the authentication and authorization of Zonal endpoint API operations on directory buckets.

          " }, "SessionExpiration":{"type":"timestamp"}, "SessionMode":{ @@ -10983,7 +11031,7 @@ }, "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

          The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms).

          For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

          ", + "documentation":"

          The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms).

          ", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -11001,13 +11049,13 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

          If present, indicates the ID of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object.

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          If present, indicates the ID of the KMS key that was used for object encryption.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

          Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

          ", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, @@ -11150,7 +11198,7 @@ "members":{ "ServerSideEncryption":{ "shape":"ServerSideEncryption", - "documentation":"

          The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms).

          For directory buckets, only server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) is supported.

          ", + "documentation":"

          The server-side encryption algorithm used when you store this object in Amazon S3 (for example, AES256, aws:kms).

          ", "location":"header", "locationName":"x-amz-server-side-encryption" }, @@ -11198,13 +11246,13 @@ }, "SSEKMSKeyId":{ "shape":"SSEKMSKeyId", - "documentation":"

          If present, indicates the ID of the Key Management Service (KMS) symmetric encryption customer managed key that was used for the object.

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          If present, indicates the ID of the KMS key that was used for object encryption.

          ", "location":"header", "locationName":"x-amz-server-side-encryption-aws-kms-key-id" }, "BucketKeyEnabled":{ "shape":"BucketKeyEnabled", - "documentation":"

          Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

          This functionality is not supported for directory buckets.

          ", + "documentation":"

          Indicates whether the multipart upload uses an S3 Bucket Key for server-side encryption with Key Management Service (KMS) keys (SSE-KMS).

          ", "location":"header", "locationName":"x-amz-server-side-encryption-bucket-key-enabled" }, diff --git a/tools/code-generation/endpoints/directory-service-data-2023-05-31.endpoint-rule-set.json b/tools/code-generation/endpoints/directory-service-data-2023-05-31.endpoint-rule-set.json new file mode 100644 index 00000000000..8f4af0f74b5 --- /dev/null +++ b/tools/code-generation/endpoints/directory-service-data-2023-05-31.endpoint-rule-set.json @@ -0,0 +1,350 @@ +{ + "version": "1.0", + "parameters": { + "Region": { + "builtIn": "AWS::Region", + "required": false, + "documentation": "The AWS region used to dispatch the request.", + "type": "String" + }, + "UseDualStack": { + "builtIn": "AWS::UseDualStack", + "required": true, + "default": false, + "documentation": "When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.", + "type": "Boolean" + }, + "UseFIPS": { + "builtIn": "AWS::UseFIPS", + "required": true, + "default": false, + "documentation": "When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.", + "type": "Boolean" + }, + "Endpoint": { + "builtIn": "SDK::Endpoint", + "required": false, + "documentation": "Override the endpoint used to send this request", + "type": "String" + } + }, + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Endpoint" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "error": "Invalid Configuration: FIPS and custom endpoint are not supported", + "type": "error" + }, + { + "conditions": [], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "error": "Invalid Configuration: Dualstack and custom endpoint are not supported", + "type": "error" + }, + { + "conditions": [], + "endpoint": { + "url": { + "ref": "Endpoint" + }, + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "rules": [ + { + "conditions": [ + { + "fn": "isSet", + "argv": [ + { + "ref": "Region" + } + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "aws.partition", + "argv": [ + { + "ref": "Region" + } + ], + "assign": "PartitionResult" + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + }, + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + } + ] + }, + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + } + ] + } + ], + "rules": [ + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://ds-data-fips.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS and DualStack are enabled, but this partition does not support one or both", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseFIPS" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsFIPS" + ] + }, + true + ] + } + ], + "rules": [ + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://ds-data-fips.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "FIPS is enabled but this partition does not support FIPS", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + { + "ref": "UseDualStack" + }, + true + ] + } + ], + "rules": [ + { + "conditions": [ + { + "fn": "booleanEquals", + "argv": [ + true, + { + "fn": "getAttr", + "argv": [ + { + "ref": "PartitionResult" + }, + "supportsDualStack" + ] + } + ] + } + ], + "rules": [ + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://ds-data.{Region}.{PartitionResult#dualStackDnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "DualStack is enabled but this partition does not support DualStack", + "type": "error" + } + ], + "type": "tree" + }, + { + "conditions": [], + "rules": [ + { + "conditions": [], + "endpoint": { + "url": "https://ds-data.{Region}.{PartitionResult#dnsSuffix}", + "properties": {}, + "headers": {} + }, + "type": "endpoint" + } + ], + "type": "tree" + } + ], + "type": "tree" + } + ], + "type": "tree" + }, + { + "conditions": [], + "error": "Invalid Configuration: Missing Region", + "type": "error" + } + ], + "type": "tree" + } + ] +} \ No newline at end of file diff --git a/tools/code-generation/endpoints/directory-service-data-2023-05-31.endpoint-tests.json b/tools/code-generation/endpoints/directory-service-data-2023-05-31.endpoint-tests.json new file mode 100644 index 00000000000..aa20546a9a0 --- /dev/null +++ b/tools/code-generation/endpoints/directory-service-data-2023-05-31.endpoint-tests.json @@ -0,0 +1,314 @@ +{ + "testCases": [ + { + "documentation": "For region us-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://ds-data-fips.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data-fips.us-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://ds-data.us-east-1.api.aws" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data.us-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region cn-north-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://ds-data-fips.cn-north-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region cn-north-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data-fips.cn-north-1.amazonaws.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region cn-north-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://ds-data.cn-north-1.api.amazonwebservices.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region cn-north-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data.cn-north-1.amazonaws.com.cn" + } + }, + "params": { + "Region": "cn-north-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://ds-data-fips.us-gov-east-1.api.aws" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data-fips.us-gov-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "endpoint": { + "url": "https://ds-data.us-gov-east-1.api.aws" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-gov-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data.us-gov-east-1.amazonaws.com" + } + }, + "params": { + "Region": "us-gov-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "error": "FIPS and DualStack are enabled, but this partition does not support one or both" + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data-fips.us-iso-east-1.c2s.ic.gov" + } + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "error": "DualStack is enabled but this partition does not support DualStack" + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data.us-iso-east-1.c2s.ic.gov" + } + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "error": "FIPS and DualStack are enabled, but this partition does not support one or both" + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": true, + "UseDualStack": true + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS enabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data-fips.us-isob-east-1.sc2s.sgov.gov" + } + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "error": "DualStack is enabled but this partition does not support DualStack" + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": false, + "UseDualStack": true + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS disabled and DualStack disabled", + "expect": { + "endpoint": { + "url": "https://ds-data.us-isob-east-1.sc2s.sgov.gov" + } + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For custom endpoint with region set and fips disabled and dualstack disabled", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with region not set and fips disabled and dualstack disabled", + "expect": { + "endpoint": { + "url": "https://example.com" + } + }, + "params": { + "UseFIPS": false, + "UseDualStack": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with fips enabled and dualstack disabled", + "expect": { + "error": "Invalid Configuration: FIPS and custom endpoint are not supported" + }, + "params": { + "Region": "us-east-1", + "UseFIPS": true, + "UseDualStack": false, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "For custom endpoint with fips disabled and dualstack enabled", + "expect": { + "error": "Invalid Configuration: Dualstack and custom endpoint are not supported" + }, + "params": { + "Region": "us-east-1", + "UseFIPS": false, + "UseDualStack": true, + "Endpoint": "https://example.com" + } + }, + { + "documentation": "Missing region", + "expect": { + "error": "Invalid Configuration: Missing Region" + } + } + ], + "version": "1.0" +} \ No newline at end of file