aws-sdk-appconfig 1.82.0 → 1.84.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,181 @@ 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
+ # <note markdown="1"> Billing for this experiment begins when you call this operation and
3913
+ # continues until the experiment is stopped. For pricing details, see
3914
+ # [AppConfig pricing][1].
3915
+ #
3916
+ # </note>
3917
+ #
3918
+ #
3919
+ #
3920
+ # [1]: https://aws.amazon.com/systems-manager/pricing/
3921
+ #
3922
+ # @option params [required, String] :application_identifier
3923
+ # The application ID or name.
3924
+ #
3925
+ # @option params [required, String] :experiment_definition_identifier
3926
+ # The experiment definition ID or name.
3927
+ #
3928
+ # @option params [String] :description
3929
+ # A description of this experiment run.
3930
+ #
3931
+ # @option params [Float] :exposure_percentage
3932
+ # The percentage of the target audience to expose to treatments. Set to
3933
+ # 0 to validate the experiment before exposing production users.
3934
+ #
3935
+ # @option params [Types::TreatmentOverrides] :treatment_overrides
3936
+ # Treatment assignment overrides that assign specific entity IDs to
3937
+ # treatments directly, bypassing random assignment.
3938
+ #
3939
+ # @option params [Hash<String,String>] :tags
3940
+ # The tags to assign to the experiment run.
3941
+ #
3942
+ # @option params [Types::DeploymentParameters] :deployment_parameters
3943
+ # The deployment parameters for the experiment run, including a KMS key
3944
+ # identifier for encryption.
3945
+ #
3946
+ # @return [Types::ExperimentRun] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3947
+ #
3948
+ # * {Types::ExperimentRun#application_id #application_id} => String
3949
+ # * {Types::ExperimentRun#experiment_definition_id #experiment_definition_id} => String
3950
+ # * {Types::ExperimentRun#run #run} => Integer
3951
+ # * {Types::ExperimentRun#description #description} => String
3952
+ # * {Types::ExperimentRun#status #status} => String
3953
+ # * {Types::ExperimentRun#exposure_percentage #exposure_percentage} => Float
3954
+ # * {Types::ExperimentRun#treatment_overrides #treatment_overrides} => Types::TreatmentOverrides
3955
+ # * {Types::ExperimentRun#result #result} => Types::ExperimentRunResult
3956
+ # * {Types::ExperimentRun#started_at #started_at} => Time
3957
+ # * {Types::ExperimentRun#updated_at #updated_at} => Time
3958
+ # * {Types::ExperimentRun#ended_at #ended_at} => Time
3959
+ # * {Types::ExperimentRun#experiment_definition_snapshot #experiment_definition_snapshot} => Types::ExperimentDefinitionSnapshot
3960
+ #
3961
+ #
3962
+ # @example Example: To start an experiment run
3963
+ #
3964
+ # # The following StartExperimentRun example starts an experiment run with 50% audience exposure.
3965
+ #
3966
+ # resp = client.start_experiment_run({
3967
+ # application_identifier: "339ohji",
3968
+ # experiment_definition_identifier: "bsxyd7k",
3969
+ # exposure_percentage: 50.0,
3970
+ # })
3971
+ #
3972
+ # resp.to_h outputs the following:
3973
+ # {
3974
+ # application_id: "339ohji",
3975
+ # experiment_definition_id: "bsxyd7k",
3976
+ # experiment_definition_snapshot: {
3977
+ # application_id: "339ohji",
3978
+ # audience_rule: "(eq $country \"US\")",
3979
+ # configuration_profile_id: "ur8hx2f",
3980
+ # control: {
3981
+ # flag_value: {
3982
+ # enabled: false,
3983
+ # },
3984
+ # key: "c",
3985
+ # weight: 50.0,
3986
+ # },
3987
+ # environment_id: "54j1r29",
3988
+ # flag_key: "my-feature-flag",
3989
+ # id: "bsxyd7k",
3990
+ # name: "Example-Experiment-Definition",
3991
+ # treatments: [
3992
+ # {
3993
+ # flag_value: {
3994
+ # enabled: true,
3995
+ # },
3996
+ # key: "t1",
3997
+ # weight: 50.0,
3998
+ # },
3999
+ # ],
4000
+ # },
4001
+ # exposure_percentage: 50.0,
4002
+ # run: 1,
4003
+ # started_at: Time.parse("2026-06-16T17:57:10.046Z"),
4004
+ # status: "RUNNING",
4005
+ # updated_at: Time.parse("2026-06-16T17:57:10.567Z"),
4006
+ # }
4007
+ #
4008
+ # @example Request syntax with placeholder values
4009
+ #
4010
+ # resp = client.start_experiment_run({
4011
+ # application_identifier: "Identifier", # required
4012
+ # experiment_definition_identifier: "Identifier", # required
4013
+ # description: "Description",
4014
+ # exposure_percentage: 1.0,
4015
+ # treatment_overrides: {
4016
+ # inline: {
4017
+ # "EntityId" => "TreatmentKey",
4018
+ # },
4019
+ # },
4020
+ # tags: {
4021
+ # "TagKey" => "TagValue",
4022
+ # },
4023
+ # deployment_parameters: {
4024
+ # dynamic_extension_parameters: {
4025
+ # "DynamicParameterKey" => "StringWithLengthBetween1And2048",
4026
+ # },
4027
+ # tags: {
4028
+ # "TagKey" => "TagValue",
4029
+ # },
4030
+ # },
4031
+ # })
4032
+ #
4033
+ # @example Response structure
4034
+ #
4035
+ # resp.application_id #=> String
4036
+ # resp.experiment_definition_id #=> String
4037
+ # resp.run #=> Integer
4038
+ # resp.description #=> String
4039
+ # resp.status #=> String, one of "RUNNING", "DONE"
4040
+ # resp.exposure_percentage #=> Float
4041
+ # resp.treatment_overrides.inline #=> Hash
4042
+ # resp.treatment_overrides.inline["EntityId"] #=> String
4043
+ # resp.result.executive_summary #=> String
4044
+ # resp.result.reasons_to_launch #=> String
4045
+ # resp.result.reasons_not_to_launch #=> String
4046
+ # resp.started_at #=> Time
4047
+ # resp.updated_at #=> Time
4048
+ # resp.ended_at #=> Time
4049
+ # resp.experiment_definition_snapshot.application_id #=> String
4050
+ # resp.experiment_definition_snapshot.id #=> String
4051
+ # resp.experiment_definition_snapshot.name #=> String
4052
+ # resp.experiment_definition_snapshot.hypothesis #=> String
4053
+ # resp.experiment_definition_snapshot.configuration_profile_id #=> String
4054
+ # resp.experiment_definition_snapshot.environment_id #=> String
4055
+ # resp.experiment_definition_snapshot.flag_key #=> String
4056
+ # resp.experiment_definition_snapshot.audience_rule #=> String
4057
+ # resp.experiment_definition_snapshot.audience_description #=> String
4058
+ # resp.experiment_definition_snapshot.launch_criteria #=> String
4059
+ # resp.experiment_definition_snapshot.treatments #=> Array
4060
+ # resp.experiment_definition_snapshot.treatments[0].key #=> String
4061
+ # resp.experiment_definition_snapshot.treatments[0].weight #=> Float
4062
+ # resp.experiment_definition_snapshot.treatments[0].description #=> String
4063
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.enabled #=> Boolean
4064
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.attribute_values #=> Hash
4065
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
4066
+ # resp.experiment_definition_snapshot.control.key #=> String
4067
+ # resp.experiment_definition_snapshot.control.weight #=> Float
4068
+ # resp.experiment_definition_snapshot.control.description #=> String
4069
+ # resp.experiment_definition_snapshot.control.flag_value.enabled #=> Boolean
4070
+ # resp.experiment_definition_snapshot.control.flag_value.attribute_values #=> Hash
4071
+ # resp.experiment_definition_snapshot.control.flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
4072
+ #
4073
+ # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/StartExperimentRun AWS API Documentation
4074
+ #
4075
+ # @overload start_experiment_run(params = {})
4076
+ # @param [Hash] params ({})
4077
+ def start_experiment_run(params = {}, options = {})
4078
+ req = build_request(:start_experiment_run, params)
4079
+ req.send_request(options)
4080
+ end
4081
+
3116
4082
  # Stops a deployment. This API action works only on deployments that
