aws-sdk-sagemaker 1.11.0 → 1.12.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ee2ea897257477fdcf0ad19c6efacb733584a506
4
- data.tar.gz: 7772a66e93ece01180c7ad1419c247e84e524b5d
3
+ metadata.gz: 4bc9398e9b075cc03b7dde79c0172490b5505749
4
+ data.tar.gz: 1b1a8207370694e13e3cdf89565bd17b351ce889
5
5
  SHA512:
6
- metadata.gz: 353bbb5b691d8ccfcdaa2303e4ec230568ba0d729d896309f304fbec799bbe203f4d58844d0ed96e1cf9102afec0c3bc091a6aa6efba7cac4e75bd6b03d2cea9
7
- data.tar.gz: c85c79fa37e5fdf36df028c84e944b2c9c98acf2011d419f6a48f5d7b6adea74e4aa5c412c3cf79c4bc69976e53a167911a76abfe646a0ee0509d770bebf2d45
6
+ metadata.gz: 7de3c26a985699efca5c44924c3449d1c46c508fd4f1d6fea0461367ee1020bc55fb8184e474447f5740620d8645c6ac06bf78a91582ab9cb1e03dd17c52c70e
7
+ data.tar.gz: bcdb1f14c3ff79b55ab1134fe38ca9a1af219785e7487695b879c7c6cfb56950085fcd82c9a3dcee843e956cf98795b3344fab7ada238e1087fa33bd70610120
@@ -43,6 +43,6 @@ require_relative 'aws-sdk-sagemaker/customizations'
43
43
  # @service
44
44
  module Aws::SageMaker
45
45
 
46
- GEM_VERSION = '1.11.0'
46
+ GEM_VERSION = '1.12.0'
47
47
 
48
48
  end
@@ -933,7 +933,7 @@ module Aws::SageMaker
933
933
  #
934
934
  # @option params [required, String] :training_job_name
935
935
  # The name of the training job. The name must be unique within an AWS
936
- # Region in an AWS account. It appears in the Amazon SageMaker console.
936
+ # Region in an AWS account.
937
937
  #
938
938
  # @option params [Hash<String,String>] :hyper_parameters
939
939
  # Algorithm-specific parameters that influence the quality of the model.
@@ -1108,6 +1108,145 @@ module Aws::SageMaker
1108
1108
  req.send_request(options)
1109
1109
  end
1110
1110
 
1111
+ # Starts a transform job. After the results are obtained, Amazon
1112
+ # SageMaker saves them to an Amazon S3 location that you specify.
1113
+ #
1114
+ # To perform batch transformations, you create a transform job and use
1115
+ # the data that you have readily available.
1116
+ #
1117
+ # In the request body, you provide the following:
1118
+ #
1119
+ # * `TransformJobName` - Identifies the transform job. The name must be
1120
+ # unique within an AWS Region in an AWS account.
1121
+ #
1122
+ # * `ModelName` - Identifies the model to use.
1123
+ #
1124
+ # * `TransformInput` - Describes the dataset to be transformed and the
1125
+ # Amazon S3 location where it is stored.
1126
+ #
1127
+ # * `TransformOutput` - Identifies the Amazon S3 location where you want
1128
+ # Amazon SageMaker to save the results from the transform job.
1129
+ #
1130
+ # * `TransformResources` - Identifies the ML compute instances for the
1131
+ # transform job.
1132
+ #
1133
+ # For more information about how batch transformation works Amazon
1134
+ # SageMaker, see [How It Works][1].
1135
+ #
1136
+ #
1137
+ #
1138
+ # [1]: http://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html
1139
+ #
1140
+ # @option params [required, String] :transform_job_name
1141
+ # The name of the transform job. The name must be unique within an AWS
1142
+ # Region in an AWS account.
1143
+ #
1144
+ # @option params [required, String] :model_name
1145
+ # The name of the model that you want to use for the transform job.
1146
+ #
1147
+ # @option params [Integer] :max_concurrent_transforms
1148
+ # The maximum number of parallel requests on each instance node that can
1149
+ # be launched in a transform job. The default value is `1`. To allow
1150
+ # Amazon SageMaker to determine the appropriate number for
1151
+ # `MaxConcurrentTransforms`, set the value to `0`.
1152
+ #
1153
+ # @option params [Integer] :max_payload_in_mb
1154
+ # The maximum payload size allowed, in MB. A payload is the data portion
1155
+ # of a record (without metadata). The value in `MaxPayloadInMB` must be
1156
+ # greater than the size of a single record.You can approximate the size
1157
+ # of a record by dividing the size of your dataset by the number of
1158
+ # records. The value you enter should be proportional to the number of
1159
+ # records you want per batch. It is recommended to enter a slightly
1160
+ # higher value to ensure the records will fit within the maximum payload
1161
+ # size. The default value is `6` MB. For an unlimited payload size, set
1162
+ # the value to `0`.
1163
+ #
1164
+ # @option params [String] :batch_strategy
1165
+ # Determins the number of records included in a single batch.
1166
+ # `SingleRecord` means only one record is used per batch. `MultiRecord`
1167
+ # means a batch is set to contain as many records that could possibly
1168
+ # fit within the `MaxPayloadInMB` limit.
1169
+ #
1170
+ # @option params [Hash<String,String>] :environment
1171
+ # The environment variables to set in the Docker container. We support
1172
+ # up to 16 key and values entries in the map.
1173
+ #
1174
+ # @option params [required, Types::TransformInput] :transform_input
1175
+ # Describes the input source and the way the transform job consumes it.
1176
+ #
1177
+ # @option params [required, Types::TransformOutput] :transform_output
1178
+ # Describes the results of the transform job.
1179
+ #
1180
+ # @option params [required, Types::TransformResources] :transform_resources
1181
+ # Describes the resources, including ML instance types and ML instance
1182
+ # count, to use for the transform job.
1183
+ #
1184
+ # @option params [Array<Types::Tag>] :tags
1185
+ # An array of key-value pairs. Adding tags is optional. For more
1186
+ # information, see [Using Cost Allocation Tags][1] in the *AWS Billing
1187
+ # and Cost Management User Guide*.
1188
+ #
1189
+ #
1190
+ #
1191
+ # [1]: http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-what
1192
+ #
1193
+ # @return [Types::CreateTransformJobResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1194
+ #
1195
+ # * {Types::CreateTransformJobResponse#transform_job_arn #transform_job_arn} => String
1196
+ #
1197
+ # @example Request syntax with placeholder values
1198
+ #
1199
+ # resp = client.create_transform_job({
1200
+ # transform_job_name: "TransformJobName", # required
1201
+ # model_name: "ModelName", # required
1202
+ # max_concurrent_transforms: 1,
1203
+ # max_payload_in_mb: 1,
1204
+ # batch_strategy: "MultiRecord", # accepts MultiRecord, SingleRecord
1205
+ # environment: {
1206
+ # "TransformEnvironmentKey" => "TransformEnvironmentValue",
1207
+ # },
1208
+ # transform_input: { # required
1209
+ # data_source: { # required
1210
+ # s3_data_source: { # required
1211
+ # s3_data_type: "ManifestFile", # required, accepts ManifestFile, S3Prefix
1212
+ # s3_uri: "S3Uri", # required
1213
+ # },
1214
+ # },
1215
+ # content_type: "ContentType",
1216
+ # compression_type: "None", # accepts None, Gzip
1217
+ # split_type: "None", # accepts None, Line, RecordIO
1218
+ # },
1219
+ # transform_output: { # required
1220
+ # s3_output_path: "S3Uri", # required
1221
+ # accept: "Accept",
1222
+ # assemble_with: "None", # accepts None, Line
1223
+ # kms_key_id: "KmsKeyId",
1224
+ # },
1225
+ # transform_resources: { # required
1226
+ # instance_type: "ml.m4.xlarge", # required, accepts ml.m4.xlarge, ml.m4.2xlarge, ml.m4.4xlarge, ml.m4.10xlarge, ml.m4.16xlarge, ml.c4.xlarge, ml.c4.2xlarge, ml.c4.4xlarge, ml.c4.8xlarge, ml.p2.xlarge, ml.p2.8xlarge, ml.p2.16xlarge, ml.p3.2xlarge, ml.p3.8xlarge, ml.p3.16xlarge, ml.c5.xlarge, ml.c5.2xlarge, ml.c5.4xlarge, ml.c5.9xlarge, ml.c5.18xlarge, ml.m5.large, ml.m5.xlarge, ml.m5.2xlarge, ml.m5.4xlarge, ml.m5.12xlarge, ml.m5.24xlarge
1227
+ # instance_count: 1, # required
1228
+ # },
1229
+ # tags: [
1230
+ # {
1231
+ # key: "TagKey", # required
1232
+ # value: "TagValue", # required
1233
+ # },
1234
+ # ],
1235
+ # })
1236
+ #
1237
+ # @example Response structure
1238
+ #
1239
+ # resp.transform_job_arn #=> String
1240
+ #
1241
+ # @see http://docs.aws.amazon.com/goto/WebAPI/sagemaker-2017-07-24/CreateTransformJob AWS API Documentation
1242
+ #
1243
+ # @overload create_transform_job(params = {})
1244
+ # @param [Hash] params ({})
1245
+ def create_transform_job(params = {}, options = {})
1246
+ req = build_request(:create_transform_job, params)
1247
+ req.send_request(options)
1248
+ end
1249
+
1111
1250
  # Deletes an endpoint. Amazon SageMaker frees up all of the resources
