aws-sdk-appconfig 1.82.0 → 1.83.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -683,7 +683,7 @@ module Aws::AppConfig
683
683
  # @example Request syntax with placeholder values
684
684
  #
685
685
  # resp = client.create_configuration_profile({
686
- # application_id: "Id", # required
686
+ # application_id: "Name", # required
687
687
  # name: "LongName", # required
688
688
  # description: "Description",
689
689
  # location_uri: "Uri", # required
@@ -740,6 +740,21 @@ module Aws::AppConfig
740
740
  # @option params [required, Integer] :deployment_duration_in_minutes
741
741
  # Total amount of time for a deployment to last.
742
742
  #
743
+ # <note markdown="1"> AppConfig Agent supports deploying feature flag or free-form
744
+ # configuration data to specific segments or individual users during a
745
+ # gradual rollout. Entity-based gradual deployments ensure that once a
746
+ # user or segment receives a configuration version, they continue to
747
+ # receive that same version throughout the deployment period, regardless
748
+ # of which compute resource serves their requests. For more information,
749
+ # see [Using AppConfig Agent for user-based or entity-based gradual
750
+ # deployments][1]
751
+ #
752
+ # </note>
753
+ #
754
+ #
755
+ #
756
+ # [1]: https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-agent-how-to-use.html#appconfig-entity-based-gradual-deployments
757
+ #
743
758
  # @option params [Integer] :final_bake_time_in_minutes
744
759
  # Specifies the amount of time AppConfig monitors for Amazon CloudWatch
745
760
  # alarms after the configuration has been deployed to 100% of its
@@ -923,7 +938,7 @@ module Aws::AppConfig
923
938
  # @example Request syntax with placeholder values
924
939
  #
925
940
  # resp = client.create_environment({
926
- # application_id: "Id", # required
941
+ # application_id: "Name", # required
927
942
  # name: "Name", # required
928
943
  # description: "Description",
929
944
  # monitors: [
@@ -957,6 +972,209 @@ module Aws::AppConfig
957
972
  req.send_request(options)
958
973
  end
959
974
 
975
+ # Creates an experiment definition in AppConfig. An experiment
976
+ # definition describes the purpose, scope, and operational configuration
977
+ # of an experiment, including the target audience, feature flag, and
978
+ # treatment configurations.
979
+ #
980
+ # @option params [required, String] :application_identifier
981
+ # The application ID or name.
982
+ #
983
+ # @option params [required, String] :name
984
+ # A name for the experiment definition.
985
+ #
986
+ # @option params [required, String] :configuration_profile_identifier
987
+ # The configuration profile ID or name that stores the feature flag.
988
+ #
989
+ # @option params [required, String] :environment_identifier
990
+ # The environment ID or name where the experiment will run.
991
+ #
992
+ # @option params [required, String] :flag_key
993
+ # The key of the existing feature flag to use with the experiment.
994
+ #
995
+ # @option params [required, Array<Types::TreatmentInput>] :treatments
996
+ # A list of treatments to evaluate during the experiment. Each treatment
997
+ # defines a distinct variation compared to the control.
998
+ #
999
+ # @option params [required, Types::TreatmentInput] :control
1000
+ # The control treatment that represents the baseline experience for
1001
+ # comparison.
1002
+ #
1003
+ # @option params [required, String] :audience_rule
1004
+ # A rule that defines which users are eligible to be assigned to
1005
+ # treatments during the experiment.
1006
+ #
1007
+ # @option params [String] :hypothesis
1008
+ # A description of the goal or hypothesis the experiment is designed to
1009
+ # validate.
1010
+ #
1011
+ # @option params [String] :audience_description
1012
+ # A description of the intended audience for the experiment.
1013
+ #
1014
+ # @option params [String] :launch_criteria
1015
+ # Information about the conditions under which you would launch the
1016
+ # winning treatment.
1017
+ #
1018
+ # @option params [Hash<String,String>] :tags
1019
+ # The tags to assign to the experiment definition. Tags help organize
1020
+ # and categorize your AppConfig resources.
1021
+ #
1022
+ # @return [Types::ExperimentDefinition] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1023
+ #
1024
+ # * {Types::ExperimentDefinition#application_id #application_id} => String
1025
+ # * {Types::ExperimentDefinition#id #id} => String
1026
+ # * {Types::ExperimentDefinition#name #name} => String
1027
+ # * {Types::ExperimentDefinition#hypothesis #hypothesis} => String
1028
+ # * {Types::ExperimentDefinition#status #status} => String
1029
+ # * {Types::ExperimentDefinition#configuration_profile_id #configuration_profile_id} => String
1030
+ # * {Types::ExperimentDefinition#environment_id #environment_id} => String
1031
+ # * {Types::ExperimentDefinition#flag_key #flag_key} => String
1032
+ # * {Types::ExperimentDefinition#audience_rule #audience_rule} => String
1033
+ # * {Types::ExperimentDefinition#audience_description #audience_description} => String
1034
+ # * {Types::ExperimentDefinition#launch_criteria #launch_criteria} => String
1035
+ # * {Types::ExperimentDefinition#treatments #treatments} => Array&lt;Types::Treatment&gt;
1036
+ # * {Types::ExperimentDefinition#control #control} => Types::Treatment
1037
+ # * {Types::ExperimentDefinition#created_at #created_at} => Time
1038
+ # * {Types::ExperimentDefinition#updated_at #updated_at} => Time
1039
+ # * {Types::ExperimentDefinition#kms_key_identifier #kms_key_identifier} => String
1040
+ #
1041
+ #
1042
+ # @example Example: To create an experiment definition
1043
+ #
1044
+ # # The following CreateExperimentDefinition example creates an experiment definition that tests a feature flag with a 50/50
1045
+ # # traffic split.
1046
+ #
1047
+ # resp = client.create_experiment_definition({
1048
+ # application_identifier: "339ohji",
1049
+ # audience_rule: "(eq $country \"US\")",
1050
+ # configuration_profile_identifier: "ur8hx2f",
1051
+ # control: {
1052
+ # flag_value: {
1053
+ # enabled: false,
1054
+ # },
1055
+ # weight: 50,
1056
+ # },
1057
+ # environment_identifier: "54j1r29",
1058
+ # flag_key: "my-feature-flag",
1059
+ # name: "Example-Experiment-Definition",
1060
+ # treatments: [
1061
+ # {
1062
+ # flag_value: {
1063
+ # enabled: true,
1064
+ # },
1065
+ # weight: 50,
1066
+ # },
1067
+ # ],
1068
+ # })
1069
+ #
1070
+ # resp.to_h outputs the following:
1071
+ # {
1072
+ # application_id: "339ohji",
1073
+ # audience_rule: "(eq $country \"US\")",
1074
+ # configuration_profile_id: "ur8hx2f",
1075
+ # control: {
1076
+ # flag_value: {
1077
+ # enabled: false,
1078
+ # },
1079
+ # key: "c",
1080
+ # weight: 50.0,
1081
+ # },
1082
+ # created_at: Time.parse("2026-06-16T17:54:55.847Z"),
1083
+ # environment_id: "54j1r29",
1084
+ # flag_key: "my-feature-flag",
1085
+ # id: "bsxyd7k",
1086
+ # name: "Example-Experiment-Definition",
1087
+ # status: "IDLE",
1088
+ # treatments: [
1089
+ # {
1090
+ # flag_value: {
1091
+ # enabled: true,
1092
+ # },
1093
+ # key: "t1",
1094
+ # weight: 50.0,
1095
+ # },
1096
+ # ],
1097
+ # updated_at: Time.parse("2026-06-16T17:54:55.847Z"),
1098
+ # }
1099
+ #
1100
+ # @example Request syntax with placeholder values
1101
+ #
1102
+ # resp = client.create_experiment_definition({
1103
+ # application_identifier: "Identifier", # required
1104
+ # name: "NameWithReservedAwsPrefix", # required
1105
+ # configuration_profile_identifier: "Identifier", # required
1106
+ # environment_identifier: "Identifier", # required
1107
+ # flag_key: "FlagKey", # required
1108
+ # treatments: [ # required
1109
+ # {
1110
+ # weight: 1.0, # required
1111
+ # description: "Description",
1112
+ # flag_value: { # required
1113
+ # enabled: false, # required
1114
+ # attribute_values: {
1115
+ # "AttributeKey" => "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
1116
+ # },
1117
+ # },
1118
+ # },
1119
+ # ],
1120
+ # control: { # required
1121
+ # weight: 1.0, # required
1122
+ # description: "Description",
1123
+ # flag_value: { # required
1124
+ # enabled: false, # required
1125
+ # attribute_values: {
1126
+ # "AttributeKey" => "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
1127
+ # },
1128
+ # },
1129
+ # },
1130
+ # audience_rule: "Rule", # required
1131
+ # hypothesis: "Description",
1132
+ # audience_description: "Description",
1133
+ # launch_criteria: "Description",
1134
+ # tags: {
1135
+ # "TagKey" => "TagValue",
1136
+ # },
1137
+ # })
1138
+ #
1139
+ # @example Response structure
1140
+ #
1141
+ # resp.application_id #=> String
1142
+ # resp.id #=> String
1143
+ # resp.name #=> String
1144
+ # resp.hypothesis #=> String
1145
+ # resp.status #=> String, one of "ACTIVE", "IDLE", "ARCHIVED"
1146
+ # resp.configuration_profile_id #=> String
1147
+ # resp.environment_id #=> String
1148
+ # resp.flag_key #=> String
1149
+ # resp.audience_rule #=> String
1150
+ # resp.audience_description #=> String
1151
+ # resp.launch_criteria #=> String
1152
+ # resp.treatments #=> Array
1153
+ # resp.treatments[0].key #=> String
1154
+ # resp.treatments[0].weight #=> Float
1155
+ # resp.treatments[0].description #=> String
1156
+ # resp.treatments[0].flag_value.enabled #=> Boolean
1157
+ # resp.treatments[0].flag_value.attribute_values #=> Hash
1158
+ # resp.treatments[0].flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
1159
+ # resp.control.key #=> String
1160
+ # resp.control.weight #=> Float
1161
+ # resp.control.description #=> String
1162
+ # resp.control.flag_value.enabled #=> Boolean
1163
+ # resp.control.flag_value.attribute_values #=> Hash
1164
+ # resp.control.flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
1165
+ # resp.created_at #=> Time
1166
+ # resp.updated_at #=> Time
1167
+ # resp.kms_key_identifier #=> String
1168
+ #
1169
+ # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/CreateExperimentDefinition AWS API Documentation
1170
+ #
1171
+ # @overload create_experiment_definition(params = {})
1172
+ # @param [Hash] params ({})
1173
+ def create_experiment_definition(params = {}, options = {})
1174
+ req = build_request(:create_experiment_definition, params)
1175
+ req.send_request(options)
1176
+ end
1177
+
960
1178
  # Creates an AppConfig extension. An extension augments your ability to