3117
4083
  # have a status of `DEPLOYING`, unless an `AllowRevert` parameter is
3118
4084
  # supplied. If the `AllowRevert` parameter is supplied, the status of an
@@ -3182,8 +4148,8 @@ module Aws::AppConfig
3182
4148
  # @example Request syntax with placeholder values
3183
4149
  #
3184
4150
  # resp = client.stop_deployment({
3185
- # application_id: "Id", # required
3186
- # environment_id: "Id", # required
4151
+ # application_id: "Name", # required
4152
+ # environment_id: "Name", # required
3187
4153
  # deployment_number: 1, # required
3188
4154
  # allow_revert: false,
3189
4155
  # })
@@ -3239,6 +4205,167 @@ module Aws::AppConfig
3239
4205
  req.send_request(options)
3240
4206
  end
3241
4207
 
4208
+ # Stops a running experiment. Stopping an experiment run ends audience
4209
+ # exposure and returns users to the currently deployed feature flag
4210
+ # configuration.
4211
+ #
4212
+ # @option params [required, String] :application_identifier
4213
+ # The application ID or name.
4214
+ #
4215
+ # @option params [required, String] :experiment_definition_identifier
4216
+ # The experiment definition ID or name.
4217
+ #
4218
+ # @option params [required, Integer] :run
4219
+ # The run number to stop.
4220
+ #
4221
+ # @option params [Types::ExperimentRunResult] :result
4222
+ # The result of the experiment run, including an executive summary and
4223
+ # reasons for or against launching.
4224
+ #
4225
+ # @option params [Types::DeploymentParameters] :deployment_parameters
4226
+ # The deployment parameters for the stop operation.
4227
+ #
4228
+ # @return [Types::ExperimentRun] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
4229
+ #
4230
+ # * {Types::ExperimentRun#application_id #application_id} => String
4231
+ # * {Types::ExperimentRun#experiment_definition_id #experiment_definition_id} => String
4232
+ # * {Types::ExperimentRun#run #run} => Integer
4233
+ # * {Types::ExperimentRun#description #description} => String
4234
+ # * {Types::ExperimentRun#status #status} => String
4235
+ # * {Types::ExperimentRun#exposure_percentage #exposure_percentage} => Float
4236
+ # * {Types::ExperimentRun#treatment_overrides #treatment_overrides} => Types::TreatmentOverrides
4237
+ # * {Types::ExperimentRun#result #result} => Types::ExperimentRunResult
4238
+ # * {Types::ExperimentRun#started_at #started_at} => Time
4239
+ # * {Types::ExperimentRun#updated_at #updated_at} => Time
4240
+ # * {Types::ExperimentRun#ended_at #ended_at} => Time
4241
+ # * {Types::ExperimentRun#experiment_definition_snapshot #experiment_definition_snapshot} => Types::ExperimentDefinitionSnapshot
4242
+ #
4243
+ #
4244
+ # @example Example: To stop an experiment run
4245
+ #
4246
+ # # The following StopExperimentRun example stops a running experiment and records the result.
4247
+ #
4248
+ # resp = client.stop_experiment_run({
4249
+ # application_identifier: "339ohji",
4250
+ # experiment_definition_identifier: "bsxyd7k",
4251
+ # result: {
4252
+ # executive_summary: "t1 wins with 16% lift in conversion",
4253
+ # reasons_to_launch: "Significant improvement in key metric",
4254
+ # },
4255
+ # run: 1,
4256
+ # })
4257
+ #
4258
+ # resp.to_h outputs the following:
4259
+ # {
4260
+ # application_id: "339ohji",
4261
+ # ended_at: Time.parse("2026-06-16T17:57:36.083Z"),
4262
+ # experiment_definition_id: "bsxyd7k",
4263
+ # experiment_definition_snapshot: {
4264
+ # application_id: "339ohji",
4265
+ # audience_rule: "(eq $country \"US\")",
4266
+ # configuration_profile_id: "ur8hx2f",
4267
+ # control: {
4268
+ # flag_value: {
4269
+ # enabled: false,
4270
+ # },
4271
+ # key: "c",
4272
+ # weight: 50.0,
4273
+ # },
4274
+ # environment_id: "54j1r29",
4275
+ # flag_key: "my-feature-flag",
4276
+ # id: "bsxyd7k",
4277
+ # name: "Example-Experiment-Definition",
4278
+ # treatments: [
4279
+ # {
4280
+ # flag_value: {
4281
+ # enabled: true,
4282
+ # },
4283
+ # key: "t1",
4284
+ # weight: 50.0,
4285
+ # },
4286
+ # ],
4287
+ # },
4288
+ # exposure_percentage: 50.0,
4289
+ # result: {
4290
+ # executive_summary: "t1 wins with 16% lift in conversion",
4291
+ # reasons_to_launch: "Significant improvement in key metric",
4292
+ # },
4293
+ # run: 1,
4294
+ # started_at: Time.parse("2026-06-16T17:57:10.046Z"),
4295
+ # status: "DONE",
4296
+ # updated_at: Time.parse("2026-06-16T17:57:36.083Z"),
4297
+ # }
4298
+ #
4299
+ # @example Request syntax with placeholder values
4300
+ #
4301
+ # resp = client.stop_experiment_run({
4302
+ # application_identifier: "Identifier", # required
4303
+ # experiment_definition_identifier: "Identifier", # required
4304
+ # run: 1, # required
4305
+ # result: {
4306
+ # executive_summary: "Description",
4307
+ # reasons_to_launch: "Description",
4308
+ # reasons_not_to_launch: "Description",
4309
+ # },
4310
+ # deployment_parameters: {
4311
+ # dynamic_extension_parameters: {
4312
+ # "DynamicParameterKey" => "StringWithLengthBetween1And2048",
4313
+ # },
4314
+ # tags: {
4315
+ # "TagKey" => "TagValue",
4316
+ # },
4317
+ # },
4318
+ # })
4319
+ #
4320
+ # @example Response structure
4321
+ #
4322
+ # resp.application_id #=> String
4323
+ # resp.experiment_definition_id #=> String
4324
+ # resp.run #=> Integer
4325
+ # resp.description #=> String
4326
+ # resp.status #=> String, one of "RUNNING", "DONE"
4327
+ # resp.exposure_percentage #=> Float
4328
+ # resp.treatment_overrides.inline #=> Hash
4329
+ # resp.treatment_overrides.inline["EntityId"] #=> String
4330
+ # resp.result.executive_summary #=> String
4331
+ # resp.result.reasons_to_launch #=> String
4332
+ # resp.result.reasons_not_to_launch #=> String
4333
+ # resp.started_at #=> Time
4334
+ # resp.updated_at #=> Time
4335
+ # resp.ended_at #=> Time
4336
+ # resp.experiment_definition_snapshot.application_id #=> String
4337
+ # resp.experiment_definition_snapshot.id #=> String
4338
+ # resp.experiment_definition_snapshot.name #=> String
4339
+ # resp.experiment_definition_snapshot.hypothesis #=> String
4340
+ # resp.experiment_definition_snapshot.configuration_profile_id #=> String
4341
+ # resp.experiment_definition_snapshot.environment_id #=> String
4342
+ # resp.experiment_definition_snapshot.flag_key #=> String
4343
+ # resp.experiment_definition_snapshot.audience_rule #=> String
4344
+ # resp.experiment_definition_snapshot.audience_description #=> String
4345
+ # resp.experiment_definition_snapshot.launch_criteria #=> String
4346
+ # resp.experiment_definition_snapshot.treatments #=> Array
4347
+ # resp.experiment_definition_snapshot.treatments[0].key #=> String
4348
+ # resp.experiment_definition_snapshot.treatments[0].weight #=> Float
4349
+ # resp.experiment_definition_snapshot.treatments[0].description #=> String
4350
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.enabled #=> Boolean
4351
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.attribute_values #=> Hash
4352
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
4353
+ # resp.experiment_definition_snapshot.control.key #=> String
4354
+ # resp.experiment_definition_snapshot.control.weight #=> Float
4355
+ # resp.experiment_definition_snapshot.control.description #=> String
4356
+ # resp.experiment_definition_snapshot.control.flag_value.enabled #=> Boolean
4357
+ # resp.experiment_definition_snapshot.control.flag_value.attribute_values #=> Hash
4358
+ # resp.experiment_definition_snapshot.control.flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
4359
+ #
4360
+ # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/StopExperimentRun AWS API Documentation
4361
+ #
4362
+ # @overload stop_experiment_run(params = {})
4363
+ # @param [Hash] params ({})
4364
+ def stop_experiment_run(params = {}, options = {})
4365
+ req = build_request(:stop_experiment_run, params)
4366
+ req.send_request(options)
4367
+ end
4368
+
3242
4369
  # Assigns metadata to an AppConfig resource. Tags help organize and