1112
1251
  # that were deployed when the endpoint was created.
1113
1252
  #
@@ -1691,6 +1830,71 @@ module Aws::SageMaker
1691
1830
  req.send_request(options)
1692
1831
  end
1693
1832
 
1833
+ # Returns information about a transform job.
1834
+ #
1835
+ # @option params [required, String] :transform_job_name
1836
+ # The name of the transform job that you want to view details of.
1837
+ #
1838
+ # @return [Types::DescribeTransformJobResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1839
+ #
1840
+ # * {Types::DescribeTransformJobResponse#transform_job_name #transform_job_name} => String
1841
+ # * {Types::DescribeTransformJobResponse#transform_job_arn #transform_job_arn} => String
1842
+ # * {Types::DescribeTransformJobResponse#transform_job_status #transform_job_status} => String
1843
+ # * {Types::DescribeTransformJobResponse#failure_reason #failure_reason} => String
1844
+ # * {Types::DescribeTransformJobResponse#model_name #model_name} => String
1845
+ # * {Types::DescribeTransformJobResponse#max_concurrent_transforms #max_concurrent_transforms} => Integer
1846
+ # * {Types::DescribeTransformJobResponse#max_payload_in_mb #max_payload_in_mb} => Integer
1847
+ # * {Types::DescribeTransformJobResponse#batch_strategy #batch_strategy} => String
1848
+ # * {Types::DescribeTransformJobResponse#environment #environment} => Hash&lt;String,String&gt;
1849
+ # * {Types::DescribeTransformJobResponse#transform_input #transform_input} => Types::TransformInput
1850
+ # * {Types::DescribeTransformJobResponse#transform_output #transform_output} => Types::TransformOutput
1851
+ # * {Types::DescribeTransformJobResponse#transform_resources #transform_resources} => Types::TransformResources
1852
+ # * {Types::DescribeTransformJobResponse#creation_time #creation_time} => Time
1853
+ # * {Types::DescribeTransformJobResponse#transform_start_time #transform_start_time} => Time
1854
+ # * {Types::DescribeTransformJobResponse#transform_end_time #transform_end_time} => Time
1855
+ #
1856
+ # @example Request syntax with placeholder values
1857
+ #
1858
+ # resp = client.describe_transform_job({
1859
+ # transform_job_name: "TransformJobName", # required
1860
+ # })
1861
+ #
1862
+ # @example Response structure
1863
+ #
1864
+ # resp.transform_job_name #=> String
1865
+ # resp.transform_job_arn #=> String
1866
+ # resp.transform_job_status #=> String, one of "InProgress", "Completed", "Failed", "Stopping", "Stopped"
1867
+ # resp.failure_reason #=> String
1868
+ # resp.model_name #=> String
1869
+ # resp.max_concurrent_transforms #=> Integer
1870
+ # resp.max_payload_in_mb #=> Integer
1871
+ # resp.batch_strategy #=> String, one of "MultiRecord", "SingleRecord"
1872
+ # resp.environment #=> Hash
1873
+ # resp.environment["TransformEnvironmentKey"] #=> String
1874
+ # resp.transform_input.data_source.s3_data_source.s3_data_type #=> String, one of "ManifestFile", "S3Prefix"
1875
+ # resp.transform_input.data_source.s3_data_source.s3_uri #=> String
1876
+ # resp.transform_input.content_type #=> String
1877
+ # resp.transform_input.compression_type #=> String, one of "None", "Gzip"
1878
+ # resp.transform_input.split_type #=> String, one of "None", "Line", "RecordIO"
1879
+ # resp.transform_output.s3_output_path #=> String
1880
+ # resp.transform_output.accept #=> String
1881
+ # resp.transform_output.assemble_with #=> String, one of "None", "Line"
1882
+ # resp.transform_output.kms_key_id #=> String
1883
+ # resp.transform_resources.instance_type #=> String, one of "ml.m4.xlarge", "ml.m4.2xlarge", "ml.m4.4xlarge", "ml.m4.10xlarge", "ml.m4.16xlarge", "ml.c4.xlarge", "ml.c4.2xlarge", "ml.c4.4xlarge", "ml.c4.8xlarge", "ml.p2.xlarge", "ml.p2.8xlarge", "ml.p2.16xlarge", "ml.p3.2xlarge", "ml.p3.8xlarge", "ml.p3.16xlarge", "ml.c5.xlarge", "ml.c5.2xlarge", "ml.c5.4xlarge", "ml.c5.9xlarge", "ml.c5.18xlarge", "ml.m5.large", "ml.m5.xlarge", "ml.m5.2xlarge", "ml.m5.4xlarge", "ml.m5.12xlarge", "ml.m5.24xlarge"
1884
+ # resp.transform_resources.instance_count #=> Integer
1885
+ # resp.creation_time #=> Time
1886
+ # resp.transform_start_time #=> Time
1887
+ # resp.transform_end_time #=> Time
1888
+ #
1889
+ # @see http://docs.aws.amazon.com/goto/WebAPI/sagemaker-2017-07-24/DescribeTransformJob AWS API Documentation
1890
+ #
1891
+ # @overload describe_transform_job(params = {})
1892
+ # @param [Hash] params ({})
1893
+ def describe_transform_job(params = {}, options = {})
1894
+ req = build_request(:describe_transform_job, params)
1895
+ req.send_request(options)
1896
+ end
1897
+
1694
1898
  # Lists endpoint configurations.
