From 52ade27631c23177649e32405727ec2b5b01727e Mon Sep 17 00:00:00 2001 From: AWS Mobile SDK Bot <46607340+awsmobilesdk@users.noreply.github.com> Date: Wed, 24 Jan 2024 14:17:01 -0500 Subject: [PATCH 01/11] feat(AWSConnectParticipant): update models to latest (#5155) --- AWSConnectParticipant/AWSConnectParticipant.h | 2 +- AWSConnectParticipant/AWSConnectParticipantModel.h | 4 +++- AWSConnectParticipant/AWSConnectParticipantModel.m | 7 ++++++- .../AWSConnectParticipantResources.h | 2 +- .../AWSConnectParticipantResources.m | 11 +++++++---- AWSConnectParticipant/AWSConnectParticipantService.h | 6 +++--- AWSConnectParticipant/AWSConnectParticipantService.m | 2 +- .../AWSConnectParticipantNSSecureCodingTests.m | 2 +- .../AWSGeneralConnectParticipantTests.m | 2 +- 9 files changed, 24 insertions(+), 14 deletions(-) diff --git a/AWSConnectParticipant/AWSConnectParticipant.h b/AWSConnectParticipant/AWSConnectParticipant.h index b618ca9adbb..64cc957d40d 100644 --- a/AWSConnectParticipant/AWSConnectParticipant.h +++ b/AWSConnectParticipant/AWSConnectParticipant.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSConnectParticipant/AWSConnectParticipantModel.h b/AWSConnectParticipant/AWSConnectParticipantModel.h index f761a53929e..56bcbb688e4 100644 --- a/AWSConnectParticipant/AWSConnectParticipantModel.h +++ b/AWSConnectParticipant/AWSConnectParticipantModel.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -67,6 +67,7 @@ typedef NS_ENUM(NSInteger, AWSConnectParticipantParticipantRole) { AWSConnectParticipantParticipantRoleCustomer, AWSConnectParticipantParticipantRoleSystem, AWSConnectParticipantParticipantRoleCustomBot, + AWSConnectParticipantParticipantRoleSupervisor, }; typedef NS_ENUM(NSInteger, AWSConnectParticipantResourceType) { @@ -78,6 +79,7 @@ typedef NS_ENUM(NSInteger, AWSConnectParticipantResourceType) { AWSConnectParticipantResourceTypeHierarchyLevel, AWSConnectParticipantResourceTypeHierarchyGroup, AWSConnectParticipantResourceTypeUser, + AWSConnectParticipantResourceTypePhoneNumber, }; typedef NS_ENUM(NSInteger, AWSConnectParticipantScanDirection) { diff --git a/AWSConnectParticipant/AWSConnectParticipantModel.m b/AWSConnectParticipant/AWSConnectParticipantModel.m index ba7c5367436..a12ab0ba7c4 100644 --- a/AWSConnectParticipant/AWSConnectParticipantModel.m +++ b/AWSConnectParticipant/AWSConnectParticipantModel.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -356,6 +356,9 @@ + (NSValueTransformer *)participantRoleJSONTransformer { if ([value caseInsensitiveCompare:@"CUSTOM_BOT"] == NSOrderedSame) { return @(AWSConnectParticipantParticipantRoleCustomBot); } + if ([value caseInsensitiveCompare:@"SUPERVISOR"] == NSOrderedSame) { + return @(AWSConnectParticipantParticipantRoleSupervisor); + } return @(AWSConnectParticipantParticipantRoleUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -367,6 +370,8 @@ + (NSValueTransformer *)participantRoleJSONTransformer { return @"SYSTEM"; case AWSConnectParticipantParticipantRoleCustomBot: return @"CUSTOM_BOT"; + case AWSConnectParticipantParticipantRoleSupervisor: + return @"SUPERVISOR"; default: return nil; } diff --git a/AWSConnectParticipant/AWSConnectParticipantResources.h b/AWSConnectParticipant/AWSConnectParticipantResources.h index c6a200c00b5..ba925f2f267 100644 --- a/AWSConnectParticipant/AWSConnectParticipantResources.h +++ b/AWSConnectParticipant/AWSConnectParticipantResources.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSConnectParticipant/AWSConnectParticipantResources.m b/AWSConnectParticipant/AWSConnectParticipantResources.m index abc89932372..6dc66151cf3 100644 --- a/AWSConnectParticipant/AWSConnectParticipantResources.m +++ b/AWSConnectParticipant/AWSConnectParticipantResources.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -182,7 +182,8 @@ - (NSString *)definitionString { {\"shape\":\"AccessDeniedException\"},\ {\"shape\":\"InternalServerException\"},\ {\"shape\":\"ThrottlingException\"},\ - {\"shape\":\"ValidationException\"}\ + {\"shape\":\"ValidationException\"},\ + {\"shape\":\"ConflictException\"}\ ],\ \"documentation\":\"

Sends an event.

ConnectionToken is used for invoking this API instead of ParticipantToken.

The Amazon Connect Participant Service APIs do not use Signature Version 4 authentication.

\"\ },\ @@ -692,7 +693,8 @@ - (NSString *)definitionString { \"AGENT\",\ \"CUSTOMER\",\ \"SYSTEM\",\ - \"CUSTOM_BOT\"\ + \"CUSTOM_BOT\",\ + \"SUPERVISOR\"\ ]\ },\ \"ParticipantToken\":{\ @@ -764,7 +766,8 @@ - (NSString *)definitionString { \"PARTICIPANT\",\ \"HIERARCHY_LEVEL\",\ \"HIERARCHY_GROUP\",\ - \"USER\"\ + \"USER\",\ + \"PHONE_NUMBER\"\ ]\ },\ \"ScanDirection\":{\ diff --git a/AWSConnectParticipant/AWSConnectParticipantService.h b/AWSConnectParticipant/AWSConnectParticipantService.h index af9cdc7fa3c..2bdabbe0526 100644 --- a/AWSConnectParticipant/AWSConnectParticipantService.h +++ b/AWSConnectParticipant/AWSConnectParticipantService.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -329,7 +329,7 @@ FOUNDATION_EXPORT NSString *const AWSConnectParticipantSDKVersion; @param request A container for the necessary parameters to execute the SendEvent service method. - @return An instance of `AWSTask`. On successful execution, `task.result` will contain an instance of `AWSConnectParticipantSendEventResponse`. On failed execution, `task.error` may contain an `NSError` with `AWSConnectParticipantErrorDomain` domain and the following error code: `AWSConnectParticipantErrorAccessDenied`, `AWSConnectParticipantErrorInternalServer`, `AWSConnectParticipantErrorThrottling`, `AWSConnectParticipantErrorValidation`. + @return An instance of `AWSTask`. On successful execution, `task.result` will contain an instance of `AWSConnectParticipantSendEventResponse`. On failed execution, `task.error` may contain an `NSError` with `AWSConnectParticipantErrorDomain` domain and the following error code: `AWSConnectParticipantErrorAccessDenied`, `AWSConnectParticipantErrorInternalServer`, `AWSConnectParticipantErrorThrottling`, `AWSConnectParticipantErrorValidation`, `AWSConnectParticipantErrorConflict`. @see AWSConnectParticipantSendEventRequest @see AWSConnectParticipantSendEventResponse @@ -342,7 +342,7 @@ FOUNDATION_EXPORT NSString *const AWSConnectParticipantSDKVersion; @param request A container for the necessary parameters to execute the SendEvent service method. @param completionHandler The completion handler to call when the load request is complete. `response` - A response object, or `nil` if the request failed. - `error` - An error object that indicates why the request failed, or `nil` if the request was successful. On failed execution, `error` may contain an `NSError` with `AWSConnectParticipantErrorDomain` domain and the following error code: `AWSConnectParticipantErrorAccessDenied`, `AWSConnectParticipantErrorInternalServer`, `AWSConnectParticipantErrorThrottling`, `AWSConnectParticipantErrorValidation`. + `error` - An error object that indicates why the request failed, or `nil` if the request was successful. On failed execution, `error` may contain an `NSError` with `AWSConnectParticipantErrorDomain` domain and the following error code: `AWSConnectParticipantErrorAccessDenied`, `AWSConnectParticipantErrorInternalServer`, `AWSConnectParticipantErrorThrottling`, `AWSConnectParticipantErrorValidation`, `AWSConnectParticipantErrorConflict`. @see AWSConnectParticipantSendEventRequest @see AWSConnectParticipantSendEventResponse diff --git a/AWSConnectParticipant/AWSConnectParticipantService.m b/AWSConnectParticipant/AWSConnectParticipantService.m index f58e74e8350..a004db77fb7 100644 --- a/AWSConnectParticipant/AWSConnectParticipantService.m +++ b/AWSConnectParticipant/AWSConnectParticipantService.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSConnectParticipantUnitTests/AWSConnectParticipantNSSecureCodingTests.m b/AWSConnectParticipantUnitTests/AWSConnectParticipantNSSecureCodingTests.m index 1f4550d3b7a..9c6e45b4c8d 100644 --- a/AWSConnectParticipantUnitTests/AWSConnectParticipantNSSecureCodingTests.m +++ b/AWSConnectParticipantUnitTests/AWSConnectParticipantNSSecureCodingTests.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSConnectParticipantUnitTests/AWSGeneralConnectParticipantTests.m b/AWSConnectParticipantUnitTests/AWSGeneralConnectParticipantTests.m index a5061797290..0fa0d50c55a 100644 --- a/AWSConnectParticipantUnitTests/AWSGeneralConnectParticipantTests.m +++ b/AWSConnectParticipantUnitTests/AWSGeneralConnectParticipantTests.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. From bd7760bae53468cbf249ceba0ffbcb910d2142bf Mon Sep 17 00:00:00 2001 From: AWS Mobile SDK Bot <46607340+awsmobilesdk@users.noreply.github.com> Date: Wed, 24 Jan 2024 14:17:34 -0500 Subject: [PATCH 02/11] feat(AWSLocation): update models to latest (#5156) --- AWSLocation/AWSLocation.h | 2 +- AWSLocation/AWSLocationModel.h | 26 +++++++++----- AWSLocation/AWSLocationModel.m | 4 ++- AWSLocation/AWSLocationResources.h | 2 +- AWSLocation/AWSLocationResources.m | 36 ++++++++++++++----- AWSLocation/AWSLocationService.h | 2 +- AWSLocation/AWSLocationService.m | 2 +- .../AWSGeneralLocationTests.m | 2 +- .../AWSLocationNSSecureCodingTests.m | 2 +- 9 files changed, 55 insertions(+), 23 deletions(-) diff --git a/AWSLocation/AWSLocation.h b/AWSLocation/AWSLocation.h index 533fb2d108d..888a80519b2 100644 --- a/AWSLocation/AWSLocation.h +++ b/AWSLocation/AWSLocation.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSLocation/AWSLocationModel.h b/AWSLocation/AWSLocationModel.h index 2ed4fbf71fb..6c915e6a6b1 100644 --- a/AWSLocation/AWSLocationModel.h +++ b/AWSLocation/AWSLocationModel.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -2270,7 +2270,7 @@ typedef NS_ENUM(NSInteger, AWSLocationVehicleWeightUnit) { /** -

A comma-separated list of fonts to load glyphs from in order of preference. For example, Noto Sans Regular, Arial Unicode.

Valid font stacks for Esri styles:

Valid font stacks for HERE Technologies styles:

Valid font stacks for GrabMaps styles:

Valid font stacks for Open Data styles:

The fonts used by the Open Data map styles are combined fonts that use Amazon Ember for most glyphs but Noto Sans for glyphs unsupported by Amazon Ember.

+

A comma-separated list of fonts to load glyphs from in order of preference. For example, Noto Sans Regular, Arial Unicode.

Valid font stacks for Esri styles:

Valid font stacks for HERE Technologies styles:

Valid font stacks for GrabMaps styles:

Valid font stacks for Open Data styles:

The fonts used by the Open Data map styles are combined fonts that use Amazon Ember for most glyphs but Noto Sans for glyphs unsupported by Amazon Ember.

*/ @property (nonatomic, strong) NSString * _Nullable fontStack; @@ -2479,7 +2479,7 @@ typedef NS_ENUM(NSInteger, AWSLocationVehicleWeightUnit) { @property (nonatomic, strong) NSString * _Nullable language; /** -

The identifier of the place to find.

+

The identifier of the place to find.

While you can use PlaceID in subsequent requests, PlaceID is not intended to be a permanent identifier and the ID can change between consecutive API calls. Please see the following PlaceID behaviour for each data provider:

*/ @property (nonatomic, strong) NSString * _Nullable placeId; @@ -3239,13 +3239,18 @@ typedef NS_ENUM(NSInteger, AWSLocationVehicleWeightUnit) { @interface AWSLocationMapConfiguration : AWSModel +/** +

Specifies the custom layers for the style. Leave unset to not enable any custom layer, or, for styles that support custom layers, you can enable layer(s), such as POI layer for the VectorEsriNavigation style. Default is unset.

Currenlty only VectorEsriNavigation supports CustomLayers. For more information, see Custom Layers.

+ */ +@property (nonatomic, strong) NSArray * _Nullable customLayers; + /**

Specifies the political view for the style. Leave unset to not use a political view, or, for styles that support specific political views, you can choose a view, such as IND for the Indian view.

Default is unset.

Not all map resources or styles support political view styles. See Political views for more information.

*/ @property (nonatomic, strong) NSString * _Nullable politicalView; /** -

Specifies the map style selected from an available data provider.

Valid Esri map styles:

Valid HERE Technologies map styles:

Valid GrabMaps map styles:

Grab provides maps only for countries in Southeast Asia, and is only available in the Asia Pacific (Singapore) Region (ap-southeast-1). For more information, see GrabMaps countries and area covered.

Valid Open Data map styles:

+

Specifies the map style selected from an available data provider.

Valid Esri map styles:

Valid HERE Technologies map styles:

Valid GrabMaps map styles:

Grab provides maps only for countries in Southeast Asia, and is only available in the Asia Pacific (Singapore) Region (ap-southeast-1). For more information, see GrabMaps countries and area covered.

Valid Open Data map styles:

*/ @property (nonatomic, strong) NSString * _Nullable style; @@ -3257,6 +3262,11 @@ typedef NS_ENUM(NSInteger, AWSLocationVehicleWeightUnit) { @interface AWSLocationMapConfigurationUpdate : AWSModel +/** +

Specifies the custom layers for the style. Leave unset to not enable any custom layer, or, for styles that support custom layers, you can enable layer(s), such as POI layer for the VectorEsriNavigation style. Default is unset.

Currenlty only VectorEsriNavigation supports CustomLayers. For more information, see Custom Layers.

+ */ +@property (nonatomic, strong) NSArray * _Nullable customLayers; + /**

Specifies the political view for the style. Set to an empty string to not use a political view, or, for styles that support specific political views, you can choose a view, such as IND for the Indian view.

Not all map resources or styles support political view styles. See Political views for more information.

*/ @@ -3327,7 +3337,7 @@ typedef NS_ENUM(NSInteger, AWSLocationVehicleWeightUnit) { @property (nonatomic, strong) NSString * _Nullable street; /** -

An area that's part of a larger municipality. For example, Blissville is a submunicipality in the Queen County in New York.

This property supported by Esri and OpenData. The Esri property is district, and the OpenData property is borough.

+

An area that's part of a larger municipality. For example, Blissville is a submunicipality in the Queen County in New York.

This property is only returned for a place index that uses Esri as a data provider. The property is represented as a district.

For more information about data providers, see Amazon Location Service data providers.

*/ @property (nonatomic, strong) NSString * _Nullable subMunicipality; @@ -3347,12 +3357,12 @@ typedef NS_ENUM(NSInteger, AWSLocationVehicleWeightUnit) { @property (nonatomic, strong) AWSLocationTimeZone * _Nullable timeZone; /** -

For addresses with multiple units, the unit identifier. Can include numbers and letters, for example 3B or Unit 123.

Returned only for a place index that uses Esri or Grab as a data provider. Is not returned for SearchPlaceIndexForPosition.

+

For addresses with multiple units, the unit identifier. Can include numbers and letters, for example 3B or Unit 123.

This property is returned only for a place index that uses Esri or Grab as a data provider. It is not returned for SearchPlaceIndexForPosition.

*/ @property (nonatomic, strong) NSString * _Nullable unitNumber; /** -

For addresses with a UnitNumber, the type of unit. For example, Apartment.

Returned only for a place index that uses Esri as a data provider.

+

For addresses with a UnitNumber, the type of unit. For example, Apartment.

This property is returned only for a place index that uses Esri as a data provider.

*/ @property (nonatomic, strong) NSString * _Nullable unitType; @@ -3515,7 +3525,7 @@ typedef NS_ENUM(NSInteger, AWSLocationVehicleWeightUnit) { @property (nonatomic, strong) NSArray * _Nullable categories; /** -

The unique identifier of the Place. You can use this with the GetPlace operation to find the place again later, or to get full information for the Place.

The GetPlace request must use the same PlaceIndex resource as the SearchPlaceIndexForSuggestions that generated the Place ID.

For SearchPlaceIndexForSuggestions operations, the PlaceId is returned by place indexes that use Esri, Grab, or HERE as data providers.

+

The unique identifier of the Place. You can use this with the GetPlace operation to find the place again later, or to get full information for the Place.

The GetPlace request must use the same PlaceIndex resource as the SearchPlaceIndexForSuggestions that generated the Place ID.

For SearchPlaceIndexForSuggestions operations, the PlaceId is returned by place indexes that use Esri, Grab, or HERE as data providers.

While you can use PlaceID in subsequent requests, PlaceID is not intended to be a permanent identifier and the ID can change between consecutive API calls. Please see the following PlaceID behaviour for each data provider:

  • Esri: Place IDs will change every quarter at a minimum. The typical time period for these changes would be March, June, September, and December. Place IDs might also change between the typical quarterly change but that will be much less frequent.

  • HERE: We recommend that you cache data for no longer than a week to keep your data data fresh. You can assume that less than 1% ID shifts will release over release which is approximately 1 - 2 times per week.

  • Grab: Place IDs can expire or become invalid in the following situations.

    • Data operations: The POI may be removed from Grab POI database by Grab Map Ops based on the ground-truth, such as being closed in the real world, being detected as a duplicate POI, or having incorrect information. Grab will synchronize data to the Waypoint environment on weekly basis.

    • Interpolated POI: Interpolated POI is a temporary POI generated in real time when serving a request, and it will be marked as derived in the place.result_type field in the response. The information of interpolated POIs will be retained for at least 30 days, which means that within 30 days, you are able to obtain POI details by Place ID from Place Details API. After 30 days, the interpolated POIs(both Place ID and details) may expire and inaccessible from the Places Details API.

*/ @property (nonatomic, strong) NSString * _Nullable placeId; diff --git a/AWSLocation/AWSLocationModel.m b/AWSLocation/AWSLocationModel.m index 0fe4eaa29b1..7ac0ec2d6ec 100644 --- a/AWSLocation/AWSLocationModel.m +++ b/AWSLocation/AWSLocationModel.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -3299,6 +3299,7 @@ + (BOOL)supportsSecureCoding { + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ + @"customLayers" : @"CustomLayers", @"politicalView" : @"PoliticalView", @"style" : @"Style", }; @@ -3314,6 +3315,7 @@ + (BOOL)supportsSecureCoding { + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ + @"customLayers" : @"CustomLayers", @"politicalView" : @"PoliticalView", }; } diff --git a/AWSLocation/AWSLocationResources.h b/AWSLocation/AWSLocationResources.h index f68557c0cd8..d9142bd2053 100644 --- a/AWSLocation/AWSLocationResources.h +++ b/AWSLocation/AWSLocationResources.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSLocation/AWSLocationResources.m b/AWSLocation/AWSLocationResources.m index 16765c2958b..545742382dd 100644 --- a/AWSLocation/AWSLocationResources.m +++ b/AWSLocation/AWSLocationResources.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -2482,6 +2482,18 @@ - (NSString *)definitionString { }\ }\ },\ + \"CustomLayer\":{\ + \"type\":\"string\",\ + \"max\":100,\ + \"min\":1,\ + \"pattern\":\"^[-._\\\\w]+$\"\ + },\ + \"CustomLayerList\":{\ + \"type\":\"list\",\ + \"member\":{\"shape\":\"CustomLayer\"},\ + \"max\":10,\ + \"min\":0\ + },\ \"DataSourceConfiguration\":{\ \"type\":\"structure\",\ \"members\":{\ @@ -3314,7 +3326,7 @@ - (NSString *)definitionString { \"members\":{\ \"FontStack\":{\ \"shape\":\"String\",\ - \"documentation\":\"

A comma-separated list of fonts to load glyphs from in order of preference. For example, Noto Sans Regular, Arial Unicode.

Valid font stacks for Esri styles:

  • VectorEsriDarkGrayCanvas – Ubuntu Medium Italic | Ubuntu Medium | Ubuntu Italic | Ubuntu Regular | Ubuntu Bold

  • VectorEsriLightGrayCanvas – Ubuntu Italic | Ubuntu Regular | Ubuntu Light | Ubuntu Bold

  • VectorEsriTopographic – Noto Sans Italic | Noto Sans Regular | Noto Sans Bold | Noto Serif Regular | Roboto Condensed Light Italic

  • VectorEsriStreets – Arial Regular | Arial Italic | Arial Bold

  • VectorEsriNavigation – Arial Regular | Arial Italic | Arial Bold

Valid font stacks for HERE Technologies styles:

  • VectorHereContrast – Fira GO Regular | Fira GO Bold

  • VectorHereExplore, VectorHereExploreTruck, HybridHereExploreSatellite – Fira GO Italic | Fira GO Map | Fira GO Map Bold | Noto Sans CJK JP Bold | Noto Sans CJK JP Light | Noto Sans CJK JP Regular

Valid font stacks for GrabMaps styles:

  • VectorGrabStandardLight, VectorGrabStandardDark – Noto Sans Regular | Noto Sans Medium | Noto Sans Bold

Valid font stacks for Open Data styles:

  • VectorOpenDataStandardLight, VectorOpenDataStandardDark, VectorOpenDataVisualizationLight, VectorOpenDataVisualizationDark – Amazon Ember Regular,Noto Sans Regular | Amazon Ember Bold,Noto Sans Bold | Amazon Ember Medium,Noto Sans Medium | Amazon Ember Regular Italic,Noto Sans Italic | Amazon Ember Condensed RC Regular,Noto Sans Regular | Amazon Ember Condensed RC Bold,Noto Sans Bold | Amazon Ember Regular,Noto Sans Regular,Noto Sans Arabic Regular | Amazon Ember Condensed RC Bold,Noto Sans Bold,Noto Sans Arabic Condensed Bold | Amazon Ember Bold,Noto Sans Bold,Noto Sans Arabic Bold | Amazon Ember Regular Italic,Noto Sans Italic,Noto Sans Arabic Regular | Amazon Ember Condensed RC Regular,Noto Sans Regular,Noto Sans Arabic Condensed Regular | Amazon Ember Medium,Noto Sans Medium,Noto Sans Arabic Medium

The fonts used by the Open Data map styles are combined fonts that use Amazon Ember for most glyphs but Noto Sans for glyphs unsupported by Amazon Ember.

\",\ + \"documentation\":\"

A comma-separated list of fonts to load glyphs from in order of preference. For example, Noto Sans Regular, Arial Unicode.

Valid font stacks for Esri styles:

  • VectorEsriDarkGrayCanvas – Ubuntu Medium Italic | Ubuntu Medium | Ubuntu Italic | Ubuntu Regular | Ubuntu Bold

  • VectorEsriLightGrayCanvas – Ubuntu Italic | Ubuntu Regular | Ubuntu Light | Ubuntu Bold

  • VectorEsriTopographic – Noto Sans Italic | Noto Sans Regular | Noto Sans Bold | Noto Serif Regular | Roboto Condensed Light Italic

  • VectorEsriStreets – Arial Regular | Arial Italic | Arial Bold

  • VectorEsriNavigation – Arial Regular | Arial Italic | Arial Bold | Arial Unicode MS Bold | Arial Unicode MS Regular

Valid font stacks for HERE Technologies styles:

  • VectorHereContrast – Fira GO Regular | Fira GO Bold

  • VectorHereExplore, VectorHereExploreTruck, HybridHereExploreSatellite – Fira GO Italic | Fira GO Map | Fira GO Map Bold | Noto Sans CJK JP Bold | Noto Sans CJK JP Light | Noto Sans CJK JP Regular

Valid font stacks for GrabMaps styles:

  • VectorGrabStandardLight, VectorGrabStandardDark – Noto Sans Regular | Noto Sans Medium | Noto Sans Bold

Valid font stacks for Open Data styles:

  • VectorOpenDataStandardLight, VectorOpenDataStandardDark, VectorOpenDataVisualizationLight, VectorOpenDataVisualizationDark – Amazon Ember Regular,Noto Sans Regular | Amazon Ember Bold,Noto Sans Bold | Amazon Ember Medium,Noto Sans Medium | Amazon Ember Regular Italic,Noto Sans Italic | Amazon Ember Condensed RC Regular,Noto Sans Regular | Amazon Ember Condensed RC Bold,Noto Sans Bold | Amazon Ember Regular,Noto Sans Regular,Noto Sans Arabic Regular | Amazon Ember Condensed RC Bold,Noto Sans Bold,Noto Sans Arabic Condensed Bold | Amazon Ember Bold,Noto Sans Bold,Noto Sans Arabic Bold | Amazon Ember Regular Italic,Noto Sans Italic,Noto Sans Arabic Regular | Amazon Ember Condensed RC Regular,Noto Sans Regular,Noto Sans Arabic Condensed Regular | Amazon Ember Medium,Noto Sans Medium,Noto Sans Arabic Medium

The fonts used by the Open Data map styles are combined fonts that use Amazon Ember for most glyphs but Noto Sans for glyphs unsupported by Amazon Ember.

\",\ \"location\":\"uri\",\ \"locationName\":\"FontStack\"\ },\ @@ -3559,7 +3571,7 @@ - (NSString *)definitionString { },\ \"PlaceId\":{\ \"shape\":\"PlaceId\",\ - \"documentation\":\"

The identifier of the place to find.

\",\ + \"documentation\":\"

The identifier of the place to find.

While you can use PlaceID in subsequent requests, PlaceID is not intended to be a permanent identifier and the ID can change between consecutive API calls. Please see the following PlaceID behaviour for each data provider:

  • Esri: Place IDs will change every quarter at a minimum. The typical time period for these changes would be March, June, September, and December. Place IDs might also change between the typical quarterly change but that will be much less frequent.

  • HERE: We recommend that you cache data for no longer than a week to keep your data data fresh. You can assume that less than 1% ID shifts will release over release which is approximately 1 - 2 times per week.

  • Grab: Place IDs can expire or become invalid in the following situations.

    • Data operations: The POI may be removed from Grab POI database by Grab Map Ops based on the ground-truth, such as being closed in the real world, being detected as a duplicate POI, or having incorrect information. Grab will synchronize data to the Waypoint environment on weekly basis.

    • Interpolated POI: Interpolated POI is a temporary POI generated in real time when serving a request, and it will be marked as derived in the place.result_type field in the response. The information of interpolated POIs will be retained for at least 30 days, which means that within 30 days, you are able to obtain POI details by Place ID from Place Details API. After 30 days, the interpolated POIs(both Place ID and details) may expire and inaccessible from the Places Details API.

\",\ \"location\":\"uri\",\ \"locationName\":\"PlaceId\"\ }\ @@ -4375,13 +4387,17 @@ - (NSString *)definitionString { \"type\":\"structure\",\ \"required\":[\"Style\"],\ \"members\":{\ + \"CustomLayers\":{\ + \"shape\":\"CustomLayerList\",\ + \"documentation\":\"

Specifies the custom layers for the style. Leave unset to not enable any custom layer, or, for styles that support custom layers, you can enable layer(s), such as POI layer for the VectorEsriNavigation style. Default is unset.

Currenlty only VectorEsriNavigation supports CustomLayers. For more information, see Custom Layers.

\"\ + },\ \"PoliticalView\":{\ \"shape\":\"CountryCode3\",\ \"documentation\":\"

Specifies the political view for the style. Leave unset to not use a political view, or, for styles that support specific political views, you can choose a view, such as IND for the Indian view.

Default is unset.

Not all map resources or styles support political view styles. See Political views for more information.

\"\ },\ \"Style\":{\ \"shape\":\"MapStyle\",\ - \"documentation\":\"

Specifies the map style selected from an available data provider.

Valid Esri map styles:

  • VectorEsriDarkGrayCanvas – The Esri Dark Gray Canvas map style. A vector basemap with a dark gray, neutral background with minimal colors, labels, and features that's designed to draw attention to your thematic content.

  • RasterEsriImagery – The Esri Imagery map style. A raster basemap that provides one meter or better satellite and aerial imagery in many parts of the world and lower resolution satellite imagery worldwide.

  • VectorEsriLightGrayCanvas – The Esri Light Gray Canvas map style, which provides a detailed vector basemap with a light gray, neutral background style with minimal colors, labels, and features that's designed to draw attention to your thematic content.

  • VectorEsriTopographic – The Esri Light map style, which provides a detailed vector basemap with a classic Esri map style.

  • VectorEsriStreets – The Esri Street Map style, which provides a detailed vector basemap for the world symbolized with a classic Esri street map style. The vector tile layer is similar in content and style to the World Street Map raster map.

  • VectorEsriNavigation – The Esri Navigation map style, which provides a detailed basemap for the world symbolized with a custom navigation map style that's designed for use during the day in mobile devices.

Valid HERE Technologies map styles:

  • VectorHereContrast – The HERE Contrast (Berlin) map style is a high contrast detailed base map of the world that blends 3D and 2D rendering.

    The VectorHereContrast style has been renamed from VectorHereBerlin. VectorHereBerlin has been deprecated, but will continue to work in applications that use it.

  • VectorHereExplore – A default HERE map style containing a neutral, global map and its features including roads, buildings, landmarks, and water features. It also now includes a fully designed map of Japan.

  • VectorHereExploreTruck – A global map containing truck restrictions and attributes (e.g. width / height / HAZMAT) symbolized with highlighted segments and icons on top of HERE Explore to support use cases within transport and logistics.

  • RasterHereExploreSatellite – A global map containing high resolution satellite imagery.

  • HybridHereExploreSatellite – A global map displaying the road network, street names, and city labels over satellite imagery. This style will automatically retrieve both raster and vector tiles, and your charges will be based on total tiles retrieved.

    Hybrid styles use both vector and raster tiles when rendering the map that you see. This means that more tiles are retrieved than when using either vector or raster tiles alone. Your charges will include all tiles retrieved.

Valid GrabMaps map styles:

  • VectorGrabStandardLight – The Grab Standard Light map style provides a basemap with detailed land use coloring, area names, roads, landmarks, and points of interest covering Southeast Asia.

  • VectorGrabStandardDark – The Grab Standard Dark map style provides a dark variation of the standard basemap covering Southeast Asia.

Grab provides maps only for countries in Southeast Asia, and is only available in the Asia Pacific (Singapore) Region (ap-southeast-1). For more information, see GrabMaps countries and area covered.

Valid Open Data map styles:

  • VectorOpenDataStandardLight – The Open Data Standard Light map style provides a detailed basemap for the world suitable for website and mobile application use. The map includes highways major roads, minor roads, railways, water features, cities, parks, landmarks, building footprints, and administrative boundaries.

  • VectorOpenDataStandardDark – Open Data Standard Dark is a dark-themed map style that provides a detailed basemap for the world suitable for website and mobile application use. The map includes highways major roads, minor roads, railways, water features, cities, parks, landmarks, building footprints, and administrative boundaries.

  • VectorOpenDataVisualizationLight – The Open Data Visualization Light map style is a light-themed style with muted colors and fewer features that aids in understanding overlaid data.

  • VectorOpenDataVisualizationDark – The Open Data Visualization Dark map style is a dark-themed style with muted colors and fewer features that aids in understanding overlaid data.

\"\ + \"documentation\":\"

Specifies the map style selected from an available data provider.

Valid Esri map styles:

  • VectorEsriNavigation – The Esri Navigation map style, which provides a detailed basemap for the world symbolized with a custom navigation map style that's designed for use during the day in mobile devices. It also includes a richer set of places, such as shops, services, restaurants, attractions, and other points of interest. Enable the POI layer by setting it in CustomLayers to leverage the additional places data.

  • RasterEsriImagery – The Esri Imagery map style. A raster basemap that provides one meter or better satellite and aerial imagery in many parts of the world and lower resolution satellite imagery worldwide.

  • VectorEsriLightGrayCanvas – The Esri Light Gray Canvas map style, which provides a detailed vector basemap with a light gray, neutral background style with minimal colors, labels, and features that's designed to draw attention to your thematic content.

  • VectorEsriTopographic – The Esri Light map style, which provides a detailed vector basemap with a classic Esri map style.

  • VectorEsriStreets – The Esri Street Map style, which provides a detailed vector basemap for the world symbolized with a classic Esri street map style. The vector tile layer is similar in content and style to the World Street Map raster map.

  • VectorEsriDarkGrayCanvas – The Esri Dark Gray Canvas map style. A vector basemap with a dark gray, neutral background with minimal colors, labels, and features that's designed to draw attention to your thematic content.

Valid HERE Technologies map styles:

  • VectorHereExplore – A default HERE map style containing a neutral, global map and its features including roads, buildings, landmarks, and water features. It also now includes a fully designed map of Japan.

  • RasterHereExploreSatellite – A global map containing high resolution satellite imagery.

  • HybridHereExploreSatellite – A global map displaying the road network, street names, and city labels over satellite imagery. This style will automatically retrieve both raster and vector tiles, and your charges will be based on total tiles retrieved.

    Hybrid styles use both vector and raster tiles when rendering the map that you see. This means that more tiles are retrieved than when using either vector or raster tiles alone. Your charges will include all tiles retrieved.

  • VectorHereContrast – The HERE Contrast (Berlin) map style is a high contrast detailed base map of the world that blends 3D and 2D rendering.

    The VectorHereContrast style has been renamed from VectorHereBerlin. VectorHereBerlin has been deprecated, but will continue to work in applications that use it.

  • VectorHereExploreTruck – A global map containing truck restrictions and attributes (e.g. width / height / HAZMAT) symbolized with highlighted segments and icons on top of HERE Explore to support use cases within transport and logistics.

Valid GrabMaps map styles:

  • VectorGrabStandardLight – The Grab Standard Light map style provides a basemap with detailed land use coloring, area names, roads, landmarks, and points of interest covering Southeast Asia.

  • VectorGrabStandardDark – The Grab Standard Dark map style provides a dark variation of the standard basemap covering Southeast Asia.

Grab provides maps only for countries in Southeast Asia, and is only available in the Asia Pacific (Singapore) Region (ap-southeast-1). For more information, see GrabMaps countries and area covered.

Valid Open Data map styles:

  • VectorOpenDataStandardLight – The Open Data Standard Light map style provides a detailed basemap for the world suitable for website and mobile application use. The map includes highways major roads, minor roads, railways, water features, cities, parks, landmarks, building footprints, and administrative boundaries.

  • VectorOpenDataStandardDark – Open Data Standard Dark is a dark-themed map style that provides a detailed basemap for the world suitable for website and mobile application use. The map includes highways major roads, minor roads, railways, water features, cities, parks, landmarks, building footprints, and administrative boundaries.

  • VectorOpenDataVisualizationLight – The Open Data Visualization Light map style is a light-themed style with muted colors and fewer features that aids in understanding overlaid data.

  • VectorOpenDataVisualizationDark – The Open Data Visualization Dark map style is a dark-themed style with muted colors and fewer features that aids in understanding overlaid data.

\"\ }\ },\ \"documentation\":\"

Specifies the map tile style selected from an available provider.

\"\ @@ -4389,6 +4405,10 @@ - (NSString *)definitionString { \"MapConfigurationUpdate\":{\ \"type\":\"structure\",\ \"members\":{\ + \"CustomLayers\":{\ + \"shape\":\"CustomLayerList\",\ + \"documentation\":\"

Specifies the custom layers for the style. Leave unset to not enable any custom layer, or, for styles that support custom layers, you can enable layer(s), such as POI layer for the VectorEsriNavigation style. Default is unset.

Currenlty only VectorEsriNavigation supports CustomLayers. For more information, see Custom Layers.

\"\ + },\ \"PoliticalView\":{\ \"shape\":\"CountryCode3OrEmpty\",\ \"documentation\":\"

Specifies the political view for the style. Set to an empty string to not use a political view, or, for styles that support specific political views, you can choose a view, such as IND for the Indian view.

Not all map resources or styles support political view styles. See Political views for more information.

\"\ @@ -4456,7 +4476,7 @@ - (NSString *)definitionString { },\ \"SubMunicipality\":{\ \"shape\":\"String\",\ - \"documentation\":\"

An area that's part of a larger municipality. For example, Blissville is a submunicipality in the Queen County in New York.

This property supported by Esri and OpenData. The Esri property is district, and the OpenData property is borough.

\"\ + \"documentation\":\"

An area that's part of a larger municipality. For example, Blissville is a submunicipality in the Queen County in New York.

This property is only returned for a place index that uses Esri as a data provider. The property is represented as a district.

For more information about data providers, see Amazon Location Service data providers.

\"\ },\ \"SubRegion\":{\ \"shape\":\"String\",\ @@ -4472,11 +4492,11 @@ - (NSString *)definitionString { },\ \"UnitNumber\":{\ \"shape\":\"String\",\ - \"documentation\":\"

For addresses with multiple units, the unit identifier. Can include numbers and letters, for example 3B or Unit 123.

Returned only for a place index that uses Esri or Grab as a data provider. Is not returned for SearchPlaceIndexForPosition.

\"\ + \"documentation\":\"

For addresses with multiple units, the unit identifier. Can include numbers and letters, for example 3B or Unit 123.

This property is returned only for a place index that uses Esri or Grab as a data provider. It is not returned for SearchPlaceIndexForPosition.

\"\ },\ \"UnitType\":{\ \"shape\":\"String\",\ - \"documentation\":\"

For addresses with a UnitNumber, the type of unit. For example, Apartment.

Returned only for a place index that uses Esri as a data provider.

\"\ + \"documentation\":\"

For addresses with a UnitNumber, the type of unit. For example, Apartment.

This property is returned only for a place index that uses Esri as a data provider.

\"\ }\ },\ \"documentation\":\"

Contains details about addresses or points of interest that match the search criteria.

Not all details are included with all responses. Some details may only be returned by specific data partners.

\"\ @@ -4766,7 +4786,7 @@ - (NSString *)definitionString { },\ \"PlaceId\":{\ \"shape\":\"PlaceId\",\ - \"documentation\":\"

The unique identifier of the Place. You can use this with the GetPlace operation to find the place again later, or to get full information for the Place.

The GetPlace request must use the same PlaceIndex resource as the SearchPlaceIndexForSuggestions that generated the Place ID.

For SearchPlaceIndexForSuggestions operations, the PlaceId is returned by place indexes that use Esri, Grab, or HERE as data providers.

\"\ + \"documentation\":\"

The unique identifier of the Place. You can use this with the GetPlace operation to find the place again later, or to get full information for the Place.

The GetPlace request must use the same PlaceIndex resource as the SearchPlaceIndexForSuggestions that generated the Place ID.

For SearchPlaceIndexForSuggestions operations, the PlaceId is returned by place indexes that use Esri, Grab, or HERE as data providers.

While you can use PlaceID in subsequent requests, PlaceID is not intended to be a permanent identifier and the ID can change between consecutive API calls. Please see the following PlaceID behaviour for each data provider:

  • Esri: Place IDs will change every quarter at a minimum. The typical time period for these changes would be March, June, September, and December. Place IDs might also change between the typical quarterly change but that will be much less frequent.

  • HERE: We recommend that you cache data for no longer than a week to keep your data data fresh. You can assume that less than 1% ID shifts will release over release which is approximately 1 - 2 times per week.

  • Grab: Place IDs can expire or become invalid in the following situations.

    • Data operations: The POI may be removed from Grab POI database by Grab Map Ops based on the ground-truth, such as being closed in the real world, being detected as a duplicate POI, or having incorrect information. Grab will synchronize data to the Waypoint environment on weekly basis.

    • Interpolated POI: Interpolated POI is a temporary POI generated in real time when serving a request, and it will be marked as derived in the place.result_type field in the response. The information of interpolated POIs will be retained for at least 30 days, which means that within 30 days, you are able to obtain POI details by Place ID from Place Details API. After 30 days, the interpolated POIs(both Place ID and details) may expire and inaccessible from the Places Details API.

\"\ },\ \"SupplementalCategories\":{\ \"shape\":\"PlaceSupplementalCategoryList\",\ diff --git a/AWSLocation/AWSLocationService.h b/AWSLocation/AWSLocationService.h index 2d9ddb01c50..688784bafa2 100644 --- a/AWSLocation/AWSLocationService.h +++ b/AWSLocation/AWSLocationService.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSLocation/AWSLocationService.m b/AWSLocation/AWSLocationService.m index 4c455b7140b..50700941eb3 100644 --- a/AWSLocation/AWSLocationService.m +++ b/AWSLocation/AWSLocationService.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSLocationUnitTests/AWSGeneralLocationTests.m b/AWSLocationUnitTests/AWSGeneralLocationTests.m index e3993ff6f02..df60686f089 100644 --- a/AWSLocationUnitTests/AWSGeneralLocationTests.m +++ b/AWSLocationUnitTests/AWSGeneralLocationTests.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSLocationUnitTests/AWSLocationNSSecureCodingTests.m b/AWSLocationUnitTests/AWSLocationNSSecureCodingTests.m index 58c24fefa94..21b910a5de9 100644 --- a/AWSLocationUnitTests/AWSLocationNSSecureCodingTests.m +++ b/AWSLocationUnitTests/AWSLocationNSSecureCodingTests.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. From 5ebc427966627b2713d9979e02064ad74a6b85a2 Mon Sep 17 00:00:00 2001 From: AWS Mobile SDK Bot <46607340+awsmobilesdk@users.noreply.github.com> Date: Mon, 29 Jan 2024 10:47:25 -0800 Subject: [PATCH 03/11] feat(AWSConnect): update models to latest (#5157) --- AWSConnect/AWSConnect.h | 2 +- AWSConnect/AWSConnectModel.h | 86 ++++++------- AWSConnect/AWSConnectModel.m | 42 ++++++- AWSConnect/AWSConnectResources.h | 2 +- AWSConnect/AWSConnectResources.m | 115 ++++++++++-------- AWSConnect/AWSConnectService.h | 2 +- AWSConnect/AWSConnectService.m | 2 +- .../AWSConnectNSSecureCodingTests.m | 2 +- AWSConnectUnitTests/AWSGeneralConnectTests.m | 2 +- 9 files changed, 154 insertions(+), 101 deletions(-) diff --git a/AWSConnect/AWSConnect.h b/AWSConnect/AWSConnect.h index fdfc03828a4..7cac3eec19a 100644 --- a/AWSConnect/AWSConnect.h +++ b/AWSConnect/AWSConnect.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSConnect/AWSConnectModel.h b/AWSConnect/AWSConnectModel.h index 8778aa63e56..fd25760d7b5 100644 --- a/AWSConnect/AWSConnectModel.h +++ b/AWSConnect/AWSConnectModel.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -342,6 +342,7 @@ typedef NS_ENUM(NSInteger, AWSConnectInstanceAttributeType) { AWSConnectInstanceAttributeTypeMultiPartyConference, AWSConnectInstanceAttributeTypeHighVolumeOutbound, AWSConnectInstanceAttributeTypeEnhancedContactMonitoring, + AWSConnectInstanceAttributeTypeEnhancedChatMonitoring, }; typedef NS_ENUM(NSInteger, AWSConnectInstanceStatus) { @@ -439,6 +440,7 @@ typedef NS_ENUM(NSInteger, AWSConnectParticipantRole) { AWSConnectParticipantRoleCustomer, AWSConnectParticipantRoleSystem, AWSConnectParticipantRoleCustomBot, + AWSConnectParticipantRoleSupervisor, }; typedef NS_ENUM(NSInteger, AWSConnectParticipantTimerAction) { @@ -1808,7 +1810,7 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { @end /** -

A structure that defines agent hierarchy group levels which can be used to filter search results. Important: Agent hierarchy group level information in search result is a snapshot, it does not represent current agent hierarchy who handled the contact.

+

A structure that defines search criteria for contacts using agent hierarchy group levels. For more information about agent hierarchies, see Set Up Agent Hierarchies in the Amazon Connect Administrator Guide.

*/ @interface AWSConnectAgentHierarchyGroups : AWSModel @@ -3056,13 +3058,13 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { @end /** -

A structure that defines filters can be used to search within outputs analyzed by Amazon Connect Contact Lens in a contact.

+

A structure that defines search criteria for contacts using analysis outputs from Amazon Connect Contact Lens.

*/ @interface AWSConnectContactAnalysis : AWSModel /** -

A structure that defines filters can be used to search with text within an Amazon Connect Contact Lens analyzed transcript.

+

Search criteria based on transcript analyzed by Amazon Connect Contact Lens.

*/ @property (nonatomic, strong) AWSConnectTranscript * _Nullable transcript; @@ -3288,7 +3290,7 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { @property (nonatomic, strong) AWSConnectContactSearchSummaryAgentInfo * _Nullable agentInfo; /** -

The Amazon Resource Name (ARN) of the contact

+

The Amazon Resource Name (ARN) of the contact.

*/ @property (nonatomic, strong) NSString * _Nullable arn; @@ -3318,7 +3320,7 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { @property (nonatomic, assign) AWSConnectContactInitiationMethod initiationMethod; /** -

The date and time this contact was initiated, in UTC time. For INBOUND, this is when the contact arrived. For OUTBOUND, this is when the agent began dialing. For CALLBACK, this is when the callback contact was created. For TRANSFER and QUEUE_TRANSFER, this is when the transfer was initiated. For API, this is when the request arrived. For EXTERNAL_OUTBOUND, this is when the agent started dialing the external participant. For MONITOR, this is when the supervisor started listening to a contact.

+

The date and time this contact was initiated, in UTC time. For INBOUND, this is when the contact arrived. For OUTBOUND, this is when the agent began dialing. For CALLBACK, this is when the callback contact was created. For TRANSFER and QUEUE_TRANSFER, this is when the transfer was initiated. For API, this is when the request arrived. For EXTERNAL_OUTBOUND, this is when the agent started dialing the external participant. For MONITOR, this is when the supervisor started listening to a contact.

*/ @property (nonatomic, strong) NSDate * _Nullable initiationTimestamp; @@ -7315,7 +7317,7 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { /** -

The note for an item (section or question) in a contact evaluation.

+

The note for an item (section or question) in a contact evaluation.

Even though a note in an evaluation can have up to 3072 chars, there is also a limit on the total number of chars for all the notes in the evaluation combined. Assuming there are N questions in the evaluation being submitted, then the max char limit for all notes combined is N x 1024.

*/ @property (nonatomic, strong) NSString * _Nullable value; @@ -7589,17 +7591,17 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { /** -

The metrics to retrieve. Specify the name and unit for each metric. The following metrics are available. For a description of all the metrics, see Real-time Metrics Definitions in the Amazon Connect Administrator Guide.

AGENTS_AFTER_CONTACT_WORK

Unit: COUNT

Name in real-time metrics report: ACW

AGENTS_AVAILABLE

Unit: COUNT

Name in real-time metrics report: Available

AGENTS_ERROR

Unit: COUNT

Name in real-time metrics report: Error

AGENTS_NON_PRODUCTIVE

Unit: COUNT

Name in real-time metrics report: NPT (Non-Productive Time)

AGENTS_ON_CALL

Unit: COUNT

Name in real-time metrics report: On contact

AGENTS_ON_CONTACT

Unit: COUNT

Name in real-time metrics report: On contact

AGENTS_ONLINE

Unit: COUNT

Name in real-time metrics report: Online

AGENTS_STAFFED

Unit: COUNT

Name in real-time metrics report: Staffed

CONTACTS_IN_QUEUE

Unit: COUNT

Name in real-time metrics report: In queue

CONTACTS_SCHEDULED

Unit: COUNT

Name in real-time metrics report: Scheduled

OLDEST_CONTACT_AGE

Unit: SECONDS

When you use groupings, Unit says SECONDS and the Value is returned in SECONDS.

When you do not use groupings, Unit says SECONDS but the Value is returned in MILLISECONDS. For example, if you get a response like this:

{ "Metric": { "Name": "OLDEST_CONTACT_AGE", "Unit": "SECONDS" }, "Value": 24113.0 }

The actual OLDEST_CONTACT_AGE is 24 seconds.

Name in real-time metrics report: Oldest

SLOTS_ACTIVE

Unit: COUNT

Name in real-time metrics report: Active

SLOTS_AVAILABLE

Unit: COUNT

Name in real-time metrics report: Availability

+

The metrics to retrieve. Specify the name and unit for each metric. The following metrics are available. For a description of all the metrics, see Real-time Metrics Definitions in the Amazon Connect Administrator Guide.

AGENTS_AFTER_CONTACT_WORK

Unit: COUNT

Name in real-time metrics report: ACW

AGENTS_AVAILABLE

Unit: COUNT

Name in real-time metrics report: Available

AGENTS_ERROR

Unit: COUNT

Name in real-time metrics report: Error

AGENTS_NON_PRODUCTIVE

Unit: COUNT

Name in real-time metrics report: NPT (Non-Productive Time)

AGENTS_ON_CALL

Unit: COUNT

Name in real-time metrics report: On contact

AGENTS_ON_CONTACT

Unit: COUNT

Name in real-time metrics report: On contact

AGENTS_ONLINE

Unit: COUNT

Name in real-time metrics report: Online

AGENTS_STAFFED

Unit: COUNT

Name in real-time metrics report: Staffed

CONTACTS_IN_QUEUE

Unit: COUNT

Name in real-time metrics report: In queue

CONTACTS_SCHEDULED

Unit: COUNT

Name in real-time metrics report: Scheduled

OLDEST_CONTACT_AGE

Unit: SECONDS

When you use groupings, Unit says SECONDS and the Value is returned in SECONDS.

When you do not use groupings, Unit says SECONDS but the Value is returned in MILLISECONDS. For example, if you get a response like this:

{ "Metric": { "Name": "OLDEST_CONTACT_AGE", "Unit": "SECONDS" }, "Value": 24113.0 }

The actual OLDEST_CONTACT_AGE is 24 seconds.

When the filter RoutingStepExpression is used, this metric is still calculated from enqueue time. For example, if a contact that has been queued under <Expression 1> for 10 seconds has expired and <Expression 2> becomes active, then OLDEST_CONTACT_AGE for this queue will be counted starting from 10, not 0.

Name in real-time metrics report: Oldest

SLOTS_ACTIVE

Unit: COUNT

Name in real-time metrics report: Active

SLOTS_AVAILABLE

Unit: COUNT

Name in real-time metrics report: Availability

*/ @property (nonatomic, strong) NSArray * _Nullable currentMetrics; /** -

The filters to apply to returned metrics. You can filter up to the following limits:

  • Queues: 100

  • Routing profiles: 100

  • Channels: 3 (VOICE, CHAT, and TASK channels are supported.)

Metric data is retrieved only for the resources associated with the queues or routing profiles, and by any channels included in the filter. (You cannot filter by both queue AND routing profile.) You can include both resource IDs and resource ARNs in the same request.

Currently tagging is only supported on the resources that are passed in the filter.

+

The filters to apply to returned metrics. You can filter up to the following limits:

  • Queues: 100

  • Routing profiles: 100

  • Channels: 3 (VOICE, CHAT, and TASK channels are supported.)

  • RoutingStepExpressions: 50

Metric data is retrieved only for the resources associated with the queues or routing profiles, and by any channels included in the filter. (You cannot filter by both queue AND routing profile.) You can include both resource IDs and resource ARNs in the same request.

When using RoutingStepExpression, you need to pass exactly one QueueId.

Currently tagging is only supported on the resources that are passed in the filter.

*/ @property (nonatomic, strong) AWSConnectFilters * _Nullable filters; /** -

The grouping applied to the metrics returned. For example, when grouped by QUEUE, the metrics returned apply to each queue rather than aggregated for all queues.

  • If you group by CHANNEL, you should include a Channels filter. VOICE, CHAT, and TASK channels are supported.

  • If you group by ROUTING_PROFILE, you must include either a queue or routing profile filter. In addition, a routing profile filter is required for metrics CONTACTS_SCHEDULED, CONTACTS_IN_QUEUE, and OLDEST_CONTACT_AGE.

  • If no Grouping is included in the request, a summary of metrics is returned.

+

The grouping applied to the metrics returned. For example, when grouped by QUEUE, the metrics returned apply to each queue rather than aggregated for all queues.

  • If you group by CHANNEL, you should include a Channels filter. VOICE, CHAT, and TASK channels are supported.

  • If you group by ROUTING_PROFILE, you must include either a queue or routing profile filter. In addition, a routing profile filter is required for metrics CONTACTS_SCHEDULED, CONTACTS_IN_QUEUE, and OLDEST_CONTACT_AGE.

  • If no Grouping is included in the request, a summary of metrics is returned.

  • When using the RoutingStepExpression filter, group by ROUTING_STEP_EXPRESSION is required.

*/ @property (nonatomic, strong) NSArray * _Nullable groupings; @@ -7803,12 +7805,12 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { @property (nonatomic, strong) NSDate * _Nullable endTime; /** -

The queues, up to 100, or channels, to use to filter the metrics returned. Metric data is retrieved only for the resources associated with the queues or channels included in the filter. You can include both queue IDs and queue ARNs in the same request. VOICE, CHAT, and TASK channels are supported.

To filter by Queues, enter the queue ID/ARN, not the name of the queue.

+

The queues, up to 100, or channels, to use to filter the metrics returned. Metric data is retrieved only for the resources associated with the queues or channels included in the filter. You can include both queue IDs and queue ARNs in the same request. VOICE, CHAT, and TASK channels are supported.

RoutingStepExpression is not a valid filter for GetMetricData and we recommend switching to GetMetricDataV2 for more up-to-date features.

To filter by Queues, enter the queue ID/ARN, not the name of the queue.

*/ @property (nonatomic, strong) AWSConnectFilters * _Nullable filters; /** -

The grouping applied to the metrics returned. For example, when results are grouped by queue, the metrics returned are grouped by queue. The values returned apply to the metrics for each queue rather than aggregated for all queues.

If no grouping is specified, a summary of metrics for all queues is returned.

+

The grouping applied to the metrics returned. For example, when results are grouped by queue, the metrics returned are grouped by queue. The values returned apply to the metrics for each queue rather than aggregated for all queues.

If no grouping is specified, a summary of metrics for all queues is returned.

RoutingStepExpression is not a valid filter for GetMetricData and we recommend switching to GetMetricDataV2 for more up-to-date features.

*/ @property (nonatomic, strong) NSArray * _Nullable groupings; @@ -7869,12 +7871,12 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { @property (nonatomic, strong) NSDate * _Nullable endTime; /** -

The filters to apply to returned metrics. You can filter on the following resources:

  • Queues

  • Routing profiles

  • Agents

  • Channels

  • User hierarchy groups

  • Feature

At least one filter must be passed from queues, routing profiles, agents, or user hierarchy groups.

To filter by phone number, see Create a historical metrics report in the Amazon Connect Administrator's Guide.

Note the following limits:

  • Filter keys: A maximum of 5 filter keys are supported in a single request. Valid filter keys: QUEUE | ROUTING_PROFILE | AGENT | CHANNEL | AGENT_HIERARCHY_LEVEL_ONE | AGENT_HIERARCHY_LEVEL_TWO | AGENT_HIERARCHY_LEVEL_THREE | AGENT_HIERARCHY_LEVEL_FOUR | AGENT_HIERARCHY_LEVEL_FIVE | FEATURE | contact/segmentAttributes/connect:Subtype

  • Filter values: A maximum of 100 filter values are supported in a single request. VOICE, CHAT, and TASK are valid filterValue for the CHANNEL filter key. They do not count towards limitation of 100 filter values. For example, a GetMetricDataV2 request can filter by 50 queues, 35 agents, and 15 routing profiles for a total of 100 filter values, along with 3 channel filters.

    contact_lens_conversational_analytics is a valid filterValue for the FEATURE filter key. It is available only to contacts analyzed by Contact Lens conversational analytics.

    connect:Chat, connect:SMS, connect:Telephony, and connect:WebRTC are valid filterValue examples (not exhaustive) for the contact/segmentAttributes/connect:Subtype filter key.

+

The filters to apply to returned metrics. You can filter on the following resources:

  • Queues

  • Routing profiles

  • Agents

  • Channels

  • User hierarchy groups

  • Feature

  • Routing step expression

At least one filter must be passed from queues, routing profiles, agents, or user hierarchy groups.

To filter by phone number, see Create a historical metrics report in the Amazon Connect Administrator's Guide.

Note the following limits:

  • Filter keys: A maximum of 5 filter keys are supported in a single request. Valid filter keys: QUEUE | ROUTING_PROFILE | AGENT | CHANNEL | AGENT_HIERARCHY_LEVEL_ONE | AGENT_HIERARCHY_LEVEL_TWO | AGENT_HIERARCHY_LEVEL_THREE | AGENT_HIERARCHY_LEVEL_FOUR | AGENT_HIERARCHY_LEVEL_FIVE | FEATURE | contact/segmentAttributes/connect:Subtype | ROUTING_STEP_EXPRESSION

  • Filter values: A maximum of 100 filter values are supported in a single request. VOICE, CHAT, and TASK are valid filterValue for the CHANNEL filter key. They do not count towards limitation of 100 filter values. For example, a GetMetricDataV2 request can filter by 50 queues, 35 agents, and 15 routing profiles for a total of 100 filter values, along with 3 channel filters.

    contact_lens_conversational_analytics is a valid filterValue for the FEATURE filter key. It is available only to contacts analyzed by Contact Lens conversational analytics.

    connect:Chat, connect:SMS, connect:Telephony, and connect:WebRTC are valid filterValue examples (not exhaustive) for the contact/segmentAttributes/connect:Subtype filter key.

    ROUTING_STEP_EXPRESSION is a valid filter key with a filter value up to 3000 length.

*/ @property (nonatomic, strong) NSArray * _Nullable filters; /** -

The grouping applied to the metrics that are returned. For example, when results are grouped by queue, the metrics returned are grouped by queue. The values that are returned apply to the metrics for each queue. They are not aggregated for all queues.

If no grouping is specified, a summary of all metrics is returned.

Valid grouping keys: QUEUE | ROUTING_PROFILE | AGENT | CHANNEL | AGENT_HIERARCHY_LEVEL_ONE | AGENT_HIERARCHY_LEVEL_TWO | AGENT_HIERARCHY_LEVEL_THREE | AGENT_HIERARCHY_LEVEL_FOUR | AGENT_HIERARCHY_LEVEL_FIVE, contact/segmentAttributes/connect:Subtype

+

The grouping applied to the metrics that are returned. For example, when results are grouped by queue, the metrics returned are grouped by queue. The values that are returned apply to the metrics for each queue. They are not aggregated for all queues.

If no grouping is specified, a summary of all metrics is returned.

Valid grouping keys: QUEUE | ROUTING_PROFILE | AGENT | CHANNEL | AGENT_HIERARCHY_LEVEL_ONE | AGENT_HIERARCHY_LEVEL_TWO | AGENT_HIERARCHY_LEVEL_THREE | AGENT_HIERARCHY_LEVEL_FOUR | AGENT_HIERARCHY_LEVEL_FIVE, contact/segmentAttributes/connect:Subtype | ROUTING_STEP_EXPRESSION

*/ @property (nonatomic, strong) NSArray * _Nullable groupings; @@ -7889,7 +7891,7 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { @property (nonatomic, strong) NSNumber * _Nullable maxResults; /** -

The metrics to retrieve. Specify the name, groupings, and filters for each metric. The following historical metrics are available. For a description of each metric, see Historical metrics definitions in the Amazon Connect Administrator's Guide.

ABANDONMENT_RATE

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

AGENT_ADHERENT_TIME

This metric is available only in Amazon Web Services Regions where Forecasting, capacity planning, and scheduling is available.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_ANSWER_RATE

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_NON_ADHERENT_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_NON_RESPONSE

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_NON_RESPONSE_WITHOUT_CUSTOMER_ABANDONS

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

Data for this metric is available starting from October 1, 2023 0:00:00 GMT.

AGENT_OCCUPANCY

Unit: Percentage

Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy

AGENT_SCHEDULE_ADHERENCE

This metric is available only in Amazon Web Services Regions where Forecasting, capacity planning, and scheduling is available.

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_SCHEDULED_TIME

This metric is available only in Amazon Web Services Regions where Forecasting, capacity planning, and scheduling is available.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AVG_ABANDON_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

AVG_ACTIVE_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AVG_AFTER_CONTACT_WORK_TIME

Unit: Seconds

Valid metric filter key: INITIATION_METHOD

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_AGENT_CONNECTING_TIME

Unit: Seconds

Valid metric filter key: INITIATION_METHOD. For now, this metric only supports the following as INITIATION_METHOD: INBOUND | OUTBOUND | CALLBACK | API

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

The Negate key in Metric Level Filters is not applicable for this metric.

AVG_AGENT_PAUSE_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AVG_CONTACT_DURATION

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_CONVERSATION_DURATION

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

AVG_GREETING_TIME_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_HANDLE_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_HOLD_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_HOLD_TIME_ALL_CONTACTS

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_HOLDS

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_INTERACTION_AND_HOLD_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_INTERACTION_TIME

Unit: Seconds

Valid metric filter key: INITIATION_METHOD

Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_INTERRUPTIONS_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_INTERRUPTION_TIME_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_NON_TALK_TIME

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_QUEUE_ANSWER_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_RESOLUTION_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

AVG_TALK_TIME

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_TALK_TIME_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_TALK_TIME_CUSTOMER

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_ABANDONED

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_CREATED

Unit: Count

Valid metric filter key: INITIATION_METHOD

Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

CONTACTS_HANDLED

Unit: Count

Valid metric filter key: INITIATION_METHOD, DISCONNECT_REASON

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

CONTACTS_HOLD_ABANDONS

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_ON_HOLD_AGENT_DISCONNECT

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_ON_HOLD_CUSTOMER_DISCONNECT

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_PUT_ON_HOLD

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_TRANSFERRED_OUT_EXTERNAL

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_TRANSFERRED_OUT_INTERNAL

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_QUEUED

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_RESOLVED_IN_X

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

Threshold: For ThresholdValue enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than").

CONTACTS_TRANSFERRED_OUT

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

CONTACTS_TRANSFERRED_OUT_BY_AGENT

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_TRANSFERRED_OUT_FROM_QUEUE

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

MAX_QUEUED_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

PERCENT_NON_TALK_TIME

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Percentage

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

PERCENT_TALK_TIME

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Percentage

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

PERCENT_TALK_TIME_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Percentage

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

PERCENT_TALK_TIME_CUSTOMER

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Percentage

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

SERVICE_LEVEL

You can include up to 20 SERVICE_LEVEL metrics in a request.

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile

Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than").

SUM_AFTER_CONTACT_WORK_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_CONNECTING_TIME_AGENT

Unit: Seconds

Valid metric filter key: INITIATION_METHOD. This metric only supports the following filter keys as INITIATION_METHOD: INBOUND | OUTBOUND | CALLBACK | API

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

The Negate key in Metric Level Filters is not applicable for this metric.

SUM_CONTACT_FLOW_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_CONTACT_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_CONTACTS_ANSWERED_IN_X

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than").

SUM_CONTACTS_ABANDONED_IN_X

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than").

SUM_CONTACTS_DISCONNECTED

Valid metric filter key: DISCONNECT_REASON

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

SUM_ERROR_STATUS_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_HANDLE_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_HOLD_TIME

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_IDLE_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy

SUM_INTERACTION_AND_HOLD_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_INTERACTION_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_NON_PRODUCTIVE_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy

SUM_ONLINE_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy

SUM_RETRY_CALLBACK_ATTEMPTS

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

+

The metrics to retrieve. Specify the name, groupings, and filters for each metric. The following historical metrics are available. For a description of each metric, see Historical metrics definitions in the Amazon Connect Administrator's Guide.

ABANDONMENT_RATE

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

AGENT_ADHERENT_TIME

This metric is available only in Amazon Web Services Regions where Forecasting, capacity planning, and scheduling is available.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_ANSWER_RATE

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_NON_ADHERENT_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_NON_RESPONSE

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_NON_RESPONSE_WITHOUT_CUSTOMER_ABANDONS

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

Data for this metric is available starting from October 1, 2023 0:00:00 GMT.

AGENT_OCCUPANCY

Unit: Percentage

Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy

AGENT_SCHEDULE_ADHERENCE

This metric is available only in Amazon Web Services Regions where Forecasting, capacity planning, and scheduling is available.

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_SCHEDULED_TIME

This metric is available only in Amazon Web Services Regions where Forecasting, capacity planning, and scheduling is available.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AVG_ABANDON_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

AVG_ACTIVE_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AVG_AFTER_CONTACT_WORK_TIME

Unit: Seconds

Valid metric filter key: INITIATION_METHOD

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_AGENT_CONNECTING_TIME

Unit: Seconds

Valid metric filter key: INITIATION_METHOD. For now, this metric only supports the following as INITIATION_METHOD: INBOUND | OUTBOUND | CALLBACK | API

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

The Negate key in Metric Level Filters is not applicable for this metric.

AVG_AGENT_PAUSE_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AVG_CONTACT_DURATION

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_CONVERSATION_DURATION

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

AVG_GREETING_TIME_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_HANDLE_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, RoutingStepExpression

Feature is a valid filter but not a valid grouping.

AVG_HOLD_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_HOLD_TIME_ALL_CONTACTS

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_HOLDS

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_INTERACTION_AND_HOLD_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_INTERACTION_TIME

Unit: Seconds

Valid metric filter key: INITIATION_METHOD

Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_INTERRUPTIONS_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_INTERRUPTION_TIME_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_NON_TALK_TIME

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_QUEUE_ANSWER_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_RESOLUTION_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

AVG_TALK_TIME

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_TALK_TIME_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_TALK_TIME_CUSTOMER

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_ABANDONED

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype, RoutingStepExpression

CONTACTS_CREATED

Unit: Count

Valid metric filter key: INITIATION_METHOD

Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

CONTACTS_HANDLED

Unit: Count

Valid metric filter key: INITIATION_METHOD, DISCONNECT_REASON

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, RoutingStepExpression

Feature is a valid filter but not a valid grouping.

CONTACTS_HOLD_ABANDONS

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_ON_HOLD_AGENT_DISCONNECT

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_ON_HOLD_CUSTOMER_DISCONNECT

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_PUT_ON_HOLD

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_TRANSFERRED_OUT_EXTERNAL

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_TRANSFERRED_OUT_INTERNAL

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_QUEUED

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_RESOLVED_IN_X

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

Threshold: For ThresholdValue enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than").

CONTACTS_TRANSFERRED_OUT

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

CONTACTS_TRANSFERRED_OUT_BY_AGENT

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_TRANSFERRED_OUT_FROM_QUEUE

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

MAX_QUEUED_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

PERCENT_CONTACTS_STEP_EXPIRED

Unit: Percent

Valid groupings and filters: Queue, RoutingStepExpression

PERCENT_CONTACTS_STEP_JOINED

Unit: Percent

Valid groupings and filters: Queue, RoutingStepExpression

PERCENT_NON_TALK_TIME

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Percentage

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

PERCENT_TALK_TIME

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Percentage

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

PERCENT_TALK_TIME_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Percentage

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

PERCENT_TALK_TIME_CUSTOMER

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Percentage

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

SERVICE_LEVEL

You can include up to 20 SERVICE_LEVEL metrics in a request.

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile

Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than").

STEP_CONTACTS_QUEUED

Unit: Count

Valid groupings and filters: Queue, RoutingStepExpression

SUM_AFTER_CONTACT_WORK_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_CONNECTING_TIME_AGENT

Unit: Seconds

Valid metric filter key: INITIATION_METHOD. This metric only supports the following filter keys as INITIATION_METHOD: INBOUND | OUTBOUND | CALLBACK | API

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

The Negate key in Metric Level Filters is not applicable for this metric.

SUM_CONTACT_FLOW_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_CONTACT_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_CONTACTS_ANSWERED_IN_X

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than").

SUM_CONTACTS_ABANDONED_IN_X

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for "Less than").

SUM_CONTACTS_DISCONNECTED

Valid metric filter key: DISCONNECT_REASON

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

SUM_ERROR_STATUS_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_HANDLE_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_HOLD_TIME

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_IDLE_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy

SUM_INTERACTION_AND_HOLD_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_INTERACTION_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_NON_PRODUCTIVE_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy

SUM_ONLINE_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy

SUM_RETRY_CALLBACK_ATTEMPTS

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

*/ @property (nonatomic, strong) NSArray * _Nullable metrics; @@ -11334,7 +11336,7 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { /** -

Specify which monitoring actions the user is allowed to take. For example, whether the user is allowed to escalate from silent monitoring to barge.

+

Specify which monitoring actions the user is allowed to take. For example, whether the user is allowed to escalate from silent monitoring to barge. AllowedMonitorCapabilities is required if barge is enabled.

*/ @property (nonatomic, strong) NSArray * _Nullable allowedMonitorCapabilities; @@ -13406,7 +13408,7 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { /** -

The identifier of Amazon Connect instance. You can find the instance ID in the Amazon Resource Name (ARN) of the instance

+

The identifier of Amazon Connect instance. You can find the instance ID in the Amazon Resource Name (ARN) of the instance.

*/ @property (nonatomic, strong) NSString * _Nullable instanceId; @@ -13426,12 +13428,12 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { @property (nonatomic, strong) AWSConnectSearchCriteria * _Nullable searchCriteria; /** -

Specifies a field to sort by and a sort order

+

Specifies a field to sort by and a sort order.

*/ @property (nonatomic, strong) AWSConnectSort * _Nullable sort; /** -

Time range that you want to search results

+

Time range that you want to search results.

*/ @property (nonatomic, strong) AWSConnectSearchContactsTimeRange * _Nullable timeRange; @@ -13461,7 +13463,7 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { @end /** -

A structure of time range that you want to search results

+

A structure of time range that you want to search results.

Required parameters: [Type, StartTime, EndTime] */ @interface AWSConnectSearchContactsTimeRange : AWSModel @@ -13478,50 +13480,50 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { @property (nonatomic, strong) NSDate * _Nullable startTime; /** -

The type of timestamp to search

+

The type of timestamp to search.

*/ @property (nonatomic, assign) AWSConnectSearchContactsTimeRangeType types; @end /** -

A structure of search criteria to be used to return contacts

+

A structure of search criteria to be used to return contacts.

*/ @interface AWSConnectSearchCriteria : AWSModel /** -

The agent hierarchy groups

+

The agent hierarchy groups of the agent at the time of handling the contact.

*/ @property (nonatomic, strong) AWSConnectAgentHierarchyGroups * _Nullable agentHierarchyGroups; /** -

The array of agent ids

+

The identifiers of agents who handled the contacts.

*/ @property (nonatomic, strong) NSArray * _Nullable agentIds; /** -

The array of channels

+

The list of channels associated with contacts.

*/ @property (nonatomic, strong) NSArray * _Nullable channels; /** -

The ContactAnalysis object used in search criteria

+

Search criteria based on analysis outputs from Amazon Connect Contact Lens.

*/ @property (nonatomic, strong) AWSConnectContactAnalysis * _Nullable contactAnalysis; /** -

The array of initiaton methods

+

The list of initiation methods associated with contacts.

*/ @property (nonatomic, strong) NSArray * _Nullable initiationMethods; /** -

The array of queue ids.

+

The list of queue IDs associated with contacts.

*/ @property (nonatomic, strong) NSArray * _Nullable queueIds; /** -

The SearchableContactAttributes object used in search criteria

+

The search criteria based on user-defined contact attributes that have been configured for contact search. For more information, see Search by customer contact attributes in the Amazon Connect Administrator Guide.

To use SearchableContactAttributes in a search request, the GetContactAttributes action is required to perform an API request. For more information, see https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonconnect.html#amazonconnect-actions-as-permissionsActions defined by Amazon Connect.

*/ @property (nonatomic, strong) AWSConnectSearchableContactAttributes * _Nullable searchableContactAttributes; @@ -14078,38 +14080,38 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { @end /** -

A structure that defines searchable contact attributes which can be used to filter search results.

+

A structure that defines search criteria based on user-defined contact attributes that are configured for contact search.

Required parameters: [Criteria] */ @interface AWSConnectSearchableContactAttributes : AWSModel /** -

The array of searhale contact attribute criteria

+

The list of criteria based on user-defined contact attributes that are configured for contact search.

*/ @property (nonatomic, strong) NSArray * _Nullable criteria; /** -

The match type of multiple searchable contact attributes criteria.

+

The match type combining search criteria using multiple searchable contact attributes.

*/ @property (nonatomic, assign) AWSConnectSearchContactsMatchType matchType; @end /** -

The criteria of searchable contact attributes.

+

The search criteria based on user-defned contact attribute key and values to search on.

Required parameters: [Key, Values] */ @interface AWSConnectSearchableContactAttributesCriteria : AWSModel /** -

The searchable contact attribute key

+

The key containing a searchable user-defined contact attribute.

*/ @property (nonatomic, strong) NSString * _Nullable key; /** -

The array of contact attribute values used to filter search results.

+

The list of values to search for within a user-defined contact attribute.

*/ @property (nonatomic, strong) NSArray * _Nullable values; @@ -14459,7 +14461,7 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { @end /** -

A structure that defines the sort by and a sort order

+

A structure that defineds the field name to sort by and a sort order.

Required parameters: [FieldName, Order] */ @interface AWSConnectSort : AWSModel @@ -15604,33 +15606,33 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { @end /** -

The transcript object used to search results.

+

A structure that defines search criteria and matching logic to search for contacts by matching text with transcripts analyzed by Amazon Connect Contact Lens.

Required parameters: [Criteria] */ @interface AWSConnectTranscript : AWSModel /** -

The array of transcript search criteria

+

The list of search criteria based on Contact Lens conversational analytics transcript.

*/ @property (nonatomic, strong) NSArray * _Nullable criteria; /** -

The match type of multiple transcript criteira

+

The match type combining search criteria using multiple transcript criteria.

*/ @property (nonatomic, assign) AWSConnectSearchContactsMatchType matchType; @end /** -

The transcript criteria used to search

+

A structure that defines search criteria base on words or phrases, participants in the Contact Lens conversational analytics transcript.

Required parameters: [ParticipantRole, SearchText, MatchType] */ @interface AWSConnectTranscriptCriteria : AWSModel /** -

The match type of search texts in a transcript criteria.

+

The match type combining search criteria using multiple search texts in a transcript criteria.

*/ @property (nonatomic, assign) AWSConnectSearchContactsMatchType matchType; @@ -17687,7 +17689,7 @@ typedef NS_ENUM(NSInteger, AWSConnectVoiceRecordingTrack) { @property (nonatomic, strong) NSArray * _Nullable orConditions; /** -

A leaf node condition which can be used to specify a string condition.

The currently supported values for FieldName are name, description, and resourceID.

+

A leaf node condition which can be used to specify a string condition.

The currently supported values for FieldName are username, firstname, lastname, resourceId, routingProfileId, securityProfileId, agentGroupId, and agentGroupPathIds.

*/ @property (nonatomic, strong) AWSConnectStringCondition * _Nullable stringCondition; diff --git a/AWSConnect/AWSConnectModel.m b/AWSConnect/AWSConnectModel.m index 2700eec3b4f..49c911a43a2 100644 --- a/AWSConnect/AWSConnectModel.m +++ b/AWSConnect/AWSConnectModel.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -1195,6 +1195,9 @@ + (NSValueTransformer *)attributeTypeJSONTransformer { if ([value caseInsensitiveCompare:@"ENHANCED_CONTACT_MONITORING"] == NSOrderedSame) { return @(AWSConnectInstanceAttributeTypeEnhancedContactMonitoring); } + if ([value caseInsensitiveCompare:@"ENHANCED_CHAT_MONITORING"] == NSOrderedSame) { + return @(AWSConnectInstanceAttributeTypeEnhancedChatMonitoring); + } return @(AWSConnectInstanceAttributeTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -1218,6 +1221,8 @@ + (NSValueTransformer *)attributeTypeJSONTransformer { return @"HIGH_VOLUME_OUTBOUND"; case AWSConnectInstanceAttributeTypeEnhancedContactMonitoring: return @"ENHANCED_CONTACT_MONITORING"; + case AWSConnectInstanceAttributeTypeEnhancedChatMonitoring: + return @"ENHANCED_CHAT_MONITORING"; default: return nil; } @@ -7468,6 +7473,9 @@ + (NSValueTransformer *)attributeTypeJSONTransformer { if ([value caseInsensitiveCompare:@"ENHANCED_CONTACT_MONITORING"] == NSOrderedSame) { return @(AWSConnectInstanceAttributeTypeEnhancedContactMonitoring); } + if ([value caseInsensitiveCompare:@"ENHANCED_CHAT_MONITORING"] == NSOrderedSame) { + return @(AWSConnectInstanceAttributeTypeEnhancedChatMonitoring); + } return @(AWSConnectInstanceAttributeTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -7491,6 +7499,8 @@ + (NSValueTransformer *)attributeTypeJSONTransformer { return @"HIGH_VOLUME_OUTBOUND"; case AWSConnectInstanceAttributeTypeEnhancedContactMonitoring: return @"ENHANCED_CONTACT_MONITORING"; + case AWSConnectInstanceAttributeTypeEnhancedChatMonitoring: + return @"ENHANCED_CHAT_MONITORING"; default: return nil; } @@ -15348,6 +15358,9 @@ + (NSValueTransformer *)participantRoleJSONTransformer { if ([value caseInsensitiveCompare:@"CUSTOM_BOT"] == NSOrderedSame) { return @(AWSConnectParticipantRoleCustomBot); } + if ([value caseInsensitiveCompare:@"SUPERVISOR"] == NSOrderedSame) { + return @(AWSConnectParticipantRoleSupervisor); + } return @(AWSConnectParticipantRoleUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -15359,6 +15372,8 @@ + (NSValueTransformer *)participantRoleJSONTransformer { return @"SYSTEM"; case AWSConnectParticipantRoleCustomBot: return @"CUSTOM_BOT"; + case AWSConnectParticipantRoleSupervisor: + return @"SUPERVISOR"; default: return nil; } @@ -17713,6 +17728,9 @@ + (NSValueTransformer *)participantRoleJSONTransformer { if ([value caseInsensitiveCompare:@"CUSTOM_BOT"] == NSOrderedSame) { return @(AWSConnectParticipantRoleCustomBot); } + if ([value caseInsensitiveCompare:@"SUPERVISOR"] == NSOrderedSame) { + return @(AWSConnectParticipantRoleSupervisor); + } return @(AWSConnectParticipantRoleUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -17724,6 +17742,8 @@ + (NSValueTransformer *)participantRoleJSONTransformer { return @"SYSTEM"; case AWSConnectParticipantRoleCustomBot: return @"CUSTOM_BOT"; + case AWSConnectParticipantRoleSupervisor: + return @"SUPERVISOR"; default: return nil; } @@ -17789,6 +17809,9 @@ + (NSValueTransformer *)participantRoleJSONTransformer { if ([value caseInsensitiveCompare:@"CUSTOM_BOT"] == NSOrderedSame) { return @(AWSConnectParticipantRoleCustomBot); } + if ([value caseInsensitiveCompare:@"SUPERVISOR"] == NSOrderedSame) { + return @(AWSConnectParticipantRoleSupervisor); + } return @(AWSConnectParticipantRoleUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -17800,6 +17823,8 @@ + (NSValueTransformer *)participantRoleJSONTransformer { return @"SYSTEM"; case AWSConnectParticipantRoleCustomBot: return @"CUSTOM_BOT"; + case AWSConnectParticipantRoleSupervisor: + return @"SUPERVISOR"; default: return nil; } @@ -17864,6 +17889,9 @@ + (NSValueTransformer *)participantRoleJSONTransformer { if ([value caseInsensitiveCompare:@"CUSTOM_BOT"] == NSOrderedSame) { return @(AWSConnectParticipantRoleCustomBot); } + if ([value caseInsensitiveCompare:@"SUPERVISOR"] == NSOrderedSame) { + return @(AWSConnectParticipantRoleSupervisor); + } return @(AWSConnectParticipantRoleUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -17875,6 +17903,8 @@ + (NSValueTransformer *)participantRoleJSONTransformer { return @"SYSTEM"; case AWSConnectParticipantRoleCustomBot: return @"CUSTOM_BOT"; + case AWSConnectParticipantRoleSupervisor: + return @"SUPERVISOR"; default: return nil; } @@ -22638,6 +22668,9 @@ + (NSValueTransformer *)participantRoleJSONTransformer { if ([value caseInsensitiveCompare:@"CUSTOM_BOT"] == NSOrderedSame) { return @(AWSConnectParticipantRoleCustomBot); } + if ([value caseInsensitiveCompare:@"SUPERVISOR"] == NSOrderedSame) { + return @(AWSConnectParticipantRoleSupervisor); + } return @(AWSConnectParticipantRoleUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -22649,6 +22682,8 @@ + (NSValueTransformer *)participantRoleJSONTransformer { return @"SYSTEM"; case AWSConnectParticipantRoleCustomBot: return @"CUSTOM_BOT"; + case AWSConnectParticipantRoleSupervisor: + return @"SUPERVISOR"; default: return nil; } @@ -23234,6 +23269,9 @@ + (NSValueTransformer *)attributeTypeJSONTransformer { if ([value caseInsensitiveCompare:@"ENHANCED_CONTACT_MONITORING"] == NSOrderedSame) { return @(AWSConnectInstanceAttributeTypeEnhancedContactMonitoring); } + if ([value caseInsensitiveCompare:@"ENHANCED_CHAT_MONITORING"] == NSOrderedSame) { + return @(AWSConnectInstanceAttributeTypeEnhancedChatMonitoring); + } return @(AWSConnectInstanceAttributeTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -23257,6 +23295,8 @@ + (NSValueTransformer *)attributeTypeJSONTransformer { return @"HIGH_VOLUME_OUTBOUND"; case AWSConnectInstanceAttributeTypeEnhancedContactMonitoring: return @"ENHANCED_CONTACT_MONITORING"; + case AWSConnectInstanceAttributeTypeEnhancedChatMonitoring: + return @"ENHANCED_CHAT_MONITORING"; default: return nil; } diff --git a/AWSConnect/AWSConnectResources.h b/AWSConnect/AWSConnectResources.h index 259aba1f1a1..d3086305bf5 100644 --- a/AWSConnect/AWSConnectResources.h +++ b/AWSConnect/AWSConnectResources.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSConnect/AWSConnectResources.m b/AWSConnect/AWSConnectResources.m index eb355fafca4..71c6f703c5c 100644 --- a/AWSConnect/AWSConnectResources.m +++ b/AWSConnect/AWSConnectResources.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -4402,7 +4402,8 @@ - (NSString *)definitionString { \"AgentFirstName\":{\ \"type\":\"string\",\ \"max\":100,\ - \"min\":1\ + \"min\":1,\ + \"sensitive\":true\ },\ \"AgentHierarchyGroups\":{\ \"type\":\"structure\",\ @@ -4428,7 +4429,7 @@ - (NSString *)definitionString { \"documentation\":\"

The identifiers for level 5 hierarchy groups.

\"\ }\ },\ - \"documentation\":\"

A structure that defines agent hierarchy group levels which can be used to filter search results. Important: Agent hierarchy group level information in search result is a snapshot, it does not represent current agent hierarchy who handled the contact.

\"\ + \"documentation\":\"

A structure that defines search criteria for contacts using agent hierarchy group levels. For more information about agent hierarchies, see Set Up Agent Hierarchies in the Amazon Connect Administrator Guide.

\"\ },\ \"AgentInfo\":{\ \"type\":\"structure\",\ @@ -4451,7 +4452,8 @@ - (NSString *)definitionString { \"AgentLastName\":{\ \"type\":\"string\",\ \"max\":100,\ - \"min\":1\ + \"min\":1,\ + \"sensitive\":true\ },\ \"AgentPauseDurationInSeconds\":{\ \"type\":\"integer\",\ @@ -5738,10 +5740,10 @@ - (NSString *)definitionString { \"members\":{\ \"Transcript\":{\ \"shape\":\"Transcript\",\ - \"documentation\":\"

A structure that defines filters can be used to search with text within an Amazon Connect Contact Lens analyzed transcript.

\"\ + \"documentation\":\"

Search criteria based on transcript analyzed by Amazon Connect Contact Lens.

\"\ }\ },\ - \"documentation\":\"

A structure that defines filters can be used to search within outputs analyzed by Amazon Connect Contact Lens in a contact.

\"\ + \"documentation\":\"

A structure that defines search criteria for contacts using analysis outputs from Amazon Connect Contact Lens.

\"\ },\ \"ContactDataRequest\":{\ \"type\":\"structure\",\ @@ -6043,7 +6045,7 @@ - (NSString *)definitionString { \"members\":{\ \"Arn\":{\ \"shape\":\"ARN\",\ - \"documentation\":\"

The Amazon Resource Name (ARN) of the contact

\"\ + \"documentation\":\"

The Amazon Resource Name (ARN) of the contact.

\"\ },\ \"Id\":{\ \"shape\":\"ContactId\",\ @@ -6075,7 +6077,7 @@ - (NSString *)definitionString { },\ \"InitiationTimestamp\":{\ \"shape\":\"timestamp\",\ - \"documentation\":\"

The date and time this contact was initiated, in UTC time. For INBOUND, this is when the contact arrived. For OUTBOUND, this is when the agent began dialing. For CALLBACK, this is when the callback contact was created. For TRANSFER and QUEUE_TRANSFER, this is when the transfer was initiated. For API, this is when the request arrived. For EXTERNAL_OUTBOUND, this is when the agent started dialing the external participant. For MONITOR, this is when the supervisor started listening to a contact.

\"\ + \"documentation\":\"

The date and time this contact was initiated, in UTC time. For INBOUND, this is when the contact arrived. For OUTBOUND, this is when the agent began dialing. For CALLBACK, this is when the callback contact was created. For TRANSFER and QUEUE_TRANSFER, this is when the transfer was initiated. For API, this is when the request arrived. For EXTERNAL_OUTBOUND, this is when the agent started dialing the external participant. For MONITOR, this is when the supervisor started listening to a contact.

\"\ },\ \"DisconnectTimestamp\":{\ \"shape\":\"timestamp\",\ @@ -7431,7 +7433,8 @@ - (NSString *)definitionString { \"documentation\":\"

Renews the expiration timer for a generated token.

\"\ }\ },\ - \"documentation\":\"

Contains credentials to use for federation.

\"\ + \"documentation\":\"

Contains credentials to use for federation.

\",\ + \"sensitive\":true\ },\ \"CrossChannelBehavior\":{\ \"type\":\"structure\",\ @@ -8872,7 +8875,8 @@ - (NSString *)definitionString { \"Description\":{\ \"type\":\"string\",\ \"max\":4096,\ - \"min\":0\ + \"min\":0,\ + \"sensitive\":true\ },\ \"Description250\":{\ \"type\":\"string\",\ @@ -9348,7 +9352,10 @@ - (NSString *)definitionString { \"error\":{\"httpStatusCode\":409},\ \"exception\":true\ },\ - \"Email\":{\"type\":\"string\"},\ + \"Email\":{\ + \"type\":\"string\",\ + \"sensitive\":true\ + },\ \"EmailReference\":{\ \"type\":\"structure\",\ \"members\":{\ @@ -10181,14 +10188,14 @@ - (NSString *)definitionString { \"members\":{\ \"Value\":{\ \"shape\":\"EvaluationNoteString\",\ - \"documentation\":\"

The note for an item (section or question) in a contact evaluation.

\"\ + \"documentation\":\"

The note for an item (section or question) in a contact evaluation.

Even though a note in an evaluation can have up to 3072 chars, there is also a limit on the total number of chars for all the notes in the evaluation combined. Assuming there are N questions in the evaluation being submitted, then the max char limit for all notes combined is N x 1024.

\"\ }\ },\ \"documentation\":\"

Information about notes for a contact evaluation.

\"\ },\ \"EvaluationNoteString\":{\ \"type\":\"string\",\ - \"max\":1024,\ + \"max\":3072,\ \"min\":0\ },\ \"EvaluationNotesMap\":{\ @@ -10541,15 +10548,15 @@ - (NSString *)definitionString { },\ \"Filters\":{\ \"shape\":\"Filters\",\ - \"documentation\":\"

The filters to apply to returned metrics. You can filter up to the following limits:

  • Queues: 100

  • Routing profiles: 100

  • Channels: 3 (VOICE, CHAT, and TASK channels are supported.)

Metric data is retrieved only for the resources associated with the queues or routing profiles, and by any channels included in the filter. (You cannot filter by both queue AND routing profile.) You can include both resource IDs and resource ARNs in the same request.

Currently tagging is only supported on the resources that are passed in the filter.

\"\ + \"documentation\":\"

The filters to apply to returned metrics. You can filter up to the following limits:

  • Queues: 100

  • Routing profiles: 100

  • Channels: 3 (VOICE, CHAT, and TASK channels are supported.)

  • RoutingStepExpressions: 50

Metric data is retrieved only for the resources associated with the queues or routing profiles, and by any channels included in the filter. (You cannot filter by both queue AND routing profile.) You can include both resource IDs and resource ARNs in the same request.

When using RoutingStepExpression, you need to pass exactly one QueueId.

Currently tagging is only supported on the resources that are passed in the filter.

\"\ },\ \"Groupings\":{\ \"shape\":\"Groupings\",\ - \"documentation\":\"

The grouping applied to the metrics returned. For example, when grouped by QUEUE, the metrics returned apply to each queue rather than aggregated for all queues.

  • If you group by CHANNEL, you should include a Channels filter. VOICE, CHAT, and TASK channels are supported.

  • If you group by ROUTING_PROFILE, you must include either a queue or routing profile filter. In addition, a routing profile filter is required for metrics CONTACTS_SCHEDULED, CONTACTS_IN_QUEUE, and OLDEST_CONTACT_AGE.

  • If no Grouping is included in the request, a summary of metrics is returned.

\"\ + \"documentation\":\"

The grouping applied to the metrics returned. For example, when grouped by QUEUE, the metrics returned apply to each queue rather than aggregated for all queues.

  • If you group by CHANNEL, you should include a Channels filter. VOICE, CHAT, and TASK channels are supported.

  • If you group by ROUTING_PROFILE, you must include either a queue or routing profile filter. In addition, a routing profile filter is required for metrics CONTACTS_SCHEDULED, CONTACTS_IN_QUEUE, and OLDEST_CONTACT_AGE.

  • If no Grouping is included in the request, a summary of metrics is returned.

  • When using the RoutingStepExpression filter, group by ROUTING_STEP_EXPRESSION is required.

\"\ },\ \"CurrentMetrics\":{\ \"shape\":\"CurrentMetrics\",\ - \"documentation\":\"

The metrics to retrieve. Specify the name and unit for each metric. The following metrics are available. For a description of all the metrics, see Real-time Metrics Definitions in the Amazon Connect Administrator Guide.

AGENTS_AFTER_CONTACT_WORK

Unit: COUNT

Name in real-time metrics report: ACW

AGENTS_AVAILABLE

Unit: COUNT

Name in real-time metrics report: Available

AGENTS_ERROR

Unit: COUNT

Name in real-time metrics report: Error

AGENTS_NON_PRODUCTIVE

Unit: COUNT

Name in real-time metrics report: NPT (Non-Productive Time)

AGENTS_ON_CALL

Unit: COUNT

Name in real-time metrics report: On contact

AGENTS_ON_CONTACT

Unit: COUNT

Name in real-time metrics report: On contact

AGENTS_ONLINE

Unit: COUNT

Name in real-time metrics report: Online

AGENTS_STAFFED

Unit: COUNT

Name in real-time metrics report: Staffed

CONTACTS_IN_QUEUE

Unit: COUNT

Name in real-time metrics report: In queue

CONTACTS_SCHEDULED

Unit: COUNT

Name in real-time metrics report: Scheduled

OLDEST_CONTACT_AGE

Unit: SECONDS

When you use groupings, Unit says SECONDS and the Value is returned in SECONDS.

When you do not use groupings, Unit says SECONDS but the Value is returned in MILLISECONDS. For example, if you get a response like this:

{ \\\"Metric\\\": { \\\"Name\\\": \\\"OLDEST_CONTACT_AGE\\\", \\\"Unit\\\": \\\"SECONDS\\\" }, \\\"Value\\\": 24113.0 }

The actual OLDEST_CONTACT_AGE is 24 seconds.

Name in real-time metrics report: Oldest

SLOTS_ACTIVE

Unit: COUNT

Name in real-time metrics report: Active

SLOTS_AVAILABLE

Unit: COUNT

Name in real-time metrics report: Availability

\"\ + \"documentation\":\"

The metrics to retrieve. Specify the name and unit for each metric. The following metrics are available. For a description of all the metrics, see Real-time Metrics Definitions in the Amazon Connect Administrator Guide.

AGENTS_AFTER_CONTACT_WORK

Unit: COUNT

Name in real-time metrics report: ACW

AGENTS_AVAILABLE

Unit: COUNT

Name in real-time metrics report: Available

AGENTS_ERROR

Unit: COUNT

Name in real-time metrics report: Error

AGENTS_NON_PRODUCTIVE

Unit: COUNT

Name in real-time metrics report: NPT (Non-Productive Time)

AGENTS_ON_CALL

Unit: COUNT

Name in real-time metrics report: On contact

AGENTS_ON_CONTACT

Unit: COUNT

Name in real-time metrics report: On contact

AGENTS_ONLINE

Unit: COUNT

Name in real-time metrics report: Online

AGENTS_STAFFED

Unit: COUNT

Name in real-time metrics report: Staffed

CONTACTS_IN_QUEUE

Unit: COUNT

Name in real-time metrics report: In queue

CONTACTS_SCHEDULED

Unit: COUNT

Name in real-time metrics report: Scheduled

OLDEST_CONTACT_AGE

Unit: SECONDS

When you use groupings, Unit says SECONDS and the Value is returned in SECONDS.

When you do not use groupings, Unit says SECONDS but the Value is returned in MILLISECONDS. For example, if you get a response like this:

{ \\\"Metric\\\": { \\\"Name\\\": \\\"OLDEST_CONTACT_AGE\\\", \\\"Unit\\\": \\\"SECONDS\\\" }, \\\"Value\\\": 24113.0 }

The actual OLDEST_CONTACT_AGE is 24 seconds.

When the filter RoutingStepExpression is used, this metric is still calculated from enqueue time. For example, if a contact that has been queued under <Expression 1> for 10 seconds has expired and <Expression 2> becomes active, then OLDEST_CONTACT_AGE for this queue will be counted starting from 10, not 0.

Name in real-time metrics report: Oldest

SLOTS_ACTIVE

Unit: COUNT

Name in real-time metrics report: Active

SLOTS_AVAILABLE

Unit: COUNT

Name in real-time metrics report: Availability

\"\ },\ \"NextToken\":{\ \"shape\":\"NextToken\",\ @@ -10736,11 +10743,11 @@ - (NSString *)definitionString { },\ \"Filters\":{\ \"shape\":\"Filters\",\ - \"documentation\":\"

The queues, up to 100, or channels, to use to filter the metrics returned. Metric data is retrieved only for the resources associated with the queues or channels included in the filter. You can include both queue IDs and queue ARNs in the same request. VOICE, CHAT, and TASK channels are supported.

To filter by Queues, enter the queue ID/ARN, not the name of the queue.

\"\ + \"documentation\":\"

The queues, up to 100, or channels, to use to filter the metrics returned. Metric data is retrieved only for the resources associated with the queues or channels included in the filter. You can include both queue IDs and queue ARNs in the same request. VOICE, CHAT, and TASK channels are supported.

RoutingStepExpression is not a valid filter for GetMetricData and we recommend switching to GetMetricDataV2 for more up-to-date features.

To filter by Queues, enter the queue ID/ARN, not the name of the queue.

\"\ },\ \"Groupings\":{\ \"shape\":\"Groupings\",\ - \"documentation\":\"

The grouping applied to the metrics returned. For example, when results are grouped by queue, the metrics returned are grouped by queue. The values returned apply to the metrics for each queue rather than aggregated for all queues.

If no grouping is specified, a summary of metrics for all queues is returned.

\"\ + \"documentation\":\"

The grouping applied to the metrics returned. For example, when results are grouped by queue, the metrics returned are grouped by queue. The values returned apply to the metrics for each queue rather than aggregated for all queues.

If no grouping is specified, a summary of metrics for all queues is returned.

RoutingStepExpression is not a valid filter for GetMetricData and we recommend switching to GetMetricDataV2 for more up-to-date features.

\"\ },\ \"HistoricalMetrics\":{\ \"shape\":\"HistoricalMetrics\",\ @@ -10798,15 +10805,15 @@ - (NSString *)definitionString { },\ \"Filters\":{\ \"shape\":\"FiltersV2List\",\ - \"documentation\":\"

The filters to apply to returned metrics. You can filter on the following resources:

  • Queues

  • Routing profiles

  • Agents

  • Channels

  • User hierarchy groups

  • Feature

At least one filter must be passed from queues, routing profiles, agents, or user hierarchy groups.

To filter by phone number, see Create a historical metrics report in the Amazon Connect Administrator's Guide.

Note the following limits:

  • Filter keys: A maximum of 5 filter keys are supported in a single request. Valid filter keys: QUEUE | ROUTING_PROFILE | AGENT | CHANNEL | AGENT_HIERARCHY_LEVEL_ONE | AGENT_HIERARCHY_LEVEL_TWO | AGENT_HIERARCHY_LEVEL_THREE | AGENT_HIERARCHY_LEVEL_FOUR | AGENT_HIERARCHY_LEVEL_FIVE | FEATURE | contact/segmentAttributes/connect:Subtype

  • Filter values: A maximum of 100 filter values are supported in a single request. VOICE, CHAT, and TASK are valid filterValue for the CHANNEL filter key. They do not count towards limitation of 100 filter values. For example, a GetMetricDataV2 request can filter by 50 queues, 35 agents, and 15 routing profiles for a total of 100 filter values, along with 3 channel filters.

    contact_lens_conversational_analytics is a valid filterValue for the FEATURE filter key. It is available only to contacts analyzed by Contact Lens conversational analytics.

    connect:Chat, connect:SMS, connect:Telephony, and connect:WebRTC are valid filterValue examples (not exhaustive) for the contact/segmentAttributes/connect:Subtype filter key.

\"\ + \"documentation\":\"

The filters to apply to returned metrics. You can filter on the following resources:

  • Queues

  • Routing profiles

  • Agents

  • Channels

  • User hierarchy groups

  • Feature

  • Routing step expression

At least one filter must be passed from queues, routing profiles, agents, or user hierarchy groups.

To filter by phone number, see Create a historical metrics report in the Amazon Connect Administrator's Guide.

Note the following limits:

  • Filter keys: A maximum of 5 filter keys are supported in a single request. Valid filter keys: QUEUE | ROUTING_PROFILE | AGENT | CHANNEL | AGENT_HIERARCHY_LEVEL_ONE | AGENT_HIERARCHY_LEVEL_TWO | AGENT_HIERARCHY_LEVEL_THREE | AGENT_HIERARCHY_LEVEL_FOUR | AGENT_HIERARCHY_LEVEL_FIVE | FEATURE | contact/segmentAttributes/connect:Subtype | ROUTING_STEP_EXPRESSION

  • Filter values: A maximum of 100 filter values are supported in a single request. VOICE, CHAT, and TASK are valid filterValue for the CHANNEL filter key. They do not count towards limitation of 100 filter values. For example, a GetMetricDataV2 request can filter by 50 queues, 35 agents, and 15 routing profiles for a total of 100 filter values, along with 3 channel filters.

    contact_lens_conversational_analytics is a valid filterValue for the FEATURE filter key. It is available only to contacts analyzed by Contact Lens conversational analytics.

    connect:Chat, connect:SMS, connect:Telephony, and connect:WebRTC are valid filterValue examples (not exhaustive) for the contact/segmentAttributes/connect:Subtype filter key.

    ROUTING_STEP_EXPRESSION is a valid filter key with a filter value up to 3000 length.

\"\ },\ \"Groupings\":{\ \"shape\":\"GroupingsV2\",\ - \"documentation\":\"

The grouping applied to the metrics that are returned. For example, when results are grouped by queue, the metrics returned are grouped by queue. The values that are returned apply to the metrics for each queue. They are not aggregated for all queues.

If no grouping is specified, a summary of all metrics is returned.

Valid grouping keys: QUEUE | ROUTING_PROFILE | AGENT | CHANNEL | AGENT_HIERARCHY_LEVEL_ONE | AGENT_HIERARCHY_LEVEL_TWO | AGENT_HIERARCHY_LEVEL_THREE | AGENT_HIERARCHY_LEVEL_FOUR | AGENT_HIERARCHY_LEVEL_FIVE, contact/segmentAttributes/connect:Subtype

\"\ + \"documentation\":\"

The grouping applied to the metrics that are returned. For example, when results are grouped by queue, the metrics returned are grouped by queue. The values that are returned apply to the metrics for each queue. They are not aggregated for all queues.

If no grouping is specified, a summary of all metrics is returned.

Valid grouping keys: QUEUE | ROUTING_PROFILE | AGENT | CHANNEL | AGENT_HIERARCHY_LEVEL_ONE | AGENT_HIERARCHY_LEVEL_TWO | AGENT_HIERARCHY_LEVEL_THREE | AGENT_HIERARCHY_LEVEL_FOUR | AGENT_HIERARCHY_LEVEL_FIVE, contact/segmentAttributes/connect:Subtype | ROUTING_STEP_EXPRESSION

\"\ },\ \"Metrics\":{\ \"shape\":\"MetricsV2\",\ - \"documentation\":\"

The metrics to retrieve. Specify the name, groupings, and filters for each metric. The following historical metrics are available. For a description of each metric, see Historical metrics definitions in the Amazon Connect Administrator's Guide.

ABANDONMENT_RATE

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

AGENT_ADHERENT_TIME

This metric is available only in Amazon Web Services Regions where Forecasting, capacity planning, and scheduling is available.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_ANSWER_RATE

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_NON_ADHERENT_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_NON_RESPONSE

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_NON_RESPONSE_WITHOUT_CUSTOMER_ABANDONS

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

Data for this metric is available starting from October 1, 2023 0:00:00 GMT.

AGENT_OCCUPANCY

Unit: Percentage

Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy

AGENT_SCHEDULE_ADHERENCE

This metric is available only in Amazon Web Services Regions where Forecasting, capacity planning, and scheduling is available.

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_SCHEDULED_TIME

This metric is available only in Amazon Web Services Regions where Forecasting, capacity planning, and scheduling is available.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AVG_ABANDON_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

AVG_ACTIVE_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AVG_AFTER_CONTACT_WORK_TIME

Unit: Seconds

Valid metric filter key: INITIATION_METHOD

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_AGENT_CONNECTING_TIME

Unit: Seconds

Valid metric filter key: INITIATION_METHOD. For now, this metric only supports the following as INITIATION_METHOD: INBOUND | OUTBOUND | CALLBACK | API

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

The Negate key in Metric Level Filters is not applicable for this metric.

AVG_AGENT_PAUSE_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AVG_CONTACT_DURATION

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_CONVERSATION_DURATION

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

AVG_GREETING_TIME_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_HANDLE_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_HOLD_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_HOLD_TIME_ALL_CONTACTS

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_HOLDS

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_INTERACTION_AND_HOLD_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_INTERACTION_TIME

Unit: Seconds

Valid metric filter key: INITIATION_METHOD

Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_INTERRUPTIONS_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_INTERRUPTION_TIME_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_NON_TALK_TIME

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_QUEUE_ANSWER_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_RESOLUTION_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

AVG_TALK_TIME

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_TALK_TIME_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_TALK_TIME_CUSTOMER

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_ABANDONED

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_CREATED

Unit: Count

Valid metric filter key: INITIATION_METHOD

Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

CONTACTS_HANDLED

Unit: Count

Valid metric filter key: INITIATION_METHOD, DISCONNECT_REASON

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

CONTACTS_HOLD_ABANDONS

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_ON_HOLD_AGENT_DISCONNECT

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_ON_HOLD_CUSTOMER_DISCONNECT

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_PUT_ON_HOLD

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_TRANSFERRED_OUT_EXTERNAL

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_TRANSFERRED_OUT_INTERNAL

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_QUEUED

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_RESOLVED_IN_X

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

Threshold: For ThresholdValue enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for \\\"Less than\\\").

CONTACTS_TRANSFERRED_OUT

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

CONTACTS_TRANSFERRED_OUT_BY_AGENT

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_TRANSFERRED_OUT_FROM_QUEUE

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

MAX_QUEUED_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

PERCENT_NON_TALK_TIME

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Percentage

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

PERCENT_TALK_TIME

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Percentage

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

PERCENT_TALK_TIME_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Percentage

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

PERCENT_TALK_TIME_CUSTOMER

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Percentage

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

SERVICE_LEVEL

You can include up to 20 SERVICE_LEVEL metrics in a request.

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile

Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for \\\"Less than\\\").

SUM_AFTER_CONTACT_WORK_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_CONNECTING_TIME_AGENT

Unit: Seconds

Valid metric filter key: INITIATION_METHOD. This metric only supports the following filter keys as INITIATION_METHOD: INBOUND | OUTBOUND | CALLBACK | API

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

The Negate key in Metric Level Filters is not applicable for this metric.

SUM_CONTACT_FLOW_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_CONTACT_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_CONTACTS_ANSWERED_IN_X

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for \\\"Less than\\\").

SUM_CONTACTS_ABANDONED_IN_X

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for \\\"Less than\\\").

SUM_CONTACTS_DISCONNECTED

Valid metric filter key: DISCONNECT_REASON

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

SUM_ERROR_STATUS_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_HANDLE_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_HOLD_TIME

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_IDLE_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy

SUM_INTERACTION_AND_HOLD_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_INTERACTION_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_NON_PRODUCTIVE_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy

SUM_ONLINE_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy

SUM_RETRY_CALLBACK_ATTEMPTS

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

\"\ + \"documentation\":\"

The metrics to retrieve. Specify the name, groupings, and filters for each metric. The following historical metrics are available. For a description of each metric, see Historical metrics definitions in the Amazon Connect Administrator's Guide.

ABANDONMENT_RATE

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

AGENT_ADHERENT_TIME

This metric is available only in Amazon Web Services Regions where Forecasting, capacity planning, and scheduling is available.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_ANSWER_RATE

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_NON_ADHERENT_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_NON_RESPONSE

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_NON_RESPONSE_WITHOUT_CUSTOMER_ABANDONS

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

Data for this metric is available starting from October 1, 2023 0:00:00 GMT.

AGENT_OCCUPANCY

Unit: Percentage

Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy

AGENT_SCHEDULE_ADHERENCE

This metric is available only in Amazon Web Services Regions where Forecasting, capacity planning, and scheduling is available.

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AGENT_SCHEDULED_TIME

This metric is available only in Amazon Web Services Regions where Forecasting, capacity planning, and scheduling is available.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AVG_ABANDON_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

AVG_ACTIVE_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AVG_AFTER_CONTACT_WORK_TIME

Unit: Seconds

Valid metric filter key: INITIATION_METHOD

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_AGENT_CONNECTING_TIME

Unit: Seconds

Valid metric filter key: INITIATION_METHOD. For now, this metric only supports the following as INITIATION_METHOD: INBOUND | OUTBOUND | CALLBACK | API

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

The Negate key in Metric Level Filters is not applicable for this metric.

AVG_AGENT_PAUSE_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

AVG_CONTACT_DURATION

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_CONVERSATION_DURATION

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

AVG_GREETING_TIME_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_HANDLE_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, RoutingStepExpression

Feature is a valid filter but not a valid grouping.

AVG_HOLD_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_HOLD_TIME_ALL_CONTACTS

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_HOLDS

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_INTERACTION_AND_HOLD_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_INTERACTION_TIME

Unit: Seconds

Valid metric filter key: INITIATION_METHOD

Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_INTERRUPTIONS_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_INTERRUPTION_TIME_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_NON_TALK_TIME

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_QUEUE_ANSWER_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

AVG_RESOLUTION_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

AVG_TALK_TIME

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_TALK_TIME_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

AVG_TALK_TIME_CUSTOMER

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_ABANDONED

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype, RoutingStepExpression

CONTACTS_CREATED

Unit: Count

Valid metric filter key: INITIATION_METHOD

Valid groupings and filters: Queue, Channel, Routing Profile, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

CONTACTS_HANDLED

Unit: Count

Valid metric filter key: INITIATION_METHOD, DISCONNECT_REASON

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype, RoutingStepExpression

Feature is a valid filter but not a valid grouping.

CONTACTS_HOLD_ABANDONS

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_ON_HOLD_AGENT_DISCONNECT

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_ON_HOLD_CUSTOMER_DISCONNECT

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_PUT_ON_HOLD

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_TRANSFERRED_OUT_EXTERNAL

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_TRANSFERRED_OUT_INTERNAL

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

CONTACTS_QUEUED

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_RESOLVED_IN_X

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

Threshold: For ThresholdValue enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for \\\"Less than\\\").

CONTACTS_TRANSFERRED_OUT

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, Feature, contact/segmentAttributes/connect:Subtype

Feature is a valid filter but not a valid grouping.

CONTACTS_TRANSFERRED_OUT_BY_AGENT

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

CONTACTS_TRANSFERRED_OUT_FROM_QUEUE

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

MAX_QUEUED_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

PERCENT_CONTACTS_STEP_EXPIRED

Unit: Percent

Valid groupings and filters: Queue, RoutingStepExpression

PERCENT_CONTACTS_STEP_JOINED

Unit: Percent

Valid groupings and filters: Queue, RoutingStepExpression

PERCENT_NON_TALK_TIME

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Percentage

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

PERCENT_TALK_TIME

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Percentage

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

PERCENT_TALK_TIME_AGENT

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Percentage

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

PERCENT_TALK_TIME_CUSTOMER

This metric is available only for contacts analyzed by Contact Lens conversational analytics.

Unit: Percentage

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

SERVICE_LEVEL

You can include up to 20 SERVICE_LEVEL metrics in a request.

Unit: Percent

Valid groupings and filters: Queue, Channel, Routing Profile

Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for \\\"Less than\\\").

STEP_CONTACTS_QUEUED

Unit: Count

Valid groupings and filters: Queue, RoutingStepExpression

SUM_AFTER_CONTACT_WORK_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_CONNECTING_TIME_AGENT

Unit: Seconds

Valid metric filter key: INITIATION_METHOD. This metric only supports the following filter keys as INITIATION_METHOD: INBOUND | OUTBOUND | CALLBACK | API

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

The Negate key in Metric Level Filters is not applicable for this metric.

SUM_CONTACT_FLOW_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_CONTACT_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_CONTACTS_ANSWERED_IN_X

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for \\\"Less than\\\").

SUM_CONTACTS_ABANDONED_IN_X

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

Threshold: For ThresholdValue, enter any whole number from 1 to 604800 (inclusive), in seconds. For Comparison, you must enter LT (for \\\"Less than\\\").

SUM_CONTACTS_DISCONNECTED

Valid metric filter key: DISCONNECT_REASON

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy, contact/segmentAttributes/connect:Subtype

SUM_ERROR_STATUS_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_HANDLE_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_HOLD_TIME

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_IDLE_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy

SUM_INTERACTION_AND_HOLD_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_INTERACTION_TIME

Unit: Seconds

Valid groupings and filters: Queue, Channel, Routing Profile, Agent, Agent Hierarchy

SUM_NON_PRODUCTIVE_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy

SUM_ONLINE_TIME_AGENT

Unit: Seconds

Valid groupings and filters: Routing Profile, Agent, Agent Hierarchy

SUM_RETRY_CALLBACK_ATTEMPTS

Unit: Count

Valid groupings and filters: Queue, Channel, Routing Profile, contact/segmentAttributes/connect:Subtype

\"\ },\ \"NextToken\":{\ \"shape\":\"NextToken2500\",\ @@ -11676,7 +11683,8 @@ - (NSString *)definitionString { \"EARLY_MEDIA\",\ \"MULTI_PARTY_CONFERENCE\",\ \"HIGH_VOLUME_OUTBOUND\",\ - \"ENHANCED_CONTACT_MONITORING\"\ + \"ENHANCED_CONTACT_MONITORING\",\ + \"ENHANCED_CHAT_MONITORING\"\ ]\ },\ \"InstanceAttributeValue\":{\ @@ -14361,7 +14369,7 @@ - (NSString *)definitionString { },\ \"AllowedMonitorCapabilities\":{\ \"shape\":\"AllowedMonitorCapabilities\",\ - \"documentation\":\"

Specify which monitoring actions the user is allowed to take. For example, whether the user is allowed to escalate from silent monitoring to barge.

\"\ + \"documentation\":\"

Specify which monitoring actions the user is allowed to take. For example, whether the user is allowed to escalate from silent monitoring to barge. AllowedMonitorCapabilities is required if barge is enabled.

\"\ },\ \"ClientToken\":{\ \"shape\":\"ClientToken\",\ @@ -14386,7 +14394,8 @@ - (NSString *)definitionString { \"Name\":{\ \"type\":\"string\",\ \"max\":512,\ - \"min\":0\ + \"min\":0,\ + \"sensitive\":true\ },\ \"Name128\":{\ \"type\":\"string\",\ @@ -14586,7 +14595,8 @@ - (NSString *)definitionString { \"AGENT\",\ \"CUSTOMER\",\ \"SYSTEM\",\ - \"CUSTOM_BOT\"\ + \"CUSTOM_BOT\",\ + \"SUPERVISOR\"\ ]\ },\ \"ParticipantTimerAction\":{\ @@ -14670,7 +14680,8 @@ - (NSString *)definitionString { },\ \"Password\":{\ \"type\":\"string\",\ - \"pattern\":\"/^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)[a-zA-Z\\\\d\\\\S]{8,64}$/\"\ + \"pattern\":\"/^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)[a-zA-Z\\\\d\\\\S]{8,64}$/\",\ + \"sensitive\":true\ },\ \"PauseContactRequest\":{\ \"type\":\"structure\",\ @@ -17071,11 +17082,11 @@ - (NSString *)definitionString { \"members\":{\ \"InstanceId\":{\ \"shape\":\"InstanceId\",\ - \"documentation\":\"

The identifier of Amazon Connect instance. You can find the instance ID in the Amazon Resource Name (ARN) of the instance

\"\ + \"documentation\":\"

The identifier of Amazon Connect instance. You can find the instance ID in the Amazon Resource Name (ARN) of the instance.

\"\ },\ \"TimeRange\":{\ \"shape\":\"SearchContactsTimeRange\",\ - \"documentation\":\"

Time range that you want to search results

\"\ + \"documentation\":\"

Time range that you want to search results.

\"\ },\ \"SearchCriteria\":{\ \"shape\":\"SearchCriteria\",\ @@ -17092,7 +17103,7 @@ - (NSString *)definitionString { },\ \"Sort\":{\ \"shape\":\"Sort\",\ - \"documentation\":\"

Specifies a field to sort by and a sort order

\"\ + \"documentation\":\"

Specifies a field to sort by and a sort order.

\"\ }\ }\ },\ @@ -17124,7 +17135,7 @@ - (NSString *)definitionString { \"members\":{\ \"Type\":{\ \"shape\":\"SearchContactsTimeRangeType\",\ - \"documentation\":\"

The type of timestamp to search

\"\ + \"documentation\":\"

The type of timestamp to search.

\"\ },\ \"StartTime\":{\ \"shape\":\"Timestamp\",\ @@ -17135,7 +17146,7 @@ - (NSString *)definitionString { \"documentation\":\"

The end time of the time range.

\"\ }\ },\ - \"documentation\":\"

A structure of time range that you want to search results

\"\ + \"documentation\":\"

A structure of time range that you want to search results.

\"\ },\ \"SearchContactsTimeRangeType\":{\ \"type\":\"string\",\ @@ -17151,34 +17162,34 @@ - (NSString *)definitionString { \"members\":{\ \"AgentIds\":{\ \"shape\":\"AgentResourceIdList\",\ - \"documentation\":\"

The array of agent ids

\"\ + \"documentation\":\"

The identifiers of agents who handled the contacts.

\"\ },\ \"AgentHierarchyGroups\":{\ \"shape\":\"AgentHierarchyGroups\",\ - \"documentation\":\"

The agent hierarchy groups

\"\ + \"documentation\":\"

The agent hierarchy groups of the agent at the time of handling the contact.

\"\ },\ \"Channels\":{\ \"shape\":\"ChannelList\",\ - \"documentation\":\"

The array of channels

\"\ + \"documentation\":\"

The list of channels associated with contacts.

\"\ },\ \"ContactAnalysis\":{\ \"shape\":\"ContactAnalysis\",\ - \"documentation\":\"

The ContactAnalysis object used in search criteria

\"\ + \"documentation\":\"

Search criteria based on analysis outputs from Amazon Connect Contact Lens.

\"\ },\ \"InitiationMethods\":{\ \"shape\":\"InitiationMethodList\",\ - \"documentation\":\"

The array of initiaton methods

\"\ + \"documentation\":\"

The list of initiation methods associated with contacts.

\"\ },\ \"QueueIds\":{\ \"shape\":\"QueueIdList\",\ - \"documentation\":\"

The array of queue ids.

\"\ + \"documentation\":\"

The list of queue IDs associated with contacts.

\"\ },\ \"SearchableContactAttributes\":{\ \"shape\":\"SearchableContactAttributes\",\ - \"documentation\":\"

The SearchableContactAttributes object used in search criteria

\"\ + \"documentation\":\"

The search criteria based on user-defined contact attributes that have been configured for contact search. For more information, see Search by customer contact attributes in the Amazon Connect Administrator Guide.

To use SearchableContactAttributes in a search request, the GetContactAttributes action is required to perform an API request. For more information, see https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonconnect.html#amazonconnect-actions-as-permissionsActions defined by Amazon Connect.

\"\ }\ },\ - \"documentation\":\"

A structure of search criteria to be used to return contacts

\"\ + \"documentation\":\"

A structure of search criteria to be used to return contacts.

\"\ },\ \"SearchHoursOfOperationsRequest\":{\ \"type\":\"structure\",\ @@ -17645,14 +17656,14 @@ - (NSString *)definitionString { \"members\":{\ \"Criteria\":{\ \"shape\":\"SearchableContactAttributesCriteriaList\",\ - \"documentation\":\"

The array of searhale contact attribute criteria

\"\ + \"documentation\":\"

The list of criteria based on user-defined contact attributes that are configured for contact search.

\"\ },\ \"MatchType\":{\ \"shape\":\"SearchContactsMatchType\",\ - \"documentation\":\"

The match type of multiple searchable contact attributes criteria.

\"\ + \"documentation\":\"

The match type combining search criteria using multiple searchable contact attributes.

\"\ }\ },\ - \"documentation\":\"

A structure that defines searchable contact attributes which can be used to filter search results.

\"\ + \"documentation\":\"

A structure that defines search criteria based on user-defined contact attributes that are configured for contact search.

\"\ },\ \"SearchableContactAttributesCriteria\":{\ \"type\":\"structure\",\ @@ -17663,14 +17674,14 @@ - (NSString *)definitionString { \"members\":{\ \"Key\":{\ \"shape\":\"SearchableContactAttributeKey\",\ - \"documentation\":\"

The searchable contact attribute key

\"\ + \"documentation\":\"

The key containing a searchable user-defined contact attribute.

\"\ },\ \"Values\":{\ \"shape\":\"SearchableContactAttributeValueList\",\ - \"documentation\":\"

The array of contact attribute values used to filter search results.

\"\ + \"documentation\":\"

The list of values to search for within a user-defined contact attribute.

\"\ }\ },\ - \"documentation\":\"

The criteria of searchable contact attributes.

\"\ + \"documentation\":\"

The search criteria based on user-defned contact attribute key and values to search on.

\"\ },\ \"SearchableContactAttributesCriteriaList\":{\ \"type\":\"list\",\ @@ -18068,7 +18079,7 @@ - (NSString *)definitionString { \"documentation\":\"

An ascending or descending sort.

\"\ }\ },\ - \"documentation\":\"

A structure that defines the sort by and a sort order

\"\ + \"documentation\":\"

A structure that defineds the field name to sort by and a sort order.

\"\ },\ \"SortOrder\":{\ \"type\":\"string\",\ @@ -19345,14 +19356,14 @@ - (NSString *)definitionString { \"members\":{\ \"Criteria\":{\ \"shape\":\"TranscriptCriteriaList\",\ - \"documentation\":\"

The array of transcript search criteria

\"\ + \"documentation\":\"

The list of search criteria based on Contact Lens conversational analytics transcript.

\"\ },\ \"MatchType\":{\ \"shape\":\"SearchContactsMatchType\",\ - \"documentation\":\"

The match type of multiple transcript criteira

\"\ + \"documentation\":\"

The match type combining search criteria using multiple transcript criteria.

\"\ }\ },\ - \"documentation\":\"

The transcript object used to search results.

\"\ + \"documentation\":\"

A structure that defines search criteria and matching logic to search for contacts by matching text with transcripts analyzed by Amazon Connect Contact Lens.

\"\ },\ \"TranscriptCriteria\":{\ \"type\":\"structure\",\ @@ -19372,10 +19383,10 @@ - (NSString *)definitionString { },\ \"MatchType\":{\ \"shape\":\"SearchContactsMatchType\",\ - \"documentation\":\"

The match type of search texts in a transcript criteria.

\"\ + \"documentation\":\"

The match type combining search criteria using multiple search texts in a transcript criteria.

\"\ }\ },\ - \"documentation\":\"

The transcript criteria used to search

\"\ + \"documentation\":\"

A structure that defines search criteria base on words or phrases, participants in the Contact Lens conversational analytics transcript.

\"\ },\ \"TranscriptCriteriaList\":{\ \"type\":\"list\",\ @@ -21415,7 +21426,7 @@ - (NSString *)definitionString { },\ \"StringCondition\":{\ \"shape\":\"StringCondition\",\ - \"documentation\":\"

A leaf node condition which can be used to specify a string condition.

The currently supported values for FieldName are name, description, and resourceID.

\"\ + \"documentation\":\"

A leaf node condition which can be used to specify a string condition.

The currently supported values for FieldName are username, firstname, lastname, resourceId, routingProfileId, securityProfileId, agentGroupId, and agentGroupPathIds.

\"\ },\ \"HierarchyGroupCondition\":{\ \"shape\":\"HierarchyGroupCondition\",\ diff --git a/AWSConnect/AWSConnectService.h b/AWSConnect/AWSConnectService.h index 35b07b18f2f..887a9e4936c 100644 --- a/AWSConnect/AWSConnectService.h +++ b/AWSConnect/AWSConnectService.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSConnect/AWSConnectService.m b/AWSConnect/AWSConnectService.m index d5e3701cb7d..114944473e5 100644 --- a/AWSConnect/AWSConnectService.m +++ b/AWSConnect/AWSConnectService.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSConnectUnitTests/AWSConnectNSSecureCodingTests.m b/AWSConnectUnitTests/AWSConnectNSSecureCodingTests.m index be75fea826e..b7949ab186f 100644 --- a/AWSConnectUnitTests/AWSConnectNSSecureCodingTests.m +++ b/AWSConnectUnitTests/AWSConnectNSSecureCodingTests.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSConnectUnitTests/AWSGeneralConnectTests.m b/AWSConnectUnitTests/AWSGeneralConnectTests.m index 0d582b05694..62a613627d2 100644 --- a/AWSConnectUnitTests/AWSGeneralConnectTests.m +++ b/AWSConnectUnitTests/AWSGeneralConnectTests.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. From ca8c86c6ca20e2e6c3bb113af84c233c85a2bde6 Mon Sep 17 00:00:00 2001 From: AWS Mobile SDK Bot <46607340+awsmobilesdk@users.noreply.github.com> Date: Mon, 29 Jan 2024 12:14:00 -0800 Subject: [PATCH 04/11] chore(changelog): Update models to latest [ci-skip] (#5158) --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0899907ba05..a9cb1e9cff4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,13 @@ +--- + +MOVE THIS SECTION TO THE CORRECT LOCATION + +### Misc. Updates + +- Model updates for the following services +---AWSLocation +---AWSConnectParticipant +---AWSConnect # AWS Mobile SDK for iOS CHANGELOG ## Unreleased From 2b8d1b86f4e9f8782bc59d3a0b01ab9116642640 Mon Sep 17 00:00:00 2001 From: AWS Mobile SDK Bot <46607340+awsmobilesdk@users.noreply.github.com> Date: Mon, 29 Jan 2024 12:14:31 -0800 Subject: [PATCH 05/11] feat(AWSDynamoDB): update models to latest (#5161) --- AWSDynamoDB/AWSDynamoDB.h | 2 +- AWSDynamoDB/AWSDynamoDBModel.h | 109 +++++++++- AWSDynamoDB/AWSDynamoDBModel.m | 196 +++++++++++++++++- AWSDynamoDB/AWSDynamoDBResources.h | 2 +- AWSDynamoDB/AWSDynamoDBResources.m | 108 +++++++++- AWSDynamoDB/AWSDynamoDBService.h | 27 ++- AWSDynamoDB/AWSDynamoDBService.m | 25 ++- .../AWSDynamoDBNSSecureCodingTests.m | 22 +- .../AWSGeneralDynamoDBTests.m | 50 ++++- 9 files changed, 527 insertions(+), 14 deletions(-) diff --git a/AWSDynamoDB/AWSDynamoDB.h b/AWSDynamoDB/AWSDynamoDB.h index 2f278fb6e87..e655ad1b28c 100644 --- a/AWSDynamoDB/AWSDynamoDB.h +++ b/AWSDynamoDB/AWSDynamoDB.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSDynamoDB/AWSDynamoDBModel.h b/AWSDynamoDB/AWSDynamoDBModel.h index aab09561755..33a3d60d3b0 100644 --- a/AWSDynamoDB/AWSDynamoDBModel.h +++ b/AWSDynamoDB/AWSDynamoDBModel.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -56,6 +56,12 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBErrorType) { AWSDynamoDBErrorTransactionInProgress, }; +typedef NS_ENUM(NSInteger, AWSDynamoDBApproximateCreationDateTimePrecision) { + AWSDynamoDBApproximateCreationDateTimePrecisionUnknown, + AWSDynamoDBApproximateCreationDateTimePrecisionMillisecond, + AWSDynamoDBApproximateCreationDateTimePrecisionMicrosecond, +}; + typedef NS_ENUM(NSInteger, AWSDynamoDBAttributeAction) { AWSDynamoDBAttributeActionUnknown, AWSDynamoDBAttributeActionAdd, @@ -157,6 +163,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBDestinationStatus) { AWSDynamoDBDestinationStatusDisabling, AWSDynamoDBDestinationStatusDisabled, AWSDynamoDBDestinationStatusEnableFailed, + AWSDynamoDBDestinationStatusUpdating, }; typedef NS_ENUM(NSInteger, AWSDynamoDBExportFormat) { @@ -427,6 +434,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTimeToLiveStatus) { @class AWSDynamoDBDescribeTableReplicaAutoScalingOutput; @class AWSDynamoDBDescribeTimeToLiveInput; @class AWSDynamoDBDescribeTimeToLiveOutput; +@class AWSDynamoDBEnableKinesisStreamingConfiguration; @class AWSDynamoDBEndpoint; @class AWSDynamoDBExecuteStatementInput; @class AWSDynamoDBExecuteStatementOutput; @@ -546,6 +554,9 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTimeToLiveStatus) { @class AWSDynamoDBUpdateGlobalTableSettingsOutput; @class AWSDynamoDBUpdateItemInput; @class AWSDynamoDBUpdateItemOutput; +@class AWSDynamoDBUpdateKinesisStreamingConfiguration; +@class AWSDynamoDBUpdateKinesisStreamingDestinationInput; +@class AWSDynamoDBUpdateKinesisStreamingDestinationOutput; @class AWSDynamoDBUpdateReplicationGroupMemberAction; @class AWSDynamoDBUpdateTableInput; @class AWSDynamoDBUpdateTableOutput; @@ -2224,6 +2235,19 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTimeToLiveStatus) { @end +/** +

Enables setting the configuration for Kinesis Streaming.

+ */ +@interface AWSDynamoDBEnableKinesisStreamingConfiguration : AWSModel + + +/** +

Toggle for the precision of Kinesis data stream timestamp. The values are either MILLISECOND or MICROSECOND.

+ */ +@property (nonatomic, assign) AWSDynamoDBApproximateCreationDateTimePrecision approximateCreationDateTimePrecision; + +@end + /**

An endpoint information details.

Required parameters: [Address, CachePeriodInMinutes] @@ -3258,6 +3282,11 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTimeToLiveStatus) { @interface AWSDynamoDBKinesisDataStreamDestination : AWSModel +/** +

The precision of the Kinesis data stream timestamp. The values are either MILLISECOND or MICROSECOND.

+ */ +@property (nonatomic, assign) AWSDynamoDBApproximateCreationDateTimePrecision approximateCreationDateTimePrecision; + /**

The current status of replication.

*/ @@ -3281,6 +3310,11 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTimeToLiveStatus) { @interface AWSDynamoDBKinesisStreamingDestinationInput : AWSRequest +/** +

The source for the Kinesis streaming information that is being enabled.

+ */ +@property (nonatomic, strong) AWSDynamoDBEnableKinesisStreamingConfiguration * _Nullable enableKinesisStreamingConfiguration; + /**

The ARN for a Kinesis data stream.

*/ @@ -3304,6 +3338,11 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTimeToLiveStatus) { */ @property (nonatomic, assign) AWSDynamoDBDestinationStatus destinationStatus; +/** +

The destination for the Kinesis streaming information that is being enabled.

+ */ +@property (nonatomic, strong) AWSDynamoDBEnableKinesisStreamingConfiguration * _Nullable enableKinesisStreamingConfiguration; + /**

The ARN for the specific Kinesis data stream.

*/ @@ -3694,7 +3733,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTimeToLiveStatus) { @end /** -

Represents a PartiQL statment that uses parameters.

+

Represents a PartiQL statement that uses parameters.

Required parameters: [Statement] */ @interface AWSDynamoDBParameterizedStatement : AWSModel @@ -3711,7 +3750,7 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTimeToLiveStatus) { @property (nonatomic, assign) AWSDynamoDBReturnValuesOnConditionCheckFailure returnValuesOnConditionCheckFailure; /** -

A PartiQL statment that uses parameters.

+

A PartiQL statement that uses parameters.

*/ @property (nonatomic, strong) NSString * _Nullable statement; @@ -5709,6 +5748,70 @@ typedef NS_ENUM(NSInteger, AWSDynamoDBTimeToLiveStatus) { @end +/** +

Enables updating the configuration for Kinesis Streaming.

+ */ +@interface AWSDynamoDBUpdateKinesisStreamingConfiguration : AWSModel + + +/** +

Enables updating the precision of Kinesis data stream timestamp.

+ */ +@property (nonatomic, assign) AWSDynamoDBApproximateCreationDateTimePrecision approximateCreationDateTimePrecision; + +@end + +/** + + */ +@interface AWSDynamoDBUpdateKinesisStreamingDestinationInput : AWSRequest + + +/** +

The ARN for the Kinesis stream input.

+ */ +@property (nonatomic, strong) NSString * _Nullable streamArn; + +/** +

The table name for the Kinesis streaming destination input.

+ */ +@property (nonatomic, strong) NSString * _Nullable tableName; + +/** +

The command to update the Kinesis stream configuration.

+ */ +@property (nonatomic, strong) AWSDynamoDBUpdateKinesisStreamingConfiguration * _Nullable updateKinesisStreamingConfiguration; + +@end + +/** + + */ +@interface AWSDynamoDBUpdateKinesisStreamingDestinationOutput : AWSModel + + +/** +

The status of the attempt to update the Kinesis streaming destination output.

+ */ +@property (nonatomic, assign) AWSDynamoDBDestinationStatus destinationStatus; + +/** +

The ARN for the Kinesis stream input.

+ */ +@property (nonatomic, strong) NSString * _Nullable streamArn; + +/** +

The table name for the Kinesis streaming destination output.

+ */ +@property (nonatomic, strong) NSString * _Nullable tableName; + +/** +

The command to update the Kinesis streaming destination configuration.

+ */ +@property (nonatomic, strong) AWSDynamoDBUpdateKinesisStreamingConfiguration * _Nullable updateKinesisStreamingConfiguration; + +@end + /**

Represents a replica to be modified.

Required parameters: [RegionName] diff --git a/AWSDynamoDB/AWSDynamoDBModel.m b/AWSDynamoDB/AWSDynamoDBModel.m index e8e119b0572..530f0d3e449 100644 --- a/AWSDynamoDB/AWSDynamoDBModel.m +++ b/AWSDynamoDB/AWSDynamoDBModel.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -2409,6 +2409,41 @@ + (NSValueTransformer *)timeToLiveDescriptionJSONTransformer { @end +@implementation AWSDynamoDBEnableKinesisStreamingConfiguration + ++ (BOOL)supportsSecureCoding { + return YES; +} + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"approximateCreationDateTimePrecision" : @"ApproximateCreationDateTimePrecision", + }; +} + ++ (NSValueTransformer *)approximateCreationDateTimePrecisionJSONTransformer { + return [AWSMTLValueTransformer reversibleTransformerWithForwardBlock:^NSNumber *(NSString *value) { + if ([value caseInsensitiveCompare:@"MILLISECOND"] == NSOrderedSame) { + return @(AWSDynamoDBApproximateCreationDateTimePrecisionMillisecond); + } + if ([value caseInsensitiveCompare:@"MICROSECOND"] == NSOrderedSame) { + return @(AWSDynamoDBApproximateCreationDateTimePrecisionMicrosecond); + } + return @(AWSDynamoDBApproximateCreationDateTimePrecisionUnknown); + } reverseBlock:^NSString *(NSNumber *value) { + switch ([value integerValue]) { + case AWSDynamoDBApproximateCreationDateTimePrecisionMillisecond: + return @"MILLISECOND"; + case AWSDynamoDBApproximateCreationDateTimePrecisionMicrosecond: + return @"MICROSECOND"; + default: + return nil; + } + }]; +} + +@end + @implementation AWSDynamoDBEndpoint + (BOOL)supportsSecureCoding { @@ -3962,12 +3997,34 @@ + (BOOL)supportsSecureCoding { + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ + @"approximateCreationDateTimePrecision" : @"ApproximateCreationDateTimePrecision", @"destinationStatus" : @"DestinationStatus", @"destinationStatusDescription" : @"DestinationStatusDescription", @"streamArn" : @"StreamArn", }; } ++ (NSValueTransformer *)approximateCreationDateTimePrecisionJSONTransformer { + return [AWSMTLValueTransformer reversibleTransformerWithForwardBlock:^NSNumber *(NSString *value) { + if ([value caseInsensitiveCompare:@"MILLISECOND"] == NSOrderedSame) { + return @(AWSDynamoDBApproximateCreationDateTimePrecisionMillisecond); + } + if ([value caseInsensitiveCompare:@"MICROSECOND"] == NSOrderedSame) { + return @(AWSDynamoDBApproximateCreationDateTimePrecisionMicrosecond); + } + return @(AWSDynamoDBApproximateCreationDateTimePrecisionUnknown); + } reverseBlock:^NSString *(NSNumber *value) { + switch ([value integerValue]) { + case AWSDynamoDBApproximateCreationDateTimePrecisionMillisecond: + return @"MILLISECOND"; + case AWSDynamoDBApproximateCreationDateTimePrecisionMicrosecond: + return @"MICROSECOND"; + default: + return nil; + } + }]; +} + + (NSValueTransformer *)destinationStatusJSONTransformer { return [AWSMTLValueTransformer reversibleTransformerWithForwardBlock:^NSNumber *(NSString *value) { if ([value caseInsensitiveCompare:@"ENABLING"] == NSOrderedSame) { @@ -3985,6 +4042,9 @@ + (NSValueTransformer *)destinationStatusJSONTransformer { if ([value caseInsensitiveCompare:@"ENABLE_FAILED"] == NSOrderedSame) { return @(AWSDynamoDBDestinationStatusEnableFailed); } + if ([value caseInsensitiveCompare:@"UPDATING"] == NSOrderedSame) { + return @(AWSDynamoDBDestinationStatusUpdating); + } return @(AWSDynamoDBDestinationStatusUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -3998,6 +4058,8 @@ + (NSValueTransformer *)destinationStatusJSONTransformer { return @"DISABLED"; case AWSDynamoDBDestinationStatusEnableFailed: return @"ENABLE_FAILED"; + case AWSDynamoDBDestinationStatusUpdating: + return @"UPDATING"; default: return nil; } @@ -4014,11 +4076,16 @@ + (BOOL)supportsSecureCoding { + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ + @"enableKinesisStreamingConfiguration" : @"EnableKinesisStreamingConfiguration", @"streamArn" : @"StreamArn", @"tableName" : @"TableName", }; } ++ (NSValueTransformer *)enableKinesisStreamingConfigurationJSONTransformer { + return [NSValueTransformer awsmtl_JSONDictionaryTransformerWithModelClass:[AWSDynamoDBEnableKinesisStreamingConfiguration class]]; +} + @end @implementation AWSDynamoDBKinesisStreamingDestinationOutput @@ -4030,6 +4097,7 @@ + (BOOL)supportsSecureCoding { + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ @"destinationStatus" : @"DestinationStatus", + @"enableKinesisStreamingConfiguration" : @"EnableKinesisStreamingConfiguration", @"streamArn" : @"StreamArn", @"tableName" : @"TableName", }; @@ -4052,6 +4120,9 @@ + (NSValueTransformer *)destinationStatusJSONTransformer { if ([value caseInsensitiveCompare:@"ENABLE_FAILED"] == NSOrderedSame) { return @(AWSDynamoDBDestinationStatusEnableFailed); } + if ([value caseInsensitiveCompare:@"UPDATING"] == NSOrderedSame) { + return @(AWSDynamoDBDestinationStatusUpdating); + } return @(AWSDynamoDBDestinationStatusUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -4065,12 +4136,18 @@ + (NSValueTransformer *)destinationStatusJSONTransformer { return @"DISABLED"; case AWSDynamoDBDestinationStatusEnableFailed: return @"ENABLE_FAILED"; + case AWSDynamoDBDestinationStatusUpdating: + return @"UPDATING"; default: return nil; } }]; } ++ (NSValueTransformer *)enableKinesisStreamingConfigurationJSONTransformer { + return [NSValueTransformer awsmtl_JSONDictionaryTransformerWithModelClass:[AWSDynamoDBEnableKinesisStreamingConfiguration class]]; +} + @end @implementation AWSDynamoDBListBackupsInput @@ -7480,6 +7557,123 @@ + (NSValueTransformer *)itemCollectionMetricsJSONTransformer { @end +@implementation AWSDynamoDBUpdateKinesisStreamingConfiguration + ++ (BOOL)supportsSecureCoding { + return YES; +} + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"approximateCreationDateTimePrecision" : @"ApproximateCreationDateTimePrecision", + }; +} + ++ (NSValueTransformer *)approximateCreationDateTimePrecisionJSONTransformer { + return [AWSMTLValueTransformer reversibleTransformerWithForwardBlock:^NSNumber *(NSString *value) { + if ([value caseInsensitiveCompare:@"MILLISECOND"] == NSOrderedSame) { + return @(AWSDynamoDBApproximateCreationDateTimePrecisionMillisecond); + } + if ([value caseInsensitiveCompare:@"MICROSECOND"] == NSOrderedSame) { + return @(AWSDynamoDBApproximateCreationDateTimePrecisionMicrosecond); + } + return @(AWSDynamoDBApproximateCreationDateTimePrecisionUnknown); + } reverseBlock:^NSString *(NSNumber *value) { + switch ([value integerValue]) { + case AWSDynamoDBApproximateCreationDateTimePrecisionMillisecond: + return @"MILLISECOND"; + case AWSDynamoDBApproximateCreationDateTimePrecisionMicrosecond: + return @"MICROSECOND"; + default: + return nil; + } + }]; +} + +@end + +@implementation AWSDynamoDBUpdateKinesisStreamingDestinationInput + ++ (BOOL)supportsSecureCoding { + return YES; +} + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"streamArn" : @"StreamArn", + @"tableName" : @"TableName", + @"updateKinesisStreamingConfiguration" : @"UpdateKinesisStreamingConfiguration", + }; +} + ++ (NSValueTransformer *)updateKinesisStreamingConfigurationJSONTransformer { + return [NSValueTransformer awsmtl_JSONDictionaryTransformerWithModelClass:[AWSDynamoDBUpdateKinesisStreamingConfiguration class]]; +} + +@end + +@implementation AWSDynamoDBUpdateKinesisStreamingDestinationOutput + ++ (BOOL)supportsSecureCoding { + return YES; +} + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"destinationStatus" : @"DestinationStatus", + @"streamArn" : @"StreamArn", + @"tableName" : @"TableName", + @"updateKinesisStreamingConfiguration" : @"UpdateKinesisStreamingConfiguration", + }; +} + ++ (NSValueTransformer *)destinationStatusJSONTransformer { + return [AWSMTLValueTransformer reversibleTransformerWithForwardBlock:^NSNumber *(NSString *value) { + if ([value caseInsensitiveCompare:@"ENABLING"] == NSOrderedSame) { + return @(AWSDynamoDBDestinationStatusEnabling); + } + if ([value caseInsensitiveCompare:@"ACTIVE"] == NSOrderedSame) { + return @(AWSDynamoDBDestinationStatusActive); + } + if ([value caseInsensitiveCompare:@"DISABLING"] == NSOrderedSame) { + return @(AWSDynamoDBDestinationStatusDisabling); + } + if ([value caseInsensitiveCompare:@"DISABLED"] == NSOrderedSame) { + return @(AWSDynamoDBDestinationStatusDisabled); + } + if ([value caseInsensitiveCompare:@"ENABLE_FAILED"] == NSOrderedSame) { + return @(AWSDynamoDBDestinationStatusEnableFailed); + } + if ([value caseInsensitiveCompare:@"UPDATING"] == NSOrderedSame) { + return @(AWSDynamoDBDestinationStatusUpdating); + } + return @(AWSDynamoDBDestinationStatusUnknown); + } reverseBlock:^NSString *(NSNumber *value) { + switch ([value integerValue]) { + case AWSDynamoDBDestinationStatusEnabling: + return @"ENABLING"; + case AWSDynamoDBDestinationStatusActive: + return @"ACTIVE"; + case AWSDynamoDBDestinationStatusDisabling: + return @"DISABLING"; + case AWSDynamoDBDestinationStatusDisabled: + return @"DISABLED"; + case AWSDynamoDBDestinationStatusEnableFailed: + return @"ENABLE_FAILED"; + case AWSDynamoDBDestinationStatusUpdating: + return @"UPDATING"; + default: + return nil; + } + }]; +} + ++ (NSValueTransformer *)updateKinesisStreamingConfigurationJSONTransformer { + return [NSValueTransformer awsmtl_JSONDictionaryTransformerWithModelClass:[AWSDynamoDBUpdateKinesisStreamingConfiguration class]]; +} + +@end + @implementation AWSDynamoDBUpdateReplicationGroupMemberAction + (BOOL)supportsSecureCoding { diff --git a/AWSDynamoDB/AWSDynamoDBResources.h b/AWSDynamoDB/AWSDynamoDBResources.h index 1bba3a1492d..c80a4de1014 100644 --- a/AWSDynamoDB/AWSDynamoDBResources.h +++ b/AWSDynamoDB/AWSDynamoDBResources.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSDynamoDB/AWSDynamoDBResources.m b/AWSDynamoDB/AWSDynamoDBResources.m index f75fb969513..55cb3d0de6a 100644 --- a/AWSDynamoDB/AWSDynamoDBResources.m +++ b/AWSDynamoDB/AWSDynamoDBResources.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -919,6 +919,24 @@ - (NSString *)definitionString { \"endpointdiscovery\":{\ }\ },\ + \"UpdateKinesisStreamingDestination\":{\ + \"name\":\"UpdateKinesisStreamingDestination\",\ + \"http\":{\ + \"method\":\"POST\",\ + \"requestUri\":\"/\"\ + },\ + \"input\":{\"shape\":\"UpdateKinesisStreamingDestinationInput\"},\ + \"output\":{\"shape\":\"UpdateKinesisStreamingDestinationOutput\"},\ + \"errors\":[\ + {\"shape\":\"InternalServerError\"},\ + {\"shape\":\"LimitExceededException\"},\ + {\"shape\":\"ResourceInUseException\"},\ + {\"shape\":\"ResourceNotFoundException\"}\ + ],\ + \"documentation\":\"

The command to update the Kinesis stream destination.

\",\ + \"endpointdiscovery\":{\ + }\ + },\ \"UpdateTable\":{\ \"name\":\"UpdateTable\",\ \"http\":{\ @@ -973,6 +991,13 @@ - (NSString *)definitionString { }\ },\ \"shapes\":{\ + \"ApproximateCreationDateTimePrecision\":{\ + \"type\":\"string\",\ + \"enum\":[\ + \"MILLISECOND\",\ + \"MICROSECOND\"\ + ]\ + },\ \"ArchivalReason\":{\"type\":\"string\"},\ \"ArchivalSummary\":{\ \"type\":\"structure\",\ @@ -2600,7 +2625,8 @@ - (NSString *)definitionString { \"ACTIVE\",\ \"DISABLING\",\ \"DISABLED\",\ - \"ENABLE_FAILED\"\ + \"ENABLE_FAILED\",\ + \"UPDATING\"\ ]\ },\ \"DoubleObject\":{\"type\":\"double\"},\ @@ -2612,6 +2638,16 @@ - (NSString *)definitionString { \"documentation\":\"

There was an attempt to insert an item with the same primary key as an item that already exists in the DynamoDB table.

\",\ \"exception\":true\ },\ + \"EnableKinesisStreamingConfiguration\":{\ + \"type\":\"structure\",\ + \"members\":{\ + \"ApproximateCreationDateTimePrecision\":{\ + \"shape\":\"ApproximateCreationDateTimePrecision\",\ + \"documentation\":\"

Toggle for the precision of Kinesis data stream timestamp. The values are either MILLISECOND or MICROSECOND.

\"\ + }\ + },\ + \"documentation\":\"

Enables setting the configuration for Kinesis Streaming.

\"\ + },\ \"Endpoint\":{\ \"type\":\"structure\",\ \"required\":[\ @@ -3806,6 +3842,10 @@ - (NSString *)definitionString { \"DestinationStatusDescription\":{\ \"shape\":\"String\",\ \"documentation\":\"

The human-readable string that corresponds to the replica status.

\"\ + },\ + \"ApproximateCreationDateTimePrecision\":{\ + \"shape\":\"ApproximateCreationDateTimePrecision\",\ + \"documentation\":\"

The precision of the Kinesis data stream timestamp. The values are either MILLISECOND or MICROSECOND.

\"\ }\ },\ \"documentation\":\"

Describes a Kinesis data stream destination.

\"\ @@ -3828,6 +3868,10 @@ - (NSString *)definitionString { \"StreamArn\":{\ \"shape\":\"StreamArn\",\ \"documentation\":\"

The ARN for a Kinesis data stream.

\"\ + },\ + \"EnableKinesisStreamingConfiguration\":{\ + \"shape\":\"EnableKinesisStreamingConfiguration\",\ + \"documentation\":\"

The source for the Kinesis streaming information that is being enabled.

\"\ }\ }\ },\ @@ -3845,6 +3889,10 @@ - (NSString *)definitionString { \"DestinationStatus\":{\ \"shape\":\"DestinationStatus\",\ \"documentation\":\"

The current status of the replication.

\"\ + },\ + \"EnableKinesisStreamingConfiguration\":{\ + \"shape\":\"EnableKinesisStreamingConfiguration\",\ + \"documentation\":\"

The destination for the Kinesis streaming information that is being enabled.

\"\ }\ }\ },\ @@ -4218,7 +4266,7 @@ - (NSString *)definitionString { \"members\":{\ \"Statement\":{\ \"shape\":\"PartiQLStatement\",\ - \"documentation\":\"

A PartiQL statment that uses parameters.

\"\ + \"documentation\":\"

A PartiQL statement that uses parameters.

\"\ },\ \"Parameters\":{\ \"shape\":\"PreparedStatementParameters\",\ @@ -4229,7 +4277,7 @@ - (NSString *)definitionString { \"documentation\":\"

An optional parameter that returns the item attributes for a PartiQL ParameterizedStatement operation that failed a condition check.

There is no additional cost associated with requesting a return value aside from the small network and processing overhead of receiving a larger response. No read capacity units are consumed.

\"\ }\ },\ - \"documentation\":\"

Represents a PartiQL statment that uses parameters.

\"\ + \"documentation\":\"

Represents a PartiQL statement that uses parameters.

\"\ },\ \"ParameterizedStatements\":{\ \"type\":\"list\",\ @@ -6284,6 +6332,58 @@ - (NSString *)definitionString { },\ \"documentation\":\"

Represents the output of an UpdateItem operation.

\"\ },\ + \"UpdateKinesisStreamingConfiguration\":{\ + \"type\":\"structure\",\ + \"members\":{\ + \"ApproximateCreationDateTimePrecision\":{\ + \"shape\":\"ApproximateCreationDateTimePrecision\",\ + \"documentation\":\"

Enables updating the precision of Kinesis data stream timestamp.

\"\ + }\ + },\ + \"documentation\":\"

Enables updating the configuration for Kinesis Streaming.

\"\ + },\ + \"UpdateKinesisStreamingDestinationInput\":{\ + \"type\":\"structure\",\ + \"required\":[\ + \"TableName\",\ + \"StreamArn\"\ + ],\ + \"members\":{\ + \"TableName\":{\ + \"shape\":\"TableName\",\ + \"documentation\":\"

The table name for the Kinesis streaming destination input.

\"\ + },\ + \"StreamArn\":{\ + \"shape\":\"StreamArn\",\ + \"documentation\":\"

The ARN for the Kinesis stream input.

\"\ + },\ + \"UpdateKinesisStreamingConfiguration\":{\ + \"shape\":\"UpdateKinesisStreamingConfiguration\",\ + \"documentation\":\"

The command to update the Kinesis stream configuration.

\"\ + }\ + }\ + },\ + \"UpdateKinesisStreamingDestinationOutput\":{\ + \"type\":\"structure\",\ + \"members\":{\ + \"TableName\":{\ + \"shape\":\"TableName\",\ + \"documentation\":\"

The table name for the Kinesis streaming destination output.

\"\ + },\ + \"StreamArn\":{\ + \"shape\":\"StreamArn\",\ + \"documentation\":\"

The ARN for the Kinesis stream input.

\"\ + },\ + \"DestinationStatus\":{\ + \"shape\":\"DestinationStatus\",\ + \"documentation\":\"

The status of the attempt to update the Kinesis streaming destination output.

\"\ + },\ + \"UpdateKinesisStreamingConfiguration\":{\ + \"shape\":\"UpdateKinesisStreamingConfiguration\",\ + \"documentation\":\"

The command to update the Kinesis streaming destination configuration.

\"\ + }\ + }\ + },\ \"UpdateReplicationGroupMemberAction\":{\ \"type\":\"structure\",\ \"required\":[\"RegionName\"],\ diff --git a/AWSDynamoDB/AWSDynamoDBService.h b/AWSDynamoDB/AWSDynamoDBService.h index 0f734e49a55..c182da7f216 100644 --- a/AWSDynamoDB/AWSDynamoDBService.h +++ b/AWSDynamoDB/AWSDynamoDBService.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -1418,6 +1418,31 @@ FOUNDATION_EXPORT NSString *const AWSDynamoDBSDKVersion; */ - (void)updateItem:(AWSDynamoDBUpdateItemInput *)request completionHandler:(void (^ _Nullable)(AWSDynamoDBUpdateItemOutput * _Nullable response, NSError * _Nullable error))completionHandler; +/** +

The command to update the Kinesis stream destination.

+ + @param request A container for the necessary parameters to execute the UpdateKinesisStreamingDestination service method. + + @return An instance of `AWSTask`. On successful execution, `task.result` will contain an instance of `AWSDynamoDBUpdateKinesisStreamingDestinationOutput`. On failed execution, `task.error` may contain an `NSError` with `AWSDynamoDBErrorDomain` domain and the following error code: `AWSDynamoDBErrorInternalServer`, `AWSDynamoDBErrorLimitExceeded`, `AWSDynamoDBErrorResourceInUse`, `AWSDynamoDBErrorResourceNotFound`. + + @see AWSDynamoDBUpdateKinesisStreamingDestinationInput + @see AWSDynamoDBUpdateKinesisStreamingDestinationOutput + */ +- (AWSTask *)updateKinesisStreamingDestination:(AWSDynamoDBUpdateKinesisStreamingDestinationInput *)request; + +/** +

The command to update the Kinesis stream destination.

+ + @param request A container for the necessary parameters to execute the UpdateKinesisStreamingDestination service method. + @param completionHandler The completion handler to call when the load request is complete. + `response` - A response object, or `nil` if the request failed. + `error` - An error object that indicates why the request failed, or `nil` if the request was successful. On failed execution, `error` may contain an `NSError` with `AWSDynamoDBErrorDomain` domain and the following error code: `AWSDynamoDBErrorInternalServer`, `AWSDynamoDBErrorLimitExceeded`, `AWSDynamoDBErrorResourceInUse`, `AWSDynamoDBErrorResourceNotFound`. + + @see AWSDynamoDBUpdateKinesisStreamingDestinationInput + @see AWSDynamoDBUpdateKinesisStreamingDestinationOutput + */ +- (void)updateKinesisStreamingDestination:(AWSDynamoDBUpdateKinesisStreamingDestinationInput *)request completionHandler:(void (^ _Nullable)(AWSDynamoDBUpdateKinesisStreamingDestinationOutput * _Nullable response, NSError * _Nullable error))completionHandler; + /**

Modifies the provisioned throughput settings, global secondary indexes, or DynamoDB Streams settings for a given table.

This operation only applies to Version 2019.11.21 (Current) of global tables.

You can only perform one of the following operations at once:

  • Modify the provisioned throughput settings of the table.

  • Remove a global secondary index from the table.

  • Create a new global secondary index on the table. After the index begins backfilling, you can use UpdateTable to perform other operations.

UpdateTable is an asynchronous operation; while it is executing, the table status changes from ACTIVE to UPDATING. While it is UPDATING, you cannot issue another UpdateTable request. When the table returns to the ACTIVE state, the UpdateTable operation is complete.

diff --git a/AWSDynamoDB/AWSDynamoDBService.m b/AWSDynamoDB/AWSDynamoDBService.m index 5d0577aeb89..ccd76070aa0 100644 --- a/AWSDynamoDB/AWSDynamoDBService.m +++ b/AWSDynamoDB/AWSDynamoDBService.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -1446,6 +1446,29 @@ - (void)updateItem:(AWSDynamoDBUpdateItemInput *)request }]; } +- (AWSTask *)updateKinesisStreamingDestination:(AWSDynamoDBUpdateKinesisStreamingDestinationInput *)request { + return [self invokeRequest:request + HTTPMethod:AWSHTTPMethodPOST + URLString:@"" + targetPrefix:@"DynamoDB_20120810" + operationName:@"UpdateKinesisStreamingDestination" + outputClass:[AWSDynamoDBUpdateKinesisStreamingDestinationOutput class]]; +} + +- (void)updateKinesisStreamingDestination:(AWSDynamoDBUpdateKinesisStreamingDestinationInput *)request + completionHandler:(void (^)(AWSDynamoDBUpdateKinesisStreamingDestinationOutput *response, NSError *error))completionHandler { + [[self updateKinesisStreamingDestination:request] continueWithBlock:^id _Nullable(AWSTask * _Nonnull task) { + AWSDynamoDBUpdateKinesisStreamingDestinationOutput *result = task.result; + NSError *error = task.error; + + if (completionHandler) { + completionHandler(result, error); + } + + return nil; + }]; +} + - (AWSTask *)updateTable:(AWSDynamoDBUpdateTableInput *)request { return [self invokeRequest:request HTTPMethod:AWSHTTPMethodPOST diff --git a/AWSDynamoDBUnitTests/AWSDynamoDBNSSecureCodingTests.m b/AWSDynamoDBUnitTests/AWSDynamoDBNSSecureCodingTests.m index a0d8428a929..f38d9eb7bec 100644 --- a/AWSDynamoDBUnitTests/AWSDynamoDBNSSecureCodingTests.m +++ b/AWSDynamoDBUnitTests/AWSDynamoDBNSSecureCodingTests.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -96,6 +96,7 @@ - (void) test_AWSDynamoDBDescribeTableReplicaAutoScalingInput API_AVAILABLE(ios( - (void) test_AWSDynamoDBDescribeTableReplicaAutoScalingOutput API_AVAILABLE(ios(11)); - (void) test_AWSDynamoDBDescribeTimeToLiveInput API_AVAILABLE(ios(11)); - (void) test_AWSDynamoDBDescribeTimeToLiveOutput API_AVAILABLE(ios(11)); +- (void) test_AWSDynamoDBEnableKinesisStreamingConfiguration API_AVAILABLE(ios(11)); - (void) test_AWSDynamoDBEndpoint API_AVAILABLE(ios(11)); - (void) test_AWSDynamoDBExecuteStatementInput API_AVAILABLE(ios(11)); - (void) test_AWSDynamoDBExecuteStatementOutput API_AVAILABLE(ios(11)); @@ -215,6 +216,9 @@ - (void) test_AWSDynamoDBUpdateGlobalTableSettingsInput API_AVAILABLE(ios(11)); - (void) test_AWSDynamoDBUpdateGlobalTableSettingsOutput API_AVAILABLE(ios(11)); - (void) test_AWSDynamoDBUpdateItemInput API_AVAILABLE(ios(11)); - (void) test_AWSDynamoDBUpdateItemOutput API_AVAILABLE(ios(11)); +- (void) test_AWSDynamoDBUpdateKinesisStreamingConfiguration API_AVAILABLE(ios(11)); +- (void) test_AWSDynamoDBUpdateKinesisStreamingDestinationInput API_AVAILABLE(ios(11)); +- (void) test_AWSDynamoDBUpdateKinesisStreamingDestinationOutput API_AVAILABLE(ios(11)); - (void) test_AWSDynamoDBUpdateReplicationGroupMemberAction API_AVAILABLE(ios(11)); - (void) test_AWSDynamoDBUpdateTableInput API_AVAILABLE(ios(11)); - (void) test_AWSDynamoDBUpdateTableOutput API_AVAILABLE(ios(11)); @@ -536,6 +540,10 @@ - (void) test_AWSDynamoDBDescribeTimeToLiveOutput { [self validateSecureCodingForClass:[AWSDynamoDBDescribeTimeToLiveOutput class]]; } +- (void) test_AWSDynamoDBEnableKinesisStreamingConfiguration { + [self validateSecureCodingForClass:[AWSDynamoDBEnableKinesisStreamingConfiguration class]]; +} + - (void) test_AWSDynamoDBEndpoint { [self validateSecureCodingForClass:[AWSDynamoDBEndpoint class]]; } @@ -1012,6 +1020,18 @@ - (void) test_AWSDynamoDBUpdateItemOutput { [self validateSecureCodingForClass:[AWSDynamoDBUpdateItemOutput class]]; } +- (void) test_AWSDynamoDBUpdateKinesisStreamingConfiguration { + [self validateSecureCodingForClass:[AWSDynamoDBUpdateKinesisStreamingConfiguration class]]; +} + +- (void) test_AWSDynamoDBUpdateKinesisStreamingDestinationInput { + [self validateSecureCodingForClass:[AWSDynamoDBUpdateKinesisStreamingDestinationInput class]]; +} + +- (void) test_AWSDynamoDBUpdateKinesisStreamingDestinationOutput { + [self validateSecureCodingForClass:[AWSDynamoDBUpdateKinesisStreamingDestinationOutput class]]; +} + - (void) test_AWSDynamoDBUpdateReplicationGroupMemberAction { [self validateSecureCodingForClass:[AWSDynamoDBUpdateReplicationGroupMemberAction class]]; } diff --git a/AWSDynamoDBUnitTests/AWSGeneralDynamoDBTests.m b/AWSDynamoDBUnitTests/AWSGeneralDynamoDBTests.m index e516ee73915..bb65d0efa5f 100644 --- a/AWSDynamoDBUnitTests/AWSGeneralDynamoDBTests.m +++ b/AWSDynamoDBUnitTests/AWSGeneralDynamoDBTests.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -2455,6 +2455,54 @@ - (void)testUpdateItemCompletionHandler { [AWSDynamoDB removeDynamoDBForKey:key]; } +- (void)testUpdateKinesisStreamingDestination { + NSString *key = @"testUpdateKinesisStreamingDestination"; + AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:nil]; + [AWSDynamoDB registerDynamoDBWithConfiguration:configuration forKey:key]; + + AWSDynamoDB *awsClient = [AWSDynamoDB DynamoDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); + [awsClient setValue:mockNetworking forKey:@"networking"]; + [[[[AWSDynamoDB DynamoDBForKey:key] updateKinesisStreamingDestination:[AWSDynamoDBUpdateKinesisStreamingDestinationInput new]] continueWithBlock:^id(AWSTask *task) { + XCTAssertNotNil(task.error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", task.error.domain); + XCTAssertEqual(8848, task.error.code); + XCTAssertNil(task.result); + return nil; + }] waitUntilFinished]; + + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + + [AWSDynamoDB removeDynamoDBForKey:key]; +} + +- (void)testUpdateKinesisStreamingDestinationCompletionHandler { + NSString *key = @"testUpdateKinesisStreamingDestination"; + AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:nil]; + [AWSDynamoDB registerDynamoDBWithConfiguration:configuration forKey:key]; + + AWSDynamoDB *awsClient = [AWSDynamoDB DynamoDBForKey:key]; + XCTAssertNotNil(awsClient); + XCTAssertNotNil(mockNetworking); + [awsClient setValue:mockNetworking forKey:@"networking"]; + + dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); + + [[AWSDynamoDB DynamoDBForKey:key] updateKinesisStreamingDestination:[AWSDynamoDBUpdateKinesisStreamingDestinationInput new] completionHandler:^(AWSDynamoDBUpdateKinesisStreamingDestinationOutput* _Nullable response, NSError * _Nullable error) { + XCTAssertNotNil(error); + XCTAssertEqualObjects(@"OCMockExpectedNetworkingError", error.domain); + XCTAssertEqual(8848, error.code); + XCTAssertNil(response); + dispatch_semaphore_signal(semaphore); + }]; + + dispatch_semaphore_wait(semaphore, dispatch_time(DISPATCH_TIME_NOW, (int)(2.0 * NSEC_PER_SEC))); + OCMVerify([mockNetworking sendRequest:[OCMArg isNotNil]]); + + [AWSDynamoDB removeDynamoDBForKey:key]; +} + - (void)testUpdateTable { NSString *key = @"testUpdateTable"; AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:nil]; From c5b3b17adcb30d24212c8e252c9a833801113788 Mon Sep 17 00:00:00 2001 From: AWS Mobile SDK Bot <46607340+awsmobilesdk@users.noreply.github.com> Date: Mon, 29 Jan 2024 12:33:03 -0800 Subject: [PATCH 06/11] chore(changelog): Update models to latest [ci-skip] (#5162) Co-authored-by: Di Wu --- CHANGELOG.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a9cb1e9cff4..f62a693b4a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,19 +1,19 @@ --- -MOVE THIS SECTION TO THE CORRECT LOCATION - -### Misc. Updates - -- Model updates for the following services ----AWSLocation ----AWSConnectParticipant ----AWSConnect # AWS Mobile SDK for iOS CHANGELOG ## Unreleased -Features for next release +### Misc. Updates + +- Model updates for the following services + - AWSDynamoDB + - AWSLocation + - AWSConnectParticipant + - AWSConnect + ## 2.33.8 ### Misc. Updates From 1235c39246290d8781b8d0f26a8d501f7ea5ebc7 Mon Sep 17 00:00:00 2001 From: AWS Mobile SDK Bot <46607340+awsmobilesdk@users.noreply.github.com> Date: Mon, 29 Jan 2024 13:08:12 -0800 Subject: [PATCH 07/11] feat(AWSEC2): update models to latest (#5163) --- AWSEC2/AWSEC2.h | 2 +- AWSEC2/AWSEC2Model.h | 110 ++++++---- AWSEC2/AWSEC2Model.m | 226 +++++++++++++++++++- AWSEC2/AWSEC2Resources.h | 2 +- AWSEC2/AWSEC2Resources.m | 120 ++++++----- AWSEC2/AWSEC2Service.h | 18 +- AWSEC2/AWSEC2Service.m | 2 +- AWSEC2UnitTests/AWSEC2NSSecureCodingTests.m | 2 +- AWSEC2UnitTests/AWSGeneralEC2Tests.m | 2 +- 9 files changed, 376 insertions(+), 108 deletions(-) diff --git a/AWSEC2/AWSEC2.h b/AWSEC2/AWSEC2.h index f82094e6218..1f68df9447b 100644 --- a/AWSEC2/AWSEC2.h +++ b/AWSEC2/AWSEC2.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSEC2/AWSEC2Model.h b/AWSEC2/AWSEC2Model.h index b1d52cbb296..74a77338514 100644 --- a/AWSEC2/AWSEC2Model.h +++ b/AWSEC2/AWSEC2Model.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -1831,6 +1831,8 @@ typedef NS_ENUM(NSInteger, AWSEC2InstanceType) { AWSEC2InstanceTypeM7I_metal_48xl, AWSEC2InstanceTypeR7I_metal_24xl, AWSEC2InstanceTypeR7I_metal_48xl, + AWSEC2InstanceTypeR7Iz_metal_16xl, + AWSEC2InstanceTypeR7Iz_metal_32xl, }; typedef NS_ENUM(NSInteger, AWSEC2InstanceTypeHypervisor) { @@ -18488,7 +18490,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable dryRun; /** -

The filters.

  • group-name - For Availability Zones, use the Region name. For Local Zones, use the name of the group associated with the Local Zone (for example, us-west-2-lax-1) For Wavelength Zones, use the name of the group associated with the Wavelength Zone (for example, us-east-1-wl1-bos-wlz-1).

  • message - The Zone message.

  • opt-in-status - The opt-in status (opted-in | not-opted-in | opt-in-not-required).

  • parent-zoneID - The ID of the zone that handles some of the Local Zone and Wavelength Zone control plane operations, such as API calls.

  • parent-zoneName - The ID of the zone that handles some of the Local Zone and Wavelength Zone control plane operations, such as API calls.

  • region-name - The name of the Region for the Zone (for example, us-east-1).

  • state - The state of the Availability Zone, the Local Zone, or the Wavelength Zone (available).

  • zone-id - The ID of the Availability Zone (for example, use1-az1), the Local Zone (for example, usw2-lax1-az1), or the Wavelength Zone (for example, us-east-1-wl1-bos-wlz-1).

  • zone-name - The name of the Availability Zone (for example, us-east-1a), the Local Zone (for example, us-west-2-lax-1a), or the Wavelength Zone (for example, us-east-1-wl1-bos-wlz-1).

  • zone-type - The type of zone (availability-zone | local-zone | wavelength-zone).

+

The filters.

  • group-name - For Availability Zones, use the Region name. For Local Zones, use the name of the group associated with the Local Zone (for example, us-west-2-lax-1) For Wavelength Zones, use the name of the group associated with the Wavelength Zone (for example, us-east-1-wl1-bos-wlz-1).

  • message - The Zone message.

  • opt-in-status - The opt-in status (opted-in | not-opted-in | opt-in-not-required).

  • parent-zone-id - The ID of the zone that handles some of the Local Zone and Wavelength Zone control plane operations, such as API calls.

  • parent-zone-name - The ID of the zone that handles some of the Local Zone and Wavelength Zone control plane operations, such as API calls.

  • region-name - The name of the Region for the Zone (for example, us-east-1).

  • state - The state of the Availability Zone, the Local Zone, or the Wavelength Zone (available).

  • zone-id - The ID of the Availability Zone (for example, use1-az1), the Local Zone (for example, usw2-lax1-az1), or the Wavelength Zone (for example, us-east-1-wl1-bos-wlz-1).

  • zone-name - The name of the Availability Zone (for example, us-east-1a), the Local Zone (for example, us-west-2-lax-1a), or the Wavelength Zone (for example, us-east-1-wl1-bos-wlz-1).

  • zone-type - The type of zone (availability-zone | local-zone | wavelength-zone).

*/ @property (nonatomic, strong) NSArray * _Nullable filters; @@ -18672,7 +18674,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSString * _Nullable instanceType; /** -

The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the returned nextToken value. This value can be between 5 and 500. If maxResults is given a larger value than 500, you receive an error.

+

The maximum number of items to return for this request. To get the next page of items, make another request with the token returned in the output. For more information, see Pagination.

*/ @property (nonatomic, strong) NSNumber * _Nullable maxResults; @@ -18728,7 +18730,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSArray * _Nullable filters; /** -

The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the returned nextToken value. This value can be between 5 and 500. If maxResults is given a larger value than 500, you receive an error.

+

The maximum number of items to return for this request. To get the next page of items, make another request with the token returned in the output. For more information, see Pagination.

*/ @property (nonatomic, strong) NSNumber * _Nullable maxResults; @@ -18779,7 +18781,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSArray * _Nullable filters; /** -

The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the returned nextToken value. This value can be between 5 and 500. If maxResults is given a larger value than 500, you receive an error.

+

The maximum number of items to return for this request. To get the next page of items, make another request with the token returned in the output. For more information, see Pagination.

*/ @property (nonatomic, strong) NSNumber * _Nullable maxResults; @@ -23075,7 +23077,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable dryRun; /** -

The filters.

  • association.route-table-association-id - The ID of an association ID for the route table.

  • association.route-table-id - The ID of the route table involved in the association.

  • association.subnet-id - The ID of the subnet involved in the association.

  • association.main - Indicates whether the route table is the main route table for the VPC (true | false). Route tables that do not have an association ID are not returned in the response.

  • owner-id - The ID of the Amazon Web Services account that owns the route table.

  • route-table-id - The ID of the route table.

  • route.destination-cidr-block - The IPv4 CIDR range specified in a route in the table.

  • route.destination-ipv6-cidr-block - The IPv6 CIDR range specified in a route in the route table.

  • route.destination-prefix-list-id - The ID (prefix) of the Amazon Web Service specified in a route in the table.

  • route.egress-only-internet-gateway-id - The ID of an egress-only Internet gateway specified in a route in the route table.

  • route.gateway-id - The ID of a gateway specified in a route in the table.

  • route.instance-id - The ID of an instance specified in a route in the table.

  • route.nat-gateway-id - The ID of a NAT gateway.

  • route.transit-gateway-id - The ID of a transit gateway.

  • route.origin - Describes how the route was created. CreateRouteTable indicates that the route was automatically created when the route table was created; CreateRoute indicates that the route was manually added to the route table; EnableVgwRoutePropagation indicates that the route was propagated by route propagation.

  • route.state - The state of a route in the route table (active | blackhole). The blackhole state indicates that the route's target isn't available (for example, the specified gateway isn't attached to the VPC, the specified NAT instance has been terminated, and so on).

  • route.vpc-peering-connection-id - The ID of a VPC peering connection specified in a route in the table.

  • tag:<key> - The key/value combination of a tag assigned to the resource. Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key Owner and the value TeamA, specify tag:Owner for the filter name and TeamA for the filter value.

  • tag-key - The key of a tag assigned to the resource. Use this filter to find all resources assigned a tag with a specific key, regardless of the tag value.

  • vpc-id - The ID of the VPC for the route table.

+

The filters.

  • association.gateway-id - The ID of the gateway involved in the association.

  • association.route-table-association-id - The ID of an association ID for the route table.

  • association.route-table-id - The ID of the route table involved in the association.

  • association.subnet-id - The ID of the subnet involved in the association.

  • association.main - Indicates whether the route table is the main route table for the VPC (true | false). Route tables that do not have an association ID are not returned in the response.

  • owner-id - The ID of the Amazon Web Services account that owns the route table.

  • route-table-id - The ID of the route table.

  • route.destination-cidr-block - The IPv4 CIDR range specified in a route in the table.

  • route.destination-ipv6-cidr-block - The IPv6 CIDR range specified in a route in the route table.

  • route.destination-prefix-list-id - The ID (prefix) of the Amazon Web Service specified in a route in the table.

  • route.egress-only-internet-gateway-id - The ID of an egress-only Internet gateway specified in a route in the route table.

  • route.gateway-id - The ID of a gateway specified in a route in the table.

  • route.instance-id - The ID of an instance specified in a route in the table.

  • route.nat-gateway-id - The ID of a NAT gateway.

  • route.transit-gateway-id - The ID of a transit gateway.

  • route.origin - Describes how the route was created. CreateRouteTable indicates that the route was automatically created when the route table was created; CreateRoute indicates that the route was manually added to the route table; EnableVgwRoutePropagation indicates that the route was propagated by route propagation.

  • route.state - The state of a route in the route table (active | blackhole). The blackhole state indicates that the route's target isn't available (for example, the specified gateway isn't attached to the VPC, the specified NAT instance has been terminated, and so on).

  • route.vpc-peering-connection-id - The ID of a VPC peering connection specified in a route in the table.

  • tag:<key> - The key/value combination of a tag assigned to the resource. Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key Owner and the value TeamA, specify tag:Owner for the filter name and TeamA for the filter value.

  • tag-key - The key of a tag assigned to the resource. Use this filter to find all resources assigned a tag with a specific key, regardless of the tag value.

  • vpc-id - The ID of the VPC for the route table.

*/ @property (nonatomic, strong) NSArray * _Nullable filters; @@ -27572,6 +27574,11 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @interface AWSEC2EbsInstanceBlockDevice : AWSModel +/** +

The ARN of the Amazon ECS or Fargate task to which the volume is attached.

+ */ +@property (nonatomic, strong) NSString * _Nullable associatedResource; + /**

The time stamp when the attachment initiated.

*/ @@ -27592,6 +27599,11 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { */ @property (nonatomic, strong) NSString * _Nullable volumeId; +/** +

The ID of the Amazon Web Services account that owns the volume.

This parameter is returned only for volumes that are attached to Fargate tasks.

+ */ +@property (nonatomic, strong) NSString * _Nullable volumeOwnerId; + @end /** @@ -27770,7 +27782,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @end /** -

Describes the association between an instance and an Elastic Graphics accelerator.

+

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

Describes the association between an instance and an Elastic Graphics accelerator.

*/ @interface AWSEC2ElasticGpuAssociation : AWSModel @@ -27798,7 +27810,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @end /** -

Describes the status of an Elastic Graphics accelerator.

+

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

Describes the status of an Elastic Graphics accelerator.

*/ @interface AWSEC2ElasticGpuHealth : AWSModel @@ -27811,7 +27823,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @end /** -

A specification for an Elastic Graphics accelerator.

+

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

A specification for an Elastic Graphics accelerator.

Required parameters: [Type] */ @interface AWSEC2ElasticGpuSpecification : AWSModel @@ -27825,20 +27837,20 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @end /** -

Describes an elastic GPU.

+

Deprecated.

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

*/ @interface AWSEC2ElasticGpuSpecificationResponse : AWSModel /** -

The elastic GPU type.

+

Deprecated.

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

*/ @property (nonatomic, strong) NSString * _Nullable types; @end /** -

Describes an Elastic Graphics accelerator.

+

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

Describes an Elastic Graphics accelerator.

*/ @interface AWSEC2ElasticGpus : AWSModel @@ -28032,7 +28044,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { /** -

The target Region or Availability Zone that the metric subscription is enabled for. For example, eu-west-1.

+

The target Region (like us-east-2) or Availability Zone ID (like use2-az2) that the metric subscription is enabled for. If you use Availability Zone IDs, the Source and Destination Availability Zones must be in the same Region.

*/ @property (nonatomic, strong) NSString * _Nullable destination; @@ -28047,7 +28059,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, assign) AWSEC2MetricType metric; /** -

The source Region or Availability Zone that the metric subscription is enabled for. For example, us-east-1.

+

The source Region (like us-east-1) or Availability Zone ID (like use1-az1) that the metric subscription is enabled for. If you use Availability Zone IDs, the Source and Destination Availability Zones must be in the same Region.

*/ @property (nonatomic, strong) NSString * _Nullable source; @@ -28539,7 +28551,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable dryRun; /** -

The mode in which to enable block public access for snapshots for the Region. Specify one of the following values:

  • block-all-sharing - Prevents all public sharing of snapshots in the Region. Users in the account will no longer be able to request new public sharing. Additionally, snapshots that are already publicly shared are treated as private and they are no longer publicly available.

    If you enable block public access for snapshots in block-all-sharing mode, it does not change the permissions for snapshots that are already publicly shared. Instead, it prevents these snapshots from be publicly visible and publicly accessible. Therefore, the attributes for these snapshots still indicate that they are publicly shared, even though they are not publicly available.

  • block-new-sharing - Prevents only new public sharing of snapshots in the Region. Users in the account will no longer be able to request new public sharing. However, snapshots that are already publicly shared, remain publicly available.

+

The mode in which to enable block public access for snapshots for the Region. Specify one of the following values:

  • block-all-sharing - Prevents all public sharing of snapshots in the Region. Users in the account will no longer be able to request new public sharing. Additionally, snapshots that are already publicly shared are treated as private and they are no longer publicly available.

    If you enable block public access for snapshots in block-all-sharing mode, it does not change the permissions for snapshots that are already publicly shared. Instead, it prevents these snapshots from be publicly visible and publicly accessible. Therefore, the attributes for these snapshots still indicate that they are publicly shared, even though they are not publicly available.

  • block-new-sharing - Prevents only new public sharing of snapshots in the Region. Users in the account will no longer be able to request new public sharing. However, snapshots that are already publicly shared, remain publicly available.

unblocked is not a valid value for EnableSnapshotBlockPublicAccess.

*/ @property (nonatomic, assign) AWSEC2SnapshotBlockPublicAccessState state; @@ -30557,7 +30569,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable dryRun; /** -

The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the returned nextToken value. This value can be between 5 and 500. If maxResults is given a larger value than 500, you receive an error.

Valid range: Minimum value of 1. Maximum value of 1000.

+

The maximum number of items to return for this request. To get the next page of items, make another request with the token returned in the output. For more information, see Pagination.

*/ @property (nonatomic, strong) NSNumber * _Nullable maxResults; @@ -30905,7 +30917,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable dryRun; /** -

The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the returned nextToken value. This value can be between 5 and 500. If maxResults is given a larger value than 500, you receive an error.

+

The maximum number of items to return for this request. To get the next page of items, make another request with the token returned in the output. For more information, see Pagination.

*/ @property (nonatomic, strong) NSNumber * _Nullable maxResults; @@ -32003,7 +32015,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable targetCapacity; /** -

The unit for the target capacity.

Default: units (translates to number of instances)

+

The unit for the target capacity.

*/ @property (nonatomic, assign) AWSEC2TargetCapacityUnitType targetCapacityUnitType; @@ -34398,7 +34410,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable ebsOptimized; /** -

The Elastic GPU associated with the instance.

+

Deprecated.

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

*/ @property (nonatomic, strong) NSArray * _Nullable elasticGpuAssociations; @@ -35227,7 +35239,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable httpPutResponseHopLimit; /** -

IMDSv2 uses token-backed sessions. Set the use of HTTP tokens to optional (in other words, set the use of IMDSv2 to optional) or required (in other words, set the use of IMDSv2 to required).

  • optional - When IMDSv2 is optional, you can choose to retrieve instance metadata with or without a session token in your request. If you retrieve the IAM role credentials without a token, the IMDSv1 role credentials are returned. If you retrieve the IAM role credentials using a valid session token, the IMDSv2 role credentials are returned.

  • required - When IMDSv2 is required, you must send a session token with any instance metadata retrieval requests. In this state, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available.

Default: optional

+

Indicates whether IMDSv2 is required.

  • optional - IMDSv2 is optional. You can choose whether to send a session token in your instance metadata retrieval requests. If you retrieve IAM role credentials without a session token, you receive the IMDSv1 role credentials. If you retrieve IAM role credentials using a valid session token, you receive the IMDSv2 role credentials.

  • required - IMDSv2 is required. You must send a session token in your instance metadata retrieval requests. With this option, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available.

Default: If the value of ImdsSupport for the Amazon Machine Image (AMI) for your instance is v2.0, the default is required.

*/ @property (nonatomic, assign) AWSEC2HttpTokensState httpTokens; @@ -35260,7 +35272,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable httpPutResponseHopLimit; /** -

IMDSv2 uses token-backed sessions. Indicates whether the use of HTTP tokens is optional (in other words, indicates whether the use of IMDSv2 is optional) or required (in other words, indicates whether the use of IMDSv2 is required).

  • optional - When IMDSv2 is optional, you can choose to retrieve instance metadata with or without a session token in your request. If you retrieve the IAM role credentials without a token, the IMDSv1 role credentials are returned. If you retrieve the IAM role credentials using a valid session token, the IMDSv2 role credentials are returned.

  • required - When IMDSv2 is required, you must send a session token with any instance metadata retrieval requests. In this state, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available.

Default: optional

+

Indicates whether IMDSv2 is required.

  • optional - IMDSv2 is optional. You can choose whether to send a session token in your instance metadata retrieval requests. If you retrieve IAM role credentials without a session token, you receive the IMDSv1 role credentials. If you retrieve IAM role credentials using a valid session token, you receive the IMDSv2 role credentials.

  • required - IMDSv2 is required. You must send a session token in your instance metadata retrieval requests. With this option, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available.

*/ @property (nonatomic, assign) AWSEC2HttpTokensState httpTokens; @@ -39029,7 +39041,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { /** -

The type of resource to tag.

Valid Values lists all resource types for Amazon EC2 that can be tagged. When you create a launch template, you can specify tags for the following resource types only: instance | volume | elastic-gpu | network-interface | spot-instances-request. If the instance does not include the resource type that you specify, the instance launch fails. For example, not all instance types include an Elastic GPU.

To tag a resource after it has been created, see CreateTags.

+

The type of resource to tag.

Valid Values lists all resource types for Amazon EC2 that can be tagged. When you create a launch template, you can specify tags for the following resource types only: instance | volume | network-interface | spot-instances-request. If the instance does not include the resource type that you specify, the instance launch fails. For example, not all instance types include a volume.

To tag a resource after it has been created, see CreateTags.

*/ @property (nonatomic, assign) AWSEC2ResourceType resourceType; @@ -40606,7 +40618,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, assign) AWSEC2InstanceAttributeName attribute; /** -

Modifies the DeleteOnTermination attribute for volumes that are currently attached. The volume must be owned by the caller. If no value is specified for DeleteOnTermination, the default is true and the volume is deleted when the instance is terminated.

To add instance store volumes to an Amazon EBS-backed instance, you must add them when you launch the instance. For more information, see Update the block device mapping when launching an instance in the Amazon EC2 User Guide.

+

Modifies the DeleteOnTermination attribute for volumes that are currently attached. The volume must be owned by the caller. If no value is specified for DeleteOnTermination, the default is true and the volume is deleted when the instance is terminated. You can't modify the DeleteOnTermination attribute for volumes that are attached to Fargate tasks.

To add instance store volumes to an Amazon EBS-backed instance, you must add them when you launch the instance. For more information, see Update the block device mapping when launching an instance in the Amazon EC2 User Guide.

*/ @property (nonatomic, strong) NSArray * _Nullable blockDeviceMappings; @@ -40919,7 +40931,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable httpPutResponseHopLimit; /** -

IMDSv2 uses token-backed sessions. Set the use of HTTP tokens to optional (in other words, set the use of IMDSv2 to optional) or required (in other words, set the use of IMDSv2 to required).

  • optional - When IMDSv2 is optional, you can choose to retrieve instance metadata with or without a session token in your request. If you retrieve the IAM role credentials without a token, the IMDSv1 role credentials are returned. If you retrieve the IAM role credentials using a valid session token, the IMDSv2 role credentials are returned.

  • required - When IMDSv2 is required, you must send a session token with any instance metadata retrieval requests. In this state, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available.

Default: optional

+

Indicates whether IMDSv2 is required.

  • optional - IMDSv2 is optional. You can choose whether to send a session token in your instance metadata retrieval requests. If you retrieve IAM role credentials without a session token, you receive the IMDSv1 role credentials. If you retrieve IAM role credentials using a valid session token, you receive the IMDSv2 role credentials.

  • required - IMDSv2 is required. You must send a session token in your instance metadata retrieval requests. With this option, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available.

Default: If the value of ImdsSupport for the Amazon Machine Image (AMI) for your instance is v2.0, the default is required.

*/ @property (nonatomic, assign) AWSEC2HttpTokensState httpTokens; @@ -41783,7 +41795,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) AWSEC2AttributeBooleanValue * _Nullable mapCustomerOwnedIpOnLaunch; /** -

Specify true to indicate that network interfaces attached to instances created in the specified subnet should be assigned a public IPv4 address.

+

Specify true to indicate that network interfaces attached to instances created in the specified subnet should be assigned a public IPv4 address.

Starting on February 1, 2024, Amazon Web Services will charge for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the Public IPv4 Address tab on the Amazon VPC pricing page.

*/ @property (nonatomic, strong) AWSEC2AttributeBooleanValue * _Nullable mapPublicIpOnLaunch; @@ -43410,7 +43422,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable rekeyFuzzPercentage; /** -

The margin time, in seconds, before the phase 2 lifetime expires, during which the Amazon Web Services side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for RekeyFuzzPercentage.

Constraints: A value between 60 and half of Phase2LifetimeSeconds.

Default: 540

+

The margin time, in seconds, before the phase 2 lifetime expires, during which the Amazon Web Services side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for RekeyFuzzPercentage.

Constraints: A value between 60 and half of Phase2LifetimeSeconds.

Default: 270

*/ @property (nonatomic, strong) NSNumber * _Nullable rekeyMarginTimeSeconds; @@ -47584,7 +47596,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable ebsOptimized; /** -

An elastic GPU to associate with the instance.

+

Deprecated.

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

*/ @property (nonatomic, strong) NSArray * _Nullable elasticGpuSpecifications; @@ -48690,7 +48702,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable ebsOptimized; /** -

The elastic GPU specification.

+

Deprecated.

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

*/ @property (nonatomic, strong) NSArray * _Nullable elasticGpuSpecifications; @@ -49571,7 +49583,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable ebsOptimized; /** -

An elastic GPU to associate with the instance. An Elastic GPU is a GPU resource that you can attach to your Windows instance to accelerate the graphics performance of your applications. For more information, see Amazon EC2 Elastic GPUs in the Amazon EC2 User Guide.

+

Deprecated.

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

*/ @property (nonatomic, strong) NSArray * _Nullable elasticGpuSpecification; @@ -49716,7 +49728,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSString * _Nullable subnetId; /** -

The tags to apply to the resources that are created during instance launch.

You can specify tags for the following resources only:

  • Instances

  • Volumes

  • Elastic graphics

  • Spot Instance requests

  • Network interfaces

To tag a resource after it has been created, see CreateTags.

+

The tags to apply to the resources that are created during instance launch.

You can specify tags for the following resources only:

  • Instances

  • Volumes

  • Spot Instance requests

  • Network interfaces

To tag a resource after it has been created, see CreateTags.

*/ @property (nonatomic, strong) NSArray * _Nullable tagSpecifications; @@ -50243,7 +50255,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { /** -

Indicates whether to assign a public IPv4 address to instances launched in a VPC. The public IPv4 address can only be assigned to a network interface for eth0, and can only be assigned to a new network interface, not an existing one. You cannot specify more than one network interface in the request. If launching into a default subnet, the default value is true.

+

Indicates whether to assign a public IPv4 address to instances launched in a VPC. The public IPv4 address can only be assigned to a network interface for eth0, and can only be assigned to a new network interface, not an existing one. You cannot specify more than one network interface in the request. If launching into a default subnet, the default value is true.

Starting on February 1, 2024, Amazon Web Services will charge for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the Public IPv4 Address tab on the Amazon VPC pricing page.

*/ @property (nonatomic, strong) NSNumber * _Nullable associatePublicIpAddress; @@ -51746,7 +51758,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable targetCapacity; /** -

The unit for the target capacity. TargetCapacityUnitType can only be specified when InstanceRequirements is specified.

Default: units (translates to number of instances)

+

The unit for the target capacity. You can specify this parameter only when using attribute-based instance type selection.

Default: units (the number of instances)

*/ @property (nonatomic, assign) AWSEC2TargetCapacityUnitType targetCapacityUnitType; @@ -52402,7 +52414,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSString * _Nullable code; /** -

The message for the state change.

  • Server.InsufficientInstanceCapacity: There was insufficient capacity available to satisfy the launch request.

  • Server.InternalError: An internal error caused the instance to terminate during launch.

  • Server.ScheduledStop: The instance was stopped due to a scheduled retirement.

  • Server.SpotInstanceShutdown: The instance was stopped because the number of Spot requests with a maximum price equal to or higher than the Spot price exceeded available capacity or because of an increase in the Spot price.

  • Server.SpotInstanceTermination: The instance was terminated because the number of Spot requests with a maximum price equal to or higher than the Spot price exceeded available capacity or because of an increase in the Spot price.

  • Client.InstanceInitiatedShutdown: The instance was shut down using the shutdown -h command from the instance.

  • Client.InstanceTerminated: The instance was terminated or rebooted during AMI creation.

  • Client.InternalError: A client error caused the instance to terminate during launch.

  • Client.InvalidSnapshot.NotFound: The specified snapshot was not found.

  • Client.UserInitiatedHibernate: Hibernation was initiated on the instance.

  • Client.UserInitiatedShutdown: The instance was shut down using the Amazon EC2 API.

  • Client.VolumeLimitExceeded: The limit on the number of EBS volumes or total storage was exceeded. Decrease usage or request an increase in your account limits.

+

The message for the state change.

  • Server.InsufficientInstanceCapacity: There was insufficient capacity available to satisfy the launch request.

  • Server.InternalError: An internal error caused the instance to terminate during launch.

  • Server.ScheduledStop: The instance was stopped due to a scheduled retirement.

  • Server.SpotInstanceShutdown: The instance was stopped because the number of Spot requests with a maximum price equal to or higher than the Spot price exceeded available capacity or because of an increase in the Spot price.

  • Server.SpotInstanceTermination: The instance was terminated because the number of Spot requests with a maximum price equal to or higher than the Spot price exceeded available capacity or because of an increase in the Spot price.

  • Client.InstanceInitiatedShutdown: The instance was shut down from the operating system of the instance.

  • Client.InstanceTerminated: The instance was terminated or rebooted during AMI creation.

  • Client.InternalError: A client error caused the instance to terminate during launch.

  • Client.InvalidSnapshot.NotFound: The specified snapshot was not found.

  • Client.UserInitiatedHibernate: Hibernation was initiated on the instance.

  • Client.UserInitiatedShutdown: The instance was shut down using the Amazon EC2 API.

  • Client.VolumeLimitExceeded: The limit on the number of EBS volumes or total storage was exceeded. Decrease usage or request an increase in your account limits.

*/ @property (nonatomic, strong) NSString * _Nullable message; @@ -52590,7 +52602,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable mapCustomerOwnedIpOnLaunch; /** -

Indicates whether instances launched in this subnet receive a public IPv4 address.

+

Indicates whether instances launched in this subnet receive a public IPv4 address.

Starting on February 1, 2024, Amazon Web Services will charge for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the Public IPv4 Address tab on the Amazon VPC pricing page.

*/ @property (nonatomic, strong) NSNumber * _Nullable mapPublicIpOnLaunch; @@ -52891,7 +52903,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { /** -

The default TotalTargetCapacity, which is either Spot or On-Demand.

+

The default target capacity type.

*/ @property (nonatomic, assign) AWSEC2DefaultTargetCapacityType defaultTargetCapacityType; @@ -52906,26 +52918,26 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable spotTargetCapacity; /** -

The unit for the target capacity. TargetCapacityUnitType can only be specified when InstanceRequirements is specified.

Default: units (translates to number of instances)

+

The unit for the target capacity.

*/ @property (nonatomic, assign) AWSEC2TargetCapacityUnitType targetCapacityUnitType; /** -

The number of units to request, filled using DefaultTargetCapacityType.

+

The number of units to request, filled the default target capacity type.

*/ @property (nonatomic, strong) NSNumber * _Nullable totalTargetCapacity; @end /** -

The number of units to request. You can choose to set the target capacity as the number of instances. Or you can set the target capacity to a performance characteristic that is important to your application workload, such as vCPUs, memory, or I/O. If the request type is maintain, you can specify a target capacity of 0 and add capacity later.

You can use the On-Demand Instance MaxTotalPrice parameter, the Spot Instance MaxTotalPrice parameter, or both parameters to ensure that your fleet cost does not exceed your budget. If you set a maximum price per hour for the On-Demand Instances and Spot Instances in your request, EC2 Fleet will launch instances until it reaches the maximum amount that you're willing to pay. When the maximum amount you're willing to pay is reached, the fleet stops launching instances even if it hasn’t met the target capacity. The MaxTotalPrice parameters are located in OnDemandOptionsRequest and SpotOptionsRequest.

+

The number of units to request. You can choose to set the target capacity as the number of instances. Or you can set the target capacity to a performance characteristic that is important to your application workload, such as vCPUs, memory, or I/O. If the request type is maintain, you can specify a target capacity of 0 and add capacity later.

You can use the On-Demand Instance MaxTotalPrice parameter, the Spot Instance MaxTotalPrice parameter, or both parameters to ensure that your fleet cost does not exceed your budget. If you set a maximum price per hour for the On-Demand Instances and Spot Instances in your request, EC2 Fleet will launch instances until it reaches the maximum amount that you're willing to pay. When the maximum amount you're willing to pay is reached, the fleet stops launching instances even if it hasn't met the target capacity. The MaxTotalPrice parameters are located in OnDemandOptionsRequest and SpotOptionsRequest.

Required parameters: [TotalTargetCapacity] */ @interface AWSEC2TargetCapacitySpecificationRequest : AWSModel /** -

The default TotalTargetCapacity, which is either Spot or On-Demand.

+

The default target capacity type.

*/ @property (nonatomic, assign) AWSEC2DefaultTargetCapacityType defaultTargetCapacityType; @@ -52940,12 +52952,12 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable spotTargetCapacity; /** -

The unit for the target capacity. TargetCapacityUnitType can only be specified when InstanceRequirements is specified.

Default: units (translates to number of instances)

+

The unit for the target capacity. You can specify this parameter only when using attributed-based instance type selection.

Default: units (the number of instances)

*/ @property (nonatomic, assign) AWSEC2TargetCapacityUnitType targetCapacityUnitType; /** -

The number of units to request, filled using DefaultTargetCapacityType.

+

The number of units to request, filled using the default target capacity type.

*/ @property (nonatomic, strong) NSNumber * _Nullable totalTargetCapacity; @@ -56389,6 +56401,11 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @interface AWSEC2VolumeAttachment : AWSModel +/** +

The ARN of the Amazon ECS or Fargate task to which the volume is attached.

+ */ +@property (nonatomic, strong) NSString * _Nullable associatedResource; + /**

The time stamp when the attachment initiated.

*/ @@ -56400,15 +56417,20 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable deleteOnTermination; /** -

The device name.

+

The device name.

If the volume is attached to a Fargate task, this parameter returns null.

*/ @property (nonatomic, strong) NSString * _Nullable device; /** -

The ID of the instance.

+

The ID of the instance.

If the volume is attached to a Fargate task, this parameter returns null.

*/ @property (nonatomic, strong) NSString * _Nullable instanceId; +/** +

The service principal of Amazon Web Services service that owns the underlying instance to which the volume is attached.

This parameter is returned only for volumes that are attached to Fargate tasks.

+ */ +@property (nonatomic, strong) NSString * _Nullable instanceOwningService; + /**

The attachment state of the volume.

*/ @@ -57548,7 +57570,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSNumber * _Nullable rekeyFuzzPercentage; /** -

The margin time, in seconds, before the phase 2 lifetime expires, during which the Amazon Web Services side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for RekeyFuzzPercentage.

Constraints: A value between 60 and half of Phase2LifetimeSeconds.

Default: 540

+

The margin time, in seconds, before the phase 2 lifetime expires, during which the Amazon Web Services side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for RekeyFuzzPercentage.

Constraints: A value between 60 and half of Phase2LifetimeSeconds.

Default: 270

*/ @property (nonatomic, strong) NSNumber * _Nullable rekeyMarginTimeSeconds; diff --git a/AWSEC2/AWSEC2Model.m b/AWSEC2/AWSEC2Model.m index 6bc27391d77..04b8aad2165 100644 --- a/AWSEC2/AWSEC2Model.m +++ b/AWSEC2/AWSEC2Model.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -9049,6 +9049,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -10614,6 +10620,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -21599,6 +21609,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -23164,6 +23180,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -28322,6 +28342,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -29887,6 +29913,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -34456,10 +34486,12 @@ + (BOOL)supportsSecureCoding { + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ + @"associatedResource" : @"AssociatedResource", @"attachTime" : @"AttachTime", @"deleteOnTermination" : @"DeleteOnTermination", @"status" : @"Status", @"volumeId" : @"VolumeId", + @"volumeOwnerId" : @"VolumeOwnerId", }; } @@ -39144,6 +39176,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -40709,6 +40747,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -43342,6 +43384,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -44907,6 +44955,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -47288,6 +47340,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -48853,6 +48911,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -55233,6 +55295,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -56798,6 +56866,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -59764,6 +59836,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -61329,6 +61407,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -66048,6 +66130,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -67613,6 +67701,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -70060,6 +70152,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -71625,6 +71723,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -76079,6 +76181,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -77644,6 +77752,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -81114,6 +81226,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -82679,6 +82797,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -95299,6 +95421,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -96864,6 +96992,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -99432,6 +99564,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -100997,6 +101135,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -103507,6 +103649,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -105072,6 +105220,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -107570,6 +107722,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -109135,6 +109293,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -111675,6 +111837,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -113240,6 +113408,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -115851,6 +116023,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -117416,6 +117594,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -120400,6 +120582,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -121965,6 +122153,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -125112,6 +125304,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -126677,6 +126875,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -130698,6 +130900,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -132263,6 +132471,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -136022,6 +136234,12 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { if ([value caseInsensitiveCompare:@"r7i.metal-48xl"] == NSOrderedSame) { return @(AWSEC2InstanceTypeR7I_metal_48xl); } + if ([value caseInsensitiveCompare:@"r7iz.metal-16xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_16xl); + } + if ([value caseInsensitiveCompare:@"r7iz.metal-32xl"] == NSOrderedSame) { + return @(AWSEC2InstanceTypeR7Iz_metal_32xl); + } return @(AWSEC2InstanceTypeUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -137587,6 +137805,10 @@ + (NSValueTransformer *)instanceTypeJSONTransformer { return @"r7i.metal-24xl"; case AWSEC2InstanceTypeR7I_metal_48xl: return @"r7i.metal-48xl"; + case AWSEC2InstanceTypeR7Iz_metal_16xl: + return @"r7iz.metal-16xl"; + case AWSEC2InstanceTypeR7Iz_metal_32xl: + return @"r7iz.metal-32xl"; default: return nil; } @@ -144174,10 +144396,12 @@ + (BOOL)supportsSecureCoding { + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ + @"associatedResource" : @"AssociatedResource", @"attachTime" : @"AttachTime", @"deleteOnTermination" : @"DeleteOnTermination", @"device" : @"Device", @"instanceId" : @"InstanceId", + @"instanceOwningService" : @"InstanceOwningService", @"state" : @"State", @"volumeId" : @"VolumeId", }; diff --git a/AWSEC2/AWSEC2Resources.h b/AWSEC2/AWSEC2Resources.h index 468c2c3a896..bdb7b7ba92b 100644 --- a/AWSEC2/AWSEC2Resources.h +++ b/AWSEC2/AWSEC2Resources.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSEC2/AWSEC2Resources.m b/AWSEC2/AWSEC2Resources.m index 849bcd093c2..4021624a42b 100644 --- a/AWSEC2/AWSEC2Resources.m +++ b/AWSEC2/AWSEC2Resources.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -2481,7 +2481,7 @@ - (NSString *)definitionString { },\ \"input\":{\"shape\":\"DescribeElasticGpusRequest\"},\ \"output\":{\"shape\":\"DescribeElasticGpusResult\"},\ - \"documentation\":\"

Describes the Elastic Graphics accelerator associated with your instances. For more information about Elastic Graphics, see Amazon Elastic Graphics.

\"\ + \"documentation\":\"

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

Describes the Elastic Graphics accelerator associated with your instances. For more information about Elastic Graphics, see Amazon Elastic Graphics.

\"\ },\ \"DescribeExportImageTasks\":{\ \"name\":\"DescribeExportImageTasks\",\ @@ -3769,7 +3769,7 @@ - (NSString *)definitionString { },\ \"input\":{\"shape\":\"DetachVolumeRequest\"},\ \"output\":{\"shape\":\"VolumeAttachment\"},\ - \"documentation\":\"

Detaches an EBS volume from an instance. Make sure to unmount any file systems on the device within your operating system before detaching the volume. Failure to do so can result in the volume becoming stuck in the busy state while detaching. If this happens, detachment can be delayed indefinitely until you unmount the volume, force detachment, reboot the instance, or all three. If an EBS volume is the root device of an instance, it can't be detached while the instance is running. To detach the root volume, stop the instance first.

When a volume with an Amazon Web Services Marketplace product code is detached from an instance, the product code is no longer associated with the instance.

For more information, see Detach an Amazon EBS volume in the Amazon Elastic Compute Cloud User Guide.

\"\ + \"documentation\":\"

Detaches an EBS volume from an instance. Make sure to unmount any file systems on the device within your operating system before detaching the volume. Failure to do so can result in the volume becoming stuck in the busy state while detaching. If this happens, detachment can be delayed indefinitely until you unmount the volume, force detachment, reboot the instance, or all three. If an EBS volume is the root device of an instance, it can't be detached while the instance is running. To detach the root volume, stop the instance first.

When a volume with an Amazon Web Services Marketplace product code is detached from an instance, the product code is no longer associated with the instance.

You can't detach or force detach volumes that are attached to Amazon ECS or Fargate tasks. Attempting to do this results in the UnsupportedOperationException exception with the Unable to detach volume attached to ECS tasks error message.

For more information, see Detach an Amazon EBS volume in the Amazon Elastic Compute Cloud User Guide.

\"\ },\ \"DetachVpnGateway\":{\ \"name\":\"DetachVpnGateway\",\ @@ -4523,7 +4523,7 @@ - (NSString *)definitionString { },\ \"input\":{\"shape\":\"GetLaunchTemplateDataRequest\"},\ \"output\":{\"shape\":\"GetLaunchTemplateDataResult\"},\ - \"documentation\":\"

Retrieves the configuration data of the specified instance. You can use this data to create a launch template.

This action calls on other describe actions to get instance information. Depending on your instance configuration, you may need to allow the following actions in your IAM policy: DescribeSpotInstanceRequests, DescribeInstanceCreditSpecifications, DescribeVolumes, DescribeInstanceAttribute, and DescribeElasticGpus. Or, you can allow describe* depending on your instance requirements.

\"\ + \"documentation\":\"

Retrieves the configuration data of the specified instance. You can use this data to create a launch template.

This action calls on other describe actions to get instance information. Depending on your instance configuration, you may need to allow the following actions in your IAM policy: DescribeSpotInstanceRequests, DescribeInstanceCreditSpecifications, DescribeVolumes, and DescribeInstanceAttribute. Or, you can allow describe* depending on your instance requirements.

\"\ },\ \"GetManagedPrefixListAssociations\":{\ \"name\":\"GetManagedPrefixListAssociations\",\ @@ -6024,7 +6024,7 @@ - (NSString *)definitionString { },\ \"input\":{\"shape\":\"StartInstancesRequest\"},\ \"output\":{\"shape\":\"StartInstancesResult\"},\ - \"documentation\":\"

Starts an Amazon EBS-backed instance that you've previously stopped.

Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for instance usage. However, your root partition Amazon EBS volume remains and continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time. Every time you start your instance, Amazon EC2 charges a one-minute minimum for instance usage, and thereafter charges per second for instance usage.

Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM.

Performing this operation on an instance that uses an instance store as its root device returns an error.

If you attempt to start a T3 instance with host tenancy and the unlimted CPU credit option, the request fails. The unlimited CPU credit option is not supported on Dedicated Hosts. Before you start the instance, either change its CPU credit option to standard, or change its tenancy to default or dedicated.

For more information, see Stop and start your instance in the Amazon EC2 User Guide.

\"\ + \"documentation\":\"

Starts an Amazon EBS-backed instance that you've previously stopped.

Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for instance usage. However, your root partition Amazon EBS volume remains and continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time. Every time you start your instance, Amazon EC2 charges a one-minute minimum for instance usage, and thereafter charges per second for instance usage.

Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM.

Performing this operation on an instance that uses an instance store as its root device returns an error.

If you attempt to start a T3 instance with host tenancy and the unlimited CPU credit option, the request fails. The unlimited CPU credit option is not supported on Dedicated Hosts. Before you start the instance, either change its CPU credit option to standard, or change its tenancy to default or dedicated.

For more information, see Stop and start your instance in the Amazon EC2 User Guide.

\"\ },\ \"StartNetworkInsightsAccessScopeAnalysis\":{\ \"name\":\"StartNetworkInsightsAccessScopeAnalysis\",\ @@ -18914,7 +18914,7 @@ - (NSString *)definitionString { \"members\":{\ \"Filters\":{\ \"shape\":\"FilterList\",\ - \"documentation\":\"

The filters.

  • group-name - For Availability Zones, use the Region name. For Local Zones, use the name of the group associated with the Local Zone (for example, us-west-2-lax-1) For Wavelength Zones, use the name of the group associated with the Wavelength Zone (for example, us-east-1-wl1-bos-wlz-1).

  • message - The Zone message.

  • opt-in-status - The opt-in status (opted-in | not-opted-in | opt-in-not-required).

  • parent-zoneID - The ID of the zone that handles some of the Local Zone and Wavelength Zone control plane operations, such as API calls.

  • parent-zoneName - The ID of the zone that handles some of the Local Zone and Wavelength Zone control plane operations, such as API calls.

  • region-name - The name of the Region for the Zone (for example, us-east-1).

  • state - The state of the Availability Zone, the Local Zone, or the Wavelength Zone (available).

  • zone-id - The ID of the Availability Zone (for example, use1-az1), the Local Zone (for example, usw2-lax1-az1), or the Wavelength Zone (for example, us-east-1-wl1-bos-wlz-1).

  • zone-name - The name of the Availability Zone (for example, us-east-1a), the Local Zone (for example, us-west-2-lax-1a), or the Wavelength Zone (for example, us-east-1-wl1-bos-wlz-1).

  • zone-type - The type of zone (availability-zone | local-zone | wavelength-zone).

\",\ + \"documentation\":\"

The filters.

  • group-name - For Availability Zones, use the Region name. For Local Zones, use the name of the group associated with the Local Zone (for example, us-west-2-lax-1) For Wavelength Zones, use the name of the group associated with the Wavelength Zone (for example, us-east-1-wl1-bos-wlz-1).

  • message - The Zone message.

  • opt-in-status - The opt-in status (opted-in | not-opted-in | opt-in-not-required).

  • parent-zone-id - The ID of the zone that handles some of the Local Zone and Wavelength Zone control plane operations, such as API calls.

  • parent-zone-name - The ID of the zone that handles some of the Local Zone and Wavelength Zone control plane operations, such as API calls.

  • region-name - The name of the Region for the Zone (for example, us-east-1).

  • state - The state of the Availability Zone, the Local Zone, or the Wavelength Zone (available).

  • zone-id - The ID of the Availability Zone (for example, use1-az1), the Local Zone (for example, usw2-lax1-az1), or the Wavelength Zone (for example, us-east-1-wl1-bos-wlz-1).

  • zone-name - The name of the Availability Zone (for example, us-east-1a), the Local Zone (for example, us-west-2-lax-1a), or the Wavelength Zone (for example, us-east-1-wl1-bos-wlz-1).

  • zone-type - The type of zone (availability-zone | local-zone | wavelength-zone).

\",\ \"locationName\":\"Filter\"\ },\ \"ZoneNames\":{\ @@ -19096,7 +19096,7 @@ - (NSString *)definitionString { },\ \"MaxResults\":{\ \"shape\":\"DescribeCapacityBlockOfferingsMaxResults\",\ - \"documentation\":\"

The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the returned nextToken value. This value can be between 5 and 500. If maxResults is given a larger value than 500, you receive an error.

\"\ + \"documentation\":\"

The maximum number of items to return for this request. To get the next page of items, make another request with the token returned in the output. For more information, see Pagination.

\"\ }\ }\ },\ @@ -19134,7 +19134,7 @@ - (NSString *)definitionString { },\ \"MaxResults\":{\ \"shape\":\"DescribeCapacityReservationFleetsMaxResults\",\ - \"documentation\":\"

The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the returned nextToken value. This value can be between 5 and 500. If maxResults is given a larger value than 500, you receive an error.

\"\ + \"documentation\":\"

The maximum number of items to return for this request. To get the next page of items, make another request with the token returned in the output. For more information, see Pagination.

\"\ },\ \"Filters\":{\ \"shape\":\"FilterList\",\ @@ -19181,7 +19181,7 @@ - (NSString *)definitionString { },\ \"MaxResults\":{\ \"shape\":\"DescribeCapacityReservationsMaxResults\",\ - \"documentation\":\"

The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the returned nextToken value. This value can be between 5 and 500. If maxResults is given a larger value than 500, you receive an error.

\"\ + \"documentation\":\"

The maximum number of items to return for this request. To get the next page of items, make another request with the token returned in the output. For more information, see Pagination.

\"\ },\ \"Filters\":{\ \"shape\":\"FilterList\",\ @@ -22978,7 +22978,7 @@ - (NSString *)definitionString { \"members\":{\ \"Filters\":{\ \"shape\":\"FilterList\",\ - \"documentation\":\"

The filters.

  • association.route-table-association-id - The ID of an association ID for the route table.

  • association.route-table-id - The ID of the route table involved in the association.

  • association.subnet-id - The ID of the subnet involved in the association.

  • association.main - Indicates whether the route table is the main route table for the VPC (true | false). Route tables that do not have an association ID are not returned in the response.

  • owner-id - The ID of the Amazon Web Services account that owns the route table.

  • route-table-id - The ID of the route table.

  • route.destination-cidr-block - The IPv4 CIDR range specified in a route in the table.

  • route.destination-ipv6-cidr-block - The IPv6 CIDR range specified in a route in the route table.

  • route.destination-prefix-list-id - The ID (prefix) of the Amazon Web Service specified in a route in the table.

  • route.egress-only-internet-gateway-id - The ID of an egress-only Internet gateway specified in a route in the route table.

  • route.gateway-id - The ID of a gateway specified in a route in the table.

  • route.instance-id - The ID of an instance specified in a route in the table.

  • route.nat-gateway-id - The ID of a NAT gateway.

  • route.transit-gateway-id - The ID of a transit gateway.

  • route.origin - Describes how the route was created. CreateRouteTable indicates that the route was automatically created when the route table was created; CreateRoute indicates that the route was manually added to the route table; EnableVgwRoutePropagation indicates that the route was propagated by route propagation.

  • route.state - The state of a route in the route table (active | blackhole). The blackhole state indicates that the route's target isn't available (for example, the specified gateway isn't attached to the VPC, the specified NAT instance has been terminated, and so on).

  • route.vpc-peering-connection-id - The ID of a VPC peering connection specified in a route in the table.

  • tag:<key> - The key/value combination of a tag assigned to the resource. Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key Owner and the value TeamA, specify tag:Owner for the filter name and TeamA for the filter value.

  • tag-key - The key of a tag assigned to the resource. Use this filter to find all resources assigned a tag with a specific key, regardless of the tag value.

  • vpc-id - The ID of the VPC for the route table.

\",\ + \"documentation\":\"

The filters.

  • association.gateway-id - The ID of the gateway involved in the association.

  • association.route-table-association-id - The ID of an association ID for the route table.

  • association.route-table-id - The ID of the route table involved in the association.

  • association.subnet-id - The ID of the subnet involved in the association.

  • association.main - Indicates whether the route table is the main route table for the VPC (true | false). Route tables that do not have an association ID are not returned in the response.

  • owner-id - The ID of the Amazon Web Services account that owns the route table.

  • route-table-id - The ID of the route table.

  • route.destination-cidr-block - The IPv4 CIDR range specified in a route in the table.

  • route.destination-ipv6-cidr-block - The IPv6 CIDR range specified in a route in the route table.

  • route.destination-prefix-list-id - The ID (prefix) of the Amazon Web Service specified in a route in the table.

  • route.egress-only-internet-gateway-id - The ID of an egress-only Internet gateway specified in a route in the route table.

  • route.gateway-id - The ID of a gateway specified in a route in the table.

  • route.instance-id - The ID of an instance specified in a route in the table.

  • route.nat-gateway-id - The ID of a NAT gateway.

  • route.transit-gateway-id - The ID of a transit gateway.

  • route.origin - Describes how the route was created. CreateRouteTable indicates that the route was automatically created when the route table was created; CreateRoute indicates that the route was manually added to the route table; EnableVgwRoutePropagation indicates that the route was propagated by route propagation.

  • route.state - The state of a route in the route table (active | blackhole). The blackhole state indicates that the route's target isn't available (for example, the specified gateway isn't attached to the VPC, the specified NAT instance has been terminated, and so on).

  • route.vpc-peering-connection-id - The ID of a VPC peering connection specified in a route in the table.

  • tag:<key> - The key/value combination of a tag assigned to the resource. Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key Owner and the value TeamA, specify tag:Owner for the filter name and TeamA for the filter value.

  • tag-key - The key of a tag assigned to the resource. Use this filter to find all resources assigned a tag with a specific key, regardless of the tag value.

  • vpc-id - The ID of the VPC for the route table.

\",\ \"locationName\":\"Filter\"\ },\ \"DryRun\":{\ @@ -27083,6 +27083,16 @@ - (NSString *)definitionString { \"shape\":\"String\",\ \"documentation\":\"

The ID of the EBS volume.

\",\ \"locationName\":\"volumeId\"\ + },\ + \"AssociatedResource\":{\ + \"shape\":\"String\",\ + \"documentation\":\"

The ARN of the Amazon ECS or Fargate task to which the volume is attached.

\",\ + \"locationName\":\"associatedResource\"\ + },\ + \"VolumeOwnerId\":{\ + \"shape\":\"String\",\ + \"documentation\":\"

The ID of the Amazon Web Services account that owns the volume.

This parameter is returned only for volumes that are attached to Fargate tasks.

\",\ + \"locationName\":\"volumeOwnerId\"\ }\ },\ \"documentation\":\"

Describes a parameter used to set up an EBS volume in a block device mapping.

\"\ @@ -27327,7 +27337,7 @@ - (NSString *)definitionString { \"locationName\":\"elasticGpuAssociationTime\"\ }\ },\ - \"documentation\":\"

Describes the association between an instance and an Elastic Graphics accelerator.

\"\ + \"documentation\":\"

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

Describes the association between an instance and an Elastic Graphics accelerator.

\"\ },\ \"ElasticGpuAssociationList\":{\ \"type\":\"list\",\ @@ -27345,7 +27355,7 @@ - (NSString *)definitionString { \"locationName\":\"status\"\ }\ },\ - \"documentation\":\"

Describes the status of an Elastic Graphics accelerator.

\"\ + \"documentation\":\"

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

Describes the status of an Elastic Graphics accelerator.

\"\ },\ \"ElasticGpuId\":{\"type\":\"string\"},\ \"ElasticGpuIdSet\":{\ @@ -27371,7 +27381,7 @@ - (NSString *)definitionString { \"documentation\":\"

The type of Elastic Graphics accelerator. For more information about the values to specify for Type, see Elastic Graphics Basics, specifically the Elastic Graphics accelerator column, in the Amazon Elastic Compute Cloud User Guide for Windows Instances.

\"\ }\ },\ - \"documentation\":\"

A specification for an Elastic Graphics accelerator.

\"\ + \"documentation\":\"

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

A specification for an Elastic Graphics accelerator.

\"\ },\ \"ElasticGpuSpecificationList\":{\ \"type\":\"list\",\ @@ -27385,11 +27395,11 @@ - (NSString *)definitionString { \"members\":{\ \"Type\":{\ \"shape\":\"String\",\ - \"documentation\":\"

The elastic GPU type.

\",\ + \"documentation\":\"

Deprecated.

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

\",\ \"locationName\":\"type\"\ }\ },\ - \"documentation\":\"

Describes an elastic GPU.

\"\ + \"documentation\":\"

Deprecated.

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

\"\ },\ \"ElasticGpuSpecificationResponseList\":{\ \"type\":\"list\",\ @@ -27455,7 +27465,7 @@ - (NSString *)definitionString { \"locationName\":\"tagSet\"\ }\ },\ - \"documentation\":\"

Describes an Elastic Graphics accelerator.

\"\ + \"documentation\":\"

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

Describes an Elastic Graphics accelerator.

\"\ },\ \"ElasticInferenceAccelerator\":{\ \"type\":\"structure\",\ @@ -27610,11 +27620,11 @@ - (NSString *)definitionString { \"members\":{\ \"Source\":{\ \"shape\":\"String\",\ - \"documentation\":\"

The source Region or Availability Zone that the metric subscription is enabled for. For example, us-east-1.

\"\ + \"documentation\":\"

The source Region (like us-east-1) or Availability Zone ID (like use1-az1) that the metric subscription is enabled for. If you use Availability Zone IDs, the Source and Destination Availability Zones must be in the same Region.

\"\ },\ \"Destination\":{\ \"shape\":\"String\",\ - \"documentation\":\"

The target Region or Availability Zone that the metric subscription is enabled for. For example, eu-west-1.

\"\ + \"documentation\":\"

The target Region (like us-east-2) or Availability Zone ID (like use2-az2) that the metric subscription is enabled for. If you use Availability Zone IDs, the Source and Destination Availability Zones must be in the same Region.

\"\ },\ \"Metric\":{\ \"shape\":\"MetricType\",\ @@ -28054,7 +28064,7 @@ - (NSString *)definitionString { \"members\":{\ \"State\":{\ \"shape\":\"SnapshotBlockPublicAccessState\",\ - \"documentation\":\"

The mode in which to enable block public access for snapshots for the Region. Specify one of the following values:

  • block-all-sharing - Prevents all public sharing of snapshots in the Region. Users in the account will no longer be able to request new public sharing. Additionally, snapshots that are already publicly shared are treated as private and they are no longer publicly available.

    If you enable block public access for snapshots in block-all-sharing mode, it does not change the permissions for snapshots that are already publicly shared. Instead, it prevents these snapshots from be publicly visible and publicly accessible. Therefore, the attributes for these snapshots still indicate that they are publicly shared, even though they are not publicly available.

  • block-new-sharing - Prevents only new public sharing of snapshots in the Region. Users in the account will no longer be able to request new public sharing. However, snapshots that are already publicly shared, remain publicly available.

\"\ + \"documentation\":\"

The mode in which to enable block public access for snapshots for the Region. Specify one of the following values:

  • block-all-sharing - Prevents all public sharing of snapshots in the Region. Users in the account will no longer be able to request new public sharing. Additionally, snapshots that are already publicly shared are treated as private and they are no longer publicly available.

    If you enable block public access for snapshots in block-all-sharing mode, it does not change the permissions for snapshots that are already publicly shared. Instead, it prevents these snapshots from be publicly visible and publicly accessible. Therefore, the attributes for these snapshots still indicate that they are publicly shared, even though they are not publicly available.

  • block-new-sharing - Prevents only new public sharing of snapshots in the Region. Users in the account will no longer be able to request new public sharing. However, snapshots that are already publicly shared, remain publicly available.

unblocked is not a valid value for EnableSnapshotBlockPublicAccess.

\"\ },\ \"DryRun\":{\ \"shape\":\"Boolean\",\ @@ -30290,7 +30300,7 @@ - (NSString *)definitionString { },\ \"MaxResults\":{\ \"shape\":\"GetCapacityReservationUsageRequestMaxResults\",\ - \"documentation\":\"

The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the returned nextToken value. This value can be between 5 and 500. If maxResults is given a larger value than 500, you receive an error.

Valid range: Minimum value of 1. Maximum value of 1000.

\"\ + \"documentation\":\"

The maximum number of items to return for this request. To get the next page of items, make another request with the token returned in the output. For more information, see Pagination.

\"\ },\ \"DryRun\":{\ \"shape\":\"Boolean\",\ @@ -30585,7 +30595,7 @@ - (NSString *)definitionString { },\ \"MaxResults\":{\ \"shape\":\"GetGroupsForCapacityReservationRequestMaxResults\",\ - \"documentation\":\"

The maximum number of results to return for the request in a single page. The remaining results can be seen by sending another request with the returned nextToken value. This value can be between 5 and 500. If maxResults is given a larger value than 500, you receive an error.

\"\ + \"documentation\":\"

The maximum number of items to return for this request. To get the next page of items, make another request with the token returned in the output. For more information, see Pagination.

\"\ },\ \"DryRun\":{\ \"shape\":\"Boolean\",\ @@ -31502,7 +31512,7 @@ - (NSString *)definitionString { },\ \"TargetCapacityUnitType\":{\ \"shape\":\"TargetCapacityUnitType\",\ - \"documentation\":\"

The unit for the target capacity.

Default: units (translates to number of instances)

\"\ + \"documentation\":\"

The unit for the target capacity.

\"\ },\ \"SingleAvailabilityZone\":{\ \"shape\":\"Boolean\",\ @@ -34125,7 +34135,7 @@ - (NSString *)definitionString { },\ \"ElasticGpuAssociations\":{\ \"shape\":\"ElasticGpuAssociationList\",\ - \"documentation\":\"

The Elastic GPU associated with the instance.

\",\ + \"documentation\":\"

Deprecated.

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

\",\ \"locationName\":\"elasticGpuAssociationSet\"\ },\ \"ElasticInferenceAcceleratorAssociations\":{\ @@ -35031,7 +35041,7 @@ - (NSString *)definitionString { \"members\":{\ \"HttpTokens\":{\ \"shape\":\"HttpTokensState\",\ - \"documentation\":\"

IMDSv2 uses token-backed sessions. Set the use of HTTP tokens to optional (in other words, set the use of IMDSv2 to optional) or required (in other words, set the use of IMDSv2 to required).

  • optional - When IMDSv2 is optional, you can choose to retrieve instance metadata with or without a session token in your request. If you retrieve the IAM role credentials without a token, the IMDSv1 role credentials are returned. If you retrieve the IAM role credentials using a valid session token, the IMDSv2 role credentials are returned.

  • required - When IMDSv2 is required, you must send a session token with any instance metadata retrieval requests. In this state, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available.

Default: optional

\"\ + \"documentation\":\"

Indicates whether IMDSv2 is required.

  • optional - IMDSv2 is optional. You can choose whether to send a session token in your instance metadata retrieval requests. If you retrieve IAM role credentials without a session token, you receive the IMDSv1 role credentials. If you retrieve IAM role credentials using a valid session token, you receive the IMDSv2 role credentials.

  • required - IMDSv2 is required. You must send a session token in your instance metadata retrieval requests. With this option, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available.

Default: If the value of ImdsSupport for the Amazon Machine Image (AMI) for your instance is v2.0, the default is required.

\"\ },\ \"HttpPutResponseHopLimit\":{\ \"shape\":\"Integer\",\ @@ -35062,7 +35072,7 @@ - (NSString *)definitionString { },\ \"HttpTokens\":{\ \"shape\":\"HttpTokensState\",\ - \"documentation\":\"

IMDSv2 uses token-backed sessions. Indicates whether the use of HTTP tokens is optional (in other words, indicates whether the use of IMDSv2 is optional) or required (in other words, indicates whether the use of IMDSv2 is required).

  • optional - When IMDSv2 is optional, you can choose to retrieve instance metadata with or without a session token in your request. If you retrieve the IAM role credentials without a token, the IMDSv1 role credentials are returned. If you retrieve the IAM role credentials using a valid session token, the IMDSv2 role credentials are returned.

  • required - When IMDSv2 is required, you must send a session token with any instance metadata retrieval requests. In this state, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available.

Default: optional

\",\ + \"documentation\":\"

Indicates whether IMDSv2 is required.

  • optional - IMDSv2 is optional. You can choose whether to send a session token in your instance metadata retrieval requests. If you retrieve IAM role credentials without a session token, you receive the IMDSv1 role credentials. If you retrieve IAM role credentials using a valid session token, you receive the IMDSv2 role credentials.

  • required - IMDSv2 is required. You must send a session token in your instance metadata retrieval requests. With this option, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available.

\",\ \"locationName\":\"httpTokens\"\ },\ \"HttpPutResponseHopLimit\":{\ @@ -36806,7 +36816,9 @@ - (NSString *)definitionString { \"m7i.metal-24xl\",\ \"m7i.metal-48xl\",\ \"r7i.metal-24xl\",\ - \"r7i.metal-48xl\"\ + \"r7i.metal-48xl\",\ + \"r7iz.metal-16xl\",\ + \"r7iz.metal-32xl\"\ ]\ },\ \"InstanceTypeHypervisor\":{\ @@ -40267,7 +40279,7 @@ - (NSString *)definitionString { \"members\":{\ \"ResourceType\":{\ \"shape\":\"ResourceType\",\ - \"documentation\":\"

The type of resource to tag.

Valid Values lists all resource types for Amazon EC2 that can be tagged. When you create a launch template, you can specify tags for the following resource types only: instance | volume | elastic-gpu | network-interface | spot-instances-request. If the instance does not include the resource type that you specify, the instance launch fails. For example, not all instance types include an Elastic GPU.

To tag a resource after it has been created, see CreateTags.

\"\ + \"documentation\":\"

The type of resource to tag.

Valid Values lists all resource types for Amazon EC2 that can be tagged. When you create a launch template, you can specify tags for the following resource types only: instance | volume | network-interface | spot-instances-request. If the instance does not include the resource type that you specify, the instance launch fails. For example, not all instance types include a volume.

To tag a resource after it has been created, see CreateTags.

\"\ },\ \"Tags\":{\ \"shape\":\"TagList\",\ @@ -41971,7 +41983,7 @@ - (NSString *)definitionString { },\ \"BlockDeviceMappings\":{\ \"shape\":\"InstanceBlockDeviceMappingSpecificationList\",\ - \"documentation\":\"

Modifies the DeleteOnTermination attribute for volumes that are currently attached. The volume must be owned by the caller. If no value is specified for DeleteOnTermination, the default is true and the volume is deleted when the instance is terminated.

To add instance store volumes to an Amazon EBS-backed instance, you must add them when you launch the instance. For more information, see Update the block device mapping when launching an instance in the Amazon EC2 User Guide.

\",\ + \"documentation\":\"

Modifies the DeleteOnTermination attribute for volumes that are currently attached. The volume must be owned by the caller. If no value is specified for DeleteOnTermination, the default is true and the volume is deleted when the instance is terminated. You can't modify the DeleteOnTermination attribute for volumes that are attached to Fargate tasks.

To add instance store volumes to an Amazon EBS-backed instance, you must add them when you launch the instance. For more information, see Update the block device mapping when launching an instance in the Amazon EC2 User Guide.

\",\ \"locationName\":\"blockDeviceMapping\"\ },\ \"DisableApiTermination\":{\ @@ -42226,7 +42238,7 @@ - (NSString *)definitionString { },\ \"HttpTokens\":{\ \"shape\":\"HttpTokensState\",\ - \"documentation\":\"

IMDSv2 uses token-backed sessions. Set the use of HTTP tokens to optional (in other words, set the use of IMDSv2 to optional) or required (in other words, set the use of IMDSv2 to required).

  • optional - When IMDSv2 is optional, you can choose to retrieve instance metadata with or without a session token in your request. If you retrieve the IAM role credentials without a token, the IMDSv1 role credentials are returned. If you retrieve the IAM role credentials using a valid session token, the IMDSv2 role credentials are returned.

  • required - When IMDSv2 is required, you must send a session token with any instance metadata retrieval requests. In this state, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available.

Default: optional

\"\ + \"documentation\":\"

Indicates whether IMDSv2 is required.

  • optional - IMDSv2 is optional. You can choose whether to send a session token in your instance metadata retrieval requests. If you retrieve IAM role credentials without a session token, you receive the IMDSv1 role credentials. If you retrieve IAM role credentials using a valid session token, you receive the IMDSv2 role credentials.

  • required - IMDSv2 is required. You must send a session token in your instance metadata retrieval requests. With this option, retrieving the IAM role credentials always returns IMDSv2 credentials; IMDSv1 credentials are not available.

Default: If the value of ImdsSupport for the Amazon Machine Image (AMI) for your instance is v2.0, the default is required.

\"\ },\ \"HttpPutResponseHopLimit\":{\ \"shape\":\"Integer\",\ @@ -42934,7 +42946,7 @@ - (NSString *)definitionString { },\ \"MapPublicIpOnLaunch\":{\ \"shape\":\"AttributeBooleanValue\",\ - \"documentation\":\"

Specify true to indicate that network interfaces attached to instances created in the specified subnet should be assigned a public IPv4 address.

\"\ + \"documentation\":\"

Specify true to indicate that network interfaces attached to instances created in the specified subnet should be assigned a public IPv4 address.

Starting on February 1, 2024, Amazon Web Services will charge for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the Public IPv4 Address tab on the Amazon VPC pricing page.

\"\ },\ \"SubnetId\":{\ \"shape\":\"SubnetId\",\ @@ -44259,7 +44271,7 @@ - (NSString *)definitionString { },\ \"RekeyMarginTimeSeconds\":{\ \"shape\":\"Integer\",\ - \"documentation\":\"

The margin time, in seconds, before the phase 2 lifetime expires, during which the Amazon Web Services side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for RekeyFuzzPercentage.

Constraints: A value between 60 and half of Phase2LifetimeSeconds.

Default: 540

\"\ + \"documentation\":\"

The margin time, in seconds, before the phase 2 lifetime expires, during which the Amazon Web Services side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for RekeyFuzzPercentage.

Constraints: A value between 60 and half of Phase2LifetimeSeconds.

Default: 270

\"\ },\ \"RekeyFuzzPercentage\":{\ \"shape\":\"Integer\",\ @@ -49113,7 +49125,7 @@ - (NSString *)definitionString { },\ \"ElasticGpuSpecifications\":{\ \"shape\":\"ElasticGpuSpecificationList\",\ - \"documentation\":\"

An elastic GPU to associate with the instance.

\",\ + \"documentation\":\"

Deprecated.

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

\",\ \"locationName\":\"ElasticGpuSpecification\"\ },\ \"ElasticInferenceAccelerators\":{\ @@ -50393,7 +50405,7 @@ - (NSString *)definitionString { },\ \"ElasticGpuSpecifications\":{\ \"shape\":\"ElasticGpuSpecificationResponseList\",\ - \"documentation\":\"

The elastic GPU specification.

\",\ + \"documentation\":\"

Deprecated.

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

\",\ \"locationName\":\"elasticGpuSpecificationSet\"\ },\ \"ElasticInferenceAccelerators\":{\ @@ -51339,7 +51351,7 @@ - (NSString *)definitionString { },\ \"ElasticGpuSpecification\":{\ \"shape\":\"ElasticGpuSpecifications\",\ - \"documentation\":\"

An elastic GPU to associate with the instance. An Elastic GPU is a GPU resource that you can attach to your Windows instance to accelerate the graphics performance of your applications. For more information, see Amazon EC2 Elastic GPUs in the Amazon EC2 User Guide.

\"\ + \"documentation\":\"

Deprecated.

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

\"\ },\ \"ElasticInferenceAccelerators\":{\ \"shape\":\"ElasticInferenceAccelerators\",\ @@ -51348,7 +51360,7 @@ - (NSString *)definitionString { },\ \"TagSpecifications\":{\ \"shape\":\"TagSpecificationList\",\ - \"documentation\":\"

The tags to apply to the resources that are created during instance launch.

You can specify tags for the following resources only:

  • Instances

  • Volumes

  • Elastic graphics

  • Spot Instance requests

  • Network interfaces

To tag a resource after it has been created, see CreateTags.

\",\ + \"documentation\":\"

The tags to apply to the resources that are created during instance launch.

You can specify tags for the following resources only:

  • Instances

  • Volumes

  • Spot Instance requests

  • Network interfaces

To tag a resource after it has been created, see CreateTags.

\",\ \"locationName\":\"TagSpecification\"\ },\ \"LaunchTemplate\":{\ @@ -51923,7 +51935,7 @@ - (NSString *)definitionString { \"members\":{\ \"AssociatePublicIpAddress\":{\ \"shape\":\"Boolean\",\ - \"documentation\":\"

Indicates whether to assign a public IPv4 address to instances launched in a VPC. The public IPv4 address can only be assigned to a network interface for eth0, and can only be assigned to a new network interface, not an existing one. You cannot specify more than one network interface in the request. If launching into a default subnet, the default value is true.

\"\ + \"documentation\":\"

Indicates whether to assign a public IPv4 address to instances launched in a VPC. The public IPv4 address can only be assigned to a network interface for eth0, and can only be assigned to a new network interface, not an existing one. You cannot specify more than one network interface in the request. If launching into a default subnet, the default value is true.

Starting on February 1, 2024, Amazon Web Services will charge for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the Public IPv4 Address tab on the Amazon VPC pricing page.

\"\ },\ \"DeleteOnTermination\":{\ \"shape\":\"Boolean\",\ @@ -53580,7 +53592,7 @@ - (NSString *)definitionString { },\ \"TargetCapacityUnitType\":{\ \"shape\":\"TargetCapacityUnitType\",\ - \"documentation\":\"

The unit for the target capacity. TargetCapacityUnitType can only be specified when InstanceRequirements is specified.

Default: units (translates to number of instances)

\",\ + \"documentation\":\"

The unit for the target capacity. You can specify this parameter only when using attribute-based instance type selection.

Default: units (the number of instances)

\",\ \"locationName\":\"targetCapacityUnitType\"\ },\ \"TagSpecifications\":{\ @@ -54281,7 +54293,7 @@ - (NSString *)definitionString { },\ \"Message\":{\ \"shape\":\"String\",\ - \"documentation\":\"

The message for the state change.

  • Server.InsufficientInstanceCapacity: There was insufficient capacity available to satisfy the launch request.

  • Server.InternalError: An internal error caused the instance to terminate during launch.

  • Server.ScheduledStop: The instance was stopped due to a scheduled retirement.

  • Server.SpotInstanceShutdown: The instance was stopped because the number of Spot requests with a maximum price equal to or higher than the Spot price exceeded available capacity or because of an increase in the Spot price.

  • Server.SpotInstanceTermination: The instance was terminated because the number of Spot requests with a maximum price equal to or higher than the Spot price exceeded available capacity or because of an increase in the Spot price.

  • Client.InstanceInitiatedShutdown: The instance was shut down using the shutdown -h command from the instance.

  • Client.InstanceTerminated: The instance was terminated or rebooted during AMI creation.

  • Client.InternalError: A client error caused the instance to terminate during launch.

  • Client.InvalidSnapshot.NotFound: The specified snapshot was not found.

  • Client.UserInitiatedHibernate: Hibernation was initiated on the instance.

  • Client.UserInitiatedShutdown: The instance was shut down using the Amazon EC2 API.

  • Client.VolumeLimitExceeded: The limit on the number of EBS volumes or total storage was exceeded. Decrease usage or request an increase in your account limits.

\",\ + \"documentation\":\"

The message for the state change.

  • Server.InsufficientInstanceCapacity: There was insufficient capacity available to satisfy the launch request.

  • Server.InternalError: An internal error caused the instance to terminate during launch.

  • Server.ScheduledStop: The instance was stopped due to a scheduled retirement.

  • Server.SpotInstanceShutdown: The instance was stopped because the number of Spot requests with a maximum price equal to or higher than the Spot price exceeded available capacity or because of an increase in the Spot price.

  • Server.SpotInstanceTermination: The instance was terminated because the number of Spot requests with a maximum price equal to or higher than the Spot price exceeded available capacity or because of an increase in the Spot price.

  • Client.InstanceInitiatedShutdown: The instance was shut down from the operating system of the instance.

  • Client.InstanceTerminated: The instance was terminated or rebooted during AMI creation.

  • Client.InternalError: A client error caused the instance to terminate during launch.

  • Client.InvalidSnapshot.NotFound: The specified snapshot was not found.

  • Client.UserInitiatedHibernate: Hibernation was initiated on the instance.

  • Client.UserInitiatedShutdown: The instance was shut down using the Amazon EC2 API.

  • Client.VolumeLimitExceeded: The limit on the number of EBS volumes or total storage was exceeded. Decrease usage or request an increase in your account limits.

\",\ \"locationName\":\"message\"\ }\ },\ @@ -54481,7 +54493,7 @@ - (NSString *)definitionString { },\ \"MapPublicIpOnLaunch\":{\ \"shape\":\"Boolean\",\ - \"documentation\":\"

Indicates whether instances launched in this subnet receive a public IPv4 address.

\",\ + \"documentation\":\"

Indicates whether instances launched in this subnet receive a public IPv4 address.

Starting on February 1, 2024, Amazon Web Services will charge for all public IPv4 addresses, including public IPv4 addresses associated with running instances and Elastic IP addresses. For more information, see the Public IPv4 Address tab on the Amazon VPC pricing page.

\",\ \"locationName\":\"mapPublicIpOnLaunch\"\ },\ \"MapCustomerOwnedIpOnLaunch\":{\ @@ -54928,7 +54940,7 @@ - (NSString *)definitionString { \"members\":{\ \"TotalTargetCapacity\":{\ \"shape\":\"Integer\",\ - \"documentation\":\"

The number of units to request, filled using DefaultTargetCapacityType.

\",\ + \"documentation\":\"

The number of units to request, filled the default target capacity type.

\",\ \"locationName\":\"totalTargetCapacity\"\ },\ \"OnDemandTargetCapacity\":{\ @@ -54943,12 +54955,12 @@ - (NSString *)definitionString { },\ \"DefaultTargetCapacityType\":{\ \"shape\":\"DefaultTargetCapacityType\",\ - \"documentation\":\"

The default TotalTargetCapacity, which is either Spot or On-Demand.

\",\ + \"documentation\":\"

The default target capacity type.

\",\ \"locationName\":\"defaultTargetCapacityType\"\ },\ \"TargetCapacityUnitType\":{\ \"shape\":\"TargetCapacityUnitType\",\ - \"documentation\":\"

The unit for the target capacity. TargetCapacityUnitType can only be specified when InstanceRequirements is specified.

Default: units (translates to number of instances)

\",\ + \"documentation\":\"

The unit for the target capacity.

\",\ \"locationName\":\"targetCapacityUnitType\"\ }\ },\ @@ -54960,7 +54972,7 @@ - (NSString *)definitionString { \"members\":{\ \"TotalTargetCapacity\":{\ \"shape\":\"Integer\",\ - \"documentation\":\"

The number of units to request, filled using DefaultTargetCapacityType.

\"\ + \"documentation\":\"

The number of units to request, filled using the default target capacity type.

\"\ },\ \"OnDemandTargetCapacity\":{\ \"shape\":\"Integer\",\ @@ -54972,14 +54984,14 @@ - (NSString *)definitionString { },\ \"DefaultTargetCapacityType\":{\ \"shape\":\"DefaultTargetCapacityType\",\ - \"documentation\":\"

The default TotalTargetCapacity, which is either Spot or On-Demand.

\"\ + \"documentation\":\"

The default target capacity type.

\"\ },\ \"TargetCapacityUnitType\":{\ \"shape\":\"TargetCapacityUnitType\",\ - \"documentation\":\"

The unit for the target capacity. TargetCapacityUnitType can only be specified when InstanceRequirements is specified.

Default: units (translates to number of instances)

\"\ + \"documentation\":\"

The unit for the target capacity. You can specify this parameter only when using attributed-based instance type selection.

Default: units (the number of instances)

\"\ }\ },\ - \"documentation\":\"

The number of units to request. You can choose to set the target capacity as the number of instances. Or you can set the target capacity to a performance characteristic that is important to your application workload, such as vCPUs, memory, or I/O. If the request type is maintain, you can specify a target capacity of 0 and add capacity later.

You can use the On-Demand Instance MaxTotalPrice parameter, the Spot Instance MaxTotalPrice parameter, or both parameters to ensure that your fleet cost does not exceed your budget. If you set a maximum price per hour for the On-Demand Instances and Spot Instances in your request, EC2 Fleet will launch instances until it reaches the maximum amount that you're willing to pay. When the maximum amount you're willing to pay is reached, the fleet stops launching instances even if it hasn’t met the target capacity. The MaxTotalPrice parameters are located in OnDemandOptionsRequest and SpotOptionsRequest.

\"\ + \"documentation\":\"

The number of units to request. You can choose to set the target capacity as the number of instances. Or you can set the target capacity to a performance characteristic that is important to your application workload, such as vCPUs, memory, or I/O. If the request type is maintain, you can specify a target capacity of 0 and add capacity later.

You can use the On-Demand Instance MaxTotalPrice parameter, the Spot Instance MaxTotalPrice parameter, or both parameters to ensure that your fleet cost does not exceed your budget. If you set a maximum price per hour for the On-Demand Instances and Spot Instances in your request, EC2 Fleet will launch instances until it reaches the maximum amount that you're willing to pay. When the maximum amount you're willing to pay is reached, the fleet stops launching instances even if it hasn't met the target capacity. The MaxTotalPrice parameters are located in OnDemandOptionsRequest and SpotOptionsRequest.

\"\ },\ \"TargetCapacityUnitType\":{\ \"type\":\"string\",\ @@ -59047,12 +59059,12 @@ - (NSString *)definitionString { },\ \"Device\":{\ \"shape\":\"String\",\ - \"documentation\":\"

The device name.

\",\ + \"documentation\":\"

The device name.

If the volume is attached to a Fargate task, this parameter returns null.

\",\ \"locationName\":\"device\"\ },\ \"InstanceId\":{\ \"shape\":\"String\",\ - \"documentation\":\"

The ID of the instance.

\",\ + \"documentation\":\"

The ID of the instance.

If the volume is attached to a Fargate task, this parameter returns null.

\",\ \"locationName\":\"instanceId\"\ },\ \"State\":{\ @@ -59069,6 +59081,16 @@ - (NSString *)definitionString { \"shape\":\"Boolean\",\ \"documentation\":\"

Indicates whether the EBS volume is deleted on instance termination.

\",\ \"locationName\":\"deleteOnTermination\"\ + },\ + \"AssociatedResource\":{\ + \"shape\":\"String\",\ + \"documentation\":\"

The ARN of the Amazon ECS or Fargate task to which the volume is attached.

\",\ + \"locationName\":\"associatedResource\"\ + },\ + \"InstanceOwningService\":{\ + \"shape\":\"String\",\ + \"documentation\":\"

The service principal of Amazon Web Services service that owns the underlying instance to which the volume is attached.

This parameter is returned only for volumes that are attached to Fargate tasks.

\",\ + \"locationName\":\"instanceOwningService\"\ }\ },\ \"documentation\":\"

Describes volume attachment details.

\"\ @@ -60450,7 +60472,7 @@ - (NSString *)definitionString { },\ \"RekeyMarginTimeSeconds\":{\ \"shape\":\"Integer\",\ - \"documentation\":\"

The margin time, in seconds, before the phase 2 lifetime expires, during which the Amazon Web Services side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for RekeyFuzzPercentage.

Constraints: A value between 60 and half of Phase2LifetimeSeconds.

Default: 540

\"\ + \"documentation\":\"

The margin time, in seconds, before the phase 2 lifetime expires, during which the Amazon Web Services side of the VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for RekeyFuzzPercentage.

Constraints: A value between 60 and half of Phase2LifetimeSeconds.

Default: 270

\"\ },\ \"RekeyFuzzPercentage\":{\ \"shape\":\"Integer\",\ diff --git a/AWSEC2/AWSEC2Service.h b/AWSEC2/AWSEC2Service.h index c54409268c6..0ff85db5024 100644 --- a/AWSEC2/AWSEC2Service.h +++ b/AWSEC2/AWSEC2Service.h @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. @@ -6169,7 +6169,7 @@ FOUNDATION_EXPORT NSString *const AWSEC2SDKVersion; - (void)describeEgressOnlyInternetGateways:(AWSEC2DescribeEgressOnlyInternetGatewaysRequest *)request completionHandler:(void (^ _Nullable)(AWSEC2DescribeEgressOnlyInternetGatewaysResult * _Nullable response, NSError * _Nullable error))completionHandler; /** -

Describes the Elastic Graphics accelerator associated with your instances. For more information about Elastic Graphics, see Amazon Elastic Graphics.

+

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

Describes the Elastic Graphics accelerator associated with your instances. For more information about Elastic Graphics, see Amazon Elastic Graphics.

@param request A container for the necessary parameters to execute the DescribeElasticGpus service method. @@ -6181,7 +6181,7 @@ FOUNDATION_EXPORT NSString *const AWSEC2SDKVersion; - (AWSTask *)describeElasticGpus:(AWSEC2DescribeElasticGpusRequest *)request; /** -

Describes the Elastic Graphics accelerator associated with your instances. For more information about Elastic Graphics, see Amazon Elastic Graphics.

+

Amazon Elastic Graphics reached end of life on January 8, 2024. For workloads that require graphics acceleration, we recommend that you use Amazon EC2 G4ad, G4dn, or G5 instances.

Describes the Elastic Graphics accelerator associated with your instances. For more information about Elastic Graphics, see Amazon Elastic Graphics.

@param request A container for the necessary parameters to execute the DescribeElasticGpus service method. @param completionHandler The completion handler to call when the load request is complete. @@ -9388,7 +9388,7 @@ FOUNDATION_EXPORT NSString *const AWSEC2SDKVersion; - (void)detachVerifiedAccessTrustProvider:(AWSEC2DetachVerifiedAccessTrustProviderRequest *)request completionHandler:(void (^ _Nullable)(AWSEC2DetachVerifiedAccessTrustProviderResult * _Nullable response, NSError * _Nullable error))completionHandler; /** -

Detaches an EBS volume from an instance. Make sure to unmount any file systems on the device within your operating system before detaching the volume. Failure to do so can result in the volume becoming stuck in the busy state while detaching. If this happens, detachment can be delayed indefinitely until you unmount the volume, force detachment, reboot the instance, or all three. If an EBS volume is the root device of an instance, it can't be detached while the instance is running. To detach the root volume, stop the instance first.

When a volume with an Amazon Web Services Marketplace product code is detached from an instance, the product code is no longer associated with the instance.

For more information, see Detach an Amazon EBS volume in the Amazon Elastic Compute Cloud User Guide.

+

Detaches an EBS volume from an instance. Make sure to unmount any file systems on the device within your operating system before detaching the volume. Failure to do so can result in the volume becoming stuck in the busy state while detaching. If this happens, detachment can be delayed indefinitely until you unmount the volume, force detachment, reboot the instance, or all three. If an EBS volume is the root device of an instance, it can't be detached while the instance is running. To detach the root volume, stop the instance first.

When a volume with an Amazon Web Services Marketplace product code is detached from an instance, the product code is no longer associated with the instance.

You can't detach or force detach volumes that are attached to Amazon ECS or Fargate tasks. Attempting to do this results in the UnsupportedOperationException exception with the Unable to detach volume attached to ECS tasks error message.

For more information, see Detach an Amazon EBS volume in the Amazon Elastic Compute Cloud User Guide.

@param request A container for the necessary parameters to execute the DetachVolume service method. @@ -9400,7 +9400,7 @@ FOUNDATION_EXPORT NSString *const AWSEC2SDKVersion; - (AWSTask *)detachVolume:(AWSEC2DetachVolumeRequest *)request; /** -

Detaches an EBS volume from an instance. Make sure to unmount any file systems on the device within your operating system before detaching the volume. Failure to do so can result in the volume becoming stuck in the busy state while detaching. If this happens, detachment can be delayed indefinitely until you unmount the volume, force detachment, reboot the instance, or all three. If an EBS volume is the root device of an instance, it can't be detached while the instance is running. To detach the root volume, stop the instance first.

When a volume with an Amazon Web Services Marketplace product code is detached from an instance, the product code is no longer associated with the instance.

For more information, see Detach an Amazon EBS volume in the Amazon Elastic Compute Cloud User Guide.

+

Detaches an EBS volume from an instance. Make sure to unmount any file systems on the device within your operating system before detaching the volume. Failure to do so can result in the volume becoming stuck in the busy state while detaching. If this happens, detachment can be delayed indefinitely until you unmount the volume, force detachment, reboot the instance, or all three. If an EBS volume is the root device of an instance, it can't be detached while the instance is running. To detach the root volume, stop the instance first.

When a volume with an Amazon Web Services Marketplace product code is detached from an instance, the product code is no longer associated with the instance.

You can't detach or force detach volumes that are attached to Amazon ECS or Fargate tasks. Attempting to do this results in the UnsupportedOperationException exception with the Unable to detach volume attached to ECS tasks error message.

For more information, see Detach an Amazon EBS volume in the Amazon Elastic Compute Cloud User Guide.

@param request A container for the necessary parameters to execute the DetachVolume service method. @param completionHandler The completion handler to call when the load request is complete. @@ -11270,7 +11270,7 @@ FOUNDATION_EXPORT NSString *const AWSEC2SDKVersion; - (void)getIpamResourceCidrs:(AWSEC2GetIpamResourceCidrsRequest *)request completionHandler:(void (^ _Nullable)(AWSEC2GetIpamResourceCidrsResult * _Nullable response, NSError * _Nullable error))completionHandler; /** -

Retrieves the configuration data of the specified instance. You can use this data to create a launch template.

This action calls on other describe actions to get instance information. Depending on your instance configuration, you may need to allow the following actions in your IAM policy: DescribeSpotInstanceRequests, DescribeInstanceCreditSpecifications, DescribeVolumes, DescribeInstanceAttribute, and DescribeElasticGpus. Or, you can allow describe* depending on your instance requirements.

+

Retrieves the configuration data of the specified instance. You can use this data to create a launch template.

This action calls on other describe actions to get instance information. Depending on your instance configuration, you may need to allow the following actions in your IAM policy: DescribeSpotInstanceRequests, DescribeInstanceCreditSpecifications, DescribeVolumes, and DescribeInstanceAttribute. Or, you can allow describe* depending on your instance requirements.

@param request A container for the necessary parameters to execute the GetLaunchTemplateData service method. @@ -11282,7 +11282,7 @@ FOUNDATION_EXPORT NSString *const AWSEC2SDKVersion; - (AWSTask *)getLaunchTemplateData:(AWSEC2GetLaunchTemplateDataRequest *)request; /** -

Retrieves the configuration data of the specified instance. You can use this data to create a launch template.

This action calls on other describe actions to get instance information. Depending on your instance configuration, you may need to allow the following actions in your IAM policy: DescribeSpotInstanceRequests, DescribeInstanceCreditSpecifications, DescribeVolumes, DescribeInstanceAttribute, and DescribeElasticGpus. Or, you can allow describe* depending on your instance requirements.

+

Retrieves the configuration data of the specified instance. You can use this data to create a launch template.

This action calls on other describe actions to get instance information. Depending on your instance configuration, you may need to allow the following actions in your IAM policy: DescribeSpotInstanceRequests, DescribeInstanceCreditSpecifications, DescribeVolumes, and DescribeInstanceAttribute. Or, you can allow describe* depending on your instance requirements.

@param request A container for the necessary parameters to execute the GetLaunchTemplateData service method. @param completionHandler The completion handler to call when the load request is complete. @@ -15013,7 +15013,7 @@ FOUNDATION_EXPORT NSString *const AWSEC2SDKVersion; - (void)sendDiagnosticInterrupt:(AWSEC2SendDiagnosticInterruptRequest *)request completionHandler:(void (^ _Nullable)(NSError * _Nullable error))completionHandler; /** -

Starts an Amazon EBS-backed instance that you've previously stopped.

Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for instance usage. However, your root partition Amazon EBS volume remains and continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time. Every time you start your instance, Amazon EC2 charges a one-minute minimum for instance usage, and thereafter charges per second for instance usage.

Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM.

Performing this operation on an instance that uses an instance store as its root device returns an error.

If you attempt to start a T3 instance with host tenancy and the unlimted CPU credit option, the request fails. The unlimited CPU credit option is not supported on Dedicated Hosts. Before you start the instance, either change its CPU credit option to standard, or change its tenancy to default or dedicated.

For more information, see Stop and start your instance in the Amazon EC2 User Guide.

+

Starts an Amazon EBS-backed instance that you've previously stopped.

Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for instance usage. However, your root partition Amazon EBS volume remains and continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time. Every time you start your instance, Amazon EC2 charges a one-minute minimum for instance usage, and thereafter charges per second for instance usage.

Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM.

Performing this operation on an instance that uses an instance store as its root device returns an error.

If you attempt to start a T3 instance with host tenancy and the unlimited CPU credit option, the request fails. The unlimited CPU credit option is not supported on Dedicated Hosts. Before you start the instance, either change its CPU credit option to standard, or change its tenancy to default or dedicated.

For more information, see Stop and start your instance in the Amazon EC2 User Guide.

@param request A container for the necessary parameters to execute the StartInstances service method. @@ -15025,7 +15025,7 @@ FOUNDATION_EXPORT NSString *const AWSEC2SDKVersion; - (AWSTask *)startInstances:(AWSEC2StartInstancesRequest *)request; /** -

Starts an Amazon EBS-backed instance that you've previously stopped.

Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for instance usage. However, your root partition Amazon EBS volume remains and continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time. Every time you start your instance, Amazon EC2 charges a one-minute minimum for instance usage, and thereafter charges per second for instance usage.

Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM.

Performing this operation on an instance that uses an instance store as its root device returns an error.

If you attempt to start a T3 instance with host tenancy and the unlimted CPU credit option, the request fails. The unlimited CPU credit option is not supported on Dedicated Hosts. Before you start the instance, either change its CPU credit option to standard, or change its tenancy to default or dedicated.

For more information, see Stop and start your instance in the Amazon EC2 User Guide.

+

Starts an Amazon EBS-backed instance that you've previously stopped.

Instances that use Amazon EBS volumes as their root devices can be quickly stopped and started. When an instance is stopped, the compute resources are released and you are not billed for instance usage. However, your root partition Amazon EBS volume remains and continues to persist your data, and you are charged for Amazon EBS volume usage. You can restart your instance at any time. Every time you start your instance, Amazon EC2 charges a one-minute minimum for instance usage, and thereafter charges per second for instance usage.

Before stopping an instance, make sure it is in a state from which it can be restarted. Stopping an instance does not preserve data stored in RAM.

Performing this operation on an instance that uses an instance store as its root device returns an error.

If you attempt to start a T3 instance with host tenancy and the unlimited CPU credit option, the request fails. The unlimited CPU credit option is not supported on Dedicated Hosts. Before you start the instance, either change its CPU credit option to standard, or change its tenancy to default or dedicated.

For more information, see Stop and start your instance in the Amazon EC2 User Guide.

@param request A container for the necessary parameters to execute the StartInstances service method. @param completionHandler The completion handler to call when the load request is complete. diff --git a/AWSEC2/AWSEC2Service.m b/AWSEC2/AWSEC2Service.m index 09c996b3349..96b2c2bc967 100644 --- a/AWSEC2/AWSEC2Service.m +++ b/AWSEC2/AWSEC2Service.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSEC2UnitTests/AWSEC2NSSecureCodingTests.m b/AWSEC2UnitTests/AWSEC2NSSecureCodingTests.m index 3d05b56248c..005c2bbdb6f 100644 --- a/AWSEC2UnitTests/AWSEC2NSSecureCodingTests.m +++ b/AWSEC2UnitTests/AWSEC2NSSecureCodingTests.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. diff --git a/AWSEC2UnitTests/AWSGeneralEC2Tests.m b/AWSEC2UnitTests/AWSGeneralEC2Tests.m index 8cac0169ce1..c6c293c0e36 100644 --- a/AWSEC2UnitTests/AWSGeneralEC2Tests.m +++ b/AWSEC2UnitTests/AWSGeneralEC2Tests.m @@ -1,5 +1,5 @@ // -// Copyright 2010-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). // You may not use this file except in compliance with the License. From c8680242c704f73fea830927d3b039f8f3b7e62a Mon Sep 17 00:00:00 2001 From: AWS Mobile SDK Bot <46607340+awsmobilesdk@users.noreply.github.com> Date: Mon, 29 Jan 2024 13:09:09 -0800 Subject: [PATCH 08/11] chore(changelog): Update models to latest [ci-skip] (#5164) Co-authored-by: Di Wu --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f62a693b4a2..793d3e9c547 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ - AWSLocation - AWSConnectParticipant - AWSConnect + - AWSEC2 ## 2.33.8 From 3dd9eb25f47adb25b9482e702c9341db1fee9021 Mon Sep 17 00:00:00 2001 From: AWS Mobile SDK Bot <46607340+awsmobilesdk@users.noreply.github.com> Date: Tue, 30 Jan 2024 08:31:13 -0800 Subject: [PATCH 09/11] feat(AWSEC2): update models to latest (#5166) --- AWSEC2/AWSEC2Model.h | 26 ++++++++++++++++++++++++-- AWSEC2/AWSEC2Model.m | 14 ++++++++++++++ AWSEC2/AWSEC2Resources.m | 30 ++++++++++++++++++++++++++---- 3 files changed, 64 insertions(+), 6 deletions(-) diff --git a/AWSEC2/AWSEC2Model.h b/AWSEC2/AWSEC2Model.h index 74a77338514..a8203e757bc 100644 --- a/AWSEC2/AWSEC2Model.h +++ b/AWSEC2/AWSEC2Model.h @@ -235,6 +235,7 @@ typedef NS_ENUM(NSInteger, AWSEC2AvailabilityZoneState) { AWSEC2AvailabilityZoneStateInformation, AWSEC2AvailabilityZoneStateImpaired, AWSEC2AvailabilityZoneStateUnavailable, + AWSEC2AvailabilityZoneStateConstrained, }; typedef NS_ENUM(NSInteger, AWSEC2BareMetal) { @@ -2853,6 +2854,7 @@ typedef NS_ENUM(NSInteger, AWSEC2SubnetState) { AWSEC2SubnetStateUnknown, AWSEC2SubnetStatePending, AWSEC2SubnetStateAvailable, + AWSEC2SubnetStateUnavailable, }; typedef NS_ENUM(NSInteger, AWSEC2SummaryStatus) { @@ -11258,7 +11260,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { /** -

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see How to ensure idempotency.

+

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see Ensuring idempotency.

*/ @property (nonatomic, strong) NSString * _Nullable clientToken; @@ -12502,7 +12504,7 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @property (nonatomic, strong) NSString * _Nullable allocationId; /** -

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see How to ensure idempotency.

Constraint: Maximum 64 ASCII characters.

+

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see Ensuring idempotency.

Constraint: Maximum 64 ASCII characters.

*/ @property (nonatomic, strong) NSString * _Nullable clientToken; @@ -12630,6 +12632,11 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @interface AWSEC2CreateNetworkAclRequest : AWSRequest +/** +

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see Ensuring idempotency.

+ */ +@property (nonatomic, strong) NSString * _Nullable clientToken; + /**

Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

*/ @@ -12653,6 +12660,11 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @interface AWSEC2CreateNetworkAclResult : AWSModel +/** +

Unique, case-sensitive identifier to ensure the idempotency of the request. Only returned if a client token was provided in the request.

+ */ +@property (nonatomic, strong) NSString * _Nullable clientToken; + /**

Information about the network ACL.

*/ @@ -13283,6 +13295,11 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @interface AWSEC2CreateRouteTableRequest : AWSRequest +/** +

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see Ensuring idempotency.

+ */ +@property (nonatomic, strong) NSString * _Nullable clientToken; + /**

Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is DryRunOperation. Otherwise, it is UnauthorizedOperation.

*/ @@ -13306,6 +13323,11 @@ typedef NS_ENUM(NSInteger, AWSEC2scope) { @interface AWSEC2CreateRouteTableResult : AWSModel +/** +

Unique, case-sensitive identifier to ensure the idempotency of the request. Only returned if a client token was provided in the request.

+ */ +@property (nonatomic, strong) NSString * _Nullable clientToken; + /**

Information about the route table.

*/ diff --git a/AWSEC2/AWSEC2Model.m b/AWSEC2/AWSEC2Model.m index 04b8aad2165..7f4f90b8cef 100644 --- a/AWSEC2/AWSEC2Model.m +++ b/AWSEC2/AWSEC2Model.m @@ -2650,6 +2650,9 @@ + (NSValueTransformer *)stateJSONTransformer { if ([value caseInsensitiveCompare:@"unavailable"] == NSOrderedSame) { return @(AWSEC2AvailabilityZoneStateUnavailable); } + if ([value caseInsensitiveCompare:@"constrained"] == NSOrderedSame) { + return @(AWSEC2AvailabilityZoneStateConstrained); + } return @(AWSEC2AvailabilityZoneStateUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -2661,6 +2664,8 @@ + (NSValueTransformer *)stateJSONTransformer { return @"impaired"; case AWSEC2AvailabilityZoneStateUnavailable: return @"unavailable"; + case AWSEC2AvailabilityZoneStateConstrained: + return @"constrained"; default: return nil; } @@ -12010,6 +12015,7 @@ + (BOOL)supportsSecureCoding { + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ + @"clientToken" : @"ClientToken", @"dryRun" : @"DryRun", @"tagSpecifications" : @"TagSpecifications", @"vpcId" : @"VpcId", @@ -12030,6 +12036,7 @@ + (BOOL)supportsSecureCoding { + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ + @"clientToken" : @"ClientToken", @"networkAcl" : @"NetworkAcl", }; } @@ -12614,6 +12621,7 @@ + (BOOL)supportsSecureCoding { + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ + @"clientToken" : @"ClientToken", @"dryRun" : @"DryRun", @"tagSpecifications" : @"TagSpecifications", @"vpcId" : @"VpcId", @@ -12634,6 +12642,7 @@ + (BOOL)supportsSecureCoding { + (NSDictionary *)JSONKeyPathsByPropertyKey { return @{ + @"clientToken" : @"ClientToken", @"routeTable" : @"RouteTable", }; } @@ -138208,6 +138217,9 @@ + (NSValueTransformer *)stateJSONTransformer { if ([value caseInsensitiveCompare:@"available"] == NSOrderedSame) { return @(AWSEC2SubnetStateAvailable); } + if ([value caseInsensitiveCompare:@"unavailable"] == NSOrderedSame) { + return @(AWSEC2SubnetStateUnavailable); + } return @(AWSEC2SubnetStateUnknown); } reverseBlock:^NSString *(NSNumber *value) { switch ([value integerValue]) { @@ -138215,6 +138227,8 @@ + (NSValueTransformer *)stateJSONTransformer { return @"pending"; case AWSEC2SubnetStateAvailable: return @"available"; + case AWSEC2SubnetStateUnavailable: + return @"unavailable"; default: return nil; } diff --git a/AWSEC2/AWSEC2Resources.m b/AWSEC2/AWSEC2Resources.m index 4021624a42b..4352d084c51 100644 --- a/AWSEC2/AWSEC2Resources.m +++ b/AWSEC2/AWSEC2Resources.m @@ -9303,7 +9303,8 @@ - (NSString *)definitionString { \"available\",\ \"information\",\ \"impaired\",\ - \"unavailable\"\ + \"unavailable\",\ + \"constrained\"\ ]\ },\ \"AvailabilityZoneStringList\":{\ @@ -12653,7 +12654,7 @@ - (NSString *)definitionString { \"members\":{\ \"ClientToken\":{\ \"shape\":\"String\",\ - \"documentation\":\"

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see How to ensure idempotency.

\"\ + \"documentation\":\"

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see Ensuring idempotency.

\"\ },\ \"DryRun\":{\ \"shape\":\"Boolean\",\ @@ -13732,7 +13733,7 @@ - (NSString *)definitionString { },\ \"ClientToken\":{\ \"shape\":\"String\",\ - \"documentation\":\"

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see How to ensure idempotency.

Constraint: Maximum 64 ASCII characters.

\",\ + \"documentation\":\"

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see Ensuring idempotency.

Constraint: Maximum 64 ASCII characters.

\",\ \"idempotencyToken\":true\ },\ \"DryRun\":{\ @@ -13867,6 +13868,11 @@ - (NSString *)definitionString { \"shape\":\"TagSpecificationList\",\ \"documentation\":\"

The tags to assign to the network ACL.

\",\ \"locationName\":\"TagSpecification\"\ + },\ + \"ClientToken\":{\ + \"shape\":\"String\",\ + \"documentation\":\"

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see Ensuring idempotency.

\",\ + \"idempotencyToken\":true\ }\ }\ },\ @@ -13877,6 +13883,11 @@ - (NSString *)definitionString { \"shape\":\"NetworkAcl\",\ \"documentation\":\"

Information about the network ACL.

\",\ \"locationName\":\"networkAcl\"\ + },\ + \"ClientToken\":{\ + \"shape\":\"String\",\ + \"documentation\":\"

Unique, case-sensitive identifier to ensure the idempotency of the request. Only returned if a client token was provided in the request.

\",\ + \"locationName\":\"clientToken\"\ }\ }\ },\ @@ -14442,6 +14453,11 @@ - (NSString *)definitionString { \"shape\":\"TagSpecificationList\",\ \"documentation\":\"

The tags to assign to the route table.

\",\ \"locationName\":\"TagSpecification\"\ + },\ + \"ClientToken\":{\ + \"shape\":\"String\",\ + \"documentation\":\"

Unique, case-sensitive identifier that you provide to ensure the idempotency of the request. For more information, see Ensuring idempotency.

\",\ + \"idempotencyToken\":true\ }\ }\ },\ @@ -14452,6 +14468,11 @@ - (NSString *)definitionString { \"shape\":\"RouteTable\",\ \"documentation\":\"

Information about the route table.

\",\ \"locationName\":\"routeTable\"\ + },\ + \"ClientToken\":{\ + \"shape\":\"String\",\ + \"documentation\":\"

Unique, case-sensitive identifier to ensure the idempotency of the request. Only returned if a client token was provided in the request.

\",\ + \"locationName\":\"clientToken\"\ }\ }\ },\ @@ -54748,7 +54769,8 @@ - (NSString *)definitionString { \"type\":\"string\",\ \"enum\":[\ \"pending\",\ - \"available\"\ + \"available\",\ + \"unavailable\"\ ]\ },\ \"Subscription\":{\ From e209fa39104a27b427635f7dfc575f049ad6b0e4 Mon Sep 17 00:00:00 2001 From: Sebastian Villena <97059974+ruisebas@users.noreply.github.com> Date: Wed, 7 Feb 2024 14:15:32 -0500 Subject: [PATCH 10/11] fix(AWSIoT): Fixing crash in AWSIoTMQTTClient (#5185) --------- Co-authored-by: Di Wu --- AWSIoT/AWSIoTDataManager.m | 5 + AWSIoT/AWSIoTManager.m | 101 ++++--- AWSIoT/Internal/AWSIoTCSR.m | 11 +- AWSIoT/Internal/AWSIoTKeychain.m | 20 +- AWSIoT/Internal/AWSIoTMQTTClient.m | 262 +++++++++--------- AWSIoT/Internal/AWSIoTStreamThread.h | 35 +++ AWSIoT/Internal/AWSIoTStreamThread.m | 144 ++++++++++ AWSIoT/Internal/MQTTSDK/AWSMQTTEncoder.m | 27 +- AWSIoT/Internal/MQTTSDK/AWSMQTTSession.m | 88 +++--- AWSIoT/Internal/SocketRocket/AWSSRWebSocket.m | 10 +- AWSIoTUnitTests/AWSIoTStreamThreadTests.m | 92 ++++++ AWSiOSSDKv2.xcodeproj/project.pbxproj | 12 + CHANGELOG.md | 7 +- 13 files changed, 561 insertions(+), 253 deletions(-) create mode 100644 AWSIoT/Internal/AWSIoTStreamThread.h create mode 100644 AWSIoT/Internal/AWSIoTStreamThread.m create mode 100644 AWSIoTUnitTests/AWSIoTStreamThreadTests.m diff --git a/AWSIoT/AWSIoTDataManager.m b/AWSIoT/AWSIoTDataManager.m index e568faaf079..d76943a636e 100644 --- a/AWSIoT/AWSIoTDataManager.m +++ b/AWSIoT/AWSIoTDataManager.m @@ -67,6 +67,11 @@ - (instancetype)init { return nil; } +- (void)dealloc +{ + [self.timer invalidate]; +} + - (instancetype)initWithName:(NSString *)name debug:(BOOL)enableDebugging versioned:(BOOL)enableVersioning diff --git a/AWSIoT/AWSIoTManager.m b/AWSIoT/AWSIoTManager.m index 57169468cd6..dcbe64c4702 100644 --- a/AWSIoT/AWSIoTManager.m +++ b/AWSIoT/AWSIoTManager.m @@ -206,12 +206,13 @@ - (void)createKeysAndCertificateFromCsr:(NSDictionary *)c SecKeyRef publicKeyRef = [AWSIoTKeychain getPublicKeyRef:publicTag]; SecKeyRef privateKeyRef = [AWSIoTKeychain getPrivateKeyRef:privateTag]; + SecIdentityRef identityRef = [AWSIoTKeychain getIdentityRef:newPrivateTag certificateLabel:newCertTag]; if ([AWSIoTKeychain deleteAsymmetricKeysWithPublicTag:publicTag privateTag:privateTag] && [AWSIoTKeychain addPrivateKeyRef:privateKeyRef tag:newPrivateTag] && [AWSIoTKeychain addPublicKeyRef:publicKeyRef tag:newPublicTag] && [AWSIoTKeychain addCertificateToKeychain:certificatePem tag:newCertTag] && - [AWSIoTKeychain getIdentityRef:newPrivateTag certificateLabel:newCertTag] != nil) { + identityRef != nil) { AWSIoTCreateCertificateResponse* resp = [[AWSIoTCreateCertificateResponse alloc] init]; resp.certificateId = certificateId; resp.certificatePem = certificatePem; @@ -219,6 +220,15 @@ - (void)createKeysAndCertificateFromCsr:(NSDictionary *)c validatedResponse = resp; } + if (identityRef) { + CFRelease(identityRef); + } + if (privateKeyRef) { + CFRelease(privateKeyRef); + } + if (publicKeyRef) { + CFRelease(publicKeyRef); + } } } @@ -229,13 +239,11 @@ - (void)createKeysAndCertificateFromCsr:(NSDictionary *)c } + (BOOL)importIdentityFromPKCS12Data:(NSData *)pkcs12Data passPhrase:(NSString *)passPhrase certificateId:(NSString *)certificateId { - SecKeyRef privateKey = NULL; - SecKeyRef publicKey = NULL; - SecCertificateRef certRef = NULL; - - [AWSIoTManager readPk12:pkcs12Data passPhrase:passPhrase certRef:&certRef privateKeyRef:&privateKey publicKeyRef:&publicKey]; + __block SecKeyRef privateKey = NULL; + __block SecKeyRef publicKey = NULL; + __block SecCertificateRef certRef = NULL; - if (!certRef || !privateKey || !publicKey) { + void (^cleanup)(void) = ^void { if (certRef) { CFRelease(certRef); } @@ -245,6 +253,12 @@ + (BOOL)importIdentityFromPKCS12Data:(NSData *)pkcs12Data passPhrase:(NSString * if (publicKey) { CFRelease(publicKey); } + }; + + [AWSIoTManager readPk12:pkcs12Data passPhrase:passPhrase certRef:&certRef privateKeyRef:&privateKey publicKeyRef:&publicKey]; + + if (!certRef || !privateKey || !publicKey) { + cleanup(); AWSDDLogError(@"Unable to extract PKCS12 data. Ensure the passPhrase is correct."); return NO; } @@ -254,27 +268,26 @@ + (BOOL)importIdentityFromPKCS12Data:(NSData *)pkcs12Data passPhrase:(NSString * NSString *certTag = [AWSIoTManager certTagWithCertificateId:certificateId]; if (![AWSIoTKeychain addPrivateKeyRef:privateKey tag:privateTag]) { - if (publicKey) { - CFRelease(publicKey); - } + cleanup(); AWSDDLogError(@"Unable to add private key"); return NO; } if (![AWSIoTKeychain addPublicKeyRef:publicKey tag:publicTag]) { [AWSIoTKeychain deleteAsymmetricKeysWithPublicTag:publicTag privateTag:privateTag]; - + cleanup(); AWSDDLogError(@"Unable to add public key"); return NO; } if (![AWSIoTKeychain addCertificateRef:certRef tag:certTag]) { [AWSIoTKeychain deleteAsymmetricKeysWithPublicTag:publicTag privateTag:privateTag]; - + cleanup(); AWSDDLogError(@"Unable to add certificate"); return NO; } + cleanup(); return YES; } @@ -283,40 +296,38 @@ + (BOOL)importIdentityFromPKCS12Data:(NSData *)pkcs12Data passPhrase:(NSString * // + (BOOL)readPk12:(NSData *)pk12Data passPhrase:(NSString *)passPhrase certRef:(SecCertificateRef *)certRef privateKeyRef:(SecKeyRef *)privateKeyRef publicKeyRef:(SecKeyRef *)publicKeyRef { - SecPolicyRef policy = NULL; - SecTrustRef trust = NULL; - + __block SecPolicyRef policy = NULL; + __block SecTrustRef trust = NULL; + __block CFArrayRef secImportItems = NULL; + // cleanup stuff in a block so we don't need to do this over and over again. - static BOOL (^cleanup)(void); - static BOOL (^errorCleanup)(void); - static dispatch_once_t once; - dispatch_once(&once, ^{ - cleanup = ^BOOL { - if(policy) { - CFRelease(policy); - } - - if(trust) { - CFRelease(trust); - } - - return YES; - }; - - errorCleanup = ^BOOL { - *privateKeyRef = NULL; - *publicKeyRef = NULL; - *certRef = NULL; - - cleanup(); - - return NO; - }; - }); - + BOOL (^cleanup)(void) = ^BOOL { + if (secImportItems) { + CFRelease(secImportItems); + } + + if (policy) { + CFRelease(policy); + } + + if (trust) { + CFRelease(trust); + } + + return YES; + }; + + BOOL (^errorCleanup)(void) = ^BOOL { + *privateKeyRef = NULL; + *publicKeyRef = NULL; + *certRef = NULL; + + cleanup(); + + return NO; + }; + CFDictionaryRef secImportOptions = (__bridge CFDictionaryRef) @{(__bridge id) kSecImportExportPassphrase : passPhrase}; - CFArrayRef secImportItems = NULL; - OSStatus status = SecPKCS12Import((__bridge CFDataRef) pk12Data, (CFDictionaryRef) secImportOptions, &secImportItems); if (status == errSecSuccess && CFArrayGetCount(secImportItems) > 0) @@ -369,7 +380,7 @@ + (BOOL)readPk12:(NSData *)pk12Data passPhrase:(NSString *)passPhrase certRef:(S AWSDDLogError(@"Unable to copy public key"); return errorCleanup(); } - + return cleanup(); } AWSDDLogError(@"Unable to import from PKCS12 data"); diff --git a/AWSIoT/Internal/AWSIoTCSR.m b/AWSIoT/Internal/AWSIoTCSR.m index d98ebcea3f4..e5ee34582bd 100644 --- a/AWSIoT/Internal/AWSIoTCSR.m +++ b/AWSIoT/Internal/AWSIoTCSR.m @@ -64,9 +64,12 @@ - (NSData*)generateCSRForCertificate:(NSString*)certificateId { NSString *privateTag = [AWSIoTKeychain.privateKeyTag stringByAppendingString:certificateId]; _publicKeyBits = [AWSIoTKeychain getPublicKeyBits:publicTag]; - SecKeyRef privateKeyRef = [AWSIoTKeychain getPrivateKeyRef:privateTag]; + if (!_publicKeyBits) { + return nil; + } - if (!_publicKeyBits || !privateKeyRef) { + SecKeyRef privateKeyRef = [AWSIoTKeychain getPrivateKeyRef:privateTag]; + if (!privateKeyRef) { return nil; } @@ -113,7 +116,9 @@ - (NSData*)generateCSRForCertificate:(NSString*)certificateId { [scr appendData:signdata]; [self addByte:seqTag intoData:scr]; - + + CFRelease(privateKeyRef); + return [scr copy]; } diff --git a/AWSIoT/Internal/AWSIoTKeychain.m b/AWSIoT/Internal/AWSIoTKeychain.m index 9648c7f7e38..e62ffcf3f06 100644 --- a/AWSIoT/Internal/AWSIoTKeychain.m +++ b/AWSIoT/Internal/AWSIoTKeychain.m @@ -137,13 +137,13 @@ + (BOOL)isValidCertificate:(NSString*)privateKeyTag certificateLabel:(NSString*) if (identityRef) { SecCertificateRef cert = NULL; OSStatus status = SecIdentityCopyCertificate(identityRef, &cert); + CFRelease(identityRef); if (status == noErr) { return YES; } else { AWSDDLogError(@"SecIdentityCopyCertificate failed [%d]", (int)status); } } - return NO; } @@ -205,7 +205,10 @@ + (BOOL)addCertificate:(NSData*)cert withTag:(NSString*)tag { AWSDDLogError(@"Error create Sec Certificate from data"); return NO; } - return [AWSIoTKeychain addCertificateRef:certRef tag:tag]; + + BOOL result = [AWSIoTKeychain addCertificateRef:certRef tag:tag]; + CFRelease(certRef); + return result; } + (BOOL)addCertificateRef:(SecCertificateRef)certRef { @@ -305,7 +308,7 @@ + (NSData *)getPublicKeyBits:(NSString*)tag { publicKeyRef = NULL; } - return (__bridge NSData *)publicKeyRef; + return (__bridge_transfer NSData *)publicKeyRef; } + (SecKeyRef)getPrivateKeyRef:(NSString*)tag { @@ -347,7 +350,7 @@ + (NSData *)getPrivateKeyBits:(NSString*)tag { privateKeyBits = NULL; } - return (__bridge NSData *)privateKeyBits; + return (__bridge_transfer NSData *)privateKeyBits; } + (SecIdentityRef)getIdentityRef:(NSString*)privateKeyTag certificateLabel:(NSString *)certificateLabel { @@ -374,8 +377,7 @@ + (SecIdentityRef)getIdentityRef:(NSString*)privateKeyTag certificateLabel:(NSSt + (BOOL)addPublicKeyRef:(SecKeyRef)pubkeyRef tag:(NSString*)tag { OSStatus sanityCheck = noErr; - CFTypeRef persistPeer = NULL; - + NSMutableDictionary * publicKeyAttr = [[NSMutableDictionary alloc] init]; [publicKeyAttr setObject:(id)kSecClassKey forKey:(id)kSecClass]; @@ -386,7 +388,7 @@ + (BOOL)addPublicKeyRef:(SecKeyRef)pubkeyRef tag:(NSString*)tag { [publicKeyAttr setObject:[NSNumber numberWithBool:YES] forKey:(id)kSecReturnPersistentRef]; [publicKeyAttr setObject:(__bridge id)[AWSIoTKeychain accessibilityType] forKey:(id)kSecAttrAccessible]; - sanityCheck = SecItemAdd((CFDictionaryRef) publicKeyAttr, (CFTypeRef *)&persistPeer); + sanityCheck = SecItemAdd((CFDictionaryRef) publicKeyAttr, nil); if ((sanityCheck != noErr) && (sanityCheck != errSecDuplicateItem)){ AWSDDLogError(@"addPublicKeyRef error: %d",(int)sanityCheck); return NO; @@ -422,8 +424,6 @@ + (BOOL)addPublicKey:(NSData*)pubkey tag:(NSString*)tag { + (BOOL)addPrivateKeyRef:(SecKeyRef)privkeyRef tag:(NSString*)tag { OSStatus sanityCheck = noErr; - CFTypeRef persistPeer = NULL; - NSMutableDictionary * privateKeyAttr = [[NSMutableDictionary alloc] init]; [privateKeyAttr setObject:(id)kSecClassKey forKey:(id)kSecClass]; @@ -434,7 +434,7 @@ + (BOOL)addPrivateKeyRef:(SecKeyRef)privkeyRef tag:(NSString*)tag { [privateKeyAttr setObject:[NSNumber numberWithBool:YES] forKey:(id)kSecReturnPersistentRef]; [privateKeyAttr setObject:(__bridge id)[AWSIoTKeychain accessibilityType] forKey:(id)kSecAttrAccessible]; - sanityCheck = SecItemAdd((CFDictionaryRef) privateKeyAttr, (CFTypeRef *)&persistPeer); + sanityCheck = SecItemAdd((CFDictionaryRef) privateKeyAttr, nil); if ((sanityCheck != noErr) && (sanityCheck != errSecDuplicateItem)){ AWSDDLogError(@"addPrivateKeyRef error: %d",(int)sanityCheck); return NO; diff --git a/AWSIoT/Internal/AWSIoTMQTTClient.m b/AWSIoT/Internal/AWSIoTMQTTClient.m index 052eff6f756..ebe1da4decf 100644 --- a/AWSIoT/Internal/AWSIoTMQTTClient.m +++ b/AWSIoT/Internal/AWSIoTMQTTClient.m @@ -24,6 +24,7 @@ #import "AWSIoTMessage+AWSMQTTMessage.h" #import "AWSMQTTMessage.h" #import "AWSIoTManager.h" +#import "AWSIoTStreamThread.h" @implementation AWSIoTMQTTTopicModel @end @@ -31,6 +32,8 @@ @implementation AWSIoTMQTTTopicModel @implementation AWSIoTMQTTQueueMessage @end +typedef void (^StatusCallback)(AWSIoTMQTTStatus status); + @interface AWSIoTMQTTClient() @property(atomic, assign, readwrite) AWSIoTMQTTStatus mqttStatus; @@ -69,17 +72,14 @@ @interface AWSIoTMQTTClient() )delegate { self = [self init]; if (self) { @@ -269,7 +275,7 @@ - (BOOL)connectWithClientId:(NSString*)clientId return NO; }; self.mqttStatus = AWSIoTMQTTStatusConnecting; - self.clientCerts = [[NSArray alloc] initWithObjects:(__bridge id)identityRef, nil]; + self.clientCerts = [[NSArray alloc] initWithObjects:(__bridge_transfer id)identityRef, nil]; self.host = host; self.port = port; self.cleanSession = cleanSession; @@ -299,16 +305,16 @@ - (BOOL) connectWithCert { //Create Session if (self.session == nil ) { - self.session= [[AWSMQTTSession alloc] initWithClientId:self.clientId - userName:self.userMetaData - password:self.password - keepAlive:self.keepAliveInterval - cleanSession:self.cleanSession - willTopic:self.lastWillAndTestamentTopic - willMsg:self.lastWillAndTestamentMessage - willQoS:self.lastWillAndTestamentQoS - willRetainFlag:self.lastWillAndTestamentRetainFlag - publishRetryThrottle:self.publishRetryThrottle]; + self.session = [[AWSMQTTSession alloc] initWithClientId:self.clientId + userName:self.userMetaData + password:self.password + keepAlive:self.keepAliveInterval + cleanSession:self.cleanSession + willTopic:self.lastWillAndTestamentTopic + willMsg:self.lastWillAndTestamentMessage + willQoS:self.lastWillAndTestamentQoS + willRetainFlag:self.lastWillAndTestamentRetainFlag + publishRetryThrottle:self.publishRetryThrottle]; self.session.delegate = self; } @@ -323,17 +329,17 @@ - (BOOL) connectWithCert { //connection established with the server until one of the streams is opened. CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)_host, _port, &readStream, &writeStream); - self.decoderStream = (__bridge_transfer NSInputStream *) readStream; - self.encoderStream = (__bridge_transfer NSOutputStream *) writeStream; - + NSInputStream *inputStream = (__bridge_transfer NSInputStream *) readStream; + NSOutputStream *outputStream = (__bridge_transfer NSOutputStream *) writeStream; + CFDictionaryRef sslSettings; - if (_clientCerts.count) { + if (self.clientCerts.count) { const void *keys[] = { kCFStreamSSLLevel, kCFStreamSSLCertificates }; const void *vals[] = { kCFStreamSocketSecurityLevelNegotiatedSSL, - (__bridge const void *)(_clientCerts) }; - + (__bridge const void *)(self.clientCerts) }; + sslSettings = CFDictionaryCreate(kCFAllocatorDefault, keys, vals, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); @@ -351,14 +357,16 @@ - (BOOL) connectWithCert { } CFReadStreamSetProperty(readStream, kCFStreamPropertySSLSettings, sslSettings); CFWriteStreamSetProperty(writeStream, kCFStreamPropertySSLSettings, sslSettings); - CFRelease(sslSettings); - + if (sslSettings) { + CFRelease(sslSettings); + } + //The "x-amzn-mqtt-ca" protocol is only supported on port 443. if (self.port == 443) { //SSLSetALPNProtocols is only available from iOS 11 onwards. if (@available(iOS 11.0, *)) { //Get the SSL Context - SSLContextRef context = (__bridge SSLContextRef) [_decoderStream propertyForKey: (__bridge NSString *) kCFStreamPropertySSLContext ]; + SSLContextRef context = (__bridge SSLContextRef) [inputStream propertyForKey: (__bridge NSString *) kCFStreamPropertySSLContext ]; //Set ALPN protocol list CFStringRef strs[1]; @@ -366,17 +374,23 @@ - (BOOL) connectWithCert { CFArrayRef protocols = CFArrayCreate(NULL, (void *)strs, 1, &kCFTypeArrayCallBacks); SSLSetALPNProtocols(context, protocols); - CFRelease(protocols); + if (protocols) { + CFRelease(protocols); + } } } - //Create Thread and start with "openStreams" being the entry point. - if (self.streamsThread) { - AWSDDLogVerbose(@"Issued Cancel on thread [%@]", self.streamsThread); - [self.streamsThread cancel]; + //Cancel previous streams thread if necessary + @synchronized(self) { + if (self.streamsThread && !self.streamsThread.isCancelled) { + AWSDDLogVerbose(@"Issued Cancel on thread [%@]", self.streamsThread); + [self.streamsThread cancel]; + } + self.streamsThread = [[AWSIoTStreamThread alloc] initWithSession:self.session + decoderInputStream:inputStream + encoderOutputStream:outputStream]; + [self.streamsThread start]; } - self.streamsThread = [[NSThread alloc] initWithTarget:self selector:@selector(openStreams:) object:self]; - [self.streamsThread start]; return YES; } @@ -496,8 +510,9 @@ - (BOOL) webSocketConnectWithClientId { if (self.presignedURL) { AWSDDLogInfo(@"Using PresignedURL."); + __weak AWSIoTMQTTClient *weakSelf = self; dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){ - [self initWebSocketConnectionForURL:self.presignedURL]; + [weakSelf initWebSocketConnectionForURL:weakSelf.presignedURL]; }); } else if (self.customAuthorizerName != nil) { @@ -609,20 +624,45 @@ - (void)disconnect { //Issuing disconnect multiple times. Turn this function into a noop by returning here. return; } - + //Invalidate the reconnect timer so that there are no reconnect attempts. [self cleanupReconnectTimer]; //Set the userDisconnect flag to true to indicate that the user has initiated the disconnect. self.userDidIssueDisconnect = YES; self.userDidIssueConnect = NO; - + //call disconnect on the session. [self.session disconnect]; - _connectionAgeInSeconds = 0; - - //Set the flag to signal to the runloop that it can terminate - self.runLoopShouldContinue = NO; + self.connectionAgeInSeconds = 0; + + //Cancel the current streams thread + [self.streamsThread cancel]; + + __weak AWSIoTMQTTClient *weakSelf = self; + self.streamsThread.onStop = ^{ + __strong AWSIoTMQTTClient *strongSelf = weakSelf; + //If the userDidIssueDisconnect has been set to NO, it means a new connection has been requested, + //so we should disregard these updates + if (!strongSelf || !strongSelf.userDidIssueDisconnect) { + return; + } + + //Invalidate connection age timer and close socket + if (strongSelf.connectionAgeTimer != nil) { + [strongSelf.connectionAgeTimer invalidate]; + strongSelf.connectionAgeTimer = nil; + } + + if (strongSelf.webSocket) { + [strongSelf.webSocket close]; + strongSelf.webSocket = nil; + } + + //Notify disconnected status. + strongSelf.mqttStatus = AWSIoTMQTTStatusDisconnected; + [strongSelf notifyConnectionStatus]; + }; AWSDDLogInfo(@"AWSIoTMQTTClient: Disconnect message issued."); } @@ -655,13 +695,13 @@ - (void)cleanupReconnectTimer { } } -- (void)cleanUpToDecoderStream { +- (void)cleanUpWebsocketOutputStream { @synchronized(self) { - if (self.toDecoderStream) { - self.toDecoderStream.delegate = nil; - [self.toDecoderStream close]; - [self.toDecoderStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; - self.toDecoderStream = nil; + if (self.websocketOutputStream) { + self.websocketOutputStream.delegate = nil; + [self.websocketOutputStream close]; + [self.websocketOutputStream removeFromRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; + self.websocketOutputStream = nil; } } } @@ -706,13 +746,19 @@ - (void)reconnectToSession { - (void)notifyConnectionStatus { //Set the connection status on the callback. - dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){ - if (self.connectStatusCallback != nil) { - self.connectStatusCallback(self.mqttStatus); + AWSIoTMQTTStatus mqttStatus = self.mqttStatus; + __weak AWSIoTMQTTClient *weakSelf = self; + __weak StatusCallback connectStatusCallback = weakSelf.connectStatusCallback; + __weak id clientDelegate = weakSelf.clientDelegate; + dispatch_barrier_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){ + __strong StatusCallback callback = connectStatusCallback; + if (callback != nil) { + callback(mqttStatus); } - - if (self.clientDelegate != nil) { - [self.clientDelegate connectionStatusChanged:self.mqttStatus client:self]; + + if (clientDelegate != nil) { + [clientDelegate connectionStatusChanged:mqttStatus + client:weakSelf]; } }); } @@ -728,70 +774,12 @@ - (void)initiateReconnectTimer: (id) sender //The unit of measure for the dispatch_time function is nano seconds. dispatch_assert_queue_not(self.timerQueue); + __weak AWSIoTMQTTClient *weakSelf = self; dispatch_async(self.timerQueue, ^{ - [self scheduleReconnection]; + [weakSelf scheduleReconnection]; }); } -- (void)openStreams:(id)sender -{ - //This is invoked in a new thread by the webSocketDidOpen method or by the Connect method. Get the runLoop from the thread. - NSRunLoop *runLoopForStreamsThread = [NSRunLoop currentRunLoop]; - - //Setup a default timer to ensure that the RunLoop always has atleast one timer on it. This is to prevent the while loop - //below to spin in tight loop when all input sources and session timers are shutdown during a reconnect sequence. - NSTimer *defaultRunLoopTimer = [[NSTimer alloc] initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:60.0] - interval:60.0 - target:self - selector:@selector(timerHandler:) - userInfo:nil - repeats:YES]; - [runLoopForStreamsThread addTimer:defaultRunLoopTimer forMode:NSDefaultRunLoopMode]; - - self.runLoopShouldContinue = YES; - [self.toDecoderStream scheduleInRunLoop:runLoopForStreamsThread forMode:NSDefaultRunLoopMode]; - [self.toDecoderStream open]; - - //Update the runLoop and runLoopMode in session. - [self.session connectToInputStream:self.decoderStream outputStream:self.encoderStream]; - - while (self.runLoopShouldContinue && NSThread.currentThread.isCancelled == NO) { - //This will continue run until runLoopShouldContinue is set to NO during "disconnect" or - //"websocketDidFail" - - //Run one cycle of the runloop. This will return after a input source event or timer event is processed - [runLoopForStreamsThread runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:10]]; - } - - // clean up the defaultRunLoopTimer. - [defaultRunLoopTimer invalidate]; - - if (!self.runLoopShouldContinue ) { - if (self.connectionAgeTimer != nil) { - [self.connectionAgeTimer invalidate]; - self.connectionAgeTimer = nil; - } - [self.session close]; - - [self cleanUpToDecoderStream]; - - if (self.webSocket) { - [self.webSocket close]; - self.webSocket = nil; - } - - //Set status - self.mqttStatus = AWSIoTMQTTStatusDisconnected; - - // Let the client know it has been disconnected. - [self notifyConnectionStatus]; - } -} - -- (void)timerHandler:(NSTimer*)theTimer { - AWSDDLogVerbose(@"ThreadID: [%@] Default run loop timer executed: RunLoopShouldContinue is [%d] and Cancelled is [%d]", [NSThread currentThread], self.runLoopShouldContinue, [[NSThread currentThread] isCancelled]); -} - #pragma mark - publish methods - - (void)publishString:(NSString*)str @@ -1172,8 +1160,9 @@ - (void)session:(AWSMQTTSession*)session } if (topicModel.extendedCallback != nil) { AWSDDLogVerbose(@"<<%@>>topicModel.extendedcallback.", [NSThread currentThread]); + __weak AWSIoTMQTTClient *weakSelf = self; dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){ - topicModel.extendedCallback(self, topic, iotMessage.messageData); + topicModel.extendedCallback(weakSelf, topic, iotMessage.messageData); }); } if (topicModel.fullCallback != nil) { @@ -1185,8 +1174,9 @@ - (void)session:(AWSMQTTSession*)session if (self.clientDelegate != nil ) { AWSDDLogVerbose(@"<<%@>>Calling receviedMessageData on client Delegate.", [NSThread currentThread]); + __weak AWSIoTMQTTClient *weakSelf = self; dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){ - [self.clientDelegate receivedMessageData:message.data onTopic:topic]; + [weakSelf.clientDelegate receivedMessageData:message.data onTopic:topic]; }); } @@ -1227,23 +1217,29 @@ - (void)webSocketDidOpen:(AWSSRWebSocket *)webSocket { // since the MQTT client isn't capable of dealing with partial reads. //Create a bound pair of read and write streams. Any data written to the write stream is received by the read stream. - // i.e., whatever is written to the "toDecoderStream" is received by the "decoderStream". + // i.e., whatever is written to the "websocketOutputStream" is received by the "inputStream". CFStreamCreateBoundPair(nil, &decoderReadStream, &decoderWriteStream, 128*1024); // 128KB buffer size - self.decoderStream = (__bridge_transfer NSInputStream *)decoderReadStream; - self.toDecoderStream = (__bridge_transfer NSOutputStream *)decoderWriteStream; - [self.toDecoderStream setDelegate:self]; + NSInputStream *inputStream = (__bridge_transfer NSInputStream *)decoderReadStream; + self.websocketOutputStream = (__bridge_transfer NSOutputStream *)decoderWriteStream; + [self.websocketOutputStream setDelegate:self]; //Create write stream to write to the WebSocket. - self.encoderStream = [AWSIoTWebSocketOutputStreamFactory createAWSIoTWebSocketOutputStreamWithWebSocket:webSocket]; + self.encoderOutputStream = [AWSIoTWebSocketOutputStreamFactory createAWSIoTWebSocketOutputStreamWithWebSocket:webSocket]; - //Create Thread and start with "openStreams" being the entry point. - if (self.streamsThread) { - AWSDDLogVerbose(@"Issued Cancel on thread [%@]", self.streamsThread); - [self.streamsThread cancel]; + //Cancel previous streams thread if necessary + @synchronized(self) { + if (self.streamsThread && !self.streamsThread.isCancelled) { + AWSDDLogVerbose(@"Issued Cancel on thread [%@]", self.streamsThread); + [self.streamsThread cancel]; + } + + self.streamsThread = [[AWSIoTStreamThread alloc] initWithSession:self.session + decoderInputStream:inputStream + encoderOutputStream:self.encoderOutputStream + outputStream:self.websocketOutputStream]; + [self.streamsThread start]; } - - self.streamsThread = [[NSThread alloc] initWithTarget:self selector:@selector(openStreams:) object:self]; - [self.streamsThread start]; + } @@ -1252,9 +1248,9 @@ - (void)webSocket:(AWSSRWebSocket *)webSocket didFailWithError:(NSError *)error // The WebSocket has failed.The input/output streams can be closed here. // Also, the webSocket can be set to nil - [self cleanUpToDecoderStream]; + [self cleanUpWebsocketOutputStream]; - [self.encoderStream close]; + [self.encoderOutputStream close]; [self.webSocket close]; self.webSocket = nil; @@ -1278,7 +1274,7 @@ - (void)webSocket:(AWSSRWebSocket *)webSocket didReceiveMessage:(id)message { AWSDDLogVerbose(@"Websocket didReceiveMessage: Received %lu bytes", (unsigned long)messageData.length); // When a message is received, write it to the Decoder's input stream. - [self.toDecoderStream write:[messageData bytes] maxLength:messageData.length]; + [self.websocketOutputStream write:[messageData bytes] maxLength:messageData.length]; } else { @@ -1290,9 +1286,9 @@ - (void)webSocket:(AWSSRWebSocket *)webSocket didCloseWithCode:(NSInteger)code r AWSDDLogInfo(@"WebSocket closed with code:%ld with reason:%@", (long)code, reason); // The WebSocket has closed. The input/output streams can be closed here. - [self cleanUpToDecoderStream]; + [self cleanUpWebsocketOutputStream]; - [self.encoderStream close]; + [self.encoderOutputStream close]; [self.webSocket close]; self.webSocket = nil; @@ -1326,7 +1322,7 @@ - (void)scheduleReconnection { selector: @selector(reconnectToSession) userInfo:nil repeats:NO]; - [[NSRunLoop currentRunLoop] addTimer:self.reconnectTimer forMode:NSRunLoopCommonModes]; + [[NSRunLoop currentRunLoop] addTimer:self.reconnectTimer forMode:NSDefaultRunLoopMode]; [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; } } diff --git a/AWSIoT/Internal/AWSIoTStreamThread.h b/AWSIoT/Internal/AWSIoTStreamThread.h new file mode 100644 index 00000000000..2f5ae7efd00 --- /dev/null +++ b/AWSIoT/Internal/AWSIoTStreamThread.h @@ -0,0 +1,35 @@ +// +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"). +// You may not use this file except in compliance with the License. +// A copy of the License is located at +// +// http://aws.amazon.com/apache2.0 +// +// or in the "license" file accompanying this file. This file is distributed +// on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either +// express or implied. See the License for the specific language governing +// permissions and limitations under the License. +// + +#import +#import "AWSMQTTSession.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface AWSIoTStreamThread : NSThread + +@property(strong, nullable) void (^onStop)(void); + +-(instancetype)initWithSession:(nonnull AWSMQTTSession *)session + decoderInputStream:(nonnull NSInputStream *)decoderInputStream + encoderOutputStream:(nonnull NSOutputStream *)encoderOutputStream; + +-(instancetype)initWithSession:(nonnull AWSMQTTSession *)session + decoderInputStream:(nonnull NSInputStream *)decoderInputStream + encoderOutputStream:(nonnull NSOutputStream *)decoderOutputStream + outputStream:(nullable NSOutputStream *)outputStream; +@end + +NS_ASSUME_NONNULL_END diff --git a/AWSIoT/Internal/AWSIoTStreamThread.m b/AWSIoT/Internal/AWSIoTStreamThread.m new file mode 100644 index 00000000000..8073409f50d --- /dev/null +++ b/AWSIoT/Internal/AWSIoTStreamThread.m @@ -0,0 +1,144 @@ +// +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"). +// You may not use this file except in compliance with the License. +// A copy of the License is located at +// +// http://aws.amazon.com/apache2.0 +// +// or in the "license" file accompanying this file. This file is distributed +// on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either +// express or implied. See the License for the specific language governing +// permissions and limitations under the License. +// + +#import "AWSIoTStreamThread.h" +#import + +@interface AWSIoTStreamThread() + +@property(nonatomic, strong, nullable) AWSMQTTSession *session; +@property(nonatomic, strong, nullable) NSOutputStream *encoderOutputStream; +@property(nonatomic, strong, nullable) NSInputStream *decoderInputStream; +@property(nonatomic, strong, nullable) NSOutputStream *outputStream; +@property(nonatomic, strong, nullable) NSTimer *defaultRunLoopTimer; +@property(nonatomic, strong, nullable) NSRunLoop *runLoopForStreamsThread; +@property(nonatomic, assign) NSTimeInterval defaultRunLoopTimeInterval; +@property(nonatomic, assign) BOOL isRunning; +@end + +@implementation AWSIoTStreamThread + +- (nonnull instancetype)initWithSession:(nonnull AWSMQTTSession *)session + decoderInputStream:(nonnull NSInputStream *)decoderInputStream + encoderOutputStream:(nonnull NSOutputStream *)encoderOutputStream { + return [self initWithSession:session + decoderInputStream:decoderInputStream + encoderOutputStream:encoderOutputStream + outputStream:nil]; +} + +-(instancetype)initWithSession:(nonnull AWSMQTTSession *)session + decoderInputStream:(nonnull NSInputStream *)decoderInputStream + encoderOutputStream:(nonnull NSOutputStream *)encoderOutputStream + outputStream:(nullable NSOutputStream *)outputStream; { + if (self = [super init]) { + _session = session; + _decoderInputStream = decoderInputStream; + _encoderOutputStream = encoderOutputStream; + _outputStream = outputStream; + _defaultRunLoopTimeInterval = 10; + } + return self; +} + +-(void)dealloc { + [self cleanUp]; +} + +- (void)main { + AWSDDLogVerbose(@"Started execution of Thread: [%@]", self); + //This is invoked in a new thread by the webSocketDidOpen method or by the Connect method. Get the runLoop from the thread. + self.runLoopForStreamsThread = [NSRunLoop currentRunLoop]; + + //Setup a default timer to ensure that the RunLoop always has atleast one timer on it. This is to prevent the while loop + //below to spin in tight loop when all input sources and session timers are shutdown during a reconnect sequence. + self.defaultRunLoopTimer = [[NSTimer alloc] initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:60.0] + interval:60.0 + target:self + selector:@selector(timerHandler:) + userInfo:nil + repeats:YES]; + [self.runLoopForStreamsThread addTimer:self.defaultRunLoopTimer + forMode:NSDefaultRunLoopMode]; + + self.isRunning = YES; + if (self.outputStream) { + [self.outputStream scheduleInRunLoop:self.runLoopForStreamsThread + forMode:NSDefaultRunLoopMode]; + [self.outputStream open]; + } + + //Update the runLoop and runLoopMode in session. + [self.session connectToInputStream:self.decoderInputStream + outputStream:self.encoderOutputStream]; + + while (self.isRunning && !self.isCancelled) { + //This will continue run until the thread is cancelled + //Run one cycle of the runloop. This will return after a input source event or timer event is processed + [self.runLoopForStreamsThread runMode:NSDefaultRunLoopMode + beforeDate:[NSDate dateWithTimeIntervalSinceNow:self.defaultRunLoopTimeInterval]]; + } + + [self cleanUp]; + + AWSDDLogVerbose(@"Finished execution of Thread: [%@]", self); +} + +- (void)cancel { + AWSDDLogVerbose(@"Issued Cancel on thread [%@]", (NSThread *)self); + self.isRunning = NO; + [super cancel]; +} + +- (void)cleanUp { + if (self.defaultRunLoopTimer) { + [self.defaultRunLoopTimer invalidate]; + self.defaultRunLoopTimer = nil; + } + + if (self.session) { + [self.session close]; + self.session = nil; + } + + if (self.outputStream) { + self.outputStream.delegate = nil; + [self.outputStream close]; + [self.outputStream removeFromRunLoop:self.runLoopForStreamsThread + forMode:NSDefaultRunLoopMode]; + self.outputStream = nil; + } + + if (self.decoderInputStream) { + [self.decoderInputStream close]; + self.decoderInputStream = nil; + } + + if (self.encoderOutputStream) { + [self.encoderOutputStream close]; + self.encoderOutputStream = nil; + } + + if (self.onStop) { + self.onStop(); + self.onStop = nil; + } +} + +- (void)timerHandler:(NSTimer*)theTimer { + AWSDDLogVerbose(@"Default run loop timer executed on Thread: [%@]. isRunning = %@. isCancelled = %@", self, self.isRunning ? @"YES" : @"NO", self.isCancelled ? @"YES" : @"NO"); +} + +@end diff --git a/AWSIoT/Internal/MQTTSDK/AWSMQTTEncoder.m b/AWSIoT/Internal/MQTTSDK/AWSMQTTEncoder.m index ddaa3b6e444..9a6fc4986e7 100644 --- a/AWSIoT/Internal/MQTTSDK/AWSMQTTEncoder.m +++ b/AWSIoT/Internal/MQTTSDK/AWSMQTTEncoder.m @@ -17,13 +17,12 @@ #import "AWSMQTTEncoder.h" @interface AWSMQTTEncoder () { - NSOutputStream* stream; NSMutableData* buffer; NSInteger byteIndex; } @property (nonatomic, strong) dispatch_queue_t encodeQueue; - +@property (nonatomic, strong) NSOutputStream* stream; @end @implementation AWSMQTTEncoder @@ -31,29 +30,29 @@ @implementation AWSMQTTEncoder - (id)initWithStream:(NSOutputStream*)aStream { _status = AWSMQTTEncoderStatusInitializing; - stream = aStream; - [stream setDelegate:self]; - _encodeQueue = dispatch_queue_create("com.amazon.aws.iot.encoder-queue", DISPATCH_QUEUE_SERIAL); + self.stream = aStream; + [self.stream setDelegate:self]; + self.encodeQueue = dispatch_queue_create("com.amazon.aws.iot.encoder-queue", DISPATCH_QUEUE_SERIAL); return self; } - (void)open { AWSDDLogDebug(@"opening encoder stream."); - [stream setDelegate:self]; - [stream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; - [stream open]; + [self.stream setDelegate:self]; + [self.stream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; + [self.stream open]; } - (void)close { AWSDDLogDebug(@"closing encoder stream."); - [stream close]; - [stream setDelegate:nil]; - stream = nil; + [self.stream close]; + [self.stream setDelegate:nil]; + self.stream = nil; } //This is executed in the runLoop. - (void)stream:(NSStream*)sender handleEvent:(NSStreamEvent)eventCode { - if(stream == nil) + if(self.stream == nil) return; AWSDDLogVerbose(@"%s [Line %d] EventCode:%lu, Thread: %@", __PRETTY_FUNCTION__, __LINE__, (unsigned long)eventCode, [NSThread currentThread]); @@ -141,7 +140,7 @@ - (void)encodeWhenReady:(AWSMQTTMessage*)msg { [buffer appendData:[msg data]]; } - n = [stream write:[buffer bytes] maxLength:[buffer length]]; + n = [self.stream write:[buffer bytes] maxLength:[buffer length]]; if (n == -1) { _status = AWSMQTTEncoderStatusError; [_delegate encoder:self handleEvent:AWSMQTTEncoderEventErrorOccurred]; @@ -164,7 +163,7 @@ - (void)writeBytes { ptr = (UInt8*) [buffer bytes] + byteIndex; // Number of bytes pending for transfer length = [buffer length] - byteIndex; - n = [stream write:ptr maxLength:length]; + n = [self.stream write:ptr maxLength:length]; if (n == -1) { _status = AWSMQTTEncoderStatusError; [_delegate encoder:self handleEvent:AWSMQTTEncoderEventErrorOccurred]; diff --git a/AWSIoT/Internal/MQTTSDK/AWSMQTTSession.m b/AWSIoT/Internal/MQTTSDK/AWSMQTTSession.m index 7a1f455ab2c..ffceb738fe0 100644 --- a/AWSIoT/Internal/MQTTSDK/AWSMQTTSession.m +++ b/AWSIoT/Internal/MQTTSDK/AWSMQTTSession.m @@ -25,19 +25,15 @@ @interface AWSMQTTSession () { AWSMQTTSessionStatus status; //Current status of the session. Can be one of the values specified in the MQTTSessionStatus enum NSString* clientId; //Unique Client ID passed in by the MQTTClient. UInt16 txMsgId; //unique ID for the message. Counter that starts from 1 - + UInt16 keepAliveInterval; //client will send a PINGREQ once every keepAliveInterval to the server. NSInteger idleTimer; // counter used to know when to send the PINGREQ BOOL cleanSessionFlag; //used to clear the queue AWSMQTTMessage* connectMessage; //Connect message that is passed in by MQTTClient. Used to send connect message. - + dispatch_queue_t serialQueue; // Serial queue to keep ticks increments in sync - NSTimer* timer; //Timer that fires every second. Used to orchestrate pings and retries. unsigned int ticks; //Number of seconds ( or clock ticks ) - - AWSMQTTEncoder* encoder; //Low level protocol handler that converts a message into out bound network data - AWSMQTTDecoder* decoder; //Low level protocol handler that converts in bound network data into a Message - + NSMutableDictionary* txFlows; //Required for QOS1. Outbound publishes will be stored in txFlows until a PubAck is received NSMutableDictionary* rxFlows; //Required for handling QOS 2. unsigned int retryThreshold; //used to throtttle retries. Overloading the publishes beyond service limit will result in message loss. @@ -64,6 +60,9 @@ - (UInt16)nextMsgId; @property (strong,atomic) NSMutableArray* queue; //Queue to temporarily hold messages if encoder is busy sending another message @property (strong,atomic) NSMutableArray* timerRing; // circular array of 60. Each element is a set that contains the messages that need to be retried. @property (nonatomic, strong) dispatch_queue_t drainSenderSerialQueue; +@property (nonatomic, strong) AWSMQTTEncoder* encoder; //Low level protocol handler that converts a message into out bound network data +@property (nonatomic, strong) AWSMQTTDecoder* decoder; //Low level protocol handler that converts in bound network data into a Message +@property (nonatomic, strong) NSTimer* timer; //Timer that fires every second. Used to orchestrate pings and retries. @end @@ -116,6 +115,11 @@ - (id)initWithClientId:(NSString*)theClientId return self; } +- (void)dealloc +{ + [self.timer invalidate]; +} + #pragma mark Connection Management - (id)connectToInputStream:(NSInputStream *)readStream @@ -124,19 +128,19 @@ - (id)connectToInputStream:(NSInputStream *)readStream status = AWSMQTTSessionStatusCreated; //Setup encoder - encoder = [[AWSMQTTEncoder alloc] initWithStream:writeStream]; + self.encoder = [[AWSMQTTEncoder alloc] initWithStream:writeStream]; //Setup decoder - decoder = [[AWSMQTTDecoder alloc] initWithStream:readStream]; + self.decoder = [[AWSMQTTDecoder alloc] initWithStream:readStream]; //setup the session as the delegate to the encoder and decoder. - [encoder setDelegate:self]; - [decoder setDelegate:self]; - + [self.encoder setDelegate:self]; + [self.decoder setDelegate:self]; + //Open the encoder, which will associate it with the runLoop of the current thread and start the encoding process. - [encoder open]; + [self.encoder open]; //Open the decoder, which will associate it with the runLoop of the current thread and start the decoding process. - [decoder open]; + [self.decoder open]; return self; } @@ -145,11 +149,11 @@ -(void)disconnect { } - (void)close { - [encoder close]; - [decoder close]; - if (timer != nil) { - [timer invalidate]; - timer = nil; + [self.encoder close]; + [self.decoder close]; + if (self.timer != nil) { + [self.timer invalidate]; + self.timer = nil; } } @@ -285,9 +289,9 @@ - (void)timerHandler:(NSTimer*)theTimer { //Send a pingreq if idleTimer is > keepAliveInterval. The idleTimer is increment per iteration of the timer, i.e., every second if (idleTimer >= keepAliveInterval) { - if ([encoder status] == AWSMQTTEncoderStatusReady) { + if ([self.encoder status] == AWSMQTTEncoderStatusReady) { AWSDDLogVerbose(@"<<%@>> sending PINGREQ", [NSThread currentThread]); - [encoder encodeMessage:[AWSMQTTMessage pingreqMessage]]; + [self.encoder encodeMessage:[AWSMQTTMessage pingreqMessage]]; idleTimer = 0; } } @@ -333,7 +337,7 @@ - (void)timerHandler:(NSTimer*)theTimer { - (void)encoder:(AWSMQTTEncoder*)sender handleEvent:(AWSMQTTEncoderEvent) eventCode { AWSDDLogVerbose(@"%s [Line %d], eventCode: %d", __PRETTY_FUNCTION__, __LINE__, eventCode); - if(sender == encoder) { + if(sender == self.encoder) { switch (eventCode) { case AWSMQTTEncoderEventReady: AWSDDLogVerbose(@"MQTTSessionStatus = %d", status); @@ -365,7 +369,7 @@ - (void)encoder:(AWSMQTTEncoder*)sender handleEvent:(AWSMQTTEncoderEvent) eventC - (void)decoder:(AWSMQTTDecoder*)sender handleEvent:(AWSMQTTDecoderEvent)eventCode { AWSDDLogVerbose(@"%s [Line %d] eventCode:%d", __PRETTY_FUNCTION__, __LINE__, eventCode); - if(sender == decoder) { + if(sender == self.decoder) { AWSMQTTSessionEvent event; switch (eventCode) { case AWSMQTTDecoderEventConnectionClosed: @@ -386,7 +390,7 @@ - (void)decoder:(AWSMQTTDecoder*)sender newMessage:(AWSMQTTMessage*)msg { AWSDDLogVerbose(@"%s [Line %d] messageType=%d, status=%d", __PRETTY_FUNCTION__, __LINE__, [msg type], status); AWSAWSMQTTMessageType messageType = [msg type]; - if(sender == decoder){ + if(sender == self.decoder){ switch (status) { case AWSMQTTSessionStatusConnecting: switch (messageType) { @@ -398,10 +402,10 @@ - (void)decoder:(AWSMQTTDecoder*)sender newMessage:(AWSMQTTMessage*)msg { const UInt8 *bytes = [[msg data] bytes]; if (bytes[1] == 0) { status = AWSMQTTSessionStatusConnected; - if (timer != nil ) { - [timer invalidate]; + if (self.timer != nil ) { + [self.timer invalidate]; } - timer = [[NSTimer alloc] initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:1.0] + self.timer = [[NSTimer alloc] initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:1.0] interval:1.0 target:self selector:@selector(timerHandler:) @@ -412,7 +416,7 @@ - (void)decoder:(AWSMQTTDecoder*)sender newMessage:(AWSMQTTMessage*)msg { } [_delegate session:self handleEvent:AWSMQTTSessionEventConnected]; - [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode]; + [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSDefaultRunLoopMode]; } else { [self error:AWSMQTTSessionEventConnectionRefused]; @@ -646,14 +650,14 @@ - (void)handlePubcomp:(AWSMQTTMessage*)msg { - (void)error:(AWSMQTTSessionEvent)eventCode { AWSDDLogError(@"MQTT session error, code: %d", eventCode); - [encoder close]; - - [decoder close]; - - if (timer != nil) { - [timer invalidate]; - - timer = nil; + [self.encoder close]; + + [self.decoder close]; + + if (self.timer != nil) { + [self.timer invalidate]; + + self.timer = nil; } status = AWSMQTTSessionStatusError; @@ -669,10 +673,10 @@ - (void)error:(AWSMQTTSessionEvent)eventCode { # pragma mark Message Send methods - (void)send:(AWSMQTTMessage*)msg { - if ([encoder status] == AWSMQTTEncoderStatusReady) { + if ([self.encoder status] == AWSMQTTEncoderStatusReady) { [self drainSenderQueue]; AWSDDLogVerbose(@"<<%@>>: MQTTSession.send msg to server", [NSThread currentThread]); - [encoder encodeMessage:msg]; + [self.encoder encodeMessage:msg]; } else { dispatch_assert_queue_not(self.drainSenderSerialQueue); @@ -691,8 +695,8 @@ - (UInt16)nextMsgId { } - (BOOL)isReadyToPublish { - AWSDDLogVerbose(@"<<%@>> MQTTEncoderStatus = %d", [NSThread currentThread],[encoder status]); - return encoder && [encoder status] == AWSMQTTEncoderStatusReady; + AWSDDLogVerbose(@"<<%@>> MQTTEncoderStatus = %d", [NSThread currentThread],[self.encoder status]); + return self.encoder && [self.encoder status] == AWSMQTTEncoderStatusReady; } - (void)drainSenderQueue { @@ -711,7 +715,7 @@ - (void)queueNextMessage { AWSDDLogDebug(@"Sending message from session queue"); AWSMQTTMessage *msg = [self.queue objectAtIndex:0]; [self.queue removeObjectAtIndex:0]; - [encoder encodeMessage:msg]; + [self.encoder encodeMessage:msg]; } } @@ -729,7 +733,7 @@ - (void)drainAllMessages { AWSDDLogDebug(@"Sending message from session queue" ); AWSMQTTMessage *msg = [self.queue objectAtIndex:0]; [self.queue removeObjectAtIndex:0]; - [encoder encodeMessage:msg]; + [self.encoder encodeMessage:msg]; count = count + 1; } } diff --git a/AWSIoT/Internal/SocketRocket/AWSSRWebSocket.m b/AWSIoT/Internal/SocketRocket/AWSSRWebSocket.m index a76d78f9878..363e5235318 100644 --- a/AWSIoT/Internal/SocketRocket/AWSSRWebSocket.m +++ b/AWSIoT/Internal/SocketRocket/AWSSRWebSocket.m @@ -548,7 +548,9 @@ - (void)didConnect; NSData *message = CFBridgingRelease(CFHTTPMessageCopySerializedMessage(request)); AWSSRFastLog(@"%@", [[NSString alloc]initWithData:message encoding:NSUTF8StringEncoding]); - CFRelease(request); + if (request) { + CFRelease(request); + } [self _writeData:message]; [self _readHTTPHeader]; @@ -1896,8 +1898,10 @@ - (void)main; }; CFRunLoopSourceRef source = CFRunLoopSourceCreate(NULL, 0, &sourceCtx); CFRunLoopAddSource(CFRunLoopGetCurrent(), source, kCFRunLoopDefaultMode); - CFRelease(source); - + if (source) { + CFRelease(source); + } + while ([_runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]) { } diff --git a/AWSIoTUnitTests/AWSIoTStreamThreadTests.m b/AWSIoTUnitTests/AWSIoTStreamThreadTests.m new file mode 100644 index 00000000000..7d0718078e9 --- /dev/null +++ b/AWSIoTUnitTests/AWSIoTStreamThreadTests.m @@ -0,0 +1,92 @@ +// +// Copyright 2010-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"). +// You may not use this file except in compliance with the License. +// A copy of the License is located at +// +// http://aws.amazon.com/apache2.0 +// +// or in the "license" file accompanying this file. This file is distributed +// on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either +// express or implied. See the License for the specific language governing +// permissions and limitations under the License. +// + +#import +#import "OCMock.h" +#import "AWSIoTStreamThread.h" + +@interface AWSIoTStreamThread() +@property(nonatomic, assign) NSTimeInterval defaultRunLoopTimeInterval; +@end + + +@interface AWSIoTStreamThreadTests : XCTestCase + +@property (nonatomic, strong) AWSIoTStreamThread *thread; +@property (nonatomic, strong) AWSMQTTSession *session; +@property (nonatomic, strong) NSInputStream *decoderInputStream; +@property (nonatomic, strong) NSOutputStream *encoderOutputStream; +@property (nonatomic, strong) NSOutputStream *outputStream; + +@end + +@implementation AWSIoTStreamThreadTests + +- (void)setUp { + // Mock the dependencies + self.decoderInputStream = OCMClassMock([NSInputStream class]); + self.encoderOutputStream = OCMClassMock([NSOutputStream class]); + self.outputStream = OCMClassMock([NSOutputStream class]); + self.session = OCMClassMock([AWSMQTTSession class]); + + // Create an expectation and fulfill it when session.connectToInputStream:outputStream is invoked + XCTestExpectation *startExpectation = [self expectationWithDescription:@"AWSIoTStreamThread.start expectation"]; + OCMStub([self.session connectToInputStream:[OCMArg any] outputStream:[OCMArg any]]) + .andCall(startExpectation, @selector(fulfill)); + + self.thread = [[AWSIoTStreamThread alloc] initWithSession:self.session + decoderInputStream:self.decoderInputStream + encoderOutputStream:self.encoderOutputStream + outputStream:self.outputStream]; + self.thread.defaultRunLoopTimeInterval = 0.1; + [self.thread start]; + [self waitForExpectations:@[startExpectation] timeout:1]; +} + +- (void)tearDown { + self.thread = nil; + self.session = nil; + self.decoderInputStream = nil; + self.encoderOutputStream = nil; + self.outputStream = nil; +} + +/// Given: A AWSIoTStreamThread +/// When: The thread is started +/// Then: The output stream is opened and the session is connected to the decoder and encoder streams +- (void)testStart_shouldOpenStream_andInvokeConnectOnSession { + OCMVerify([self.outputStream open]); + OCMVerify([self.session connectToInputStream:[OCMArg any] outputStream:[OCMArg any]]); +} + +/// Given: A running AWSIoTStreamThread +/// When: The thread is cancelled +/// Then: The session is closed and all streams are closed +- (void)testCancel_shouldCloseStreams_andInvokeOnStop { + XCTestExpectation *stopExpectation = [self expectationWithDescription:@"AWSIoTStreamThread.onStop expectation"]; + self.thread.onStop = ^{ + [stopExpectation fulfill]; + }; + + [self.thread cancel]; + [self waitForExpectations:@[stopExpectation] timeout:1]; + + OCMVerify([self.decoderInputStream close]); + OCMVerify([self.encoderOutputStream close]); + OCMVerify([self.outputStream close]); + OCMVerify([self.session close]); +} + +@end diff --git a/AWSiOSSDKv2.xcodeproj/project.pbxproj b/AWSiOSSDKv2.xcodeproj/project.pbxproj index 930efb630a4..7303b747879 100644 --- a/AWSiOSSDKv2.xcodeproj/project.pbxproj +++ b/AWSiOSSDKv2.xcodeproj/project.pbxproj @@ -581,6 +581,9 @@ 5C1590172755727C00F88085 /* AWSCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CE0D416D1C6A66E5006B91B5 /* AWSCore.framework */; }; 5C1978DD2702364800F9C11E /* AWSLocationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1978DC2702364800F9C11E /* AWSLocationTests.swift */; }; 5C71F33F295672B8001183A4 /* guten_tag.wav in Resources */ = {isa = PBXBuildFile; fileRef = 5C71F33E295672B8001183A4 /* guten_tag.wav */; }; + 688361A12B73D25B00D74FF4 /* AWSIoTStreamThreadTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 688361A02B73D25B00D74FF4 /* AWSIoTStreamThreadTests.m */; }; + 68EE1A6C2B713D8100B7CF41 /* AWSIoTStreamThread.h in Headers */ = {isa = PBXBuildFile; fileRef = 68EE1A6B2B713D8100B7CF41 /* AWSIoTStreamThread.h */; }; + 68EE1A6E2B713D8900B7CF41 /* AWSIoTStreamThread.m in Sources */ = {isa = PBXBuildFile; fileRef = 68EE1A6D2B713D8900B7CF41 /* AWSIoTStreamThread.m */; }; 6BE9D6AA25A54EBA00AB5C9A /* AWSIotDataManagerRetainTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BE9D6A925A54EBA00AB5C9A /* AWSIotDataManagerRetainTests.swift */; }; 6BE9D74025A6D52100AB5C9A /* MQTTStatusCallBackWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BE9D73F25A6D52100AB5C9A /* MQTTStatusCallBackWrapper.swift */; }; 6BE9D74225A6D62000AB5C9A /* AWSIotDataManagerQoSTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BE9D74125A6D62000AB5C9A /* AWSIotDataManagerQoSTests.swift */; }; @@ -3141,6 +3144,9 @@ 5C1978DB2702364800F9C11E /* AWSLocationTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "AWSLocationTests-Bridging-Header.h"; sourceTree = ""; }; 5C1978DC2702364800F9C11E /* AWSLocationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AWSLocationTests.swift; sourceTree = ""; }; 5C71F33E295672B8001183A4 /* guten_tag.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = guten_tag.wav; sourceTree = ""; }; + 688361A02B73D25B00D74FF4 /* AWSIoTStreamThreadTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AWSIoTStreamThreadTests.m; sourceTree = ""; }; + 68EE1A6B2B713D8100B7CF41 /* AWSIoTStreamThread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWSIoTStreamThread.h; sourceTree = ""; }; + 68EE1A6D2B713D8900B7CF41 /* AWSIoTStreamThread.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWSIoTStreamThread.m; sourceTree = ""; }; 6BE9D6A925A54EBA00AB5C9A /* AWSIotDataManagerRetainTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AWSIotDataManagerRetainTests.swift; sourceTree = ""; }; 6BE9D73F25A6D52100AB5C9A /* MQTTStatusCallBackWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MQTTStatusCallBackWrapper.swift; sourceTree = ""; }; 6BE9D74125A6D62000AB5C9A /* AWSIotDataManagerQoSTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AWSIotDataManagerQoSTests.swift; sourceTree = ""; }; @@ -6778,6 +6784,7 @@ FAFAF8C52540FAE60074FAB3 /* AWSIoTDataNSSecureCodingTests.m */, CE56053D1C6BD02800B4E00B /* AWSIoTDataUnitTests.m */, FAFAF8C62540FAE70074FAB3 /* AWSIoTNSSecureCodingTests.m */, + 688361A02B73D25B00D74FF4 /* AWSIoTStreamThreadTests.m */, CE56053E1C6BD02800B4E00B /* AWSIoTUnitTests.m */, FA92428F2344F44D003F546D /* MQTTDecoderTests.m */, FA39AF0F2346847A0006050D /* MQTTSessionTests.m */, @@ -7065,6 +7072,8 @@ CE9DE6391C6A78D70060793F /* AWSIoTKeychain.m */, CE9DE63A1C6A78D70060793F /* AWSIoTMQTTClient.h */, CE9DE63B1C6A78D70060793F /* AWSIoTMQTTClient.m */, + 68EE1A6B2B713D8100B7CF41 /* AWSIoTStreamThread.h */, + 68EE1A6D2B713D8900B7CF41 /* AWSIoTStreamThread.m */, CE9DE63C1C6A78D70060793F /* AWSIoTWebSocketOutputStream.h */, CE9DE63D1C6A78D70060793F /* AWSIoTWebSocketOutputStream.m */, CE9DE63E1C6A78D70060793F /* MQTTSDK */, @@ -8278,6 +8287,7 @@ files = ( CE9DE6521C6A78D70060793F /* AWSIoTDataResources.h in Headers */, CE9DE65A1C6A78D70060793F /* AWSIoTResources.h in Headers */, + 68EE1A6C2B713D8100B7CF41 /* AWSIoTStreamThread.h in Headers */, CE9DE6231C6A78AF0060793F /* AWSIoT.h in Headers */, CE9DE6561C6A78D70060793F /* AWSIoTManager.h in Headers */, CE9DE6581C6A78D70060793F /* AWSIoTModel.h in Headers */, @@ -12972,6 +12982,7 @@ files = ( FAF2C31923464B44006C5C3E /* TestDataWriter.m in Sources */, CE56053F1C6BD02800B4E00B /* AWSIoTDataUnitTests.m in Sources */, + 688361A12B73D25B00D74FF4 /* AWSIoTStreamThreadTests.m in Sources */, FAF2C31623464ABA006C5C3E /* TestDecoderDelegate.m in Sources */, CE5605351C6BCE2700B4E00B /* AWSGeneralIoTTests.m in Sources */, FA9242902344F44D003F546D /* MQTTDecoderTests.m in Sources */, @@ -13183,6 +13194,7 @@ CE9DE6671C6A78D70060793F /* AWSMQTTDecoder.m in Sources */, CE9DE6511C6A78D70060793F /* AWSIoTDataModel.m in Sources */, CE9DE64F1C6A78D70060793F /* AWSIoTDataManager.m in Sources */, + 68EE1A6E2B713D8900B7CF41 /* AWSIoTStreamThread.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/CHANGELOG.md b/CHANGELOG.md index 793d3e9c547..3470f261a2a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,11 @@ ---- - # AWS Mobile SDK for iOS CHANGELOG ## Unreleased --Features for next release +### Bug Fixes + +- **AWSIoT** + - Fixing crash in AWSIoTMQTTClient (See [PR #5185](https://github.com/aws-amplify/aws-sdk-ios/pull/5185)) ### Misc. Updates From a704c278082fd0e3edfa0ba8ff9ad11bf5554ae6 Mon Sep 17 00:00:00 2001 From: aws-amplify-ops Date: Wed, 7 Feb 2024 20:33:31 +0000 Subject: [PATCH 11/11] [bump version 2.33.9] --- AWSAPIGateway.podspec | 4 +- AWSAPIGateway/AWSAPIGatewayClient.m | 2 +- AWSAPIGateway/Info.plist | 2 +- AWSAppleSignIn.podspec | 6 +- AWSAuth.podspec | 12 ++-- AWSAuthCore.podspec | 4 +- AWSAuthSDK/Sources/AWSAppleSignIn/Info.plist | 2 +- AWSAuthSDK/Sources/AWSAuthCore/Info.plist | 2 +- AWSAuthSDK/Sources/AWSAuthUI/Info.plist | 2 +- .../Sources/AWSFacebookSignIn/Info.plist | 2 +- AWSAuthSDK/Sources/AWSGoogleSignIn/Info.plist | 2 +- AWSAuthSDK/Sources/AWSMobileClient/Info.plist | 2 +- .../Sources/AWSMobileClientXCF/Info.plist | 2 +- .../Sources/AWSUserPoolsSignIn/Info.plist | 2 +- AWSAuthUI.podspec | 6 +- AWSAutoScaling.podspec | 4 +- AWSAutoScaling/AWSAutoScalingService.m | 2 +- AWSAutoScaling/Info.plist | 2 +- AWSChimeSDKIdentity.podspec | 4 +- .../AWSChimeSDKIdentityService.m | 2 +- AWSChimeSDKIdentity/Info.plist | 2 +- AWSChimeSDKMessaging.podspec | 4 +- .../AWSChimeSDKMessagingService.m | 2 +- AWSChimeSDKMessaging/Info.plist | 2 +- AWSCloudWatch.podspec | 4 +- AWSCloudWatch/AWSCloudWatchService.m | 2 +- AWSCloudWatch/Info.plist | 2 +- AWSCognitoAuth.podspec | 6 +- AWSCognitoAuth/AWSCognitoAuth.m | 2 +- AWSCognitoAuth/Info.plist | 2 +- AWSCognitoIdentityProvider.podspec | 6 +- .../AWSCognitoIdentityProviderService.m | 2 +- AWSCognitoIdentityProvider/Info.plist | 2 +- AWSCognitoIdentityProviderASF.podspec | 4 +- AWSCognitoIdentityProviderASF/Info.plist | 2 +- AWSComprehend.podspec | 4 +- AWSComprehend/AWSComprehendService.m | 2 +- AWSComprehend/Info.plist | 2 +- AWSConnect.podspec | 4 +- AWSConnect/AWSConnectService.m | 2 +- AWSConnect/Info.plist | 2 +- AWSConnectParticipant.podspec | 4 +- .../AWSConnectParticipantService.m | 2 +- AWSConnectParticipant/Info.plist | 2 +- AWSCore.podspec | 2 +- AWSCore/Info.plist | 2 +- AWSCore/Service/AWSService.m | 2 +- AWSDynamoDB.podspec | 4 +- AWSDynamoDB/AWSDynamoDBService.m | 2 +- AWSDynamoDB/Info.plist | 2 +- AWSEC2.podspec | 4 +- AWSEC2/AWSEC2Service.m | 2 +- AWSEC2/Info.plist | 2 +- AWSElasticLoadBalancing.podspec | 4 +- .../AWSElasticLoadBalancingService.m | 2 +- AWSElasticLoadBalancing/Info.plist | 2 +- AWSFacebookSignIn.podspec | 6 +- AWSGoogleSignIn.podspec | 6 +- AWSIoT.podspec | 4 +- AWSIoT/AWSIoTDataService.m | 2 +- AWSIoT/AWSIoTService.m | 2 +- AWSIoT/Info.plist | 2 +- AWSKMS.podspec | 4 +- AWSKMS/AWSKMSService.m | 2 +- AWSKMS/Info.plist | 2 +- AWSKinesis.podspec | 4 +- AWSKinesis/AWSFirehoseService.m | 2 +- AWSKinesis/AWSKinesisService.m | 2 +- AWSKinesis/Info.plist | 2 +- AWSKinesisVideo.podspec | 4 +- AWSKinesisVideo/AWSKinesisVideoService.m | 2 +- AWSKinesisVideo/Info.plist | 2 +- AWSKinesisVideoArchivedMedia.podspec | 4 +- .../AWSKinesisVideoArchivedMediaService.m | 2 +- AWSKinesisVideoArchivedMedia/Info.plist | 2 +- AWSKinesisVideoSignaling.podspec | 4 +- .../AWSKinesisVideoSignalingService.m | 2 +- AWSKinesisVideoSignaling/Info.plist | 2 +- AWSKinesisVideoWebRTCStorage.podspec | 4 +- .../AWSKinesisVideoWebRTCStorageService.m | 2 +- AWSKinesisVideoWebRTCStorage/Info.plist | 2 +- AWSLambda.podspec | 4 +- AWSLambda/AWSLambdaService.m | 2 +- AWSLambda/Info.plist | 2 +- AWSLex.podspec | 4 +- AWSLex/AWSLexInteractionKit.m | 2 +- AWSLex/AWSLexService.m | 2 +- AWSLex/Info.plist | 2 +- AWSLocation.podspec | 4 +- AWSLocation/AWSLocationService.m | 2 +- AWSLocation/Info.plist | 2 +- AWSLocationXCF/Info.plist | 2 +- AWSLogs.podspec | 4 +- AWSLogs/AWSLogsService.m | 2 +- AWSLogs/Info.plist | 2 +- AWSMachineLearning.podspec | 4 +- .../AWSMachineLearningService.m | 2 +- AWSMachineLearning/Info.plist | 2 +- AWSMobileClient.podspec | 10 +-- AWSPinpoint.podspec | 4 +- .../AWSPinpointTargetingService.m | 2 +- AWSPinpoint/Info.plist | 2 +- AWSPolly.podspec | 4 +- AWSPolly/AWSPollyService.m | 2 +- AWSPolly/AWSPollySynthesizeSpeechURLBuilder.m | 2 +- AWSPolly/Info.plist | 2 +- AWSRekognition.podspec | 4 +- AWSRekognition/AWSRekognitionService.m | 2 +- AWSRekognition/Info.plist | 2 +- AWSS3.podspec | 4 +- AWSS3/AWSS3PreSignedURL.m | 2 +- AWSS3/AWSS3Service.m | 2 +- AWSS3/Info.plist | 2 +- AWSSES.podspec | 4 +- AWSSES/AWSSESService.m | 2 +- AWSSES/Info.plist | 2 +- AWSSNS.podspec | 4 +- AWSSNS/AWSSNSService.m | 2 +- AWSSNS/Info.plist | 2 +- AWSSQS.podspec | 4 +- AWSSQS/AWSSQSService.m | 2 +- AWSSQS/Info.plist | 2 +- AWSSageMakerRuntime.podspec | 4 +- .../AWSSageMakerRuntimeService.m | 2 +- AWSSageMakerRuntime/Info.plist | 2 +- AWSSimpleDB.podspec | 4 +- AWSSimpleDB/AWSSimpleDBService.m | 2 +- AWSSimpleDB/Info.plist | 2 +- AWSTextract.podspec | 4 +- AWSTextract/AWSTextractService.m | 2 +- AWSTextract/Info.plist | 2 +- AWSTranscribe.podspec | 4 +- AWSTranscribe/AWSTranscribeService.m | 2 +- AWSTranscribe/Info.plist | 2 +- AWSTranscribeStreaming.podspec | 4 +- .../AWSTranscribeStreamingService.m | 2 +- AWSTranscribeStreaming/Info.plist | 2 +- AWSTranslate.podspec | 4 +- AWSTranslate/AWSTranslateService.m | 2 +- AWSTranslate/Info.plist | 2 +- AWSUserPoolsSignIn.podspec | 8 +-- AWSiOSSDKv2.podspec | 64 +++++++++---------- CHANGELOG.md | 4 ++ CircleciScripts/generate_documentation.sh | 2 +- 144 files changed, 240 insertions(+), 236 deletions(-) diff --git a/AWSAPIGateway.podspec b/AWSAPIGateway.podspec index 3d70f78434b..a3d64e54b5f 100644 --- a/AWSAPIGateway.podspec +++ b/AWSAPIGateway.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSAPIGateway' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -13,7 +13,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSAPIGateway/*.{h,m}' end diff --git a/AWSAPIGateway/AWSAPIGatewayClient.m b/AWSAPIGateway/AWSAPIGatewayClient.m index a505163d480..8f3a757ed2c 100644 --- a/AWSAPIGateway/AWSAPIGatewayClient.m +++ b/AWSAPIGateway/AWSAPIGatewayClient.m @@ -23,7 +23,7 @@ static NSString *const AWSAPIGatewayAPIKeyHeader = @"x-api-key"; -NSString *const AWSAPIGatewaySDKVersion = @"2.33.8"; +NSString *const AWSAPIGatewaySDKVersion = @"2.33.9"; static int defaultChunkSize = 1024; diff --git a/AWSAPIGateway/Info.plist b/AWSAPIGateway/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSAPIGateway/Info.plist +++ b/AWSAPIGateway/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSAppleSignIn.podspec b/AWSAppleSignIn.podspec index c6aaa3389f9..14069cdb701 100644 --- a/AWSAppleSignIn.podspec +++ b/AWSAppleSignIn.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSAppleSignIn' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,8 +12,8 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' - s.dependency 'AWSAuthCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' + s.dependency 'AWSAuthCore', '2.33.9' s.source_files = 'AWSAuthSDK/Sources/AWSAppleSignIn/*.{h,m}' s.public_header_files = 'AWSAuthSDK/Sources/AWSAppleSignIn/*.h' end diff --git a/AWSAuth.podspec b/AWSAuth.podspec index d1721b76c6e..86ab0503975 100644 --- a/AWSAuth.podspec +++ b/AWSAuth.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSAuth' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -14,23 +14,23 @@ Pod::Spec.new do |s| s.requires_arc = true s.subspec 'Core' do |authcore| - authcore.dependency 'AWSAuthCore', '2.33.8' + authcore.dependency 'AWSAuthCore', '2.33.9' end s.subspec 'FacebookSignIn' do |facebook| - facebook.dependency 'AWSFacebookSignIn', '2.33.8' + facebook.dependency 'AWSFacebookSignIn', '2.33.9' end s.subspec 'GoogleSignIn' do |google| - google.dependency 'AWSGoogleSignIn', '2.33.8' + google.dependency 'AWSGoogleSignIn', '2.33.9' end s.subspec 'UserPoolsSignIn' do |up| - up.dependency 'AWSUserPoolsSignIn', '2.33.8' + up.dependency 'AWSUserPoolsSignIn', '2.33.9' end s.subspec 'UI' do |ui| - ui.dependency 'AWSAuthUI', '2.33.8' + ui.dependency 'AWSAuthUI', '2.33.9' end end diff --git a/AWSAuthCore.podspec b/AWSAuthCore.podspec index 1324a6e622a..f257cd7474c 100644 --- a/AWSAuthCore.podspec +++ b/AWSAuthCore.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSAuthCore' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,7 +12,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSAuthSDK/Sources/AWSAuthCore/*.{h,m}' s.public_header_files = 'AWSAuthSDK/Sources/AWSAuthCore/*.h' end diff --git a/AWSAuthSDK/Sources/AWSAppleSignIn/Info.plist b/AWSAuthSDK/Sources/AWSAppleSignIn/Info.plist index 8447a38d781..9ca7da20ac8 100644 --- a/AWSAuthSDK/Sources/AWSAppleSignIn/Info.plist +++ b/AWSAuthSDK/Sources/AWSAppleSignIn/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/AWSAuthSDK/Sources/AWSAuthCore/Info.plist b/AWSAuthSDK/Sources/AWSAuthCore/Info.plist index 8447a38d781..9ca7da20ac8 100644 --- a/AWSAuthSDK/Sources/AWSAuthCore/Info.plist +++ b/AWSAuthSDK/Sources/AWSAuthCore/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/AWSAuthSDK/Sources/AWSAuthUI/Info.plist b/AWSAuthSDK/Sources/AWSAuthUI/Info.plist index 8447a38d781..9ca7da20ac8 100644 --- a/AWSAuthSDK/Sources/AWSAuthUI/Info.plist +++ b/AWSAuthSDK/Sources/AWSAuthUI/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/AWSAuthSDK/Sources/AWSFacebookSignIn/Info.plist b/AWSAuthSDK/Sources/AWSFacebookSignIn/Info.plist index 8447a38d781..9ca7da20ac8 100644 --- a/AWSAuthSDK/Sources/AWSFacebookSignIn/Info.plist +++ b/AWSAuthSDK/Sources/AWSFacebookSignIn/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/AWSAuthSDK/Sources/AWSGoogleSignIn/Info.plist b/AWSAuthSDK/Sources/AWSGoogleSignIn/Info.plist index 8447a38d781..9ca7da20ac8 100644 --- a/AWSAuthSDK/Sources/AWSGoogleSignIn/Info.plist +++ b/AWSAuthSDK/Sources/AWSGoogleSignIn/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/AWSAuthSDK/Sources/AWSMobileClient/Info.plist b/AWSAuthSDK/Sources/AWSMobileClient/Info.plist index 797d3871b38..f601d14dd9c 100644 --- a/AWSAuthSDK/Sources/AWSMobileClient/Info.plist +++ b/AWSAuthSDK/Sources/AWSMobileClient/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/AWSAuthSDK/Sources/AWSMobileClientXCF/Info.plist b/AWSAuthSDK/Sources/AWSMobileClientXCF/Info.plist index 797d3871b38..f601d14dd9c 100644 --- a/AWSAuthSDK/Sources/AWSMobileClientXCF/Info.plist +++ b/AWSAuthSDK/Sources/AWSMobileClientXCF/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/AWSAuthSDK/Sources/AWSUserPoolsSignIn/Info.plist b/AWSAuthSDK/Sources/AWSUserPoolsSignIn/Info.plist index 8447a38d781..9ca7da20ac8 100644 --- a/AWSAuthSDK/Sources/AWSUserPoolsSignIn/Info.plist +++ b/AWSAuthSDK/Sources/AWSUserPoolsSignIn/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleVersion $(CURRENT_PROJECT_VERSION) NSPrincipalClass diff --git a/AWSAuthUI.podspec b/AWSAuthUI.podspec index 5d2d5726c4c..4a4ed8fb3c9 100644 --- a/AWSAuthUI.podspec +++ b/AWSAuthUI.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSAuthUI' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,8 +12,8 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' - s.dependency 'AWSAuthCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' + s.dependency 'AWSAuthCore', '2.33.9' s.source_files = 'AWSAuthSDK/Sources/AWSAuthUI/*.{h,m}', 'AWSAuthSDK/Sources/AWSAuthUI/**/*.{h,m}', 'AWSAuthSDK/Sources/AWSUserPoolsSignIn/UserPoolsUI/AWSFormTableCell.h', 'AWSAuthSDK/Sources/AWSUserPoolsSignIn/UserPoolsUI/AWSTableInputCell.h', 'AWSAuthSDK/Sources/AWSUserPoolsSignIn/UserPoolsUI/AWSFormTableDelegate.h', 'AWSAuthSDK/Sources/AWSUserPoolsSignIn/UserPoolsUI/AWSUserPoolsUIHelper.h' s.public_header_files = 'AWSAuthSDK/Sources/AWSAuthUI/AWSAuthUI.h', 'AWSAuthSDK/Sources/AWSAuthUI/AWSAuthUIViewController.h', 'AWSAuthSDK/Sources/AWSAuthUI/AWSAuthUIConfiguration.h' s.private_header_files = 'AWSAuthSDK/Sources/AWSUserPoolsSignIn/UserPoolsUI/AWSFormTableCell.h', 'AWSAuthSDK/Sources/AWSAuthUI/AWSSignInViewController.h', 'AWSAuthSDK/Sources/AWSUserPoolsSignIn/UserPoolsUI/AWSTableInputCell.h', 'AWSAuthSDK/Sources/AWSUserPoolsSignIn/UserPoolsUI/AWSFormTableDelegate.h' diff --git a/AWSAutoScaling.podspec b/AWSAutoScaling.podspec index 088e7098879..f9fee664a26 100644 --- a/AWSAutoScaling.podspec +++ b/AWSAutoScaling.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSAutoScaling' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSAutoScaling/*.{h,m}' end diff --git a/AWSAutoScaling/AWSAutoScalingService.m b/AWSAutoScaling/AWSAutoScalingService.m index 2768d226b56..43ae823872d 100644 --- a/AWSAutoScaling/AWSAutoScalingService.m +++ b/AWSAutoScaling/AWSAutoScalingService.m @@ -25,7 +25,7 @@ #import "AWSAutoScalingResources.h" static NSString *const AWSInfoAutoScaling = @"AutoScaling"; -NSString *const AWSAutoScalingSDKVersion = @"2.33.8"; +NSString *const AWSAutoScalingSDKVersion = @"2.33.9"; @interface AWSAutoScalingResponseSerializer : AWSXMLResponseSerializer diff --git a/AWSAutoScaling/Info.plist b/AWSAutoScaling/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSAutoScaling/Info.plist +++ b/AWSAutoScaling/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSChimeSDKIdentity.podspec b/AWSChimeSDKIdentity.podspec index ef319cdc42f..b91c5f88aa3 100644 --- a/AWSChimeSDKIdentity.podspec +++ b/AWSChimeSDKIdentity.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSChimeSDKIdentity' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSChimeSDKIdentity/*.{h,m}' end diff --git a/AWSChimeSDKIdentity/AWSChimeSDKIdentityService.m b/AWSChimeSDKIdentity/AWSChimeSDKIdentityService.m index 6cb10d755ad..c881ca377e1 100644 --- a/AWSChimeSDKIdentity/AWSChimeSDKIdentityService.m +++ b/AWSChimeSDKIdentity/AWSChimeSDKIdentityService.m @@ -25,7 +25,7 @@ #import "AWSChimeSDKIdentityResources.h" static NSString *const AWSInfoChimeSDKIdentity = @"ChimeSDKIdentity"; -NSString *const AWSChimeSDKIdentitySDKVersion = @"2.33.8"; +NSString *const AWSChimeSDKIdentitySDKVersion = @"2.33.9"; @interface AWSChimeSDKIdentityResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSChimeSDKIdentity/Info.plist b/AWSChimeSDKIdentity/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSChimeSDKIdentity/Info.plist +++ b/AWSChimeSDKIdentity/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSChimeSDKMessaging.podspec b/AWSChimeSDKMessaging.podspec index a1c4647950a..db9cd96f728 100644 --- a/AWSChimeSDKMessaging.podspec +++ b/AWSChimeSDKMessaging.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSChimeSDKMessaging' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSChimeSDKMessaging/*.{h,m}' end diff --git a/AWSChimeSDKMessaging/AWSChimeSDKMessagingService.m b/AWSChimeSDKMessaging/AWSChimeSDKMessagingService.m index 6d661311cfd..ab3e26edcb5 100644 --- a/AWSChimeSDKMessaging/AWSChimeSDKMessagingService.m +++ b/AWSChimeSDKMessaging/AWSChimeSDKMessagingService.m @@ -25,7 +25,7 @@ #import "AWSChimeSDKMessagingResources.h" static NSString *const AWSInfoChimeSDKMessaging = @"ChimeSDKMessaging"; -NSString *const AWSChimeSDKMessagingSDKVersion = @"2.33.8"; +NSString *const AWSChimeSDKMessagingSDKVersion = @"2.33.9"; @interface AWSChimeSDKMessagingResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSChimeSDKMessaging/Info.plist b/AWSChimeSDKMessaging/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSChimeSDKMessaging/Info.plist +++ b/AWSChimeSDKMessaging/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSCloudWatch.podspec b/AWSCloudWatch.podspec index 7d43c1d46be..64cafc0f3b6 100644 --- a/AWSCloudWatch.podspec +++ b/AWSCloudWatch.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSCloudWatch' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSCloudWatch/*.{h,m}' end diff --git a/AWSCloudWatch/AWSCloudWatchService.m b/AWSCloudWatch/AWSCloudWatchService.m index 0537c346afb..4b5239ff5e3 100644 --- a/AWSCloudWatch/AWSCloudWatchService.m +++ b/AWSCloudWatch/AWSCloudWatchService.m @@ -26,7 +26,7 @@ #import "AWSCloudWatchResources.h" static NSString *const AWSInfoCloudWatch = @"CloudWatch"; -NSString *const AWSCloudWatchSDKVersion = @"2.33.8"; +NSString *const AWSCloudWatchSDKVersion = @"2.33.9"; @interface AWSCloudWatchResponseSerializer : AWSXMLResponseSerializer diff --git a/AWSCloudWatch/Info.plist b/AWSCloudWatch/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSCloudWatch/Info.plist +++ b/AWSCloudWatch/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSCognitoAuth.podspec b/AWSCognitoAuth.podspec index d45b39bb94d..4c1eed4a512 100644 --- a/AWSCognitoAuth.podspec +++ b/AWSCognitoAuth.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSCognitoAuth' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Cognito Auth SDK for iOS' s.description = 'Amazon Cognito Auth enables sign up and authentication of your end users via a hosted UI' @@ -13,8 +13,8 @@ Pod::Spec.new do |s| :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' - s.dependency 'AWSCognitoIdentityProviderASF', '2.33.8' + s.dependency 'AWSCore', '2.33.9' + s.dependency 'AWSCognitoIdentityProviderASF', '2.33.9' s.source_files = 'AWSCognitoAuth/**/*.{h,m,c}' s.public_header_files = 'AWSCognitoAuth/*.h' diff --git a/AWSCognitoAuth/AWSCognitoAuth.m b/AWSCognitoAuth/AWSCognitoAuth.m index 15f4e0a4679..2d4a68bbb0b 100644 --- a/AWSCognitoAuth/AWSCognitoAuth.m +++ b/AWSCognitoAuth/AWSCognitoAuth.m @@ -80,7 +80,7 @@ @interface AWSCognitoAuthConfiguration() @implementation AWSCognitoAuth -NSString *const AWSCognitoAuthSDKVersion = @"2.33.8"; +NSString *const AWSCognitoAuthSDKVersion = @"2.33.9"; static NSMutableDictionary *_instanceDictionary = nil; diff --git a/AWSCognitoAuth/Info.plist b/AWSCognitoAuth/Info.plist index 17b0b53e882..f898d3c75c7 100644 --- a/AWSCognitoAuth/Info.plist +++ b/AWSCognitoAuth/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSCognitoIdentityProvider.podspec b/AWSCognitoIdentityProvider.podspec index dbea7e20448..b2690f17e0f 100644 --- a/AWSCognitoIdentityProvider.podspec +++ b/AWSCognitoIdentityProvider.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSCognitoIdentityProvider' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Cognito Identity Provider SDK for iOS (Beta)' s.description = 'Amazon Cognito Identity Provider enables sign up and authentication of your end users' @@ -13,8 +13,8 @@ Pod::Spec.new do |s| :tag => s.version} s.requires_arc = true s.frameworks = 'Security', 'UIKit' - s.dependency 'AWSCore', '2.33.8' - s.dependency 'AWSCognitoIdentityProviderASF', '2.33.8' + s.dependency 'AWSCore', '2.33.9' + s.dependency 'AWSCognitoIdentityProviderASF', '2.33.9' s.source_files = 'AWSCognitoIdentityProvider/**/*.{h,m,c}' s.public_header_files = 'AWSCognitoIdentityProvider/*.h' diff --git a/AWSCognitoIdentityProvider/AWSCognitoIdentityProviderService.m b/AWSCognitoIdentityProvider/AWSCognitoIdentityProviderService.m index 9d8045ae17b..7a873745ea1 100644 --- a/AWSCognitoIdentityProvider/AWSCognitoIdentityProviderService.m +++ b/AWSCognitoIdentityProvider/AWSCognitoIdentityProviderService.m @@ -25,7 +25,7 @@ #import "AWSCognitoIdentityProviderResources.h" static NSString *const AWSInfoCognitoIdentityProvider = @"CognitoIdentityProvider"; -NSString *const AWSCognitoIdentityProviderSDKVersion = @"2.33.8"; +NSString *const AWSCognitoIdentityProviderSDKVersion = @"2.33.9"; @interface AWSCognitoIdentityProviderResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSCognitoIdentityProvider/Info.plist b/AWSCognitoIdentityProvider/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSCognitoIdentityProvider/Info.plist +++ b/AWSCognitoIdentityProvider/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSCognitoIdentityProviderASF.podspec b/AWSCognitoIdentityProviderASF.podspec index 3ece8d421f7..53e239c3e84 100644 --- a/AWSCognitoIdentityProviderASF.podspec +++ b/AWSCognitoIdentityProviderASF.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSCognitoIdentityProviderASF' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Cognito Identity Provider Advanced Security Features library (Beta)' s.description = 'Amazon Cognito Identity Provider ASF provides the information necessary to support adaptive authentication' @@ -12,7 +12,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.public_header_files = 'AWSCognitoIdentityProviderASF/*.h' s.source_files = 'AWSCognitoIdentityProviderASF/**/*.{h,m,c}' s.private_header_files = 'AWSCognitoIdentityProviderASF/Internal/*.h' diff --git a/AWSCognitoIdentityProviderASF/Info.plist b/AWSCognitoIdentityProviderASF/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSCognitoIdentityProviderASF/Info.plist +++ b/AWSCognitoIdentityProviderASF/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSComprehend.podspec b/AWSComprehend.podspec index 896c44615d8..69c16be6b07 100644 --- a/AWSComprehend.podspec +++ b/AWSComprehend.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSComprehend' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSComprehend/*.{h,m}' end diff --git a/AWSComprehend/AWSComprehendService.m b/AWSComprehend/AWSComprehendService.m index d1cf0b730ce..73b64f4e21f 100644 --- a/AWSComprehend/AWSComprehendService.m +++ b/AWSComprehend/AWSComprehendService.m @@ -25,7 +25,7 @@ #import "AWSComprehendResources.h" static NSString *const AWSInfoComprehend = @"Comprehend"; -NSString *const AWSComprehendSDKVersion = @"2.33.8"; +NSString *const AWSComprehendSDKVersion = @"2.33.9"; @interface AWSComprehendResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSComprehend/Info.plist b/AWSComprehend/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSComprehend/Info.plist +++ b/AWSComprehend/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSConnect.podspec b/AWSConnect.podspec index 3d2b9c170e2..9ae7757af18 100644 --- a/AWSConnect.podspec +++ b/AWSConnect.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSConnect' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSConnect/*.{h,m}' end diff --git a/AWSConnect/AWSConnectService.m b/AWSConnect/AWSConnectService.m index 114944473e5..ce10d03c5b2 100644 --- a/AWSConnect/AWSConnectService.m +++ b/AWSConnect/AWSConnectService.m @@ -25,7 +25,7 @@ #import "AWSConnectResources.h" static NSString *const AWSInfoConnect = @"Connect"; -NSString *const AWSConnectSDKVersion = @"2.33.8"; +NSString *const AWSConnectSDKVersion = @"2.33.9"; @interface AWSConnectResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSConnect/Info.plist b/AWSConnect/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSConnect/Info.plist +++ b/AWSConnect/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSConnectParticipant.podspec b/AWSConnectParticipant.podspec index 0942228c9d8..08ef28092b8 100644 --- a/AWSConnectParticipant.podspec +++ b/AWSConnectParticipant.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSConnectParticipant' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSConnectParticipant/*.{h,m}' end diff --git a/AWSConnectParticipant/AWSConnectParticipantService.m b/AWSConnectParticipant/AWSConnectParticipantService.m index a004db77fb7..9e4772e4b20 100644 --- a/AWSConnectParticipant/AWSConnectParticipantService.m +++ b/AWSConnectParticipant/AWSConnectParticipantService.m @@ -25,7 +25,7 @@ #import "AWSConnectParticipantResources.h" static NSString *const AWSInfoConnectParticipant = @"ConnectParticipant"; -NSString *const AWSConnectParticipantSDKVersion = @"2.33.8"; +NSString *const AWSConnectParticipantSDKVersion = @"2.33.9"; @interface AWSConnectParticipantResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSConnectParticipant/Info.plist b/AWSConnectParticipant/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSConnectParticipant/Info.plist +++ b/AWSConnectParticipant/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSCore.podspec b/AWSCore.podspec index 91043f0aad6..46fe32371d3 100644 --- a/AWSCore.podspec +++ b/AWSCore.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSCore' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' diff --git a/AWSCore/Info.plist b/AWSCore/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSCore/Info.plist +++ b/AWSCore/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSCore/Service/AWSService.m b/AWSCore/Service/AWSService.m index 8d2f4d6ef9e..c8d504e3015 100644 --- a/AWSCore/Service/AWSService.m +++ b/AWSCore/Service/AWSService.m @@ -21,7 +21,7 @@ #import "AWSCocoaLumberjack.h" #import "AWSCategory.h" -NSString *const AWSiOSSDKVersion = @"2.33.8"; +NSString *const AWSiOSSDKVersion = @"2.33.9"; NSString *const AWSServiceErrorDomain = @"com.amazonaws.AWSServiceErrorDomain"; static NSString *const AWSServiceConfigurationUnknown = @"Unknown"; diff --git a/AWSDynamoDB.podspec b/AWSDynamoDB.podspec index 20eea63a31d..fdfd1c29690 100644 --- a/AWSDynamoDB.podspec +++ b/AWSDynamoDB.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSDynamoDB' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSDynamoDB/*.{h,m}' end diff --git a/AWSDynamoDB/AWSDynamoDBService.m b/AWSDynamoDB/AWSDynamoDBService.m index ccd76070aa0..0dc484885ba 100644 --- a/AWSDynamoDB/AWSDynamoDBService.m +++ b/AWSDynamoDB/AWSDynamoDBService.m @@ -26,7 +26,7 @@ #import "AWSDynamoDBRequestRetryHandler.h" static NSString *const AWSInfoDynamoDB = @"DynamoDB"; -NSString *const AWSDynamoDBSDKVersion = @"2.33.8"; +NSString *const AWSDynamoDBSDKVersion = @"2.33.9"; @interface AWSDynamoDBResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSDynamoDB/Info.plist b/AWSDynamoDB/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSDynamoDB/Info.plist +++ b/AWSDynamoDB/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSEC2.podspec b/AWSEC2.podspec index 016d2d41d88..08b1f061744 100644 --- a/AWSEC2.podspec +++ b/AWSEC2.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSEC2' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSEC2/*.{h,m}' end diff --git a/AWSEC2/AWSEC2Service.m b/AWSEC2/AWSEC2Service.m index 96b2c2bc967..599b0d5c76b 100644 --- a/AWSEC2/AWSEC2Service.m +++ b/AWSEC2/AWSEC2Service.m @@ -26,7 +26,7 @@ #import "AWSEC2Serializer.h" static NSString *const AWSInfoEC2 = @"EC2"; -NSString *const AWSEC2SDKVersion = @"2.33.8"; +NSString *const AWSEC2SDKVersion = @"2.33.9"; @interface AWSEC2ResponseSerializer : AWSXMLResponseSerializer diff --git a/AWSEC2/Info.plist b/AWSEC2/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSEC2/Info.plist +++ b/AWSEC2/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSElasticLoadBalancing.podspec b/AWSElasticLoadBalancing.podspec index 088715136cb..e927e617c8e 100644 --- a/AWSElasticLoadBalancing.podspec +++ b/AWSElasticLoadBalancing.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSElasticLoadBalancing' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSElasticLoadBalancing/*.{h,m}' end diff --git a/AWSElasticLoadBalancing/AWSElasticLoadBalancingService.m b/AWSElasticLoadBalancing/AWSElasticLoadBalancingService.m index f26247bc2df..9209554e69e 100644 --- a/AWSElasticLoadBalancing/AWSElasticLoadBalancingService.m +++ b/AWSElasticLoadBalancing/AWSElasticLoadBalancingService.m @@ -25,7 +25,7 @@ #import "AWSElasticLoadBalancingResources.h" static NSString *const AWSInfoElasticLoadBalancing = @"ElasticLoadBalancing"; -NSString *const AWSElasticLoadBalancingSDKVersion = @"2.33.8"; +NSString *const AWSElasticLoadBalancingSDKVersion = @"2.33.9"; @interface AWSElasticLoadBalancingResponseSerializer : AWSXMLResponseSerializer diff --git a/AWSElasticLoadBalancing/Info.plist b/AWSElasticLoadBalancing/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSElasticLoadBalancing/Info.plist +++ b/AWSElasticLoadBalancing/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSFacebookSignIn.podspec b/AWSFacebookSignIn.podspec index 6916e976b7c..1f9886fa52f 100644 --- a/AWSFacebookSignIn.podspec +++ b/AWSFacebookSignIn.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSFacebookSignIn' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,8 +12,8 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSAuthCore', '2.33.8' - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSAuthCore', '2.33.9' + s.dependency 'AWSCore', '2.33.9' s.dependency 'FBSDKLoginKit', '9.0' s.dependency 'FBSDKCoreKit', '9.0' diff --git a/AWSGoogleSignIn.podspec b/AWSGoogleSignIn.podspec index 13caf4ef5a4..107ea24dc33 100644 --- a/AWSGoogleSignIn.podspec +++ b/AWSGoogleSignIn.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSGoogleSignIn' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,8 +12,8 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSAuthCore', '2.33.8' - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSAuthCore', '2.33.9' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSAuthSDK/Sources/AWSGoogleSignIn/*.{h,m}', 'AWSAuthSDK/Dependencies/GoogleHeaders/*.h' s.public_header_files = 'AWSAuthSDK/Sources/AWSGoogleSignIn/*.h' s.private_header_files = 'AWSAuthSDK/Dependencies/GoogleHeaders/*.h' diff --git a/AWSIoT.podspec b/AWSIoT.podspec index a938d011e7a..e79cbd10ac0 100644 --- a/AWSIoT.podspec +++ b/AWSIoT.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSIoT' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,7 +12,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSIoT/*.{h,m}', 'AWSIoT/**/*.{h,m}' s.private_header_files = 'AWSIoT/Internal/*.h' end diff --git a/AWSIoT/AWSIoTDataService.m b/AWSIoT/AWSIoTDataService.m index ae55b2f2dae..6c5e238fe75 100644 --- a/AWSIoT/AWSIoTDataService.m +++ b/AWSIoT/AWSIoTDataService.m @@ -25,7 +25,7 @@ #import "AWSIoTDataResources.h" static NSString *const AWSInfoIoTData = @"IoTData"; -NSString *const AWSIoTDataSDKVersion = @"2.33.8"; +NSString *const AWSIoTDataSDKVersion = @"2.33.9"; @interface AWSIoTDataResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSIoT/AWSIoTService.m b/AWSIoT/AWSIoTService.m index ade7545a370..3b8535b4ca6 100644 --- a/AWSIoT/AWSIoTService.m +++ b/AWSIoT/AWSIoTService.m @@ -25,7 +25,7 @@ #import "AWSIoTResources.h" static NSString *const AWSInfoIoT = @"IoT"; -NSString *const AWSIoTSDKVersion = @"2.33.8"; +NSString *const AWSIoTSDKVersion = @"2.33.9"; @interface AWSIoTResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSIoT/Info.plist b/AWSIoT/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSIoT/Info.plist +++ b/AWSIoT/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSKMS.podspec b/AWSKMS.podspec index 93bbcf8bef9..8bd6fa73a95 100644 --- a/AWSKMS.podspec +++ b/AWSKMS.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSKMS' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSKMS/*.{h,m}' end diff --git a/AWSKMS/AWSKMSService.m b/AWSKMS/AWSKMSService.m index 39e6333fae2..9f0f576bbf9 100644 --- a/AWSKMS/AWSKMSService.m +++ b/AWSKMS/AWSKMSService.m @@ -25,7 +25,7 @@ #import "AWSKMSResources.h" static NSString *const AWSInfoKMS = @"KMS"; -NSString *const AWSKMSSDKVersion = @"2.33.8"; +NSString *const AWSKMSSDKVersion = @"2.33.9"; @interface AWSKMSResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSKMS/Info.plist b/AWSKMS/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSKMS/Info.plist +++ b/AWSKMS/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSKinesis.podspec b/AWSKinesis.podspec index fa901bba9e9..37f596e92e3 100644 --- a/AWSKinesis.podspec +++ b/AWSKinesis.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSKinesis' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,7 +12,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSKinesis/*.{h,m}', 'AWSKinesis/**/*.{h,m}' s.private_header_files = 'AWSKinesis/Internal/*.h' end diff --git a/AWSKinesis/AWSFirehoseService.m b/AWSKinesis/AWSFirehoseService.m index 81e237263e2..8dca1f0ae4c 100644 --- a/AWSKinesis/AWSFirehoseService.m +++ b/AWSKinesis/AWSFirehoseService.m @@ -26,7 +26,7 @@ #import "AWSFirehoseSerializer.h" static NSString *const AWSInfoFirehose = @"Firehose"; -NSString *const AWSFirehoseSDKVersion = @"2.33.8"; +NSString *const AWSFirehoseSDKVersion = @"2.33.9"; @interface AWSFirehoseResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSKinesis/AWSKinesisService.m b/AWSKinesis/AWSKinesisService.m index f365c57762a..dc5443add16 100644 --- a/AWSKinesis/AWSKinesisService.m +++ b/AWSKinesis/AWSKinesisService.m @@ -28,7 +28,7 @@ #import "AWSKinesisSerializer.h" static NSString *const AWSInfoKinesis = @"Kinesis"; -NSString *const AWSKinesisSDKVersion = @"2.33.8"; +NSString *const AWSKinesisSDKVersion = @"2.33.9"; @interface AWSKinesisResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSKinesis/Info.plist b/AWSKinesis/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSKinesis/Info.plist +++ b/AWSKinesis/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSKinesisVideo.podspec b/AWSKinesisVideo.podspec index c68966ec1f5..fb4cebb0b72 100644 --- a/AWSKinesisVideo.podspec +++ b/AWSKinesisVideo.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSKinesisVideo' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSKinesisVideo/*.{h,m}' end diff --git a/AWSKinesisVideo/AWSKinesisVideoService.m b/AWSKinesisVideo/AWSKinesisVideoService.m index 51882bf9df1..3a93ebdb4b9 100644 --- a/AWSKinesisVideo/AWSKinesisVideoService.m +++ b/AWSKinesisVideo/AWSKinesisVideoService.m @@ -25,7 +25,7 @@ #import "AWSKinesisVideoResources.h" static NSString *const AWSInfoKinesisVideo = @"KinesisVideo"; -NSString *const AWSKinesisVideoSDKVersion = @"2.33.8"; +NSString *const AWSKinesisVideoSDKVersion = @"2.33.9"; @interface AWSKinesisVideoResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSKinesisVideo/Info.plist b/AWSKinesisVideo/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSKinesisVideo/Info.plist +++ b/AWSKinesisVideo/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSKinesisVideoArchivedMedia.podspec b/AWSKinesisVideoArchivedMedia.podspec index 631a8403a84..9ed7e0a70d1 100644 --- a/AWSKinesisVideoArchivedMedia.podspec +++ b/AWSKinesisVideoArchivedMedia.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSKinesisVideoArchivedMedia' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSKinesisVideoArchivedMedia/*.{h,m}' end diff --git a/AWSKinesisVideoArchivedMedia/AWSKinesisVideoArchivedMediaService.m b/AWSKinesisVideoArchivedMedia/AWSKinesisVideoArchivedMediaService.m index 3baa3483c75..1319a69a3bd 100644 --- a/AWSKinesisVideoArchivedMedia/AWSKinesisVideoArchivedMediaService.m +++ b/AWSKinesisVideoArchivedMedia/AWSKinesisVideoArchivedMediaService.m @@ -25,7 +25,7 @@ #import "AWSKinesisVideoArchivedMediaResources.h" static NSString *const AWSInfoKinesisVideoArchivedMedia = @"KinesisVideoArchivedMedia"; -NSString *const AWSKinesisVideoArchivedMediaSDKVersion = @"2.33.8"; +NSString *const AWSKinesisVideoArchivedMediaSDKVersion = @"2.33.9"; @interface AWSKinesisVideoArchivedMediaResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSKinesisVideoArchivedMedia/Info.plist b/AWSKinesisVideoArchivedMedia/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSKinesisVideoArchivedMedia/Info.plist +++ b/AWSKinesisVideoArchivedMedia/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSKinesisVideoSignaling.podspec b/AWSKinesisVideoSignaling.podspec index 259bede8e22..83ad9bb4c8d 100644 --- a/AWSKinesisVideoSignaling.podspec +++ b/AWSKinesisVideoSignaling.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSKinesisVideoSignaling' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSKinesisVideoSignaling/*.{h,m}' end diff --git a/AWSKinesisVideoSignaling/AWSKinesisVideoSignalingService.m b/AWSKinesisVideoSignaling/AWSKinesisVideoSignalingService.m index 40f76ab9075..b25c7e46d9f 100644 --- a/AWSKinesisVideoSignaling/AWSKinesisVideoSignalingService.m +++ b/AWSKinesisVideoSignaling/AWSKinesisVideoSignalingService.m @@ -25,7 +25,7 @@ #import "AWSKinesisVideoSignalingResources.h" static NSString *const AWSInfoKinesisVideoSignaling = @"KinesisVideoSignaling"; -NSString *const AWSKinesisVideoSignalingSDKVersion = @"2.33.8"; +NSString *const AWSKinesisVideoSignalingSDKVersion = @"2.33.9"; @interface AWSKinesisVideoSignalingResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSKinesisVideoSignaling/Info.plist b/AWSKinesisVideoSignaling/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSKinesisVideoSignaling/Info.plist +++ b/AWSKinesisVideoSignaling/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSKinesisVideoWebRTCStorage.podspec b/AWSKinesisVideoWebRTCStorage.podspec index 4a624b0e8e6..68a9415f45c 100644 --- a/AWSKinesisVideoWebRTCStorage.podspec +++ b/AWSKinesisVideoWebRTCStorage.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSKinesisVideoWebRTCStorage' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSKinesisVideoWebRTCStorage/*.{h,m}' end diff --git a/AWSKinesisVideoWebRTCStorage/AWSKinesisVideoWebRTCStorageService.m b/AWSKinesisVideoWebRTCStorage/AWSKinesisVideoWebRTCStorageService.m index 9b61a4fb7f6..06df60a3b66 100644 --- a/AWSKinesisVideoWebRTCStorage/AWSKinesisVideoWebRTCStorageService.m +++ b/AWSKinesisVideoWebRTCStorage/AWSKinesisVideoWebRTCStorageService.m @@ -25,7 +25,7 @@ #import "AWSKinesisVideoWebRTCStorageResources.h" static NSString *const AWSInfoKinesisVideoWebRTCStorage = @"KinesisVideoWebRTCStorage"; -NSString *const AWSKinesisVideoWebRTCStorageSDKVersion = @"2.33.8"; +NSString *const AWSKinesisVideoWebRTCStorageSDKVersion = @"2.33.9"; @interface AWSKinesisVideoWebRTCStorageResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSKinesisVideoWebRTCStorage/Info.plist b/AWSKinesisVideoWebRTCStorage/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSKinesisVideoWebRTCStorage/Info.plist +++ b/AWSKinesisVideoWebRTCStorage/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSLambda.podspec b/AWSLambda.podspec index ce318747791..919f8e89a01 100644 --- a/AWSLambda.podspec +++ b/AWSLambda.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSLambda' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSLambda/*.{h,m}' end diff --git a/AWSLambda/AWSLambdaService.m b/AWSLambda/AWSLambdaService.m index 6b07eab08ac..06ae179c759 100644 --- a/AWSLambda/AWSLambdaService.m +++ b/AWSLambda/AWSLambdaService.m @@ -26,7 +26,7 @@ #import "AWSLambdaRequestRetryHandler.h" static NSString *const AWSInfoLambda = @"Lambda"; -NSString *const AWSLambdaSDKVersion = @"2.33.8"; +NSString *const AWSLambdaSDKVersion = @"2.33.9"; @interface AWSLambdaResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSLambda/Info.plist b/AWSLambda/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSLambda/Info.plist +++ b/AWSLambda/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSLex.podspec b/AWSLex.podspec index 9f82ac73432..004ad1a73eb 100644 --- a/AWSLex.podspec +++ b/AWSLex.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSLex' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,7 +12,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSLex/*.{h,m}', 'AWSLex/Bluefront/include/*.h' s.public_header_files = 'AWSLex/*.h' s.private_header_files = 'AWSLex/Bluefront/include/*.h' diff --git a/AWSLex/AWSLexInteractionKit.m b/AWSLex/AWSLexInteractionKit.m index d098ecda6d7..f38cfea347f 100644 --- a/AWSLex/AWSLexInteractionKit.m +++ b/AWSLex/AWSLexInteractionKit.m @@ -22,7 +22,7 @@ #import NSString *const AWSInfoInteractionKit = @"LexInteractionKit"; -NSString *const AWSInteractionKitSDKVersion = @"2.33.8"; +NSString *const AWSInteractionKitSDKVersion = @"2.33.9"; NSString *const AWSInternalLexInteractionKit = @"LexInteractionKitClient"; NSString *const AWSLexInteractionKitUserAgent = @"interactionkit"; NSString *const AWSLexInteractionKitErrorDomain = @"com.amazonaws.AWSLexInteractionKitErrorDomain"; diff --git a/AWSLex/AWSLexService.m b/AWSLex/AWSLexService.m index 6deeb404730..4a571db374d 100644 --- a/AWSLex/AWSLexService.m +++ b/AWSLex/AWSLexService.m @@ -27,7 +27,7 @@ #import "AWSLexSignature.h" static NSString *const AWSInfoLex = @"Lex"; -NSString *const AWSLexSDKVersion = @"2.33.8"; +NSString *const AWSLexSDKVersion = @"2.33.9"; @interface AWSLexResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSLex/Info.plist b/AWSLex/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSLex/Info.plist +++ b/AWSLex/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSLocation.podspec b/AWSLocation.podspec index 38a1404eb6a..a31d70dc5f5 100644 --- a/AWSLocation.podspec +++ b/AWSLocation.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSLocation' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSLocation/*.{h,m}', 'AWSLocation/AWSLocationTracker/**/*.swift' end diff --git a/AWSLocation/AWSLocationService.m b/AWSLocation/AWSLocationService.m index 50700941eb3..fe86b4904fd 100644 --- a/AWSLocation/AWSLocationService.m +++ b/AWSLocation/AWSLocationService.m @@ -25,7 +25,7 @@ #import "AWSLocationResources.h" static NSString *const AWSInfoLocation = @"Location"; -NSString *const AWSLocationSDKVersion = @"2.33.8"; +NSString *const AWSLocationSDKVersion = @"2.33.9"; @interface AWSLocationResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSLocation/Info.plist b/AWSLocation/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSLocation/Info.plist +++ b/AWSLocation/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSLocationXCF/Info.plist b/AWSLocationXCF/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSLocationXCF/Info.plist +++ b/AWSLocationXCF/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSLogs.podspec b/AWSLogs.podspec index ae11fc73e76..3ead0e07db5 100644 --- a/AWSLogs.podspec +++ b/AWSLogs.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSLogs' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSLogs/*.{h,m}' end diff --git a/AWSLogs/AWSLogsService.m b/AWSLogs/AWSLogsService.m index 88b297df1d3..f755f16bdd2 100644 --- a/AWSLogs/AWSLogsService.m +++ b/AWSLogs/AWSLogsService.m @@ -25,7 +25,7 @@ #import "AWSLogsResources.h" static NSString *const AWSInfoLogs = @"Logs"; -NSString *const AWSLogsSDKVersion = @"2.33.8"; +NSString *const AWSLogsSDKVersion = @"2.33.9"; @interface AWSLogsResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSLogs/Info.plist b/AWSLogs/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSLogs/Info.plist +++ b/AWSLogs/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSMachineLearning.podspec b/AWSMachineLearning.podspec index c51d69c5a0b..5110f2f7bc3 100644 --- a/AWSMachineLearning.podspec +++ b/AWSMachineLearning.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSMachineLearning' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSMachineLearning/*.{h,m}' end diff --git a/AWSMachineLearning/AWSMachineLearningService.m b/AWSMachineLearning/AWSMachineLearningService.m index 6d405cef296..4d2ee4839d0 100644 --- a/AWSMachineLearning/AWSMachineLearningService.m +++ b/AWSMachineLearning/AWSMachineLearningService.m @@ -26,7 +26,7 @@ #import "AWSMachineLearningResources.h" static NSString *const AWSInfoMachineLearning = @"MachineLearning"; -NSString *const AWSMachineLearningSDKVersion = @"2.33.8"; +NSString *const AWSMachineLearningSDKVersion = @"2.33.9"; @interface AWSMachineLearningResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSMachineLearning/Info.plist b/AWSMachineLearning/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSMachineLearning/Info.plist +++ b/AWSMachineLearning/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSMobileClient.podspec b/AWSMobileClient.podspec index 9c1ebd53896..6e969d277dc 100644 --- a/AWSMobileClient.podspec +++ b/AWSMobileClient.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSMobileClient' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -13,14 +13,14 @@ Pod::Spec.new do |s| :tag => s.version} s.requires_arc = true - s.dependency 'AWSAuthCore', '2.33.8' - s.dependency 'AWSCognitoIdentityProvider', '2.33.8' + s.dependency 'AWSAuthCore', '2.33.9' + s.dependency 'AWSCognitoIdentityProvider', '2.33.9' # Include transitive dependencies to help CocoaPods resolve deeply nested # dependency graphs; without this we get sporadic failures compiling when a # project relies on AWSMobileClient - s.dependency 'AWSCore', '2.33.8' - s.dependency 'AWSCognitoIdentityProviderASF', '2.33.8' + s.dependency 'AWSCore', '2.33.9' + s.dependency 'AWSCognitoIdentityProviderASF', '2.33.9' s.source_files = 'AWSAuthSDK/Sources/AWSMobileClient/*.{h,m}', 'AWSAuthSDK/Sources/AWSMobileClient/Internal/*.{h,m}', 'AWSAuthSDK/Sources/AWSMobileClient/**/*.swift', 'AWSCognitoAuth/**/*.{h,m,c}' s.public_header_files = 'AWSAuthSDK/Sources/AWSMobileClient/AWSMobileClient.h', 'AWSAuthSDK/Sources/AWSMobileClient/Internal/_AWSMobileClient.h', 'AWSCognitoAuth/*.h', 'AWSAuthSDK/Sources/AWSMobileClient/Internal/AWSCognitoAuth+Extensions.h', 'AWSAuthSDK/Sources/AWSMobileClient/Internal/AWSCognitoCredentialsProvider+Extension.h', 'AWSAuthSDK/Sources/AWSMobileClient/Internal/AWSCognitoIdentityUserPool+Extension.h' diff --git a/AWSPinpoint.podspec b/AWSPinpoint.podspec index bef93aed0fb..bcdf7f3a56d 100644 --- a/AWSPinpoint.podspec +++ b/AWSPinpoint.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSPinpoint' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,7 +12,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSPinpoint/*.{h,m}', 'AWSPinpoint/**/*.{h,m}' s.private_header_files = 'AWSPinpoint/Internal/*.h' end diff --git a/AWSPinpoint/AWSPinpointTargeting/AWSPinpointTargetingService.m b/AWSPinpoint/AWSPinpointTargeting/AWSPinpointTargetingService.m index 12f5468fd45..62bd61c4fcf 100644 --- a/AWSPinpoint/AWSPinpointTargeting/AWSPinpointTargetingService.m +++ b/AWSPinpoint/AWSPinpointTargeting/AWSPinpointTargetingService.m @@ -25,7 +25,7 @@ #import "AWSPinpointTargetingResources.h" static NSString *const AWSInfoPinpointTargeting = @"PinpointTargeting"; -NSString *const AWSPinpointTargetingSDKVersion = @"2.33.8"; +NSString *const AWSPinpointTargetingSDKVersion = @"2.33.9"; @interface AWSPinpointTargetingResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSPinpoint/Info.plist b/AWSPinpoint/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSPinpoint/Info.plist +++ b/AWSPinpoint/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSPolly.podspec b/AWSPolly.podspec index d9226a5c2ff..089972b0b3c 100644 --- a/AWSPolly.podspec +++ b/AWSPolly.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSPolly' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSPolly/*.{h,m}' end diff --git a/AWSPolly/AWSPollyService.m b/AWSPolly/AWSPollyService.m index 5759c86798c..e6a891f1723 100644 --- a/AWSPolly/AWSPollyService.m +++ b/AWSPolly/AWSPollyService.m @@ -25,7 +25,7 @@ #import "AWSPollyResources.h" static NSString *const AWSInfoPolly = @"Polly"; -NSString *const AWSPollySDKVersion = @"2.33.8"; +NSString *const AWSPollySDKVersion = @"2.33.9"; @interface AWSPollyResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSPolly/AWSPollySynthesizeSpeechURLBuilder.m b/AWSPolly/AWSPollySynthesizeSpeechURLBuilder.m index a382f4405fd..6b9ba385d67 100644 --- a/AWSPolly/AWSPollySynthesizeSpeechURLBuilder.m +++ b/AWSPolly/AWSPollySynthesizeSpeechURLBuilder.m @@ -16,7 +16,7 @@ #import "AWSPollySynthesizeSpeechURLBuilder.h" static NSString *const AWSInfoPollySynthesizeSpeechURLBuilder = @"PollySynthesizeSpeechUrlBuilder"; -static NSString *const AWSPollySDKVersion = @"2.33.8"; +static NSString *const AWSPollySDKVersion = @"2.33.9"; NSString *const AWSPollySynthesizeSpeechURLBuilderErrorDomain = @"com.amazonaws.AWSPollySynthesizeSpeechURLBuilderErrorDomain"; NSString *const AWSPollyPresignedUrlPath = @"v1/speech"; diff --git a/AWSPolly/Info.plist b/AWSPolly/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSPolly/Info.plist +++ b/AWSPolly/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSRekognition.podspec b/AWSRekognition.podspec index 4fdcfc2b0f0..24ccdcc06e1 100644 --- a/AWSRekognition.podspec +++ b/AWSRekognition.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSRekognition' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSRekognition/*.{h,m}' end diff --git a/AWSRekognition/AWSRekognitionService.m b/AWSRekognition/AWSRekognitionService.m index a75c999cd77..85481423cb7 100644 --- a/AWSRekognition/AWSRekognitionService.m +++ b/AWSRekognition/AWSRekognitionService.m @@ -25,7 +25,7 @@ #import "AWSRekognitionResources.h" static NSString *const AWSInfoRekognition = @"Rekognition"; -NSString *const AWSRekognitionSDKVersion = @"2.33.8"; +NSString *const AWSRekognitionSDKVersion = @"2.33.9"; @interface AWSRekognitionResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSRekognition/Info.plist b/AWSRekognition/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSRekognition/Info.plist +++ b/AWSRekognition/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSS3.podspec b/AWSS3.podspec index fd9ffefbcf1..6df067721f0 100644 --- a/AWSS3.podspec +++ b/AWSS3.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSS3' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSS3/*.{h,m}' end diff --git a/AWSS3/AWSS3PreSignedURL.m b/AWSS3/AWSS3PreSignedURL.m index 0d64eba8686..8305550269c 100644 --- a/AWSS3/AWSS3PreSignedURL.m +++ b/AWSS3/AWSS3PreSignedURL.m @@ -26,7 +26,7 @@ static NSString *const AWSS3PreSignedURLBuilderAcceleratedEndpoint = @"s3-accelerate.amazonaws.com"; static NSString *const AWSInfoS3PreSignedURLBuilder = @"S3PreSignedURLBuilder"; -static NSString *const AWSS3PreSignedURLBuilderSDKVersion = @"2.33.8"; +static NSString *const AWSS3PreSignedURLBuilderSDKVersion = @"2.33.9"; @interface AWSS3PreSignedURLBuilder() diff --git a/AWSS3/AWSS3Service.m b/AWSS3/AWSS3Service.m index 36e7022d723..1643db98378 100644 --- a/AWSS3/AWSS3Service.m +++ b/AWSS3/AWSS3Service.m @@ -27,7 +27,7 @@ #import "AWSS3Serializer.h" static NSString *const AWSInfoS3 = @"S3"; -NSString *const AWSS3SDKVersion = @"2.33.8"; +NSString *const AWSS3SDKVersion = @"2.33.9"; diff --git a/AWSS3/Info.plist b/AWSS3/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSS3/Info.plist +++ b/AWSS3/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSSES.podspec b/AWSSES.podspec index deb1a86c06a..9b7f91565ca 100644 --- a/AWSSES.podspec +++ b/AWSSES.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSSES' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSSES/*.{h,m}' end diff --git a/AWSSES/AWSSESService.m b/AWSSES/AWSSESService.m index 70c696e236c..ad8821e0f3a 100644 --- a/AWSSES/AWSSESService.m +++ b/AWSSES/AWSSESService.m @@ -25,7 +25,7 @@ #import "AWSSESResources.h" static NSString *const AWSInfoSES = @"SES"; -NSString *const AWSSESSDKVersion = @"2.33.8"; +NSString *const AWSSESSDKVersion = @"2.33.9"; @interface AWSSESResponseSerializer : AWSXMLResponseSerializer diff --git a/AWSSES/Info.plist b/AWSSES/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSSES/Info.plist +++ b/AWSSES/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSSNS.podspec b/AWSSNS.podspec index 8cc09d39517..119dfc68e99 100644 --- a/AWSSNS.podspec +++ b/AWSSNS.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSSNS' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSSNS/*.{h,m}' end diff --git a/AWSSNS/AWSSNSService.m b/AWSSNS/AWSSNSService.m index 23209a25bad..90e9668ffe3 100644 --- a/AWSSNS/AWSSNSService.m +++ b/AWSSNS/AWSSNSService.m @@ -25,7 +25,7 @@ #import "AWSSNSResources.h" static NSString *const AWSInfoSNS = @"SNS"; -NSString *const AWSSNSSDKVersion = @"2.33.8"; +NSString *const AWSSNSSDKVersion = @"2.33.9"; @interface AWSSNSResponseSerializer : AWSXMLResponseSerializer diff --git a/AWSSNS/Info.plist b/AWSSNS/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSSNS/Info.plist +++ b/AWSSNS/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSSQS.podspec b/AWSSQS.podspec index fb4ec204f55..3a3bc2133f1 100644 --- a/AWSSQS.podspec +++ b/AWSSQS.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSSQS' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSSQS/*.{h,m}' end diff --git a/AWSSQS/AWSSQSService.m b/AWSSQS/AWSSQSService.m index 1d9ae5ea783..050261d9b50 100644 --- a/AWSSQS/AWSSQSService.m +++ b/AWSSQS/AWSSQSService.m @@ -25,7 +25,7 @@ #import "AWSSQSResources.h" static NSString *const AWSInfoSQS = @"SQS"; -NSString *const AWSSQSSDKVersion = @"2.33.8"; +NSString *const AWSSQSSDKVersion = @"2.33.9"; @interface AWSSQSResponseSerializer : AWSXMLResponseSerializer diff --git a/AWSSQS/Info.plist b/AWSSQS/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSSQS/Info.plist +++ b/AWSSQS/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSSageMakerRuntime.podspec b/AWSSageMakerRuntime.podspec index 2137cf7595f..94d4f86eab5 100644 --- a/AWSSageMakerRuntime.podspec +++ b/AWSSageMakerRuntime.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSSageMakerRuntime' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSSageMakerRuntime/*.{h,m}' end diff --git a/AWSSageMakerRuntime/AWSSageMakerRuntimeService.m b/AWSSageMakerRuntime/AWSSageMakerRuntimeService.m index a30a4f2ac27..7565bf63965 100644 --- a/AWSSageMakerRuntime/AWSSageMakerRuntimeService.m +++ b/AWSSageMakerRuntime/AWSSageMakerRuntimeService.m @@ -25,7 +25,7 @@ #import "AWSSageMakerRuntimeResources.h" static NSString *const AWSInfoSageMakerRuntime = @"SageMakerRuntime"; -NSString *const AWSSageMakerRuntimeSDKVersion = @"2.33.8"; +NSString *const AWSSageMakerRuntimeSDKVersion = @"2.33.9"; @interface AWSSageMakerRuntimeResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSSageMakerRuntime/Info.plist b/AWSSageMakerRuntime/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSSageMakerRuntime/Info.plist +++ b/AWSSageMakerRuntime/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSSimpleDB.podspec b/AWSSimpleDB.podspec index c89a716b025..d6f41cf7688 100644 --- a/AWSSimpleDB.podspec +++ b/AWSSimpleDB.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSSimpleDB' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSSimpleDB/*.{h,m}' end diff --git a/AWSSimpleDB/AWSSimpleDBService.m b/AWSSimpleDB/AWSSimpleDBService.m index bc6387a29fa..19969f9d7c6 100644 --- a/AWSSimpleDB/AWSSimpleDBService.m +++ b/AWSSimpleDB/AWSSimpleDBService.m @@ -25,7 +25,7 @@ #import "AWSSimpleDBResources.h" static NSString *const AWSInfoSimpleDB = @"SimpleDB"; -NSString *const AWSSimpleDBSDKVersion = @"2.33.8"; +NSString *const AWSSimpleDBSDKVersion = @"2.33.9"; @interface AWSSimpleDBResponseSerializer : AWSXMLResponseSerializer diff --git a/AWSSimpleDB/Info.plist b/AWSSimpleDB/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSSimpleDB/Info.plist +++ b/AWSSimpleDB/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSTextract.podspec b/AWSTextract.podspec index a0ec4e7024f..27d87a40852 100644 --- a/AWSTextract.podspec +++ b/AWSTextract.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSTextract' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSTextract/*.{h,m}' end diff --git a/AWSTextract/AWSTextractService.m b/AWSTextract/AWSTextractService.m index 8229dee55a2..d887c89cfb8 100644 --- a/AWSTextract/AWSTextractService.m +++ b/AWSTextract/AWSTextractService.m @@ -25,7 +25,7 @@ #import "AWSTextractResources.h" static NSString *const AWSInfoTextract = @"Textract"; -NSString *const AWSTextractSDKVersion = @"2.33.8"; +NSString *const AWSTextractSDKVersion = @"2.33.9"; @interface AWSTextractResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSTextract/Info.plist b/AWSTextract/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSTextract/Info.plist +++ b/AWSTextract/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSTranscribe.podspec b/AWSTranscribe.podspec index 7eced1bec06..321dd88928b 100644 --- a/AWSTranscribe.podspec +++ b/AWSTranscribe.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSTranscribe' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSTranscribe/*.{h,m}' end diff --git a/AWSTranscribe/AWSTranscribeService.m b/AWSTranscribe/AWSTranscribeService.m index 8fe0c17f606..179d19a2735 100644 --- a/AWSTranscribe/AWSTranscribeService.m +++ b/AWSTranscribe/AWSTranscribeService.m @@ -25,7 +25,7 @@ #import "AWSTranscribeResources.h" static NSString *const AWSInfoTranscribe = @"Transcribe"; -NSString *const AWSTranscribeSDKVersion = @"2.33.8"; +NSString *const AWSTranscribeSDKVersion = @"2.33.9"; @interface AWSTranscribeResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSTranscribe/Info.plist b/AWSTranscribe/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSTranscribe/Info.plist +++ b/AWSTranscribe/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSTranscribeStreaming.podspec b/AWSTranscribeStreaming.podspec index e327cb1d54d..bad5c54a468 100644 --- a/AWSTranscribeStreaming.podspec +++ b/AWSTranscribeStreaming.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSTranscribeStreaming' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,7 +12,7 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSTranscribeStreaming/*.{h,m}', 'AWSTranscribeStreaming/**/*.{h,m}', 'AWSIoT/Internal/SocketRocket/*.{h,m}' s.private_header_files = 'AWSTranscribeStreaming/Internal/*.h', 'AWSIoT/Internal/SocketRocket/*.h' end diff --git a/AWSTranscribeStreaming/AWSTranscribeStreamingService.m b/AWSTranscribeStreaming/AWSTranscribeStreamingService.m index ed7588c50c1..f106f3a0d29 100644 --- a/AWSTranscribeStreaming/AWSTranscribeStreamingService.m +++ b/AWSTranscribeStreaming/AWSTranscribeStreamingService.m @@ -33,7 +33,7 @@ NSString *const AWSTranscribeStreamingClientErrorDomain = @"com.amazonaws.AWSTranscribeStreamingClientErrorDomain"; static NSString *const AWSInfoTranscribeStreaming = @"TranscribeStreaming"; -NSString *const AWSTranscribeStreamingSDKVersion = @"2.33.8"; +NSString *const AWSTranscribeStreamingSDKVersion = @"2.33.9"; @interface AWSTranscribeStreamingResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSTranscribeStreaming/Info.plist b/AWSTranscribeStreaming/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSTranscribeStreaming/Info.plist +++ b/AWSTranscribeStreaming/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSTranslate.podspec b/AWSTranslate.podspec index 597d14d56ad..8a037577f4b 100644 --- a/AWSTranslate.podspec +++ b/AWSTranslate.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSTranslate' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,6 +12,6 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSTranslate/*.{h,m}' end diff --git a/AWSTranslate/AWSTranslateService.m b/AWSTranslate/AWSTranslateService.m index 07f546491a0..c66f527ef04 100644 --- a/AWSTranslate/AWSTranslateService.m +++ b/AWSTranslate/AWSTranslateService.m @@ -25,7 +25,7 @@ #import "AWSTranslateResources.h" static NSString *const AWSInfoTranslate = @"Translate"; -NSString *const AWSTranslateSDKVersion = @"2.33.8"; +NSString *const AWSTranslateSDKVersion = @"2.33.9"; @interface AWSTranslateResponseSerializer : AWSJSONResponseSerializer diff --git a/AWSTranslate/Info.plist b/AWSTranslate/Info.plist index 79de448a06d..24a73915439 100644 --- a/AWSTranslate/Info.plist +++ b/AWSTranslate/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.33.8 + 2.33.9 CFBundleSignature ???? CFBundleVersion diff --git a/AWSUserPoolsSignIn.podspec b/AWSUserPoolsSignIn.podspec index e7bfb426f4e..2eb747caf7a 100644 --- a/AWSUserPoolsSignIn.podspec +++ b/AWSUserPoolsSignIn.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AWSUserPoolsSignIn' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.description = 'The AWS SDK for iOS provides a library, code samples, and documentation for developers to build connected mobile applications using AWS.' @@ -12,9 +12,9 @@ Pod::Spec.new do |s| s.source = { :git => 'https://github.com/aws-amplify/aws-sdk-ios.git', :tag => s.version} s.requires_arc = true - s.dependency 'AWSCognitoIdentityProvider', '2.33.8' - s.dependency 'AWSAuthCore', '2.33.8' - s.dependency 'AWSCore', '2.33.8' + s.dependency 'AWSCognitoIdentityProvider', '2.33.9' + s.dependency 'AWSAuthCore', '2.33.9' + s.dependency 'AWSCore', '2.33.9' s.source_files = 'AWSAuthSDK/Sources/AWSUserPoolsSignIn/**/*.{h,m}' s.public_header_files = 'AWSAuthSDK/Sources/AWSUserPoolsSignIn/*.{h}' s.private_header_files = 'AWSAuthSDK/Sources/AWSUserPoolsSignIn/UserPoolsUI/*.{h}' diff --git a/AWSiOSSDKv2.podspec b/AWSiOSSDKv2.podspec index 23d0d004dd3..508e9f33c69 100644 --- a/AWSiOSSDKv2.podspec +++ b/AWSiOSSDKv2.podspec @@ -1,7 +1,7 @@ Pod::Spec.new do |s| s.name = 'AWSiOSSDKv2' - s.version = '2.33.8' + s.version = '2.33.9' s.summary = 'Amazon Web Services SDK for iOS.' s.deprecated = true @@ -18,135 +18,135 @@ Pod::Spec.new do |s| # Used by many of the service-api subspecs s.subspec 'AWSCognitoIdentityProvider' do |sub| - sub.dependency 'AWSCognitoIdentityProvider', '2.33.8' + sub.dependency 'AWSCognitoIdentityProvider', '2.33.9' end # Used by all service-api subspecs s.subspec 'AWSCore' do |sub| - sub.dependency 'AWSCore', '2.33.8' + sub.dependency 'AWSCore', '2.33.9' end # Service-api subspecs s.subspec 'AWSAPIGateway' do |sub| - sub.dependency 'AWSAPIGateway', '2.33.8' + sub.dependency 'AWSAPIGateway', '2.33.9' end s.subspec 'AutoScaling' do |sub| - sub.dependency 'AWSAutoScaling', '2.33.8' + sub.dependency 'AWSAutoScaling', '2.33.9' end s.subspec 'CloudWatch' do |sub| - sub.dependency 'AWSCloudWatch', '2.33.8' + sub.dependency 'AWSCloudWatch', '2.33.9' end s.subspec 'AWSComprehend' do |sub| - sub.dependency 'AWSComprehend', '2.33.8' + sub.dependency 'AWSComprehend', '2.33.9' end s.subspec 'AWSConnect' do |sub| - sub.dependency 'AWSConnect', '2.33.8' + sub.dependency 'AWSConnect', '2.33.9' end s.subspec 'AWSConnectParticipant' do |sub| - sub.dependency 'AWSConnectParticipant', '2.33.8' + sub.dependency 'AWSConnectParticipant', '2.33.9' end s.subspec 'DynamoDB' do |sub| - sub.dependency 'AWSDynamoDB', '2.33.8' + sub.dependency 'AWSDynamoDB', '2.33.9' end s.subspec 'EC2' do |sub| - sub.dependency 'AWSEC2', '2.33.8' + sub.dependency 'AWSEC2', '2.33.9' end s.subspec 'ElasticLoadBalancing' do |sub| - sub.dependency 'AWSElasticLoadBalancing', '2.33.8' + sub.dependency 'AWSElasticLoadBalancing', '2.33.9' end s.subspec 'AWSIoT' do |sub| - sub.dependency 'AWSIoT', '2.33.8' + sub.dependency 'AWSIoT', '2.33.9' end s.subspec 'AWSKMS' do |sub| - sub.dependency 'AWSKMS', '2.33.8' + sub.dependency 'AWSKMS', '2.33.9' end s.subspec 'Kinesis' do |sub| - sub.dependency 'AWSKinesis', '2.33.8' + sub.dependency 'AWSKinesis', '2.33.9' end # KinesisVideo not released as part of AWSiOSSDKv2 # KinesisVideoArchivedMedia not released as part of AWSiOSSDKv2 s.subspec 'KinesisVideoSignaling' do |sub| - sub.dependency 'AWSKinesisVideoSignaling', '2.33.8' + sub.dependency 'AWSKinesisVideoSignaling', '2.33.9' end s.subspec 'AWSLambda' do |sub| - sub.dependency 'AWSLambda', '2.33.8' + sub.dependency 'AWSLambda', '2.33.9' end s.subspec 'AWSLex' do |sub| - sub.dependency 'AWSLex', '2.33.8' + sub.dependency 'AWSLex', '2.33.9' end s.subspec 'AWSLogs' do |sub| - sub.dependency 'AWSLogs', '2.33.8' + sub.dependency 'AWSLogs', '2.33.9' end s.subspec 'AWSMachineLearning' do |sub| - sub.dependency 'AWSMachineLearning', '2.33.8' + sub.dependency 'AWSMachineLearning', '2.33.9' end s.subspec 'Pinpoint' do |sub| - sub.dependency 'AWSPinpoint', '2.33.8' + sub.dependency 'AWSPinpoint', '2.33.9' end s.subspec 'AWSPolly' do |sub| - sub.dependency 'AWSPolly', '2.33.8' + sub.dependency 'AWSPolly', '2.33.9' end s.subspec 'AWSRekognition' do |sub| - sub.dependency 'AWSRekognition', '2.33.8' + sub.dependency 'AWSRekognition', '2.33.9' end s.subspec 'AWSS3' do |sub| - sub.dependency 'AWSS3', '2.33.8' + sub.dependency 'AWSS3', '2.33.9' end s.subspec 'AWSSES' do |sub| - sub.dependency 'AWSSES', '2.33.8' + sub.dependency 'AWSSES', '2.33.9' end s.subspec 'AWSSNS' do |sub| - sub.dependency 'AWSSNS', '2.33.8' + sub.dependency 'AWSSNS', '2.33.9' end s.subspec 'AWSSQS' do |sub| - sub.dependency 'AWSSQS', '2.33.8' + sub.dependency 'AWSSQS', '2.33.9' end s.subspec 'AWSSageMakerRuntime' do |sub| - sub.dependency 'AWSSageMakerRuntime', '2.33.8' + sub.dependency 'AWSSageMakerRuntime', '2.33.9' end s.subspec 'AWSSimpleDB' do |sub| - sub.dependency 'AWSSimpleDB', '2.33.8' + sub.dependency 'AWSSimpleDB', '2.33.9' end s.subspec 'AWSTextract' do |sub| - sub.dependency 'AWSTextract', '2.33.8' + sub.dependency 'AWSTextract', '2.33.9' end s.subspec 'AWSTranscribe' do |sub| - sub.dependency 'AWSTranscribe', '2.33.8' + sub.dependency 'AWSTranscribe', '2.33.9' end # note that AWSTranscribeStreaming requires iOS 9.0 or higher, and is # therefore not included as a subspec s.subspec 'AWSTranslate' do |sub| - sub.dependency 'AWSTranslate', '2.33.8' + sub.dependency 'AWSTranslate', '2.33.9' end end diff --git a/CHANGELOG.md b/CHANGELOG.md index 3470f261a2a..6e55285de0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## Unreleased +-Features for next release + +## 2.33.9 + ### Bug Fixes - **AWSIoT** diff --git a/CircleciScripts/generate_documentation.sh b/CircleciScripts/generate_documentation.sh index 082acc23dbb..731fb0faef4 100644 --- a/CircleciScripts/generate_documentation.sh +++ b/CircleciScripts/generate_documentation.sh @@ -6,7 +6,7 @@ set -x -SDK_VERSION="2.33.8" +SDK_VERSION="2.33.9" GITHUB_DOC_ROOT=https://aws-amplify.github.io GITHUB_SOURCE_ROOT=https://github.com/aws-amplify/aws-sdk-ios