aws-sdk-iot 1.68.0 → 1.69.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
  SHA256:
3
- metadata.gz: 8f528ccf03a1531fa35a93e8d435e04c1598be96b244c05d3282d2dfec567b4d
4
- data.tar.gz: 959b427ac5f8a81548e999ca1478bca3d097b72b9cdc58931e349b134154fa64
3
+ metadata.gz: 305aa5d7aea235eb323234f17fe9a5a62ca8010d9fdf84b31220af8d9efd810e
4
+ data.tar.gz: 9ab34cd492db86595f12e2050fec5aecd5dc0089c3e733de7a2e885ce5cce087
5
5
  SHA512:
6
- metadata.gz: 46f0d8772008779f15a54f9b6428a25b3aea70722cfa4875214a613d03f6d24fde7a87f1d076117ebf9a8f6d546d56f4a71809f2d6a100e0a15fed7a557f79cf
7
- data.tar.gz: 938aebe64fa9c144151b494ce4b99c40728fa682b300139a8753eee51724e8814b98f29306b65bc537cbba1ccab673d7ce689394c74de59b63e49db19e721f66
6
+ metadata.gz: 3a3131ec230de6738025f71e380bf278efc0e16367a8cb2b188b7dbab6bd24e19444bb71463a2b7bd6862dec130e1444c9a46b25a328249462eba8928f33dcb7
7
+ data.tar.gz: 640c9452721b5e64355d238c467d57849a4326687e9b8c1c0181ef1fb6ad3446d3decdd6a607202cfc1ab2e4e987df9c829fe179ae4bd072027435a92fcb594a
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.69.0 (2021-05-25)
5
+ ------------------
6
+
7
+ * Feature - This release includes support for a new feature: Job templates for AWS IoT Device Management Jobs. The release includes job templates as a new resource and APIs for managing job templates.
8
+
4
9
  1.68.0 (2021-03-31)
5
10
  ------------------
6
11
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.68.0
1
+ 1.69.0
data/lib/aws-sdk-iot.rb CHANGED
@@ -48,6 +48,6 @@ require_relative 'aws-sdk-iot/customizations'
48
48
  # @!group service
49
49
  module Aws::IoT
50
50
 
51
- GEM_VERSION = '1.68.0'
51
+ GEM_VERSION = '1.69.0'
52
52
 
53
53
  end
@@ -495,7 +495,8 @@ module Aws::IoT
495
495
  # The name of the policy to attach.
496
496
  #
497
497
  # @option params [required, String] :target
498
- # The [identity][1] to which the policy is attached.
498
+ # The [identity][1] to which the policy is attached. For example, a
499
+ # thing group or a certificate.
499
500
  #
500
501
  #
501
502
  #
@@ -1216,11 +1217,6 @@ module Aws::IoT
1216
1217
 
1217
1218
  # Creates a domain configuration.
1218
1219
  #
1219
- # <note markdown="1"> The domain configuration feature is in public preview and is subject
1220
- # to change.
1221
- #
1222
- # </note>
1223
- #
1224
1220
  # @option params [required, String] :domain_configuration_name
1225
1221
  # The name of the domain configuration. This value must be unique to a
1226
1222
  # region.
@@ -1395,10 +1391,8 @@ module Aws::IoT
1395
1391
  # A list of things and thing groups to which the job should be sent.
1396
1392
  #
1397
1393
  # @option params [String] :document_source
1398
- # An S3 link to the job document.
1399
- #
1400
- # @option params [String] :document
1401
- # The job document.
1394
+ # An S3 link to the job document. Required if you don't specify a value
1395
+ # for `document`.
1402
1396
  #
1403
1397
  # <note markdown="1"> If the job document resides in an S3 bucket, you must use a
1404
1398
  # placeholder link when specifying the document.
@@ -1412,6 +1406,10 @@ module Aws::IoT
1412
1406
  #
1413
1407
  # </note>
1414
1408
  #
1409
+ # @option params [String] :document
1410
+ # The job document. Required if you don't specify a value for
1411
+ # `documentSource`.
1412
+ #
1415
1413
  # @option params [String] :description
1416
1414
  # A short text description of the job.
1417
1415
  #
@@ -1455,6 +1453,9 @@ module Aws::IoT
1455
1453
  #
1456
1454
  # </note>
1457
1455
  #
1456
+ # @option params [String] :job_template_arn
1457
+ # The ARN of the job template used to create the job.
1458
+ #
1458
1459
  # @return [Types::CreateJobResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1459
1460
  #
1460
1461
  # * {Types::CreateJobResponse#job_arn #job_arn} => String
@@ -1505,6 +1506,7 @@ module Aws::IoT
1505
1506
  # },
1506
1507
  # ],
1507
1508
  # namespace_id: "NamespaceId",
1509
+ # job_template_arn: "JobTemplateArn",
1508
1510
  # })
1509
1511
  #
1510
1512
  # @example Response structure
@@ -1520,6 +1522,118 @@ module Aws::IoT
1520
1522
  req.send_request(options)
1521
1523
  end
1522
1524
 
1525
+ # Creates a job template.
1526
+ #
1527
+ # @option params [required, String] :job_template_id
1528
+ # A unique identifier for the job template. We recommend using a UUID.
1529
+ # Alpha-numeric characters, "-", and "\_" are valid for use here.
1530
+ #
1531
+ # @option params [String] :job_arn
1532
+ # The ARN of the job to use as the basis for the job template.
1533
+ #
1534
+ # @option params [String] :document_source
1535
+ # An S3 link to the job document to use in the template. Required if you
1536
+ # don't specify a value for `document`.
1537
+ #
1538
+ # <note markdown="1"> If the job document resides in an S3 bucket, you must use a
1539
+ # placeholder link when specifying the document.
1540
+ #
1541
+ # The placeholder link is of the following form:
1542
+ #
1543
+ # `$\{aws:iot:s3-presigned-url:https://s3.amazonaws.com/bucket/key\}`
1544
+ #
1545
+ # where *bucket* is your bucket name and *key* is the object in the
1546
+ # bucket to which you are linking.
1547
+ #
1548
+ # </note>
1549
+ #
1550
+ # @option params [String] :document
1551
+ # The job document. Required if you don't specify a value for
1552
+ # `documentSource`.
1553
+ #
1554
+ # @option params [required, String] :description
1555
+ # A description of the job document.
1556
+ #
1557
+ # @option params [Types::PresignedUrlConfig] :presigned_url_config
1558
+ # Configuration for pre-signed S3 URLs.
1559
+ #
1560
+ # @option params [Types::JobExecutionsRolloutConfig] :job_executions_rollout_config
1561
+ # Allows you to create a staged rollout of a job.
1562
+ #
1563
+ # @option params [Types::AbortConfig] :abort_config
1564
+ # The criteria that determine when and how a job abort takes place.
1565
+ #
1566
+ # @option params [Types::TimeoutConfig] :timeout_config
1567
+ # Specifies the amount of time each device has to finish its execution
1568
+ # of the job. A timer is started when the job execution status is set to
1569
+ # `IN_PROGRESS`. If the job execution status is not set to another
1570
+ # terminal state before the timer expires, it will be automatically set
1571
+ # to `TIMED_OUT`.
1572
+ #
1573
+ # @option params [Array<Types::Tag>] :tags
1574
+ # Metadata that can be used to manage the job template.
1575
+ #
1576
+ # @return [Types::CreateJobTemplateResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1577
+ #
1578
+ # * {Types::CreateJobTemplateResponse#job_template_arn #job_template_arn} => String
1579
+ # * {Types::CreateJobTemplateResponse#job_template_id #job_template_id} => String
1580
+ #
1581
+ # @example Request syntax with placeholder values
1582
+ #
1583
+ # resp = client.create_job_template({
1584
+ # job_template_id: "JobTemplateId", # required
1585
+ # job_arn: "JobArn",
1586
+ # document_source: "JobDocumentSource",
1587
+ # document: "JobDocument",
1588
+ # description: "JobDescription", # required
1589
+ # presigned_url_config: {
1590
+ # role_arn: "RoleArn",
1591
+ # expires_in_sec: 1,
1592
+ # },
1593
+ # job_executions_rollout_config: {
1594
+ # maximum_per_minute: 1,
1595
+ # exponential_rate: {
1596
+ # base_rate_per_minute: 1, # required
1597
+ # increment_factor: 1.0, # required
1598
+ # rate_increase_criteria: { # required
1599
+ # number_of_notified_things: 1,
1600
+ # number_of_succeeded_things: 1,
1601
+ # },
1602
+ # },
1603
+ # },
1604
+ # abort_config: {
1605
+ # criteria_list: [ # required
1606
+ # {
1607
+ # failure_type: "FAILED", # required, accepts FAILED, REJECTED, TIMED_OUT, ALL
1608
+ # action: "CANCEL", # required, accepts CANCEL
1609
+ # threshold_percentage: 1.0, # required
1610
+ # min_number_of_executed_things: 1, # required
1611
+ # },
1612
+ # ],
1613
+ # },
1614
+ # timeout_config: {
1615
+ # in_progress_timeout_in_minutes: 1,
1616
+ # },
1617
+ # tags: [
1618
+ # {
1619
+ # key: "TagKey", # required
1620
+ # value: "TagValue",
1621
+ # },
1622
+ # ],
1623
+ # })
1624
+ #
1625
+ # @example Response structure
1626
+ #
1627
+ # resp.job_template_arn #=> String
1628
+ # resp.job_template_id #=> String
1629
+ #
1630
+ # @overload create_job_template(params = {})
1631
+ # @param [Hash] params ({})
1632
+ def create_job_template(params = {}, options = {})
1633
+ req = build_request(:create_job_template, params)
1634
+ req.send_request(options)
1635
+ end
1636
+
1523
1637
  # Creates a 2048-bit RSA key pair and issues an X.509 certificate using