1695
1899
  #
1696
1900
  # @option params [String] :sort_by
@@ -2214,8 +2418,8 @@ module Aws::SageMaker
2214
2418
  # The maximum number of training jobs to return in the response.
2215
2419
  #
2216
2420
  # @option params [Time,DateTime,Date,Integer,String] :creation_time_after
2217
- # A filter that only training jobs created after the specified time
2218
- # (timestamp).
2421
+ # A filter that returns only training jobs created after the specified
2422
+ # time (timestamp).
2219
2423
  #
2220
2424
  # @option params [Time,DateTime,Date,Integer,String] :creation_time_before
2221
2425
  # A filter that returns only training jobs created before the specified
@@ -2353,6 +2557,87 @@ module Aws::SageMaker
2353
2557
  req.send_request(options)
2354
2558
  end
2355
2559
 
2560
+ # Lists transform jobs.
2561
+ #
2562
+ # @option params [Time,DateTime,Date,Integer,String] :creation_time_after
2563
+ # A filter that returns only transform jobs created after the specified
2564
+ # time.
2565
+ #
2566
+ # @option params [Time,DateTime,Date,Integer,String] :creation_time_before
2567
+ # A filter that returns only transform jobs created before the specified
2568
+ # time.
2569
+ #
2570
+ # @option params [Time,DateTime,Date,Integer,String] :last_modified_time_after
2571
+ # A filter that returns only transform jobs modified after the specified
2572
+ # time.
2573
+ #
2574
+ # @option params [Time,DateTime,Date,Integer,String] :last_modified_time_before
2575
+ # A filter that returns only transform jobs modified before the
2576
+ # specified time.
2577
+ #
2578
+ # @option params [String] :name_contains
2579
+ # A string in the transform job name. This filter returns only transform
2580
+ # jobs whose name contains the specified string.
2581
+ #
2582
+ # @option params [String] :status_equals
2583
+ # A filter that retrieves only transform jobs with a specific status.
2584
+ #
2585
+ # @option params [String] :sort_by
2586
+ # The field to sort results by. The default is `CreationTime`.
2587
+ #
2588
+ # @option params [String] :sort_order
2589
+ # The sort order for results. The default is `Descending`.
2590
+ #
2591
+ # @option params [String] :next_token
2592
+ # If the result of the previous `ListTransformJobs` request was
2593
+ # truncated, the response includes a `NextToken`. To retrieve the next
2594
+ # set of transform jobs, use the token in the next request.
2595
+ #
2596
+ # @option params [Integer] :max_results
2597
+ # The maximum number of transform jobs to return in the response. The
2598
+ # default value is `10`.
2599
+ #
2600
+ # @return [Types::ListTransformJobsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2601
+ #
2602
+ # * {Types::ListTransformJobsResponse#transform_job_summaries #transform_job_summaries} => Array&lt;Types::TransformJobSummary&gt;
2603
+ # * {Types::ListTransformJobsResponse#next_token #next_token} => String
2604
+ #
2605
+ # @example Request syntax with placeholder values
2606
+ #
2607
+ # resp = client.list_transform_jobs({
2608
+ # creation_time_after: Time.now,
2609
+ # creation_time_before: Time.now,
2610
+ # last_modified_time_after: Time.now,
2611
+ # last_modified_time_before: Time.now,
2612
+ # name_contains: "NameContains",
2613
+ # status_equals: "InProgress", # accepts InProgress, Completed, Failed, Stopping, Stopped
2614
+ # sort_by: "Name", # accepts Name, CreationTime, Status
2615
+ # sort_order: "Ascending", # accepts Ascending, Descending
2616
+ # next_token: "NextToken",
2617
+ # max_results: 1,
2618
+ # })
2619
+ #
2620
+ # @example Response structure
2621
+ #
2622
+ # resp.transform_job_summaries #=> Array
2623
+ # resp.transform_job_summaries[0].transform_job_name #=> String
2624
+ # resp.transform_job_summaries[0].transform_job_arn #=> String
2625
+ # resp.transform_job_summaries[0].creation_time #=> Time
2626
+ # resp.transform_job_summaries[0].transform_end_time #=> Time
2627
+ # resp.transform_job_summaries[0].last_modified_time #=> Time
2628
+ # resp.transform_job_summaries[0].transform_job_status #=> String, one of "InProgress", "Completed", "Failed", "Stopping", "Stopped"
2629
+ # resp.transform_job_summaries[0].failure_reason #=> String
2630
+ # resp.next_token #=> String
2631
+ #
2632
+ # @see http://docs.aws.amazon.com/goto/WebAPI/sagemaker-2017-07-24/ListTransformJobs AWS API Documentation
2633
+ #
2634
+ # @overload list_transform_jobs(params = {})
2635
+ # @param [Hash] params ({})
2636
+ def list_transform_jobs(params = {}, options = {})
2637
+ req = build_request(:list_transform_jobs, params)
2638
+ req.send_request(options)
2639
+ end
2640
+
2356
2641
  # Launches an ML compute instance with the latest version of the