961
1179
  # inject logic or behavior at different points during the AppConfig
962
1180
  # workflow of creating or deploying a configuration.
@@ -1164,7 +1382,7 @@ module Aws::AppConfig
1164
1382
  #
1165
1383
  #
1166
1384
  #
1167
- # [1]: https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-creating-configuration-and-profile-feature-flags.html#appconfig-type-reference-feature-flags
1385
+ # [1]: https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-type-reference-feature-flags.html
1168
1386
  #
1169
1387
  # @option params [required, String] :application_id
1170
1388
  # The application ID.
@@ -1175,6 +1393,10 @@ module Aws::AppConfig
1175
1393
  # @option params [String] :description
1176
1394
  # A description of the configuration.
1177
1395
  #
1396
+ # <note markdown="1"> Due to HTTP limitations, this field only supports ASCII characters.
1397
+ #
1398
+ # </note>
1399
+ #
1178
1400
  # @option params [required, String, StringIO, File] :content
1179
1401
  # The configuration data, as bytes.
1180
1402
  #
@@ -1239,8 +1461,8 @@ module Aws::AppConfig
1239
1461
  # @example Request syntax with placeholder values
1240
1462
  #
1241
1463
  # resp = client.create_hosted_configuration_version({
1242
- # application_id: "Id", # required
1243
- # configuration_profile_id: "Id", # required
1464
+ # application_id: "Name", # required
1465
+ # configuration_profile_id: "LongName", # required
1244
1466
  # description: "Description",
1245
1467
  # content: "data", # required
1246
1468
  # content_type: "StringWithLengthBetween1And255", # required
@@ -1287,7 +1509,7 @@ module Aws::AppConfig
1287
1509
  # @example Request syntax with placeholder values
1288
1510
  #
1289
1511
  # resp = client.delete_application({
1290
- # application_id: "Id", # required
1512
+ # application_id: "Name", # required
1291
1513
  # })
1292
1514
  #
1293
1515
  # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/DeleteApplication AWS API Documentation
@@ -1356,8 +1578,8 @@ module Aws::AppConfig
1356
1578
  # @example Request syntax with placeholder values
1357
1579
  #
1358
1580
  # resp = client.delete_configuration_profile({
1359
- # application_id: "Id", # required
1360
- # configuration_profile_id: "Id", # required
1581
+ # application_id: "Name", # required
1582
+ # configuration_profile_id: "LongName", # required
1361
1583
  # deletion_protection_check: "ACCOUNT_DEFAULT", # accepts ACCOUNT_DEFAULT, APPLY, BYPASS
1362
1584
  # })
1363
1585
  #
@@ -1458,8 +1680,8 @@ module Aws::AppConfig
1458
1680
  # @example Request syntax with placeholder values
1459
1681
  #
1460
1682
  # resp = client.delete_environment({
1461
- # environment_id: "Id", # required
1462
- # application_id: "Id", # required
1683
+ # environment_id: "Name", # required
1684
+ # application_id: "Name", # required
1463
1685
  # deletion_protection_check: "ACCOUNT_DEFAULT", # accepts ACCOUNT_DEFAULT, APPLY, BYPASS
1464
1686
  # })
1465
1687
  #
@@ -1472,6 +1694,49 @@ module Aws::AppConfig
1472
1694
  req.send_request(options)
1473
1695
  end
1474
1696
 
1697
+ # Deletes an experiment definition. You can archive the definition to
1698
+ # hide it from the active list while preserving it for future reference,
1699
+ # or permanently delete it along with all associated run history.
1700
+ #
1701
+ # @option params [required, String] :application_identifier
1702
+ # The application ID or name.
1703
+ #
1704
+ # @option params [required, String] :experiment_definition_identifier
1705
+ # The experiment definition ID or name.
1706
+ #
1707
+ # @option params [String] :delete_type
1708
+ # The type of deletion to perform. Valid values include archive (hide
1709
+ # but preserve) and permanent (delete permanently).
1710
+ #
1711
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1712
+ #
1713
+ #
1714
+ # @example Example: To delete an experiment definition
1715
+ #
1716
+ # # The following DeleteExperimentDefinition example archives (soft-deletes) the specified experiment definition.
1717
+ #
1718
+ # resp = client.delete_experiment_definition({
1719
+ # application_identifier: "339ohji",
1720
+ # experiment_definition_identifier: "bsxyd7k",
1721
+ # })
1722
+ #
1723
+ # @example Request syntax with placeholder values
1724
+ #
1725
+ # resp = client.delete_experiment_definition({
1726
+ # application_identifier: "Identifier", # required
1727
+ # experiment_definition_identifier: "Identifier", # required
1728
+ # delete_type: "ARCHIVE", # accepts ARCHIVE, DESTROY
1729
+ # })
1730
+ #
1731
+ # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/DeleteExperimentDefinition AWS API Documentation
1732
+ #
1733
+ # @overload delete_experiment_definition(params = {})
1734
+ # @param [Hash] params ({})
1735
+ def delete_experiment_definition(params = {}, options = {})
1736
+ req = build_request(:delete_experiment_definition, params)
1737
+ req.send_request(options)
1738
+ end
1739
+
1475
1740
  # Deletes an AppConfig extension. You must delete all associations to an
1476
1741
  # extension before you delete the extension.
1477
1742
  #
@@ -1553,8 +1818,8 @@ module Aws::AppConfig
1553
1818
  # @example Request syntax with placeholder values
1554
1819
  #
1555
1820
  # resp = client.delete_hosted_configuration_version({
1556
- # application_id: "Id", # required
1557
- # configuration_profile_id: "Id", # required
1821
+ # application_id: "Name", # required
1822
+ # configuration_profile_id: "LongName", # required
1558
1823
  # version_number: 1, # required
1559
1824
  # })
1560
1825
  #
@@ -1573,11 +1838,13 @@ module Aws::AppConfig
1573
1838
  # @return [Types::AccountSettings] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1574
1839
  #
1575
1840
  # * {Types::AccountSettings#deletion_protection #deletion_protection} => Types::DeletionProtectionSettings
1841
+ # * {Types::AccountSettings#vended_metrics #vended_metrics} => Types::VendedMetricsSettings
1576
1842
  #
1577
1843
  # @example Response structure
1578
1844
  #
1579
1845
  # resp.deletion_protection.enabled #=> Boolean
1580
1846
  # resp.deletion_protection.protection_period_in_minutes #=> Integer
1847
+ # resp.vended_metrics.enabled #=> Boolean
1581
1848
  #
1582
1849
  # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/GetAccountSettings AWS API Documentation
1583
1850
  #
@@ -1617,7 +1884,7 @@ module Aws::AppConfig
1617
1884
  # @example Request syntax with placeholder values
1618
1885
  #
1619
1886
  # resp = client.get_application({
1620
- # application_id: "Id", # required
1887
+ # application_id: "Name", # required
1621
1888
  # })
1622
1889
  #
1623
1890
  # @example Response structure
@@ -1796,8 +2063,8 @@ module Aws::AppConfig
1796
2063
  # @example Request syntax with placeholder values
1797
2064
  #
1798
2065
  # resp = client.get_configuration_profile({
1799
- # application_id: "Id", # required
1800
- # configuration_profile_id: "Id", # required
2066
+ # application_id: "Name", # required
2067
+ # configuration_profile_id: "LongName", # required
1801
2068
  # })
1802
2069
  #
1803
2070
  # @example Response structure
@@ -1941,8 +2208,8 @@ module Aws::AppConfig
1941
2208
  # @example Request syntax with placeholder values
1942
2209
  #
1943
2210
  # resp = client.get_deployment({
1944
- # application_id: "Id", # required
1945
- # environment_id: "Id", # required
2211
+ # application_id: "Name", # required
2212
+ # environment_id: "Name", # required
1946
2213
  # deployment_number: 1, # required
1947
2214
  # })
1948
2215
  #
@@ -2113,8 +2380,8 @@ module Aws::AppConfig
2113
2380
  # @example Request syntax with placeholder values
2114
2381
  #
2115
2382
  # resp = client.get_environment({
2116
- # application_id: "Id", # required
2117
- # environment_id: "Id", # required
2383
+ # application_id: "Name", # required
2384
+ # environment_id: "Name", # required
2118
2385
  # })
2119
2386
  #
2120
2387
  # @example Response structure
@@ -2142,6 +2409,250 @@ module Aws::AppConfig
2142
2409
  req.send_request(options)
2143
2410
  end
2144
2411
 