1524
1638
  # the issued public key. You can also call `CreateKeysAndCertificate`
1525
1639
  # over MQTT from a device, for more information, see [Provisioning MQTT
@@ -3196,11 +3310,6 @@ module Aws::IoT
3196
3310
 
3197
3311
  # Deletes the specified domain configuration.
3198
3312
  #
3199
- # <note markdown="1"> The domain configuration feature is in public preview and is subject
3200
- # to change.
3201
- #
3202
- # </note>
3203
- #
3204
3313
  # @option params [required, String] :domain_configuration_name
3205
3314
  # The name of the domain configuration to be deleted.
3206
3315
  #
@@ -3367,6 +3476,26 @@ module Aws::IoT
3367
3476
  req.send_request(options)
3368
3477
  end
3369
3478
 
3479
+ # Deletes the specified job template.
3480
+ #
3481
+ # @option params [required, String] :job_template_id
3482
+ # The unique identifier of the job template to delete.
3483
+ #
3484
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
3485
+ #
3486
+ # @example Request syntax with placeholder values
3487
+ #
3488
+ # resp = client.delete_job_template({
3489
+ # job_template_id: "JobTemplateId", # required
3490
+ # })
3491
+ #
3492
+ # @overload delete_job_template(params = {})
3493
+ # @param [Hash] params ({})
3494
+ def delete_job_template(params = {}, options = {})
3495
+ req = build_request(:delete_job_template, params)
3496
+ req.send_request(options)
3497
+ end
3498
+
3370
3499
  # Deletes a defined mitigation action from your AWS account.
3371
3500
  #
3372
3501
  # @option params [required, String] :action_name
@@ -4365,11 +4494,6 @@ module Aws::IoT
4365
4494
 
4366
4495
  # Gets summary information about a domain configuration.
4367
4496
  #
4368
- # <note markdown="1"> The domain configuration feature is in public preview and is subject
4369
- # to change.
4370
- #
4371
- # </note>
4372
- #
4373
4497
  # @option params [required, String] :domain_configuration_name
4374
4498
  # The name of the domain configuration.
4375
4499
  #
@@ -4572,6 +4696,7 @@ module Aws::IoT
4572
4696
  # resp.job.job_process_details.number_of_timed_out_things #=> Integer
4573
4697
  # resp.job.timeout_config.in_progress_timeout_in_minutes #=> Integer
4574
4698
  # resp.job.namespace_id #=> String
4699
+ # resp.job.job_template_arn #=> String
4575
4700
  #
4576
4701
  # @overload describe_job(params = {})
4577
4702
  # @param [Hash] params ({})
@@ -4626,6 +4751,59 @@ module Aws::IoT
4626
4751
  req.send_request(options)
4627
4752
  end
4628
4753
 
4754
+ # Returns information about a job template.
4755
+ #
4756
+ # @option params [required, String] :job_template_id
4757
+ # The unique identifier of the job template.
4758
+ #
4759
+ # @return [Types::DescribeJobTemplateResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
4760
+ #
4761
+ # * {Types::DescribeJobTemplateResponse#job_template_arn #job_template_arn} => String
4762
+ # * {Types::DescribeJobTemplateResponse#job_template_id #job_template_id} => String
4763
+ # * {Types::DescribeJobTemplateResponse#description #description} => String
4764
+ # * {Types::DescribeJobTemplateResponse#document_source #document_source} => String
4765
+ # * {Types::DescribeJobTemplateResponse#document #document} => String
4766
+ # * {Types::DescribeJobTemplateResponse#created_at #created_at} => Time
4767
+ # * {Types::DescribeJobTemplateResponse#presigned_url_config #presigned_url_config} => Types::PresignedUrlConfig
4768
+ # * {Types::DescribeJobTemplateResponse#job_executions_rollout_config #job_executions_rollout_config} => Types::JobExecutionsRolloutConfig
4769
+ # * {Types::DescribeJobTemplateResponse#abort_config #abort_config} => Types::AbortConfig
4770
+ # * {Types::DescribeJobTemplateResponse#timeout_config #timeout_config} => Types::TimeoutConfig
4771
+ #
4772
+ # @example Request syntax with placeholder values
4773
+ #
4774
+ # resp = client.describe_job_template({
4775
+ # job_template_id: "JobTemplateId", # required
4776
+ # })
4777
+ #
4778
+ # @example Response structure
4779
+ #
4780
+ # resp.job_template_arn #=> String
4781
+ # resp.job_template_id #=> String
4782
+ # resp.description #=> String
4783
+ # resp.document_source #=> String
4784
+ # resp.document #=> String
4785
+ # resp.created_at #=> Time
4786
+ # resp.presigned_url_config.role_arn #=> String
4787
+ # resp.presigned_url_config.expires_in_sec #=> Integer
4788
+ # resp.job_executions_rollout_config.maximum_per_minute #=> Integer
4789
+ # resp.job_executions_rollout_config.exponential_rate.base_rate_per_minute #=> Integer
4790
+ # resp.job_executions_rollout_config.exponential_rate.increment_factor #=> Float
4791
+ # resp.job_executions_rollout_config.exponential_rate.rate_increase_criteria.number_of_notified_things #=> Integer
4792
+ # resp.job_executions_rollout_config.exponential_rate.rate_increase_criteria.number_of_succeeded_things #=> Integer
4793
+ # resp.abort_config.criteria_list #=> Array
4794
+ # resp.abort_config.criteria_list[0].failure_type #=> String, one of "FAILED", "REJECTED", "TIMED_OUT", "ALL"
4795
+ # resp.abort_config.criteria_list[0].action #=> String, one of "CANCEL"
4796
+ # resp.abort_config.criteria_list[0].threshold_percentage #=> Float
4797
+ # resp.abort_config.criteria_list[0].min_number_of_executed_things #=> Integer
4798
+ # resp.timeout_config.in_progress_timeout_in_minutes #=> Integer
4799
+ #
4800
+ # @overload describe_job_template(params = {})
4801
+ # @param [Hash] params ({})
4802
+ def describe_job_template(params = {}, options = {})
4803
+ req = build_request(:describe_job_template, params)
4804
+ req.send_request(options)
4805
+ end
4806
+
4629
4807
  # Gets information about a mitigation action.