2357
2642
  # libraries and attaches your ML storage volume. After configuring the
2358
2643
  # notebook instance, Amazon SageMaker sets the notebook instance status
@@ -2384,7 +2669,7 @@ module Aws::SageMaker
2384
2669
  #
2385
2670
  # All model artifacts output from the training jobs are stored in Amazon
2386
2671
  # Simple Storage Service (Amazon S3). All data that the training jobs
2387
- # write toAmazon CloudWatch Logs are still available in CloudWatch.
2672
+ # write to Amazon CloudWatch Logs are still available in CloudWatch.
2388
2673
  # After the tuning job moves to the `Stopped` state, it releases all
2389
2674
  # reserved resources for the tuning job.
2390
2675
  #
@@ -2472,6 +2757,34 @@ module Aws::SageMaker
2472
2757
  req.send_request(options)
2473
2758
  end
2474
2759
 
2760
+ # Stops a transform job.
2761
+ #
2762
+ # When Amazon SageMaker receives a `StopTransformJob` request, the
2763
+ # status of the job changes to `Stopping`. After Amazon SageMaker stops
2764
+ # the job, the status is set to `Stopped`. When you stop a transform job
2765
+ # before it is completed, Amazon SageMaker doesn't store the job's
2766
+ # output in Amazon S3.
2767
+ #
2768
+ # @option params [required, String] :transform_job_name
2769
+ # The name of the transform job to stop.
2770
+ #
2771
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
2772
+ #
2773
+ # @example Request syntax with placeholder values
2774
+ #
2775
+ # resp = client.stop_transform_job({
2776
+ # transform_job_name: "TransformJobName", # required
2777
+ # })
2778
+ #
2779
+ # @see http://docs.aws.amazon.com/goto/WebAPI/sagemaker-2017-07-24/StopTransformJob AWS API Documentation
2780
+ #
2781
+ # @overload stop_transform_job(params = {})
2782
+ # @param [Hash] params ({})
2783
+ def stop_transform_job(params = {}, options = {})
2784
+ req = build_request(:stop_transform_job, params)
2785
+ req.send_request(options)
2786
+ end
2787
+
2475
2788
  # Deploys the new `EndpointConfig` specified in the request, switches to
2476
2789
  # using newly created endpoint, and then deletes resources provisioned
2477
2790
  # for the endpoint using the previous `EndpointConfig` (there is no
@@ -2666,7 +2979,7 @@ module Aws::SageMaker
2666
2979
  params: params,
2667
2980
  config: config)
2668
2981
  context[:gem_name] = 'aws-sdk-sagemaker'
2669
- context[:gem_version] = '1.11.0'
2982
+ context[:gem_version] = '1.12.0'
2670
2983
  Seahorse::Client::Request.new(handlers, context)
2671
2984
  end
2672
2985
 
@@ -11,10 +11,13 @@ module Aws::SageMaker
11
11
 
12
12
  include Seahorse::Model
13
13
 
14
+ Accept = Shapes::StringShape.new(name: 'Accept')
14
15
  AddTagsInput = Shapes::StructureShape.new(name: 'AddTagsInput')
15
16
  AddTagsOutput = Shapes::StructureShape.new(name: 'AddTagsOutput')
16
17
  AlgorithmImage = Shapes::StringShape.new(name: 'AlgorithmImage')
17
18
  AlgorithmSpecification = Shapes::StructureShape.new(name: 'AlgorithmSpecification')
19
+ AssemblyType = Shapes::StringShape.new(name: 'AssemblyType')
20
+ BatchStrategy = Shapes::StringShape.new(name: 'BatchStrategy')
18
21
  CategoricalParameterRange = Shapes::StructureShape.new(name: 'CategoricalParameterRange')
19
22
  CategoricalParameterRanges = Shapes::ListShape.new(name: 'CategoricalParameterRanges')
20
23
  Channel = Shapes::StructureShape.new(name: 'Channel')
@@ -41,6 +44,8 @@ module Aws::SageMaker
41
44
  CreatePresignedNotebookInstanceUrlOutput = Shapes::StructureShape.new(name: 'CreatePresignedNotebookInstanceUrlOutput')
42
45
  CreateTrainingJobRequest = Shapes::StructureShape.new(name: 'CreateTrainingJobRequest')
43
46
  CreateTrainingJobResponse = Shapes::StructureShape.new(name: 'CreateTrainingJobResponse')
47
+ CreateTransformJobRequest = Shapes::StructureShape.new(name: 'CreateTransformJobRequest')
48
+ CreateTransformJobResponse = Shapes::StructureShape.new(name: 'CreateTransformJobResponse')
44
49
  CreationTime = Shapes::TimestampShape.new(name: 'CreationTime')