2412
+ # Retrieves information about an experiment definition.
2413
+ #
2414
+ # @option params [required, String] :application_identifier
2415
+ # The application ID or name.
2416
+ #
2417
+ # @option params [required, String] :experiment_definition_identifier
2418
+ # The experiment definition ID or name.
2419
+ #
2420
+ # @return [Types::ExperimentDefinition] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2421
+ #
2422
+ # * {Types::ExperimentDefinition#application_id #application_id} => String
2423
+ # * {Types::ExperimentDefinition#id #id} => String
2424
+ # * {Types::ExperimentDefinition#name #name} => String
2425
+ # * {Types::ExperimentDefinition#hypothesis #hypothesis} => String
2426
+ # * {Types::ExperimentDefinition#status #status} => String
2427
+ # * {Types::ExperimentDefinition#configuration_profile_id #configuration_profile_id} => String
2428
+ # * {Types::ExperimentDefinition#environment_id #environment_id} => String
2429
+ # * {Types::ExperimentDefinition#flag_key #flag_key} => String
2430
+ # * {Types::ExperimentDefinition#audience_rule #audience_rule} => String
2431
+ # * {Types::ExperimentDefinition#audience_description #audience_description} => String
2432
+ # * {Types::ExperimentDefinition#launch_criteria #launch_criteria} => String
2433
+ # * {Types::ExperimentDefinition#treatments #treatments} => Array&lt;Types::Treatment&gt;
2434
+ # * {Types::ExperimentDefinition#control #control} => Types::Treatment
2435
+ # * {Types::ExperimentDefinition#created_at #created_at} => Time
2436
+ # * {Types::ExperimentDefinition#updated_at #updated_at} => Time
2437
+ # * {Types::ExperimentDefinition#kms_key_identifier #kms_key_identifier} => String
2438
+ #
2439
+ #
2440
+ # @example Example: To get an experiment definition
2441
+ #
2442
+ # # The following GetExperimentDefinition example retrieves the details of an experiment definition.
2443
+ #
2444
+ # resp = client.get_experiment_definition({
2445
+ # application_identifier: "339ohji",
2446
+ # experiment_definition_identifier: "bsxyd7k",
2447
+ # })
2448
+ #
2449
+ # resp.to_h outputs the following:
2450
+ # {
2451
+ # application_id: "339ohji",
2452
+ # audience_rule: "(eq $country \"US\")",
2453
+ # configuration_profile_id: "ur8hx2f",
2454
+ # control: {
2455
+ # flag_value: {
2456
+ # enabled: false,
2457
+ # },
2458
+ # key: "c",
2459
+ # weight: 50.0,
2460
+ # },
2461
+ # created_at: Time.parse("2026-06-16T17:54:55.847Z"),
2462
+ # environment_id: "54j1r29",
2463
+ # flag_key: "my-feature-flag",
2464
+ # id: "bsxyd7k",
2465
+ # name: "Example-Experiment-Definition",
2466
+ # status: "IDLE",
2467
+ # treatments: [
2468
+ # {
2469
+ # flag_value: {
2470
+ # enabled: true,
2471
+ # },
2472
+ # key: "t1",
2473
+ # weight: 50.0,
2474
+ # },
2475
+ # ],
2476
+ # updated_at: Time.parse("2026-06-16T17:57:36Z"),
2477
+ # }
2478
+ #
2479
+ # @example Request syntax with placeholder values
2480
+ #
2481
+ # resp = client.get_experiment_definition({
2482
+ # application_identifier: "Identifier", # required
2483
+ # experiment_definition_identifier: "Identifier", # required
2484
+ # })
2485
+ #
2486
+ # @example Response structure
2487
+ #
2488
+ # resp.application_id #=> String
2489
+ # resp.id #=> String
2490
+ # resp.name #=> String
2491
+ # resp.hypothesis #=> String
2492
+ # resp.status #=> String, one of "ACTIVE", "IDLE", "ARCHIVED"
2493
+ # resp.configuration_profile_id #=> String
2494
+ # resp.environment_id #=> String
2495
+ # resp.flag_key #=> String
2496
+ # resp.audience_rule #=> String
2497
+ # resp.audience_description #=> String
2498
+ # resp.launch_criteria #=> String
2499
+ # resp.treatments #=> Array
2500
+ # resp.treatments[0].key #=> String
2501
+ # resp.treatments[0].weight #=> Float
2502
+ # resp.treatments[0].description #=> String
2503
+ # resp.treatments[0].flag_value.enabled #=> Boolean
2504
+ # resp.treatments[0].flag_value.attribute_values #=> Hash
2505
+ # resp.treatments[0].flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
2506
+ # resp.control.key #=> String
2507
+ # resp.control.weight #=> Float
2508
+ # resp.control.description #=> String
2509
+ # resp.control.flag_value.enabled #=> Boolean
2510
+ # resp.control.flag_value.attribute_values #=> Hash
2511
+ # resp.control.flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
2512
+ # resp.created_at #=> Time
2513
+ # resp.updated_at #=> Time
2514
+ # resp.kms_key_identifier #=> String
2515
+ #
2516
+ # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/GetExperimentDefinition AWS API Documentation
2517
+ #
2518
+ # @overload get_experiment_definition(params = {})
2519
+ # @param [Hash] params ({})
2520
+ def get_experiment_definition(params = {}, options = {})
2521
+ req = build_request(:get_experiment_definition, params)
2522
+ req.send_request(options)
2523
+ end
2524
+
2525
+ # Retrieves information about an experiment run, including its status,
2526
+ # start time, and exposure settings.
2527
+ #
2528
+ # @option params [required, String] :application_identifier
2529
+ # The application ID or name.
2530
+ #
2531
+ # @option params [required, String] :experiment_definition_identifier
2532
+ # The experiment definition ID or name.
2533
+ #
2534
+ # @option params [required, Integer] :run
2535
+ # The run number to retrieve.
2536
+ #
2537
+ # @return [Types::ExperimentRun] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2538
+ #
2539
+ # * {Types::ExperimentRun#application_id #application_id} => String
2540
+ # * {Types::ExperimentRun#experiment_definition_id #experiment_definition_id} => String
2541
+ # * {Types::ExperimentRun#run #run} => Integer
2542
+ # * {Types::ExperimentRun#description #description} => String
2543
+ # * {Types::ExperimentRun#status #status} => String
2544
+ # * {Types::ExperimentRun#exposure_percentage #exposure_percentage} => Float
2545
+ # * {Types::ExperimentRun#treatment_overrides #treatment_overrides} => Types::TreatmentOverrides
2546
+ # * {Types::ExperimentRun#result #result} => Types::ExperimentRunResult
2547
+ # * {Types::ExperimentRun#started_at #started_at} => Time
2548
+ # * {Types::ExperimentRun#updated_at #updated_at} => Time
2549
+ # * {Types::ExperimentRun#ended_at #ended_at} => Time
2550
+ # * {Types::ExperimentRun#experiment_definition_snapshot #experiment_definition_snapshot} => Types::ExperimentDefinitionSnapshot
2551
+ #
2552
+ #
2553
+ # @example Example: To get an experiment run
2554
+ #
2555
+ # # The following GetExperimentRun example retrieves the details of an experiment run.
2556
+ #
2557
+ # resp = client.get_experiment_run({
2558
+ # application_identifier: "339ohji",
2559
+ # experiment_definition_identifier: "bsxyd7k",
2560
+ # run: 1,
2561
+ # })
2562
+ #
2563
+ # resp.to_h outputs the following:
2564
+ # {
2565
+ # application_id: "339ohji",
2566
+ # experiment_definition_id: "bsxyd7k",
2567
+ # experiment_definition_snapshot: {
2568
+ # application_id: "339ohji",
2569
+ # audience_rule: "(eq $country \"US\")",
2570
+ # configuration_profile_id: "ur8hx2f",
2571
+ # control: {
2572
+ # flag_value: {
2573
+ # enabled: false,
2574
+ # },
2575
+ # key: "c",
2576
+ # weight: 50.0,
2577
+ # },
2578
+ # environment_id: "54j1r29",
2579
+ # flag_key: "my-feature-flag",
2580
+ # id: "bsxyd7k",
2581
+ # name: "Example-Experiment-Definition",
2582
+ # treatments: [
2583
+ # {
2584
+ # flag_value: {
2585
+ # enabled: true,
2586
+ # },
2587
+ # key: "t1",
2588
+ # weight: 50.0,
2589
+ # },
2590
+ # ],
2591
+ # },
2592
+ # exposure_percentage: 50.0,
2593
+ # run: 1,
2594
+ # started_at: Time.parse("2026-06-16T17:57:10.046Z"),
2595
+ # status: "RUNNING",
2596
+ # updated_at: Time.parse("2026-06-16T17:57:10.567Z"),
2597
+ # }
2598
+ #
2599
+ # @example Request syntax with placeholder values
2600
+ #
2601
+ # resp = client.get_experiment_run({
2602
+ # application_identifier: "Identifier", # required
2603
+ # experiment_definition_identifier: "Identifier", # required
2604
+ # run: 1, # required
2605
+ # })
2606
+ #
2607
+ # @example Response structure
2608
+ #
2609
+ # resp.application_id #=> String
2610
+ # resp.experiment_definition_id #=> String
2611
+ # resp.run #=> Integer
2612
+ # resp.description #=> String
2613
+ # resp.status #=> String, one of "RUNNING", "DONE"
2614
+ # resp.exposure_percentage #=> Float
2615
+ # resp.treatment_overrides.inline #=> Hash
2616
+ # resp.treatment_overrides.inline["EntityId"] #=> String
2617
+ # resp.result.executive_summary #=> String
2618
+ # resp.result.reasons_to_launch #=> String
2619
+ # resp.result.reasons_not_to_launch #=> String
2620
+ # resp.started_at #=> Time
2621
+ # resp.updated_at #=> Time
2622
+ # resp.ended_at #=> Time
2623
+ # resp.experiment_definition_snapshot.application_id #=> String
2624
+ # resp.experiment_definition_snapshot.id #=> String
2625
+ # resp.experiment_definition_snapshot.name #=> String
2626
+ # resp.experiment_definition_snapshot.hypothesis #=> String
2627
+ # resp.experiment_definition_snapshot.configuration_profile_id #=> String
2628
+ # resp.experiment_definition_snapshot.environment_id #=> String
2629
+ # resp.experiment_definition_snapshot.flag_key #=> String
2630
+ # resp.experiment_definition_snapshot.audience_rule #=> String
2631
+ # resp.experiment_definition_snapshot.audience_description #=> String
2632
+ # resp.experiment_definition_snapshot.launch_criteria #=> String
2633
+ # resp.experiment_definition_snapshot.treatments #=> Array
2634
+ # resp.experiment_definition_snapshot.treatments[0].key #=> String
2635
+ # resp.experiment_definition_snapshot.treatments[0].weight #=> Float
2636
+ # resp.experiment_definition_snapshot.treatments[0].description #=> String
2637
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.enabled #=> Boolean
2638
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.attribute_values #=> Hash
2639
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
2640
+ # resp.experiment_definition_snapshot.control.key #=> String
2641
+ # resp.experiment_definition_snapshot.control.weight #=> Float
2642
+ # resp.experiment_definition_snapshot.control.description #=> String
2643
+ # resp.experiment_definition_snapshot.control.flag_value.enabled #=> Boolean
2644
+ # resp.experiment_definition_snapshot.control.flag_value.attribute_values #=> Hash
2645
+ # resp.experiment_definition_snapshot.control.flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
2646
+ #
2647
+ # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/GetExperimentRun AWS API Documentation
2648
+ #
2649
+ # @overload get_experiment_run(params = {})
2650
+ # @param [Hash] params ({})
2651
+ def get_experiment_run(params = {}, options = {})
2652
+ req = build_request(:get_experiment_run, params)
2653
+ req.send_request(options)
2654
+ end
2655
+
2145
2656
  # Returns information about an AppConfig extension.
2146
2657
  #
2147
2658
  # @option params [required, String] :extension_identifier
@@ -2285,8 +2796,8 @@ module Aws::AppConfig
2285
2796
  # @example Request syntax with placeholder values
2286
2797
  #
2287
2798
  # resp = client.get_hosted_configuration_version({
2288
- # application_id: "Id", # required
2289
- # configuration_profile_id: "Id", # required
2799
+ # application_id: "Name", # required
2800
+ # configuration_profile_id: "LongName", # required
2290
2801
  # version_number: 1, # required