4630
4808
  #
4631
4809
  # @option params [required, String] :action_name
@@ -6993,11 +7171,6 @@ module Aws::IoT
6993
7171
  # Gets a list of domain configurations for the user. This list is sorted
6994
7172
  # alphabetically by domain configuration name.
6995
7173
  #
6996
- # <note markdown="1"> The domain configuration feature is in public preview and is subject
6997
- # to change.
6998
- #
6999
- # </note>
7000
- #
7001
7174
  # @option params [String] :marker
7002
7175
  # The marker for the next set of results.
7003
7176
  #
@@ -7184,6 +7357,42 @@ module Aws::IoT
7184
7357
  req.send_request(options)
7185
7358
  end
7186
7359
 
7360
+ # Returns a list of job templates.
7361
+ #
7362
+ # @option params [Integer] :max_results
7363
+ # The maximum number of results to return in the list.
7364
+ #
7365
+ # @option params [String] :next_token
7366
+ # The token to use to return the next set of results in the list.
7367
+ #
7368
+ # @return [Types::ListJobTemplatesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
7369
+ #
7370
+ # * {Types::ListJobTemplatesResponse#job_templates #job_templates} => Array&lt;Types::JobTemplateSummary&gt;
7371
+ # * {Types::ListJobTemplatesResponse#next_token #next_token} => String
7372
+ #
7373
+ # @example Request syntax with placeholder values
7374
+ #
7375
+ # resp = client.list_job_templates({
7376
+ # max_results: 1,
7377
+ # next_token: "NextToken",
7378
+ # })
7379
+ #
7380
+ # @example Response structure
7381
+ #
7382
+ # resp.job_templates #=> Array
7383
+ # resp.job_templates[0].job_template_arn #=> String
7384
+ # resp.job_templates[0].job_template_id #=> String
7385
+ # resp.job_templates[0].description #=> String
7386
+ # resp.job_templates[0].created_at #=> Time
7387
+ # resp.next_token #=> String
7388
+ #
7389
+ # @overload list_job_templates(params = {})
7390
+ # @param [Hash] params ({})
7391
+ def list_job_templates(params = {}, options = {})
7392
+ req = build_request(:list_job_templates, params)
7393
+ req.send_request(options)
7394
+ end
7395
+
7187
7396
  # Lists jobs.
7188
7397
  #
7189
7398
  # @option params [String] :status
@@ -10406,11 +10615,6 @@ module Aws::IoT
10406
10615
  # Updates values stored in the domain configuration. Domain
10407
10616
  # configurations for default endpoints can't be updated.
10408
10617
  #
10409
- # <note markdown="1"> The domain configuration feature is in public preview and is subject
10410
- # to change.
10411
- #
10412
- # </note>
10413
- #
10414
10618
  # @option params [required, String] :domain_configuration_name
10415
10619
  # The name of the domain configuration to be updated.
10416
10620
  #
@@ -11355,7 +11559,7 @@ module Aws::IoT
11355
11559
  params: params,
11356
11560
  config: config)
11357
11561
  context[:gem_name] = 'aws-sdk-iot'
11358
- context[:gem_version] = '1.68.0'
11562
+ context[:gem_version] = '1.69.0'
11359
11563
  Seahorse::Client::Request.new(handlers, context)
11360
11564
  end
11361
11565
 
@@ -218,6 +218,7 @@ module Aws::IoT
218
218
  ConfirmTopicRuleDestinationRequest = Shapes::StructureShape.new(name: 'ConfirmTopicRuleDestinationRequest')
219
219
  ConfirmTopicRuleDestinationResponse = Shapes::StructureShape.new(name: 'ConfirmTopicRuleDestinationResponse')
220
220
  ConfirmationToken = Shapes::StringShape.new(name: 'ConfirmationToken')
221
+ ConflictException = Shapes::StructureShape.new(name: 'ConflictException')
221
222
  ConflictingResourceUpdateException = Shapes::StructureShape.new(name: 'ConflictingResourceUpdateException')
222
223
  ConnectivityTimestamp = Shapes::IntegerShape.new(name: 'ConnectivityTimestamp')
223
224
  ConsecutiveDatapointsToAlarm = Shapes::IntegerShape.new(name: 'ConsecutiveDatapointsToAlarm')
@@ -241,6 +242,8 @@ module Aws::IoT
241
242
  CreateDynamicThingGroupResponse = Shapes::StructureShape.new(name: 'CreateDynamicThingGroupResponse')
242
243
  CreateJobRequest = Shapes::StructureShape.new(name: 'CreateJobRequest')
243
244
  CreateJobResponse = Shapes::StructureShape.new(name: 'CreateJobResponse')
245
+ CreateJobTemplateRequest = Shapes::StructureShape.new(name: 'CreateJobTemplateRequest')
246
+ CreateJobTemplateResponse = Shapes::StructureShape.new(name: 'CreateJobTemplateResponse')
244
247
  CreateKeysAndCertificateRequest = Shapes::StructureShape.new(name: 'CreateKeysAndCertificateRequest')
245
248
  CreateKeysAndCertificateResponse = Shapes::StructureShape.new(name: 'CreateKeysAndCertificateResponse')
246
249
  CreateMitigationActionRequest = Shapes::StructureShape.new(name: 'CreateMitigationActionRequest')
@@ -311,6 +314,7 @@ module Aws::IoT
311
314
  DeleteDynamicThingGroupResponse = Shapes::StructureShape.new(name: 'DeleteDynamicThingGroupResponse')
312
315
  DeleteJobExecutionRequest = Shapes::StructureShape.new(name: 'DeleteJobExecutionRequest')
313
316
  DeleteJobRequest = Shapes::StructureShape.new(name: 'DeleteJobRequest')
317
+ DeleteJobTemplateRequest = Shapes::StructureShape.new(name: 'DeleteJobTemplateRequest')
314
318
  DeleteMitigationActionRequest = Shapes::StructureShape.new(name: 'DeleteMitigationActionRequest')
315
319
  DeleteMitigationActionResponse = Shapes::StructureShape.new(name: 'DeleteMitigationActionResponse')
316
320
  DeleteOTAUpdateRequest = Shapes::StructureShape.new(name: 'DeleteOTAUpdateRequest')
@@ -386,6 +390,8 @@ module Aws::IoT
386
390
  DescribeJobExecutionResponse = Shapes::StructureShape.new(name: 'DescribeJobExecutionResponse')
387
391
  DescribeJobRequest = Shapes::StructureShape.new(name: 'DescribeJobRequest')
388
392
  DescribeJobResponse = Shapes::StructureShape.new(name: 'DescribeJobResponse')