45
50
  DataSource = Shapes::StructureShape.new(name: 'DataSource')
46
51
  DeleteEndpointConfigInput = Shapes::StructureShape.new(name: 'DeleteEndpointConfigInput')
@@ -66,6 +71,8 @@ module Aws::SageMaker
66
71
  DescribeNotebookInstanceOutput = Shapes::StructureShape.new(name: 'DescribeNotebookInstanceOutput')
67
72
  DescribeTrainingJobRequest = Shapes::StructureShape.new(name: 'DescribeTrainingJobRequest')
68
73
  DescribeTrainingJobResponse = Shapes::StructureShape.new(name: 'DescribeTrainingJobResponse')
74
+ DescribeTransformJobRequest = Shapes::StructureShape.new(name: 'DescribeTransformJobRequest')
75
+ DescribeTransformJobResponse = Shapes::StructureShape.new(name: 'DescribeTransformJobResponse')
69
76
  DesiredWeightAndCapacity = Shapes::StructureShape.new(name: 'DesiredWeightAndCapacity')
70
77
  DesiredWeightAndCapacityList = Shapes::ListShape.new(name: 'DesiredWeightAndCapacityList')
71
78
  DirectInternetAccess = Shapes::StringShape.new(name: 'DirectInternetAccess')
@@ -128,8 +135,12 @@ module Aws::SageMaker
128
135
  ListTrainingJobsForHyperParameterTuningJobResponse = Shapes::StructureShape.new(name: 'ListTrainingJobsForHyperParameterTuningJobResponse')
129
136
  ListTrainingJobsRequest = Shapes::StructureShape.new(name: 'ListTrainingJobsRequest')
130
137
  ListTrainingJobsResponse = Shapes::StructureShape.new(name: 'ListTrainingJobsResponse')
138
+ ListTransformJobsRequest = Shapes::StructureShape.new(name: 'ListTransformJobsRequest')
139
+ ListTransformJobsResponse = Shapes::StructureShape.new(name: 'ListTransformJobsResponse')
140
+ MaxConcurrentTransforms = Shapes::IntegerShape.new(name: 'MaxConcurrentTransforms')
131
141
  MaxNumberOfTrainingJobs = Shapes::IntegerShape.new(name: 'MaxNumberOfTrainingJobs')
132
142
  MaxParallelTrainingJobs = Shapes::IntegerShape.new(name: 'MaxParallelTrainingJobs')
143
+ MaxPayloadInMB = Shapes::IntegerShape.new(name: 'MaxPayloadInMB')
133
144
  MaxResults = Shapes::IntegerShape.new(name: 'MaxResults')
134
145
  MaxRuntimeInSeconds = Shapes::IntegerShape.new(name: 'MaxRuntimeInSeconds')
135
146
  MetricDefinition = Shapes::StructureShape.new(name: 'MetricDefinition')
@@ -199,10 +210,12 @@ module Aws::SageMaker
199
210
  SessionExpirationDurationInSeconds = Shapes::IntegerShape.new(name: 'SessionExpirationDurationInSeconds')
200
211
  SortBy = Shapes::StringShape.new(name: 'SortBy')
201
212
  SortOrder = Shapes::StringShape.new(name: 'SortOrder')
213
+ SplitType = Shapes::StringShape.new(name: 'SplitType')
202
214
  StartNotebookInstanceInput = Shapes::StructureShape.new(name: 'StartNotebookInstanceInput')
203
215
  StopHyperParameterTuningJobRequest = Shapes::StructureShape.new(name: 'StopHyperParameterTuningJobRequest')
204
216
  StopNotebookInstanceInput = Shapes::StructureShape.new(name: 'StopNotebookInstanceInput')
205
217
  StopTrainingJobRequest = Shapes::StructureShape.new(name: 'StopTrainingJobRequest')
218
+ StopTransformJobRequest = Shapes::StructureShape.new(name: 'StopTransformJobRequest')
206
219
  StoppingCondition = Shapes::StructureShape.new(name: 'StoppingCondition')
207
220
  SubnetId = Shapes::StringShape.new(name: 'SubnetId')
208
221
  Subnets = Shapes::ListShape.new(name: 'Subnets')
@@ -224,6 +237,21 @@ module Aws::SageMaker
224
237
  TrainingJobStatusCounters = Shapes::StructureShape.new(name: 'TrainingJobStatusCounters')
225
238
  TrainingJobSummaries = Shapes::ListShape.new(name: 'TrainingJobSummaries')
226
239
  TrainingJobSummary = Shapes::StructureShape.new(name: 'TrainingJobSummary')
240
+ TransformDataSource = Shapes::StructureShape.new(name: 'TransformDataSource')
241
+ TransformEnvironmentKey = Shapes::StringShape.new(name: 'TransformEnvironmentKey')
242
+ TransformEnvironmentMap = Shapes::MapShape.new(name: 'TransformEnvironmentMap')
243
+ TransformEnvironmentValue = Shapes::StringShape.new(name: 'TransformEnvironmentValue')
244
+ TransformInput = Shapes::StructureShape.new(name: 'TransformInput')
245
+ TransformInstanceCount = Shapes::IntegerShape.new(name: 'TransformInstanceCount')
246
+ TransformInstanceType = Shapes::StringShape.new(name: 'TransformInstanceType')
247
+ TransformJobArn = Shapes::StringShape.new(name: 'TransformJobArn')
248
+ TransformJobName = Shapes::StringShape.new(name: 'TransformJobName')
249
+ TransformJobStatus = Shapes::StringShape.new(name: 'TransformJobStatus')
250
+ TransformJobSummaries = Shapes::ListShape.new(name: 'TransformJobSummaries')
251
+ TransformJobSummary = Shapes::StructureShape.new(name: 'TransformJobSummary')
252
+ TransformOutput = Shapes::StructureShape.new(name: 'TransformOutput')
253
+ TransformResources = Shapes::StructureShape.new(name: 'TransformResources')
254
+ TransformS3DataSource = Shapes::StructureShape.new(name: 'TransformS3DataSource')
227
255
  UpdateEndpointInput = Shapes::StructureShape.new(name: 'UpdateEndpointInput')