2291
2802
  # })
2292
2803
  #
@@ -2430,7 +2941,7 @@ module Aws::AppConfig
2430
2941
  # @example Request syntax with placeholder values
2431
2942
  #
2432
2943
  # resp = client.list_configuration_profiles({
2433
- # application_id: "Id", # required
2944
+ # application_id: "Name", # required
2434
2945
  # max_results: 1,
2435
2946
  # next_token: "NextToken",
2436
2947
  # type: "ConfigurationProfileType",
@@ -2587,8 +3098,8 @@ module Aws::AppConfig
2587
3098
  # @example Request syntax with placeholder values
2588
3099
  #
2589
3100
  # resp = client.list_deployments({
2590
- # application_id: "Id", # required
2591
- # environment_id: "Id", # required
3101
+ # application_id: "Name", # required
3102
+ # environment_id: "Name", # required
2592
3103
  # max_results: 1,
2593
3104
  # next_token: "NextToken",
2594
3105
  # })
@@ -2597,6 +3108,7 @@ module Aws::AppConfig
2597
3108
  #
2598
3109
  # resp.items #=> Array
2599
3110
  # resp.items[0].deployment_number #=> Integer
3111
+ # resp.items[0].configuration_profile_id #=> String
2600
3112
  # resp.items[0].configuration_name #=> String
2601
3113
  # resp.items[0].configuration_version #=> String
2602
3114
  # resp.items[0].deployment_duration_in_minutes #=> Integer
@@ -2608,6 +3120,7 @@ module Aws::AppConfig
2608
3120
  # resp.items[0].started_at #=> Time
2609
3121
  # resp.items[0].completed_at #=> Time
2610
3122
  # resp.items[0].version_label #=> String
3123
+ # resp.items[0].type #=> String, one of "USER", "MANAGED"
2611
3124
  # resp.next_token #=> String
2612
3125
  #
2613
3126
  # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/ListDeployments AWS API Documentation
@@ -2665,7 +3178,7 @@ module Aws::AppConfig
2665
3178
  # @example Request syntax with placeholder values
2666
3179
  #
2667
3180
  # resp = client.list_environments({
2668
- # application_id: "Id", # required
3181
+ # application_id: "Name", # required
2669
3182
  # max_results: 1,
2670
3183
  # next_token: "NextToken",
2671
3184
  # })
@@ -2692,6 +3205,263 @@ module Aws::AppConfig
2692
3205
  req.send_request(options)
2693
3206
  end
2694
3207
 
3208
+ # Lists the experiment definitions for an account. You can filter
3209
+ # results by application, configuration profile, environment, or status.
3210
+ #
3211
+ # @option params [String] :application_identifier
3212
+ # The application ID or name to filter results.
3213
+ #
3214
+ # @option params [String] :configuration_profile_identifier
3215
+ # The configuration profile ID or name to filter results.
3216
+ #
3217
+ # @option params [String] :environment_identifier
3218
+ # The environment ID or name to filter results.
3219
+ #
3220
+ # @option params [String] :status
3221
+ # A filter for the experiment definition status.
3222
+ #
3223
+ # @option params [Integer] :max_results
3224
+ # The maximum number of items to return for this call.
3225
+ #
3226
+ # @option params [String] :next_token
3227
+ # A token to start the list from a previously truncated response.
3228
+ #
3229
+ # @return [Types::ExperimentDefinitions] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3230
+ #
3231
+ # * {Types::ExperimentDefinitions#items #items} => Array&lt;Types::ExperimentDefinitionSummary&gt;
3232
+ # * {Types::ExperimentDefinitions#next_token #next_token} => String
3233
+ #
3234
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
3235
+ #
3236
+ #
3237
+ # @example Example: To list experiment definitions
3238
+ #
3239
+ # # The following ListExperimentDefinitions example lists the experiment definitions for an application.
3240
+ #
3241
+ # resp = client.list_experiment_definitions({
3242
+ # application_identifier: "339ohji",
3243
+ # })
3244
+ #
3245
+ # resp.to_h outputs the following:
3246
+ # {
3247
+ # items: [
3248
+ # {
3249
+ # application_id: "339ohji",
3250
+ # configuration_profile_id: "ur8hx2f",
3251
+ # created_at: Time.parse("2026-06-16T17:54:55.847Z"),
3252
+ # environment_id: "54j1r29",
3253
+ # flag_key: "my-feature-flag",
3254
+ # id: "bsxyd7k",
3255
+ # name: "Example-Experiment-Definition",
3256
+ # status: "IDLE",
3257
+ # updated_at: Time.parse("2026-06-16T17:57:36Z"),
3258
+ # },
3259
+ # ],
3260
+ # }
3261
+ #
3262
+ # @example Request syntax with placeholder values
3263
+ #
3264
+ # resp = client.list_experiment_definitions({
3265
+ # application_identifier: "Identifier",
3266
+ # configuration_profile_identifier: "Identifier",
3267
+ # environment_identifier: "Identifier",
3268
+ # status: "ACTIVE", # accepts ACTIVE, IDLE, ARCHIVED
3269
+ # max_results: 1,
3270
+ # next_token: "NextToken",
3271
+ # })
3272
+ #
3273
+ # @example Response structure
3274
+ #
3275
+ # resp.items #=> Array
3276
+ # resp.items[0].application_id #=> String
3277
+ # resp.items[0].id #=> String
3278
+ # resp.items[0].name #=> String
3279
+ # resp.items[0].hypothesis #=> String
3280
+ # resp.items[0].status #=> String, one of "ACTIVE", "IDLE", "ARCHIVED"
3281
+ # resp.items[0].configuration_profile_id #=> String
3282
+ # resp.items[0].environment_id #=> String
3283
+ # resp.items[0].flag_key #=> String
3284
+ # resp.items[0].created_at #=> Time
3285
+ # resp.items[0].updated_at #=> Time
3286
+ # resp.next_token #=> String
3287
+ #
3288
+ # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/ListExperimentDefinitions AWS API Documentation
3289
+ #
3290
+ # @overload list_experiment_definitions(params = {})
3291
+ # @param [Hash] params ({})
3292
+ def list_experiment_definitions(params = {}, options = {})
3293
+ req = build_request(:list_experiment_definitions, params)
3294
+ req.send_request(options)
3295
+ end
3296
+
3297
+ # Lists the events for a specified experiment run. Events provide a
3298
+ # timeline of actions and state changes that occurred during the run.
3299
+ #
3300
+ # @option params [required, String] :application_identifier
3301
+ # The application ID or name.
3302
+ #
3303
+ # @option params [required, String] :experiment_definition_identifier
3304
+ # The experiment definition ID or name.
3305
+ #
3306
+ # @option params [required, Integer] :run
3307
+ # The run number.
3308
+ #
3309
+ # @option params [Integer] :max_results
3310
+ # The maximum number of items to return.
3311
+ #
3312
+ # @option params [String] :next_token
3313
+ # A token to start the list from a previously truncated response.
3314
+ #
3315
+ # @return [Types::ExperimentRunEvents] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3316
+ #
3317
+ # * {Types::ExperimentRunEvents#items #items} => Array&lt;Types::ExperimentRunEvent&gt;
3318
+ # * {Types::ExperimentRunEvents#next_token #next_token} => String
3319
+ #
3320
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
3321
+ #
3322
+ #
3323
+ # @example Example: To list experiment run events
3324
+ #
3325
+ # # The following ListExperimentRunEvents example lists the events for an experiment run.
3326
+ #
3327
+ # resp = client.list_experiment_run_events({
3328
+ # application_identifier: "339ohji",
3329
+ # experiment_definition_identifier: "bsxyd7k",
3330
+ # run: 1,
3331
+ # })
3332
+ #
3333
+ # resp.to_h outputs the following:
3334
+ # {
3335
+ # items: [
3336
+ # {
3337
+ # description: "Experiment run stopped",
3338
+ # event_type: "RUN_STOPPED",
3339
+ # exposure_percentage: 50.0,
3340
+ # occurred_at: Time.parse("2026-06-16T17:57:36.083Z"),
3341
+ # triggered_by: "USER",
3342
+ # },
3343
+ # {
3344
+ # description: "Experiment run started",
3345
+ # event_type: "RUN_STARTED",
3346
+ # exposure_percentage: 50.0,
3347
+ # occurred_at: Time.parse("2026-06-16T17:57:10.567Z"),
3348
+ # triggered_by: "USER",
3349
+ # },
3350
+ # ],
3351
+ # }
3352
+ #
3353
+ # @example Request syntax with placeholder values
3354
+ #
3355
+ # resp = client.list_experiment_run_events({
3356
+ # application_identifier: "Identifier", # required
3357
+ # experiment_definition_identifier: "Identifier", # required
3358
+ # run: 1, # required
3359
+ # max_results: 1,
3360
+ # next_token: "NextToken",
3361
+ # })
3362
+ #
3363
+ # @example Response structure
3364
+ #
3365
+ # resp.items #=> Array
3366
+ # resp.items[0].description #=> String
3367
+ # resp.items[0].associated_deployment #=> String
3368
+ # resp.items[0].event_type #=> String, one of "RUN_STARTED", "EXPOSURE_UPDATED", "OVERRIDES_UPDATED", "RUN_STOPPED"
3369
+ # resp.items[0].occurred_at #=> Time
3370
+ # resp.items[0].triggered_by #=> String, one of "USER", "APPCONFIG", "CLOUDWATCH_ALARM", "INTERNAL_ERROR"
3371
+ # resp.items[0].exposure_percentage #=> Float
3372
+ # resp.items[0].treatment_overrides.inline #=> Hash
3373
+ # resp.items[0].treatment_overrides.inline["EntityId"] #=> String
3374
+ # resp.next_token #=> String
3375
+ #
3376
+ # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/ListExperimentRunEvents AWS API Documentation
3377
+ #
3378
+ # @overload list_experiment_run_events(params = {})
3379
+ # @param [Hash] params ({})
3380
+ def list_experiment_run_events(params = {}, options = {})
3381
+ req = build_request(:list_experiment_run_events, params)
3382
+ req.send_request(options)
3383
+ end
3384
+
3385
+ # Lists the experiment runs for a specified experiment definition. You
3386
+ # can filter by status.
3387
+ #
3388
+ # @option params [required, String] :application_identifier
3389
+ # The application ID or name.
3390
+ #
3391
+ # @option params [required, String] :experiment_definition_identifier
3392
+ # The experiment definition ID or name.
3393
+ #
3394
+ # @option params [Integer] :max_results
3395
+ # The maximum number of items to return.
3396
+ #
3397
+ # @option params [String] :next_token
3398
+ # A token to start the list from a previously truncated response.
3399
+ #
3400
+ # @option params [String] :status
3401
+ # A filter for the experiment run status.
3402
+ #
3403
+ # @return [Types::ExperimentRuns] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3404
+ #
3405
+ # * {Types::ExperimentRuns#items #items} => Array&lt;Types::ExperimentRunSummary&gt;
3406
+ # * {Types::ExperimentRuns#next_token #next_token} => String
3407
+ #
3408
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
3409
+ #
3410
+ #
3411
+ # @example Example: To list experiment runs
3412
+ #
3413
+ # # The following ListExperimentRuns example lists the experiment runs for an experiment definition.
3414
+ #
3415
+ # resp = client.list_experiment_runs({
3416
+ # application_identifier: "339ohji",
3417
+ # experiment_definition_identifier: "bsxyd7k",
3418
+ # })
3419
+ #
3420
+ # resp.to_h outputs the following:
3421
+ # {
3422
+ # items: [
3423
+ # {
3424
+ # ended_at: Time.parse("2026-06-16T17:57:36.083Z"),
3425
+ # experiment_definition_id: "bsxyd7k",
3426
+ # run: 1,
3427
+ # started_at: Time.parse("2026-06-16T17:57:10.046Z"),
3428
+ # status: "DONE",
3429
+ # updated_at: Time.parse("2026-06-16T17:57:36.083Z"),
3430
+ # },
3431
+ # ],
3432
+ # }
3433
+ #
3434
+ # @example Request syntax with placeholder values
3435
+ #
3436
+ # resp = client.list_experiment_runs({
3437
+ # application_identifier: "Identifier", # required
3438
+ # experiment_definition_identifier: "Identifier", # required
3439
+ # max_results: 1,
3440
+ # next_token: "NextToken",
3441
+ # status: "RUNNING", # accepts RUNNING, DONE
3442
+ # })
3443
+ #
3444
+ # @example Response structure
3445
+ #
3446
+ # resp.items #=> Array
3447
+ # resp.items[0].experiment_definition_id #=> String
3448
+ # resp.items[0].run #=> Integer
3449
+ # resp.items[0].description #=> String
3450
+ # resp.items[0].status #=> String, one of "RUNNING", "DONE"
3451
+ # resp.items[0].started_at #=> Time
3452
+ # resp.items[0].updated_at #=> Time
3453
+ # resp.items[0].ended_at #=> Time
3454
+ # resp.next_token #=> String
3455
+ #
3456
+ # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/ListExperimentRuns AWS API Documentation
3457
+ #
3458
+ # @overload list_experiment_runs(params = {})
3459
+ # @param [Hash] params ({})
3460
+ def list_experiment_runs(params = {}, options = {})
3461
+ req = build_request(:list_experiment_runs, params)
3462
+ req.send_request(options)
3463
+ end
3464
+
2695
3465
  # Lists all AppConfig extension associations in the account. For more