393
+ DescribeJobTemplateRequest = Shapes::StructureShape.new(name: 'DescribeJobTemplateRequest')
394
+ DescribeJobTemplateResponse = Shapes::StructureShape.new(name: 'DescribeJobTemplateResponse')
389
395
  DescribeMitigationActionRequest = Shapes::StructureShape.new(name: 'DescribeMitigationActionRequest')
390
396
  DescribeMitigationActionResponse = Shapes::StructureShape.new(name: 'DescribeMitigationActionResponse')
391
397
  DescribeProvisioningTemplateRequest = Shapes::StructureShape.new(name: 'DescribeProvisioningTemplateRequest')
@@ -596,6 +602,10 @@ module Aws::IoT
596
602
  JobSummary = Shapes::StructureShape.new(name: 'JobSummary')
597
603
  JobSummaryList = Shapes::ListShape.new(name: 'JobSummaryList')
598
604
  JobTargets = Shapes::ListShape.new(name: 'JobTargets')
605
+ JobTemplateArn = Shapes::StringShape.new(name: 'JobTemplateArn')
606
+ JobTemplateId = Shapes::StringShape.new(name: 'JobTemplateId')
607
+ JobTemplateSummary = Shapes::StructureShape.new(name: 'JobTemplateSummary')
608
+ JobTemplateSummaryList = Shapes::ListShape.new(name: 'JobTemplateSummaryList')
599
609
  JsonDocument = Shapes::StringShape.new(name: 'JsonDocument')
600
610
  KafkaAction = Shapes::StructureShape.new(name: 'KafkaAction')
601
611
  Key = Shapes::StringShape.new(name: 'Key')
@@ -648,6 +658,8 @@ module Aws::IoT
648
658
  ListJobExecutionsForJobResponse = Shapes::StructureShape.new(name: 'ListJobExecutionsForJobResponse')
649
659
  ListJobExecutionsForThingRequest = Shapes::StructureShape.new(name: 'ListJobExecutionsForThingRequest')
650
660
  ListJobExecutionsForThingResponse = Shapes::StructureShape.new(name: 'ListJobExecutionsForThingResponse')
661
+ ListJobTemplatesRequest = Shapes::StructureShape.new(name: 'ListJobTemplatesRequest')
662
+ ListJobTemplatesResponse = Shapes::StructureShape.new(name: 'ListJobTemplatesResponse')
651
663
  ListJobsRequest = Shapes::StructureShape.new(name: 'ListJobsRequest')
652
664
  ListJobsResponse = Shapes::StructureShape.new(name: 'ListJobsResponse')
653
665
  ListMitigationActionsRequest = Shapes::StructureShape.new(name: 'ListMitigationActionsRequest')
@@ -1669,6 +1681,9 @@ module Aws::IoT
1669
1681
 
1670
1682
  ConfirmTopicRuleDestinationResponse.struct_class = Types::ConfirmTopicRuleDestinationResponse
1671
1683
 
1684
+ ConflictException.add_member(:message, Shapes::ShapeRef.new(shape: errorMessage, location_name: "message"))
1685
+ ConflictException.struct_class = Types::ConflictException
1686
+
1672
1687
  ConflictingResourceUpdateException.add_member(:message, Shapes::ShapeRef.new(shape: errorMessage, location_name: "message"))
1673
1688
  ConflictingResourceUpdateException.struct_class = Types::ConflictingResourceUpdateException
1674
1689
 
@@ -1777,6 +1792,7 @@ module Aws::IoT
1777
1792
  CreateJobRequest.add_member(:timeout_config, Shapes::ShapeRef.new(shape: TimeoutConfig, location_name: "timeoutConfig"))
1778
1793
  CreateJobRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "tags"))
1779
1794
  CreateJobRequest.add_member(:namespace_id, Shapes::ShapeRef.new(shape: NamespaceId, location_name: "namespaceId"))
1795
+ CreateJobRequest.add_member(:job_template_arn, Shapes::ShapeRef.new(shape: JobTemplateArn, location_name: "jobTemplateArn"))
1780
1796
  CreateJobRequest.struct_class = Types::CreateJobRequest
1781
1797
 
1782
1798
  CreateJobResponse.add_member(:job_arn, Shapes::ShapeRef.new(shape: JobArn, location_name: "jobArn"))
@@ -1784,6 +1800,22 @@ module Aws::IoT
1784
1800
  CreateJobResponse.add_member(:description, Shapes::ShapeRef.new(shape: JobDescription, location_name: "description"))
1785
1801
  CreateJobResponse.struct_class = Types::CreateJobResponse
1786
1802
 
1803
+ CreateJobTemplateRequest.add_member(:job_template_id, Shapes::ShapeRef.new(shape: JobTemplateId, required: true, location: "uri", location_name: "jobTemplateId"))
1804
+ CreateJobTemplateRequest.add_member(:job_arn, Shapes::ShapeRef.new(shape: JobArn, location_name: "jobArn"))
1805
+ CreateJobTemplateRequest.add_member(:document_source, Shapes::ShapeRef.new(shape: JobDocumentSource, location_name: "documentSource"))
1806
+ CreateJobTemplateRequest.add_member(:document, Shapes::ShapeRef.new(shape: JobDocument, location_name: "document"))
1807
+ CreateJobTemplateRequest.add_member(:description, Shapes::ShapeRef.new(shape: JobDescription, required: true, location_name: "description"))
1808
+ CreateJobTemplateRequest.add_member(:presigned_url_config, Shapes::ShapeRef.new(shape: PresignedUrlConfig, location_name: "presignedUrlConfig"))
1809
+ CreateJobTemplateRequest.add_member(:job_executions_rollout_config, Shapes::ShapeRef.new(shape: JobExecutionsRolloutConfig, location_name: "jobExecutionsRolloutConfig"))
1810
+ CreateJobTemplateRequest.add_member(:abort_config, Shapes::ShapeRef.new(shape: AbortConfig, location_name: "abortConfig"))
1811
+ CreateJobTemplateRequest.add_member(:timeout_config, Shapes::ShapeRef.new(shape: TimeoutConfig, location_name: "timeoutConfig"))
1812
+ CreateJobTemplateRequest.add_member(:tags, Shapes::ShapeRef.new(shape: TagList, location_name: "tags"))
1813
+ CreateJobTemplateRequest.struct_class = Types::CreateJobTemplateRequest
1814
+
1815
+ CreateJobTemplateResponse.add_member(:job_template_arn, Shapes::ShapeRef.new(shape: JobTemplateArn, location_name: "jobTemplateArn"))
1816
+ CreateJobTemplateResponse.add_member(:job_template_id, Shapes::ShapeRef.new(shape: JobTemplateId, location_name: "jobTemplateId"))
1817
+ CreateJobTemplateResponse.struct_class = Types::CreateJobTemplateResponse
1818
+
1787
1819
  CreateKeysAndCertificateRequest.add_member(:set_as_active, Shapes::ShapeRef.new(shape: SetAsActive, location: "querystring", location_name: "setAsActive"))
1788
1820
  CreateKeysAndCertificateRequest.struct_class = Types::CreateKeysAndCertificateRequest
1789
1821
 
@@ -2046,6 +2078,9 @@ module Aws::IoT
2046
2078
  DeleteJobRequest.add_member(:namespace_id, Shapes::ShapeRef.new(shape: NamespaceId, location: "querystring", location_name: "namespaceId"))
2047
2079
  DeleteJobRequest.struct_class = Types::DeleteJobRequest
2048
2080
 