228
256
  UpdateEndpointOutput = Shapes::StructureShape.new(name: 'UpdateEndpointOutput')
229
257
  UpdateEndpointWeightsAndCapacitiesInput = Shapes::StructureShape.new(name: 'UpdateEndpointWeightsAndCapacitiesInput')
@@ -356,6 +384,21 @@ module Aws::SageMaker
356
384
  CreateTrainingJobResponse.add_member(:training_job_arn, Shapes::ShapeRef.new(shape: TrainingJobArn, required: true, location_name: "TrainingJobArn"))
357
385
  CreateTrainingJobResponse.struct_class = Types::CreateTrainingJobResponse
358
386
 
387
+ CreateTransformJobRequest.add_member(:transform_job_name, Shapes::ShapeRef.new(shape: TransformJobName, required: true, location_name: "TransformJobName"))
388
+ CreateTransformJobRequest.add_member(:model_name, Shapes::ShapeRef.new(shape: ModelName, required: true, location_name: "ModelName"))
389
+ CreateTransformJobRequest.add_member(:max_concurrent_transforms, Shapes::ShapeRef.new(shape: MaxConcurrentTransforms, location_name: "MaxConcurrentTransforms"))
390
+ CreateTransformJobRequest.add_member(:max_payload_in_mb, Shapes::ShapeRef.new(shape: MaxPayloadInMB, location_name: "MaxPayloadInMB"))
391
+ CreateTransformJobRequest.add_member(:batch_strategy, Shapes::ShapeRef.new(shape: BatchStrategy, location_name: "BatchStrategy"))
392
+ CreateTransformJobRequest.add_member(:environment, Shapes::ShapeRef.new(shape: TransformEnvironmentMap, location_name: "Environment"))
393
+ CreateTransformJobRequest.add_member(:transform_input, Shapes::ShapeRef.new(shape: TransformInput, required: true, location_name: "TransformInput"))
394
+ CreateTransformJobRequest.add_member(:transform_output, Shapes::ShapeRef.new(shape: TransformOutput, required: true, location_name: "TransformOutput"))
395
+ CreateTransformJobRequest.add_member(:transform_resources, Shapes::ShapeRef.new(shape: TransformResources, required: true, location_name: "TransformResources"))
396
+ CreateTransformJobRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "Tags"))
397
+ CreateTransformJobRequest.struct_class = Types::CreateTransformJobRequest
398
+
399
+ CreateTransformJobResponse.add_member(:transform_job_arn, Shapes::ShapeRef.new(shape: TransformJobArn, required: true, location_name: "TransformJobArn"))
400
+ CreateTransformJobResponse.struct_class = Types::CreateTransformJobResponse
401
+
359
402
  DataSource.add_member(:s3_data_source, Shapes::ShapeRef.new(shape: S3DataSource, required: true, location_name: "S3DataSource"))
360
403
  DataSource.struct_class = Types::DataSource
361
404
 
@@ -493,6 +536,26 @@ module Aws::SageMaker
493
536
  DescribeTrainingJobResponse.add_member(:last_modified_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "LastModifiedTime"))
494
537
  DescribeTrainingJobResponse.struct_class = Types::DescribeTrainingJobResponse
495
538
 
539
+ DescribeTransformJobRequest.add_member(:transform_job_name, Shapes::ShapeRef.new(shape: TransformJobName, required: true, location_name: "TransformJobName"))
540
+ DescribeTransformJobRequest.struct_class = Types::DescribeTransformJobRequest
541
+
542
+ DescribeTransformJobResponse.add_member(:transform_job_name, Shapes::ShapeRef.new(shape: TransformJobName, required: true, location_name: "TransformJobName"))
543
+ DescribeTransformJobResponse.add_member(:transform_job_arn, Shapes::ShapeRef.new(shape: TransformJobArn, required: true, location_name: "TransformJobArn"))
544
+ DescribeTransformJobResponse.add_member(:transform_job_status, Shapes::ShapeRef.new(shape: TransformJobStatus, required: true, location_name: "TransformJobStatus"))
545
+ DescribeTransformJobResponse.add_member(:failure_reason, Shapes::ShapeRef.new(shape: FailureReason, location_name: "FailureReason"))
546
+ DescribeTransformJobResponse.add_member(:model_name, Shapes::ShapeRef.new(shape: ModelName, required: true, location_name: "ModelName"))
547
+ DescribeTransformJobResponse.add_member(:max_concurrent_transforms, Shapes::ShapeRef.new(shape: MaxConcurrentTransforms, location_name: "MaxConcurrentTransforms"))
548
+ DescribeTransformJobResponse.add_member(:max_payload_in_mb, Shapes::ShapeRef.new(shape: MaxPayloadInMB, location_name: "MaxPayloadInMB"))
549
+ DescribeTransformJobResponse.add_member(:batch_strategy, Shapes::ShapeRef.new(shape: BatchStrategy, location_name: "BatchStrategy"))
550
+ DescribeTransformJobResponse.add_member(:environment, Shapes::ShapeRef.new(shape: TransformEnvironmentMap, location_name: "Environment"))
551
+ DescribeTransformJobResponse.add_member(:transform_input, Shapes::ShapeRef.new(shape: TransformInput, required: true, location_name: "TransformInput"))
552
+ DescribeTransformJobResponse.add_member(:transform_output, Shapes::ShapeRef.new(shape: TransformOutput, location_name: "TransformOutput"))
553
+ DescribeTransformJobResponse.add_member(:transform_resources, Shapes::ShapeRef.new(shape: TransformResources, required: true, location_name: "TransformResources"))
554
+ DescribeTransformJobResponse.add_member(:creation_time, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "CreationTime"))
555
+ DescribeTransformJobResponse.add_member(:transform_start_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "TransformStartTime"))
556
+ DescribeTransformJobResponse.add_member(:transform_end_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "TransformEndTime"))
557
+ DescribeTransformJobResponse.struct_class = Types::DescribeTransformJobResponse
558
+
496
559
  DesiredWeightAndCapacity.add_member(:variant_name, Shapes::ShapeRef.new(shape: VariantName, required: true, location_name: "VariantName"))