2696
3466
  # information about extensions and associations, see [Extending
2697
3467
  # workflows][1] in the *AppConfig User Guide*.
@@ -2865,8 +3635,8 @@ module Aws::AppConfig
2865
3635
  # @example Request syntax with placeholder values
2866
3636
  #
2867
3637
  # resp = client.list_hosted_configuration_versions({
2868
- # application_id: "Id", # required
2869
- # configuration_profile_id: "Id", # required
3638
+ # application_id: "Name", # required
3639
+ # configuration_profile_id: "LongName", # required
2870
3640
  # max_results: 1,
2871
3641
  # next_token: "NextToken",
2872
3642
  # version_label: "QueryName",
@@ -2940,6 +3710,21 @@ module Aws::AppConfig
2940
3710
 
2941
3711
  # Starts a deployment.
2942
3712
  #
3713
+ # <note markdown="1"> AppConfig Agent supports deploying feature flag or free-form
3714
+ # configuration data to specific segments or individual users during a
3715
+ # gradual rollout. Entity-based gradual deployments ensure that once a
3716
+ # user or segment receives a configuration version, they continue to
3717
+ # receive that same version throughout the deployment period, regardless
3718
+ # of which compute resource serves their requests. For more information,
3719
+ # see [Using AppConfig Agent for user-based or entity-based gradual
3720
+ # deployments][1]
3721
+ #
3722
+ # </note>
3723
+ #
3724
+ #
3725
+ #
3726
+ # [1]: https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-agent-how-to-use.html#appconfig-entity-based-gradual-deployments
3727
+ #
2943
3728
  # @option params [required, String] :application_id
2944
3729
  # The application ID.
2945
3730
  #
@@ -2975,6 +3760,11 @@ module Aws::AppConfig
2975
3760
  # A map of dynamic extension parameter names to values to pass to
2976
3761
  # associated extensions with `PRE_START_DEPLOYMENT` actions.
2977
3762
  #
3763
+ # @option params [Integer] :latest_deployment_number
3764
+ # The number of the latest deployment. Use this value to ensure that the
3765
+ # deployment starts from the expected state and to prevent conflicting
3766
+ # updates.
3767
+ #
2978
3768
  # @return [Types::Deployment] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2979
3769
  #
2980
3770
  # * {Types::Deployment#application_id #application_id} => String
@@ -3047,10 +3837,10 @@ module Aws::AppConfig
3047
3837
  # @example Request syntax with placeholder values
3048
3838
  #
3049
3839
  # resp = client.start_deployment({
3050
- # application_id: "Id", # required
3051
- # environment_id: "Id", # required
3840
+ # application_id: "Name", # required
3841
+ # environment_id: "Name", # required
3052
3842
  # deployment_strategy_id: "DeploymentStrategyId", # required
3053
- # configuration_profile_id: "Id", # required
3843
+ # configuration_profile_id: "LongName", # required
3054
3844
  # configuration_version: "Version", # required
3055
3845
  # description: "Description",
3056
3846
  # tags: {
@@ -3060,6 +3850,7 @@ module Aws::AppConfig
3060
3850
  # dynamic_extension_parameters: {
3061
3851
  # "DynamicParameterKey" => "StringWithLengthBetween1And2048",
3062
3852
  # },
3853
+ # latest_deployment_number: 1,
3063
3854
  # })
3064
3855
  #
3065
3856
  # @example Response structure
@@ -3113,6 +3904,170 @@ module Aws::AppConfig
3113
3904
  req.send_request(options)
3114
3905
  end
3115
3906
 
3907
+ # Starts an experiment run for the specified experiment definition. An
3908
+ # experiment run delivers treatments to the target audience and collects
3909
+ # metrics. You can start multiple experiment runs from the same
3910
+ # experiment definition.
3911
+ #
3912
+ # @option params [required, String] :application_identifier
3913
+ # The application ID or name.
3914
+ #
3915
+ # @option params [required, String] :experiment_definition_identifier
3916
+ # The experiment definition ID or name.
3917
+ #
3918
+ # @option params [String] :description
3919
+ # A description of this experiment run.
3920
+ #
3921
+ # @option params [Float] :exposure_percentage
3922
+ # The percentage of the target audience to expose to treatments. Set to
3923
+ # 0 to validate the experiment before exposing production users.
3924
+ #
3925
+ # @option params [Types::TreatmentOverrides] :treatment_overrides
3926
+ # Treatment assignment overrides that assign specific entity IDs to
3927
+ # treatments directly, bypassing random assignment.
3928
+ #
3929
+ # @option params [Hash<String,String>] :tags
3930
+ # The tags to assign to the experiment run.
3931
+ #
3932
+ # @option params [Types::DeploymentParameters] :deployment_parameters
3933
+ # Optional deployment parameters including a KMS key for encryption.
3934
+ #
3935
+ # @return [Types::ExperimentRun] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3936
+ #
3937
+ # * {Types::ExperimentRun#application_id #application_id} => String
3938
+ # * {Types::ExperimentRun#experiment_definition_id #experiment_definition_id} => String
3939
+ # * {Types::ExperimentRun#run #run} => Integer
3940
+ # * {Types::ExperimentRun#description #description} => String
3941
+ # * {Types::ExperimentRun#status #status} => String
3942
+ # * {Types::ExperimentRun#exposure_percentage #exposure_percentage} => Float
3943
+ # * {Types::ExperimentRun#treatment_overrides #treatment_overrides} => Types::TreatmentOverrides
3944
+ # * {Types::ExperimentRun#result #result} => Types::ExperimentRunResult
3945
+ # * {Types::ExperimentRun#started_at #started_at} => Time
3946
+ # * {Types::ExperimentRun#updated_at #updated_at} => Time
3947
+ # * {Types::ExperimentRun#ended_at #ended_at} => Time
3948
+ # * {Types::ExperimentRun#experiment_definition_snapshot #experiment_definition_snapshot} => Types::ExperimentDefinitionSnapshot
3949
+ #
3950
+ #
3951
+ # @example Example: To start an experiment run
3952
+ #
3953
+ # # The following StartExperimentRun example starts an experiment run with 50% audience exposure.
3954
+ #
3955
+ # resp = client.start_experiment_run({
3956
+ # application_identifier: "339ohji",
3957
+ # experiment_definition_identifier: "bsxyd7k",
3958
+ # exposure_percentage: 50.0,
3959
+ # })
3960
+ #
3961
+ # resp.to_h outputs the following:
3962
+ # {
3963
+ # application_id: "339ohji",
3964
+ # experiment_definition_id: "bsxyd7k",
3965
+ # experiment_definition_snapshot: {
3966
+ # application_id: "339ohji",
3967
+ # audience_rule: "(eq $country \"US\")",
3968
+ # configuration_profile_id: "ur8hx2f",
3969
+ # control: {
3970
+ # flag_value: {
3971
+ # enabled: false,
3972
+ # },
3973
+ # key: "c",
3974
+ # weight: 50.0,
3975
+ # },
3976
+ # environment_id: "54j1r29",
3977
+ # flag_key: "my-feature-flag",
3978
+ # id: "bsxyd7k",
3979
+ # name: "Example-Experiment-Definition",
3980
+ # treatments: [
3981
+ # {
3982
+ # flag_value: {
3983
+ # enabled: true,
3984
+ # },
3985
+ # key: "t1",
3986
+ # weight: 50.0,
3987
+ # },
3988
+ # ],
3989
+ # },
3990
+ # exposure_percentage: 50.0,
3991
+ # run: 1,
3992
+ # started_at: Time.parse("2026-06-16T17:57:10.046Z"),
3993
+ # status: "RUNNING",
3994
+ # updated_at: Time.parse("2026-06-16T17:57:10.567Z"),
3995
+ # }
3996
+ #
3997
+ # @example Request syntax with placeholder values
3998
+ #
3999
+ # resp = client.start_experiment_run({
4000
+ # application_identifier: "Identifier", # required
4001
+ # experiment_definition_identifier: "Identifier", # required
4002
+ # description: "Description",
4003
+ # exposure_percentage: 1.0,
4004
+ # treatment_overrides: {
4005
+ # inline: {
4006
+ # "EntityId" => "TreatmentKey",
4007
+ # },
4008
+ # },
4009
+ # tags: {
4010
+ # "TagKey" => "TagValue",
4011
+ # },
4012
+ # deployment_parameters: {
4013
+ # dynamic_extension_parameters: {
4014
+ # "DynamicParameterKey" => "StringWithLengthBetween1And2048",
4015
+ # },
4016
+ # tags: {
4017
+ # "TagKey" => "TagValue",
4018
+ # },
4019
+ # },
4020
+ # })
4021
+ #
4022
+ # @example Response structure
4023
+ #
4024
+ # resp.application_id #=> String
4025
+ # resp.experiment_definition_id #=> String
4026
+ # resp.run #=> Integer
4027
+ # resp.description #=> String
4028
+ # resp.status #=> String, one of "RUNNING", "DONE"
4029
+ # resp.exposure_percentage #=> Float
4030
+ # resp.treatment_overrides.inline #=> Hash
4031
+ # resp.treatment_overrides.inline["EntityId"] #=> String
4032
+ # resp.result.executive_summary #=> String
4033
+ # resp.result.reasons_to_launch #=> String
4034
+ # resp.result.reasons_not_to_launch #=> String
4035
+ # resp.started_at #=> Time
4036
+ # resp.updated_at #=> Time
4037
+ # resp.ended_at #=> Time
4038
+ # resp.experiment_definition_snapshot.application_id #=> String
4039
+ # resp.experiment_definition_snapshot.id #=> String
4040
+ # resp.experiment_definition_snapshot.name #=> String
4041
+ # resp.experiment_definition_snapshot.hypothesis #=> String
4042
+ # resp.experiment_definition_snapshot.configuration_profile_id #=> String
4043
+ # resp.experiment_definition_snapshot.environment_id #=> String
4044
+ # resp.experiment_definition_snapshot.flag_key #=> String
4045
+ # resp.experiment_definition_snapshot.audience_rule #=> String
4046
+ # resp.experiment_definition_snapshot.audience_description #=> String
4047
+ # resp.experiment_definition_snapshot.launch_criteria #=> String
4048
+ # resp.experiment_definition_snapshot.treatments #=> Array
4049
+ # resp.experiment_definition_snapshot.treatments[0].key #=> String
4050
+ # resp.experiment_definition_snapshot.treatments[0].weight #=> Float
4051
+ # resp.experiment_definition_snapshot.treatments[0].description #=> String
4052
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.enabled #=> Boolean
4053
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.attribute_values #=> Hash
4054
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
4055
+ # resp.experiment_definition_snapshot.control.key #=> String
4056
+ # resp.experiment_definition_snapshot.control.weight #=> Float
4057
+ # resp.experiment_definition_snapshot.control.description #=> String
4058
+ # resp.experiment_definition_snapshot.control.flag_value.enabled #=> Boolean
4059
+ # resp.experiment_definition_snapshot.control.flag_value.attribute_values #=> Hash
4060
+ # resp.experiment_definition_snapshot.control.flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
4061
+ #
4062
+ # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/StartExperimentRun AWS API Documentation
4063
+ #
4064
+ # @overload start_experiment_run(params = {})
4065
+ # @param [Hash] params ({})
4066
+ def start_experiment_run(params = {}, options = {})
4067
+ req = build_request(:start_experiment_run, params)
4068
+ req.send_request(options)
4069
+ end
4070
+
3116
4071
  # Stops a deployment. This API action works only on deployments that