2081
+ DeleteJobTemplateRequest.add_member(:job_template_id, Shapes::ShapeRef.new(shape: JobTemplateId, required: true, location: "uri", location_name: "jobTemplateId"))
2082
+ DeleteJobTemplateRequest.struct_class = Types::DeleteJobTemplateRequest
2083
+
2049
2084
  DeleteMitigationActionRequest.add_member(:action_name, Shapes::ShapeRef.new(shape: MitigationActionName, required: true, location: "uri", location_name: "actionName"))
2050
2085
  DeleteMitigationActionRequest.struct_class = Types::DeleteMitigationActionRequest
2051
2086
 
@@ -2300,6 +2335,21 @@ module Aws::IoT
2300
2335
  DescribeJobResponse.add_member(:job, Shapes::ShapeRef.new(shape: Job, location_name: "job"))
2301
2336
  DescribeJobResponse.struct_class = Types::DescribeJobResponse
2302
2337
 
2338
+ DescribeJobTemplateRequest.add_member(:job_template_id, Shapes::ShapeRef.new(shape: JobTemplateId, required: true, location: "uri", location_name: "jobTemplateId"))
2339
+ DescribeJobTemplateRequest.struct_class = Types::DescribeJobTemplateRequest
2340
+
2341
+ DescribeJobTemplateResponse.add_member(:job_template_arn, Shapes::ShapeRef.new(shape: JobTemplateArn, location_name: "jobTemplateArn"))
2342
+ DescribeJobTemplateResponse.add_member(:job_template_id, Shapes::ShapeRef.new(shape: JobTemplateId, location_name: "jobTemplateId"))
2343
+ DescribeJobTemplateResponse.add_member(:description, Shapes::ShapeRef.new(shape: JobDescription, location_name: "description"))
2344
+ DescribeJobTemplateResponse.add_member(:document_source, Shapes::ShapeRef.new(shape: JobDocumentSource, location_name: "documentSource"))
2345
+ DescribeJobTemplateResponse.add_member(:document, Shapes::ShapeRef.new(shape: JobDocument, location_name: "document"))
2346
+ DescribeJobTemplateResponse.add_member(:created_at, Shapes::ShapeRef.new(shape: DateType, location_name: "createdAt"))
2347
+ DescribeJobTemplateResponse.add_member(:presigned_url_config, Shapes::ShapeRef.new(shape: PresignedUrlConfig, location_name: "presignedUrlConfig"))
2348
+ DescribeJobTemplateResponse.add_member(:job_executions_rollout_config, Shapes::ShapeRef.new(shape: JobExecutionsRolloutConfig, location_name: "jobExecutionsRolloutConfig"))
2349
+ DescribeJobTemplateResponse.add_member(:abort_config, Shapes::ShapeRef.new(shape: AbortConfig, location_name: "abortConfig"))
2350
+ DescribeJobTemplateResponse.add_member(:timeout_config, Shapes::ShapeRef.new(shape: TimeoutConfig, location_name: "timeoutConfig"))
2351
+ DescribeJobTemplateResponse.struct_class = Types::DescribeJobTemplateResponse
2352
+
2303
2353
  DescribeMitigationActionRequest.add_member(:action_name, Shapes::ShapeRef.new(shape: MitigationActionName, required: true, location: "uri", location_name: "actionName"))
2304
2354
  DescribeMitigationActionRequest.struct_class = Types::DescribeMitigationActionRequest
2305
2355
 
@@ -2798,6 +2848,7 @@ module Aws::IoT
2798
2848
  Job.add_member(:job_process_details, Shapes::ShapeRef.new(shape: JobProcessDetails, location_name: "jobProcessDetails"))
2799
2849
  Job.add_member(:timeout_config, Shapes::ShapeRef.new(shape: TimeoutConfig, location_name: "timeoutConfig"))
2800
2850
  Job.add_member(:namespace_id, Shapes::ShapeRef.new(shape: NamespaceId, location_name: "namespaceId"))
2851
+ Job.add_member(:job_template_arn, Shapes::ShapeRef.new(shape: JobTemplateArn, location_name: "jobTemplateArn"))
2801
2852
  Job.struct_class = Types::Job
2802
2853
 
2803
2854
  JobExecution.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, location_name: "jobId"))
@@ -2864,6 +2915,14 @@ module Aws::IoT
2864
2915
 
2865
2916
  JobTargets.member = Shapes::ShapeRef.new(shape: TargetArn)
2866
2917
 
2918
+ JobTemplateSummary.add_member(:job_template_arn, Shapes::ShapeRef.new(shape: JobTemplateArn, location_name: "jobTemplateArn"))
2919
+ JobTemplateSummary.add_member(:job_template_id, Shapes::ShapeRef.new(shape: JobTemplateId, location_name: "jobTemplateId"))
2920
+ JobTemplateSummary.add_member(:description, Shapes::ShapeRef.new(shape: JobDescription, location_name: "description"))
2921
+ JobTemplateSummary.add_member(:created_at, Shapes::ShapeRef.new(shape: DateType, location_name: "createdAt"))
2922
+ JobTemplateSummary.struct_class = Types::JobTemplateSummary
2923
+
2924
+ JobTemplateSummaryList.member = Shapes::ShapeRef.new(shape: JobTemplateSummary)
2925
+
2867
2926
  KafkaAction.add_member(:destination_arn, Shapes::ShapeRef.new(shape: AwsArn, required: true, location_name: "destinationArn"))
2868
2927
  KafkaAction.add_member(:topic, Shapes::ShapeRef.new(shape: String, required: true, location_name: "topic"))
2869
2928
  KafkaAction.add_member(:key, Shapes::ShapeRef.new(shape: String, location_name: "key"))
@@ -3093,6 +3152,14 @@ module Aws::IoT
3093
3152
  ListJobExecutionsForThingResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken"))
3094
3153
  ListJobExecutionsForThingResponse.struct_class = Types::ListJobExecutionsForThingResponse
3095
3154
 
3155
+ ListJobTemplatesRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: LaserMaxResults, location: "querystring", location_name: "maxResults"))
3156
+ ListJobTemplatesRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location: "querystring", location_name: "nextToken"))
3157
+ ListJobTemplatesRequest.struct_class = Types::ListJobTemplatesRequest
3158
+
3159
+ ListJobTemplatesResponse.add_member(:job_templates, Shapes::ShapeRef.new(shape: JobTemplateSummaryList, location_name: "jobTemplates"))
3160
+ ListJobTemplatesResponse.add_member(:next_token, Shapes::ShapeRef.new(shape: NextToken, location_name: "nextToken"))
3161
+ ListJobTemplatesResponse.struct_class = Types::ListJobTemplatesResponse
3162
+
3096
3163
  ListJobsRequest.add_member(:status, Shapes::ShapeRef.new(shape: JobStatus, location: "querystring", location_name: "status"))
3097
3164
  ListJobsRequest.add_member(:target_selection, Shapes::ShapeRef.new(shape: TargetSelection, location: "querystring", location_name: "targetSelection"))
3098
3165
  ListJobsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: LaserMaxResults, location: "querystring", location_name: "maxResults"))
@@ -4845,6 +4912,20 @@ module Aws::IoT
4845
4912
  o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException)
4846
4913
  end)
4847
4914
 