3243
4370
  # categorize your AppConfig resources. Each tag consists of a key and an
3244
4371
  # optional value, both of which you define. You can specify a maximum of
@@ -3336,9 +4463,13 @@ module Aws::AppConfig
3336
4463
  #
3337
4464
  # [1]: https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_appconfigdata_GetLatestConfiguration.html
3338
4465
  #
4466
+ # @option params [Types::VendedMetricsSettings] :vended_metrics
4467
+ # The configuration for vended metrics in the account.
4468
+ #
3339
4469
  # @return [Types::AccountSettings] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3340
4470
  #
3341
4471
  # * {Types::AccountSettings#deletion_protection #deletion_protection} => Types::DeletionProtectionSettings
4472
+ # * {Types::AccountSettings#vended_metrics #vended_metrics} => Types::VendedMetricsSettings
3342
4473
  #
3343
4474
  # @example Request syntax with placeholder values
3344
4475
  #
@@ -3347,12 +4478,16 @@ module Aws::AppConfig
3347
4478
  # enabled: false,
3348
4479
  # protection_period_in_minutes: 1,
3349
4480
  # },
4481
+ # vended_metrics: {
4482
+ # enabled: false,
4483
+ # },
3350
4484
  # })
3351
4485
  #
3352
4486
  # @example Response structure