3117
4072
  # have a status of `DEPLOYING`, unless an `AllowRevert` parameter is
3118
4073
  # supplied. If the `AllowRevert` parameter is supplied, the status of an
@@ -3182,8 +4137,8 @@ module Aws::AppConfig
3182
4137
  # @example Request syntax with placeholder values
3183
4138
  #
3184
4139
  # resp = client.stop_deployment({
3185
- # application_id: "Id", # required
3186
- # environment_id: "Id", # required
4140
+ # application_id: "Name", # required
4141
+ # environment_id: "Name", # required
3187
4142
  # deployment_number: 1, # required
3188
4143
  # allow_revert: false,
3189
4144
  # })
@@ -3239,6 +4194,167 @@ module Aws::AppConfig
3239
4194
  req.send_request(options)
3240
4195
  end
3241
4196
 
4197
+ # Stops a running experiment. Stopping an experiment run ends audience
4198
+ # exposure and returns users to the currently deployed feature flag
4199
+ # configuration.
4200
+ #
4201
+ # @option params [required, String] :application_identifier
4202
+ # The application ID or name.
4203
+ #
4204
+ # @option params [required, String] :experiment_definition_identifier
4205
+ # The experiment definition ID or name.
4206
+ #
4207
+ # @option params [required, Integer] :run
4208
+ # The run number to stop.
4209
+ #
4210
+ # @option params [Types::ExperimentRunResult] :result
4211
+ # The result of the experiment run, including an executive summary and
4212
+ # reasons for or against launching.
4213
+ #
4214
+ # @option params [Types::DeploymentParameters] :deployment_parameters
4215
+ # Optional deployment parameters for the stop operation.
4216
+ #
4217
+ # @return [Types::ExperimentRun] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
4218
+ #
4219
+ # * {Types::ExperimentRun#application_id #application_id} => String
4220
+ # * {Types::ExperimentRun#experiment_definition_id #experiment_definition_id} => String
4221
+ # * {Types::ExperimentRun#run #run} => Integer
4222
+ # * {Types::ExperimentRun#description #description} => String
4223
+ # * {Types::ExperimentRun#status #status} => String
4224
+ # * {Types::ExperimentRun#exposure_percentage #exposure_percentage} => Float
4225
+ # * {Types::ExperimentRun#treatment_overrides #treatment_overrides} => Types::TreatmentOverrides
4226
+ # * {Types::ExperimentRun#result #result} => Types::ExperimentRunResult
4227
+ # * {Types::ExperimentRun#started_at #started_at} => Time
4228
+ # * {Types::ExperimentRun#updated_at #updated_at} => Time
4229
+ # * {Types::ExperimentRun#ended_at #ended_at} => Time
4230
+ # * {Types::ExperimentRun#experiment_definition_snapshot #experiment_definition_snapshot} => Types::ExperimentDefinitionSnapshot
4231
+ #
4232
+ #
4233
+ # @example Example: To stop an experiment run
4234
+ #
4235
+ # # The following StopExperimentRun example stops a running experiment and records the result.
4236
+ #
4237
+ # resp = client.stop_experiment_run({
4238
+ # application_identifier: "339ohji",
4239
+ # experiment_definition_identifier: "bsxyd7k",
4240
+ # result: {
4241
+ # executive_summary: "t1 wins with 16% lift in conversion",
4242
+ # reasons_to_launch: "Significant improvement in key metric",
4243
+ # },
4244
+ # run: 1,
4245
+ # })
4246
+ #
4247
+ # resp.to_h outputs the following:
4248
+ # {
4249
+ # application_id: "339ohji",
4250
+ # ended_at: Time.parse("2026-06-16T17:57:36.083Z"),
4251
+ # experiment_definition_id: "bsxyd7k",
4252
+ # experiment_definition_snapshot: {
4253
+ # application_id: "339ohji",
4254
+ # audience_rule: "(eq $country \"US\")",
4255
+ # configuration_profile_id: "ur8hx2f",
4256
+ # control: {
4257
+ # flag_value: {
4258
+ # enabled: false,
4259
+ # },
4260
+ # key: "c",
4261
+ # weight: 50.0,
4262
+ # },
4263
+ # environment_id: "54j1r29",
4264
+ # flag_key: "my-feature-flag",
4265
+ # id: "bsxyd7k",
4266
+ # name: "Example-Experiment-Definition",
4267
+ # treatments: [
4268
+ # {
4269
+ # flag_value: {
4270
+ # enabled: true,
4271
+ # },
4272
+ # key: "t1",
4273
+ # weight: 50.0,
4274
+ # },
4275
+ # ],
4276
+ # },
4277
+ # exposure_percentage: 50.0,
4278
+ # result: {
4279
+ # executive_summary: "t1 wins with 16% lift in conversion",
4280
+ # reasons_to_launch: "Significant improvement in key metric",
4281
+ # },
4282
+ # run: 1,
4283
+ # started_at: Time.parse("2026-06-16T17:57:10.046Z"),
4284
+ # status: "DONE",
4285
+ # updated_at: Time.parse("2026-06-16T17:57:36.083Z"),
4286
+ # }
4287
+ #
4288
+ # @example Request syntax with placeholder values
4289
+ #
4290
+ # resp = client.stop_experiment_run({
4291
+ # application_identifier: "Identifier", # required
4292
+ # experiment_definition_identifier: "Identifier", # required
4293
+ # run: 1, # required
4294
+ # result: {
4295
+ # executive_summary: "Description",
4296
+ # reasons_to_launch: "Description",
4297
+ # reasons_not_to_launch: "Description",
4298
+ # },
4299
+ # deployment_parameters: {
4300
+ # dynamic_extension_parameters: {
4301
+ # "DynamicParameterKey" => "StringWithLengthBetween1And2048",
4302
+ # },
4303
+ # tags: {
4304
+ # "TagKey" => "TagValue",
4305
+ # },
4306
+ # },
4307
+ # })
4308
+ #
4309
+ # @example Response structure
4310
+ #
4311
+ # resp.application_id #=> String
4312
+ # resp.experiment_definition_id #=> String
4313
+ # resp.run #=> Integer
4314
+ # resp.description #=> String
4315
+ # resp.status #=> String, one of "RUNNING", "DONE"
4316
+ # resp.exposure_percentage #=> Float
4317
+ # resp.treatment_overrides.inline #=> Hash
4318
+ # resp.treatment_overrides.inline["EntityId"] #=> String
4319
+ # resp.result.executive_summary #=> String
4320
+ # resp.result.reasons_to_launch #=> String
4321
+ # resp.result.reasons_not_to_launch #=> String
4322
+ # resp.started_at #=> Time
4323
+ # resp.updated_at #=> Time
4324
+ # resp.ended_at #=> Time
4325
+ # resp.experiment_definition_snapshot.application_id #=> String
4326
+ # resp.experiment_definition_snapshot.id #=> String
4327
+ # resp.experiment_definition_snapshot.name #=> String
4328
+ # resp.experiment_definition_snapshot.hypothesis #=> String
4329
+ # resp.experiment_definition_snapshot.configuration_profile_id #=> String
4330
+ # resp.experiment_definition_snapshot.environment_id #=> String
4331
+ # resp.experiment_definition_snapshot.flag_key #=> String
4332
+ # resp.experiment_definition_snapshot.audience_rule #=> String
4333
+ # resp.experiment_definition_snapshot.audience_description #=> String
4334
+ # resp.experiment_definition_snapshot.launch_criteria #=> String
4335
+ # resp.experiment_definition_snapshot.treatments #=> Array
4336
+ # resp.experiment_definition_snapshot.treatments[0].key #=> String
4337
+ # resp.experiment_definition_snapshot.treatments[0].weight #=> Float
4338
+ # resp.experiment_definition_snapshot.treatments[0].description #=> String
4339
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.enabled #=> Boolean
4340
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.attribute_values #=> Hash
4341
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
4342
+ # resp.experiment_definition_snapshot.control.key #=> String
4343
+ # resp.experiment_definition_snapshot.control.weight #=> Float
4344
+ # resp.experiment_definition_snapshot.control.description #=> String
4345
+ # resp.experiment_definition_snapshot.control.flag_value.enabled #=> Boolean
4346
+ # resp.experiment_definition_snapshot.control.flag_value.attribute_values #=> Hash
4347
+ # resp.experiment_definition_snapshot.control.flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
4348
+ #
4349
+ # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/StopExperimentRun AWS API Documentation
4350
+ #
4351
+ # @overload stop_experiment_run(params = {})
4352
+ # @param [Hash] params ({})
4353
+ def stop_experiment_run(params = {}, options = {})
4354
+ req = build_request(:stop_experiment_run, params)
4355
+ req.send_request(options)
4356
+ end
4357
+
3242
4358
  # Assigns metadata to an AppConfig resource. Tags help organize and