497
560
  DesiredWeightAndCapacity.add_member(:desired_weight, Shapes::ShapeRef.new(shape: VariantWeight, location_name: "DesiredWeight"))
498
561
  DesiredWeightAndCapacity.add_member(:desired_instance_count, Shapes::ShapeRef.new(shape: TaskCount, location_name: "DesiredInstanceCount"))
@@ -716,6 +779,22 @@ module Aws::SageMaker
716
779
  ListTrainingJobsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
717
780
  ListTrainingJobsResponse.struct_class = Types::ListTrainingJobsResponse
718
781
 
782
+ ListTransformJobsRequest.add_member(:creation_time_after, Shapes::ShapeRef.new(shape: Timestamp, location_name: "CreationTimeAfter"))
783
+ ListTransformJobsRequest.add_member(:creation_time_before, Shapes::ShapeRef.new(shape: Timestamp, location_name: "CreationTimeBefore"))
784
+ ListTransformJobsRequest.add_member(:last_modified_time_after, Shapes::ShapeRef.new(shape: Timestamp, location_name: "LastModifiedTimeAfter"))
785
+ ListTransformJobsRequest.add_member(:last_modified_time_before, Shapes::ShapeRef.new(shape: Timestamp, location_name: "LastModifiedTimeBefore"))
786
+ ListTransformJobsRequest.add_member(:name_contains, Shapes::ShapeRef.new(shape: NameContains, location_name: "NameContains"))
787
+ ListTransformJobsRequest.add_member(:status_equals, Shapes::ShapeRef.new(shape: TransformJobStatus, location_name: "StatusEquals"))
788
+ ListTransformJobsRequest.add_member(:sort_by, Shapes::ShapeRef.new(shape: SortBy, location_name: "SortBy"))
789
+ ListTransformJobsRequest.add_member(:sort_order, Shapes::ShapeRef.new(shape: SortOrder, location_name: "SortOrder"))
790
+ ListTransformJobsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
791
+ ListTransformJobsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location_name: "MaxResults", metadata: {"box"=>true}))
792
+ ListTransformJobsRequest.struct_class = Types::ListTransformJobsRequest
793
+
794
+ ListTransformJobsResponse.add_member(:transform_job_summaries, Shapes::ShapeRef.new(shape: TransformJobSummaries, required: true, location_name: "TransformJobSummaries"))
795
+ ListTransformJobsResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "NextToken"))
796
+ ListTransformJobsResponse.struct_class = Types::ListTransformJobsResponse
797
+
719
798
  MetricDefinition.add_member(:name, Shapes::ShapeRef.new(shape: MetricName, required: true, location_name: "Name"))
720
799
  MetricDefinition.add_member(:regex, Shapes::ShapeRef.new(shape: MetricRegex, required: true, location_name: "Regex"))
721
800
  MetricDefinition.struct_class = Types::MetricDefinition
@@ -821,6 +900,9 @@ module Aws::SageMaker
821
900
  StopTrainingJobRequest.add_member(:training_job_name, Shapes::ShapeRef.new(shape: TrainingJobName, required: true, location_name: "TrainingJobName"))
822
901
  StopTrainingJobRequest.struct_class = Types::StopTrainingJobRequest
823
902
 
903
+ StopTransformJobRequest.add_member(:transform_job_name, Shapes::ShapeRef.new(shape: TransformJobName, required: true, location_name: "TransformJobName"))
904
+ StopTransformJobRequest.struct_class = Types::StopTransformJobRequest
905
+
824
906
  StoppingCondition.add_member(:max_runtime_in_seconds, Shapes::ShapeRef.new(shape: MaxRuntimeInSeconds, location_name: "MaxRuntimeInSeconds"))
825
907
  StoppingCondition.struct_class = Types::StoppingCondition
826
908
 
@@ -851,6 +933,43 @@ module Aws::SageMaker
851
933
  TrainingJobSummary.add_member(:training_job_status, Shapes::ShapeRef.new(shape: TrainingJobStatus, required: true, location_name: "TrainingJobStatus"))
852
934
  TrainingJobSummary.struct_class = Types::TrainingJobSummary
853
935
 
936
+ TransformDataSource.add_member(:s3_data_source, Shapes::ShapeRef.new(shape: TransformS3DataSource, required: true, location_name: "S3DataSource"))
937
+ TransformDataSource.struct_class = Types::TransformDataSource
938
+
939
+ TransformEnvironmentMap.key = Shapes::ShapeRef.new(shape: TransformEnvironmentKey)
940
+ TransformEnvironmentMap.value = Shapes::ShapeRef.new(shape: TransformEnvironmentValue)
941
+
942
+ TransformInput.add_member(:data_source, Shapes::ShapeRef.new(shape: TransformDataSource, required: true, location_name: "DataSource"))
943
+ TransformInput.add_member(:content_type, Shapes::ShapeRef.new(shape: ContentType, location_name: "ContentType"))
944
+ TransformInput.add_member(:compression_type, Shapes::ShapeRef.new(shape: CompressionType, location_name: "CompressionType"))
945
+ TransformInput.add_member(:split_type, Shapes::ShapeRef.new(shape: SplitType, location_name: "SplitType"))
946
+ TransformInput.struct_class = Types::TransformInput
947
+
948
+ TransformJobSummaries.member = Shapes::ShapeRef.new(shape: TransformJobSummary)
949
+
950
+ TransformJobSummary.add_member(:transform_job_name, Shapes::ShapeRef.new(shape: TransformJobName, required: true, location_name: "TransformJobName"))
951
+ TransformJobSummary.add_member(:transform_job_arn, Shapes::ShapeRef.new(shape: TransformJobArn, required: true, location_name: "TransformJobArn"))
952
+ TransformJobSummary.add_member(:creation_time, Shapes::ShapeRef.new(shape: Timestamp, required: true, location_name: "CreationTime"))
953
+ TransformJobSummary.add_member(:transform_end_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "TransformEndTime"))
954
+ TransformJobSummary.add_member(:last_modified_time, Shapes::ShapeRef.new(shape: Timestamp, location_name: "LastModifiedTime"))
955
+ TransformJobSummary.add_member(:transform_job_status, Shapes::ShapeRef.new(shape: TransformJobStatus, required: true, location_name: "TransformJobStatus"))
956
+ TransformJobSummary.add_member(:failure_reason, Shapes::ShapeRef.new(shape: FailureReason, location_name: "FailureReason"))
957
+ TransformJobSummary.struct_class = Types::TransformJobSummary
958
+
959
+ TransformOutput.add_member(:s3_output_path, Shapes::ShapeRef.new(shape: S3Uri, required: true, location_name: "S3OutputPath"))
960
+ TransformOutput.add_member(:accept, Shapes::ShapeRef.new(shape: Accept, location_name: "Accept"))
961
+ TransformOutput.add_member(:assemble_with, Shapes::ShapeRef.new(shape: AssemblyType, location_name: "AssembleWith"))
962
+ TransformOutput.add_member(:kms_key_id, Shapes::ShapeRef.new(shape: KmsKeyId, location_name: "KmsKeyId"))
963
+ TransformOutput.struct_class = Types::TransformOutput
964
+
965
+ TransformResources.add_member(:instance_type, Shapes::ShapeRef.new(shape: TransformInstanceType, required: true, location_name: "InstanceType"))
966
+ TransformResources.add_member(:instance_count, Shapes::ShapeRef.new(shape: TransformInstanceCount, required: true, location_name: "InstanceCount"))
967
+ TransformResources.struct_class = Types::TransformResources
968
+
969
+ TransformS3DataSource.add_member(:s3_data_type, Shapes::ShapeRef.new(shape: S3DataType, required: true, location_name: "S3DataType"))
970
+ TransformS3DataSource.add_member(:s3_uri, Shapes::ShapeRef.new(shape: S3Uri, required: true, location_name: "S3Uri"))
971
+ TransformS3DataSource.struct_class = Types::TransformS3DataSource
972
+
854
973
  UpdateEndpointInput.add_member(:endpoint_name, Shapes::ShapeRef.new(shape: EndpointName, required: true, location_name: "EndpointName"))