3353
4487
  #
3354
4488
  # resp.deletion_protection.enabled #=> Boolean
3355
4489
  # resp.deletion_protection.protection_period_in_minutes #=> Integer
4490
+ # resp.vended_metrics.enabled #=> Boolean
3356
4491
  #
3357
4492
  # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/UpdateAccountSettings AWS API Documentation
3358
4493
  #
@@ -3401,7 +4536,7 @@ module Aws::AppConfig
3401
4536
  # @example Request syntax with placeholder values
3402
4537
  #
3403
4538
  # resp = client.update_application({
3404
- # application_id: "Id", # required
4539
+ # application_id: "Name", # required
3405
4540
  # name: "Name",
3406
4541
  # description: "Description",
3407
4542
  # })
@@ -3492,8 +4627,8 @@ module Aws::AppConfig
3492
4627
  # @example Request syntax with placeholder values
3493
4628
  #
3494
4629
  # resp = client.update_configuration_profile({
3495
- # application_id: "Id", # required
3496
- # configuration_profile_id: "Id", # required
4630
+ # application_id: "Name", # required
4631
+ # configuration_profile_id: "LongName", # required
3497
4632
  # name: "LongName",
3498
4633
  # description: "Description",
3499
4634
  # retrieval_role_arn: "RoleArn",