3243
4359
  # categorize your AppConfig resources. Each tag consists of a key and an
3244
4360
  # optional value, both of which you define. You can specify a maximum of
@@ -3336,9 +4452,13 @@ module Aws::AppConfig
3336
4452
  #
3337
4453
  # [1]: https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_appconfigdata_GetLatestConfiguration.html
3338
4454
  #
4455
+ # @option params [Types::VendedMetricsSettings] :vended_metrics
4456
+ # Configuration for vended metrics in the account.
4457
+ #
3339
4458
  # @return [Types::AccountSettings] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3340
4459
  #
3341
4460
  # * {Types::AccountSettings#deletion_protection #deletion_protection} => Types::DeletionProtectionSettings
4461
+ # * {Types::AccountSettings#vended_metrics #vended_metrics} => Types::VendedMetricsSettings
3342
4462
  #
3343
4463
  # @example Request syntax with placeholder values
3344
4464
  #
@@ -3347,12 +4467,16 @@ module Aws::AppConfig
3347
4467
  # enabled: false,
3348
4468
  # protection_period_in_minutes: 1,
3349
4469
  # },
4470
+ # vended_metrics: {
4471
+ # enabled: false,
4472
+ # },
3350
4473
  # })
3351
4474
  #
3352
4475
  # @example Response structure
3353
4476
  #
3354
4477
  # resp.deletion_protection.enabled #=> Boolean
3355
4478
  # resp.deletion_protection.protection_period_in_minutes #=> Integer
4479
+ # resp.vended_metrics.enabled #=> Boolean
3356
4480
  #
3357
4481
  # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/UpdateAccountSettings AWS API Documentation
3358
4482
  #
@@ -3401,7 +4525,7 @@ module Aws::AppConfig
3401
4525
  # @example Request syntax with placeholder values
3402
4526
  #
3403
4527
  # resp = client.update_application({
3404
- # application_id: "Id", # required
4528
+ # application_id: "Name", # required
3405
4529
  # name: "Name",
3406
4530
  # description: "Description",
3407
4531
  # })
@@ -3492,8 +4616,8 @@ module Aws::AppConfig
3492
4616
  # @example Request syntax with placeholder values
3493
4617
  #
3494
4618
  # resp = client.update_configuration_profile({
3495
- # application_id: "Id", # required
3496
- # configuration_profile_id: "Id", # required
4619
+ # application_id: "Name", # required
4620
+ # configuration_profile_id: "LongName", # required
3497
4621
  # name: "LongName",
3498
4622
  # description: "Description",
3499
4623
  # retrieval_role_arn: "RoleArn",
@@ -3692,8 +4816,8 @@ module Aws::AppConfig
3692
4816
  # @example Request syntax with placeholder values
3693
4817
  #
3694
4818
  # resp = client.update_environment({
3695
- # application_id: "Id", # required
3696
- # environment_id: "Id", # required
4819
+ # application_id: "Name", # required
4820
+ # environment_id: "Name", # required
3697
4821
  # name: "Name",
3698
4822
  # description: "Description",
3699
4823
  # monitors: [
@@ -3724,6 +4848,330 @@ module Aws::AppConfig
3724
4848
  req.send_request(options)
3725
4849
  end
3726
4850
 