4915
+ api.add_operation(:create_job_template, Seahorse::Model::Operation.new.tap do |o|
4916
+ o.name = "CreateJobTemplate"
4917
+ o.http_method = "PUT"
4918
+ o.http_request_uri = "/job-templates/{jobTemplateId}"
4919
+ o.input = Shapes::ShapeRef.new(shape: CreateJobTemplateRequest)
4920
+ o.output = Shapes::ShapeRef.new(shape: CreateJobTemplateResponse)
4921
+ o.errors << Shapes::ShapeRef.new(shape: InvalidRequestException)
4922
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
4923
+ o.errors << Shapes::ShapeRef.new(shape: ConflictException)
4924
+ o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
4925
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
4926
+ o.errors << Shapes::ShapeRef.new(shape: InternalFailureException)
4927
+ end)
4928
+
4848
4929
  api.add_operation(:create_keys_and_certificate, Seahorse::Model::Operation.new.tap do |o|
4849
4930
  o.name = "CreateKeysAndCertificate"
4850
4931
  o.http_method = "POST"
@@ -5241,6 +5322,18 @@ module Aws::IoT
5241
5322
  o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException)
5242
5323
  end)
5243
5324
 
5325
+ api.add_operation(:delete_job_template, Seahorse::Model::Operation.new.tap do |o|
5326
+ o.name = "DeleteJobTemplate"
5327
+ o.http_method = "DELETE"
5328
+ o.http_request_uri = "/job-templates/{jobTemplateId}"
5329
+ o.input = Shapes::ShapeRef.new(shape: DeleteJobTemplateRequest)
5330
+ o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure))
5331
+ o.errors << Shapes::ShapeRef.new(shape: InvalidRequestException)
5332
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
5333
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
5334
+ o.errors << Shapes::ShapeRef.new(shape: InternalFailureException)
5335
+ end)
5336
+
5244
5337
  api.add_operation(:delete_mitigation_action, Seahorse::Model::Operation.new.tap do |o|
5245
5338
  o.name = "DeleteMitigationAction"
5246
5339
  o.http_method = "DELETE"
@@ -5722,6 +5815,18 @@ module Aws::IoT
5722
5815
  o.errors << Shapes::ShapeRef.new(shape: ServiceUnavailableException)
5723
5816
  end)
5724
5817
 
5818
+ api.add_operation(:describe_job_template, Seahorse::Model::Operation.new.tap do |o|
5819
+ o.name = "DescribeJobTemplate"
5820
+ o.http_method = "GET"
5821
+ o.http_request_uri = "/job-templates/{jobTemplateId}"
5822
+ o.input = Shapes::ShapeRef.new(shape: DescribeJobTemplateRequest)
5823
+ o.output = Shapes::ShapeRef.new(shape: DescribeJobTemplateResponse)
5824
+ o.errors << Shapes::ShapeRef.new(shape: InvalidRequestException)
5825
+ o.errors << Shapes::ShapeRef.new(shape: ResourceNotFoundException)
5826
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
5827
+ o.errors << Shapes::ShapeRef.new(shape: InternalFailureException)
5828
+ end)
5829
+
5725
5830
  api.add_operation(:describe_mitigation_action, Seahorse::Model::Operation.new.tap do |o|
5726
5831
  o.name = "DescribeMitigationAction"
5727
5832
  o.http_method = "GET"
@@ -6516,6 +6621,17 @@ module Aws::IoT
6516
6621
  )
6517
6622
  end)
6518
6623
 
6624
+ api.add_operation(:list_job_templates, Seahorse::Model::Operation.new.tap do |o|
6625
+ o.name = "ListJobTemplates"
6626
+ o.http_method = "GET"
6627
+ o.http_request_uri = "/job-templates"
6628
+ o.input = Shapes::ShapeRef.new(shape: ListJobTemplatesRequest)
6629
+ o.output = Shapes::ShapeRef.new(shape: ListJobTemplatesResponse)
6630
+ o.errors << Shapes::ShapeRef.new(shape: InvalidRequestException)
6631
+ o.errors << Shapes::ShapeRef.new(shape: ThrottlingException)
6632
+ o.errors << Shapes::ShapeRef.new(shape: InternalFailureException)
6633
+ end)
6634
+
6519
6635
  api.add_operation(:list_jobs, Seahorse::Model::Operation.new.tap do |o|
6520
6636
  o.name = "ListJobs"
6521
6637
  o.http_method = "GET"
@@ -30,6 +30,7 @@ module Aws::IoT
30
30
  # * {CertificateConflictException}
31
31
  # * {CertificateStateException}
32
32
  # * {CertificateValidationException}
33
+ # * {ConflictException}
33
34
  # * {ConflictingResourceUpdateException}
34
35
  # * {DeleteConflictException}
35
36
  # * {IndexNotReadyException}
@@ -108,6 +109,21 @@ module Aws::IoT
108
109
  end
109
110
  end
110
111
 
112
+ class ConflictException < ServiceError
113
+
114
+ # @param [Seahorse::Client::RequestContext] context
115
+ # @param [String] message
116
+ # @param [Aws::IoT::Types::ConflictException] data
117
+ def initialize(context, message, data = Aws::EmptyStructure.new)
118
+ super(context, message, data)
119
+ end
120
+
121
+ # @return [String]
122
+ def message
123
+ @message || @data[:message]
124
+ end
125
+ end
126
+
111
127
  class ConflictingResourceUpdateException < ServiceError
112
128
 
113
129
  # @param [Seahorse::Client::RequestContext] context
@@ -788,7 +788,8 @@ module Aws::IoT
788
788
  # @return [String]
789
789
  #
790
790
  # @!attribute [rw] target
791
- # The [identity][1] to which the policy is attached.
791
+ # The [identity][1] to which the policy is attached. For example, a
792
+ # thing group or a certificate.
792
793
  #
793
794
  #
794
795
  #
@@ -2608,6 +2609,17 @@ module Aws::IoT
2608
2609
 
2609
2610
  class ConfirmTopicRuleDestinationResponse < Aws::EmptyStructure; end
2610
2611
 
2612
+ # A resource with the same name already exists.
2613
+ #
2614
+ # @!attribute [rw] message
2615
+ # @return [String]
2616
+ #
2617
+ class ConflictException < Struct.new(
2618
+ :message)
2619
+ SENSITIVE = []
2620
+ include Aws::Structure
2621
+ end
2622
+
2611
2623
  # A conflicting resource update exception. This exception is thrown when
2612
2624
  # two pending updates cause a conflict.
2613
2625
  #
@@ -3280,6 +3292,7 @@ module Aws::IoT
3280
3292
  # },
3281
3293
  # ],
3282
3294
  # namespace_id: "NamespaceId",
3295
+ # job_template_arn: "JobTemplateArn",
3283
3296
  # }
3284
3297
  #
3285
3298
  # @!attribute [rw] job_id
@@ -3293,11 +3306,8 @@ module Aws::IoT
3293
3306
  # @return [Array<String>]
3294
3307
  #
3295
3308
  # @!attribute [rw] document_source
3296
- # An S3 link to the job document.
3297
- # @return [String]
3298
- #
3299
- # @!attribute [rw] document
3300
- # The job document.
3309
+ # An S3 link to the job document. Required if you don't specify a
3310
+ # value for `document`.
3301
3311
  #
3302
3312
  # <note markdown="1"> If the job document resides in an S3 bucket, you must use a
3303
3313
  # placeholder link when specifying the document.
@@ -3312,6 +3322,11 @@ module Aws::IoT
3312
3322
  # </note>
3313
3323
  # @return [String]
3314
3324
  #
3325
+ # @!attribute [rw] document
3326
+ # The job document. Required if you don't specify a value for
3327
+ # `documentSource`.
3328
+ # @return [String]
3329
+ #
3315
3330
  # @!attribute [rw] description
3316
3331
  # A short text description of the job.
3317
3332
  # @return [String]
@@ -3363,6 +3378,10 @@ module Aws::IoT
3363
3378
  # </note>
3364
3379
  # @return [String]
3365
3380
  #
3381
+ # @!attribute [rw] job_template_arn
3382
+ # The ARN of the job template used to create the job.
3383
+ # @return [String]
3384
+ #
3366
3385
  class CreateJobRequest < Struct.new(
3367
3386
  :job_id,
3368
3387
  :targets,
@@ -3375,7 +3394,8 @@ module Aws::IoT
3375
3394
  :abort_config,
3376
3395
  :timeout_config,
3377
3396
  :tags,
3378
- :namespace_id)
3397
+ :namespace_id,
3398
+ :job_template_arn)
3379
3399
  SENSITIVE = []