855
974
  UpdateEndpointInput.add_member(:endpoint_config_name, Shapes::ShapeRef.new(shape: EndpointConfigName, required: true, location_name: "EndpointConfigName"))
856
975
  UpdateEndpointInput.struct_class = Types::UpdateEndpointInput
@@ -982,6 +1101,16 @@ module Aws::SageMaker
982
1101
  o.errors << Shapes::ShapeRef.new(shape: ResourceLimitExceeded)
983
1102
  end)
984
1103
 
1104
+ api.add_operation(:create_transform_job, Seahorse::Model::Operation.new.tap do |o|
1105
+ o.name = "CreateTransformJob"
1106
+ o.http_method = "POST"
1107
+ o.http_request_uri = "/"
1108
+ o.input = Shapes::ShapeRef.new(shape: CreateTransformJobRequest)
1109
+ o.output = Shapes::ShapeRef.new(shape: CreateTransformJobResponse)
1110
+ o.errors << Shapes::ShapeRef.new(shape: ResourceInUse)
1111
+ o.errors << Shapes::ShapeRef.new(shape: ResourceLimitExceeded)
1112
+ end)
1113
+
985
1114
  api.add_operation(:delete_endpoint, Seahorse::Model::Operation.new.tap do |o|
986
1115
  o.name = "DeleteEndpoint"
987
1116
  o.http_method = "POST"
@@ -1088,6 +1217,15 @@ module Aws::SageMaker
1088
1217
  o.errors << Shapes::ShapeRef.new(shape: ResourceNotFound)
1089
1218
  end)
1090
1219
 
1220
+ api.add_operation(:describe_transform_job, Seahorse::Model::Operation.new.tap do |o|
1221
+ o.name = "DescribeTransformJob"
1222
+ o.http_method = "POST"
1223
+ o.http_request_uri = "/"
1224
+ o.input = Shapes::ShapeRef.new(shape: DescribeTransformJobRequest)
1225
+ o.output = Shapes::ShapeRef.new(shape: DescribeTransformJobResponse)
1226
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFound)
1227
+ end)
1228
+
1091
1229
  api.add_operation(:list_endpoint_configs, Seahorse::Model::Operation.new.tap do |o|
1092
1230
  o.name = "ListEndpointConfigs"
1093
1231
  o.http_method = "POST"
@@ -1215,6 +1353,20 @@ module Aws::SageMaker
1215
1353
  )
1216
1354
  end)
1217
1355
 
1356
+ api.add_operation(:list_transform_jobs, Seahorse::Model::Operation.new.tap do |o|
1357
+ o.name = "ListTransformJobs"
1358
+ o.http_method = "POST"
1359
+ o.http_request_uri = "/"
1360
+ o.input = Shapes::ShapeRef.new(shape: ListTransformJobsRequest)
1361
+ o.output = Shapes::ShapeRef.new(shape: ListTransformJobsResponse)
1362
+ o[:pager] = Aws::Pager.new(
1363
+ limit_key: "max_results",
1364
+ tokens: {
1365
+ "next_token" => "next_token"
1366
+ }
1367
+ )
1368
+ end)
1369
+
1218
1370
  api.add_operation(:start_notebook_instance, Seahorse::Model::Operation.new.tap do |o|
1219
1371
  o.name = "StartNotebookInstance"
1220
1372
  o.http_method = "POST"
@@ -1250,6 +1402,15 @@ module Aws::SageMaker
1250
1402
  o.errors << Shapes::ShapeRef.new(shape: ResourceNotFound)
1251
1403
  end)
1252
1404
 
1405
+ api.add_operation(:stop_transform_job, Seahorse::Model::Operation.new.tap do |o|
1406
+ o.name = "StopTransformJob"
1407
+ o.http_method = "POST"
1408
+ o.http_request_uri = "/"
1409
+ o.input = Shapes::ShapeRef.new(shape: StopTransformJobRequest)
1410
+ o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure))
1411
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFound)
1412
+ end)
1413
+
1253
1414
  api.add_operation(:update_endpoint, Seahorse::Model::Operation.new.tap do |o|
1254
1415
  o.name = "UpdateEndpoint"
1255
1416
  o.http_method = "POST"