4851
+ # Updates an experiment definition. You can update treatments, the
4852
+ # control, audience rules, and other properties. You cannot update an
4853
+ # experiment definition while an experiment run is active.
4854
+ #
4855
+ # @option params [required, String] :application_identifier
4856
+ # The application ID or name.
4857
+ #
4858
+ # @option params [required, String] :experiment_definition_identifier
4859
+ # The experiment definition ID or name.
4860
+ #
4861
+ # @option params [Array<Types::TreatmentInput>] :treatments
4862
+ # An updated list of treatments.
4863
+ #
4864
+ # @option params [Types::TreatmentInput] :control
4865
+ # An updated control treatment.
4866
+ #
4867
+ # @option params [String] :hypothesis
4868
+ # An updated hypothesis.
4869
+ #
4870
+ # @option params [String] :audience_rule
4871
+ # An updated audience rule.
4872
+ #
4873
+ # @option params [String] :audience_description
4874
+ # An updated audience description.
4875
+ #
4876
+ # @option params [String] :launch_criteria
4877
+ # Updated launch criteria.
4878
+ #
4879
+ # @return [Types::ExperimentDefinition] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
4880
+ #
4881
+ # * {Types::ExperimentDefinition#application_id #application_id} => String
4882
+ # * {Types::ExperimentDefinition#id #id} => String
4883
+ # * {Types::ExperimentDefinition#name #name} => String
4884
+ # * {Types::ExperimentDefinition#hypothesis #hypothesis} => String
4885
+ # * {Types::ExperimentDefinition#status #status} => String
4886
+ # * {Types::ExperimentDefinition#configuration_profile_id #configuration_profile_id} => String
4887
+ # * {Types::ExperimentDefinition#environment_id #environment_id} => String
4888
+ # * {Types::ExperimentDefinition#flag_key #flag_key} => String
4889
+ # * {Types::ExperimentDefinition#audience_rule #audience_rule} => String
4890
+ # * {Types::ExperimentDefinition#audience_description #audience_description} => String
4891
+ # * {Types::ExperimentDefinition#launch_criteria #launch_criteria} => String
4892
+ # * {Types::ExperimentDefinition#treatments #treatments} => Array&lt;Types::Treatment&gt;
4893
+ # * {Types::ExperimentDefinition#control #control} => Types::Treatment
4894
+ # * {Types::ExperimentDefinition#created_at #created_at} => Time
4895
+ # * {Types::ExperimentDefinition#updated_at #updated_at} => Time
4896
+ # * {Types::ExperimentDefinition#kms_key_identifier #kms_key_identifier} => String
4897
+ #
4898
+ #
4899
+ # @example Example: To update an experiment definition
4900
+ #
4901
+ # # The following UpdateExperimentDefinition example updates the hypothesis and audience rule of an experiment definition.
4902
+ #
4903
+ # resp = client.update_experiment_definition({
4904
+ # application_identifier: "339ohji",
4905
+ # audience_rule: "(eq $country \"US\")",
4906
+ # experiment_definition_identifier: "bsxyd7k",
4907
+ # hypothesis: "Enabling the feature will increase conversion by 10%",
4908
+ # })
4909
+ #
4910
+ # resp.to_h outputs the following:
4911
+ # {
4912
+ # application_id: "339ohji",
4913
+ # audience_rule: "(eq $country \"US\")",
4914
+ # configuration_profile_id: "ur8hx2f",
4915
+ # control: {
4916
+ # flag_value: {
4917
+ # enabled: false,
4918
+ # },
4919
+ # key: "c",
4920
+ # weight: 50.0,
4921
+ # },
4922
+ # created_at: Time.parse("2026-06-16T17:54:55.847Z"),
4923
+ # environment_id: "54j1r29",
4924
+ # flag_key: "my-feature-flag",
4925
+ # hypothesis: "Enabling the feature will increase conversion by 10%",
4926
+ # id: "bsxyd7k",
4927
+ # name: "Example-Experiment-Definition",
4928
+ # status: "IDLE",
4929
+ # treatments: [
4930
+ # {
4931
+ # flag_value: {
4932
+ # enabled: true,
4933
+ # },
4934
+ # key: "t1",
4935
+ # weight: 50.0,
4936
+ # },
4937
+ # ],
4938
+ # updated_at: Time.parse("2026-06-16T18:04:33.632Z"),
4939
+ # }
4940
+ #
4941
+ # @example Request syntax with placeholder values
4942
+ #
4943
+ # resp = client.update_experiment_definition({
4944
+ # application_identifier: "Identifier", # required
4945
+ # experiment_definition_identifier: "Identifier", # required
4946
+ # treatments: [
4947
+ # {
4948
+ # weight: 1.0, # required
4949
+ # description: "Description",
4950
+ # flag_value: { # required
4951
+ # enabled: false, # required
4952
+ # attribute_values: {
4953
+ # "AttributeKey" => "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
4954
+ # },
4955
+ # },
4956
+ # },
4957
+ # ],
4958
+ # control: {
4959
+ # weight: 1.0, # required
4960
+ # description: "Description",
4961
+ # flag_value: { # required
4962
+ # enabled: false, # required
4963
+ # attribute_values: {
4964
+ # "AttributeKey" => "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
4965
+ # },
4966
+ # },
4967
+ # },
4968
+ # hypothesis: "Description",
4969
+ # audience_rule: "Rule",
4970
+ # audience_description: "Description",
4971
+ # launch_criteria: "Description",
4972
+ # })
4973
+ #
4974
+ # @example Response structure
4975
+ #
4976
+ # resp.application_id #=> String
4977
+ # resp.id #=> String
4978
+ # resp.name #=> String
4979
+ # resp.hypothesis #=> String
4980
+ # resp.status #=> String, one of "ACTIVE", "IDLE", "ARCHIVED"
4981
+ # resp.configuration_profile_id #=> String
4982
+ # resp.environment_id #=> String
4983
+ # resp.flag_key #=> String
4984
+ # resp.audience_rule #=> String
4985
+ # resp.audience_description #=> String
4986
+ # resp.launch_criteria #=> String
4987
+ # resp.treatments #=> Array
4988
+ # resp.treatments[0].key #=> String
4989
+ # resp.treatments[0].weight #=> Float
4990
+ # resp.treatments[0].description #=> String
4991
+ # resp.treatments[0].flag_value.enabled #=> Boolean
4992
+ # resp.treatments[0].flag_value.attribute_values #=> Hash
4993
+ # resp.treatments[0].flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
4994
+ # resp.control.key #=> String
4995
+ # resp.control.weight #=> Float
4996
+ # resp.control.description #=> String
4997
+ # resp.control.flag_value.enabled #=> Boolean
4998
+ # resp.control.flag_value.attribute_values #=> Hash
4999
+ # resp.control.flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
5000
+ # resp.created_at #=> Time
5001
+ # resp.updated_at #=> Time
5002
+ # resp.kms_key_identifier #=> String
5003
+ #
5004
+ # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/UpdateExperimentDefinition AWS API Documentation
5005
+ #
5006
+ # @overload update_experiment_definition(params = {})
5007
+ # @param [Hash] params ({})
5008
+ def update_experiment_definition(params = {}, options = {})
5009
+ req = build_request(:update_experiment_definition, params)
5010
+ req.send_request(options)
5011
+ end
5012
+
5013
+ # Updates a running experiment. Use this operation to increase audience
5014
+ # exposure, modify treatment assignment overrides, or update the
5015
+ # description of an active experiment run. Audience exposure can only be
5016
+ # increased, not decreased.
5017
+ #
5018
+ # @option params [required, String] :application_identifier
5019
+ # The application ID or name.
5020
+ #
5021
+ # @option params [required, String] :experiment_definition_identifier
5022
+ # The experiment definition ID or name.
5023
+ #
5024
+ # @option params [required, Integer] :run
5025
+ # The run number to update.
5026
+ #
5027
+ # @option params [String] :description
5028
+ # An updated description for the experiment run.
5029
+ #
5030
+ # @option params [Float] :exposure_percentage
5031
+ # The new exposure percentage. This value can only be increased from the
5032
+ # current setting.
5033
+ #
5034
+ # @option params [Types::TreatmentOverrides] :treatment_overrides
5035
+ # Updated treatment assignment overrides.
5036
+ #
5037
+ # @option params [Types::DeploymentParameters] :deployment_parameters
5038
+ # Updated deployment parameters.
5039
+ #
5040
+ # @return [Types::ExperimentRun] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
5041
+ #
5042
+ # * {Types::ExperimentRun#application_id #application_id} => String
5043
+ # * {Types::ExperimentRun#experiment_definition_id #experiment_definition_id} => String
5044
+ # * {Types::ExperimentRun#run #run} => Integer
5045
+ # * {Types::ExperimentRun#description #description} => String
5046
+ # * {Types::ExperimentRun#status #status} => String
5047
+ # * {Types::ExperimentRun#exposure_percentage #exposure_percentage} => Float
5048
+ # * {Types::ExperimentRun#treatment_overrides #treatment_overrides} => Types::TreatmentOverrides
5049
+ # * {Types::ExperimentRun#result #result} => Types::ExperimentRunResult
5050
+ # * {Types::ExperimentRun#started_at #started_at} => Time
5051
+ # * {Types::ExperimentRun#updated_at #updated_at} => Time
5052
+ # * {Types::ExperimentRun#ended_at #ended_at} => Time
5053
+ # * {Types::ExperimentRun#experiment_definition_snapshot #experiment_definition_snapshot} => Types::ExperimentDefinitionSnapshot
5054
+ #
5055
+ #
5056
+ # @example Example: To update an experiment run
5057
+ #
5058
+ # # The following UpdateExperimentRun example increases the exposure percentage of a running experiment.
5059
+ #
5060
+ # resp = client.update_experiment_run({
5061
+ # application_identifier: "339ohji",
5062
+ # experiment_definition_identifier: "bsxyd7k",
5063
+ # exposure_percentage: 75.0,
5064
+ # run: 1,
5065
+ # })
5066
+ #
5067
+ # resp.to_h outputs the following:
5068
+ # {
5069
+ # application_id: "339ohji",
5070
+ # experiment_definition_id: "bsxyd7k",
5071
+ # experiment_definition_snapshot: {
5072
+ # application_id: "339ohji",
5073
+ # audience_rule: "(eq $country \"US\")",
5074
+ # configuration_profile_id: "ur8hx2f",
5075
+ # control: {
5076
+ # flag_value: {
5077
+ # enabled: false,
5078
+ # },
5079
+ # key: "c",
5080
+ # weight: 50.0,
5081
+ # },
5082
+ # environment_id: "54j1r29",
5083
+ # flag_key: "my-feature-flag",
5084
+ # id: "bsxyd7k",
5085
+ # name: "Example-Experiment-Definition",
5086
+ # treatments: [
5087
+ # {
5088
+ # flag_value: {
5089
+ # enabled: true,
5090
+ # },
5091
+ # key: "t1",
5092
+ # weight: 50.0,
5093
+ # },
5094
+ # ],
5095
+ # },
5096
+ # exposure_percentage: 75.0,
5097
+ # run: 1,
5098
+ # started_at: Time.parse("2026-06-16T17:57:10.046Z"),
5099
+ # status: "RUNNING",
5100
+ # updated_at: Time.parse("2026-06-16T18:01:24.769Z"),
5101
+ # }
5102
+ #
5103
+ # @example Request syntax with placeholder values
5104
+ #
5105
+ # resp = client.update_experiment_run({
5106
+ # application_identifier: "Identifier", # required
5107
+ # experiment_definition_identifier: "Identifier", # required
5108
+ # run: 1, # required
5109
+ # description: "Description",
5110
+ # exposure_percentage: 1.0,
5111
+ # treatment_overrides: {
5112
+ # inline: {
5113
+ # "EntityId" => "TreatmentKey",
5114
+ # },
5115
+ # },
5116
+ # deployment_parameters: {
5117
+ # dynamic_extension_parameters: {
5118
+ # "DynamicParameterKey" => "StringWithLengthBetween1And2048",
5119
+ # },
5120
+ # tags: {
5121
+ # "TagKey" => "TagValue",
5122
+ # },
5123
+ # },
5124
+ # })
5125
+ #
5126
+ # @example Response structure
5127
+ #
5128
+ # resp.application_id #=> String
5129
+ # resp.experiment_definition_id #=> String
5130
+ # resp.run #=> Integer
5131
+ # resp.description #=> String
5132
+ # resp.status #=> String, one of "RUNNING", "DONE"
5133
+ # resp.exposure_percentage #=> Float
5134
+ # resp.treatment_overrides.inline #=> Hash
5135
+ # resp.treatment_overrides.inline["EntityId"] #=> String
5136
+ # resp.result.executive_summary #=> String
5137
+ # resp.result.reasons_to_launch #=> String
5138
+ # resp.result.reasons_not_to_launch #=> String
5139
+ # resp.started_at #=> Time
5140
+ # resp.updated_at #=> Time
5141
+ # resp.ended_at #=> Time
5142
+ # resp.experiment_definition_snapshot.application_id #=> String
5143
+ # resp.experiment_definition_snapshot.id #=> String
5144
+ # resp.experiment_definition_snapshot.name #=> String
5145
+ # resp.experiment_definition_snapshot.hypothesis #=> String
5146
+ # resp.experiment_definition_snapshot.configuration_profile_id #=> String
5147
+ # resp.experiment_definition_snapshot.environment_id #=> String
5148
+ # resp.experiment_definition_snapshot.flag_key #=> String
5149
+ # resp.experiment_definition_snapshot.audience_rule #=> String
5150
+ # resp.experiment_definition_snapshot.audience_description #=> String
5151
+ # resp.experiment_definition_snapshot.launch_criteria #=> String
5152
+ # resp.experiment_definition_snapshot.treatments #=> Array
5153
+ # resp.experiment_definition_snapshot.treatments[0].key #=> String
5154
+ # resp.experiment_definition_snapshot.treatments[0].weight #=> Float
5155
+ # resp.experiment_definition_snapshot.treatments[0].description #=> String
5156
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.enabled #=> Boolean
5157
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.attribute_values #=> Hash
5158
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
5159
+ # resp.experiment_definition_snapshot.control.key #=> String
5160
+ # resp.experiment_definition_snapshot.control.weight #=> Float
5161
+ # resp.experiment_definition_snapshot.control.description #=> String
5162
+ # resp.experiment_definition_snapshot.control.flag_value.enabled #=> Boolean
5163
+ # resp.experiment_definition_snapshot.control.flag_value.attribute_values #=> Hash
5164
+ # resp.experiment_definition_snapshot.control.flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
5165
+ #
5166
+ # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/UpdateExperimentRun AWS API Documentation
5167
+ #
5168
+ # @overload update_experiment_run(params = {})
5169
+ # @param [Hash] params ({})
5170
+ def update_experiment_run(params = {}, options = {})
5171
+ req = build_request(:update_experiment_run, params)
5172
+ req.send_request(options)
5173
+ end
5174
+
3727
5175
  # Updates an AppConfig extension. For more information about extensions,
3728
5176
  # see [Extending workflows][1] in the *AppConfig User Guide*.
3729
5177
  #
@@ -3887,8 +5335,8 @@ module Aws::AppConfig
3887
5335
  # @example Request syntax with placeholder values
3888
5336
  #
3889
5337
  # resp = client.validate_configuration({
3890
- # application_id: "Id", # required
3891
- # configuration_profile_id: "Id", # required
5338
+ # application_id: "Name", # required
5339
+ # configuration_profile_id: "LongName", # required
3892
5340
  # configuration_version: "Version", # required
3893
5341
  # })
3894
5342
  #
@@ -3919,7 +5367,7 @@ module Aws::AppConfig
3919
5367
  tracer: tracer
3920
5368
  )
3921
5369
  context[:gem_name] = 'aws-sdk-appconfig'
3922
- context[:gem_version] = '1.82.0'
5370
+ context[:gem_version] = '1.83.0'
3923
5371
  Seahorse::Client::Request.new(handlers, context)
3924
5372
  end
3925
5373