3380
3400
  include Aws::Structure
3381
3401
  end
@@ -3400,6 +3420,140 @@ module Aws::IoT
3400
3420
  include Aws::Structure
3401
3421
  end
3402
3422
 
3423
+ # @note When making an API call, you may pass CreateJobTemplateRequest
3424
+ # data as a hash:
3425
+ #
3426
+ # {
3427
+ # job_template_id: "JobTemplateId", # required
3428
+ # job_arn: "JobArn",
3429
+ # document_source: "JobDocumentSource",
3430
+ # document: "JobDocument",
3431
+ # description: "JobDescription", # required
3432
+ # presigned_url_config: {
3433
+ # role_arn: "RoleArn",
3434
+ # expires_in_sec: 1,
3435
+ # },
3436
+ # job_executions_rollout_config: {
3437
+ # maximum_per_minute: 1,
3438
+ # exponential_rate: {
3439
+ # base_rate_per_minute: 1, # required
3440
+ # increment_factor: 1.0, # required
3441
+ # rate_increase_criteria: { # required
3442
+ # number_of_notified_things: 1,
3443
+ # number_of_succeeded_things: 1,
3444
+ # },
3445
+ # },
3446
+ # },
3447
+ # abort_config: {
3448
+ # criteria_list: [ # required
3449
+ # {
3450
+ # failure_type: "FAILED", # required, accepts FAILED, REJECTED, TIMED_OUT, ALL
3451
+ # action: "CANCEL", # required, accepts CANCEL
3452
+ # threshold_percentage: 1.0, # required
3453
+ # min_number_of_executed_things: 1, # required
3454
+ # },
3455
+ # ],
3456
+ # },
3457
+ # timeout_config: {
3458
+ # in_progress_timeout_in_minutes: 1,
3459
+ # },
3460
+ # tags: [
3461
+ # {
3462
+ # key: "TagKey", # required
3463
+ # value: "TagValue",
3464
+ # },
3465
+ # ],
3466
+ # }
3467
+ #
3468
+ # @!attribute [rw] job_template_id
3469
+ # A unique identifier for the job template. We recommend using a UUID.
3470
+ # Alpha-numeric characters, "-", and "\_" are valid for use here.
3471
+ # @return [String]
3472
+ #
3473
+ # @!attribute [rw] job_arn
3474
+ # The ARN of the job to use as the basis for the job template.
3475
+ # @return [String]
3476
+ #
3477
+ # @!attribute [rw] document_source
3478
+ # An S3 link to the job document to use in the template. Required if
3479
+ # you don't specify a value for `document`.
3480
+ #
3481
+ # <note markdown="1"> If the job document resides in an S3 bucket, you must use a
3482
+ # placeholder link when specifying the document.
3483
+ #
3484
+ # The placeholder link is of the following form:
3485
+ #
3486
+ # `$\{aws:iot:s3-presigned-url:https://s3.amazonaws.com/bucket/key\}`
3487
+ #
3488
+ # where *bucket* is your bucket name and *key* is the object in the
3489
+ # bucket to which you are linking.
3490
+ #
3491
+ # </note>
3492
+ # @return [String]
3493
+ #
3494
+ # @!attribute [rw] document
3495
+ # The job document. Required if you don't specify a value for
3496
+ # `documentSource`.
3497
+ # @return [String]
3498
+ #
3499
+ # @!attribute [rw] description
3500
+ # A description of the job document.
3501
+ # @return [String]
3502
+ #
3503
+ # @!attribute [rw] presigned_url_config
3504
+ # Configuration for pre-signed S3 URLs.
3505
+ # @return [Types::PresignedUrlConfig]
3506
+ #
3507
+ # @!attribute [rw] job_executions_rollout_config
3508
+ # Allows you to create a staged rollout of a job.
3509
+ # @return [Types::JobExecutionsRolloutConfig]
3510
+ #
3511
+ # @!attribute [rw] abort_config
3512
+ # The criteria that determine when and how a job abort takes place.
3513
+ # @return [Types::AbortConfig]
3514
+ #
3515
+ # @!attribute [rw] timeout_config
3516
+ # Specifies the amount of time each device has to finish its execution
3517
+ # of the job. A timer is started when the job execution status is set
3518
+ # to `IN_PROGRESS`. If the job execution status is not set to another
3519
+ # terminal state before the timer expires, it will be automatically
3520
+ # set to `TIMED_OUT`.
3521
+ # @return [Types::TimeoutConfig]
3522
+ #
3523
+ # @!attribute [rw] tags
3524
+ # Metadata that can be used to manage the job template.
3525
+ # @return [Array<Types::Tag>]
3526
+ #
3527
+ class CreateJobTemplateRequest < Struct.new(
3528
+ :job_template_id,
3529
+ :job_arn,
3530
+ :document_source,
3531
+ :document,
3532
+ :description,
3533
+ :presigned_url_config,
3534
+ :job_executions_rollout_config,
3535
+ :abort_config,
3536
+ :timeout_config,
3537
+ :tags)
3538
+ SENSITIVE = []
3539
+ include Aws::Structure
3540
+ end
3541
+
3542
+ # @!attribute [rw] job_template_arn
3543
+ # The ARN of the job template.
3544
+ # @return [String]
3545
+ #
3546
+ # @!attribute [rw] job_template_id
3547
+ # The unique identifier of the job template.
3548
+ # @return [String]
3549
+ #
3550
+ class CreateJobTemplateResponse < Struct.new(
3551
+ :job_template_arn,
3552
+ :job_template_id)
3553
+ SENSITIVE = []
3554
+ include Aws::Structure
3555
+ end
3556
+
3403
3557
  # The input for the CreateKeysAndCertificate operation.
3404
3558
  #
3405
3559
  # @note When making an API call, you may pass CreateKeysAndCertificateRequest
@@ -5458,6 +5612,23 @@ module Aws::IoT
5458
5612
  include Aws::Structure
5459
5613
  end
5460
5614
 
5615
+ # @note When making an API call, you may pass DeleteJobTemplateRequest
5616
+ # data as a hash:
5617
+ #
5618
+ # {
5619
+ # job_template_id: "JobTemplateId", # required
5620
+ # }
5621
+ #
5622
+ # @!attribute [rw] job_template_id
5623
+ # The unique identifier of the job template to delete.
5624
+ # @return [String]
5625
+ #
5626
+ class DeleteJobTemplateRequest < Struct.new(
5627
+ :job_template_id)
5628
+ SENSITIVE = []
5629
+ include Aws::Structure
5630
+ end
5631
+
5461
5632
  # @note When making an API call, you may pass DeleteMitigationActionRequest
5462
5633
  # data as a hash:
5463
5634
  #
@@ -6706,6 +6877,83 @@ module Aws::IoT
6706
6877
  include Aws::Structure
6707
6878
  end
6708
6879
 