@@ -3692,8 +4827,8 @@ module Aws::AppConfig
3692
4827
  # @example Request syntax with placeholder values
3693
4828
  #
3694
4829
  # resp = client.update_environment({
3695
- # application_id: "Id", # required
3696
- # environment_id: "Id", # required
4830
+ # application_id: "Name", # required
4831
+ # environment_id: "Name", # required
3697
4832
  # name: "Name",
3698
4833
  # description: "Description",
3699
4834
  # monitors: [
@@ -3724,6 +4859,332 @@ module Aws::AppConfig
3724
4859
  req.send_request(options)
3725
4860
  end
3726
4861
 
4862
+ # Updates an experiment definition. You can update treatments, the
4863
+ # control, audience rules, and other properties. You cannot update an
4864
+ # experiment definition while an experiment run is active.
4865
+ #
4866
+ # @option params [required, String] :application_identifier
4867
+ # The application ID or name.
4868
+ #
4869
+ # @option params [required, String] :experiment_definition_identifier
4870
+ # The experiment definition ID or name.
4871
+ #
4872
+ # @option params [Array<Types::TreatmentInput>] :treatments
4873
+ # The updated list of treatments to evaluate during the experiment. Each
4874
+ # treatment defines a distinct variation compared to the control.
4875
+ #
4876
+ # @option params [Types::TreatmentInput] :control
4877
+ # An updated control treatment.
4878
+ #
4879
+ # @option params [String] :hypothesis
4880
+ # An updated hypothesis.
4881
+ #
4882
+ # @option params [String] :audience_rule
4883
+ # An updated audience rule.
4884
+ #
4885
+ # @option params [String] :audience_description
4886
+ # An updated audience description.
4887
+ #
4888
+ # @option params [String] :launch_criteria
4889
+ # Updated launch criteria.
4890
+ #
4891
+ # @return [Types::ExperimentDefinition] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
4892
+ #
4893
+ # * {Types::ExperimentDefinition#application_id #application_id} => String
4894
+ # * {Types::ExperimentDefinition#id #id} => String
4895
+ # * {Types::ExperimentDefinition#name #name} => String
4896
+ # * {Types::ExperimentDefinition#hypothesis #hypothesis} => String
4897
+ # * {Types::ExperimentDefinition#status #status} => String
4898
+ # * {Types::ExperimentDefinition#configuration_profile_id #configuration_profile_id} => String
4899
+ # * {Types::ExperimentDefinition#environment_id #environment_id} => String
4900
+ # * {Types::ExperimentDefinition#flag_key #flag_key} => String
4901
+ # * {Types::ExperimentDefinition#audience_rule #audience_rule} => String
4902
+ # * {Types::ExperimentDefinition#audience_description #audience_description} => String
4903
+ # * {Types::ExperimentDefinition#launch_criteria #launch_criteria} => String
4904
+ # * {Types::ExperimentDefinition#treatments #treatments} => Array&lt;Types::Treatment&gt;
4905
+ # * {Types::ExperimentDefinition#control #control} => Types::Treatment
4906
+ # * {Types::ExperimentDefinition#created_at #created_at} => Time
4907
+ # * {Types::ExperimentDefinition#updated_at #updated_at} => Time
4908
+ # * {Types::ExperimentDefinition#kms_key_identifier #kms_key_identifier} => String
4909
+ #
4910
+ #
4911
+ # @example Example: To update an experiment definition
4912
+ #
4913
+ # # The following UpdateExperimentDefinition example updates the hypothesis and audience rule of an experiment definition.
4914
+ #
4915
+ # resp = client.update_experiment_definition({
4916
+ # application_identifier: "339ohji",
4917
+ # audience_rule: "(eq $country \"US\")",
4918
+ # experiment_definition_identifier: "bsxyd7k",
4919
+ # hypothesis: "Enabling the feature will increase conversion by 10%",
4920
+ # })
4921
+ #
4922
+ # resp.to_h outputs the following:
4923
+ # {
4924
+ # application_id: "339ohji",
4925
+ # audience_rule: "(eq $country \"US\")",
4926
+ # configuration_profile_id: "ur8hx2f",
4927
+ # control: {
4928
+ # flag_value: {
4929
+ # enabled: false,
4930
+ # },
4931
+ # key: "c",
4932
+ # weight: 50.0,
4933
+ # },
4934
+ # created_at: Time.parse("2026-06-16T17:54:55.847Z"),
4935
+ # environment_id: "54j1r29",
4936
+ # flag_key: "my-feature-flag",
4937
+ # hypothesis: "Enabling the feature will increase conversion by 10%",
4938
+ # id: "bsxyd7k",
4939
+ # name: "Example-Experiment-Definition",
4940
+ # status: "IDLE",
4941
+ # treatments: [
4942
+ # {
4943
+ # flag_value: {
4944
+ # enabled: true,
4945
+ # },
4946
+ # key: "t1",
4947
+ # weight: 50.0,
4948
+ # },
4949
+ # ],
4950
+ # updated_at: Time.parse("2026-06-16T18:04:33.632Z"),
4951
+ # }
4952
+ #
4953
+ # @example Request syntax with placeholder values
4954
+ #
4955
+ # resp = client.update_experiment_definition({
4956
+ # application_identifier: "Identifier", # required
4957
+ # experiment_definition_identifier: "Identifier", # required
4958
+ # treatments: [
4959
+ # {
4960
+ # weight: 1.0, # required
4961
+ # description: "Description",
4962
+ # flag_value: { # required
4963
+ # enabled: false, # required
4964
+ # attribute_values: {
4965
+ # "AttributeKey" => "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
4966
+ # },
4967
+ # },
4968
+ # },
4969
+ # ],
4970
+ # control: {
4971
+ # weight: 1.0, # required
4972
+ # description: "Description",
4973
+ # flag_value: { # required
4974
+ # enabled: false, # required
4975
+ # attribute_values: {
4976
+ # "AttributeKey" => "value", # value <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
4977
+ # },
4978
+ # },
4979
+ # },
4980
+ # hypothesis: "Description",
4981
+ # audience_rule: "Rule",
4982
+ # audience_description: "Description",
4983
+ # launch_criteria: "Description",
4984
+ # })
4985
+ #
4986
+ # @example Response structure
4987
+ #
4988
+ # resp.application_id #=> String
4989
+ # resp.id #=> String
4990
+ # resp.name #=> String
4991
+ # resp.hypothesis #=> String
4992
+ # resp.status #=> String, one of "ACTIVE", "IDLE", "ARCHIVED"
4993
+ # resp.configuration_profile_id #=> String
4994
+ # resp.environment_id #=> String
4995
+ # resp.flag_key #=> String
4996
+ # resp.audience_rule #=> String
4997
+ # resp.audience_description #=> String
4998
+ # resp.launch_criteria #=> String
4999
+ # resp.treatments #=> Array
5000
+ # resp.treatments[0].key #=> String
5001
+ # resp.treatments[0].weight #=> Float
5002
+ # resp.treatments[0].description #=> String
5003
+ # resp.treatments[0].flag_value.enabled #=> Boolean
5004
+ # resp.treatments[0].flag_value.attribute_values #=> Hash
5005
+ # resp.treatments[0].flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
5006
+ # resp.control.key #=> String
5007
+ # resp.control.weight #=> Float
5008
+ # resp.control.description #=> String
5009
+ # resp.control.flag_value.enabled #=> Boolean
5010
+ # resp.control.flag_value.attribute_values #=> Hash
5011
+ # resp.control.flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
5012
+ # resp.created_at #=> Time
5013
+ # resp.updated_at #=> Time
5014
+ # resp.kms_key_identifier #=> String
5015
+ #
5016
+ # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/UpdateExperimentDefinition AWS API Documentation
5017
+ #
5018
+ # @overload update_experiment_definition(params = {})
5019
+ # @param [Hash] params ({})
5020
+ def update_experiment_definition(params = {}, options = {})
5021
+ req = build_request(:update_experiment_definition, params)
5022
+ req.send_request(options)
5023
+ end
5024
+
5025
+ # Updates a running experiment. Use this operation to increase audience
5026
+ # exposure, modify treatment assignment overrides, or update the
5027
+ # description of an active experiment run. Audience exposure can only be
5028
+ # increased, not decreased.
5029
+ #
5030
+ # @option params [required, String] :application_identifier
5031
+ # The application ID or name.
5032
+ #
5033
+ # @option params [required, String] :experiment_definition_identifier
5034
+ # The experiment definition ID or name.
5035
+ #
5036
+ # @option params [required, Integer] :run
5037
+ # The run number to update.
5038
+ #
5039
+ # @option params [String] :description
5040
+ # An updated description for the experiment run.
5041
+ #
5042
+ # @option params [Float] :exposure_percentage
5043
+ # The new exposure percentage. This value can only be increased from the
5044
+ # current setting.
5045
+ #
5046
+ # @option params [Types::TreatmentOverrides] :treatment_overrides
5047
+ # The updated treatment assignment overrides that assign specific entity
5048
+ # IDs to treatments, bypassing random assignment.
5049
+ #
5050
+ # @option params [Types::DeploymentParameters] :deployment_parameters
5051
+ # The updated deployment parameters for the experiment run.
5052
+ #
5053
+ # @return [Types::ExperimentRun] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
5054
+ #
5055
+ # * {Types::ExperimentRun#application_id #application_id} => String
5056
+ # * {Types::ExperimentRun#experiment_definition_id #experiment_definition_id} => String
5057
+ # * {Types::ExperimentRun#run #run} => Integer
5058
+ # * {Types::ExperimentRun#description #description} => String
5059
+ # * {Types::ExperimentRun#status #status} => String
5060
+ # * {Types::ExperimentRun#exposure_percentage #exposure_percentage} => Float
5061
+ # * {Types::ExperimentRun#treatment_overrides #treatment_overrides} => Types::TreatmentOverrides
5062
+ # * {Types::ExperimentRun#result #result} => Types::ExperimentRunResult
5063
+ # * {Types::ExperimentRun#started_at #started_at} => Time
5064
+ # * {Types::ExperimentRun#updated_at #updated_at} => Time
5065
+ # * {Types::ExperimentRun#ended_at #ended_at} => Time
5066
+ # * {Types::ExperimentRun#experiment_definition_snapshot #experiment_definition_snapshot} => Types::ExperimentDefinitionSnapshot
5067
+ #
5068
+ #
5069
+ # @example Example: To update an experiment run
5070
+ #
5071
+ # # The following UpdateExperimentRun example increases the exposure percentage of a running experiment.
5072
+ #
5073
+ # resp = client.update_experiment_run({
5074
+ # application_identifier: "339ohji",
5075
+ # experiment_definition_identifier: "bsxyd7k",
5076
+ # exposure_percentage: 75.0,
5077
+ # run: 1,
5078
+ # })
5079
+ #
5080
+ # resp.to_h outputs the following:
5081
+ # {
5082
+ # application_id: "339ohji",
5083
+ # experiment_definition_id: "bsxyd7k",
5084
+ # experiment_definition_snapshot: {
5085
+ # application_id: "339ohji",
5086
+ # audience_rule: "(eq $country \"US\")",
5087
+ # configuration_profile_id: "ur8hx2f",
5088
+ # control: {
5089
+ # flag_value: {
5090
+ # enabled: false,
5091
+ # },
5092
+ # key: "c",
5093
+ # weight: 50.0,
5094
+ # },
5095
+ # environment_id: "54j1r29",
5096
+ # flag_key: "my-feature-flag",
5097
+ # id: "bsxyd7k",
5098
+ # name: "Example-Experiment-Definition",
5099
+ # treatments: [
5100
+ # {
5101
+ # flag_value: {
5102
+ # enabled: true,
5103
+ # },
5104
+ # key: "t1",
5105
+ # weight: 50.0,
5106
+ # },
5107
+ # ],
5108
+ # },
5109
+ # exposure_percentage: 75.0,
5110
+ # run: 1,
5111
+ # started_at: Time.parse("2026-06-16T17:57:10.046Z"),
5112
+ # status: "RUNNING",
5113
+ # updated_at: Time.parse("2026-06-16T18:01:24.769Z"),
5114
+ # }
5115
+ #
5116
+ # @example Request syntax with placeholder values
5117
+ #
5118
+ # resp = client.update_experiment_run({
5119
+ # application_identifier: "Identifier", # required
5120
+ # experiment_definition_identifier: "Identifier", # required
5121
+ # run: 1, # required
5122
+ # description: "Description",
5123
+ # exposure_percentage: 1.0,
5124
+ # treatment_overrides: {
5125
+ # inline: {
5126
+ # "EntityId" => "TreatmentKey",
5127
+ # },
5128
+ # },
5129
+ # deployment_parameters: {
5130
+ # dynamic_extension_parameters: {
5131
+ # "DynamicParameterKey" => "StringWithLengthBetween1And2048",
5132
+ # },
5133
+ # tags: {
5134
+ # "TagKey" => "TagValue",
5135
+ # },
5136
+ # },
5137
+ # })
5138
+ #
5139
+ # @example Response structure
5140
+ #
5141
+ # resp.application_id #=> String
5142
+ # resp.experiment_definition_id #=> String
5143
+ # resp.run #=> Integer
5144
+ # resp.description #=> String
5145
+ # resp.status #=> String, one of "RUNNING", "DONE"
5146
+ # resp.exposure_percentage #=> Float
5147
+ # resp.treatment_overrides.inline #=> Hash
5148
+ # resp.treatment_overrides.inline["EntityId"] #=> String
5149
+ # resp.result.executive_summary #=> String
5150
+ # resp.result.reasons_to_launch #=> String
5151
+ # resp.result.reasons_not_to_launch #=> String
5152
+ # resp.started_at #=> Time
5153
+ # resp.updated_at #=> Time
5154
+ # resp.ended_at #=> Time
5155
+ # resp.experiment_definition_snapshot.application_id #=> String
5156
+ # resp.experiment_definition_snapshot.id #=> String
5157
+ # resp.experiment_definition_snapshot.name #=> String
5158
+ # resp.experiment_definition_snapshot.hypothesis #=> String
5159
+ # resp.experiment_definition_snapshot.configuration_profile_id #=> String
5160
+ # resp.experiment_definition_snapshot.environment_id #=> String
5161
+ # resp.experiment_definition_snapshot.flag_key #=> String
5162
+ # resp.experiment_definition_snapshot.audience_rule #=> String
5163
+ # resp.experiment_definition_snapshot.audience_description #=> String
5164
+ # resp.experiment_definition_snapshot.launch_criteria #=> String
5165
+ # resp.experiment_definition_snapshot.treatments #=> Array
5166
+ # resp.experiment_definition_snapshot.treatments[0].key #=> String
5167
+ # resp.experiment_definition_snapshot.treatments[0].weight #=> Float
5168
+ # resp.experiment_definition_snapshot.treatments[0].description #=> String
5169
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.enabled #=> Boolean
5170
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.attribute_values #=> Hash
5171
+ # resp.experiment_definition_snapshot.treatments[0].flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
5172
+ # resp.experiment_definition_snapshot.control.key #=> String
5173
+ # resp.experiment_definition_snapshot.control.weight #=> Float
5174
+ # resp.experiment_definition_snapshot.control.description #=> String
5175
+ # resp.experiment_definition_snapshot.control.flag_value.enabled #=> Boolean
5176
+ # resp.experiment_definition_snapshot.control.flag_value.attribute_values #=> Hash
5177
+ # resp.experiment_definition_snapshot.control.flag_value.attribute_values["AttributeKey"] #=> <Hash,Array,String,Numeric,Boolean,IO,Set,nil>
5178
+ #
5179
+ # @see http://docs.aws.amazon.com/goto/WebAPI/appconfig-2019-10-09/UpdateExperimentRun AWS API Documentation
5180
+ #
5181
+ # @overload update_experiment_run(params = {})
5182
+ # @param [Hash] params ({})
5183
+ def update_experiment_run(params = {}, options = {})
5184
+ req = build_request(:update_experiment_run, params)
5185
+ req.send_request(options)
5186
+ end
5187
+
3727
5188
  # Updates an AppConfig extension. For more information about extensions,
3728
5189
  # see [Extending workflows][1] in the *AppConfig User Guide*.
3729
5190
  #
@@ -3887,8 +5348,8 @@ module Aws::AppConfig
3887
5348
  # @example Request syntax with placeholder values
3888
5349
  #
3889
5350
  # resp = client.validate_configuration({
3890
- # application_id: "Id", # required
3891
- # configuration_profile_id: "Id", # required
5351
+ # application_id: "Name", # required
5352
+ # configuration_profile_id: "LongName", # required
3892
5353
  # configuration_version: "Version", # required
3893
5354
  # })
3894
5355
  #
@@ -3919,7 +5380,7 @@ module Aws::AppConfig
3919
5380
  tracer: tracer
3920
5381
  )
3921
5382
  context[:gem_name] = 'aws-sdk-appconfig'
3922
- context[:gem_version] = '1.82.0'
5383
+ context[:gem_version] = '1.84.0'
3923
5384
  Seahorse::Client::Request.new(handlers, context)
3924
5385
  end
3925
5386