6880
+ # @note When making an API call, you may pass DescribeJobTemplateRequest
6881
+ # data as a hash:
6882
+ #
6883
+ # {
6884
+ # job_template_id: "JobTemplateId", # required
6885
+ # }
6886
+ #
6887
+ # @!attribute [rw] job_template_id
6888
+ # The unique identifier of the job template.
6889
+ # @return [String]
6890
+ #
6891
+ class DescribeJobTemplateRequest < Struct.new(
6892
+ :job_template_id)
6893
+ SENSITIVE = []
6894
+ include Aws::Structure
6895
+ end
6896
+
6897
+ # @!attribute [rw] job_template_arn
6898
+ # The ARN of the job template.
6899
+ # @return [String]
6900
+ #
6901
+ # @!attribute [rw] job_template_id
6902
+ # The unique identifier of the job template.
6903
+ # @return [String]
6904
+ #
6905
+ # @!attribute [rw] description
6906
+ # A description of the job template.
6907
+ # @return [String]
6908
+ #
6909
+ # @!attribute [rw] document_source
6910
+ # An S3 link to the job document.
6911
+ # @return [String]
6912
+ #
6913
+ # @!attribute [rw] document
6914
+ # The job document.
6915
+ # @return [String]
6916
+ #
6917
+ # @!attribute [rw] created_at
6918
+ # The time, in seconds since the epoch, when the job template was
6919
+ # created.
6920
+ # @return [Time]
6921
+ #
6922
+ # @!attribute [rw] presigned_url_config
6923
+ # Configuration for pre-signed S3 URLs.
6924
+ # @return [Types::PresignedUrlConfig]
6925
+ #
6926
+ # @!attribute [rw] job_executions_rollout_config
6927
+ # Allows you to create a staged rollout of a job.
6928
+ # @return [Types::JobExecutionsRolloutConfig]
6929
+ #
6930
+ # @!attribute [rw] abort_config
6931
+ # The criteria that determine when and how a job abort takes place.
6932
+ # @return [Types::AbortConfig]
6933
+ #
6934
+ # @!attribute [rw] timeout_config
6935
+ # Specifies the amount of time each device has to finish its execution
6936
+ # of the job. A timer is started when the job execution status is set
6937
+ # to `IN_PROGRESS`. If the job execution status is not set to another
6938
+ # terminal state before the timer expires, it will be automatically
6939
+ # set to `TIMED_OUT`.
6940
+ # @return [Types::TimeoutConfig]
6941
+ #
6942
+ class DescribeJobTemplateResponse < Struct.new(
6943
+ :job_template_arn,
6944
+ :job_template_id,
6945
+ :description,
6946
+ :document_source,
6947
+ :document,
6948
+ :created_at,
6949
+ :presigned_url_config,
6950
+ :job_executions_rollout_config,
6951
+ :abort_config,
6952
+ :timeout_config)
6953
+ SENSITIVE = []
6954
+ include Aws::Structure
6955
+ end
6956
+
6709
6957
  # @note When making an API call, you may pass DescribeMitigationActionRequest
6710
6958
  # data as a hash:
6711
6959
  #
@@ -7713,11 +7961,6 @@ module Aws::IoT
7713
7961
  #
7714
7962
  # * CredentialProvider
7715
7963
  #
7716
- # <note markdown="1"> The domain configuration feature is in public preview and is subject
7717
- # to change.
7718
- #
7719
- # </note>
7720
- #
7721
7964
  # @!attribute [rw] domain_configuration_name
7722
7965
  # The name of the domain configuration. This value must be unique to a
7723
7966
  # region.
@@ -9292,6 +9535,10 @@ module Aws::IoT
9292
9535
  # </note>
9293
9536
  # @return [String]
9294
9537
  #
9538
+ # @!attribute [rw] job_template_arn
9539
+ # The ARN of the job template used to create the job.
9540
+ # @return [String]
9541
+ #
9295
9542
  class Job < Struct.new(
9296
9543
  :job_arn,
9297
9544
  :job_id,
@@ -9310,7 +9557,8 @@ module Aws::IoT
9310
9557
  :completed_at,
9311
9558
  :job_process_details,
9312
9559
  :timeout_config,
9313
- :namespace_id)
9560
+ :namespace_id,
9561
+ :job_template_arn)
9314
9562
  SENSITIVE = []
9315
9563
  include Aws::Structure
9316
9564
  end
@@ -9620,6 +9868,34 @@ module Aws::IoT
9620
9868
  include Aws::Structure
9621
9869
  end
9622
9870
 
9871
+ # An object that contains information about the job template.
9872
+ #
9873
+ # @!attribute [rw] job_template_arn
9874
+ # The ARN of the job template.
9875
+ # @return [String]
9876
+ #
9877
+ # @!attribute [rw] job_template_id
9878
+ # The unique identifier of the job template.
9879
+ # @return [String]
9880
+ #
9881
+ # @!attribute [rw] description
9882
+ # A description of the job template.
9883
+ # @return [String]
9884
+ #
9885
+ # @!attribute [rw] created_at
9886
+ # The time, in seconds since the epoch, when the job template was
9887
+ # created.
9888
+ # @return [Time]
9889
+ #
9890
+ class JobTemplateSummary < Struct.new(
9891
+ :job_template_arn,
9892
+ :job_template_id,
9893
+ :description,
9894
+ :created_at)
9895
+ SENSITIVE = []
9896
+ include Aws::Structure
9897
+ end
9898
+
9623
9899
  # Send messages to an Amazon Managed Streaming for Apache Kafka (Amazon
9624
9900
  # MSK) or self-managed Apache Kafka cluster.
9625
9901
  #
@@ -10913,6 +11189,45 @@ module Aws::IoT
10913
11189
  include Aws::Structure
10914
11190
  end
10915
11191
 
11192
+ # @note When making an API call, you may pass ListJobTemplatesRequest
11193
+ # data as a hash:
11194
+ #
11195
+ # {
11196
+ # max_results: 1,
11197
+ # next_token: "NextToken",
11198
+ # }
11199
+ #
11200
+ # @!attribute [rw] max_results
11201
+ # The maximum number of results to return in the list.
11202
+ # @return [Integer]
11203
+ #
11204
+ # @!attribute [rw] next_token
11205
+ # The token to use to return the next set of results in the list.
11206
+ # @return [String]
11207
+ #
11208
+ class ListJobTemplatesRequest < Struct.new(
11209
+ :max_results,
11210
+ :next_token)
11211
+ SENSITIVE = []
11212
+ include Aws::Structure
11213
+ end
11214
+
11215
+ # @!attribute [rw] job_templates
11216
+ # A list of objects that contain information about the job templates.
11217
+ # @return [Array<Types::JobTemplateSummary>]
11218
+ #
11219
+ # @!attribute [rw] next_token
11220
+ # The token for the next set of results, or **null** if there are no
11221
+ # additional results.
11222
+ # @return [String]
11223
+ #
11224
+ class ListJobTemplatesResponse < Struct.new(
11225
+ :job_templates,
11226
+ :next_token)
11227
+ SENSITIVE = []
11228
+ include Aws::Structure
11229
+ end
11230
+
10916
11231
  # @note When making an API call, you may pass ListJobsRequest
10917
11232
  # data as a hash:
10918
11233
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-iot
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.68.0
4
+ version: 1.69.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-31 00:00:00.000000000 Z
11
+ date: 2021-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core
@@ -83,8 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
85
  requirements: []
86
- rubyforge_project:
87
- rubygems_version: 2.7.6.2
86
+ rubygems_version: 3.1.6
88
87
  signing_key:
89
88
  specification_version: 4
90
89
  summary: AWS SDK for Ruby - AWS IoT