1// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
2
3package greengrassv2
4
5import (
6	"fmt"
7	"time"
8
9	"github.com/aws/aws-sdk-go/aws"
10	"github.com/aws/aws-sdk-go/aws/awsutil"
11	"github.com/aws/aws-sdk-go/aws/request"
12	"github.com/aws/aws-sdk-go/private/protocol"
13	"github.com/aws/aws-sdk-go/private/protocol/restjson"
14)
15
16const opBatchAssociateClientDeviceWithCoreDevice = "BatchAssociateClientDeviceWithCoreDevice"
17
18// BatchAssociateClientDeviceWithCoreDeviceRequest generates a "aws/request.Request" representing the
19// client's request for the BatchAssociateClientDeviceWithCoreDevice operation. The "output" return
20// value will be populated with the request's response once the request completes
21// successfully.
22//
23// Use "Send" method on the returned Request to send the API call to the service.
24// the "output" return value is not valid until after Send returns without error.
25//
26// See BatchAssociateClientDeviceWithCoreDevice for more information on using the BatchAssociateClientDeviceWithCoreDevice
27// API call, and error handling.
28//
29// This method is useful when you want to inject custom logic or configuration
30// into the SDK's request lifecycle. Such as custom headers, or retry logic.
31//
32//
33//    // Example sending a request using the BatchAssociateClientDeviceWithCoreDeviceRequest method.
34//    req, resp := client.BatchAssociateClientDeviceWithCoreDeviceRequest(params)
35//
36//    err := req.Send()
37//    if err == nil { // resp is now filled
38//        fmt.Println(resp)
39//    }
40//
41// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/BatchAssociateClientDeviceWithCoreDevice
42func (c *GreengrassV2) BatchAssociateClientDeviceWithCoreDeviceRequest(input *BatchAssociateClientDeviceWithCoreDeviceInput) (req *request.Request, output *BatchAssociateClientDeviceWithCoreDeviceOutput) {
43	op := &request.Operation{
44		Name:       opBatchAssociateClientDeviceWithCoreDevice,
45		HTTPMethod: "POST",
46		HTTPPath:   "/greengrass/v2/coreDevices/{coreDeviceThingName}/associateClientDevices",
47	}
48
49	if input == nil {
50		input = &BatchAssociateClientDeviceWithCoreDeviceInput{}
51	}
52
53	output = &BatchAssociateClientDeviceWithCoreDeviceOutput{}
54	req = c.newRequest(op, input, output)
55	return
56}
57
58// BatchAssociateClientDeviceWithCoreDevice API operation for AWS IoT Greengrass V2.
59//
60// Associate a list of client devices with a core device. Use this API operation
61// to specify which client devices can discover a core device through cloud
62// discovery. With cloud discovery, client devices connect to IoT Greengrass
63// to retrieve associated core devices' connectivity information and certificates.
64// For more information, see Configure cloud discovery (https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-cloud-discovery.html)
65// in the IoT Greengrass V2 Developer Guide.
66//
67// Client devices are local IoT devices that connect to and communicate with
68// an IoT Greengrass core device over MQTT. You can connect client devices to
69// a core device to sync MQTT messages and data to Amazon Web Services IoT Core
70// and interact with client devices in Greengrass components. For more information,
71// see Interact with local IoT devices (https://docs.aws.amazon.com/greengrass/v2/developerguide/interact-with-local-iot-devices.html)
72// in the IoT Greengrass V2 Developer Guide.
73//
74// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
75// with awserr.Error's Code and Message methods to get detailed information about
76// the error.
77//
78// See the AWS API reference guide for AWS IoT Greengrass V2's
79// API operation BatchAssociateClientDeviceWithCoreDevice for usage and error information.
80//
81// Returned Error Types:
82//   * ValidationException
83//   The request isn't valid. This can occur if your request contains malformed
84//   JSON or unsupported characters.
85//
86//   * ResourceNotFoundException
87//   The requested resource can't be found.
88//
89//   * AccessDeniedException
90//   You don't have permission to perform the action.
91//
92//   * InternalServerException
93//   IoT Greengrass can't process your request right now. Try again later.
94//
95//   * ThrottlingException
96//   Your request exceeded a request rate quota. For example, you might have exceeded
97//   the amount of times that you can retrieve device or deployment status per
98//   second.
99//
100// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/BatchAssociateClientDeviceWithCoreDevice
101func (c *GreengrassV2) BatchAssociateClientDeviceWithCoreDevice(input *BatchAssociateClientDeviceWithCoreDeviceInput) (*BatchAssociateClientDeviceWithCoreDeviceOutput, error) {
102	req, out := c.BatchAssociateClientDeviceWithCoreDeviceRequest(input)
103	return out, req.Send()
104}
105
106// BatchAssociateClientDeviceWithCoreDeviceWithContext is the same as BatchAssociateClientDeviceWithCoreDevice with the addition of
107// the ability to pass a context and additional request options.
108//
109// See BatchAssociateClientDeviceWithCoreDevice for details on how to use this API operation.
110//
111// The context must be non-nil and will be used for request cancellation. If
112// the context is nil a panic will occur. In the future the SDK may create
113// sub-contexts for http.Requests. See https://golang.org/pkg/context/
114// for more information on using Contexts.
115func (c *GreengrassV2) BatchAssociateClientDeviceWithCoreDeviceWithContext(ctx aws.Context, input *BatchAssociateClientDeviceWithCoreDeviceInput, opts ...request.Option) (*BatchAssociateClientDeviceWithCoreDeviceOutput, error) {
116	req, out := c.BatchAssociateClientDeviceWithCoreDeviceRequest(input)
117	req.SetContext(ctx)
118	req.ApplyOptions(opts...)
119	return out, req.Send()
120}
121
122const opBatchDisassociateClientDeviceFromCoreDevice = "BatchDisassociateClientDeviceFromCoreDevice"
123
124// BatchDisassociateClientDeviceFromCoreDeviceRequest generates a "aws/request.Request" representing the
125// client's request for the BatchDisassociateClientDeviceFromCoreDevice operation. The "output" return
126// value will be populated with the request's response once the request completes
127// successfully.
128//
129// Use "Send" method on the returned Request to send the API call to the service.
130// the "output" return value is not valid until after Send returns without error.
131//
132// See BatchDisassociateClientDeviceFromCoreDevice for more information on using the BatchDisassociateClientDeviceFromCoreDevice
133// API call, and error handling.
134//
135// This method is useful when you want to inject custom logic or configuration
136// into the SDK's request lifecycle. Such as custom headers, or retry logic.
137//
138//
139//    // Example sending a request using the BatchDisassociateClientDeviceFromCoreDeviceRequest method.
140//    req, resp := client.BatchDisassociateClientDeviceFromCoreDeviceRequest(params)
141//
142//    err := req.Send()
143//    if err == nil { // resp is now filled
144//        fmt.Println(resp)
145//    }
146//
147// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/BatchDisassociateClientDeviceFromCoreDevice
148func (c *GreengrassV2) BatchDisassociateClientDeviceFromCoreDeviceRequest(input *BatchDisassociateClientDeviceFromCoreDeviceInput) (req *request.Request, output *BatchDisassociateClientDeviceFromCoreDeviceOutput) {
149	op := &request.Operation{
150		Name:       opBatchDisassociateClientDeviceFromCoreDevice,
151		HTTPMethod: "POST",
152		HTTPPath:   "/greengrass/v2/coreDevices/{coreDeviceThingName}/disassociateClientDevices",
153	}
154
155	if input == nil {
156		input = &BatchDisassociateClientDeviceFromCoreDeviceInput{}
157	}
158
159	output = &BatchDisassociateClientDeviceFromCoreDeviceOutput{}
160	req = c.newRequest(op, input, output)
161	return
162}
163
164// BatchDisassociateClientDeviceFromCoreDevice API operation for AWS IoT Greengrass V2.
165//
166// Disassociate a list of client devices from a core device. After you disassociate
167// a client device from a core device, the client device won't be able to use
168// cloud discovery to retrieve the core device's connectivity information and
169// certificates.
170//
171// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
172// with awserr.Error's Code and Message methods to get detailed information about
173// the error.
174//
175// See the AWS API reference guide for AWS IoT Greengrass V2's
176// API operation BatchDisassociateClientDeviceFromCoreDevice for usage and error information.
177//
178// Returned Error Types:
179//   * ValidationException
180//   The request isn't valid. This can occur if your request contains malformed
181//   JSON or unsupported characters.
182//
183//   * ResourceNotFoundException
184//   The requested resource can't be found.
185//
186//   * AccessDeniedException
187//   You don't have permission to perform the action.
188//
189//   * InternalServerException
190//   IoT Greengrass can't process your request right now. Try again later.
191//
192//   * ThrottlingException
193//   Your request exceeded a request rate quota. For example, you might have exceeded
194//   the amount of times that you can retrieve device or deployment status per
195//   second.
196//
197// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/BatchDisassociateClientDeviceFromCoreDevice
198func (c *GreengrassV2) BatchDisassociateClientDeviceFromCoreDevice(input *BatchDisassociateClientDeviceFromCoreDeviceInput) (*BatchDisassociateClientDeviceFromCoreDeviceOutput, error) {
199	req, out := c.BatchDisassociateClientDeviceFromCoreDeviceRequest(input)
200	return out, req.Send()
201}
202
203// BatchDisassociateClientDeviceFromCoreDeviceWithContext is the same as BatchDisassociateClientDeviceFromCoreDevice with the addition of
204// the ability to pass a context and additional request options.
205//
206// See BatchDisassociateClientDeviceFromCoreDevice for details on how to use this API operation.
207//
208// The context must be non-nil and will be used for request cancellation. If
209// the context is nil a panic will occur. In the future the SDK may create
210// sub-contexts for http.Requests. See https://golang.org/pkg/context/
211// for more information on using Contexts.
212func (c *GreengrassV2) BatchDisassociateClientDeviceFromCoreDeviceWithContext(ctx aws.Context, input *BatchDisassociateClientDeviceFromCoreDeviceInput, opts ...request.Option) (*BatchDisassociateClientDeviceFromCoreDeviceOutput, error) {
213	req, out := c.BatchDisassociateClientDeviceFromCoreDeviceRequest(input)
214	req.SetContext(ctx)
215	req.ApplyOptions(opts...)
216	return out, req.Send()
217}
218
219const opCancelDeployment = "CancelDeployment"
220
221// CancelDeploymentRequest generates a "aws/request.Request" representing the
222// client's request for the CancelDeployment operation. The "output" return
223// value will be populated with the request's response once the request completes
224// successfully.
225//
226// Use "Send" method on the returned Request to send the API call to the service.
227// the "output" return value is not valid until after Send returns without error.
228//
229// See CancelDeployment for more information on using the CancelDeployment
230// API call, and error handling.
231//
232// This method is useful when you want to inject custom logic or configuration
233// into the SDK's request lifecycle. Such as custom headers, or retry logic.
234//
235//
236//    // Example sending a request using the CancelDeploymentRequest method.
237//    req, resp := client.CancelDeploymentRequest(params)
238//
239//    err := req.Send()
240//    if err == nil { // resp is now filled
241//        fmt.Println(resp)
242//    }
243//
244// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/CancelDeployment
245func (c *GreengrassV2) CancelDeploymentRequest(input *CancelDeploymentInput) (req *request.Request, output *CancelDeploymentOutput) {
246	op := &request.Operation{
247		Name:       opCancelDeployment,
248		HTTPMethod: "POST",
249		HTTPPath:   "/greengrass/v2/deployments/{deploymentId}/cancel",
250	}
251
252	if input == nil {
253		input = &CancelDeploymentInput{}
254	}
255
256	output = &CancelDeploymentOutput{}
257	req = c.newRequest(op, input, output)
258	return
259}
260
261// CancelDeployment API operation for AWS IoT Greengrass V2.
262//
263// Cancels a deployment. This operation cancels the deployment for devices that
264// haven't yet received it. If a device already received the deployment, this
265// operation doesn't change anything for that device.
266//
267// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
268// with awserr.Error's Code and Message methods to get detailed information about
269// the error.
270//
271// See the AWS API reference guide for AWS IoT Greengrass V2's
272// API operation CancelDeployment for usage and error information.
273//
274// Returned Error Types:
275//   * ResourceNotFoundException
276//   The requested resource can't be found.
277//
278//   * ValidationException
279//   The request isn't valid. This can occur if your request contains malformed
280//   JSON or unsupported characters.
281//
282//   * AccessDeniedException
283//   You don't have permission to perform the action.
284//
285//   * InternalServerException
286//   IoT Greengrass can't process your request right now. Try again later.
287//
288//   * ConflictException
289//   Your request has conflicting operations. This can occur if you're trying
290//   to perform more than one operation on the same resource at the same time.
291//
292//   * ThrottlingException
293//   Your request exceeded a request rate quota. For example, you might have exceeded
294//   the amount of times that you can retrieve device or deployment status per
295//   second.
296//
297// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/CancelDeployment
298func (c *GreengrassV2) CancelDeployment(input *CancelDeploymentInput) (*CancelDeploymentOutput, error) {
299	req, out := c.CancelDeploymentRequest(input)
300	return out, req.Send()
301}
302
303// CancelDeploymentWithContext is the same as CancelDeployment with the addition of
304// the ability to pass a context and additional request options.
305//
306// See CancelDeployment for details on how to use this API operation.
307//
308// The context must be non-nil and will be used for request cancellation. If
309// the context is nil a panic will occur. In the future the SDK may create
310// sub-contexts for http.Requests. See https://golang.org/pkg/context/
311// for more information on using Contexts.
312func (c *GreengrassV2) CancelDeploymentWithContext(ctx aws.Context, input *CancelDeploymentInput, opts ...request.Option) (*CancelDeploymentOutput, error) {
313	req, out := c.CancelDeploymentRequest(input)
314	req.SetContext(ctx)
315	req.ApplyOptions(opts...)
316	return out, req.Send()
317}
318
319const opCreateComponentVersion = "CreateComponentVersion"
320
321// CreateComponentVersionRequest generates a "aws/request.Request" representing the
322// client's request for the CreateComponentVersion operation. The "output" return
323// value will be populated with the request's response once the request completes
324// successfully.
325//
326// Use "Send" method on the returned Request to send the API call to the service.
327// the "output" return value is not valid until after Send returns without error.
328//
329// See CreateComponentVersion for more information on using the CreateComponentVersion
330// API call, and error handling.
331//
332// This method is useful when you want to inject custom logic or configuration
333// into the SDK's request lifecycle. Such as custom headers, or retry logic.
334//
335//
336//    // Example sending a request using the CreateComponentVersionRequest method.
337//    req, resp := client.CreateComponentVersionRequest(params)
338//
339//    err := req.Send()
340//    if err == nil { // resp is now filled
341//        fmt.Println(resp)
342//    }
343//
344// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/CreateComponentVersion
345func (c *GreengrassV2) CreateComponentVersionRequest(input *CreateComponentVersionInput) (req *request.Request, output *CreateComponentVersionOutput) {
346	op := &request.Operation{
347		Name:       opCreateComponentVersion,
348		HTTPMethod: "POST",
349		HTTPPath:   "/greengrass/v2/createComponentVersion",
350	}
351
352	if input == nil {
353		input = &CreateComponentVersionInput{}
354	}
355
356	output = &CreateComponentVersionOutput{}
357	req = c.newRequest(op, input, output)
358	return
359}
360
361// CreateComponentVersion API operation for AWS IoT Greengrass V2.
362//
363// Creates a component. Components are software that run on Greengrass core
364// devices. After you develop and test a component on your core device, you
365// can use this operation to upload your component to IoT Greengrass. Then,
366// you can deploy the component to other core devices.
367//
368// You can use this operation to do the following:
369//
370//    * Create components from recipes Create a component from a recipe, which
371//    is a file that defines the component's metadata, parameters, dependencies,
372//    lifecycle, artifacts, and platform capability. For more information, see
373//    IoT Greengrass component recipe reference (https://docs.aws.amazon.com/greengrass/v2/developerguide/component-recipe-reference.html)
374//    in the IoT Greengrass V2 Developer Guide. To create a component from a
375//    recipe, specify inlineRecipe when you call this operation.
376//
377//    * Create components from Lambda functions Create a component from an Lambda
378//    function that runs on IoT Greengrass. This creates a recipe and artifacts
379//    from the Lambda function's deployment package. You can use this operation
380//    to migrate Lambda functions from IoT Greengrass V1 to IoT Greengrass V2.
381//    This function only accepts Lambda functions that use the following runtimes:
382//    Python 2.7 – python2.7 Python 3.7 – python3.7 Python 3.8 – python3.8
383//    Java 8 – java8 Node.js 10 – nodejs10.x Node.js 12 – nodejs12.x To
384//    create a component from a Lambda function, specify lambdaFunction when
385//    you call this operation.
386//
387// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
388// with awserr.Error's Code and Message methods to get detailed information about
389// the error.
390//
391// See the AWS API reference guide for AWS IoT Greengrass V2's
392// API operation CreateComponentVersion for usage and error information.
393//
394// Returned Error Types:
395//   * ValidationException
396//   The request isn't valid. This can occur if your request contains malformed
397//   JSON or unsupported characters.
398//
399//   * ServiceQuotaExceededException
400//   Your request exceeds a service quota. For example, you might have the maximum
401//   number of components that you can create.
402//
403//   * AccessDeniedException
404//   You don't have permission to perform the action.
405//
406//   * ConflictException
407//   Your request has conflicting operations. This can occur if you're trying
408//   to perform more than one operation on the same resource at the same time.
409//
410//   * ThrottlingException
411//   Your request exceeded a request rate quota. For example, you might have exceeded
412//   the amount of times that you can retrieve device or deployment status per
413//   second.
414//
415//   * InternalServerException
416//   IoT Greengrass can't process your request right now. Try again later.
417//
418//   * RequestAlreadyInProgressException
419//   The request is already in progress. This exception occurs when you use a
420//   client token for multiple requests while IoT Greengrass is still processing
421//   an earlier request that uses the same client token.
422//
423// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/CreateComponentVersion
424func (c *GreengrassV2) CreateComponentVersion(input *CreateComponentVersionInput) (*CreateComponentVersionOutput, error) {
425	req, out := c.CreateComponentVersionRequest(input)
426	return out, req.Send()
427}
428
429// CreateComponentVersionWithContext is the same as CreateComponentVersion with the addition of
430// the ability to pass a context and additional request options.
431//
432// See CreateComponentVersion for details on how to use this API operation.
433//
434// The context must be non-nil and will be used for request cancellation. If
435// the context is nil a panic will occur. In the future the SDK may create
436// sub-contexts for http.Requests. See https://golang.org/pkg/context/
437// for more information on using Contexts.
438func (c *GreengrassV2) CreateComponentVersionWithContext(ctx aws.Context, input *CreateComponentVersionInput, opts ...request.Option) (*CreateComponentVersionOutput, error) {
439	req, out := c.CreateComponentVersionRequest(input)
440	req.SetContext(ctx)
441	req.ApplyOptions(opts...)
442	return out, req.Send()
443}
444
445const opCreateDeployment = "CreateDeployment"
446
447// CreateDeploymentRequest generates a "aws/request.Request" representing the
448// client's request for the CreateDeployment operation. The "output" return
449// value will be populated with the request's response once the request completes
450// successfully.
451//
452// Use "Send" method on the returned Request to send the API call to the service.
453// the "output" return value is not valid until after Send returns without error.
454//
455// See CreateDeployment for more information on using the CreateDeployment
456// API call, and error handling.
457//
458// This method is useful when you want to inject custom logic or configuration
459// into the SDK's request lifecycle. Such as custom headers, or retry logic.
460//
461//
462//    // Example sending a request using the CreateDeploymentRequest method.
463//    req, resp := client.CreateDeploymentRequest(params)
464//
465//    err := req.Send()
466//    if err == nil { // resp is now filled
467//        fmt.Println(resp)
468//    }
469//
470// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/CreateDeployment
471func (c *GreengrassV2) CreateDeploymentRequest(input *CreateDeploymentInput) (req *request.Request, output *CreateDeploymentOutput) {
472	op := &request.Operation{
473		Name:       opCreateDeployment,
474		HTTPMethod: "POST",
475		HTTPPath:   "/greengrass/v2/deployments",
476	}
477
478	if input == nil {
479		input = &CreateDeploymentInput{}
480	}
481
482	output = &CreateDeploymentOutput{}
483	req = c.newRequest(op, input, output)
484	return
485}
486
487// CreateDeployment API operation for AWS IoT Greengrass V2.
488//
489// Creates a continuous deployment for a target, which is a Greengrass core
490// device or group of core devices. When you add a new core device to a group
491// of core devices that has a deployment, IoT Greengrass deploys that group's
492// deployment to the new device.
493//
494// You can define one deployment for each target. When you create a new deployment
495// for a target that has an existing deployment, you replace the previous deployment.
496// IoT Greengrass applies the new deployment to the target devices.
497//
498// Every deployment has a revision number that indicates how many deployment
499// revisions you define for a target. Use this operation to create a new revision
500// of an existing deployment. This operation returns the revision number of
501// the new deployment when you create it.
502//
503// For more information, see the Create deployments (https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html)
504// in the IoT Greengrass V2 Developer Guide.
505//
506// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
507// with awserr.Error's Code and Message methods to get detailed information about
508// the error.
509//
510// See the AWS API reference guide for AWS IoT Greengrass V2's
511// API operation CreateDeployment for usage and error information.
512//
513// Returned Error Types:
514//   * ResourceNotFoundException
515//   The requested resource can't be found.
516//
517//   * ValidationException
518//   The request isn't valid. This can occur if your request contains malformed
519//   JSON or unsupported characters.
520//
521//   * AccessDeniedException
522//   You don't have permission to perform the action.
523//
524//   * ThrottlingException
525//   Your request exceeded a request rate quota. For example, you might have exceeded
526//   the amount of times that you can retrieve device or deployment status per
527//   second.
528//
529//   * InternalServerException
530//   IoT Greengrass can't process your request right now. Try again later.
531//
532//   * RequestAlreadyInProgressException
533//   The request is already in progress. This exception occurs when you use a
534//   client token for multiple requests while IoT Greengrass is still processing
535//   an earlier request that uses the same client token.
536//
537// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/CreateDeployment
538func (c *GreengrassV2) CreateDeployment(input *CreateDeploymentInput) (*CreateDeploymentOutput, error) {
539	req, out := c.CreateDeploymentRequest(input)
540	return out, req.Send()
541}
542
543// CreateDeploymentWithContext is the same as CreateDeployment with the addition of
544// the ability to pass a context and additional request options.
545//
546// See CreateDeployment for details on how to use this API operation.
547//
548// The context must be non-nil and will be used for request cancellation. If
549// the context is nil a panic will occur. In the future the SDK may create
550// sub-contexts for http.Requests. See https://golang.org/pkg/context/
551// for more information on using Contexts.
552func (c *GreengrassV2) CreateDeploymentWithContext(ctx aws.Context, input *CreateDeploymentInput, opts ...request.Option) (*CreateDeploymentOutput, error) {
553	req, out := c.CreateDeploymentRequest(input)
554	req.SetContext(ctx)
555	req.ApplyOptions(opts...)
556	return out, req.Send()
557}
558
559const opDeleteComponent = "DeleteComponent"
560
561// DeleteComponentRequest generates a "aws/request.Request" representing the
562// client's request for the DeleteComponent operation. The "output" return
563// value will be populated with the request's response once the request completes
564// successfully.
565//
566// Use "Send" method on the returned Request to send the API call to the service.
567// the "output" return value is not valid until after Send returns without error.
568//
569// See DeleteComponent for more information on using the DeleteComponent
570// API call, and error handling.
571//
572// This method is useful when you want to inject custom logic or configuration
573// into the SDK's request lifecycle. Such as custom headers, or retry logic.
574//
575//
576//    // Example sending a request using the DeleteComponentRequest method.
577//    req, resp := client.DeleteComponentRequest(params)
578//
579//    err := req.Send()
580//    if err == nil { // resp is now filled
581//        fmt.Println(resp)
582//    }
583//
584// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/DeleteComponent
585func (c *GreengrassV2) DeleteComponentRequest(input *DeleteComponentInput) (req *request.Request, output *DeleteComponentOutput) {
586	op := &request.Operation{
587		Name:       opDeleteComponent,
588		HTTPMethod: "DELETE",
589		HTTPPath:   "/greengrass/v2/components/{arn}",
590	}
591
592	if input == nil {
593		input = &DeleteComponentInput{}
594	}
595
596	output = &DeleteComponentOutput{}
597	req = c.newRequest(op, input, output)
598	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
599	return
600}
601
602// DeleteComponent API operation for AWS IoT Greengrass V2.
603//
604// Deletes a version of a component from IoT Greengrass.
605//
606// This operation deletes the component's recipe and artifacts. As a result,
607// deployments that refer to this component version will fail. If you have deployments
608// that use this component version, you can remove the component from the deployment
609// or update the deployment to use a valid version.
610//
611// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
612// with awserr.Error's Code and Message methods to get detailed information about
613// the error.
614//
615// See the AWS API reference guide for AWS IoT Greengrass V2's
616// API operation DeleteComponent for usage and error information.
617//
618// Returned Error Types:
619//   * ValidationException
620//   The request isn't valid. This can occur if your request contains malformed
621//   JSON or unsupported characters.
622//
623//   * AccessDeniedException
624//   You don't have permission to perform the action.
625//
626//   * ConflictException
627//   Your request has conflicting operations. This can occur if you're trying
628//   to perform more than one operation on the same resource at the same time.
629//
630//   * ResourceNotFoundException
631//   The requested resource can't be found.
632//
633//   * ThrottlingException
634//   Your request exceeded a request rate quota. For example, you might have exceeded
635//   the amount of times that you can retrieve device or deployment status per
636//   second.
637//
638//   * InternalServerException
639//   IoT Greengrass can't process your request right now. Try again later.
640//
641// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/DeleteComponent
642func (c *GreengrassV2) DeleteComponent(input *DeleteComponentInput) (*DeleteComponentOutput, error) {
643	req, out := c.DeleteComponentRequest(input)
644	return out, req.Send()
645}
646
647// DeleteComponentWithContext is the same as DeleteComponent with the addition of
648// the ability to pass a context and additional request options.
649//
650// See DeleteComponent for details on how to use this API operation.
651//
652// The context must be non-nil and will be used for request cancellation. If
653// the context is nil a panic will occur. In the future the SDK may create
654// sub-contexts for http.Requests. See https://golang.org/pkg/context/
655// for more information on using Contexts.
656func (c *GreengrassV2) DeleteComponentWithContext(ctx aws.Context, input *DeleteComponentInput, opts ...request.Option) (*DeleteComponentOutput, error) {
657	req, out := c.DeleteComponentRequest(input)
658	req.SetContext(ctx)
659	req.ApplyOptions(opts...)
660	return out, req.Send()
661}
662
663const opDeleteCoreDevice = "DeleteCoreDevice"
664
665// DeleteCoreDeviceRequest generates a "aws/request.Request" representing the
666// client's request for the DeleteCoreDevice operation. The "output" return
667// value will be populated with the request's response once the request completes
668// successfully.
669//
670// Use "Send" method on the returned Request to send the API call to the service.
671// the "output" return value is not valid until after Send returns without error.
672//
673// See DeleteCoreDevice for more information on using the DeleteCoreDevice
674// API call, and error handling.
675//
676// This method is useful when you want to inject custom logic or configuration
677// into the SDK's request lifecycle. Such as custom headers, or retry logic.
678//
679//
680//    // Example sending a request using the DeleteCoreDeviceRequest method.
681//    req, resp := client.DeleteCoreDeviceRequest(params)
682//
683//    err := req.Send()
684//    if err == nil { // resp is now filled
685//        fmt.Println(resp)
686//    }
687//
688// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/DeleteCoreDevice
689func (c *GreengrassV2) DeleteCoreDeviceRequest(input *DeleteCoreDeviceInput) (req *request.Request, output *DeleteCoreDeviceOutput) {
690	op := &request.Operation{
691		Name:       opDeleteCoreDevice,
692		HTTPMethod: "DELETE",
693		HTTPPath:   "/greengrass/v2/coreDevices/{coreDeviceThingName}",
694	}
695
696	if input == nil {
697		input = &DeleteCoreDeviceInput{}
698	}
699
700	output = &DeleteCoreDeviceOutput{}
701	req = c.newRequest(op, input, output)
702	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
703	return
704}
705
706// DeleteCoreDevice API operation for AWS IoT Greengrass V2.
707//
708// Deletes a Greengrass core device, which is an IoT thing. This operation removes
709// the core device from the list of core devices. This operation doesn't delete
710// the IoT thing. For more information about how to delete the IoT thing, see
711// DeleteThing (https://docs.aws.amazon.com/iot/latest/apireference/API_DeleteThing.html)
712// in the IoT API Reference.
713//
714// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
715// with awserr.Error's Code and Message methods to get detailed information about
716// the error.
717//
718// See the AWS API reference guide for AWS IoT Greengrass V2's
719// API operation DeleteCoreDevice for usage and error information.
720//
721// Returned Error Types:
722//   * ValidationException
723//   The request isn't valid. This can occur if your request contains malformed
724//   JSON or unsupported characters.
725//
726//   * ResourceNotFoundException
727//   The requested resource can't be found.
728//
729//   * AccessDeniedException
730//   You don't have permission to perform the action.
731//
732//   * InternalServerException
733//   IoT Greengrass can't process your request right now. Try again later.
734//
735//   * ThrottlingException
736//   Your request exceeded a request rate quota. For example, you might have exceeded
737//   the amount of times that you can retrieve device or deployment status per
738//   second.
739//
740//   * ConflictException
741//   Your request has conflicting operations. This can occur if you're trying
742//   to perform more than one operation on the same resource at the same time.
743//
744// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/DeleteCoreDevice
745func (c *GreengrassV2) DeleteCoreDevice(input *DeleteCoreDeviceInput) (*DeleteCoreDeviceOutput, error) {
746	req, out := c.DeleteCoreDeviceRequest(input)
747	return out, req.Send()
748}
749
750// DeleteCoreDeviceWithContext is the same as DeleteCoreDevice with the addition of
751// the ability to pass a context and additional request options.
752//
753// See DeleteCoreDevice for details on how to use this API operation.
754//
755// The context must be non-nil and will be used for request cancellation. If
756// the context is nil a panic will occur. In the future the SDK may create
757// sub-contexts for http.Requests. See https://golang.org/pkg/context/
758// for more information on using Contexts.
759func (c *GreengrassV2) DeleteCoreDeviceWithContext(ctx aws.Context, input *DeleteCoreDeviceInput, opts ...request.Option) (*DeleteCoreDeviceOutput, error) {
760	req, out := c.DeleteCoreDeviceRequest(input)
761	req.SetContext(ctx)
762	req.ApplyOptions(opts...)
763	return out, req.Send()
764}
765
766const opDescribeComponent = "DescribeComponent"
767
768// DescribeComponentRequest generates a "aws/request.Request" representing the
769// client's request for the DescribeComponent operation. The "output" return
770// value will be populated with the request's response once the request completes
771// successfully.
772//
773// Use "Send" method on the returned Request to send the API call to the service.
774// the "output" return value is not valid until after Send returns without error.
775//
776// See DescribeComponent for more information on using the DescribeComponent
777// API call, and error handling.
778//
779// This method is useful when you want to inject custom logic or configuration
780// into the SDK's request lifecycle. Such as custom headers, or retry logic.
781//
782//
783//    // Example sending a request using the DescribeComponentRequest method.
784//    req, resp := client.DescribeComponentRequest(params)
785//
786//    err := req.Send()
787//    if err == nil { // resp is now filled
788//        fmt.Println(resp)
789//    }
790//
791// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/DescribeComponent
792func (c *GreengrassV2) DescribeComponentRequest(input *DescribeComponentInput) (req *request.Request, output *DescribeComponentOutput) {
793	op := &request.Operation{
794		Name:       opDescribeComponent,
795		HTTPMethod: "GET",
796		HTTPPath:   "/greengrass/v2/components/{arn}/metadata",
797	}
798
799	if input == nil {
800		input = &DescribeComponentInput{}
801	}
802
803	output = &DescribeComponentOutput{}
804	req = c.newRequest(op, input, output)
805	return
806}
807
808// DescribeComponent API operation for AWS IoT Greengrass V2.
809//
810// Retrieves metadata for a version of a component.
811//
812// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
813// with awserr.Error's Code and Message methods to get detailed information about
814// the error.
815//
816// See the AWS API reference guide for AWS IoT Greengrass V2's
817// API operation DescribeComponent for usage and error information.
818//
819// Returned Error Types:
820//   * ValidationException
821//   The request isn't valid. This can occur if your request contains malformed
822//   JSON or unsupported characters.
823//
824//   * AccessDeniedException
825//   You don't have permission to perform the action.
826//
827//   * ResourceNotFoundException
828//   The requested resource can't be found.
829//
830//   * ThrottlingException
831//   Your request exceeded a request rate quota. For example, you might have exceeded
832//   the amount of times that you can retrieve device or deployment status per
833//   second.
834//
835//   * InternalServerException
836//   IoT Greengrass can't process your request right now. Try again later.
837//
838// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/DescribeComponent
839func (c *GreengrassV2) DescribeComponent(input *DescribeComponentInput) (*DescribeComponentOutput, error) {
840	req, out := c.DescribeComponentRequest(input)
841	return out, req.Send()
842}
843
844// DescribeComponentWithContext is the same as DescribeComponent with the addition of
845// the ability to pass a context and additional request options.
846//
847// See DescribeComponent for details on how to use this API operation.
848//
849// The context must be non-nil and will be used for request cancellation. If
850// the context is nil a panic will occur. In the future the SDK may create
851// sub-contexts for http.Requests. See https://golang.org/pkg/context/
852// for more information on using Contexts.
853func (c *GreengrassV2) DescribeComponentWithContext(ctx aws.Context, input *DescribeComponentInput, opts ...request.Option) (*DescribeComponentOutput, error) {
854	req, out := c.DescribeComponentRequest(input)
855	req.SetContext(ctx)
856	req.ApplyOptions(opts...)
857	return out, req.Send()
858}
859
860const opGetComponent = "GetComponent"
861
862// GetComponentRequest generates a "aws/request.Request" representing the
863// client's request for the GetComponent operation. The "output" return
864// value will be populated with the request's response once the request completes
865// successfully.
866//
867// Use "Send" method on the returned Request to send the API call to the service.
868// the "output" return value is not valid until after Send returns without error.
869//
870// See GetComponent for more information on using the GetComponent
871// API call, and error handling.
872//
873// This method is useful when you want to inject custom logic or configuration
874// into the SDK's request lifecycle. Such as custom headers, or retry logic.
875//
876//
877//    // Example sending a request using the GetComponentRequest method.
878//    req, resp := client.GetComponentRequest(params)
879//
880//    err := req.Send()
881//    if err == nil { // resp is now filled
882//        fmt.Println(resp)
883//    }
884//
885// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetComponent
886func (c *GreengrassV2) GetComponentRequest(input *GetComponentInput) (req *request.Request, output *GetComponentOutput) {
887	op := &request.Operation{
888		Name:       opGetComponent,
889		HTTPMethod: "GET",
890		HTTPPath:   "/greengrass/v2/components/{arn}",
891	}
892
893	if input == nil {
894		input = &GetComponentInput{}
895	}
896
897	output = &GetComponentOutput{}
898	req = c.newRequest(op, input, output)
899	return
900}
901
902// GetComponent API operation for AWS IoT Greengrass V2.
903//
904// Gets the recipe for a version of a component. Core devices can call this
905// operation to identify the artifacts and requirements to install a component.
906//
907// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
908// with awserr.Error's Code and Message methods to get detailed information about
909// the error.
910//
911// See the AWS API reference guide for AWS IoT Greengrass V2's
912// API operation GetComponent for usage and error information.
913//
914// Returned Error Types:
915//   * ValidationException
916//   The request isn't valid. This can occur if your request contains malformed
917//   JSON or unsupported characters.
918//
919//   * AccessDeniedException
920//   You don't have permission to perform the action.
921//
922//   * ResourceNotFoundException
923//   The requested resource can't be found.
924//
925//   * ThrottlingException
926//   Your request exceeded a request rate quota. For example, you might have exceeded
927//   the amount of times that you can retrieve device or deployment status per
928//   second.
929//
930//   * InternalServerException
931//   IoT Greengrass can't process your request right now. Try again later.
932//
933// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetComponent
934func (c *GreengrassV2) GetComponent(input *GetComponentInput) (*GetComponentOutput, error) {
935	req, out := c.GetComponentRequest(input)
936	return out, req.Send()
937}
938
939// GetComponentWithContext is the same as GetComponent with the addition of
940// the ability to pass a context and additional request options.
941//
942// See GetComponent for details on how to use this API operation.
943//
944// The context must be non-nil and will be used for request cancellation. If
945// the context is nil a panic will occur. In the future the SDK may create
946// sub-contexts for http.Requests. See https://golang.org/pkg/context/
947// for more information on using Contexts.
948func (c *GreengrassV2) GetComponentWithContext(ctx aws.Context, input *GetComponentInput, opts ...request.Option) (*GetComponentOutput, error) {
949	req, out := c.GetComponentRequest(input)
950	req.SetContext(ctx)
951	req.ApplyOptions(opts...)
952	return out, req.Send()
953}
954
955const opGetComponentVersionArtifact = "GetComponentVersionArtifact"
956
957// GetComponentVersionArtifactRequest generates a "aws/request.Request" representing the
958// client's request for the GetComponentVersionArtifact operation. The "output" return
959// value will be populated with the request's response once the request completes
960// successfully.
961//
962// Use "Send" method on the returned Request to send the API call to the service.
963// the "output" return value is not valid until after Send returns without error.
964//
965// See GetComponentVersionArtifact for more information on using the GetComponentVersionArtifact
966// API call, and error handling.
967//
968// This method is useful when you want to inject custom logic or configuration
969// into the SDK's request lifecycle. Such as custom headers, or retry logic.
970//
971//
972//    // Example sending a request using the GetComponentVersionArtifactRequest method.
973//    req, resp := client.GetComponentVersionArtifactRequest(params)
974//
975//    err := req.Send()
976//    if err == nil { // resp is now filled
977//        fmt.Println(resp)
978//    }
979//
980// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetComponentVersionArtifact
981func (c *GreengrassV2) GetComponentVersionArtifactRequest(input *GetComponentVersionArtifactInput) (req *request.Request, output *GetComponentVersionArtifactOutput) {
982	op := &request.Operation{
983		Name:       opGetComponentVersionArtifact,
984		HTTPMethod: "GET",
985		HTTPPath:   "/greengrass/v2/components/{arn}/artifacts/{artifactName+}",
986	}
987
988	if input == nil {
989		input = &GetComponentVersionArtifactInput{}
990	}
991
992	output = &GetComponentVersionArtifactOutput{}
993	req = c.newRequest(op, input, output)
994	return
995}
996
997// GetComponentVersionArtifact API operation for AWS IoT Greengrass V2.
998//
999// Gets the pre-signed URL to download a public component artifact. Core devices
1000// call this operation to identify the URL that they can use to download an
1001// artifact to install.
1002//
1003// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1004// with awserr.Error's Code and Message methods to get detailed information about
1005// the error.
1006//
1007// See the AWS API reference guide for AWS IoT Greengrass V2's
1008// API operation GetComponentVersionArtifact for usage and error information.
1009//
1010// Returned Error Types:
1011//   * ValidationException
1012//   The request isn't valid. This can occur if your request contains malformed
1013//   JSON or unsupported characters.
1014//
1015//   * AccessDeniedException
1016//   You don't have permission to perform the action.
1017//
1018//   * ResourceNotFoundException
1019//   The requested resource can't be found.
1020//
1021//   * ThrottlingException
1022//   Your request exceeded a request rate quota. For example, you might have exceeded
1023//   the amount of times that you can retrieve device or deployment status per
1024//   second.
1025//
1026//   * InternalServerException
1027//   IoT Greengrass can't process your request right now. Try again later.
1028//
1029// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetComponentVersionArtifact
1030func (c *GreengrassV2) GetComponentVersionArtifact(input *GetComponentVersionArtifactInput) (*GetComponentVersionArtifactOutput, error) {
1031	req, out := c.GetComponentVersionArtifactRequest(input)
1032	return out, req.Send()
1033}
1034
1035// GetComponentVersionArtifactWithContext is the same as GetComponentVersionArtifact with the addition of
1036// the ability to pass a context and additional request options.
1037//
1038// See GetComponentVersionArtifact for details on how to use this API operation.
1039//
1040// The context must be non-nil and will be used for request cancellation. If
1041// the context is nil a panic will occur. In the future the SDK may create
1042// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1043// for more information on using Contexts.
1044func (c *GreengrassV2) GetComponentVersionArtifactWithContext(ctx aws.Context, input *GetComponentVersionArtifactInput, opts ...request.Option) (*GetComponentVersionArtifactOutput, error) {
1045	req, out := c.GetComponentVersionArtifactRequest(input)
1046	req.SetContext(ctx)
1047	req.ApplyOptions(opts...)
1048	return out, req.Send()
1049}
1050
1051const opGetCoreDevice = "GetCoreDevice"
1052
1053// GetCoreDeviceRequest generates a "aws/request.Request" representing the
1054// client's request for the GetCoreDevice operation. The "output" return
1055// value will be populated with the request's response once the request completes
1056// successfully.
1057//
1058// Use "Send" method on the returned Request to send the API call to the service.
1059// the "output" return value is not valid until after Send returns without error.
1060//
1061// See GetCoreDevice for more information on using the GetCoreDevice
1062// API call, and error handling.
1063//
1064// This method is useful when you want to inject custom logic or configuration
1065// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1066//
1067//
1068//    // Example sending a request using the GetCoreDeviceRequest method.
1069//    req, resp := client.GetCoreDeviceRequest(params)
1070//
1071//    err := req.Send()
1072//    if err == nil { // resp is now filled
1073//        fmt.Println(resp)
1074//    }
1075//
1076// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetCoreDevice
1077func (c *GreengrassV2) GetCoreDeviceRequest(input *GetCoreDeviceInput) (req *request.Request, output *GetCoreDeviceOutput) {
1078	op := &request.Operation{
1079		Name:       opGetCoreDevice,
1080		HTTPMethod: "GET",
1081		HTTPPath:   "/greengrass/v2/coreDevices/{coreDeviceThingName}",
1082	}
1083
1084	if input == nil {
1085		input = &GetCoreDeviceInput{}
1086	}
1087
1088	output = &GetCoreDeviceOutput{}
1089	req = c.newRequest(op, input, output)
1090	return
1091}
1092
1093// GetCoreDevice API operation for AWS IoT Greengrass V2.
1094//
1095// Retrieves metadata for a Greengrass core device.
1096//
1097// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1098// with awserr.Error's Code and Message methods to get detailed information about
1099// the error.
1100//
1101// See the AWS API reference guide for AWS IoT Greengrass V2's
1102// API operation GetCoreDevice for usage and error information.
1103//
1104// Returned Error Types:
1105//   * ValidationException
1106//   The request isn't valid. This can occur if your request contains malformed
1107//   JSON or unsupported characters.
1108//
1109//   * ResourceNotFoundException
1110//   The requested resource can't be found.
1111//
1112//   * AccessDeniedException
1113//   You don't have permission to perform the action.
1114//
1115//   * InternalServerException
1116//   IoT Greengrass can't process your request right now. Try again later.
1117//
1118//   * ThrottlingException
1119//   Your request exceeded a request rate quota. For example, you might have exceeded
1120//   the amount of times that you can retrieve device or deployment status per
1121//   second.
1122//
1123// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetCoreDevice
1124func (c *GreengrassV2) GetCoreDevice(input *GetCoreDeviceInput) (*GetCoreDeviceOutput, error) {
1125	req, out := c.GetCoreDeviceRequest(input)
1126	return out, req.Send()
1127}
1128
1129// GetCoreDeviceWithContext is the same as GetCoreDevice with the addition of
1130// the ability to pass a context and additional request options.
1131//
1132// See GetCoreDevice for details on how to use this API operation.
1133//
1134// The context must be non-nil and will be used for request cancellation. If
1135// the context is nil a panic will occur. In the future the SDK may create
1136// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1137// for more information on using Contexts.
1138func (c *GreengrassV2) GetCoreDeviceWithContext(ctx aws.Context, input *GetCoreDeviceInput, opts ...request.Option) (*GetCoreDeviceOutput, error) {
1139	req, out := c.GetCoreDeviceRequest(input)
1140	req.SetContext(ctx)
1141	req.ApplyOptions(opts...)
1142	return out, req.Send()
1143}
1144
1145const opGetDeployment = "GetDeployment"
1146
1147// GetDeploymentRequest generates a "aws/request.Request" representing the
1148// client's request for the GetDeployment operation. The "output" return
1149// value will be populated with the request's response once the request completes
1150// successfully.
1151//
1152// Use "Send" method on the returned Request to send the API call to the service.
1153// the "output" return value is not valid until after Send returns without error.
1154//
1155// See GetDeployment for more information on using the GetDeployment
1156// API call, and error handling.
1157//
1158// This method is useful when you want to inject custom logic or configuration
1159// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1160//
1161//
1162//    // Example sending a request using the GetDeploymentRequest method.
1163//    req, resp := client.GetDeploymentRequest(params)
1164//
1165//    err := req.Send()
1166//    if err == nil { // resp is now filled
1167//        fmt.Println(resp)
1168//    }
1169//
1170// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetDeployment
1171func (c *GreengrassV2) GetDeploymentRequest(input *GetDeploymentInput) (req *request.Request, output *GetDeploymentOutput) {
1172	op := &request.Operation{
1173		Name:       opGetDeployment,
1174		HTTPMethod: "GET",
1175		HTTPPath:   "/greengrass/v2/deployments/{deploymentId}",
1176	}
1177
1178	if input == nil {
1179		input = &GetDeploymentInput{}
1180	}
1181
1182	output = &GetDeploymentOutput{}
1183	req = c.newRequest(op, input, output)
1184	return
1185}
1186
1187// GetDeployment API operation for AWS IoT Greengrass V2.
1188//
1189// Gets a deployment. Deployments define the components that run on Greengrass
1190// core devices.
1191//
1192// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1193// with awserr.Error's Code and Message methods to get detailed information about
1194// the error.
1195//
1196// See the AWS API reference guide for AWS IoT Greengrass V2's
1197// API operation GetDeployment for usage and error information.
1198//
1199// Returned Error Types:
1200//   * ValidationException
1201//   The request isn't valid. This can occur if your request contains malformed
1202//   JSON or unsupported characters.
1203//
1204//   * ResourceNotFoundException
1205//   The requested resource can't be found.
1206//
1207//   * AccessDeniedException
1208//   You don't have permission to perform the action.
1209//
1210//   * InternalServerException
1211//   IoT Greengrass can't process your request right now. Try again later.
1212//
1213//   * ThrottlingException
1214//   Your request exceeded a request rate quota. For example, you might have exceeded
1215//   the amount of times that you can retrieve device or deployment status per
1216//   second.
1217//
1218// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/GetDeployment
1219func (c *GreengrassV2) GetDeployment(input *GetDeploymentInput) (*GetDeploymentOutput, error) {
1220	req, out := c.GetDeploymentRequest(input)
1221	return out, req.Send()
1222}
1223
1224// GetDeploymentWithContext is the same as GetDeployment with the addition of
1225// the ability to pass a context and additional request options.
1226//
1227// See GetDeployment for details on how to use this API operation.
1228//
1229// The context must be non-nil and will be used for request cancellation. If
1230// the context is nil a panic will occur. In the future the SDK may create
1231// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1232// for more information on using Contexts.
1233func (c *GreengrassV2) GetDeploymentWithContext(ctx aws.Context, input *GetDeploymentInput, opts ...request.Option) (*GetDeploymentOutput, error) {
1234	req, out := c.GetDeploymentRequest(input)
1235	req.SetContext(ctx)
1236	req.ApplyOptions(opts...)
1237	return out, req.Send()
1238}
1239
1240const opListClientDevicesAssociatedWithCoreDevice = "ListClientDevicesAssociatedWithCoreDevice"
1241
1242// ListClientDevicesAssociatedWithCoreDeviceRequest generates a "aws/request.Request" representing the
1243// client's request for the ListClientDevicesAssociatedWithCoreDevice operation. The "output" return
1244// value will be populated with the request's response once the request completes
1245// successfully.
1246//
1247// Use "Send" method on the returned Request to send the API call to the service.
1248// the "output" return value is not valid until after Send returns without error.
1249//
1250// See ListClientDevicesAssociatedWithCoreDevice for more information on using the ListClientDevicesAssociatedWithCoreDevice
1251// API call, and error handling.
1252//
1253// This method is useful when you want to inject custom logic or configuration
1254// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1255//
1256//
1257//    // Example sending a request using the ListClientDevicesAssociatedWithCoreDeviceRequest method.
1258//    req, resp := client.ListClientDevicesAssociatedWithCoreDeviceRequest(params)
1259//
1260//    err := req.Send()
1261//    if err == nil { // resp is now filled
1262//        fmt.Println(resp)
1263//    }
1264//
1265// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListClientDevicesAssociatedWithCoreDevice
1266func (c *GreengrassV2) ListClientDevicesAssociatedWithCoreDeviceRequest(input *ListClientDevicesAssociatedWithCoreDeviceInput) (req *request.Request, output *ListClientDevicesAssociatedWithCoreDeviceOutput) {
1267	op := &request.Operation{
1268		Name:       opListClientDevicesAssociatedWithCoreDevice,
1269		HTTPMethod: "GET",
1270		HTTPPath:   "/greengrass/v2/coreDevices/{coreDeviceThingName}/associatedClientDevices",
1271		Paginator: &request.Paginator{
1272			InputTokens:     []string{"nextToken"},
1273			OutputTokens:    []string{"nextToken"},
1274			LimitToken:      "maxResults",
1275			TruncationToken: "",
1276		},
1277	}
1278
1279	if input == nil {
1280		input = &ListClientDevicesAssociatedWithCoreDeviceInput{}
1281	}
1282
1283	output = &ListClientDevicesAssociatedWithCoreDeviceOutput{}
1284	req = c.newRequest(op, input, output)
1285	return
1286}
1287
1288// ListClientDevicesAssociatedWithCoreDevice API operation for AWS IoT Greengrass V2.
1289//
1290// Retrieves a paginated list of client devices that are associated with a core
1291// device.
1292//
1293// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1294// with awserr.Error's Code and Message methods to get detailed information about
1295// the error.
1296//
1297// See the AWS API reference guide for AWS IoT Greengrass V2's
1298// API operation ListClientDevicesAssociatedWithCoreDevice for usage and error information.
1299//
1300// Returned Error Types:
1301//   * ValidationException
1302//   The request isn't valid. This can occur if your request contains malformed
1303//   JSON or unsupported characters.
1304//
1305//   * ResourceNotFoundException
1306//   The requested resource can't be found.
1307//
1308//   * AccessDeniedException
1309//   You don't have permission to perform the action.
1310//
1311//   * InternalServerException
1312//   IoT Greengrass can't process your request right now. Try again later.
1313//
1314//   * ThrottlingException
1315//   Your request exceeded a request rate quota. For example, you might have exceeded
1316//   the amount of times that you can retrieve device or deployment status per
1317//   second.
1318//
1319// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListClientDevicesAssociatedWithCoreDevice
1320func (c *GreengrassV2) ListClientDevicesAssociatedWithCoreDevice(input *ListClientDevicesAssociatedWithCoreDeviceInput) (*ListClientDevicesAssociatedWithCoreDeviceOutput, error) {
1321	req, out := c.ListClientDevicesAssociatedWithCoreDeviceRequest(input)
1322	return out, req.Send()
1323}
1324
1325// ListClientDevicesAssociatedWithCoreDeviceWithContext is the same as ListClientDevicesAssociatedWithCoreDevice with the addition of
1326// the ability to pass a context and additional request options.
1327//
1328// See ListClientDevicesAssociatedWithCoreDevice for details on how to use this API operation.
1329//
1330// The context must be non-nil and will be used for request cancellation. If
1331// the context is nil a panic will occur. In the future the SDK may create
1332// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1333// for more information on using Contexts.
1334func (c *GreengrassV2) ListClientDevicesAssociatedWithCoreDeviceWithContext(ctx aws.Context, input *ListClientDevicesAssociatedWithCoreDeviceInput, opts ...request.Option) (*ListClientDevicesAssociatedWithCoreDeviceOutput, error) {
1335	req, out := c.ListClientDevicesAssociatedWithCoreDeviceRequest(input)
1336	req.SetContext(ctx)
1337	req.ApplyOptions(opts...)
1338	return out, req.Send()
1339}
1340
1341// ListClientDevicesAssociatedWithCoreDevicePages iterates over the pages of a ListClientDevicesAssociatedWithCoreDevice operation,
1342// calling the "fn" function with the response data for each page. To stop
1343// iterating, return false from the fn function.
1344//
1345// See ListClientDevicesAssociatedWithCoreDevice method for more information on how to use this operation.
1346//
1347// Note: This operation can generate multiple requests to a service.
1348//
1349//    // Example iterating over at most 3 pages of a ListClientDevicesAssociatedWithCoreDevice operation.
1350//    pageNum := 0
1351//    err := client.ListClientDevicesAssociatedWithCoreDevicePages(params,
1352//        func(page *greengrassv2.ListClientDevicesAssociatedWithCoreDeviceOutput, lastPage bool) bool {
1353//            pageNum++
1354//            fmt.Println(page)
1355//            return pageNum <= 3
1356//        })
1357//
1358func (c *GreengrassV2) ListClientDevicesAssociatedWithCoreDevicePages(input *ListClientDevicesAssociatedWithCoreDeviceInput, fn func(*ListClientDevicesAssociatedWithCoreDeviceOutput, bool) bool) error {
1359	return c.ListClientDevicesAssociatedWithCoreDevicePagesWithContext(aws.BackgroundContext(), input, fn)
1360}
1361
1362// ListClientDevicesAssociatedWithCoreDevicePagesWithContext same as ListClientDevicesAssociatedWithCoreDevicePages except
1363// it takes a Context and allows setting request options on the pages.
1364//
1365// The context must be non-nil and will be used for request cancellation. If
1366// the context is nil a panic will occur. In the future the SDK may create
1367// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1368// for more information on using Contexts.
1369func (c *GreengrassV2) ListClientDevicesAssociatedWithCoreDevicePagesWithContext(ctx aws.Context, input *ListClientDevicesAssociatedWithCoreDeviceInput, fn func(*ListClientDevicesAssociatedWithCoreDeviceOutput, bool) bool, opts ...request.Option) error {
1370	p := request.Pagination{
1371		NewRequest: func() (*request.Request, error) {
1372			var inCpy *ListClientDevicesAssociatedWithCoreDeviceInput
1373			if input != nil {
1374				tmp := *input
1375				inCpy = &tmp
1376			}
1377			req, _ := c.ListClientDevicesAssociatedWithCoreDeviceRequest(inCpy)
1378			req.SetContext(ctx)
1379			req.ApplyOptions(opts...)
1380			return req, nil
1381		},
1382	}
1383
1384	for p.Next() {
1385		if !fn(p.Page().(*ListClientDevicesAssociatedWithCoreDeviceOutput), !p.HasNextPage()) {
1386			break
1387		}
1388	}
1389
1390	return p.Err()
1391}
1392
1393const opListComponentVersions = "ListComponentVersions"
1394
1395// ListComponentVersionsRequest generates a "aws/request.Request" representing the
1396// client's request for the ListComponentVersions operation. The "output" return
1397// value will be populated with the request's response once the request completes
1398// successfully.
1399//
1400// Use "Send" method on the returned Request to send the API call to the service.
1401// the "output" return value is not valid until after Send returns without error.
1402//
1403// See ListComponentVersions for more information on using the ListComponentVersions
1404// API call, and error handling.
1405//
1406// This method is useful when you want to inject custom logic or configuration
1407// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1408//
1409//
1410//    // Example sending a request using the ListComponentVersionsRequest method.
1411//    req, resp := client.ListComponentVersionsRequest(params)
1412//
1413//    err := req.Send()
1414//    if err == nil { // resp is now filled
1415//        fmt.Println(resp)
1416//    }
1417//
1418// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListComponentVersions
1419func (c *GreengrassV2) ListComponentVersionsRequest(input *ListComponentVersionsInput) (req *request.Request, output *ListComponentVersionsOutput) {
1420	op := &request.Operation{
1421		Name:       opListComponentVersions,
1422		HTTPMethod: "GET",
1423		HTTPPath:   "/greengrass/v2/components/{arn}/versions",
1424		Paginator: &request.Paginator{
1425			InputTokens:     []string{"nextToken"},
1426			OutputTokens:    []string{"nextToken"},
1427			LimitToken:      "maxResults",
1428			TruncationToken: "",
1429		},
1430	}
1431
1432	if input == nil {
1433		input = &ListComponentVersionsInput{}
1434	}
1435
1436	output = &ListComponentVersionsOutput{}
1437	req = c.newRequest(op, input, output)
1438	return
1439}
1440
1441// ListComponentVersions API operation for AWS IoT Greengrass V2.
1442//
1443// Retrieves a paginated list of all versions for a component. Greater versions
1444// are listed first.
1445//
1446// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1447// with awserr.Error's Code and Message methods to get detailed information about
1448// the error.
1449//
1450// See the AWS API reference guide for AWS IoT Greengrass V2's
1451// API operation ListComponentVersions for usage and error information.
1452//
1453// Returned Error Types:
1454//   * ValidationException
1455//   The request isn't valid. This can occur if your request contains malformed
1456//   JSON or unsupported characters.
1457//
1458//   * AccessDeniedException
1459//   You don't have permission to perform the action.
1460//
1461//   * ResourceNotFoundException
1462//   The requested resource can't be found.
1463//
1464//   * ThrottlingException
1465//   Your request exceeded a request rate quota. For example, you might have exceeded
1466//   the amount of times that you can retrieve device or deployment status per
1467//   second.
1468//
1469//   * InternalServerException
1470//   IoT Greengrass can't process your request right now. Try again later.
1471//
1472// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListComponentVersions
1473func (c *GreengrassV2) ListComponentVersions(input *ListComponentVersionsInput) (*ListComponentVersionsOutput, error) {
1474	req, out := c.ListComponentVersionsRequest(input)
1475	return out, req.Send()
1476}
1477
1478// ListComponentVersionsWithContext is the same as ListComponentVersions with the addition of
1479// the ability to pass a context and additional request options.
1480//
1481// See ListComponentVersions for details on how to use this API operation.
1482//
1483// The context must be non-nil and will be used for request cancellation. If
1484// the context is nil a panic will occur. In the future the SDK may create
1485// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1486// for more information on using Contexts.
1487func (c *GreengrassV2) ListComponentVersionsWithContext(ctx aws.Context, input *ListComponentVersionsInput, opts ...request.Option) (*ListComponentVersionsOutput, error) {
1488	req, out := c.ListComponentVersionsRequest(input)
1489	req.SetContext(ctx)
1490	req.ApplyOptions(opts...)
1491	return out, req.Send()
1492}
1493
1494// ListComponentVersionsPages iterates over the pages of a ListComponentVersions operation,
1495// calling the "fn" function with the response data for each page. To stop
1496// iterating, return false from the fn function.
1497//
1498// See ListComponentVersions method for more information on how to use this operation.
1499//
1500// Note: This operation can generate multiple requests to a service.
1501//
1502//    // Example iterating over at most 3 pages of a ListComponentVersions operation.
1503//    pageNum := 0
1504//    err := client.ListComponentVersionsPages(params,
1505//        func(page *greengrassv2.ListComponentVersionsOutput, lastPage bool) bool {
1506//            pageNum++
1507//            fmt.Println(page)
1508//            return pageNum <= 3
1509//        })
1510//
1511func (c *GreengrassV2) ListComponentVersionsPages(input *ListComponentVersionsInput, fn func(*ListComponentVersionsOutput, bool) bool) error {
1512	return c.ListComponentVersionsPagesWithContext(aws.BackgroundContext(), input, fn)
1513}
1514
1515// ListComponentVersionsPagesWithContext same as ListComponentVersionsPages except
1516// it takes a Context and allows setting request options on the pages.
1517//
1518// The context must be non-nil and will be used for request cancellation. If
1519// the context is nil a panic will occur. In the future the SDK may create
1520// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1521// for more information on using Contexts.
1522func (c *GreengrassV2) ListComponentVersionsPagesWithContext(ctx aws.Context, input *ListComponentVersionsInput, fn func(*ListComponentVersionsOutput, bool) bool, opts ...request.Option) error {
1523	p := request.Pagination{
1524		NewRequest: func() (*request.Request, error) {
1525			var inCpy *ListComponentVersionsInput
1526			if input != nil {
1527				tmp := *input
1528				inCpy = &tmp
1529			}
1530			req, _ := c.ListComponentVersionsRequest(inCpy)
1531			req.SetContext(ctx)
1532			req.ApplyOptions(opts...)
1533			return req, nil
1534		},
1535	}
1536
1537	for p.Next() {
1538		if !fn(p.Page().(*ListComponentVersionsOutput), !p.HasNextPage()) {
1539			break
1540		}
1541	}
1542
1543	return p.Err()
1544}
1545
1546const opListComponents = "ListComponents"
1547
1548// ListComponentsRequest generates a "aws/request.Request" representing the
1549// client's request for the ListComponents operation. The "output" return
1550// value will be populated with the request's response once the request completes
1551// successfully.
1552//
1553// Use "Send" method on the returned Request to send the API call to the service.
1554// the "output" return value is not valid until after Send returns without error.
1555//
1556// See ListComponents for more information on using the ListComponents
1557// API call, and error handling.
1558//
1559// This method is useful when you want to inject custom logic or configuration
1560// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1561//
1562//
1563//    // Example sending a request using the ListComponentsRequest method.
1564//    req, resp := client.ListComponentsRequest(params)
1565//
1566//    err := req.Send()
1567//    if err == nil { // resp is now filled
1568//        fmt.Println(resp)
1569//    }
1570//
1571// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListComponents
1572func (c *GreengrassV2) ListComponentsRequest(input *ListComponentsInput) (req *request.Request, output *ListComponentsOutput) {
1573	op := &request.Operation{
1574		Name:       opListComponents,
1575		HTTPMethod: "GET",
1576		HTTPPath:   "/greengrass/v2/components",
1577		Paginator: &request.Paginator{
1578			InputTokens:     []string{"nextToken"},
1579			OutputTokens:    []string{"nextToken"},
1580			LimitToken:      "maxResults",
1581			TruncationToken: "",
1582		},
1583	}
1584
1585	if input == nil {
1586		input = &ListComponentsInput{}
1587	}
1588
1589	output = &ListComponentsOutput{}
1590	req = c.newRequest(op, input, output)
1591	return
1592}
1593
1594// ListComponents API operation for AWS IoT Greengrass V2.
1595//
1596// Retrieves a paginated list of component summaries. This list includes components
1597// that you have permission to view.
1598//
1599// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1600// with awserr.Error's Code and Message methods to get detailed information about
1601// the error.
1602//
1603// See the AWS API reference guide for AWS IoT Greengrass V2's
1604// API operation ListComponents for usage and error information.
1605//
1606// Returned Error Types:
1607//   * ValidationException
1608//   The request isn't valid. This can occur if your request contains malformed
1609//   JSON or unsupported characters.
1610//
1611//   * AccessDeniedException
1612//   You don't have permission to perform the action.
1613//
1614//   * ThrottlingException
1615//   Your request exceeded a request rate quota. For example, you might have exceeded
1616//   the amount of times that you can retrieve device or deployment status per
1617//   second.
1618//
1619//   * InternalServerException
1620//   IoT Greengrass can't process your request right now. Try again later.
1621//
1622// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListComponents
1623func (c *GreengrassV2) ListComponents(input *ListComponentsInput) (*ListComponentsOutput, error) {
1624	req, out := c.ListComponentsRequest(input)
1625	return out, req.Send()
1626}
1627
1628// ListComponentsWithContext is the same as ListComponents with the addition of
1629// the ability to pass a context and additional request options.
1630//
1631// See ListComponents for details on how to use this API operation.
1632//
1633// The context must be non-nil and will be used for request cancellation. If
1634// the context is nil a panic will occur. In the future the SDK may create
1635// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1636// for more information on using Contexts.
1637func (c *GreengrassV2) ListComponentsWithContext(ctx aws.Context, input *ListComponentsInput, opts ...request.Option) (*ListComponentsOutput, error) {
1638	req, out := c.ListComponentsRequest(input)
1639	req.SetContext(ctx)
1640	req.ApplyOptions(opts...)
1641	return out, req.Send()
1642}
1643
1644// ListComponentsPages iterates over the pages of a ListComponents operation,
1645// calling the "fn" function with the response data for each page. To stop
1646// iterating, return false from the fn function.
1647//
1648// See ListComponents method for more information on how to use this operation.
1649//
1650// Note: This operation can generate multiple requests to a service.
1651//
1652//    // Example iterating over at most 3 pages of a ListComponents operation.
1653//    pageNum := 0
1654//    err := client.ListComponentsPages(params,
1655//        func(page *greengrassv2.ListComponentsOutput, lastPage bool) bool {
1656//            pageNum++
1657//            fmt.Println(page)
1658//            return pageNum <= 3
1659//        })
1660//
1661func (c *GreengrassV2) ListComponentsPages(input *ListComponentsInput, fn func(*ListComponentsOutput, bool) bool) error {
1662	return c.ListComponentsPagesWithContext(aws.BackgroundContext(), input, fn)
1663}
1664
1665// ListComponentsPagesWithContext same as ListComponentsPages except
1666// it takes a Context and allows setting request options on the pages.
1667//
1668// The context must be non-nil and will be used for request cancellation. If
1669// the context is nil a panic will occur. In the future the SDK may create
1670// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1671// for more information on using Contexts.
1672func (c *GreengrassV2) ListComponentsPagesWithContext(ctx aws.Context, input *ListComponentsInput, fn func(*ListComponentsOutput, bool) bool, opts ...request.Option) error {
1673	p := request.Pagination{
1674		NewRequest: func() (*request.Request, error) {
1675			var inCpy *ListComponentsInput
1676			if input != nil {
1677				tmp := *input
1678				inCpy = &tmp
1679			}
1680			req, _ := c.ListComponentsRequest(inCpy)
1681			req.SetContext(ctx)
1682			req.ApplyOptions(opts...)
1683			return req, nil
1684		},
1685	}
1686
1687	for p.Next() {
1688		if !fn(p.Page().(*ListComponentsOutput), !p.HasNextPage()) {
1689			break
1690		}
1691	}
1692
1693	return p.Err()
1694}
1695
1696const opListCoreDevices = "ListCoreDevices"
1697
1698// ListCoreDevicesRequest generates a "aws/request.Request" representing the
1699// client's request for the ListCoreDevices operation. The "output" return
1700// value will be populated with the request's response once the request completes
1701// successfully.
1702//
1703// Use "Send" method on the returned Request to send the API call to the service.
1704// the "output" return value is not valid until after Send returns without error.
1705//
1706// See ListCoreDevices for more information on using the ListCoreDevices
1707// API call, and error handling.
1708//
1709// This method is useful when you want to inject custom logic or configuration
1710// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1711//
1712//
1713//    // Example sending a request using the ListCoreDevicesRequest method.
1714//    req, resp := client.ListCoreDevicesRequest(params)
1715//
1716//    err := req.Send()
1717//    if err == nil { // resp is now filled
1718//        fmt.Println(resp)
1719//    }
1720//
1721// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListCoreDevices
1722func (c *GreengrassV2) ListCoreDevicesRequest(input *ListCoreDevicesInput) (req *request.Request, output *ListCoreDevicesOutput) {
1723	op := &request.Operation{
1724		Name:       opListCoreDevices,
1725		HTTPMethod: "GET",
1726		HTTPPath:   "/greengrass/v2/coreDevices",
1727		Paginator: &request.Paginator{
1728			InputTokens:     []string{"nextToken"},
1729			OutputTokens:    []string{"nextToken"},
1730			LimitToken:      "maxResults",
1731			TruncationToken: "",
1732		},
1733	}
1734
1735	if input == nil {
1736		input = &ListCoreDevicesInput{}
1737	}
1738
1739	output = &ListCoreDevicesOutput{}
1740	req = c.newRequest(op, input, output)
1741	return
1742}
1743
1744// ListCoreDevices API operation for AWS IoT Greengrass V2.
1745//
1746// Retrieves a paginated list of Greengrass core devices.
1747//
1748// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1749// with awserr.Error's Code and Message methods to get detailed information about
1750// the error.
1751//
1752// See the AWS API reference guide for AWS IoT Greengrass V2's
1753// API operation ListCoreDevices for usage and error information.
1754//
1755// Returned Error Types:
1756//   * ValidationException
1757//   The request isn't valid. This can occur if your request contains malformed
1758//   JSON or unsupported characters.
1759//
1760//   * AccessDeniedException
1761//   You don't have permission to perform the action.
1762//
1763//   * InternalServerException
1764//   IoT Greengrass can't process your request right now. Try again later.
1765//
1766//   * ThrottlingException
1767//   Your request exceeded a request rate quota. For example, you might have exceeded
1768//   the amount of times that you can retrieve device or deployment status per
1769//   second.
1770//
1771// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListCoreDevices
1772func (c *GreengrassV2) ListCoreDevices(input *ListCoreDevicesInput) (*ListCoreDevicesOutput, error) {
1773	req, out := c.ListCoreDevicesRequest(input)
1774	return out, req.Send()
1775}
1776
1777// ListCoreDevicesWithContext is the same as ListCoreDevices with the addition of
1778// the ability to pass a context and additional request options.
1779//
1780// See ListCoreDevices for details on how to use this API operation.
1781//
1782// The context must be non-nil and will be used for request cancellation. If
1783// the context is nil a panic will occur. In the future the SDK may create
1784// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1785// for more information on using Contexts.
1786func (c *GreengrassV2) ListCoreDevicesWithContext(ctx aws.Context, input *ListCoreDevicesInput, opts ...request.Option) (*ListCoreDevicesOutput, error) {
1787	req, out := c.ListCoreDevicesRequest(input)
1788	req.SetContext(ctx)
1789	req.ApplyOptions(opts...)
1790	return out, req.Send()
1791}
1792
1793// ListCoreDevicesPages iterates over the pages of a ListCoreDevices operation,
1794// calling the "fn" function with the response data for each page. To stop
1795// iterating, return false from the fn function.
1796//
1797// See ListCoreDevices method for more information on how to use this operation.
1798//
1799// Note: This operation can generate multiple requests to a service.
1800//
1801//    // Example iterating over at most 3 pages of a ListCoreDevices operation.
1802//    pageNum := 0
1803//    err := client.ListCoreDevicesPages(params,
1804//        func(page *greengrassv2.ListCoreDevicesOutput, lastPage bool) bool {
1805//            pageNum++
1806//            fmt.Println(page)
1807//            return pageNum <= 3
1808//        })
1809//
1810func (c *GreengrassV2) ListCoreDevicesPages(input *ListCoreDevicesInput, fn func(*ListCoreDevicesOutput, bool) bool) error {
1811	return c.ListCoreDevicesPagesWithContext(aws.BackgroundContext(), input, fn)
1812}
1813
1814// ListCoreDevicesPagesWithContext same as ListCoreDevicesPages except
1815// it takes a Context and allows setting request options on the pages.
1816//
1817// The context must be non-nil and will be used for request cancellation. If
1818// the context is nil a panic will occur. In the future the SDK may create
1819// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1820// for more information on using Contexts.
1821func (c *GreengrassV2) ListCoreDevicesPagesWithContext(ctx aws.Context, input *ListCoreDevicesInput, fn func(*ListCoreDevicesOutput, bool) bool, opts ...request.Option) error {
1822	p := request.Pagination{
1823		NewRequest: func() (*request.Request, error) {
1824			var inCpy *ListCoreDevicesInput
1825			if input != nil {
1826				tmp := *input
1827				inCpy = &tmp
1828			}
1829			req, _ := c.ListCoreDevicesRequest(inCpy)
1830			req.SetContext(ctx)
1831			req.ApplyOptions(opts...)
1832			return req, nil
1833		},
1834	}
1835
1836	for p.Next() {
1837		if !fn(p.Page().(*ListCoreDevicesOutput), !p.HasNextPage()) {
1838			break
1839		}
1840	}
1841
1842	return p.Err()
1843}
1844
1845const opListDeployments = "ListDeployments"
1846
1847// ListDeploymentsRequest generates a "aws/request.Request" representing the
1848// client's request for the ListDeployments operation. The "output" return
1849// value will be populated with the request's response once the request completes
1850// successfully.
1851//
1852// Use "Send" method on the returned Request to send the API call to the service.
1853// the "output" return value is not valid until after Send returns without error.
1854//
1855// See ListDeployments for more information on using the ListDeployments
1856// API call, and error handling.
1857//
1858// This method is useful when you want to inject custom logic or configuration
1859// into the SDK's request lifecycle. Such as custom headers, or retry logic.
1860//
1861//
1862//    // Example sending a request using the ListDeploymentsRequest method.
1863//    req, resp := client.ListDeploymentsRequest(params)
1864//
1865//    err := req.Send()
1866//    if err == nil { // resp is now filled
1867//        fmt.Println(resp)
1868//    }
1869//
1870// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListDeployments
1871func (c *GreengrassV2) ListDeploymentsRequest(input *ListDeploymentsInput) (req *request.Request, output *ListDeploymentsOutput) {
1872	op := &request.Operation{
1873		Name:       opListDeployments,
1874		HTTPMethod: "GET",
1875		HTTPPath:   "/greengrass/v2/deployments",
1876		Paginator: &request.Paginator{
1877			InputTokens:     []string{"nextToken"},
1878			OutputTokens:    []string{"nextToken"},
1879			LimitToken:      "maxResults",
1880			TruncationToken: "",
1881		},
1882	}
1883
1884	if input == nil {
1885		input = &ListDeploymentsInput{}
1886	}
1887
1888	output = &ListDeploymentsOutput{}
1889	req = c.newRequest(op, input, output)
1890	return
1891}
1892
1893// ListDeployments API operation for AWS IoT Greengrass V2.
1894//
1895// Retrieves a paginated list of deployments.
1896//
1897// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
1898// with awserr.Error's Code and Message methods to get detailed information about
1899// the error.
1900//
1901// See the AWS API reference guide for AWS IoT Greengrass V2's
1902// API operation ListDeployments for usage and error information.
1903//
1904// Returned Error Types:
1905//   * ValidationException
1906//   The request isn't valid. This can occur if your request contains malformed
1907//   JSON or unsupported characters.
1908//
1909//   * AccessDeniedException
1910//   You don't have permission to perform the action.
1911//
1912//   * InternalServerException
1913//   IoT Greengrass can't process your request right now. Try again later.
1914//
1915//   * ThrottlingException
1916//   Your request exceeded a request rate quota. For example, you might have exceeded
1917//   the amount of times that you can retrieve device or deployment status per
1918//   second.
1919//
1920// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListDeployments
1921func (c *GreengrassV2) ListDeployments(input *ListDeploymentsInput) (*ListDeploymentsOutput, error) {
1922	req, out := c.ListDeploymentsRequest(input)
1923	return out, req.Send()
1924}
1925
1926// ListDeploymentsWithContext is the same as ListDeployments with the addition of
1927// the ability to pass a context and additional request options.
1928//
1929// See ListDeployments for details on how to use this API operation.
1930//
1931// The context must be non-nil and will be used for request cancellation. If
1932// the context is nil a panic will occur. In the future the SDK may create
1933// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1934// for more information on using Contexts.
1935func (c *GreengrassV2) ListDeploymentsWithContext(ctx aws.Context, input *ListDeploymentsInput, opts ...request.Option) (*ListDeploymentsOutput, error) {
1936	req, out := c.ListDeploymentsRequest(input)
1937	req.SetContext(ctx)
1938	req.ApplyOptions(opts...)
1939	return out, req.Send()
1940}
1941
1942// ListDeploymentsPages iterates over the pages of a ListDeployments operation,
1943// calling the "fn" function with the response data for each page. To stop
1944// iterating, return false from the fn function.
1945//
1946// See ListDeployments method for more information on how to use this operation.
1947//
1948// Note: This operation can generate multiple requests to a service.
1949//
1950//    // Example iterating over at most 3 pages of a ListDeployments operation.
1951//    pageNum := 0
1952//    err := client.ListDeploymentsPages(params,
1953//        func(page *greengrassv2.ListDeploymentsOutput, lastPage bool) bool {
1954//            pageNum++
1955//            fmt.Println(page)
1956//            return pageNum <= 3
1957//        })
1958//
1959func (c *GreengrassV2) ListDeploymentsPages(input *ListDeploymentsInput, fn func(*ListDeploymentsOutput, bool) bool) error {
1960	return c.ListDeploymentsPagesWithContext(aws.BackgroundContext(), input, fn)
1961}
1962
1963// ListDeploymentsPagesWithContext same as ListDeploymentsPages except
1964// it takes a Context and allows setting request options on the pages.
1965//
1966// The context must be non-nil and will be used for request cancellation. If
1967// the context is nil a panic will occur. In the future the SDK may create
1968// sub-contexts for http.Requests. See https://golang.org/pkg/context/
1969// for more information on using Contexts.
1970func (c *GreengrassV2) ListDeploymentsPagesWithContext(ctx aws.Context, input *ListDeploymentsInput, fn func(*ListDeploymentsOutput, bool) bool, opts ...request.Option) error {
1971	p := request.Pagination{
1972		NewRequest: func() (*request.Request, error) {
1973			var inCpy *ListDeploymentsInput
1974			if input != nil {
1975				tmp := *input
1976				inCpy = &tmp
1977			}
1978			req, _ := c.ListDeploymentsRequest(inCpy)
1979			req.SetContext(ctx)
1980			req.ApplyOptions(opts...)
1981			return req, nil
1982		},
1983	}
1984
1985	for p.Next() {
1986		if !fn(p.Page().(*ListDeploymentsOutput), !p.HasNextPage()) {
1987			break
1988		}
1989	}
1990
1991	return p.Err()
1992}
1993
1994const opListEffectiveDeployments = "ListEffectiveDeployments"
1995
1996// ListEffectiveDeploymentsRequest generates a "aws/request.Request" representing the
1997// client's request for the ListEffectiveDeployments operation. The "output" return
1998// value will be populated with the request's response once the request completes
1999// successfully.
2000//
2001// Use "Send" method on the returned Request to send the API call to the service.
2002// the "output" return value is not valid until after Send returns without error.
2003//
2004// See ListEffectiveDeployments for more information on using the ListEffectiveDeployments
2005// API call, and error handling.
2006//
2007// This method is useful when you want to inject custom logic or configuration
2008// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2009//
2010//
2011//    // Example sending a request using the ListEffectiveDeploymentsRequest method.
2012//    req, resp := client.ListEffectiveDeploymentsRequest(params)
2013//
2014//    err := req.Send()
2015//    if err == nil { // resp is now filled
2016//        fmt.Println(resp)
2017//    }
2018//
2019// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListEffectiveDeployments
2020func (c *GreengrassV2) ListEffectiveDeploymentsRequest(input *ListEffectiveDeploymentsInput) (req *request.Request, output *ListEffectiveDeploymentsOutput) {
2021	op := &request.Operation{
2022		Name:       opListEffectiveDeployments,
2023		HTTPMethod: "GET",
2024		HTTPPath:   "/greengrass/v2/coreDevices/{coreDeviceThingName}/effectiveDeployments",
2025		Paginator: &request.Paginator{
2026			InputTokens:     []string{"nextToken"},
2027			OutputTokens:    []string{"nextToken"},
2028			LimitToken:      "maxResults",
2029			TruncationToken: "",
2030		},
2031	}
2032
2033	if input == nil {
2034		input = &ListEffectiveDeploymentsInput{}
2035	}
2036
2037	output = &ListEffectiveDeploymentsOutput{}
2038	req = c.newRequest(op, input, output)
2039	return
2040}
2041
2042// ListEffectiveDeployments API operation for AWS IoT Greengrass V2.
2043//
2044// Retrieves a paginated list of deployment jobs that IoT Greengrass sends to
2045// Greengrass core devices.
2046//
2047// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2048// with awserr.Error's Code and Message methods to get detailed information about
2049// the error.
2050//
2051// See the AWS API reference guide for AWS IoT Greengrass V2's
2052// API operation ListEffectiveDeployments for usage and error information.
2053//
2054// Returned Error Types:
2055//   * ValidationException
2056//   The request isn't valid. This can occur if your request contains malformed
2057//   JSON or unsupported characters.
2058//
2059//   * ResourceNotFoundException
2060//   The requested resource can't be found.
2061//
2062//   * AccessDeniedException
2063//   You don't have permission to perform the action.
2064//
2065//   * InternalServerException
2066//   IoT Greengrass can't process your request right now. Try again later.
2067//
2068//   * ThrottlingException
2069//   Your request exceeded a request rate quota. For example, you might have exceeded
2070//   the amount of times that you can retrieve device or deployment status per
2071//   second.
2072//
2073// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListEffectiveDeployments
2074func (c *GreengrassV2) ListEffectiveDeployments(input *ListEffectiveDeploymentsInput) (*ListEffectiveDeploymentsOutput, error) {
2075	req, out := c.ListEffectiveDeploymentsRequest(input)
2076	return out, req.Send()
2077}
2078
2079// ListEffectiveDeploymentsWithContext is the same as ListEffectiveDeployments with the addition of
2080// the ability to pass a context and additional request options.
2081//
2082// See ListEffectiveDeployments for details on how to use this API operation.
2083//
2084// The context must be non-nil and will be used for request cancellation. If
2085// the context is nil a panic will occur. In the future the SDK may create
2086// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2087// for more information on using Contexts.
2088func (c *GreengrassV2) ListEffectiveDeploymentsWithContext(ctx aws.Context, input *ListEffectiveDeploymentsInput, opts ...request.Option) (*ListEffectiveDeploymentsOutput, error) {
2089	req, out := c.ListEffectiveDeploymentsRequest(input)
2090	req.SetContext(ctx)
2091	req.ApplyOptions(opts...)
2092	return out, req.Send()
2093}
2094
2095// ListEffectiveDeploymentsPages iterates over the pages of a ListEffectiveDeployments operation,
2096// calling the "fn" function with the response data for each page. To stop
2097// iterating, return false from the fn function.
2098//
2099// See ListEffectiveDeployments method for more information on how to use this operation.
2100//
2101// Note: This operation can generate multiple requests to a service.
2102//
2103//    // Example iterating over at most 3 pages of a ListEffectiveDeployments operation.
2104//    pageNum := 0
2105//    err := client.ListEffectiveDeploymentsPages(params,
2106//        func(page *greengrassv2.ListEffectiveDeploymentsOutput, lastPage bool) bool {
2107//            pageNum++
2108//            fmt.Println(page)
2109//            return pageNum <= 3
2110//        })
2111//
2112func (c *GreengrassV2) ListEffectiveDeploymentsPages(input *ListEffectiveDeploymentsInput, fn func(*ListEffectiveDeploymentsOutput, bool) bool) error {
2113	return c.ListEffectiveDeploymentsPagesWithContext(aws.BackgroundContext(), input, fn)
2114}
2115
2116// ListEffectiveDeploymentsPagesWithContext same as ListEffectiveDeploymentsPages except
2117// it takes a Context and allows setting request options on the pages.
2118//
2119// The context must be non-nil and will be used for request cancellation. If
2120// the context is nil a panic will occur. In the future the SDK may create
2121// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2122// for more information on using Contexts.
2123func (c *GreengrassV2) ListEffectiveDeploymentsPagesWithContext(ctx aws.Context, input *ListEffectiveDeploymentsInput, fn func(*ListEffectiveDeploymentsOutput, bool) bool, opts ...request.Option) error {
2124	p := request.Pagination{
2125		NewRequest: func() (*request.Request, error) {
2126			var inCpy *ListEffectiveDeploymentsInput
2127			if input != nil {
2128				tmp := *input
2129				inCpy = &tmp
2130			}
2131			req, _ := c.ListEffectiveDeploymentsRequest(inCpy)
2132			req.SetContext(ctx)
2133			req.ApplyOptions(opts...)
2134			return req, nil
2135		},
2136	}
2137
2138	for p.Next() {
2139		if !fn(p.Page().(*ListEffectiveDeploymentsOutput), !p.HasNextPage()) {
2140			break
2141		}
2142	}
2143
2144	return p.Err()
2145}
2146
2147const opListInstalledComponents = "ListInstalledComponents"
2148
2149// ListInstalledComponentsRequest generates a "aws/request.Request" representing the
2150// client's request for the ListInstalledComponents operation. The "output" return
2151// value will be populated with the request's response once the request completes
2152// successfully.
2153//
2154// Use "Send" method on the returned Request to send the API call to the service.
2155// the "output" return value is not valid until after Send returns without error.
2156//
2157// See ListInstalledComponents for more information on using the ListInstalledComponents
2158// API call, and error handling.
2159//
2160// This method is useful when you want to inject custom logic or configuration
2161// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2162//
2163//
2164//    // Example sending a request using the ListInstalledComponentsRequest method.
2165//    req, resp := client.ListInstalledComponentsRequest(params)
2166//
2167//    err := req.Send()
2168//    if err == nil { // resp is now filled
2169//        fmt.Println(resp)
2170//    }
2171//
2172// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListInstalledComponents
2173func (c *GreengrassV2) ListInstalledComponentsRequest(input *ListInstalledComponentsInput) (req *request.Request, output *ListInstalledComponentsOutput) {
2174	op := &request.Operation{
2175		Name:       opListInstalledComponents,
2176		HTTPMethod: "GET",
2177		HTTPPath:   "/greengrass/v2/coreDevices/{coreDeviceThingName}/installedComponents",
2178		Paginator: &request.Paginator{
2179			InputTokens:     []string{"nextToken"},
2180			OutputTokens:    []string{"nextToken"},
2181			LimitToken:      "maxResults",
2182			TruncationToken: "",
2183		},
2184	}
2185
2186	if input == nil {
2187		input = &ListInstalledComponentsInput{}
2188	}
2189
2190	output = &ListInstalledComponentsOutput{}
2191	req = c.newRequest(op, input, output)
2192	return
2193}
2194
2195// ListInstalledComponents API operation for AWS IoT Greengrass V2.
2196//
2197// Retrieves a paginated list of the components that a Greengrass core device
2198// runs.
2199//
2200// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2201// with awserr.Error's Code and Message methods to get detailed information about
2202// the error.
2203//
2204// See the AWS API reference guide for AWS IoT Greengrass V2's
2205// API operation ListInstalledComponents for usage and error information.
2206//
2207// Returned Error Types:
2208//   * ValidationException
2209//   The request isn't valid. This can occur if your request contains malformed
2210//   JSON or unsupported characters.
2211//
2212//   * ResourceNotFoundException
2213//   The requested resource can't be found.
2214//
2215//   * AccessDeniedException
2216//   You don't have permission to perform the action.
2217//
2218//   * InternalServerException
2219//   IoT Greengrass can't process your request right now. Try again later.
2220//
2221//   * ThrottlingException
2222//   Your request exceeded a request rate quota. For example, you might have exceeded
2223//   the amount of times that you can retrieve device or deployment status per
2224//   second.
2225//
2226// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListInstalledComponents
2227func (c *GreengrassV2) ListInstalledComponents(input *ListInstalledComponentsInput) (*ListInstalledComponentsOutput, error) {
2228	req, out := c.ListInstalledComponentsRequest(input)
2229	return out, req.Send()
2230}
2231
2232// ListInstalledComponentsWithContext is the same as ListInstalledComponents with the addition of
2233// the ability to pass a context and additional request options.
2234//
2235// See ListInstalledComponents for details on how to use this API operation.
2236//
2237// The context must be non-nil and will be used for request cancellation. If
2238// the context is nil a panic will occur. In the future the SDK may create
2239// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2240// for more information on using Contexts.
2241func (c *GreengrassV2) ListInstalledComponentsWithContext(ctx aws.Context, input *ListInstalledComponentsInput, opts ...request.Option) (*ListInstalledComponentsOutput, error) {
2242	req, out := c.ListInstalledComponentsRequest(input)
2243	req.SetContext(ctx)
2244	req.ApplyOptions(opts...)
2245	return out, req.Send()
2246}
2247
2248// ListInstalledComponentsPages iterates over the pages of a ListInstalledComponents operation,
2249// calling the "fn" function with the response data for each page. To stop
2250// iterating, return false from the fn function.
2251//
2252// See ListInstalledComponents method for more information on how to use this operation.
2253//
2254// Note: This operation can generate multiple requests to a service.
2255//
2256//    // Example iterating over at most 3 pages of a ListInstalledComponents operation.
2257//    pageNum := 0
2258//    err := client.ListInstalledComponentsPages(params,
2259//        func(page *greengrassv2.ListInstalledComponentsOutput, lastPage bool) bool {
2260//            pageNum++
2261//            fmt.Println(page)
2262//            return pageNum <= 3
2263//        })
2264//
2265func (c *GreengrassV2) ListInstalledComponentsPages(input *ListInstalledComponentsInput, fn func(*ListInstalledComponentsOutput, bool) bool) error {
2266	return c.ListInstalledComponentsPagesWithContext(aws.BackgroundContext(), input, fn)
2267}
2268
2269// ListInstalledComponentsPagesWithContext same as ListInstalledComponentsPages except
2270// it takes a Context and allows setting request options on the pages.
2271//
2272// The context must be non-nil and will be used for request cancellation. If
2273// the context is nil a panic will occur. In the future the SDK may create
2274// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2275// for more information on using Contexts.
2276func (c *GreengrassV2) ListInstalledComponentsPagesWithContext(ctx aws.Context, input *ListInstalledComponentsInput, fn func(*ListInstalledComponentsOutput, bool) bool, opts ...request.Option) error {
2277	p := request.Pagination{
2278		NewRequest: func() (*request.Request, error) {
2279			var inCpy *ListInstalledComponentsInput
2280			if input != nil {
2281				tmp := *input
2282				inCpy = &tmp
2283			}
2284			req, _ := c.ListInstalledComponentsRequest(inCpy)
2285			req.SetContext(ctx)
2286			req.ApplyOptions(opts...)
2287			return req, nil
2288		},
2289	}
2290
2291	for p.Next() {
2292		if !fn(p.Page().(*ListInstalledComponentsOutput), !p.HasNextPage()) {
2293			break
2294		}
2295	}
2296
2297	return p.Err()
2298}
2299
2300const opListTagsForResource = "ListTagsForResource"
2301
2302// ListTagsForResourceRequest generates a "aws/request.Request" representing the
2303// client's request for the ListTagsForResource operation. The "output" return
2304// value will be populated with the request's response once the request completes
2305// successfully.
2306//
2307// Use "Send" method on the returned Request to send the API call to the service.
2308// the "output" return value is not valid until after Send returns without error.
2309//
2310// See ListTagsForResource for more information on using the ListTagsForResource
2311// API call, and error handling.
2312//
2313// This method is useful when you want to inject custom logic or configuration
2314// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2315//
2316//
2317//    // Example sending a request using the ListTagsForResourceRequest method.
2318//    req, resp := client.ListTagsForResourceRequest(params)
2319//
2320//    err := req.Send()
2321//    if err == nil { // resp is now filled
2322//        fmt.Println(resp)
2323//    }
2324//
2325// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListTagsForResource
2326func (c *GreengrassV2) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
2327	op := &request.Operation{
2328		Name:       opListTagsForResource,
2329		HTTPMethod: "GET",
2330		HTTPPath:   "/tags/{resourceArn}",
2331	}
2332
2333	if input == nil {
2334		input = &ListTagsForResourceInput{}
2335	}
2336
2337	output = &ListTagsForResourceOutput{}
2338	req = c.newRequest(op, input, output)
2339	return
2340}
2341
2342// ListTagsForResource API operation for AWS IoT Greengrass V2.
2343//
2344// Retrieves the list of tags for an IoT Greengrass resource.
2345//
2346// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2347// with awserr.Error's Code and Message methods to get detailed information about
2348// the error.
2349//
2350// See the AWS API reference guide for AWS IoT Greengrass V2's
2351// API operation ListTagsForResource for usage and error information.
2352//
2353// Returned Error Types:
2354//   * InternalServerException
2355//   IoT Greengrass can't process your request right now. Try again later.
2356//
2357//   * ValidationException
2358//   The request isn't valid. This can occur if your request contains malformed
2359//   JSON or unsupported characters.
2360//
2361//   * ResourceNotFoundException
2362//   The requested resource can't be found.
2363//
2364// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ListTagsForResource
2365func (c *GreengrassV2) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) {
2366	req, out := c.ListTagsForResourceRequest(input)
2367	return out, req.Send()
2368}
2369
2370// ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of
2371// the ability to pass a context and additional request options.
2372//
2373// See ListTagsForResource for details on how to use this API operation.
2374//
2375// The context must be non-nil and will be used for request cancellation. If
2376// the context is nil a panic will occur. In the future the SDK may create
2377// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2378// for more information on using Contexts.
2379func (c *GreengrassV2) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*ListTagsForResourceOutput, error) {
2380	req, out := c.ListTagsForResourceRequest(input)
2381	req.SetContext(ctx)
2382	req.ApplyOptions(opts...)
2383	return out, req.Send()
2384}
2385
2386const opResolveComponentCandidates = "ResolveComponentCandidates"
2387
2388// ResolveComponentCandidatesRequest generates a "aws/request.Request" representing the
2389// client's request for the ResolveComponentCandidates operation. The "output" return
2390// value will be populated with the request's response once the request completes
2391// successfully.
2392//
2393// Use "Send" method on the returned Request to send the API call to the service.
2394// the "output" return value is not valid until after Send returns without error.
2395//
2396// See ResolveComponentCandidates for more information on using the ResolveComponentCandidates
2397// API call, and error handling.
2398//
2399// This method is useful when you want to inject custom logic or configuration
2400// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2401//
2402//
2403//    // Example sending a request using the ResolveComponentCandidatesRequest method.
2404//    req, resp := client.ResolveComponentCandidatesRequest(params)
2405//
2406//    err := req.Send()
2407//    if err == nil { // resp is now filled
2408//        fmt.Println(resp)
2409//    }
2410//
2411// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ResolveComponentCandidates
2412func (c *GreengrassV2) ResolveComponentCandidatesRequest(input *ResolveComponentCandidatesInput) (req *request.Request, output *ResolveComponentCandidatesOutput) {
2413	op := &request.Operation{
2414		Name:       opResolveComponentCandidates,
2415		HTTPMethod: "POST",
2416		HTTPPath:   "/greengrass/v2/resolveComponentCandidates",
2417	}
2418
2419	if input == nil {
2420		input = &ResolveComponentCandidatesInput{}
2421	}
2422
2423	output = &ResolveComponentCandidatesOutput{}
2424	req = c.newRequest(op, input, output)
2425	return
2426}
2427
2428// ResolveComponentCandidates API operation for AWS IoT Greengrass V2.
2429//
2430// Retrieves a list of components that meet the component, version, and platform
2431// requirements of a deployment. Greengrass core devices call this operation
2432// when they receive a deployment to identify the components to install.
2433//
2434// This operation identifies components that meet all dependency requirements
2435// for a deployment. If the requirements conflict, then this operation returns
2436// an error and the deployment fails. For example, this occurs if component
2437// A requires version >2.0.0 and component B requires version <2.0.0 of a component
2438// dependency.
2439//
2440// When you specify the component candidates to resolve, IoT Greengrass compares
2441// each component's digest from the core device with the component's digest
2442// in the Amazon Web Services Cloud. If the digests don't match, then IoT Greengrass
2443// specifies to use the version from the Amazon Web Services Cloud.
2444//
2445// To use this operation, you must use the data plane API endpoint and authenticate
2446// with an IoT device certificate. For more information, see IoT Greengrass
2447// endpoints and quotas (https://docs.aws.amazon.com/general/latest/gr/greengrass.html).
2448//
2449// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2450// with awserr.Error's Code and Message methods to get detailed information about
2451// the error.
2452//
2453// See the AWS API reference guide for AWS IoT Greengrass V2's
2454// API operation ResolveComponentCandidates for usage and error information.
2455//
2456// Returned Error Types:
2457//   * ValidationException
2458//   The request isn't valid. This can occur if your request contains malformed
2459//   JSON or unsupported characters.
2460//
2461//   * AccessDeniedException
2462//   You don't have permission to perform the action.
2463//
2464//   * ResourceNotFoundException
2465//   The requested resource can't be found.
2466//
2467//   * ThrottlingException
2468//   Your request exceeded a request rate quota. For example, you might have exceeded
2469//   the amount of times that you can retrieve device or deployment status per
2470//   second.
2471//
2472//   * InternalServerException
2473//   IoT Greengrass can't process your request right now. Try again later.
2474//
2475//   * ConflictException
2476//   Your request has conflicting operations. This can occur if you're trying
2477//   to perform more than one operation on the same resource at the same time.
2478//
2479// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/ResolveComponentCandidates
2480func (c *GreengrassV2) ResolveComponentCandidates(input *ResolveComponentCandidatesInput) (*ResolveComponentCandidatesOutput, error) {
2481	req, out := c.ResolveComponentCandidatesRequest(input)
2482	return out, req.Send()
2483}
2484
2485// ResolveComponentCandidatesWithContext is the same as ResolveComponentCandidates with the addition of
2486// the ability to pass a context and additional request options.
2487//
2488// See ResolveComponentCandidates for details on how to use this API operation.
2489//
2490// The context must be non-nil and will be used for request cancellation. If
2491// the context is nil a panic will occur. In the future the SDK may create
2492// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2493// for more information on using Contexts.
2494func (c *GreengrassV2) ResolveComponentCandidatesWithContext(ctx aws.Context, input *ResolveComponentCandidatesInput, opts ...request.Option) (*ResolveComponentCandidatesOutput, error) {
2495	req, out := c.ResolveComponentCandidatesRequest(input)
2496	req.SetContext(ctx)
2497	req.ApplyOptions(opts...)
2498	return out, req.Send()
2499}
2500
2501const opTagResource = "TagResource"
2502
2503// TagResourceRequest generates a "aws/request.Request" representing the
2504// client's request for the TagResource operation. The "output" return
2505// value will be populated with the request's response once the request completes
2506// successfully.
2507//
2508// Use "Send" method on the returned Request to send the API call to the service.
2509// the "output" return value is not valid until after Send returns without error.
2510//
2511// See TagResource for more information on using the TagResource
2512// API call, and error handling.
2513//
2514// This method is useful when you want to inject custom logic or configuration
2515// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2516//
2517//
2518//    // Example sending a request using the TagResourceRequest method.
2519//    req, resp := client.TagResourceRequest(params)
2520//
2521//    err := req.Send()
2522//    if err == nil { // resp is now filled
2523//        fmt.Println(resp)
2524//    }
2525//
2526// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/TagResource
2527func (c *GreengrassV2) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
2528	op := &request.Operation{
2529		Name:       opTagResource,
2530		HTTPMethod: "POST",
2531		HTTPPath:   "/tags/{resourceArn}",
2532	}
2533
2534	if input == nil {
2535		input = &TagResourceInput{}
2536	}
2537
2538	output = &TagResourceOutput{}
2539	req = c.newRequest(op, input, output)
2540	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2541	return
2542}
2543
2544// TagResource API operation for AWS IoT Greengrass V2.
2545//
2546// Adds tags to an IoT Greengrass resource. If a tag already exists for the
2547// resource, this operation updates the tag's value.
2548//
2549// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2550// with awserr.Error's Code and Message methods to get detailed information about
2551// the error.
2552//
2553// See the AWS API reference guide for AWS IoT Greengrass V2's
2554// API operation TagResource for usage and error information.
2555//
2556// Returned Error Types:
2557//   * InternalServerException
2558//   IoT Greengrass can't process your request right now. Try again later.
2559//
2560//   * ValidationException
2561//   The request isn't valid. This can occur if your request contains malformed
2562//   JSON or unsupported characters.
2563//
2564//   * ResourceNotFoundException
2565//   The requested resource can't be found.
2566//
2567// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/TagResource
2568func (c *GreengrassV2) TagResource(input *TagResourceInput) (*TagResourceOutput, error) {
2569	req, out := c.TagResourceRequest(input)
2570	return out, req.Send()
2571}
2572
2573// TagResourceWithContext is the same as TagResource with the addition of
2574// the ability to pass a context and additional request options.
2575//
2576// See TagResource for details on how to use this API operation.
2577//
2578// The context must be non-nil and will be used for request cancellation. If
2579// the context is nil a panic will occur. In the future the SDK may create
2580// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2581// for more information on using Contexts.
2582func (c *GreengrassV2) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) {
2583	req, out := c.TagResourceRequest(input)
2584	req.SetContext(ctx)
2585	req.ApplyOptions(opts...)
2586	return out, req.Send()
2587}
2588
2589const opUntagResource = "UntagResource"
2590
2591// UntagResourceRequest generates a "aws/request.Request" representing the
2592// client's request for the UntagResource operation. The "output" return
2593// value will be populated with the request's response once the request completes
2594// successfully.
2595//
2596// Use "Send" method on the returned Request to send the API call to the service.
2597// the "output" return value is not valid until after Send returns without error.
2598//
2599// See UntagResource for more information on using the UntagResource
2600// API call, and error handling.
2601//
2602// This method is useful when you want to inject custom logic or configuration
2603// into the SDK's request lifecycle. Such as custom headers, or retry logic.
2604//
2605//
2606//    // Example sending a request using the UntagResourceRequest method.
2607//    req, resp := client.UntagResourceRequest(params)
2608//
2609//    err := req.Send()
2610//    if err == nil { // resp is now filled
2611//        fmt.Println(resp)
2612//    }
2613//
2614// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/UntagResource
2615func (c *GreengrassV2) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
2616	op := &request.Operation{
2617		Name:       opUntagResource,
2618		HTTPMethod: "DELETE",
2619		HTTPPath:   "/tags/{resourceArn}",
2620	}
2621
2622	if input == nil {
2623		input = &UntagResourceInput{}
2624	}
2625
2626	output = &UntagResourceOutput{}
2627	req = c.newRequest(op, input, output)
2628	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
2629	return
2630}
2631
2632// UntagResource API operation for AWS IoT Greengrass V2.
2633//
2634// Removes a tag from an IoT Greengrass resource.
2635//
2636// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
2637// with awserr.Error's Code and Message methods to get detailed information about
2638// the error.
2639//
2640// See the AWS API reference guide for AWS IoT Greengrass V2's
2641// API operation UntagResource for usage and error information.
2642//
2643// Returned Error Types:
2644//   * InternalServerException
2645//   IoT Greengrass can't process your request right now. Try again later.
2646//
2647//   * ValidationException
2648//   The request isn't valid. This can occur if your request contains malformed
2649//   JSON or unsupported characters.
2650//
2651//   * ResourceNotFoundException
2652//   The requested resource can't be found.
2653//
2654// See also, https://docs.aws.amazon.com/goto/WebAPI/greengrassv2-2020-11-30/UntagResource
2655func (c *GreengrassV2) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) {
2656	req, out := c.UntagResourceRequest(input)
2657	return out, req.Send()
2658}
2659
2660// UntagResourceWithContext is the same as UntagResource with the addition of
2661// the ability to pass a context and additional request options.
2662//
2663// See UntagResource for details on how to use this API operation.
2664//
2665// The context must be non-nil and will be used for request cancellation. If
2666// the context is nil a panic will occur. In the future the SDK may create
2667// sub-contexts for http.Requests. See https://golang.org/pkg/context/
2668// for more information on using Contexts.
2669func (c *GreengrassV2) UntagResourceWithContext(ctx aws.Context, input *UntagResourceInput, opts ...request.Option) (*UntagResourceOutput, error) {
2670	req, out := c.UntagResourceRequest(input)
2671	req.SetContext(ctx)
2672	req.ApplyOptions(opts...)
2673	return out, req.Send()
2674}
2675
2676// You don't have permission to perform the action.
2677type AccessDeniedException struct {
2678	_            struct{}                  `type:"structure"`
2679	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
2680
2681	Message_ *string `locationName:"message" type:"string"`
2682}
2683
2684// String returns the string representation
2685func (s AccessDeniedException) String() string {
2686	return awsutil.Prettify(s)
2687}
2688
2689// GoString returns the string representation
2690func (s AccessDeniedException) GoString() string {
2691	return s.String()
2692}
2693
2694func newErrorAccessDeniedException(v protocol.ResponseMetadata) error {
2695	return &AccessDeniedException{
2696		RespMetadata: v,
2697	}
2698}
2699
2700// Code returns the exception type name.
2701func (s *AccessDeniedException) Code() string {
2702	return "AccessDeniedException"
2703}
2704
2705// Message returns the exception's message.
2706func (s *AccessDeniedException) Message() string {
2707	if s.Message_ != nil {
2708		return *s.Message_
2709	}
2710	return ""
2711}
2712
2713// OrigErr always returns nil, satisfies awserr.Error interface.
2714func (s *AccessDeniedException) OrigErr() error {
2715	return nil
2716}
2717
2718func (s *AccessDeniedException) Error() string {
2719	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
2720}
2721
2722// Status code returns the HTTP status code for the request's response error.
2723func (s *AccessDeniedException) StatusCode() int {
2724	return s.RespMetadata.StatusCode
2725}
2726
2727// RequestID returns the service's response RequestID for request.
2728func (s *AccessDeniedException) RequestID() string {
2729	return s.RespMetadata.RequestID
2730}
2731
2732// Contains a request to associate a client device with a core device. The BatchAssociateClientDeviceWithCoreDevice
2733// (https://docs.aws.amazon.com/greengrass/v2/APIReference/API_BatchAssociateClientDeviceWithCoreDevice.html)
2734// operation consumes a list of these requests.
2735type AssociateClientDeviceWithCoreDeviceEntry struct {
2736	_ struct{} `type:"structure"`
2737
2738	// The name of the IoT thing that represents the client device to associate.
2739	//
2740	// ThingName is a required field
2741	ThingName *string `locationName:"thingName" min:"1" type:"string" required:"true"`
2742}
2743
2744// String returns the string representation
2745func (s AssociateClientDeviceWithCoreDeviceEntry) String() string {
2746	return awsutil.Prettify(s)
2747}
2748
2749// GoString returns the string representation
2750func (s AssociateClientDeviceWithCoreDeviceEntry) GoString() string {
2751	return s.String()
2752}
2753
2754// Validate inspects the fields of the type to determine if they are valid.
2755func (s *AssociateClientDeviceWithCoreDeviceEntry) Validate() error {
2756	invalidParams := request.ErrInvalidParams{Context: "AssociateClientDeviceWithCoreDeviceEntry"}
2757	if s.ThingName == nil {
2758		invalidParams.Add(request.NewErrParamRequired("ThingName"))
2759	}
2760	if s.ThingName != nil && len(*s.ThingName) < 1 {
2761		invalidParams.Add(request.NewErrParamMinLen("ThingName", 1))
2762	}
2763
2764	if invalidParams.Len() > 0 {
2765		return invalidParams
2766	}
2767	return nil
2768}
2769
2770// SetThingName sets the ThingName field's value.
2771func (s *AssociateClientDeviceWithCoreDeviceEntry) SetThingName(v string) *AssociateClientDeviceWithCoreDeviceEntry {
2772	s.ThingName = &v
2773	return s
2774}
2775
2776// Contains an error that occurs from a request to associate a client device
2777// with a core device. The BatchAssociateClientDeviceWithCoreDevice (https://docs.aws.amazon.com/greengrass/v2/APIReference/API_BatchAssociateClientDeviceWithCoreDevice.html)
2778// operation returns a list of these errors.
2779type AssociateClientDeviceWithCoreDeviceErrorEntry struct {
2780	_ struct{} `type:"structure"`
2781
2782	// The error code for the request.
2783	Code *string `locationName:"code" min:"1" type:"string"`
2784
2785	// A message that provides additional information about the error.
2786	Message *string `locationName:"message" min:"1" type:"string"`
2787
2788	// The name of the IoT thing whose associate request failed.
2789	ThingName *string `locationName:"thingName" min:"1" type:"string"`
2790}
2791
2792// String returns the string representation
2793func (s AssociateClientDeviceWithCoreDeviceErrorEntry) String() string {
2794	return awsutil.Prettify(s)
2795}
2796
2797// GoString returns the string representation
2798func (s AssociateClientDeviceWithCoreDeviceErrorEntry) GoString() string {
2799	return s.String()
2800}
2801
2802// SetCode sets the Code field's value.
2803func (s *AssociateClientDeviceWithCoreDeviceErrorEntry) SetCode(v string) *AssociateClientDeviceWithCoreDeviceErrorEntry {
2804	s.Code = &v
2805	return s
2806}
2807
2808// SetMessage sets the Message field's value.
2809func (s *AssociateClientDeviceWithCoreDeviceErrorEntry) SetMessage(v string) *AssociateClientDeviceWithCoreDeviceErrorEntry {
2810	s.Message = &v
2811	return s
2812}
2813
2814// SetThingName sets the ThingName field's value.
2815func (s *AssociateClientDeviceWithCoreDeviceErrorEntry) SetThingName(v string) *AssociateClientDeviceWithCoreDeviceErrorEntry {
2816	s.ThingName = &v
2817	return s
2818}
2819
2820// Contains information about a client device that is associated to a core device
2821// for cloud discovery.
2822type AssociatedClientDevice struct {
2823	_ struct{} `type:"structure"`
2824
2825	// The time that the client device was associated, expressed in ISO 8601 format.
2826	AssociationTimestamp *time.Time `locationName:"associationTimestamp" type:"timestamp"`
2827
2828	// The name of the IoT thing that represents the associated client device.
2829	ThingName *string `locationName:"thingName" min:"1" type:"string"`
2830}
2831
2832// String returns the string representation
2833func (s AssociatedClientDevice) String() string {
2834	return awsutil.Prettify(s)
2835}
2836
2837// GoString returns the string representation
2838func (s AssociatedClientDevice) GoString() string {
2839	return s.String()
2840}
2841
2842// SetAssociationTimestamp sets the AssociationTimestamp field's value.
2843func (s *AssociatedClientDevice) SetAssociationTimestamp(v time.Time) *AssociatedClientDevice {
2844	s.AssociationTimestamp = &v
2845	return s
2846}
2847
2848// SetThingName sets the ThingName field's value.
2849func (s *AssociatedClientDevice) SetThingName(v string) *AssociatedClientDevice {
2850	s.ThingName = &v
2851	return s
2852}
2853
2854type BatchAssociateClientDeviceWithCoreDeviceInput struct {
2855	_ struct{} `type:"structure"`
2856
2857	// The name of the core device. This is also the name of the IoT thing.
2858	//
2859	// CoreDeviceThingName is a required field
2860	CoreDeviceThingName *string `location:"uri" locationName:"coreDeviceThingName" min:"1" type:"string" required:"true"`
2861
2862	// The list of client devices to associate.
2863	Entries []*AssociateClientDeviceWithCoreDeviceEntry `locationName:"entries" min:"1" type:"list"`
2864}
2865
2866// String returns the string representation
2867func (s BatchAssociateClientDeviceWithCoreDeviceInput) String() string {
2868	return awsutil.Prettify(s)
2869}
2870
2871// GoString returns the string representation
2872func (s BatchAssociateClientDeviceWithCoreDeviceInput) GoString() string {
2873	return s.String()
2874}
2875
2876// Validate inspects the fields of the type to determine if they are valid.
2877func (s *BatchAssociateClientDeviceWithCoreDeviceInput) Validate() error {
2878	invalidParams := request.ErrInvalidParams{Context: "BatchAssociateClientDeviceWithCoreDeviceInput"}
2879	if s.CoreDeviceThingName == nil {
2880		invalidParams.Add(request.NewErrParamRequired("CoreDeviceThingName"))
2881	}
2882	if s.CoreDeviceThingName != nil && len(*s.CoreDeviceThingName) < 1 {
2883		invalidParams.Add(request.NewErrParamMinLen("CoreDeviceThingName", 1))
2884	}
2885	if s.Entries != nil && len(s.Entries) < 1 {
2886		invalidParams.Add(request.NewErrParamMinLen("Entries", 1))
2887	}
2888	if s.Entries != nil {
2889		for i, v := range s.Entries {
2890			if v == nil {
2891				continue
2892			}
2893			if err := v.Validate(); err != nil {
2894				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Entries", i), err.(request.ErrInvalidParams))
2895			}
2896		}
2897	}
2898
2899	if invalidParams.Len() > 0 {
2900		return invalidParams
2901	}
2902	return nil
2903}
2904
2905// SetCoreDeviceThingName sets the CoreDeviceThingName field's value.
2906func (s *BatchAssociateClientDeviceWithCoreDeviceInput) SetCoreDeviceThingName(v string) *BatchAssociateClientDeviceWithCoreDeviceInput {
2907	s.CoreDeviceThingName = &v
2908	return s
2909}
2910
2911// SetEntries sets the Entries field's value.
2912func (s *BatchAssociateClientDeviceWithCoreDeviceInput) SetEntries(v []*AssociateClientDeviceWithCoreDeviceEntry) *BatchAssociateClientDeviceWithCoreDeviceInput {
2913	s.Entries = v
2914	return s
2915}
2916
2917type BatchAssociateClientDeviceWithCoreDeviceOutput struct {
2918	_ struct{} `type:"structure"`
2919
2920	// The list of any errors for the entries in the request. Each error entry contains
2921	// the name of the IoT thing that failed to associate.
2922	ErrorEntries []*AssociateClientDeviceWithCoreDeviceErrorEntry `locationName:"errorEntries" min:"1" type:"list"`
2923}
2924
2925// String returns the string representation
2926func (s BatchAssociateClientDeviceWithCoreDeviceOutput) String() string {
2927	return awsutil.Prettify(s)
2928}
2929
2930// GoString returns the string representation
2931func (s BatchAssociateClientDeviceWithCoreDeviceOutput) GoString() string {
2932	return s.String()
2933}
2934
2935// SetErrorEntries sets the ErrorEntries field's value.
2936func (s *BatchAssociateClientDeviceWithCoreDeviceOutput) SetErrorEntries(v []*AssociateClientDeviceWithCoreDeviceErrorEntry) *BatchAssociateClientDeviceWithCoreDeviceOutput {
2937	s.ErrorEntries = v
2938	return s
2939}
2940
2941type BatchDisassociateClientDeviceFromCoreDeviceInput struct {
2942	_ struct{} `type:"structure"`
2943
2944	// The name of the core device. This is also the name of the IoT thing.
2945	//
2946	// CoreDeviceThingName is a required field
2947	CoreDeviceThingName *string `location:"uri" locationName:"coreDeviceThingName" min:"1" type:"string" required:"true"`
2948
2949	// The list of client devices to disassociate.
2950	Entries []*DisassociateClientDeviceFromCoreDeviceEntry `locationName:"entries" min:"1" type:"list"`
2951}
2952
2953// String returns the string representation
2954func (s BatchDisassociateClientDeviceFromCoreDeviceInput) String() string {
2955	return awsutil.Prettify(s)
2956}
2957
2958// GoString returns the string representation
2959func (s BatchDisassociateClientDeviceFromCoreDeviceInput) GoString() string {
2960	return s.String()
2961}
2962
2963// Validate inspects the fields of the type to determine if they are valid.
2964func (s *BatchDisassociateClientDeviceFromCoreDeviceInput) Validate() error {
2965	invalidParams := request.ErrInvalidParams{Context: "BatchDisassociateClientDeviceFromCoreDeviceInput"}
2966	if s.CoreDeviceThingName == nil {
2967		invalidParams.Add(request.NewErrParamRequired("CoreDeviceThingName"))
2968	}
2969	if s.CoreDeviceThingName != nil && len(*s.CoreDeviceThingName) < 1 {
2970		invalidParams.Add(request.NewErrParamMinLen("CoreDeviceThingName", 1))
2971	}
2972	if s.Entries != nil && len(s.Entries) < 1 {
2973		invalidParams.Add(request.NewErrParamMinLen("Entries", 1))
2974	}
2975	if s.Entries != nil {
2976		for i, v := range s.Entries {
2977			if v == nil {
2978				continue
2979			}
2980			if err := v.Validate(); err != nil {
2981				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Entries", i), err.(request.ErrInvalidParams))
2982			}
2983		}
2984	}
2985
2986	if invalidParams.Len() > 0 {
2987		return invalidParams
2988	}
2989	return nil
2990}
2991
2992// SetCoreDeviceThingName sets the CoreDeviceThingName field's value.
2993func (s *BatchDisassociateClientDeviceFromCoreDeviceInput) SetCoreDeviceThingName(v string) *BatchDisassociateClientDeviceFromCoreDeviceInput {
2994	s.CoreDeviceThingName = &v
2995	return s
2996}
2997
2998// SetEntries sets the Entries field's value.
2999func (s *BatchDisassociateClientDeviceFromCoreDeviceInput) SetEntries(v []*DisassociateClientDeviceFromCoreDeviceEntry) *BatchDisassociateClientDeviceFromCoreDeviceInput {
3000	s.Entries = v
3001	return s
3002}
3003
3004type BatchDisassociateClientDeviceFromCoreDeviceOutput struct {
3005	_ struct{} `type:"structure"`
3006
3007	// The list of errors (if any) for the entries in the request. Each error entry
3008	// contains the name of the IoT thing that failed to disassociate.
3009	ErrorEntries []*DisassociateClientDeviceFromCoreDeviceErrorEntry `locationName:"errorEntries" min:"1" type:"list"`
3010}
3011
3012// String returns the string representation
3013func (s BatchDisassociateClientDeviceFromCoreDeviceOutput) String() string {
3014	return awsutil.Prettify(s)
3015}
3016
3017// GoString returns the string representation
3018func (s BatchDisassociateClientDeviceFromCoreDeviceOutput) GoString() string {
3019	return s.String()
3020}
3021
3022// SetErrorEntries sets the ErrorEntries field's value.
3023func (s *BatchDisassociateClientDeviceFromCoreDeviceOutput) SetErrorEntries(v []*DisassociateClientDeviceFromCoreDeviceErrorEntry) *BatchDisassociateClientDeviceFromCoreDeviceOutput {
3024	s.ErrorEntries = v
3025	return s
3026}
3027
3028type CancelDeploymentInput struct {
3029	_ struct{} `type:"structure"`
3030
3031	// The ID of the deployment.
3032	//
3033	// DeploymentId is a required field
3034	DeploymentId *string `location:"uri" locationName:"deploymentId" min:"1" type:"string" required:"true"`
3035}
3036
3037// String returns the string representation
3038func (s CancelDeploymentInput) String() string {
3039	return awsutil.Prettify(s)
3040}
3041
3042// GoString returns the string representation
3043func (s CancelDeploymentInput) GoString() string {
3044	return s.String()
3045}
3046
3047// Validate inspects the fields of the type to determine if they are valid.
3048func (s *CancelDeploymentInput) Validate() error {
3049	invalidParams := request.ErrInvalidParams{Context: "CancelDeploymentInput"}
3050	if s.DeploymentId == nil {
3051		invalidParams.Add(request.NewErrParamRequired("DeploymentId"))
3052	}
3053	if s.DeploymentId != nil && len(*s.DeploymentId) < 1 {
3054		invalidParams.Add(request.NewErrParamMinLen("DeploymentId", 1))
3055	}
3056
3057	if invalidParams.Len() > 0 {
3058		return invalidParams
3059	}
3060	return nil
3061}
3062
3063// SetDeploymentId sets the DeploymentId field's value.
3064func (s *CancelDeploymentInput) SetDeploymentId(v string) *CancelDeploymentInput {
3065	s.DeploymentId = &v
3066	return s
3067}
3068
3069type CancelDeploymentOutput struct {
3070	_ struct{} `type:"structure"`
3071
3072	// A message that communicates if the cancel was successful.
3073	Message *string `locationName:"message" min:"1" type:"string"`
3074}
3075
3076// String returns the string representation
3077func (s CancelDeploymentOutput) String() string {
3078	return awsutil.Prettify(s)
3079}
3080
3081// GoString returns the string representation
3082func (s CancelDeploymentOutput) GoString() string {
3083	return s.String()
3084}
3085
3086// SetMessage sets the Message field's value.
3087func (s *CancelDeploymentOutput) SetMessage(v string) *CancelDeploymentOutput {
3088	s.Message = &v
3089	return s
3090}
3091
3092// Contains the status of a component in the IoT Greengrass service.
3093type CloudComponentStatus struct {
3094	_ struct{} `type:"structure"`
3095
3096	// The state of the component.
3097	ComponentState *string `locationName:"componentState" type:"string" enum:"CloudComponentState"`
3098
3099	// A dictionary of errors that communicate why the component is in an error
3100	// state. For example, if IoT Greengrass can't access an artifact for the component,
3101	// then errors contains the artifact's URI as a key, and the error message as
3102	// the value for that key.
3103	Errors map[string]*string `locationName:"errors" type:"map"`
3104
3105	// A message that communicates details, such as errors, about the status of
3106	// the component.
3107	Message *string `locationName:"message" min:"1" type:"string"`
3108}
3109
3110// String returns the string representation
3111func (s CloudComponentStatus) String() string {
3112	return awsutil.Prettify(s)
3113}
3114
3115// GoString returns the string representation
3116func (s CloudComponentStatus) GoString() string {
3117	return s.String()
3118}
3119
3120// SetComponentState sets the ComponentState field's value.
3121func (s *CloudComponentStatus) SetComponentState(v string) *CloudComponentStatus {
3122	s.ComponentState = &v
3123	return s
3124}
3125
3126// SetErrors sets the Errors field's value.
3127func (s *CloudComponentStatus) SetErrors(v map[string]*string) *CloudComponentStatus {
3128	s.Errors = v
3129	return s
3130}
3131
3132// SetMessage sets the Message field's value.
3133func (s *CloudComponentStatus) SetMessage(v string) *CloudComponentStatus {
3134	s.Message = &v
3135	return s
3136}
3137
3138// Contains information about a component.
3139type Component struct {
3140	_ struct{} `type:"structure"`
3141
3142	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
3143	// of the component version.
3144	Arn *string `locationName:"arn" type:"string"`
3145
3146	// The name of the component.
3147	ComponentName *string `locationName:"componentName" min:"1" type:"string"`
3148
3149	// The latest version of the component and its details.
3150	LatestVersion *ComponentLatestVersion `locationName:"latestVersion" type:"structure"`
3151}
3152
3153// String returns the string representation
3154func (s Component) String() string {
3155	return awsutil.Prettify(s)
3156}
3157
3158// GoString returns the string representation
3159func (s Component) GoString() string {
3160	return s.String()
3161}
3162
3163// SetArn sets the Arn field's value.
3164func (s *Component) SetArn(v string) *Component {
3165	s.Arn = &v
3166	return s
3167}
3168
3169// SetComponentName sets the ComponentName field's value.
3170func (s *Component) SetComponentName(v string) *Component {
3171	s.ComponentName = &v
3172	return s
3173}
3174
3175// SetLatestVersion sets the LatestVersion field's value.
3176func (s *Component) SetLatestVersion(v *ComponentLatestVersion) *Component {
3177	s.LatestVersion = v
3178	return s
3179}
3180
3181// Contains information about a component that is a candidate to deploy to a
3182// Greengrass core device.
3183type ComponentCandidate struct {
3184	_ struct{} `type:"structure"`
3185
3186	// The name of the component.
3187	ComponentName *string `locationName:"componentName" min:"1" type:"string"`
3188
3189	// The version of the component.
3190	ComponentVersion *string `locationName:"componentVersion" min:"1" type:"string"`
3191
3192	// The version requirements for the component's dependencies. Greengrass core
3193	// devices get the version requirements from component recipes.
3194	//
3195	// IoT Greengrass V2 uses semantic version constraints. For more information,
3196	// see Semantic Versioning (https://semver.org/).
3197	VersionRequirements map[string]*string `locationName:"versionRequirements" type:"map"`
3198}
3199
3200// String returns the string representation
3201func (s ComponentCandidate) String() string {
3202	return awsutil.Prettify(s)
3203}
3204
3205// GoString returns the string representation
3206func (s ComponentCandidate) GoString() string {
3207	return s.String()
3208}
3209
3210// Validate inspects the fields of the type to determine if they are valid.
3211func (s *ComponentCandidate) Validate() error {
3212	invalidParams := request.ErrInvalidParams{Context: "ComponentCandidate"}
3213	if s.ComponentName != nil && len(*s.ComponentName) < 1 {
3214		invalidParams.Add(request.NewErrParamMinLen("ComponentName", 1))
3215	}
3216	if s.ComponentVersion != nil && len(*s.ComponentVersion) < 1 {
3217		invalidParams.Add(request.NewErrParamMinLen("ComponentVersion", 1))
3218	}
3219
3220	if invalidParams.Len() > 0 {
3221		return invalidParams
3222	}
3223	return nil
3224}
3225
3226// SetComponentName sets the ComponentName field's value.
3227func (s *ComponentCandidate) SetComponentName(v string) *ComponentCandidate {
3228	s.ComponentName = &v
3229	return s
3230}
3231
3232// SetComponentVersion sets the ComponentVersion field's value.
3233func (s *ComponentCandidate) SetComponentVersion(v string) *ComponentCandidate {
3234	s.ComponentVersion = &v
3235	return s
3236}
3237
3238// SetVersionRequirements sets the VersionRequirements field's value.
3239func (s *ComponentCandidate) SetVersionRequirements(v map[string]*string) *ComponentCandidate {
3240	s.VersionRequirements = v
3241	return s
3242}
3243
3244// Contains information about a deployment's update to a component's configuration
3245// on Greengrass core devices. For more information, see Update component configurations
3246// (https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html)
3247// in the IoT Greengrass V2 Developer Guide.
3248type ComponentConfigurationUpdate struct {
3249	_ struct{} `type:"structure"`
3250
3251	// A serialized JSON string that contains the configuration object to merge
3252	// to target devices. The core device merges this configuration with the component's
3253	// existing configuration. If this is the first time a component deploys on
3254	// a device, the core device merges this configuration with the component's
3255	// default configuration. This means that the core device keeps it's existing
3256	// configuration for keys and values that you don't specify in this object.
3257	// For more information, see Merge configuration updates (https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html#merge-configuration-update)
3258	// in the IoT Greengrass V2 Developer Guide.
3259	Merge *string `locationName:"merge" min:"1" type:"string"`
3260
3261	// The list of configuration nodes to reset to default values on target devices.
3262	// Use JSON pointers to specify each node to reset. JSON pointers start with
3263	// a forward slash (/) and use forward slashes to separate the key for each
3264	// level in the object. For more information, see the JSON pointer specification
3265	// (https://tools.ietf.org/html/rfc6901) and Reset configuration updates (https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html#reset-configuration-update)
3266	// in the IoT Greengrass V2 Developer Guide.
3267	Reset []*string `locationName:"reset" type:"list"`
3268}
3269
3270// String returns the string representation
3271func (s ComponentConfigurationUpdate) String() string {
3272	return awsutil.Prettify(s)
3273}
3274
3275// GoString returns the string representation
3276func (s ComponentConfigurationUpdate) GoString() string {
3277	return s.String()
3278}
3279
3280// Validate inspects the fields of the type to determine if they are valid.
3281func (s *ComponentConfigurationUpdate) Validate() error {
3282	invalidParams := request.ErrInvalidParams{Context: "ComponentConfigurationUpdate"}
3283	if s.Merge != nil && len(*s.Merge) < 1 {
3284		invalidParams.Add(request.NewErrParamMinLen("Merge", 1))
3285	}
3286
3287	if invalidParams.Len() > 0 {
3288		return invalidParams
3289	}
3290	return nil
3291}
3292
3293// SetMerge sets the Merge field's value.
3294func (s *ComponentConfigurationUpdate) SetMerge(v string) *ComponentConfigurationUpdate {
3295	s.Merge = &v
3296	return s
3297}
3298
3299// SetReset sets the Reset field's value.
3300func (s *ComponentConfigurationUpdate) SetReset(v []*string) *ComponentConfigurationUpdate {
3301	s.Reset = v
3302	return s
3303}
3304
3305// Contains information about a component dependency for a Lambda function component.
3306type ComponentDependencyRequirement struct {
3307	_ struct{} `type:"structure"`
3308
3309	// The type of this dependency. Choose from the following options:
3310	//
3311	//    * SOFT – The component doesn't restart if the dependency changes state.
3312	//
3313	//    * HARD – The component restarts if the dependency changes state.
3314	//
3315	// Default: HARD
3316	DependencyType *string `locationName:"dependencyType" type:"string" enum:"ComponentDependencyType"`
3317
3318	// The component version requirement for the component dependency.
3319	//
3320	// IoT Greengrass V2 uses semantic version constraints. For more information,
3321	// see Semantic Versioning (https://semver.org/).
3322	VersionRequirement *string `locationName:"versionRequirement" min:"1" type:"string"`
3323}
3324
3325// String returns the string representation
3326func (s ComponentDependencyRequirement) String() string {
3327	return awsutil.Prettify(s)
3328}
3329
3330// GoString returns the string representation
3331func (s ComponentDependencyRequirement) GoString() string {
3332	return s.String()
3333}
3334
3335// Validate inspects the fields of the type to determine if they are valid.
3336func (s *ComponentDependencyRequirement) Validate() error {
3337	invalidParams := request.ErrInvalidParams{Context: "ComponentDependencyRequirement"}
3338	if s.VersionRequirement != nil && len(*s.VersionRequirement) < 1 {
3339		invalidParams.Add(request.NewErrParamMinLen("VersionRequirement", 1))
3340	}
3341
3342	if invalidParams.Len() > 0 {
3343		return invalidParams
3344	}
3345	return nil
3346}
3347
3348// SetDependencyType sets the DependencyType field's value.
3349func (s *ComponentDependencyRequirement) SetDependencyType(v string) *ComponentDependencyRequirement {
3350	s.DependencyType = &v
3351	return s
3352}
3353
3354// SetVersionRequirement sets the VersionRequirement field's value.
3355func (s *ComponentDependencyRequirement) SetVersionRequirement(v string) *ComponentDependencyRequirement {
3356	s.VersionRequirement = &v
3357	return s
3358}
3359
3360// Contains information about a component to deploy.
3361type ComponentDeploymentSpecification struct {
3362	_ struct{} `type:"structure"`
3363
3364	// The version of the component.
3365	ComponentVersion *string `locationName:"componentVersion" min:"1" type:"string"`
3366
3367	// The configuration updates to deploy for the component. You can define reset
3368	// updates and merge updates. A reset updates the keys that you specify to the
3369	// default configuration for the component. A merge updates the core device's
3370	// component configuration with the keys and values that you specify. The IoT
3371	// Greengrass Core software applies reset updates before it applies merge updates.
3372	// For more information, see Update component configurations (https://docs.aws.amazon.com/greengrass/v2/developerguide/update-component-configurations.html)
3373	// in the IoT Greengrass V2 Developer Guide.
3374	ConfigurationUpdate *ComponentConfigurationUpdate `locationName:"configurationUpdate" type:"structure"`
3375
3376	// The system user and group that the IoT Greengrass Core software uses to run
3377	// component processes on the core device. If you omit this parameter, the IoT
3378	// Greengrass Core software uses the system user and group that you configure
3379	// for the core device. For more information, see Configure the user and group
3380	// that run components (https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-user)
3381	// in the IoT Greengrass V2 Developer Guide.
3382	RunWith *ComponentRunWith `locationName:"runWith" type:"structure"`
3383}
3384
3385// String returns the string representation
3386func (s ComponentDeploymentSpecification) String() string {
3387	return awsutil.Prettify(s)
3388}
3389
3390// GoString returns the string representation
3391func (s ComponentDeploymentSpecification) GoString() string {
3392	return s.String()
3393}
3394
3395// Validate inspects the fields of the type to determine if they are valid.
3396func (s *ComponentDeploymentSpecification) Validate() error {
3397	invalidParams := request.ErrInvalidParams{Context: "ComponentDeploymentSpecification"}
3398	if s.ComponentVersion != nil && len(*s.ComponentVersion) < 1 {
3399		invalidParams.Add(request.NewErrParamMinLen("ComponentVersion", 1))
3400	}
3401	if s.ConfigurationUpdate != nil {
3402		if err := s.ConfigurationUpdate.Validate(); err != nil {
3403			invalidParams.AddNested("ConfigurationUpdate", err.(request.ErrInvalidParams))
3404		}
3405	}
3406	if s.RunWith != nil {
3407		if err := s.RunWith.Validate(); err != nil {
3408			invalidParams.AddNested("RunWith", err.(request.ErrInvalidParams))
3409		}
3410	}
3411
3412	if invalidParams.Len() > 0 {
3413		return invalidParams
3414	}
3415	return nil
3416}
3417
3418// SetComponentVersion sets the ComponentVersion field's value.
3419func (s *ComponentDeploymentSpecification) SetComponentVersion(v string) *ComponentDeploymentSpecification {
3420	s.ComponentVersion = &v
3421	return s
3422}
3423
3424// SetConfigurationUpdate sets the ConfigurationUpdate field's value.
3425func (s *ComponentDeploymentSpecification) SetConfigurationUpdate(v *ComponentConfigurationUpdate) *ComponentDeploymentSpecification {
3426	s.ConfigurationUpdate = v
3427	return s
3428}
3429
3430// SetRunWith sets the RunWith field's value.
3431func (s *ComponentDeploymentSpecification) SetRunWith(v *ComponentRunWith) *ComponentDeploymentSpecification {
3432	s.RunWith = v
3433	return s
3434}
3435
3436// Contains information about the latest version of a component.
3437type ComponentLatestVersion struct {
3438	_ struct{} `type:"structure"`
3439
3440	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
3441	// of the component version.
3442	Arn *string `locationName:"arn" type:"string"`
3443
3444	// The version of the component.
3445	ComponentVersion *string `locationName:"componentVersion" min:"1" type:"string"`
3446
3447	// The time at which the component was created, expressed in ISO 8601 format.
3448	CreationTimestamp *time.Time `locationName:"creationTimestamp" type:"timestamp"`
3449
3450	// The description of the component version.
3451	Description *string `locationName:"description" min:"1" type:"string"`
3452
3453	// The platforms that the component version supports.
3454	Platforms []*ComponentPlatform `locationName:"platforms" type:"list"`
3455
3456	// The publisher of the component version.
3457	Publisher *string `locationName:"publisher" min:"1" type:"string"`
3458}
3459
3460// String returns the string representation
3461func (s ComponentLatestVersion) String() string {
3462	return awsutil.Prettify(s)
3463}
3464
3465// GoString returns the string representation
3466func (s ComponentLatestVersion) GoString() string {
3467	return s.String()
3468}
3469
3470// SetArn sets the Arn field's value.
3471func (s *ComponentLatestVersion) SetArn(v string) *ComponentLatestVersion {
3472	s.Arn = &v
3473	return s
3474}
3475
3476// SetComponentVersion sets the ComponentVersion field's value.
3477func (s *ComponentLatestVersion) SetComponentVersion(v string) *ComponentLatestVersion {
3478	s.ComponentVersion = &v
3479	return s
3480}
3481
3482// SetCreationTimestamp sets the CreationTimestamp field's value.
3483func (s *ComponentLatestVersion) SetCreationTimestamp(v time.Time) *ComponentLatestVersion {
3484	s.CreationTimestamp = &v
3485	return s
3486}
3487
3488// SetDescription sets the Description field's value.
3489func (s *ComponentLatestVersion) SetDescription(v string) *ComponentLatestVersion {
3490	s.Description = &v
3491	return s
3492}
3493
3494// SetPlatforms sets the Platforms field's value.
3495func (s *ComponentLatestVersion) SetPlatforms(v []*ComponentPlatform) *ComponentLatestVersion {
3496	s.Platforms = v
3497	return s
3498}
3499
3500// SetPublisher sets the Publisher field's value.
3501func (s *ComponentLatestVersion) SetPublisher(v string) *ComponentLatestVersion {
3502	s.Publisher = &v
3503	return s
3504}
3505
3506// Contains information about a platform that a component supports.
3507type ComponentPlatform struct {
3508	_ struct{} `type:"structure"`
3509
3510	// A dictionary of attributes for the platform. The IoT Greengrass Core software
3511	// defines the os and platform by default. You can specify additional platform
3512	// attributes for a core device when you deploy the Greengrass nucleus component.
3513	// For more information, see the Greengrass nucleus component (https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-component.html)
3514	// in the IoT Greengrass V2 Developer Guide.
3515	Attributes map[string]*string `locationName:"attributes" type:"map"`
3516
3517	// The friendly name of the platform. This name helps you identify the platform.
3518	//
3519	// If you omit this parameter, IoT Greengrass creates a friendly name from the
3520	// os and architecture of the platform.
3521	Name *string `locationName:"name" min:"1" type:"string"`
3522}
3523
3524// String returns the string representation
3525func (s ComponentPlatform) String() string {
3526	return awsutil.Prettify(s)
3527}
3528
3529// GoString returns the string representation
3530func (s ComponentPlatform) GoString() string {
3531	return s.String()
3532}
3533
3534// Validate inspects the fields of the type to determine if they are valid.
3535func (s *ComponentPlatform) Validate() error {
3536	invalidParams := request.ErrInvalidParams{Context: "ComponentPlatform"}
3537	if s.Name != nil && len(*s.Name) < 1 {
3538		invalidParams.Add(request.NewErrParamMinLen("Name", 1))
3539	}
3540
3541	if invalidParams.Len() > 0 {
3542		return invalidParams
3543	}
3544	return nil
3545}
3546
3547// SetAttributes sets the Attributes field's value.
3548func (s *ComponentPlatform) SetAttributes(v map[string]*string) *ComponentPlatform {
3549	s.Attributes = v
3550	return s
3551}
3552
3553// SetName sets the Name field's value.
3554func (s *ComponentPlatform) SetName(v string) *ComponentPlatform {
3555	s.Name = &v
3556	return s
3557}
3558
3559// Contains information system user and group that the IoT Greengrass Core software
3560// uses to run component processes on the core device. For more information,
3561// see Configure the user and group that run components (https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-user)
3562// in the IoT Greengrass V2 Developer Guide.
3563type ComponentRunWith struct {
3564	_ struct{} `type:"structure"`
3565
3566	// The POSIX system user and (optional) group to use to run this component.
3567	// Specify the user and group separated by a colon (:) in the following format:
3568	// user:group. The group is optional. If you don't specify a group, the IoT
3569	// Greengrass Core software uses the primary user for the group.
3570	//
3571	// If you omit this parameter, the IoT Greengrass Core software uses the default
3572	// system user and group that you configure on the Greengrass nucleus component.
3573	// For more information, see Configure the user and group that run components
3574	// (https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-user).
3575	PosixUser *string `locationName:"posixUser" min:"1" type:"string"`
3576
3577	// The system resource limits to apply to this component's process on the core
3578	// device.
3579	//
3580	// If you omit this parameter, the IoT Greengrass Core software uses the default
3581	// system resource limits that you configure on the Greengrass nucleus component.
3582	// For more information, see Configure system resource limits for components
3583	// (https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-system-resource-limits).
3584	SystemResourceLimits *SystemResourceLimits `locationName:"systemResourceLimits" type:"structure"`
3585}
3586
3587// String returns the string representation
3588func (s ComponentRunWith) String() string {
3589	return awsutil.Prettify(s)
3590}
3591
3592// GoString returns the string representation
3593func (s ComponentRunWith) GoString() string {
3594	return s.String()
3595}
3596
3597// Validate inspects the fields of the type to determine if they are valid.
3598func (s *ComponentRunWith) Validate() error {
3599	invalidParams := request.ErrInvalidParams{Context: "ComponentRunWith"}
3600	if s.PosixUser != nil && len(*s.PosixUser) < 1 {
3601		invalidParams.Add(request.NewErrParamMinLen("PosixUser", 1))
3602	}
3603
3604	if invalidParams.Len() > 0 {
3605		return invalidParams
3606	}
3607	return nil
3608}
3609
3610// SetPosixUser sets the PosixUser field's value.
3611func (s *ComponentRunWith) SetPosixUser(v string) *ComponentRunWith {
3612	s.PosixUser = &v
3613	return s
3614}
3615
3616// SetSystemResourceLimits sets the SystemResourceLimits field's value.
3617func (s *ComponentRunWith) SetSystemResourceLimits(v *SystemResourceLimits) *ComponentRunWith {
3618	s.SystemResourceLimits = v
3619	return s
3620}
3621
3622// Contains information about a component version in a list.
3623type ComponentVersionListItem struct {
3624	_ struct{} `type:"structure"`
3625
3626	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
3627	// of the component version.
3628	Arn *string `locationName:"arn" min:"1" type:"string"`
3629
3630	// The name of the component.
3631	ComponentName *string `locationName:"componentName" min:"1" type:"string"`
3632
3633	// The version of the component.
3634	ComponentVersion *string `locationName:"componentVersion" min:"1" type:"string"`
3635}
3636
3637// String returns the string representation
3638func (s ComponentVersionListItem) String() string {
3639	return awsutil.Prettify(s)
3640}
3641
3642// GoString returns the string representation
3643func (s ComponentVersionListItem) GoString() string {
3644	return s.String()
3645}
3646
3647// SetArn sets the Arn field's value.
3648func (s *ComponentVersionListItem) SetArn(v string) *ComponentVersionListItem {
3649	s.Arn = &v
3650	return s
3651}
3652
3653// SetComponentName sets the ComponentName field's value.
3654func (s *ComponentVersionListItem) SetComponentName(v string) *ComponentVersionListItem {
3655	s.ComponentName = &v
3656	return s
3657}
3658
3659// SetComponentVersion sets the ComponentVersion field's value.
3660func (s *ComponentVersionListItem) SetComponentVersion(v string) *ComponentVersionListItem {
3661	s.ComponentVersion = &v
3662	return s
3663}
3664
3665// Your request has conflicting operations. This can occur if you're trying
3666// to perform more than one operation on the same resource at the same time.
3667type ConflictException struct {
3668	_            struct{}                  `type:"structure"`
3669	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
3670
3671	Message_ *string `locationName:"message" type:"string"`
3672
3673	// The ID of the resource that conflicts with the request.
3674	//
3675	// ResourceId is a required field
3676	ResourceId *string `locationName:"resourceId" type:"string" required:"true"`
3677
3678	// The type of the resource that conflicts with the request.
3679	//
3680	// ResourceType is a required field
3681	ResourceType *string `locationName:"resourceType" type:"string" required:"true"`
3682}
3683
3684// String returns the string representation
3685func (s ConflictException) String() string {
3686	return awsutil.Prettify(s)
3687}
3688
3689// GoString returns the string representation
3690func (s ConflictException) GoString() string {
3691	return s.String()
3692}
3693
3694func newErrorConflictException(v protocol.ResponseMetadata) error {
3695	return &ConflictException{
3696		RespMetadata: v,
3697	}
3698}
3699
3700// Code returns the exception type name.
3701func (s *ConflictException) Code() string {
3702	return "ConflictException"
3703}
3704
3705// Message returns the exception's message.
3706func (s *ConflictException) Message() string {
3707	if s.Message_ != nil {
3708		return *s.Message_
3709	}
3710	return ""
3711}
3712
3713// OrigErr always returns nil, satisfies awserr.Error interface.
3714func (s *ConflictException) OrigErr() error {
3715	return nil
3716}
3717
3718func (s *ConflictException) Error() string {
3719	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
3720}
3721
3722// Status code returns the HTTP status code for the request's response error.
3723func (s *ConflictException) StatusCode() int {
3724	return s.RespMetadata.StatusCode
3725}
3726
3727// RequestID returns the service's response RequestID for request.
3728func (s *ConflictException) RequestID() string {
3729	return s.RespMetadata.RequestID
3730}
3731
3732// Contains information about a Greengrass core device, which is an IoT thing
3733// that runs the IoT Greengrass Core software.
3734type CoreDevice struct {
3735	_ struct{} `type:"structure"`
3736
3737	// The name of the core device. This is also the name of the IoT thing.
3738	CoreDeviceThingName *string `locationName:"coreDeviceThingName" min:"1" type:"string"`
3739
3740	// The time at which the core device's status last updated, expressed in ISO
3741	// 8601 format.
3742	LastStatusUpdateTimestamp *time.Time `locationName:"lastStatusUpdateTimestamp" type:"timestamp"`
3743
3744	// The status of the core device. Core devices can have the following statuses:
3745	//
3746	//    * HEALTHY – The IoT Greengrass Core software and all components run
3747	//    on the core device without issue.
3748	//
3749	//    * UNHEALTHY – The IoT Greengrass Core software or a component is in
3750	//    a failed state on the core device.
3751	Status *string `locationName:"status" type:"string" enum:"CoreDeviceStatus"`
3752}
3753
3754// String returns the string representation
3755func (s CoreDevice) String() string {
3756	return awsutil.Prettify(s)
3757}
3758
3759// GoString returns the string representation
3760func (s CoreDevice) GoString() string {
3761	return s.String()
3762}
3763
3764// SetCoreDeviceThingName sets the CoreDeviceThingName field's value.
3765func (s *CoreDevice) SetCoreDeviceThingName(v string) *CoreDevice {
3766	s.CoreDeviceThingName = &v
3767	return s
3768}
3769
3770// SetLastStatusUpdateTimestamp sets the LastStatusUpdateTimestamp field's value.
3771func (s *CoreDevice) SetLastStatusUpdateTimestamp(v time.Time) *CoreDevice {
3772	s.LastStatusUpdateTimestamp = &v
3773	return s
3774}
3775
3776// SetStatus sets the Status field's value.
3777func (s *CoreDevice) SetStatus(v string) *CoreDevice {
3778	s.Status = &v
3779	return s
3780}
3781
3782type CreateComponentVersionInput struct {
3783	_ struct{} `type:"structure"`
3784
3785	// A unique, case-sensitive identifier that you can provide to ensure that the
3786	// request is idempotent. Idempotency means that the request is successfully
3787	// processed only once, even if you send the request multiple times. When a
3788	// request succeeds, and you specify the same client token for subsequent successful
3789	// requests, the IoT Greengrass V2 service returns the successful response that
3790	// it caches from the previous request. IoT Greengrass V2 caches successful
3791	// responses for idempotent requests for up to 8 hours.
3792	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`
3793
3794	// The recipe to use to create the component. The recipe defines the component's
3795	// metadata, parameters, dependencies, lifecycle, artifacts, and platform compatibility.
3796	//
3797	// You must specify either inlineRecipe or lambdaFunction.
3798	//
3799	// InlineRecipe is automatically base64 encoded/decoded by the SDK.
3800	InlineRecipe []byte `locationName:"inlineRecipe" type:"blob"`
3801
3802	// The parameters to create a component from a Lambda function.
3803	//
3804	// You must specify either inlineRecipe or lambdaFunction.
3805	LambdaFunction *LambdaFunctionRecipeSource `locationName:"lambdaFunction" type:"structure"`
3806
3807	// A list of key-value pairs that contain metadata for the resource. For more
3808	// information, see Tag your resources (https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html)
3809	// in the IoT Greengrass V2 Developer Guide.
3810	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
3811}
3812
3813// String returns the string representation
3814func (s CreateComponentVersionInput) String() string {
3815	return awsutil.Prettify(s)
3816}
3817
3818// GoString returns the string representation
3819func (s CreateComponentVersionInput) GoString() string {
3820	return s.String()
3821}
3822
3823// Validate inspects the fields of the type to determine if they are valid.
3824func (s *CreateComponentVersionInput) Validate() error {
3825	invalidParams := request.ErrInvalidParams{Context: "CreateComponentVersionInput"}
3826	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
3827		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
3828	}
3829	if s.Tags != nil && len(s.Tags) < 1 {
3830		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
3831	}
3832	if s.LambdaFunction != nil {
3833		if err := s.LambdaFunction.Validate(); err != nil {
3834			invalidParams.AddNested("LambdaFunction", err.(request.ErrInvalidParams))
3835		}
3836	}
3837
3838	if invalidParams.Len() > 0 {
3839		return invalidParams
3840	}
3841	return nil
3842}
3843
3844// SetClientToken sets the ClientToken field's value.
3845func (s *CreateComponentVersionInput) SetClientToken(v string) *CreateComponentVersionInput {
3846	s.ClientToken = &v
3847	return s
3848}
3849
3850// SetInlineRecipe sets the InlineRecipe field's value.
3851func (s *CreateComponentVersionInput) SetInlineRecipe(v []byte) *CreateComponentVersionInput {
3852	s.InlineRecipe = v
3853	return s
3854}
3855
3856// SetLambdaFunction sets the LambdaFunction field's value.
3857func (s *CreateComponentVersionInput) SetLambdaFunction(v *LambdaFunctionRecipeSource) *CreateComponentVersionInput {
3858	s.LambdaFunction = v
3859	return s
3860}
3861
3862// SetTags sets the Tags field's value.
3863func (s *CreateComponentVersionInput) SetTags(v map[string]*string) *CreateComponentVersionInput {
3864	s.Tags = v
3865	return s
3866}
3867
3868type CreateComponentVersionOutput struct {
3869	_ struct{} `type:"structure"`
3870
3871	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
3872	// of the component version.
3873	Arn *string `locationName:"arn" type:"string"`
3874
3875	// The name of the component.
3876	//
3877	// ComponentName is a required field
3878	ComponentName *string `locationName:"componentName" min:"1" type:"string" required:"true"`
3879
3880	// The version of the component.
3881	//
3882	// ComponentVersion is a required field
3883	ComponentVersion *string `locationName:"componentVersion" min:"1" type:"string" required:"true"`
3884
3885	// The time at which the component was created, expressed in ISO 8601 format.
3886	//
3887	// CreationTimestamp is a required field
3888	CreationTimestamp *time.Time `locationName:"creationTimestamp" type:"timestamp" required:"true"`
3889
3890	// The status of the component version in IoT Greengrass V2. This status is
3891	// different from the status of the component on a core device.
3892	//
3893	// Status is a required field
3894	Status *CloudComponentStatus `locationName:"status" type:"structure" required:"true"`
3895}
3896
3897// String returns the string representation
3898func (s CreateComponentVersionOutput) String() string {
3899	return awsutil.Prettify(s)
3900}
3901
3902// GoString returns the string representation
3903func (s CreateComponentVersionOutput) GoString() string {
3904	return s.String()
3905}
3906
3907// SetArn sets the Arn field's value.
3908func (s *CreateComponentVersionOutput) SetArn(v string) *CreateComponentVersionOutput {
3909	s.Arn = &v
3910	return s
3911}
3912
3913// SetComponentName sets the ComponentName field's value.
3914func (s *CreateComponentVersionOutput) SetComponentName(v string) *CreateComponentVersionOutput {
3915	s.ComponentName = &v
3916	return s
3917}
3918
3919// SetComponentVersion sets the ComponentVersion field's value.
3920func (s *CreateComponentVersionOutput) SetComponentVersion(v string) *CreateComponentVersionOutput {
3921	s.ComponentVersion = &v
3922	return s
3923}
3924
3925// SetCreationTimestamp sets the CreationTimestamp field's value.
3926func (s *CreateComponentVersionOutput) SetCreationTimestamp(v time.Time) *CreateComponentVersionOutput {
3927	s.CreationTimestamp = &v
3928	return s
3929}
3930
3931// SetStatus sets the Status field's value.
3932func (s *CreateComponentVersionOutput) SetStatus(v *CloudComponentStatus) *CreateComponentVersionOutput {
3933	s.Status = v
3934	return s
3935}
3936
3937type CreateDeploymentInput struct {
3938	_ struct{} `type:"structure"`
3939
3940	// A unique, case-sensitive identifier that you can provide to ensure that the
3941	// request is idempotent. Idempotency means that the request is successfully
3942	// processed only once, even if you send the request multiple times. When a
3943	// request succeeds, and you specify the same client token for subsequent successful
3944	// requests, the IoT Greengrass V2 service returns the successful response that
3945	// it caches from the previous request. IoT Greengrass V2 caches successful
3946	// responses for idempotent requests for up to 8 hours.
3947	ClientToken *string `locationName:"clientToken" min:"1" type:"string" idempotencyToken:"true"`
3948
3949	// The components to deploy. This is a dictionary, where each key is the name
3950	// of a component, and each key's value is the version and configuration to
3951	// deploy for that component.
3952	Components map[string]*ComponentDeploymentSpecification `locationName:"components" type:"map"`
3953
3954	// The name of the deployment.
3955	DeploymentName *string `locationName:"deploymentName" min:"1" type:"string"`
3956
3957	// The deployment policies for the deployment. These policies define how the
3958	// deployment updates components and handles failure.
3959	DeploymentPolicies *DeploymentPolicies `locationName:"deploymentPolicies" type:"structure"`
3960
3961	// The job configuration for the deployment configuration. The job configuration
3962	// specifies the rollout, timeout, and stop configurations for the deployment
3963	// configuration.
3964	IotJobConfiguration *DeploymentIoTJobConfiguration `locationName:"iotJobConfiguration" type:"structure"`
3965
3966	// A list of key-value pairs that contain metadata for the resource. For more
3967	// information, see Tag your resources (https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html)
3968	// in the IoT Greengrass V2 Developer Guide.
3969	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
3970
3971	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
3972	// of the target IoT thing or thing group.
3973	//
3974	// TargetArn is a required field
3975	TargetArn *string `locationName:"targetArn" type:"string" required:"true"`
3976}
3977
3978// String returns the string representation
3979func (s CreateDeploymentInput) String() string {
3980	return awsutil.Prettify(s)
3981}
3982
3983// GoString returns the string representation
3984func (s CreateDeploymentInput) GoString() string {
3985	return s.String()
3986}
3987
3988// Validate inspects the fields of the type to determine if they are valid.
3989func (s *CreateDeploymentInput) Validate() error {
3990	invalidParams := request.ErrInvalidParams{Context: "CreateDeploymentInput"}
3991	if s.ClientToken != nil && len(*s.ClientToken) < 1 {
3992		invalidParams.Add(request.NewErrParamMinLen("ClientToken", 1))
3993	}
3994	if s.DeploymentName != nil && len(*s.DeploymentName) < 1 {
3995		invalidParams.Add(request.NewErrParamMinLen("DeploymentName", 1))
3996	}
3997	if s.Tags != nil && len(s.Tags) < 1 {
3998		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
3999	}
4000	if s.TargetArn == nil {
4001		invalidParams.Add(request.NewErrParamRequired("TargetArn"))
4002	}
4003	if s.Components != nil {
4004		for i, v := range s.Components {
4005			if v == nil {
4006				continue
4007			}
4008			if err := v.Validate(); err != nil {
4009				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Components", i), err.(request.ErrInvalidParams))
4010			}
4011		}
4012	}
4013	if s.IotJobConfiguration != nil {
4014		if err := s.IotJobConfiguration.Validate(); err != nil {
4015			invalidParams.AddNested("IotJobConfiguration", err.(request.ErrInvalidParams))
4016		}
4017	}
4018
4019	if invalidParams.Len() > 0 {
4020		return invalidParams
4021	}
4022	return nil
4023}
4024
4025// SetClientToken sets the ClientToken field's value.
4026func (s *CreateDeploymentInput) SetClientToken(v string) *CreateDeploymentInput {
4027	s.ClientToken = &v
4028	return s
4029}
4030
4031// SetComponents sets the Components field's value.
4032func (s *CreateDeploymentInput) SetComponents(v map[string]*ComponentDeploymentSpecification) *CreateDeploymentInput {
4033	s.Components = v
4034	return s
4035}
4036
4037// SetDeploymentName sets the DeploymentName field's value.
4038func (s *CreateDeploymentInput) SetDeploymentName(v string) *CreateDeploymentInput {
4039	s.DeploymentName = &v
4040	return s
4041}
4042
4043// SetDeploymentPolicies sets the DeploymentPolicies field's value.
4044func (s *CreateDeploymentInput) SetDeploymentPolicies(v *DeploymentPolicies) *CreateDeploymentInput {
4045	s.DeploymentPolicies = v
4046	return s
4047}
4048
4049// SetIotJobConfiguration sets the IotJobConfiguration field's value.
4050func (s *CreateDeploymentInput) SetIotJobConfiguration(v *DeploymentIoTJobConfiguration) *CreateDeploymentInput {
4051	s.IotJobConfiguration = v
4052	return s
4053}
4054
4055// SetTags sets the Tags field's value.
4056func (s *CreateDeploymentInput) SetTags(v map[string]*string) *CreateDeploymentInput {
4057	s.Tags = v
4058	return s
4059}
4060
4061// SetTargetArn sets the TargetArn field's value.
4062func (s *CreateDeploymentInput) SetTargetArn(v string) *CreateDeploymentInput {
4063	s.TargetArn = &v
4064	return s
4065}
4066
4067type CreateDeploymentOutput struct {
4068	_ struct{} `type:"structure"`
4069
4070	// The ID of the deployment.
4071	DeploymentId *string `locationName:"deploymentId" min:"1" type:"string"`
4072
4073	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
4074	// of the IoT job that applies the deployment to target devices.
4075	IotJobArn *string `locationName:"iotJobArn" type:"string"`
4076
4077	// The ID of the IoT job that applies the deployment to target devices.
4078	IotJobId *string `locationName:"iotJobId" min:"1" type:"string"`
4079}
4080
4081// String returns the string representation
4082func (s CreateDeploymentOutput) String() string {
4083	return awsutil.Prettify(s)
4084}
4085
4086// GoString returns the string representation
4087func (s CreateDeploymentOutput) GoString() string {
4088	return s.String()
4089}
4090
4091// SetDeploymentId sets the DeploymentId field's value.
4092func (s *CreateDeploymentOutput) SetDeploymentId(v string) *CreateDeploymentOutput {
4093	s.DeploymentId = &v
4094	return s
4095}
4096
4097// SetIotJobArn sets the IotJobArn field's value.
4098func (s *CreateDeploymentOutput) SetIotJobArn(v string) *CreateDeploymentOutput {
4099	s.IotJobArn = &v
4100	return s
4101}
4102
4103// SetIotJobId sets the IotJobId field's value.
4104func (s *CreateDeploymentOutput) SetIotJobId(v string) *CreateDeploymentOutput {
4105	s.IotJobId = &v
4106	return s
4107}
4108
4109type DeleteComponentInput struct {
4110	_ struct{} `type:"structure"`
4111
4112	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
4113	// of the component version.
4114	//
4115	// Arn is a required field
4116	Arn *string `location:"uri" locationName:"arn" type:"string" required:"true"`
4117}
4118
4119// String returns the string representation
4120func (s DeleteComponentInput) String() string {
4121	return awsutil.Prettify(s)
4122}
4123
4124// GoString returns the string representation
4125func (s DeleteComponentInput) GoString() string {
4126	return s.String()
4127}
4128
4129// Validate inspects the fields of the type to determine if they are valid.
4130func (s *DeleteComponentInput) Validate() error {
4131	invalidParams := request.ErrInvalidParams{Context: "DeleteComponentInput"}
4132	if s.Arn == nil {
4133		invalidParams.Add(request.NewErrParamRequired("Arn"))
4134	}
4135	if s.Arn != nil && len(*s.Arn) < 1 {
4136		invalidParams.Add(request.NewErrParamMinLen("Arn", 1))
4137	}
4138
4139	if invalidParams.Len() > 0 {
4140		return invalidParams
4141	}
4142	return nil
4143}
4144
4145// SetArn sets the Arn field's value.
4146func (s *DeleteComponentInput) SetArn(v string) *DeleteComponentInput {
4147	s.Arn = &v
4148	return s
4149}
4150
4151type DeleteComponentOutput struct {
4152	_ struct{} `type:"structure"`
4153}
4154
4155// String returns the string representation
4156func (s DeleteComponentOutput) String() string {
4157	return awsutil.Prettify(s)
4158}
4159
4160// GoString returns the string representation
4161func (s DeleteComponentOutput) GoString() string {
4162	return s.String()
4163}
4164
4165type DeleteCoreDeviceInput struct {
4166	_ struct{} `type:"structure"`
4167
4168	// The name of the core device. This is also the name of the IoT thing.
4169	//
4170	// CoreDeviceThingName is a required field
4171	CoreDeviceThingName *string `location:"uri" locationName:"coreDeviceThingName" min:"1" type:"string" required:"true"`
4172}
4173
4174// String returns the string representation
4175func (s DeleteCoreDeviceInput) String() string {
4176	return awsutil.Prettify(s)
4177}
4178
4179// GoString returns the string representation
4180func (s DeleteCoreDeviceInput) GoString() string {
4181	return s.String()
4182}
4183
4184// Validate inspects the fields of the type to determine if they are valid.
4185func (s *DeleteCoreDeviceInput) Validate() error {
4186	invalidParams := request.ErrInvalidParams{Context: "DeleteCoreDeviceInput"}
4187	if s.CoreDeviceThingName == nil {
4188		invalidParams.Add(request.NewErrParamRequired("CoreDeviceThingName"))
4189	}
4190	if s.CoreDeviceThingName != nil && len(*s.CoreDeviceThingName) < 1 {
4191		invalidParams.Add(request.NewErrParamMinLen("CoreDeviceThingName", 1))
4192	}
4193
4194	if invalidParams.Len() > 0 {
4195		return invalidParams
4196	}
4197	return nil
4198}
4199
4200// SetCoreDeviceThingName sets the CoreDeviceThingName field's value.
4201func (s *DeleteCoreDeviceInput) SetCoreDeviceThingName(v string) *DeleteCoreDeviceInput {
4202	s.CoreDeviceThingName = &v
4203	return s
4204}
4205
4206type DeleteCoreDeviceOutput struct {
4207	_ struct{} `type:"structure"`
4208}
4209
4210// String returns the string representation
4211func (s DeleteCoreDeviceOutput) String() string {
4212	return awsutil.Prettify(s)
4213}
4214
4215// GoString returns the string representation
4216func (s DeleteCoreDeviceOutput) GoString() string {
4217	return s.String()
4218}
4219
4220// Contains information about a deployment.
4221type Deployment struct {
4222	_ struct{} `type:"structure"`
4223
4224	// The time at which the deployment was created, expressed in ISO 8601 format.
4225	CreationTimestamp *time.Time `locationName:"creationTimestamp" type:"timestamp"`
4226
4227	// The ID of the deployment.
4228	DeploymentId *string `locationName:"deploymentId" min:"1" type:"string"`
4229
4230	// The name of the deployment.
4231	DeploymentName *string `locationName:"deploymentName" min:"1" type:"string"`
4232
4233	// The status of the deployment.
4234	DeploymentStatus *string `locationName:"deploymentStatus" type:"string" enum:"DeploymentStatus"`
4235
4236	// Whether or not the deployment is the latest revision for its target.
4237	IsLatestForTarget *bool `locationName:"isLatestForTarget" type:"boolean"`
4238
4239	// The revision number of the deployment.
4240	RevisionId *string `locationName:"revisionId" min:"1" type:"string"`
4241
4242	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
4243	// of the target IoT thing or thing group.
4244	TargetArn *string `locationName:"targetArn" type:"string"`
4245}
4246
4247// String returns the string representation
4248func (s Deployment) String() string {
4249	return awsutil.Prettify(s)
4250}
4251
4252// GoString returns the string representation
4253func (s Deployment) GoString() string {
4254	return s.String()
4255}
4256
4257// SetCreationTimestamp sets the CreationTimestamp field's value.
4258func (s *Deployment) SetCreationTimestamp(v time.Time) *Deployment {
4259	s.CreationTimestamp = &v
4260	return s
4261}
4262
4263// SetDeploymentId sets the DeploymentId field's value.
4264func (s *Deployment) SetDeploymentId(v string) *Deployment {
4265	s.DeploymentId = &v
4266	return s
4267}
4268
4269// SetDeploymentName sets the DeploymentName field's value.
4270func (s *Deployment) SetDeploymentName(v string) *Deployment {
4271	s.DeploymentName = &v
4272	return s
4273}
4274
4275// SetDeploymentStatus sets the DeploymentStatus field's value.
4276func (s *Deployment) SetDeploymentStatus(v string) *Deployment {
4277	s.DeploymentStatus = &v
4278	return s
4279}
4280
4281// SetIsLatestForTarget sets the IsLatestForTarget field's value.
4282func (s *Deployment) SetIsLatestForTarget(v bool) *Deployment {
4283	s.IsLatestForTarget = &v
4284	return s
4285}
4286
4287// SetRevisionId sets the RevisionId field's value.
4288func (s *Deployment) SetRevisionId(v string) *Deployment {
4289	s.RevisionId = &v
4290	return s
4291}
4292
4293// SetTargetArn sets the TargetArn field's value.
4294func (s *Deployment) SetTargetArn(v string) *Deployment {
4295	s.TargetArn = &v
4296	return s
4297}
4298
4299// Contains information about a deployment's policy that defines when components
4300// are safe to update.
4301//
4302// Each component on a device can report whether or not it's ready to update.
4303// After a component and its dependencies are ready, they can apply the update
4304// in the deployment. You can configure whether or not the deployment notifies
4305// components of an update and waits for a response. You specify the amount
4306// of time each component has to respond to the update notification.
4307type DeploymentComponentUpdatePolicy struct {
4308	_ struct{} `type:"structure"`
4309
4310	// Whether or not to notify components and wait for components to become safe
4311	// to update. Choose from the following options:
4312	//
4313	//    * NOTIFY_COMPONENTS – The deployment notifies each component before
4314	//    it stops and updates that component. Components can use the SubscribeToComponentUpdates
4315	//    (https://docs.aws.amazon.com/greengrass/v2/developerguide/interprocess-communication.html#ipc-operation-subscribetocomponentupdates)
4316	//    IPC operation to receive these notifications. Then, components can respond
4317	//    with the DeferComponentUpdate (https://docs.aws.amazon.com/greengrass/v2/developerguide/interprocess-communication.html#ipc-operation-defercomponentupdate)
4318	//    IPC operation. For more information, see Create deployments (https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html)
4319	//    in the IoT Greengrass V2 Developer Guide.
4320	//
4321	//    * SKIP_NOTIFY_COMPONENTS – The deployment doesn't notify components
4322	//    or wait for them to be safe to update.
4323	//
4324	// Default: NOTIFY_COMPONENTS
4325	Action *string `locationName:"action" type:"string" enum:"DeploymentComponentUpdatePolicyAction"`
4326
4327	// The amount of time in seconds that each component on a device has to report
4328	// that it's safe to update. If the component waits for longer than this timeout,
4329	// then the deployment proceeds on the device.
4330	//
4331	// Default: 60
4332	TimeoutInSeconds *int64 `locationName:"timeoutInSeconds" type:"integer"`
4333}
4334
4335// String returns the string representation
4336func (s DeploymentComponentUpdatePolicy) String() string {
4337	return awsutil.Prettify(s)
4338}
4339
4340// GoString returns the string representation
4341func (s DeploymentComponentUpdatePolicy) GoString() string {
4342	return s.String()
4343}
4344
4345// SetAction sets the Action field's value.
4346func (s *DeploymentComponentUpdatePolicy) SetAction(v string) *DeploymentComponentUpdatePolicy {
4347	s.Action = &v
4348	return s
4349}
4350
4351// SetTimeoutInSeconds sets the TimeoutInSeconds field's value.
4352func (s *DeploymentComponentUpdatePolicy) SetTimeoutInSeconds(v int64) *DeploymentComponentUpdatePolicy {
4353	s.TimeoutInSeconds = &v
4354	return s
4355}
4356
4357// Contains information about how long a component on a core device can validate
4358// its configuration updates before it times out. Components can use the SubscribeToValidateConfigurationUpdates
4359// (https://docs.aws.amazon.com/greengrass/v2/developerguide/interprocess-communication.html#ipc-operation-subscribetovalidateconfigurationupdates)
4360// IPC operation to receive notifications when a deployment specifies a configuration
4361// update. Then, components can respond with the SendConfigurationValidityReport
4362// (https://docs.aws.amazon.com/greengrass/v2/developerguide/interprocess-communication.html#ipc-operation-sendconfigurationvalidityreport)
4363// IPC operation. For more information, see Create deployments (https://docs.aws.amazon.com/greengrass/v2/developerguide/create-deployments.html)
4364// in the IoT Greengrass V2 Developer Guide.
4365type DeploymentConfigurationValidationPolicy struct {
4366	_ struct{} `type:"structure"`
4367
4368	// The amount of time in seconds that a component can validate its configuration
4369	// updates. If the validation time exceeds this timeout, then the deployment
4370	// proceeds for the device.
4371	//
4372	// Default: 30
4373	TimeoutInSeconds *int64 `locationName:"timeoutInSeconds" type:"integer"`
4374}
4375
4376// String returns the string representation
4377func (s DeploymentConfigurationValidationPolicy) String() string {
4378	return awsutil.Prettify(s)
4379}
4380
4381// GoString returns the string representation
4382func (s DeploymentConfigurationValidationPolicy) GoString() string {
4383	return s.String()
4384}
4385
4386// SetTimeoutInSeconds sets the TimeoutInSeconds field's value.
4387func (s *DeploymentConfigurationValidationPolicy) SetTimeoutInSeconds(v int64) *DeploymentConfigurationValidationPolicy {
4388	s.TimeoutInSeconds = &v
4389	return s
4390}
4391
4392// Contains information about an IoT job configuration.
4393type DeploymentIoTJobConfiguration struct {
4394	_ struct{} `type:"structure"`
4395
4396	// The stop configuration for the job. This configuration defines when and how
4397	// to stop a job rollout.
4398	AbortConfig *IoTJobAbortConfig `locationName:"abortConfig" type:"structure"`
4399
4400	// The rollout configuration for the job. This configuration defines the rate
4401	// at which the job rolls out to the fleet of target devices.
4402	JobExecutionsRolloutConfig *IoTJobExecutionsRolloutConfig `locationName:"jobExecutionsRolloutConfig" type:"structure"`
4403
4404	// The timeout configuration for the job. This configuration defines the amount
4405	// of time each device has to complete the job.
4406	TimeoutConfig *IoTJobTimeoutConfig `locationName:"timeoutConfig" type:"structure"`
4407}
4408
4409// String returns the string representation
4410func (s DeploymentIoTJobConfiguration) String() string {
4411	return awsutil.Prettify(s)
4412}
4413
4414// GoString returns the string representation
4415func (s DeploymentIoTJobConfiguration) GoString() string {
4416	return s.String()
4417}
4418
4419// Validate inspects the fields of the type to determine if they are valid.
4420func (s *DeploymentIoTJobConfiguration) Validate() error {
4421	invalidParams := request.ErrInvalidParams{Context: "DeploymentIoTJobConfiguration"}
4422	if s.AbortConfig != nil {
4423		if err := s.AbortConfig.Validate(); err != nil {
4424			invalidParams.AddNested("AbortConfig", err.(request.ErrInvalidParams))
4425		}
4426	}
4427	if s.JobExecutionsRolloutConfig != nil {
4428		if err := s.JobExecutionsRolloutConfig.Validate(); err != nil {
4429			invalidParams.AddNested("JobExecutionsRolloutConfig", err.(request.ErrInvalidParams))
4430		}
4431	}
4432
4433	if invalidParams.Len() > 0 {
4434		return invalidParams
4435	}
4436	return nil
4437}
4438
4439// SetAbortConfig sets the AbortConfig field's value.
4440func (s *DeploymentIoTJobConfiguration) SetAbortConfig(v *IoTJobAbortConfig) *DeploymentIoTJobConfiguration {
4441	s.AbortConfig = v
4442	return s
4443}
4444
4445// SetJobExecutionsRolloutConfig sets the JobExecutionsRolloutConfig field's value.
4446func (s *DeploymentIoTJobConfiguration) SetJobExecutionsRolloutConfig(v *IoTJobExecutionsRolloutConfig) *DeploymentIoTJobConfiguration {
4447	s.JobExecutionsRolloutConfig = v
4448	return s
4449}
4450
4451// SetTimeoutConfig sets the TimeoutConfig field's value.
4452func (s *DeploymentIoTJobConfiguration) SetTimeoutConfig(v *IoTJobTimeoutConfig) *DeploymentIoTJobConfiguration {
4453	s.TimeoutConfig = v
4454	return s
4455}
4456
4457// Contains information about policies that define how a deployment updates
4458// components and handles failure.
4459type DeploymentPolicies struct {
4460	_ struct{} `type:"structure"`
4461
4462	// The component update policy for the configuration deployment. This policy
4463	// defines when it's safe to deploy the configuration to devices.
4464	ComponentUpdatePolicy *DeploymentComponentUpdatePolicy `locationName:"componentUpdatePolicy" type:"structure"`
4465
4466	// The configuration validation policy for the configuration deployment. This
4467	// policy defines how long each component has to validate its configure updates.
4468	ConfigurationValidationPolicy *DeploymentConfigurationValidationPolicy `locationName:"configurationValidationPolicy" type:"structure"`
4469
4470	// The failure handling policy for the configuration deployment. This policy
4471	// defines what to do if the deployment fails.
4472	//
4473	// Default: ROLLBACK
4474	FailureHandlingPolicy *string `locationName:"failureHandlingPolicy" type:"string" enum:"DeploymentFailureHandlingPolicy"`
4475}
4476
4477// String returns the string representation
4478func (s DeploymentPolicies) String() string {
4479	return awsutil.Prettify(s)
4480}
4481
4482// GoString returns the string representation
4483func (s DeploymentPolicies) GoString() string {
4484	return s.String()
4485}
4486
4487// SetComponentUpdatePolicy sets the ComponentUpdatePolicy field's value.
4488func (s *DeploymentPolicies) SetComponentUpdatePolicy(v *DeploymentComponentUpdatePolicy) *DeploymentPolicies {
4489	s.ComponentUpdatePolicy = v
4490	return s
4491}
4492
4493// SetConfigurationValidationPolicy sets the ConfigurationValidationPolicy field's value.
4494func (s *DeploymentPolicies) SetConfigurationValidationPolicy(v *DeploymentConfigurationValidationPolicy) *DeploymentPolicies {
4495	s.ConfigurationValidationPolicy = v
4496	return s
4497}
4498
4499// SetFailureHandlingPolicy sets the FailureHandlingPolicy field's value.
4500func (s *DeploymentPolicies) SetFailureHandlingPolicy(v string) *DeploymentPolicies {
4501	s.FailureHandlingPolicy = &v
4502	return s
4503}
4504
4505type DescribeComponentInput struct {
4506	_ struct{} `type:"structure"`
4507
4508	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
4509	// of the component version.
4510	//
4511	// Arn is a required field
4512	Arn *string `location:"uri" locationName:"arn" type:"string" required:"true"`
4513}
4514
4515// String returns the string representation
4516func (s DescribeComponentInput) String() string {
4517	return awsutil.Prettify(s)
4518}
4519
4520// GoString returns the string representation
4521func (s DescribeComponentInput) GoString() string {
4522	return s.String()
4523}
4524
4525// Validate inspects the fields of the type to determine if they are valid.
4526func (s *DescribeComponentInput) Validate() error {
4527	invalidParams := request.ErrInvalidParams{Context: "DescribeComponentInput"}
4528	if s.Arn == nil {
4529		invalidParams.Add(request.NewErrParamRequired("Arn"))
4530	}
4531	if s.Arn != nil && len(*s.Arn) < 1 {
4532		invalidParams.Add(request.NewErrParamMinLen("Arn", 1))
4533	}
4534
4535	if invalidParams.Len() > 0 {
4536		return invalidParams
4537	}
4538	return nil
4539}
4540
4541// SetArn sets the Arn field's value.
4542func (s *DescribeComponentInput) SetArn(v string) *DescribeComponentInput {
4543	s.Arn = &v
4544	return s
4545}
4546
4547type DescribeComponentOutput struct {
4548	_ struct{} `type:"structure"`
4549
4550	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
4551	// of the component version.
4552	Arn *string `locationName:"arn" type:"string"`
4553
4554	// The name of the component.
4555	ComponentName *string `locationName:"componentName" min:"1" type:"string"`
4556
4557	// The version of the component.
4558	ComponentVersion *string `locationName:"componentVersion" min:"1" type:"string"`
4559
4560	// The time at which the component was created, expressed in ISO 8601 format.
4561	CreationTimestamp *time.Time `locationName:"creationTimestamp" type:"timestamp"`
4562
4563	// The description of the component version.
4564	Description *string `locationName:"description" type:"string"`
4565
4566	// The platforms that the component version supports.
4567	Platforms []*ComponentPlatform `locationName:"platforms" type:"list"`
4568
4569	// The publisher of the component version.
4570	Publisher *string `locationName:"publisher" type:"string"`
4571
4572	// The status of the component version in IoT Greengrass V2. This status is
4573	// different from the status of the component on a core device.
4574	Status *CloudComponentStatus `locationName:"status" type:"structure"`
4575
4576	// A list of key-value pairs that contain metadata for the resource. For more
4577	// information, see Tag your resources (https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html)
4578	// in the IoT Greengrass V2 Developer Guide.
4579	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
4580}
4581
4582// String returns the string representation
4583func (s DescribeComponentOutput) String() string {
4584	return awsutil.Prettify(s)
4585}
4586
4587// GoString returns the string representation
4588func (s DescribeComponentOutput) GoString() string {
4589	return s.String()
4590}
4591
4592// SetArn sets the Arn field's value.
4593func (s *DescribeComponentOutput) SetArn(v string) *DescribeComponentOutput {
4594	s.Arn = &v
4595	return s
4596}
4597
4598// SetComponentName sets the ComponentName field's value.
4599func (s *DescribeComponentOutput) SetComponentName(v string) *DescribeComponentOutput {
4600	s.ComponentName = &v
4601	return s
4602}
4603
4604// SetComponentVersion sets the ComponentVersion field's value.
4605func (s *DescribeComponentOutput) SetComponentVersion(v string) *DescribeComponentOutput {
4606	s.ComponentVersion = &v
4607	return s
4608}
4609
4610// SetCreationTimestamp sets the CreationTimestamp field's value.
4611func (s *DescribeComponentOutput) SetCreationTimestamp(v time.Time) *DescribeComponentOutput {
4612	s.CreationTimestamp = &v
4613	return s
4614}
4615
4616// SetDescription sets the Description field's value.
4617func (s *DescribeComponentOutput) SetDescription(v string) *DescribeComponentOutput {
4618	s.Description = &v
4619	return s
4620}
4621
4622// SetPlatforms sets the Platforms field's value.
4623func (s *DescribeComponentOutput) SetPlatforms(v []*ComponentPlatform) *DescribeComponentOutput {
4624	s.Platforms = v
4625	return s
4626}
4627
4628// SetPublisher sets the Publisher field's value.
4629func (s *DescribeComponentOutput) SetPublisher(v string) *DescribeComponentOutput {
4630	s.Publisher = &v
4631	return s
4632}
4633
4634// SetStatus sets the Status field's value.
4635func (s *DescribeComponentOutput) SetStatus(v *CloudComponentStatus) *DescribeComponentOutput {
4636	s.Status = v
4637	return s
4638}
4639
4640// SetTags sets the Tags field's value.
4641func (s *DescribeComponentOutput) SetTags(v map[string]*string) *DescribeComponentOutput {
4642	s.Tags = v
4643	return s
4644}
4645
4646// Contains a request to disassociate a client device from a core device. The
4647// BatchDisassociateClientDeviceWithCoreDevice (https://docs.aws.amazon.com/greengrass/v2/APIReference/API_BatchDisassociateClientDeviceWithCoreDevice.html)
4648// operation consumes a list of these requests.
4649type DisassociateClientDeviceFromCoreDeviceEntry struct {
4650	_ struct{} `type:"structure"`
4651
4652	// The name of the IoT thing that represents the client device to disassociate.
4653	//
4654	// ThingName is a required field
4655	ThingName *string `locationName:"thingName" min:"1" type:"string" required:"true"`
4656}
4657
4658// String returns the string representation
4659func (s DisassociateClientDeviceFromCoreDeviceEntry) String() string {
4660	return awsutil.Prettify(s)
4661}
4662
4663// GoString returns the string representation
4664func (s DisassociateClientDeviceFromCoreDeviceEntry) GoString() string {
4665	return s.String()
4666}
4667
4668// Validate inspects the fields of the type to determine if they are valid.
4669func (s *DisassociateClientDeviceFromCoreDeviceEntry) Validate() error {
4670	invalidParams := request.ErrInvalidParams{Context: "DisassociateClientDeviceFromCoreDeviceEntry"}
4671	if s.ThingName == nil {
4672		invalidParams.Add(request.NewErrParamRequired("ThingName"))
4673	}
4674	if s.ThingName != nil && len(*s.ThingName) < 1 {
4675		invalidParams.Add(request.NewErrParamMinLen("ThingName", 1))
4676	}
4677
4678	if invalidParams.Len() > 0 {
4679		return invalidParams
4680	}
4681	return nil
4682}
4683
4684// SetThingName sets the ThingName field's value.
4685func (s *DisassociateClientDeviceFromCoreDeviceEntry) SetThingName(v string) *DisassociateClientDeviceFromCoreDeviceEntry {
4686	s.ThingName = &v
4687	return s
4688}
4689
4690// Contains an error that occurs from a request to disassociate a client device
4691// from a core device. The BatchDisassociateClientDeviceWithCoreDevice (https://docs.aws.amazon.com/greengrass/v2/APIReference/API_BatchDisassociateClientDeviceWithCoreDevice.html)
4692// operation returns a list of these errors.
4693type DisassociateClientDeviceFromCoreDeviceErrorEntry struct {
4694	_ struct{} `type:"structure"`
4695
4696	// The error code for the request.
4697	Code *string `locationName:"code" min:"1" type:"string"`
4698
4699	// A message that provides additional information about the error.
4700	Message *string `locationName:"message" min:"1" type:"string"`
4701
4702	// The name of the IoT thing whose disassociate request failed.
4703	ThingName *string `locationName:"thingName" min:"1" type:"string"`
4704}
4705
4706// String returns the string representation
4707func (s DisassociateClientDeviceFromCoreDeviceErrorEntry) String() string {
4708	return awsutil.Prettify(s)
4709}
4710
4711// GoString returns the string representation
4712func (s DisassociateClientDeviceFromCoreDeviceErrorEntry) GoString() string {
4713	return s.String()
4714}
4715
4716// SetCode sets the Code field's value.
4717func (s *DisassociateClientDeviceFromCoreDeviceErrorEntry) SetCode(v string) *DisassociateClientDeviceFromCoreDeviceErrorEntry {
4718	s.Code = &v
4719	return s
4720}
4721
4722// SetMessage sets the Message field's value.
4723func (s *DisassociateClientDeviceFromCoreDeviceErrorEntry) SetMessage(v string) *DisassociateClientDeviceFromCoreDeviceErrorEntry {
4724	s.Message = &v
4725	return s
4726}
4727
4728// SetThingName sets the ThingName field's value.
4729func (s *DisassociateClientDeviceFromCoreDeviceErrorEntry) SetThingName(v string) *DisassociateClientDeviceFromCoreDeviceErrorEntry {
4730	s.ThingName = &v
4731	return s
4732}
4733
4734// Contains information about a deployment job that IoT Greengrass sends to
4735// a Greengrass core device.
4736type EffectiveDeployment struct {
4737	_ struct{} `type:"structure"`
4738
4739	// The status of the deployment job on the Greengrass core device.
4740	//
4741	// CoreDeviceExecutionStatus is a required field
4742	CoreDeviceExecutionStatus *string `locationName:"coreDeviceExecutionStatus" type:"string" required:"true" enum:"EffectiveDeploymentExecutionStatus"`
4743
4744	// The time at which the deployment was created, expressed in ISO 8601 format.
4745	//
4746	// CreationTimestamp is a required field
4747	CreationTimestamp *time.Time `locationName:"creationTimestamp" type:"timestamp" required:"true"`
4748
4749	// The ID of the deployment.
4750	//
4751	// DeploymentId is a required field
4752	DeploymentId *string `locationName:"deploymentId" type:"string" required:"true"`
4753
4754	// The name of the deployment.
4755	//
4756	// DeploymentName is a required field
4757	DeploymentName *string `locationName:"deploymentName" type:"string" required:"true"`
4758
4759	// The description of the deployment job.
4760	Description *string `locationName:"description" min:"1" type:"string"`
4761
4762	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
4763	// of the IoT job that applies the deployment to target devices.
4764	IotJobArn *string `locationName:"iotJobArn" type:"string"`
4765
4766	// The ID of the IoT job that applies the deployment to target devices.
4767	IotJobId *string `locationName:"iotJobId" min:"1" type:"string"`
4768
4769	// The time at which the deployment job was last modified, expressed in ISO
4770	// 8601 format.
4771	//
4772	// ModifiedTimestamp is a required field
4773	ModifiedTimestamp *time.Time `locationName:"modifiedTimestamp" type:"timestamp" required:"true"`
4774
4775	// The reason code for the update, if the job was updated.
4776	Reason *string `locationName:"reason" type:"string"`
4777
4778	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
4779	// of the target IoT thing or thing group.
4780	//
4781	// TargetArn is a required field
4782	TargetArn *string `locationName:"targetArn" type:"string" required:"true"`
4783}
4784
4785// String returns the string representation
4786func (s EffectiveDeployment) String() string {
4787	return awsutil.Prettify(s)
4788}
4789
4790// GoString returns the string representation
4791func (s EffectiveDeployment) GoString() string {
4792	return s.String()
4793}
4794
4795// SetCoreDeviceExecutionStatus sets the CoreDeviceExecutionStatus field's value.
4796func (s *EffectiveDeployment) SetCoreDeviceExecutionStatus(v string) *EffectiveDeployment {
4797	s.CoreDeviceExecutionStatus = &v
4798	return s
4799}
4800
4801// SetCreationTimestamp sets the CreationTimestamp field's value.
4802func (s *EffectiveDeployment) SetCreationTimestamp(v time.Time) *EffectiveDeployment {
4803	s.CreationTimestamp = &v
4804	return s
4805}
4806
4807// SetDeploymentId sets the DeploymentId field's value.
4808func (s *EffectiveDeployment) SetDeploymentId(v string) *EffectiveDeployment {
4809	s.DeploymentId = &v
4810	return s
4811}
4812
4813// SetDeploymentName sets the DeploymentName field's value.
4814func (s *EffectiveDeployment) SetDeploymentName(v string) *EffectiveDeployment {
4815	s.DeploymentName = &v
4816	return s
4817}
4818
4819// SetDescription sets the Description field's value.
4820func (s *EffectiveDeployment) SetDescription(v string) *EffectiveDeployment {
4821	s.Description = &v
4822	return s
4823}
4824
4825// SetIotJobArn sets the IotJobArn field's value.
4826func (s *EffectiveDeployment) SetIotJobArn(v string) *EffectiveDeployment {
4827	s.IotJobArn = &v
4828	return s
4829}
4830
4831// SetIotJobId sets the IotJobId field's value.
4832func (s *EffectiveDeployment) SetIotJobId(v string) *EffectiveDeployment {
4833	s.IotJobId = &v
4834	return s
4835}
4836
4837// SetModifiedTimestamp sets the ModifiedTimestamp field's value.
4838func (s *EffectiveDeployment) SetModifiedTimestamp(v time.Time) *EffectiveDeployment {
4839	s.ModifiedTimestamp = &v
4840	return s
4841}
4842
4843// SetReason sets the Reason field's value.
4844func (s *EffectiveDeployment) SetReason(v string) *EffectiveDeployment {
4845	s.Reason = &v
4846	return s
4847}
4848
4849// SetTargetArn sets the TargetArn field's value.
4850func (s *EffectiveDeployment) SetTargetArn(v string) *EffectiveDeployment {
4851	s.TargetArn = &v
4852	return s
4853}
4854
4855type GetComponentInput struct {
4856	_ struct{} `type:"structure"`
4857
4858	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
4859	// of the component version.
4860	//
4861	// Arn is a required field
4862	Arn *string `location:"uri" locationName:"arn" type:"string" required:"true"`
4863
4864	// The format of the recipe.
4865	RecipeOutputFormat *string `location:"querystring" locationName:"recipeOutputFormat" type:"string" enum:"RecipeOutputFormat"`
4866}
4867
4868// String returns the string representation
4869func (s GetComponentInput) String() string {
4870	return awsutil.Prettify(s)
4871}
4872
4873// GoString returns the string representation
4874func (s GetComponentInput) GoString() string {
4875	return s.String()
4876}
4877
4878// Validate inspects the fields of the type to determine if they are valid.
4879func (s *GetComponentInput) Validate() error {
4880	invalidParams := request.ErrInvalidParams{Context: "GetComponentInput"}
4881	if s.Arn == nil {
4882		invalidParams.Add(request.NewErrParamRequired("Arn"))
4883	}
4884	if s.Arn != nil && len(*s.Arn) < 1 {
4885		invalidParams.Add(request.NewErrParamMinLen("Arn", 1))
4886	}
4887
4888	if invalidParams.Len() > 0 {
4889		return invalidParams
4890	}
4891	return nil
4892}
4893
4894// SetArn sets the Arn field's value.
4895func (s *GetComponentInput) SetArn(v string) *GetComponentInput {
4896	s.Arn = &v
4897	return s
4898}
4899
4900// SetRecipeOutputFormat sets the RecipeOutputFormat field's value.
4901func (s *GetComponentInput) SetRecipeOutputFormat(v string) *GetComponentInput {
4902	s.RecipeOutputFormat = &v
4903	return s
4904}
4905
4906type GetComponentOutput struct {
4907	_ struct{} `type:"structure"`
4908
4909	// The recipe of the component version.
4910	//
4911	// Recipe is automatically base64 encoded/decoded by the SDK.
4912	//
4913	// Recipe is a required field
4914	Recipe []byte `locationName:"recipe" type:"blob" required:"true"`
4915
4916	// The format of the recipe.
4917	//
4918	// RecipeOutputFormat is a required field
4919	RecipeOutputFormat *string `locationName:"recipeOutputFormat" type:"string" required:"true" enum:"RecipeOutputFormat"`
4920
4921	// A list of key-value pairs that contain metadata for the resource. For more
4922	// information, see Tag your resources (https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html)
4923	// in the IoT Greengrass V2 Developer Guide.
4924	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
4925}
4926
4927// String returns the string representation
4928func (s GetComponentOutput) String() string {
4929	return awsutil.Prettify(s)
4930}
4931
4932// GoString returns the string representation
4933func (s GetComponentOutput) GoString() string {
4934	return s.String()
4935}
4936
4937// SetRecipe sets the Recipe field's value.
4938func (s *GetComponentOutput) SetRecipe(v []byte) *GetComponentOutput {
4939	s.Recipe = v
4940	return s
4941}
4942
4943// SetRecipeOutputFormat sets the RecipeOutputFormat field's value.
4944func (s *GetComponentOutput) SetRecipeOutputFormat(v string) *GetComponentOutput {
4945	s.RecipeOutputFormat = &v
4946	return s
4947}
4948
4949// SetTags sets the Tags field's value.
4950func (s *GetComponentOutput) SetTags(v map[string]*string) *GetComponentOutput {
4951	s.Tags = v
4952	return s
4953}
4954
4955type GetComponentVersionArtifactInput struct {
4956	_ struct{} `type:"structure"`
4957
4958	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
4959	// of the component version. Specify the ARN of a public component version.
4960	//
4961	// Arn is a required field
4962	Arn *string `location:"uri" locationName:"arn" type:"string" required:"true"`
4963
4964	// The name of the artifact.
4965	//
4966	// You can use the GetComponent (https://docs.aws.amazon.com/greengrass/v2/APIReference/API_GetComponent.html)
4967	// operation to download the component recipe, which includes the URI of the
4968	// artifact. The artifact name is the section of the URI after the scheme. For
4969	// example, in the artifact URI greengrass:SomeArtifact.zip, the artifact name
4970	// is SomeArtifact.zip.
4971	//
4972	// ArtifactName is a required field
4973	ArtifactName *string `location:"uri" locationName:"artifactName" min:"1" type:"string" required:"true"`
4974}
4975
4976// String returns the string representation
4977func (s GetComponentVersionArtifactInput) String() string {
4978	return awsutil.Prettify(s)
4979}
4980
4981// GoString returns the string representation
4982func (s GetComponentVersionArtifactInput) GoString() string {
4983	return s.String()
4984}
4985
4986// Validate inspects the fields of the type to determine if they are valid.
4987func (s *GetComponentVersionArtifactInput) Validate() error {
4988	invalidParams := request.ErrInvalidParams{Context: "GetComponentVersionArtifactInput"}
4989	if s.Arn == nil {
4990		invalidParams.Add(request.NewErrParamRequired("Arn"))
4991	}
4992	if s.Arn != nil && len(*s.Arn) < 1 {
4993		invalidParams.Add(request.NewErrParamMinLen("Arn", 1))
4994	}
4995	if s.ArtifactName == nil {
4996		invalidParams.Add(request.NewErrParamRequired("ArtifactName"))
4997	}
4998	if s.ArtifactName != nil && len(*s.ArtifactName) < 1 {
4999		invalidParams.Add(request.NewErrParamMinLen("ArtifactName", 1))
5000	}
5001
5002	if invalidParams.Len() > 0 {
5003		return invalidParams
5004	}
5005	return nil
5006}
5007
5008// SetArn sets the Arn field's value.
5009func (s *GetComponentVersionArtifactInput) SetArn(v string) *GetComponentVersionArtifactInput {
5010	s.Arn = &v
5011	return s
5012}
5013
5014// SetArtifactName sets the ArtifactName field's value.
5015func (s *GetComponentVersionArtifactInput) SetArtifactName(v string) *GetComponentVersionArtifactInput {
5016	s.ArtifactName = &v
5017	return s
5018}
5019
5020type GetComponentVersionArtifactOutput struct {
5021	_ struct{} `type:"structure"`
5022
5023	// The URL of the artifact.
5024	//
5025	// PreSignedUrl is a required field
5026	PreSignedUrl *string `locationName:"preSignedUrl" min:"1" type:"string" required:"true"`
5027}
5028
5029// String returns the string representation
5030func (s GetComponentVersionArtifactOutput) String() string {
5031	return awsutil.Prettify(s)
5032}
5033
5034// GoString returns the string representation
5035func (s GetComponentVersionArtifactOutput) GoString() string {
5036	return s.String()
5037}
5038
5039// SetPreSignedUrl sets the PreSignedUrl field's value.
5040func (s *GetComponentVersionArtifactOutput) SetPreSignedUrl(v string) *GetComponentVersionArtifactOutput {
5041	s.PreSignedUrl = &v
5042	return s
5043}
5044
5045type GetCoreDeviceInput struct {
5046	_ struct{} `type:"structure"`
5047
5048	// The name of the core device. This is also the name of the IoT thing.
5049	//
5050	// CoreDeviceThingName is a required field
5051	CoreDeviceThingName *string `location:"uri" locationName:"coreDeviceThingName" min:"1" type:"string" required:"true"`
5052}
5053
5054// String returns the string representation
5055func (s GetCoreDeviceInput) String() string {
5056	return awsutil.Prettify(s)
5057}
5058
5059// GoString returns the string representation
5060func (s GetCoreDeviceInput) GoString() string {
5061	return s.String()
5062}
5063
5064// Validate inspects the fields of the type to determine if they are valid.
5065func (s *GetCoreDeviceInput) Validate() error {
5066	invalidParams := request.ErrInvalidParams{Context: "GetCoreDeviceInput"}
5067	if s.CoreDeviceThingName == nil {
5068		invalidParams.Add(request.NewErrParamRequired("CoreDeviceThingName"))
5069	}
5070	if s.CoreDeviceThingName != nil && len(*s.CoreDeviceThingName) < 1 {
5071		invalidParams.Add(request.NewErrParamMinLen("CoreDeviceThingName", 1))
5072	}
5073
5074	if invalidParams.Len() > 0 {
5075		return invalidParams
5076	}
5077	return nil
5078}
5079
5080// SetCoreDeviceThingName sets the CoreDeviceThingName field's value.
5081func (s *GetCoreDeviceInput) SetCoreDeviceThingName(v string) *GetCoreDeviceInput {
5082	s.CoreDeviceThingName = &v
5083	return s
5084}
5085
5086type GetCoreDeviceOutput struct {
5087	_ struct{} `type:"structure"`
5088
5089	// The computer architecture of the core device.
5090	Architecture *string `locationName:"architecture" min:"1" type:"string"`
5091
5092	// The name of the core device. This is also the name of the IoT thing.
5093	CoreDeviceThingName *string `locationName:"coreDeviceThingName" min:"1" type:"string"`
5094
5095	// The version of the IoT Greengrass Core software that the core device runs.
5096	// This version is equivalent to the version of the Greengrass nucleus component
5097	// that runs on the core device. For more information, see the Greengrass nucleus
5098	// component (https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-nucleus-component.html)
5099	// in the IoT Greengrass V2 Developer Guide.
5100	CoreVersion *string `locationName:"coreVersion" min:"1" type:"string"`
5101
5102	// The time at which the core device's status last updated, expressed in ISO
5103	// 8601 format.
5104	LastStatusUpdateTimestamp *time.Time `locationName:"lastStatusUpdateTimestamp" type:"timestamp"`
5105
5106	// The operating system platform that the core device runs.
5107	Platform *string `locationName:"platform" min:"1" type:"string"`
5108
5109	// The status of the core device. The core device status can be:
5110	//
5111	//    * HEALTHY – The IoT Greengrass Core software and all components run
5112	//    on the core device without issue.
5113	//
5114	//    * UNHEALTHY – The IoT Greengrass Core software or a component is in
5115	//    a failed state on the core device.
5116	Status *string `locationName:"status" type:"string" enum:"CoreDeviceStatus"`
5117
5118	// A list of key-value pairs that contain metadata for the resource. For more
5119	// information, see Tag your resources (https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html)
5120	// in the IoT Greengrass V2 Developer Guide.
5121	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
5122}
5123
5124// String returns the string representation
5125func (s GetCoreDeviceOutput) String() string {
5126	return awsutil.Prettify(s)
5127}
5128
5129// GoString returns the string representation
5130func (s GetCoreDeviceOutput) GoString() string {
5131	return s.String()
5132}
5133
5134// SetArchitecture sets the Architecture field's value.
5135func (s *GetCoreDeviceOutput) SetArchitecture(v string) *GetCoreDeviceOutput {
5136	s.Architecture = &v
5137	return s
5138}
5139
5140// SetCoreDeviceThingName sets the CoreDeviceThingName field's value.
5141func (s *GetCoreDeviceOutput) SetCoreDeviceThingName(v string) *GetCoreDeviceOutput {
5142	s.CoreDeviceThingName = &v
5143	return s
5144}
5145
5146// SetCoreVersion sets the CoreVersion field's value.
5147func (s *GetCoreDeviceOutput) SetCoreVersion(v string) *GetCoreDeviceOutput {
5148	s.CoreVersion = &v
5149	return s
5150}
5151
5152// SetLastStatusUpdateTimestamp sets the LastStatusUpdateTimestamp field's value.
5153func (s *GetCoreDeviceOutput) SetLastStatusUpdateTimestamp(v time.Time) *GetCoreDeviceOutput {
5154	s.LastStatusUpdateTimestamp = &v
5155	return s
5156}
5157
5158// SetPlatform sets the Platform field's value.
5159func (s *GetCoreDeviceOutput) SetPlatform(v string) *GetCoreDeviceOutput {
5160	s.Platform = &v
5161	return s
5162}
5163
5164// SetStatus sets the Status field's value.
5165func (s *GetCoreDeviceOutput) SetStatus(v string) *GetCoreDeviceOutput {
5166	s.Status = &v
5167	return s
5168}
5169
5170// SetTags sets the Tags field's value.
5171func (s *GetCoreDeviceOutput) SetTags(v map[string]*string) *GetCoreDeviceOutput {
5172	s.Tags = v
5173	return s
5174}
5175
5176type GetDeploymentInput struct {
5177	_ struct{} `type:"structure"`
5178
5179	// The ID of the deployment.
5180	//
5181	// DeploymentId is a required field
5182	DeploymentId *string `location:"uri" locationName:"deploymentId" min:"1" type:"string" required:"true"`
5183}
5184
5185// String returns the string representation
5186func (s GetDeploymentInput) String() string {
5187	return awsutil.Prettify(s)
5188}
5189
5190// GoString returns the string representation
5191func (s GetDeploymentInput) GoString() string {
5192	return s.String()
5193}
5194
5195// Validate inspects the fields of the type to determine if they are valid.
5196func (s *GetDeploymentInput) Validate() error {
5197	invalidParams := request.ErrInvalidParams{Context: "GetDeploymentInput"}
5198	if s.DeploymentId == nil {
5199		invalidParams.Add(request.NewErrParamRequired("DeploymentId"))
5200	}
5201	if s.DeploymentId != nil && len(*s.DeploymentId) < 1 {
5202		invalidParams.Add(request.NewErrParamMinLen("DeploymentId", 1))
5203	}
5204
5205	if invalidParams.Len() > 0 {
5206		return invalidParams
5207	}
5208	return nil
5209}
5210
5211// SetDeploymentId sets the DeploymentId field's value.
5212func (s *GetDeploymentInput) SetDeploymentId(v string) *GetDeploymentInput {
5213	s.DeploymentId = &v
5214	return s
5215}
5216
5217type GetDeploymentOutput struct {
5218	_ struct{} `type:"structure"`
5219
5220	// The components to deploy. This is a dictionary, where each key is the name
5221	// of a component, and each key's value is the version and configuration to
5222	// deploy for that component.
5223	Components map[string]*ComponentDeploymentSpecification `locationName:"components" type:"map"`
5224
5225	// The time at which the deployment was created, expressed in ISO 8601 format.
5226	CreationTimestamp *time.Time `locationName:"creationTimestamp" type:"timestamp"`
5227
5228	// The ID of the deployment.
5229	DeploymentId *string `locationName:"deploymentId" min:"1" type:"string"`
5230
5231	// The name of the deployment.
5232	DeploymentName *string `locationName:"deploymentName" type:"string"`
5233
5234	// The deployment policies for the deployment. These policies define how the
5235	// deployment updates components and handles failure.
5236	DeploymentPolicies *DeploymentPolicies `locationName:"deploymentPolicies" type:"structure"`
5237
5238	// The status of the deployment.
5239	DeploymentStatus *string `locationName:"deploymentStatus" type:"string" enum:"DeploymentStatus"`
5240
5241	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
5242	// of the IoT job that applies the deployment to target devices.
5243	IotJobArn *string `locationName:"iotJobArn" type:"string"`
5244
5245	// The job configuration for the deployment configuration. The job configuration
5246	// specifies the rollout, timeout, and stop configurations for the deployment
5247	// configuration.
5248	IotJobConfiguration *DeploymentIoTJobConfiguration `locationName:"iotJobConfiguration" type:"structure"`
5249
5250	// The ID of the IoT job that applies the deployment to target devices.
5251	IotJobId *string `locationName:"iotJobId" type:"string"`
5252
5253	// Whether or not the deployment is the latest revision for its target.
5254	IsLatestForTarget *bool `locationName:"isLatestForTarget" type:"boolean"`
5255
5256	// The revision number of the deployment.
5257	RevisionId *string `locationName:"revisionId" min:"1" type:"string"`
5258
5259	// A list of key-value pairs that contain metadata for the resource. For more
5260	// information, see Tag your resources (https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html)
5261	// in the IoT Greengrass V2 Developer Guide.
5262	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
5263
5264	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
5265	// of the target IoT thing or thing group.
5266	TargetArn *string `locationName:"targetArn" type:"string"`
5267}
5268
5269// String returns the string representation
5270func (s GetDeploymentOutput) String() string {
5271	return awsutil.Prettify(s)
5272}
5273
5274// GoString returns the string representation
5275func (s GetDeploymentOutput) GoString() string {
5276	return s.String()
5277}
5278
5279// SetComponents sets the Components field's value.
5280func (s *GetDeploymentOutput) SetComponents(v map[string]*ComponentDeploymentSpecification) *GetDeploymentOutput {
5281	s.Components = v
5282	return s
5283}
5284
5285// SetCreationTimestamp sets the CreationTimestamp field's value.
5286func (s *GetDeploymentOutput) SetCreationTimestamp(v time.Time) *GetDeploymentOutput {
5287	s.CreationTimestamp = &v
5288	return s
5289}
5290
5291// SetDeploymentId sets the DeploymentId field's value.
5292func (s *GetDeploymentOutput) SetDeploymentId(v string) *GetDeploymentOutput {
5293	s.DeploymentId = &v
5294	return s
5295}
5296
5297// SetDeploymentName sets the DeploymentName field's value.
5298func (s *GetDeploymentOutput) SetDeploymentName(v string) *GetDeploymentOutput {
5299	s.DeploymentName = &v
5300	return s
5301}
5302
5303// SetDeploymentPolicies sets the DeploymentPolicies field's value.
5304func (s *GetDeploymentOutput) SetDeploymentPolicies(v *DeploymentPolicies) *GetDeploymentOutput {
5305	s.DeploymentPolicies = v
5306	return s
5307}
5308
5309// SetDeploymentStatus sets the DeploymentStatus field's value.
5310func (s *GetDeploymentOutput) SetDeploymentStatus(v string) *GetDeploymentOutput {
5311	s.DeploymentStatus = &v
5312	return s
5313}
5314
5315// SetIotJobArn sets the IotJobArn field's value.
5316func (s *GetDeploymentOutput) SetIotJobArn(v string) *GetDeploymentOutput {
5317	s.IotJobArn = &v
5318	return s
5319}
5320
5321// SetIotJobConfiguration sets the IotJobConfiguration field's value.
5322func (s *GetDeploymentOutput) SetIotJobConfiguration(v *DeploymentIoTJobConfiguration) *GetDeploymentOutput {
5323	s.IotJobConfiguration = v
5324	return s
5325}
5326
5327// SetIotJobId sets the IotJobId field's value.
5328func (s *GetDeploymentOutput) SetIotJobId(v string) *GetDeploymentOutput {
5329	s.IotJobId = &v
5330	return s
5331}
5332
5333// SetIsLatestForTarget sets the IsLatestForTarget field's value.
5334func (s *GetDeploymentOutput) SetIsLatestForTarget(v bool) *GetDeploymentOutput {
5335	s.IsLatestForTarget = &v
5336	return s
5337}
5338
5339// SetRevisionId sets the RevisionId field's value.
5340func (s *GetDeploymentOutput) SetRevisionId(v string) *GetDeploymentOutput {
5341	s.RevisionId = &v
5342	return s
5343}
5344
5345// SetTags sets the Tags field's value.
5346func (s *GetDeploymentOutput) SetTags(v map[string]*string) *GetDeploymentOutput {
5347	s.Tags = v
5348	return s
5349}
5350
5351// SetTargetArn sets the TargetArn field's value.
5352func (s *GetDeploymentOutput) SetTargetArn(v string) *GetDeploymentOutput {
5353	s.TargetArn = &v
5354	return s
5355}
5356
5357// Contains information about a component on a Greengrass core device.
5358type InstalledComponent struct {
5359	_ struct{} `type:"structure"`
5360
5361	// The name of the component.
5362	ComponentName *string `locationName:"componentName" min:"1" type:"string"`
5363
5364	// The version of the component.
5365	ComponentVersion *string `locationName:"componentVersion" min:"1" type:"string"`
5366
5367	// Whether or not the component is a root component.
5368	IsRoot *bool `locationName:"isRoot" type:"boolean"`
5369
5370	// The lifecycle state of the component.
5371	LifecycleState *string `locationName:"lifecycleState" type:"string" enum:"InstalledComponentLifecycleState"`
5372
5373	// The details about the lifecycle state of the component.
5374	LifecycleStateDetails *string `locationName:"lifecycleStateDetails" min:"1" type:"string"`
5375}
5376
5377// String returns the string representation
5378func (s InstalledComponent) String() string {
5379	return awsutil.Prettify(s)
5380}
5381
5382// GoString returns the string representation
5383func (s InstalledComponent) GoString() string {
5384	return s.String()
5385}
5386
5387// SetComponentName sets the ComponentName field's value.
5388func (s *InstalledComponent) SetComponentName(v string) *InstalledComponent {
5389	s.ComponentName = &v
5390	return s
5391}
5392
5393// SetComponentVersion sets the ComponentVersion field's value.
5394func (s *InstalledComponent) SetComponentVersion(v string) *InstalledComponent {
5395	s.ComponentVersion = &v
5396	return s
5397}
5398
5399// SetIsRoot sets the IsRoot field's value.
5400func (s *InstalledComponent) SetIsRoot(v bool) *InstalledComponent {
5401	s.IsRoot = &v
5402	return s
5403}
5404
5405// SetLifecycleState sets the LifecycleState field's value.
5406func (s *InstalledComponent) SetLifecycleState(v string) *InstalledComponent {
5407	s.LifecycleState = &v
5408	return s
5409}
5410
5411// SetLifecycleStateDetails sets the LifecycleStateDetails field's value.
5412func (s *InstalledComponent) SetLifecycleStateDetails(v string) *InstalledComponent {
5413	s.LifecycleStateDetails = &v
5414	return s
5415}
5416
5417// IoT Greengrass can't process your request right now. Try again later.
5418type InternalServerException struct {
5419	_            struct{}                  `type:"structure"`
5420	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
5421
5422	Message_ *string `locationName:"message" type:"string"`
5423
5424	// The amount of time to wait before you retry the request.
5425	RetryAfterSeconds *int64 `location:"header" locationName:"Retry-After" type:"integer"`
5426}
5427
5428// String returns the string representation
5429func (s InternalServerException) String() string {
5430	return awsutil.Prettify(s)
5431}
5432
5433// GoString returns the string representation
5434func (s InternalServerException) GoString() string {
5435	return s.String()
5436}
5437
5438func newErrorInternalServerException(v protocol.ResponseMetadata) error {
5439	return &InternalServerException{
5440		RespMetadata: v,
5441	}
5442}
5443
5444// Code returns the exception type name.
5445func (s *InternalServerException) Code() string {
5446	return "InternalServerException"
5447}
5448
5449// Message returns the exception's message.
5450func (s *InternalServerException) Message() string {
5451	if s.Message_ != nil {
5452		return *s.Message_
5453	}
5454	return ""
5455}
5456
5457// OrigErr always returns nil, satisfies awserr.Error interface.
5458func (s *InternalServerException) OrigErr() error {
5459	return nil
5460}
5461
5462func (s *InternalServerException) Error() string {
5463	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
5464}
5465
5466// Status code returns the HTTP status code for the request's response error.
5467func (s *InternalServerException) StatusCode() int {
5468	return s.RespMetadata.StatusCode
5469}
5470
5471// RequestID returns the service's response RequestID for request.
5472func (s *InternalServerException) RequestID() string {
5473	return s.RespMetadata.RequestID
5474}
5475
5476// Contains a list of criteria that define when and how to cancel a configuration
5477// deployment.
5478type IoTJobAbortConfig struct {
5479	_ struct{} `type:"structure"`
5480
5481	// The list of criteria that define when and how to cancel the configuration
5482	// deployment.
5483	//
5484	// CriteriaList is a required field
5485	CriteriaList []*IoTJobAbortCriteria `locationName:"criteriaList" min:"1" type:"list" required:"true"`
5486}
5487
5488// String returns the string representation
5489func (s IoTJobAbortConfig) String() string {
5490	return awsutil.Prettify(s)
5491}
5492
5493// GoString returns the string representation
5494func (s IoTJobAbortConfig) GoString() string {
5495	return s.String()
5496}
5497
5498// Validate inspects the fields of the type to determine if they are valid.
5499func (s *IoTJobAbortConfig) Validate() error {
5500	invalidParams := request.ErrInvalidParams{Context: "IoTJobAbortConfig"}
5501	if s.CriteriaList == nil {
5502		invalidParams.Add(request.NewErrParamRequired("CriteriaList"))
5503	}
5504	if s.CriteriaList != nil && len(s.CriteriaList) < 1 {
5505		invalidParams.Add(request.NewErrParamMinLen("CriteriaList", 1))
5506	}
5507	if s.CriteriaList != nil {
5508		for i, v := range s.CriteriaList {
5509			if v == nil {
5510				continue
5511			}
5512			if err := v.Validate(); err != nil {
5513				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CriteriaList", i), err.(request.ErrInvalidParams))
5514			}
5515		}
5516	}
5517
5518	if invalidParams.Len() > 0 {
5519		return invalidParams
5520	}
5521	return nil
5522}
5523
5524// SetCriteriaList sets the CriteriaList field's value.
5525func (s *IoTJobAbortConfig) SetCriteriaList(v []*IoTJobAbortCriteria) *IoTJobAbortConfig {
5526	s.CriteriaList = v
5527	return s
5528}
5529
5530// Contains criteria that define when and how to cancel a job.
5531//
5532// The deployment stops if the following conditions are true:
5533//
5534// The number of things that receive the deployment exceeds the minNumberOfExecutedThings.
5535//
5536// The percentage of failures with type failureType exceeds the thresholdPercentage.
5537type IoTJobAbortCriteria struct {
5538	_ struct{} `type:"structure"`
5539
5540	// The action to perform when the criteria are met.
5541	//
5542	// Action is a required field
5543	Action *string `locationName:"action" type:"string" required:"true" enum:"IoTJobAbortAction"`
5544
5545	// The type of job deployment failure that can cancel a job.
5546	//
5547	// FailureType is a required field
5548	FailureType *string `locationName:"failureType" type:"string" required:"true" enum:"IoTJobExecutionFailureType"`
5549
5550	// The minimum number of things that receive the configuration before the job
5551	// can cancel.
5552	//
5553	// MinNumberOfExecutedThings is a required field
5554	MinNumberOfExecutedThings *int64 `locationName:"minNumberOfExecutedThings" min:"1" type:"integer" required:"true"`
5555
5556	// The minimum percentage of failureType failures that occur before the job
5557	// can cancel.
5558	//
5559	// This parameter supports up to two digits after the decimal (for example,
5560	// you can specify 10.9 or 10.99, but not 10.999).
5561	//
5562	// ThresholdPercentage is a required field
5563	ThresholdPercentage *float64 `locationName:"thresholdPercentage" type:"double" required:"true"`
5564}
5565
5566// String returns the string representation
5567func (s IoTJobAbortCriteria) String() string {
5568	return awsutil.Prettify(s)
5569}
5570
5571// GoString returns the string representation
5572func (s IoTJobAbortCriteria) GoString() string {
5573	return s.String()
5574}
5575
5576// Validate inspects the fields of the type to determine if they are valid.
5577func (s *IoTJobAbortCriteria) Validate() error {
5578	invalidParams := request.ErrInvalidParams{Context: "IoTJobAbortCriteria"}
5579	if s.Action == nil {
5580		invalidParams.Add(request.NewErrParamRequired("Action"))
5581	}
5582	if s.FailureType == nil {
5583		invalidParams.Add(request.NewErrParamRequired("FailureType"))
5584	}
5585	if s.MinNumberOfExecutedThings == nil {
5586		invalidParams.Add(request.NewErrParamRequired("MinNumberOfExecutedThings"))
5587	}
5588	if s.MinNumberOfExecutedThings != nil && *s.MinNumberOfExecutedThings < 1 {
5589		invalidParams.Add(request.NewErrParamMinValue("MinNumberOfExecutedThings", 1))
5590	}
5591	if s.ThresholdPercentage == nil {
5592		invalidParams.Add(request.NewErrParamRequired("ThresholdPercentage"))
5593	}
5594
5595	if invalidParams.Len() > 0 {
5596		return invalidParams
5597	}
5598	return nil
5599}
5600
5601// SetAction sets the Action field's value.
5602func (s *IoTJobAbortCriteria) SetAction(v string) *IoTJobAbortCriteria {
5603	s.Action = &v
5604	return s
5605}
5606
5607// SetFailureType sets the FailureType field's value.
5608func (s *IoTJobAbortCriteria) SetFailureType(v string) *IoTJobAbortCriteria {
5609	s.FailureType = &v
5610	return s
5611}
5612
5613// SetMinNumberOfExecutedThings sets the MinNumberOfExecutedThings field's value.
5614func (s *IoTJobAbortCriteria) SetMinNumberOfExecutedThings(v int64) *IoTJobAbortCriteria {
5615	s.MinNumberOfExecutedThings = &v
5616	return s
5617}
5618
5619// SetThresholdPercentage sets the ThresholdPercentage field's value.
5620func (s *IoTJobAbortCriteria) SetThresholdPercentage(v float64) *IoTJobAbortCriteria {
5621	s.ThresholdPercentage = &v
5622	return s
5623}
5624
5625// Contains information about the rollout configuration for a job. This configuration
5626// defines the rate at which the job deploys a configuration to a fleet of target
5627// devices.
5628type IoTJobExecutionsRolloutConfig struct {
5629	_ struct{} `type:"structure"`
5630
5631	// The exponential rate to increase the job rollout rate.
5632	ExponentialRate *IoTJobExponentialRolloutRate `locationName:"exponentialRate" type:"structure"`
5633
5634	// The maximum number of devices that receive a pending job notification, per
5635	// minute.
5636	MaximumPerMinute *int64 `locationName:"maximumPerMinute" min:"1" type:"integer"`
5637}
5638
5639// String returns the string representation
5640func (s IoTJobExecutionsRolloutConfig) String() string {
5641	return awsutil.Prettify(s)
5642}
5643
5644// GoString returns the string representation
5645func (s IoTJobExecutionsRolloutConfig) GoString() string {
5646	return s.String()
5647}
5648
5649// Validate inspects the fields of the type to determine if they are valid.
5650func (s *IoTJobExecutionsRolloutConfig) Validate() error {
5651	invalidParams := request.ErrInvalidParams{Context: "IoTJobExecutionsRolloutConfig"}
5652	if s.MaximumPerMinute != nil && *s.MaximumPerMinute < 1 {
5653		invalidParams.Add(request.NewErrParamMinValue("MaximumPerMinute", 1))
5654	}
5655	if s.ExponentialRate != nil {
5656		if err := s.ExponentialRate.Validate(); err != nil {
5657			invalidParams.AddNested("ExponentialRate", err.(request.ErrInvalidParams))
5658		}
5659	}
5660
5661	if invalidParams.Len() > 0 {
5662		return invalidParams
5663	}
5664	return nil
5665}
5666
5667// SetExponentialRate sets the ExponentialRate field's value.
5668func (s *IoTJobExecutionsRolloutConfig) SetExponentialRate(v *IoTJobExponentialRolloutRate) *IoTJobExecutionsRolloutConfig {
5669	s.ExponentialRate = v
5670	return s
5671}
5672
5673// SetMaximumPerMinute sets the MaximumPerMinute field's value.
5674func (s *IoTJobExecutionsRolloutConfig) SetMaximumPerMinute(v int64) *IoTJobExecutionsRolloutConfig {
5675	s.MaximumPerMinute = &v
5676	return s
5677}
5678
5679// Contains information about an exponential rollout rate for a configuration
5680// deployment job.
5681type IoTJobExponentialRolloutRate struct {
5682	_ struct{} `type:"structure"`
5683
5684	// The minimum number of devices that receive a pending job notification, per
5685	// minute, when the job starts. This parameter defines the initial rollout rate
5686	// of the job.
5687	//
5688	// BaseRatePerMinute is a required field
5689	BaseRatePerMinute *int64 `locationName:"baseRatePerMinute" min:"1" type:"integer" required:"true"`
5690
5691	// The exponential factor to increase the rollout rate for the job.
5692	//
5693	// This parameter supports up to one digit after the decimal (for example, you
5694	// can specify 1.5, but not 1.55).
5695	//
5696	// IncrementFactor is a required field
5697	IncrementFactor *float64 `locationName:"incrementFactor" min:"1" type:"double" required:"true"`
5698
5699	// The criteria to increase the rollout rate for the job.
5700	//
5701	// RateIncreaseCriteria is a required field
5702	RateIncreaseCriteria *IoTJobRateIncreaseCriteria `locationName:"rateIncreaseCriteria" type:"structure" required:"true"`
5703}
5704
5705// String returns the string representation
5706func (s IoTJobExponentialRolloutRate) String() string {
5707	return awsutil.Prettify(s)
5708}
5709
5710// GoString returns the string representation
5711func (s IoTJobExponentialRolloutRate) GoString() string {
5712	return s.String()
5713}
5714
5715// Validate inspects the fields of the type to determine if they are valid.
5716func (s *IoTJobExponentialRolloutRate) Validate() error {
5717	invalidParams := request.ErrInvalidParams{Context: "IoTJobExponentialRolloutRate"}
5718	if s.BaseRatePerMinute == nil {
5719		invalidParams.Add(request.NewErrParamRequired("BaseRatePerMinute"))
5720	}
5721	if s.BaseRatePerMinute != nil && *s.BaseRatePerMinute < 1 {
5722		invalidParams.Add(request.NewErrParamMinValue("BaseRatePerMinute", 1))
5723	}
5724	if s.IncrementFactor == nil {
5725		invalidParams.Add(request.NewErrParamRequired("IncrementFactor"))
5726	}
5727	if s.IncrementFactor != nil && *s.IncrementFactor < 1 {
5728		invalidParams.Add(request.NewErrParamMinValue("IncrementFactor", 1))
5729	}
5730	if s.RateIncreaseCriteria == nil {
5731		invalidParams.Add(request.NewErrParamRequired("RateIncreaseCriteria"))
5732	}
5733	if s.RateIncreaseCriteria != nil {
5734		if err := s.RateIncreaseCriteria.Validate(); err != nil {
5735			invalidParams.AddNested("RateIncreaseCriteria", err.(request.ErrInvalidParams))
5736		}
5737	}
5738
5739	if invalidParams.Len() > 0 {
5740		return invalidParams
5741	}
5742	return nil
5743}
5744
5745// SetBaseRatePerMinute sets the BaseRatePerMinute field's value.
5746func (s *IoTJobExponentialRolloutRate) SetBaseRatePerMinute(v int64) *IoTJobExponentialRolloutRate {
5747	s.BaseRatePerMinute = &v
5748	return s
5749}
5750
5751// SetIncrementFactor sets the IncrementFactor field's value.
5752func (s *IoTJobExponentialRolloutRate) SetIncrementFactor(v float64) *IoTJobExponentialRolloutRate {
5753	s.IncrementFactor = &v
5754	return s
5755}
5756
5757// SetRateIncreaseCriteria sets the RateIncreaseCriteria field's value.
5758func (s *IoTJobExponentialRolloutRate) SetRateIncreaseCriteria(v *IoTJobRateIncreaseCriteria) *IoTJobExponentialRolloutRate {
5759	s.RateIncreaseCriteria = v
5760	return s
5761}
5762
5763// Contains information about criteria to meet before a job increases its rollout
5764// rate. Specify either numberOfNotifiedThings or numberOfSucceededThings.
5765type IoTJobRateIncreaseCriteria struct {
5766	_ struct{} `type:"structure"`
5767
5768	// The number of devices to receive the job notification before the rollout
5769	// rate increases.
5770	NumberOfNotifiedThings *int64 `locationName:"numberOfNotifiedThings" min:"1" type:"integer"`
5771
5772	// The number of devices to successfully run the configuration job before the
5773	// rollout rate increases.
5774	NumberOfSucceededThings *int64 `locationName:"numberOfSucceededThings" min:"1" type:"integer"`
5775}
5776
5777// String returns the string representation
5778func (s IoTJobRateIncreaseCriteria) String() string {
5779	return awsutil.Prettify(s)
5780}
5781
5782// GoString returns the string representation
5783func (s IoTJobRateIncreaseCriteria) GoString() string {
5784	return s.String()
5785}
5786
5787// Validate inspects the fields of the type to determine if they are valid.
5788func (s *IoTJobRateIncreaseCriteria) Validate() error {
5789	invalidParams := request.ErrInvalidParams{Context: "IoTJobRateIncreaseCriteria"}
5790	if s.NumberOfNotifiedThings != nil && *s.NumberOfNotifiedThings < 1 {
5791		invalidParams.Add(request.NewErrParamMinValue("NumberOfNotifiedThings", 1))
5792	}
5793	if s.NumberOfSucceededThings != nil && *s.NumberOfSucceededThings < 1 {
5794		invalidParams.Add(request.NewErrParamMinValue("NumberOfSucceededThings", 1))
5795	}
5796
5797	if invalidParams.Len() > 0 {
5798		return invalidParams
5799	}
5800	return nil
5801}
5802
5803// SetNumberOfNotifiedThings sets the NumberOfNotifiedThings field's value.
5804func (s *IoTJobRateIncreaseCriteria) SetNumberOfNotifiedThings(v int64) *IoTJobRateIncreaseCriteria {
5805	s.NumberOfNotifiedThings = &v
5806	return s
5807}
5808
5809// SetNumberOfSucceededThings sets the NumberOfSucceededThings field's value.
5810func (s *IoTJobRateIncreaseCriteria) SetNumberOfSucceededThings(v int64) *IoTJobRateIncreaseCriteria {
5811	s.NumberOfSucceededThings = &v
5812	return s
5813}
5814
5815// Contains information about the timeout configuration for a job.
5816type IoTJobTimeoutConfig struct {
5817	_ struct{} `type:"structure"`
5818
5819	// The amount of time, in minutes, that devices have to complete the job. The
5820	// timer starts when the job status is set to IN_PROGRESS. If the job status
5821	// doesn't change to a terminal state before the time expires, then the job
5822	// status is set to TIMED_OUT.
5823	//
5824	// The timeout interval must be between 1 minute and 7 days (10080 minutes).
5825	InProgressTimeoutInMinutes *int64 `locationName:"inProgressTimeoutInMinutes" type:"long"`
5826}
5827
5828// String returns the string representation
5829func (s IoTJobTimeoutConfig) String() string {
5830	return awsutil.Prettify(s)
5831}
5832
5833// GoString returns the string representation
5834func (s IoTJobTimeoutConfig) GoString() string {
5835	return s.String()
5836}
5837
5838// SetInProgressTimeoutInMinutes sets the InProgressTimeoutInMinutes field's value.
5839func (s *IoTJobTimeoutConfig) SetInProgressTimeoutInMinutes(v int64) *IoTJobTimeoutConfig {
5840	s.InProgressTimeoutInMinutes = &v
5841	return s
5842}
5843
5844// Contains information about a container in which Lambda functions run on Greengrass
5845// core devices.
5846type LambdaContainerParams struct {
5847	_ struct{} `type:"structure"`
5848
5849	// The list of system devices that the container can access.
5850	Devices []*LambdaDeviceMount `locationName:"devices" type:"list"`
5851
5852	// The memory size of the container, expressed in kilobytes.
5853	//
5854	// Default: 16384 (16 MB)
5855	MemorySizeInKB *int64 `locationName:"memorySizeInKB" type:"integer"`
5856
5857	// Whether or not the container can read information from the device's /sys
5858	// folder.
5859	//
5860	// Default: false
5861	MountROSysfs *bool `locationName:"mountROSysfs" type:"boolean"`
5862
5863	// The list of volumes that the container can access.
5864	Volumes []*LambdaVolumeMount `locationName:"volumes" type:"list"`
5865}
5866
5867// String returns the string representation
5868func (s LambdaContainerParams) String() string {
5869	return awsutil.Prettify(s)
5870}
5871
5872// GoString returns the string representation
5873func (s LambdaContainerParams) GoString() string {
5874	return s.String()
5875}
5876
5877// Validate inspects the fields of the type to determine if they are valid.
5878func (s *LambdaContainerParams) Validate() error {
5879	invalidParams := request.ErrInvalidParams{Context: "LambdaContainerParams"}
5880	if s.Devices != nil {
5881		for i, v := range s.Devices {
5882			if v == nil {
5883				continue
5884			}
5885			if err := v.Validate(); err != nil {
5886				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Devices", i), err.(request.ErrInvalidParams))
5887			}
5888		}
5889	}
5890	if s.Volumes != nil {
5891		for i, v := range s.Volumes {
5892			if v == nil {
5893				continue
5894			}
5895			if err := v.Validate(); err != nil {
5896				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "Volumes", i), err.(request.ErrInvalidParams))
5897			}
5898		}
5899	}
5900
5901	if invalidParams.Len() > 0 {
5902		return invalidParams
5903	}
5904	return nil
5905}
5906
5907// SetDevices sets the Devices field's value.
5908func (s *LambdaContainerParams) SetDevices(v []*LambdaDeviceMount) *LambdaContainerParams {
5909	s.Devices = v
5910	return s
5911}
5912
5913// SetMemorySizeInKB sets the MemorySizeInKB field's value.
5914func (s *LambdaContainerParams) SetMemorySizeInKB(v int64) *LambdaContainerParams {
5915	s.MemorySizeInKB = &v
5916	return s
5917}
5918
5919// SetMountROSysfs sets the MountROSysfs field's value.
5920func (s *LambdaContainerParams) SetMountROSysfs(v bool) *LambdaContainerParams {
5921	s.MountROSysfs = &v
5922	return s
5923}
5924
5925// SetVolumes sets the Volumes field's value.
5926func (s *LambdaContainerParams) SetVolumes(v []*LambdaVolumeMount) *LambdaContainerParams {
5927	s.Volumes = v
5928	return s
5929}
5930
5931// Contains information about a device that Linux processes in a container can
5932// access.
5933type LambdaDeviceMount struct {
5934	_ struct{} `type:"structure"`
5935
5936	// Whether or not to add the component's system user as an owner of the device.
5937	//
5938	// Default: false
5939	AddGroupOwner *bool `locationName:"addGroupOwner" type:"boolean"`
5940
5941	// The mount path for the device in the file system.
5942	//
5943	// Path is a required field
5944	Path *string `locationName:"path" type:"string" required:"true"`
5945
5946	// The permission to access the device: read/only (ro) or read/write (rw).
5947	//
5948	// Default: ro
5949	Permission *string `locationName:"permission" type:"string" enum:"LambdaFilesystemPermission"`
5950}
5951
5952// String returns the string representation
5953func (s LambdaDeviceMount) String() string {
5954	return awsutil.Prettify(s)
5955}
5956
5957// GoString returns the string representation
5958func (s LambdaDeviceMount) GoString() string {
5959	return s.String()
5960}
5961
5962// Validate inspects the fields of the type to determine if they are valid.
5963func (s *LambdaDeviceMount) Validate() error {
5964	invalidParams := request.ErrInvalidParams{Context: "LambdaDeviceMount"}
5965	if s.Path == nil {
5966		invalidParams.Add(request.NewErrParamRequired("Path"))
5967	}
5968
5969	if invalidParams.Len() > 0 {
5970		return invalidParams
5971	}
5972	return nil
5973}
5974
5975// SetAddGroupOwner sets the AddGroupOwner field's value.
5976func (s *LambdaDeviceMount) SetAddGroupOwner(v bool) *LambdaDeviceMount {
5977	s.AddGroupOwner = &v
5978	return s
5979}
5980
5981// SetPath sets the Path field's value.
5982func (s *LambdaDeviceMount) SetPath(v string) *LambdaDeviceMount {
5983	s.Path = &v
5984	return s
5985}
5986
5987// SetPermission sets the Permission field's value.
5988func (s *LambdaDeviceMount) SetPermission(v string) *LambdaDeviceMount {
5989	s.Permission = &v
5990	return s
5991}
5992
5993// Contains information about an event source for an Lambda function. The event
5994// source defines the topics on which this Lambda function subscribes to receive
5995// messages that run the function.
5996type LambdaEventSource struct {
5997	_ struct{} `type:"structure"`
5998
5999	// The topic to which to subscribe to receive event messages.
6000	//
6001	// Topic is a required field
6002	Topic *string `locationName:"topic" type:"string" required:"true"`
6003
6004	// The type of event source. Choose from the following options:
6005	//
6006	//    * PUB_SUB – Subscribe to local publish/subscribe messages. This event
6007	//    source type doesn't support MQTT wildcards (+ and #) in the event source
6008	//    topic.
6009	//
6010	//    * IOT_CORE – Subscribe to Amazon Web Services IoT Core MQTT messages.
6011	//    This event source type supports MQTT wildcards (+ and #) in the event
6012	//    source topic.
6013	//
6014	// Type is a required field
6015	Type *string `locationName:"type" type:"string" required:"true" enum:"LambdaEventSourceType"`
6016}
6017
6018// String returns the string representation
6019func (s LambdaEventSource) String() string {
6020	return awsutil.Prettify(s)
6021}
6022
6023// GoString returns the string representation
6024func (s LambdaEventSource) GoString() string {
6025	return s.String()
6026}
6027
6028// Validate inspects the fields of the type to determine if they are valid.
6029func (s *LambdaEventSource) Validate() error {
6030	invalidParams := request.ErrInvalidParams{Context: "LambdaEventSource"}
6031	if s.Topic == nil {
6032		invalidParams.Add(request.NewErrParamRequired("Topic"))
6033	}
6034	if s.Type == nil {
6035		invalidParams.Add(request.NewErrParamRequired("Type"))
6036	}
6037
6038	if invalidParams.Len() > 0 {
6039		return invalidParams
6040	}
6041	return nil
6042}
6043
6044// SetTopic sets the Topic field's value.
6045func (s *LambdaEventSource) SetTopic(v string) *LambdaEventSource {
6046	s.Topic = &v
6047	return s
6048}
6049
6050// SetType sets the Type field's value.
6051func (s *LambdaEventSource) SetType(v string) *LambdaEventSource {
6052	s.Type = &v
6053	return s
6054}
6055
6056// Contains parameters for a Lambda function that runs on IoT Greengrass.
6057type LambdaExecutionParameters struct {
6058	_ struct{} `type:"structure"`
6059
6060	// The map of environment variables that are available to the Lambda function
6061	// when it runs.
6062	EnvironmentVariables map[string]*string `locationName:"environmentVariables" type:"map"`
6063
6064	// The list of event sources to which to subscribe to receive work messages.
6065	// The Lambda function runs when it receives a message from an event source.
6066	// You can subscribe this function to local publish/subscribe messages and Amazon
6067	// Web Services IoT Core MQTT messages.
6068	EventSources []*LambdaEventSource `locationName:"eventSources" type:"list"`
6069
6070	// The list of arguments to pass to the Lambda function when it runs.
6071	ExecArgs []*string `locationName:"execArgs" type:"list"`
6072
6073	// The encoding type that the Lambda function supports.
6074	//
6075	// Default: json
6076	InputPayloadEncodingType *string `locationName:"inputPayloadEncodingType" type:"string" enum:"LambdaInputPayloadEncodingType"`
6077
6078	// The parameters for the Linux process that contains the Lambda function.
6079	LinuxProcessParams *LambdaLinuxProcessParams `locationName:"linuxProcessParams" type:"structure"`
6080
6081	// The maximum amount of time in seconds that a non-pinned Lambda function can
6082	// idle before the IoT Greengrass Core software stops its process.
6083	MaxIdleTimeInSeconds *int64 `locationName:"maxIdleTimeInSeconds" type:"integer"`
6084
6085	// The maximum number of instances that a non-pinned Lambda function can run
6086	// at the same time.
6087	MaxInstancesCount *int64 `locationName:"maxInstancesCount" type:"integer"`
6088
6089	// The maximum size of the message queue for the Lambda function component.
6090	// The IoT Greengrass core stores messages in a FIFO (first-in-first-out) queue
6091	// until it can run the Lambda function to consume each message.
6092	MaxQueueSize *int64 `locationName:"maxQueueSize" type:"integer"`
6093
6094	// Whether or not the Lambda function is pinned, or long-lived.
6095	//
6096	//    * A pinned Lambda function starts when IoT Greengrass starts and keeps
6097	//    running in its own container.
6098	//
6099	//    * A non-pinned Lambda function starts only when it receives a work item
6100	//    and exists after it idles for maxIdleTimeInSeconds. If the function has
6101	//    multiple work items, the IoT Greengrass Core software creates multiple
6102	//    instances of the function.
6103	//
6104	// Default: true
6105	Pinned *bool `locationName:"pinned" type:"boolean"`
6106
6107	// The interval in seconds at which a pinned (also known as long-lived) Lambda
6108	// function component sends status updates to the Lambda manager component.
6109	StatusTimeoutInSeconds *int64 `locationName:"statusTimeoutInSeconds" type:"integer"`
6110
6111	// The maximum amount of time in seconds that the Lambda function can process
6112	// a work item.
6113	TimeoutInSeconds *int64 `locationName:"timeoutInSeconds" type:"integer"`
6114}
6115
6116// String returns the string representation
6117func (s LambdaExecutionParameters) String() string {
6118	return awsutil.Prettify(s)
6119}
6120
6121// GoString returns the string representation
6122func (s LambdaExecutionParameters) GoString() string {
6123	return s.String()
6124}
6125
6126// Validate inspects the fields of the type to determine if they are valid.
6127func (s *LambdaExecutionParameters) Validate() error {
6128	invalidParams := request.ErrInvalidParams{Context: "LambdaExecutionParameters"}
6129	if s.EventSources != nil {
6130		for i, v := range s.EventSources {
6131			if v == nil {
6132				continue
6133			}
6134			if err := v.Validate(); err != nil {
6135				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "EventSources", i), err.(request.ErrInvalidParams))
6136			}
6137		}
6138	}
6139	if s.LinuxProcessParams != nil {
6140		if err := s.LinuxProcessParams.Validate(); err != nil {
6141			invalidParams.AddNested("LinuxProcessParams", err.(request.ErrInvalidParams))
6142		}
6143	}
6144
6145	if invalidParams.Len() > 0 {
6146		return invalidParams
6147	}
6148	return nil
6149}
6150
6151// SetEnvironmentVariables sets the EnvironmentVariables field's value.
6152func (s *LambdaExecutionParameters) SetEnvironmentVariables(v map[string]*string) *LambdaExecutionParameters {
6153	s.EnvironmentVariables = v
6154	return s
6155}
6156
6157// SetEventSources sets the EventSources field's value.
6158func (s *LambdaExecutionParameters) SetEventSources(v []*LambdaEventSource) *LambdaExecutionParameters {
6159	s.EventSources = v
6160	return s
6161}
6162
6163// SetExecArgs sets the ExecArgs field's value.
6164func (s *LambdaExecutionParameters) SetExecArgs(v []*string) *LambdaExecutionParameters {
6165	s.ExecArgs = v
6166	return s
6167}
6168
6169// SetInputPayloadEncodingType sets the InputPayloadEncodingType field's value.
6170func (s *LambdaExecutionParameters) SetInputPayloadEncodingType(v string) *LambdaExecutionParameters {
6171	s.InputPayloadEncodingType = &v
6172	return s
6173}
6174
6175// SetLinuxProcessParams sets the LinuxProcessParams field's value.
6176func (s *LambdaExecutionParameters) SetLinuxProcessParams(v *LambdaLinuxProcessParams) *LambdaExecutionParameters {
6177	s.LinuxProcessParams = v
6178	return s
6179}
6180
6181// SetMaxIdleTimeInSeconds sets the MaxIdleTimeInSeconds field's value.
6182func (s *LambdaExecutionParameters) SetMaxIdleTimeInSeconds(v int64) *LambdaExecutionParameters {
6183	s.MaxIdleTimeInSeconds = &v
6184	return s
6185}
6186
6187// SetMaxInstancesCount sets the MaxInstancesCount field's value.
6188func (s *LambdaExecutionParameters) SetMaxInstancesCount(v int64) *LambdaExecutionParameters {
6189	s.MaxInstancesCount = &v
6190	return s
6191}
6192
6193// SetMaxQueueSize sets the MaxQueueSize field's value.
6194func (s *LambdaExecutionParameters) SetMaxQueueSize(v int64) *LambdaExecutionParameters {
6195	s.MaxQueueSize = &v
6196	return s
6197}
6198
6199// SetPinned sets the Pinned field's value.
6200func (s *LambdaExecutionParameters) SetPinned(v bool) *LambdaExecutionParameters {
6201	s.Pinned = &v
6202	return s
6203}
6204
6205// SetStatusTimeoutInSeconds sets the StatusTimeoutInSeconds field's value.
6206func (s *LambdaExecutionParameters) SetStatusTimeoutInSeconds(v int64) *LambdaExecutionParameters {
6207	s.StatusTimeoutInSeconds = &v
6208	return s
6209}
6210
6211// SetTimeoutInSeconds sets the TimeoutInSeconds field's value.
6212func (s *LambdaExecutionParameters) SetTimeoutInSeconds(v int64) *LambdaExecutionParameters {
6213	s.TimeoutInSeconds = &v
6214	return s
6215}
6216
6217// Contains information about an Lambda function to import to create a component.
6218type LambdaFunctionRecipeSource struct {
6219	_ struct{} `type:"structure"`
6220
6221	// The component versions on which this Lambda function component depends.
6222	ComponentDependencies map[string]*ComponentDependencyRequirement `locationName:"componentDependencies" type:"map"`
6223
6224	// The system and runtime parameters for the Lambda function as it runs on the
6225	// Greengrass core device.
6226	ComponentLambdaParameters *LambdaExecutionParameters `locationName:"componentLambdaParameters" type:"structure"`
6227
6228	// The name of the component.
6229	//
6230	// Defaults to the name of the Lambda function.
6231	ComponentName *string `locationName:"componentName" min:"1" type:"string"`
6232
6233	// The platforms that the component version supports.
6234	ComponentPlatforms []*ComponentPlatform `locationName:"componentPlatforms" type:"list"`
6235
6236	// The version of the component.
6237	//
6238	// Defaults to the version of the Lambda function as a semantic version. For
6239	// example, if your function version is 3, the component version becomes 3.0.0.
6240	ComponentVersion *string `locationName:"componentVersion" min:"1" type:"string"`
6241
6242	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
6243	// of the Lambda function. The ARN must include the version of the function
6244	// to import. You can't use version aliases like $LATEST.
6245	//
6246	// LambdaArn is a required field
6247	LambdaArn *string `locationName:"lambdaArn" type:"string" required:"true"`
6248}
6249
6250// String returns the string representation
6251func (s LambdaFunctionRecipeSource) String() string {
6252	return awsutil.Prettify(s)
6253}
6254
6255// GoString returns the string representation
6256func (s LambdaFunctionRecipeSource) GoString() string {
6257	return s.String()
6258}
6259
6260// Validate inspects the fields of the type to determine if they are valid.
6261func (s *LambdaFunctionRecipeSource) Validate() error {
6262	invalidParams := request.ErrInvalidParams{Context: "LambdaFunctionRecipeSource"}
6263	if s.ComponentName != nil && len(*s.ComponentName) < 1 {
6264		invalidParams.Add(request.NewErrParamMinLen("ComponentName", 1))
6265	}
6266	if s.ComponentVersion != nil && len(*s.ComponentVersion) < 1 {
6267		invalidParams.Add(request.NewErrParamMinLen("ComponentVersion", 1))
6268	}
6269	if s.LambdaArn == nil {
6270		invalidParams.Add(request.NewErrParamRequired("LambdaArn"))
6271	}
6272	if s.ComponentDependencies != nil {
6273		for i, v := range s.ComponentDependencies {
6274			if v == nil {
6275				continue
6276			}
6277			if err := v.Validate(); err != nil {
6278				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ComponentDependencies", i), err.(request.ErrInvalidParams))
6279			}
6280		}
6281	}
6282	if s.ComponentLambdaParameters != nil {
6283		if err := s.ComponentLambdaParameters.Validate(); err != nil {
6284			invalidParams.AddNested("ComponentLambdaParameters", err.(request.ErrInvalidParams))
6285		}
6286	}
6287	if s.ComponentPlatforms != nil {
6288		for i, v := range s.ComponentPlatforms {
6289			if v == nil {
6290				continue
6291			}
6292			if err := v.Validate(); err != nil {
6293				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ComponentPlatforms", i), err.(request.ErrInvalidParams))
6294			}
6295		}
6296	}
6297
6298	if invalidParams.Len() > 0 {
6299		return invalidParams
6300	}
6301	return nil
6302}
6303
6304// SetComponentDependencies sets the ComponentDependencies field's value.
6305func (s *LambdaFunctionRecipeSource) SetComponentDependencies(v map[string]*ComponentDependencyRequirement) *LambdaFunctionRecipeSource {
6306	s.ComponentDependencies = v
6307	return s
6308}
6309
6310// SetComponentLambdaParameters sets the ComponentLambdaParameters field's value.
6311func (s *LambdaFunctionRecipeSource) SetComponentLambdaParameters(v *LambdaExecutionParameters) *LambdaFunctionRecipeSource {
6312	s.ComponentLambdaParameters = v
6313	return s
6314}
6315
6316// SetComponentName sets the ComponentName field's value.
6317func (s *LambdaFunctionRecipeSource) SetComponentName(v string) *LambdaFunctionRecipeSource {
6318	s.ComponentName = &v
6319	return s
6320}
6321
6322// SetComponentPlatforms sets the ComponentPlatforms field's value.
6323func (s *LambdaFunctionRecipeSource) SetComponentPlatforms(v []*ComponentPlatform) *LambdaFunctionRecipeSource {
6324	s.ComponentPlatforms = v
6325	return s
6326}
6327
6328// SetComponentVersion sets the ComponentVersion field's value.
6329func (s *LambdaFunctionRecipeSource) SetComponentVersion(v string) *LambdaFunctionRecipeSource {
6330	s.ComponentVersion = &v
6331	return s
6332}
6333
6334// SetLambdaArn sets the LambdaArn field's value.
6335func (s *LambdaFunctionRecipeSource) SetLambdaArn(v string) *LambdaFunctionRecipeSource {
6336	s.LambdaArn = &v
6337	return s
6338}
6339
6340// Contains parameters for a Linux process that contains an Lambda function.
6341type LambdaLinuxProcessParams struct {
6342	_ struct{} `type:"structure"`
6343
6344	// The parameters for the container in which the Lambda function runs.
6345	ContainerParams *LambdaContainerParams `locationName:"containerParams" type:"structure"`
6346
6347	// The isolation mode for the process that contains the Lambda function. The
6348	// process can run in an isolated runtime environment inside the IoT Greengrass
6349	// container, or as a regular process outside any container.
6350	//
6351	// Default: GreengrassContainer
6352	IsolationMode *string `locationName:"isolationMode" type:"string" enum:"LambdaIsolationMode"`
6353}
6354
6355// String returns the string representation
6356func (s LambdaLinuxProcessParams) String() string {
6357	return awsutil.Prettify(s)
6358}
6359
6360// GoString returns the string representation
6361func (s LambdaLinuxProcessParams) GoString() string {
6362	return s.String()
6363}
6364
6365// Validate inspects the fields of the type to determine if they are valid.
6366func (s *LambdaLinuxProcessParams) Validate() error {
6367	invalidParams := request.ErrInvalidParams{Context: "LambdaLinuxProcessParams"}
6368	if s.ContainerParams != nil {
6369		if err := s.ContainerParams.Validate(); err != nil {
6370			invalidParams.AddNested("ContainerParams", err.(request.ErrInvalidParams))
6371		}
6372	}
6373
6374	if invalidParams.Len() > 0 {
6375		return invalidParams
6376	}
6377	return nil
6378}
6379
6380// SetContainerParams sets the ContainerParams field's value.
6381func (s *LambdaLinuxProcessParams) SetContainerParams(v *LambdaContainerParams) *LambdaLinuxProcessParams {
6382	s.ContainerParams = v
6383	return s
6384}
6385
6386// SetIsolationMode sets the IsolationMode field's value.
6387func (s *LambdaLinuxProcessParams) SetIsolationMode(v string) *LambdaLinuxProcessParams {
6388	s.IsolationMode = &v
6389	return s
6390}
6391
6392// Contains information about a volume that Linux processes in a container can
6393// access. When you define a volume, the IoT Greengrass Core software mounts
6394// the source files to the destination inside the container.
6395type LambdaVolumeMount struct {
6396	_ struct{} `type:"structure"`
6397
6398	// Whether or not to add the IoT Greengrass user group as an owner of the volume.
6399	//
6400	// Default: false
6401	AddGroupOwner *bool `locationName:"addGroupOwner" type:"boolean"`
6402
6403	// The path to the logical volume in the file system.
6404	//
6405	// DestinationPath is a required field
6406	DestinationPath *string `locationName:"destinationPath" type:"string" required:"true"`
6407
6408	// The permission to access the volume: read/only (ro) or read/write (rw).
6409	//
6410	// Default: ro
6411	Permission *string `locationName:"permission" type:"string" enum:"LambdaFilesystemPermission"`
6412
6413	// The path to the physical volume in the file system.
6414	//
6415	// SourcePath is a required field
6416	SourcePath *string `locationName:"sourcePath" type:"string" required:"true"`
6417}
6418
6419// String returns the string representation
6420func (s LambdaVolumeMount) String() string {
6421	return awsutil.Prettify(s)
6422}
6423
6424// GoString returns the string representation
6425func (s LambdaVolumeMount) GoString() string {
6426	return s.String()
6427}
6428
6429// Validate inspects the fields of the type to determine if they are valid.
6430func (s *LambdaVolumeMount) Validate() error {
6431	invalidParams := request.ErrInvalidParams{Context: "LambdaVolumeMount"}
6432	if s.DestinationPath == nil {
6433		invalidParams.Add(request.NewErrParamRequired("DestinationPath"))
6434	}
6435	if s.SourcePath == nil {
6436		invalidParams.Add(request.NewErrParamRequired("SourcePath"))
6437	}
6438
6439	if invalidParams.Len() > 0 {
6440		return invalidParams
6441	}
6442	return nil
6443}
6444
6445// SetAddGroupOwner sets the AddGroupOwner field's value.
6446func (s *LambdaVolumeMount) SetAddGroupOwner(v bool) *LambdaVolumeMount {
6447	s.AddGroupOwner = &v
6448	return s
6449}
6450
6451// SetDestinationPath sets the DestinationPath field's value.
6452func (s *LambdaVolumeMount) SetDestinationPath(v string) *LambdaVolumeMount {
6453	s.DestinationPath = &v
6454	return s
6455}
6456
6457// SetPermission sets the Permission field's value.
6458func (s *LambdaVolumeMount) SetPermission(v string) *LambdaVolumeMount {
6459	s.Permission = &v
6460	return s
6461}
6462
6463// SetSourcePath sets the SourcePath field's value.
6464func (s *LambdaVolumeMount) SetSourcePath(v string) *LambdaVolumeMount {
6465	s.SourcePath = &v
6466	return s
6467}
6468
6469type ListClientDevicesAssociatedWithCoreDeviceInput struct {
6470	_ struct{} `type:"structure"`
6471
6472	// The name of the core device. This is also the name of the IoT thing.
6473	//
6474	// CoreDeviceThingName is a required field
6475	CoreDeviceThingName *string `location:"uri" locationName:"coreDeviceThingName" min:"1" type:"string" required:"true"`
6476
6477	// The maximum number of results to be returned per paginated request.
6478	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
6479
6480	// The token to be used for the next set of paginated results.
6481	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
6482}
6483
6484// String returns the string representation
6485func (s ListClientDevicesAssociatedWithCoreDeviceInput) String() string {
6486	return awsutil.Prettify(s)
6487}
6488
6489// GoString returns the string representation
6490func (s ListClientDevicesAssociatedWithCoreDeviceInput) GoString() string {
6491	return s.String()
6492}
6493
6494// Validate inspects the fields of the type to determine if they are valid.
6495func (s *ListClientDevicesAssociatedWithCoreDeviceInput) Validate() error {
6496	invalidParams := request.ErrInvalidParams{Context: "ListClientDevicesAssociatedWithCoreDeviceInput"}
6497	if s.CoreDeviceThingName == nil {
6498		invalidParams.Add(request.NewErrParamRequired("CoreDeviceThingName"))
6499	}
6500	if s.CoreDeviceThingName != nil && len(*s.CoreDeviceThingName) < 1 {
6501		invalidParams.Add(request.NewErrParamMinLen("CoreDeviceThingName", 1))
6502	}
6503	if s.MaxResults != nil && *s.MaxResults < 1 {
6504		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
6505	}
6506
6507	if invalidParams.Len() > 0 {
6508		return invalidParams
6509	}
6510	return nil
6511}
6512
6513// SetCoreDeviceThingName sets the CoreDeviceThingName field's value.
6514func (s *ListClientDevicesAssociatedWithCoreDeviceInput) SetCoreDeviceThingName(v string) *ListClientDevicesAssociatedWithCoreDeviceInput {
6515	s.CoreDeviceThingName = &v
6516	return s
6517}
6518
6519// SetMaxResults sets the MaxResults field's value.
6520func (s *ListClientDevicesAssociatedWithCoreDeviceInput) SetMaxResults(v int64) *ListClientDevicesAssociatedWithCoreDeviceInput {
6521	s.MaxResults = &v
6522	return s
6523}
6524
6525// SetNextToken sets the NextToken field's value.
6526func (s *ListClientDevicesAssociatedWithCoreDeviceInput) SetNextToken(v string) *ListClientDevicesAssociatedWithCoreDeviceInput {
6527	s.NextToken = &v
6528	return s
6529}
6530
6531type ListClientDevicesAssociatedWithCoreDeviceOutput struct {
6532	_ struct{} `type:"structure"`
6533
6534	// A list that describes the client devices that are associated with the core
6535	// device.
6536	AssociatedClientDevices []*AssociatedClientDevice `locationName:"associatedClientDevices" min:"1" type:"list"`
6537
6538	// The token for the next set of results, or null if there are no additional
6539	// results.
6540	NextToken *string `locationName:"nextToken" type:"string"`
6541}
6542
6543// String returns the string representation
6544func (s ListClientDevicesAssociatedWithCoreDeviceOutput) String() string {
6545	return awsutil.Prettify(s)
6546}
6547
6548// GoString returns the string representation
6549func (s ListClientDevicesAssociatedWithCoreDeviceOutput) GoString() string {
6550	return s.String()
6551}
6552
6553// SetAssociatedClientDevices sets the AssociatedClientDevices field's value.
6554func (s *ListClientDevicesAssociatedWithCoreDeviceOutput) SetAssociatedClientDevices(v []*AssociatedClientDevice) *ListClientDevicesAssociatedWithCoreDeviceOutput {
6555	s.AssociatedClientDevices = v
6556	return s
6557}
6558
6559// SetNextToken sets the NextToken field's value.
6560func (s *ListClientDevicesAssociatedWithCoreDeviceOutput) SetNextToken(v string) *ListClientDevicesAssociatedWithCoreDeviceOutput {
6561	s.NextToken = &v
6562	return s
6563}
6564
6565type ListComponentVersionsInput struct {
6566	_ struct{} `type:"structure"`
6567
6568	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
6569	// of the component version.
6570	//
6571	// Arn is a required field
6572	Arn *string `location:"uri" locationName:"arn" type:"string" required:"true"`
6573
6574	// The maximum number of results to be returned per paginated request.
6575	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
6576
6577	// The token to be used for the next set of paginated results.
6578	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
6579}
6580
6581// String returns the string representation
6582func (s ListComponentVersionsInput) String() string {
6583	return awsutil.Prettify(s)
6584}
6585
6586// GoString returns the string representation
6587func (s ListComponentVersionsInput) GoString() string {
6588	return s.String()
6589}
6590
6591// Validate inspects the fields of the type to determine if they are valid.
6592func (s *ListComponentVersionsInput) Validate() error {
6593	invalidParams := request.ErrInvalidParams{Context: "ListComponentVersionsInput"}
6594	if s.Arn == nil {
6595		invalidParams.Add(request.NewErrParamRequired("Arn"))
6596	}
6597	if s.Arn != nil && len(*s.Arn) < 1 {
6598		invalidParams.Add(request.NewErrParamMinLen("Arn", 1))
6599	}
6600	if s.MaxResults != nil && *s.MaxResults < 1 {
6601		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
6602	}
6603
6604	if invalidParams.Len() > 0 {
6605		return invalidParams
6606	}
6607	return nil
6608}
6609
6610// SetArn sets the Arn field's value.
6611func (s *ListComponentVersionsInput) SetArn(v string) *ListComponentVersionsInput {
6612	s.Arn = &v
6613	return s
6614}
6615
6616// SetMaxResults sets the MaxResults field's value.
6617func (s *ListComponentVersionsInput) SetMaxResults(v int64) *ListComponentVersionsInput {
6618	s.MaxResults = &v
6619	return s
6620}
6621
6622// SetNextToken sets the NextToken field's value.
6623func (s *ListComponentVersionsInput) SetNextToken(v string) *ListComponentVersionsInput {
6624	s.NextToken = &v
6625	return s
6626}
6627
6628type ListComponentVersionsOutput struct {
6629	_ struct{} `type:"structure"`
6630
6631	// A list of versions that exist for the component.
6632	ComponentVersions []*ComponentVersionListItem `locationName:"componentVersions" type:"list"`
6633
6634	// The token for the next set of results, or null if there are no additional
6635	// results.
6636	NextToken *string `locationName:"nextToken" type:"string"`
6637}
6638
6639// String returns the string representation
6640func (s ListComponentVersionsOutput) String() string {
6641	return awsutil.Prettify(s)
6642}
6643
6644// GoString returns the string representation
6645func (s ListComponentVersionsOutput) GoString() string {
6646	return s.String()
6647}
6648
6649// SetComponentVersions sets the ComponentVersions field's value.
6650func (s *ListComponentVersionsOutput) SetComponentVersions(v []*ComponentVersionListItem) *ListComponentVersionsOutput {
6651	s.ComponentVersions = v
6652	return s
6653}
6654
6655// SetNextToken sets the NextToken field's value.
6656func (s *ListComponentVersionsOutput) SetNextToken(v string) *ListComponentVersionsOutput {
6657	s.NextToken = &v
6658	return s
6659}
6660
6661type ListComponentsInput struct {
6662	_ struct{} `type:"structure"`
6663
6664	// The maximum number of results to be returned per paginated request.
6665	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
6666
6667	// The token to be used for the next set of paginated results.
6668	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
6669
6670	// The scope of the components to list.
6671	//
6672	// Default: PRIVATE
6673	Scope *string `location:"querystring" locationName:"scope" type:"string" enum:"ComponentVisibilityScope"`
6674}
6675
6676// String returns the string representation
6677func (s ListComponentsInput) String() string {
6678	return awsutil.Prettify(s)
6679}
6680
6681// GoString returns the string representation
6682func (s ListComponentsInput) GoString() string {
6683	return s.String()
6684}
6685
6686// Validate inspects the fields of the type to determine if they are valid.
6687func (s *ListComponentsInput) Validate() error {
6688	invalidParams := request.ErrInvalidParams{Context: "ListComponentsInput"}
6689	if s.MaxResults != nil && *s.MaxResults < 1 {
6690		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
6691	}
6692
6693	if invalidParams.Len() > 0 {
6694		return invalidParams
6695	}
6696	return nil
6697}
6698
6699// SetMaxResults sets the MaxResults field's value.
6700func (s *ListComponentsInput) SetMaxResults(v int64) *ListComponentsInput {
6701	s.MaxResults = &v
6702	return s
6703}
6704
6705// SetNextToken sets the NextToken field's value.
6706func (s *ListComponentsInput) SetNextToken(v string) *ListComponentsInput {
6707	s.NextToken = &v
6708	return s
6709}
6710
6711// SetScope sets the Scope field's value.
6712func (s *ListComponentsInput) SetScope(v string) *ListComponentsInput {
6713	s.Scope = &v
6714	return s
6715}
6716
6717type ListComponentsOutput struct {
6718	_ struct{} `type:"structure"`
6719
6720	// A list that summarizes each component.
6721	Components []*Component `locationName:"components" type:"list"`
6722
6723	// The token for the next set of results, or null if there are no additional
6724	// results.
6725	NextToken *string `locationName:"nextToken" type:"string"`
6726}
6727
6728// String returns the string representation
6729func (s ListComponentsOutput) String() string {
6730	return awsutil.Prettify(s)
6731}
6732
6733// GoString returns the string representation
6734func (s ListComponentsOutput) GoString() string {
6735	return s.String()
6736}
6737
6738// SetComponents sets the Components field's value.
6739func (s *ListComponentsOutput) SetComponents(v []*Component) *ListComponentsOutput {
6740	s.Components = v
6741	return s
6742}
6743
6744// SetNextToken sets the NextToken field's value.
6745func (s *ListComponentsOutput) SetNextToken(v string) *ListComponentsOutput {
6746	s.NextToken = &v
6747	return s
6748}
6749
6750type ListCoreDevicesInput struct {
6751	_ struct{} `type:"structure"`
6752
6753	// The maximum number of results to be returned per paginated request.
6754	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
6755
6756	// The token to be used for the next set of paginated results.
6757	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
6758
6759	// The core device status by which to filter. If you specify this parameter,
6760	// the list includes only core devices that have this status. Choose one of
6761	// the following options:
6762	//
6763	//    * HEALTHY – The IoT Greengrass Core software and all components run
6764	//    on the core device without issue.
6765	//
6766	//    * UNHEALTHY – The IoT Greengrass Core software or a component is in
6767	//    a failed state on the core device.
6768	Status *string `location:"querystring" locationName:"status" type:"string" enum:"CoreDeviceStatus"`
6769
6770	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
6771	// of the IoT thing group by which to filter. If you specify this parameter,
6772	// the list includes only core devices that are members of this thing group.
6773	ThingGroupArn *string `location:"querystring" locationName:"thingGroupArn" type:"string"`
6774}
6775
6776// String returns the string representation
6777func (s ListCoreDevicesInput) String() string {
6778	return awsutil.Prettify(s)
6779}
6780
6781// GoString returns the string representation
6782func (s ListCoreDevicesInput) GoString() string {
6783	return s.String()
6784}
6785
6786// Validate inspects the fields of the type to determine if they are valid.
6787func (s *ListCoreDevicesInput) Validate() error {
6788	invalidParams := request.ErrInvalidParams{Context: "ListCoreDevicesInput"}
6789	if s.MaxResults != nil && *s.MaxResults < 1 {
6790		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
6791	}
6792
6793	if invalidParams.Len() > 0 {
6794		return invalidParams
6795	}
6796	return nil
6797}
6798
6799// SetMaxResults sets the MaxResults field's value.
6800func (s *ListCoreDevicesInput) SetMaxResults(v int64) *ListCoreDevicesInput {
6801	s.MaxResults = &v
6802	return s
6803}
6804
6805// SetNextToken sets the NextToken field's value.
6806func (s *ListCoreDevicesInput) SetNextToken(v string) *ListCoreDevicesInput {
6807	s.NextToken = &v
6808	return s
6809}
6810
6811// SetStatus sets the Status field's value.
6812func (s *ListCoreDevicesInput) SetStatus(v string) *ListCoreDevicesInput {
6813	s.Status = &v
6814	return s
6815}
6816
6817// SetThingGroupArn sets the ThingGroupArn field's value.
6818func (s *ListCoreDevicesInput) SetThingGroupArn(v string) *ListCoreDevicesInput {
6819	s.ThingGroupArn = &v
6820	return s
6821}
6822
6823type ListCoreDevicesOutput struct {
6824	_ struct{} `type:"structure"`
6825
6826	// A list that summarizes each core device.
6827	CoreDevices []*CoreDevice `locationName:"coreDevices" type:"list"`
6828
6829	// The token for the next set of results, or null if there are no additional
6830	// results.
6831	NextToken *string `locationName:"nextToken" type:"string"`
6832}
6833
6834// String returns the string representation
6835func (s ListCoreDevicesOutput) String() string {
6836	return awsutil.Prettify(s)
6837}
6838
6839// GoString returns the string representation
6840func (s ListCoreDevicesOutput) GoString() string {
6841	return s.String()
6842}
6843
6844// SetCoreDevices sets the CoreDevices field's value.
6845func (s *ListCoreDevicesOutput) SetCoreDevices(v []*CoreDevice) *ListCoreDevicesOutput {
6846	s.CoreDevices = v
6847	return s
6848}
6849
6850// SetNextToken sets the NextToken field's value.
6851func (s *ListCoreDevicesOutput) SetNextToken(v string) *ListCoreDevicesOutput {
6852	s.NextToken = &v
6853	return s
6854}
6855
6856type ListDeploymentsInput struct {
6857	_ struct{} `type:"structure"`
6858
6859	// The filter for the list of deployments. Choose one of the following options:
6860	//
6861	//    * ALL – The list includes all deployments.
6862	//
6863	//    * LATEST_ONLY – The list includes only the latest revision of each deployment.
6864	//
6865	// Default: LATEST_ONLY
6866	HistoryFilter *string `location:"querystring" locationName:"historyFilter" type:"string" enum:"DeploymentHistoryFilter"`
6867
6868	// The maximum number of results to be returned per paginated request.
6869	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
6870
6871	// The token to be used for the next set of paginated results.
6872	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
6873
6874	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
6875	// of the target IoT thing or thing group.
6876	TargetArn *string `location:"querystring" locationName:"targetArn" type:"string"`
6877}
6878
6879// String returns the string representation
6880func (s ListDeploymentsInput) String() string {
6881	return awsutil.Prettify(s)
6882}
6883
6884// GoString returns the string representation
6885func (s ListDeploymentsInput) GoString() string {
6886	return s.String()
6887}
6888
6889// Validate inspects the fields of the type to determine if they are valid.
6890func (s *ListDeploymentsInput) Validate() error {
6891	invalidParams := request.ErrInvalidParams{Context: "ListDeploymentsInput"}
6892	if s.MaxResults != nil && *s.MaxResults < 1 {
6893		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
6894	}
6895
6896	if invalidParams.Len() > 0 {
6897		return invalidParams
6898	}
6899	return nil
6900}
6901
6902// SetHistoryFilter sets the HistoryFilter field's value.
6903func (s *ListDeploymentsInput) SetHistoryFilter(v string) *ListDeploymentsInput {
6904	s.HistoryFilter = &v
6905	return s
6906}
6907
6908// SetMaxResults sets the MaxResults field's value.
6909func (s *ListDeploymentsInput) SetMaxResults(v int64) *ListDeploymentsInput {
6910	s.MaxResults = &v
6911	return s
6912}
6913
6914// SetNextToken sets the NextToken field's value.
6915func (s *ListDeploymentsInput) SetNextToken(v string) *ListDeploymentsInput {
6916	s.NextToken = &v
6917	return s
6918}
6919
6920// SetTargetArn sets the TargetArn field's value.
6921func (s *ListDeploymentsInput) SetTargetArn(v string) *ListDeploymentsInput {
6922	s.TargetArn = &v
6923	return s
6924}
6925
6926type ListDeploymentsOutput struct {
6927	_ struct{} `type:"structure"`
6928
6929	// A list that summarizes each deployment.
6930	Deployments []*Deployment `locationName:"deployments" type:"list"`
6931
6932	// The token for the next set of results, or null if there are no additional
6933	// results.
6934	NextToken *string `locationName:"nextToken" type:"string"`
6935}
6936
6937// String returns the string representation
6938func (s ListDeploymentsOutput) String() string {
6939	return awsutil.Prettify(s)
6940}
6941
6942// GoString returns the string representation
6943func (s ListDeploymentsOutput) GoString() string {
6944	return s.String()
6945}
6946
6947// SetDeployments sets the Deployments field's value.
6948func (s *ListDeploymentsOutput) SetDeployments(v []*Deployment) *ListDeploymentsOutput {
6949	s.Deployments = v
6950	return s
6951}
6952
6953// SetNextToken sets the NextToken field's value.
6954func (s *ListDeploymentsOutput) SetNextToken(v string) *ListDeploymentsOutput {
6955	s.NextToken = &v
6956	return s
6957}
6958
6959type ListEffectiveDeploymentsInput struct {
6960	_ struct{} `type:"structure"`
6961
6962	// The name of the core device. This is also the name of the IoT thing.
6963	//
6964	// CoreDeviceThingName is a required field
6965	CoreDeviceThingName *string `location:"uri" locationName:"coreDeviceThingName" min:"1" type:"string" required:"true"`
6966
6967	// The maximum number of results to be returned per paginated request.
6968	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
6969
6970	// The token to be used for the next set of paginated results.
6971	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
6972}
6973
6974// String returns the string representation
6975func (s ListEffectiveDeploymentsInput) String() string {
6976	return awsutil.Prettify(s)
6977}
6978
6979// GoString returns the string representation
6980func (s ListEffectiveDeploymentsInput) GoString() string {
6981	return s.String()
6982}
6983
6984// Validate inspects the fields of the type to determine if they are valid.
6985func (s *ListEffectiveDeploymentsInput) Validate() error {
6986	invalidParams := request.ErrInvalidParams{Context: "ListEffectiveDeploymentsInput"}
6987	if s.CoreDeviceThingName == nil {
6988		invalidParams.Add(request.NewErrParamRequired("CoreDeviceThingName"))
6989	}
6990	if s.CoreDeviceThingName != nil && len(*s.CoreDeviceThingName) < 1 {
6991		invalidParams.Add(request.NewErrParamMinLen("CoreDeviceThingName", 1))
6992	}
6993	if s.MaxResults != nil && *s.MaxResults < 1 {
6994		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
6995	}
6996
6997	if invalidParams.Len() > 0 {
6998		return invalidParams
6999	}
7000	return nil
7001}
7002
7003// SetCoreDeviceThingName sets the CoreDeviceThingName field's value.
7004func (s *ListEffectiveDeploymentsInput) SetCoreDeviceThingName(v string) *ListEffectiveDeploymentsInput {
7005	s.CoreDeviceThingName = &v
7006	return s
7007}
7008
7009// SetMaxResults sets the MaxResults field's value.
7010func (s *ListEffectiveDeploymentsInput) SetMaxResults(v int64) *ListEffectiveDeploymentsInput {
7011	s.MaxResults = &v
7012	return s
7013}
7014
7015// SetNextToken sets the NextToken field's value.
7016func (s *ListEffectiveDeploymentsInput) SetNextToken(v string) *ListEffectiveDeploymentsInput {
7017	s.NextToken = &v
7018	return s
7019}
7020
7021type ListEffectiveDeploymentsOutput struct {
7022	_ struct{} `type:"structure"`
7023
7024	// A list that summarizes each deployment on the core device.
7025	EffectiveDeployments []*EffectiveDeployment `locationName:"effectiveDeployments" type:"list"`
7026
7027	// The token for the next set of results, or null if there are no additional
7028	// results.
7029	NextToken *string `locationName:"nextToken" type:"string"`
7030}
7031
7032// String returns the string representation
7033func (s ListEffectiveDeploymentsOutput) String() string {
7034	return awsutil.Prettify(s)
7035}
7036
7037// GoString returns the string representation
7038func (s ListEffectiveDeploymentsOutput) GoString() string {
7039	return s.String()
7040}
7041
7042// SetEffectiveDeployments sets the EffectiveDeployments field's value.
7043func (s *ListEffectiveDeploymentsOutput) SetEffectiveDeployments(v []*EffectiveDeployment) *ListEffectiveDeploymentsOutput {
7044	s.EffectiveDeployments = v
7045	return s
7046}
7047
7048// SetNextToken sets the NextToken field's value.
7049func (s *ListEffectiveDeploymentsOutput) SetNextToken(v string) *ListEffectiveDeploymentsOutput {
7050	s.NextToken = &v
7051	return s
7052}
7053
7054type ListInstalledComponentsInput struct {
7055	_ struct{} `type:"structure"`
7056
7057	// The name of the core device. This is also the name of the IoT thing.
7058	//
7059	// CoreDeviceThingName is a required field
7060	CoreDeviceThingName *string `location:"uri" locationName:"coreDeviceThingName" min:"1" type:"string" required:"true"`
7061
7062	// The maximum number of results to be returned per paginated request.
7063	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
7064
7065	// The token to be used for the next set of paginated results.
7066	NextToken *string `location:"querystring" locationName:"nextToken" type:"string"`
7067}
7068
7069// String returns the string representation
7070func (s ListInstalledComponentsInput) String() string {
7071	return awsutil.Prettify(s)
7072}
7073
7074// GoString returns the string representation
7075func (s ListInstalledComponentsInput) GoString() string {
7076	return s.String()
7077}
7078
7079// Validate inspects the fields of the type to determine if they are valid.
7080func (s *ListInstalledComponentsInput) Validate() error {
7081	invalidParams := request.ErrInvalidParams{Context: "ListInstalledComponentsInput"}
7082	if s.CoreDeviceThingName == nil {
7083		invalidParams.Add(request.NewErrParamRequired("CoreDeviceThingName"))
7084	}
7085	if s.CoreDeviceThingName != nil && len(*s.CoreDeviceThingName) < 1 {
7086		invalidParams.Add(request.NewErrParamMinLen("CoreDeviceThingName", 1))
7087	}
7088	if s.MaxResults != nil && *s.MaxResults < 1 {
7089		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
7090	}
7091
7092	if invalidParams.Len() > 0 {
7093		return invalidParams
7094	}
7095	return nil
7096}
7097
7098// SetCoreDeviceThingName sets the CoreDeviceThingName field's value.
7099func (s *ListInstalledComponentsInput) SetCoreDeviceThingName(v string) *ListInstalledComponentsInput {
7100	s.CoreDeviceThingName = &v
7101	return s
7102}
7103
7104// SetMaxResults sets the MaxResults field's value.
7105func (s *ListInstalledComponentsInput) SetMaxResults(v int64) *ListInstalledComponentsInput {
7106	s.MaxResults = &v
7107	return s
7108}
7109
7110// SetNextToken sets the NextToken field's value.
7111func (s *ListInstalledComponentsInput) SetNextToken(v string) *ListInstalledComponentsInput {
7112	s.NextToken = &v
7113	return s
7114}
7115
7116type ListInstalledComponentsOutput struct {
7117	_ struct{} `type:"structure"`
7118
7119	// A list that summarizes each component on the core device.
7120	InstalledComponents []*InstalledComponent `locationName:"installedComponents" type:"list"`
7121
7122	// The token for the next set of results, or null if there are no additional
7123	// results.
7124	NextToken *string `locationName:"nextToken" type:"string"`
7125}
7126
7127// String returns the string representation
7128func (s ListInstalledComponentsOutput) String() string {
7129	return awsutil.Prettify(s)
7130}
7131
7132// GoString returns the string representation
7133func (s ListInstalledComponentsOutput) GoString() string {
7134	return s.String()
7135}
7136
7137// SetInstalledComponents sets the InstalledComponents field's value.
7138func (s *ListInstalledComponentsOutput) SetInstalledComponents(v []*InstalledComponent) *ListInstalledComponentsOutput {
7139	s.InstalledComponents = v
7140	return s
7141}
7142
7143// SetNextToken sets the NextToken field's value.
7144func (s *ListInstalledComponentsOutput) SetNextToken(v string) *ListInstalledComponentsOutput {
7145	s.NextToken = &v
7146	return s
7147}
7148
7149type ListTagsForResourceInput struct {
7150	_ struct{} `type:"structure"`
7151
7152	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
7153	// of the resource.
7154	//
7155	// ResourceArn is a required field
7156	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`
7157}
7158
7159// String returns the string representation
7160func (s ListTagsForResourceInput) String() string {
7161	return awsutil.Prettify(s)
7162}
7163
7164// GoString returns the string representation
7165func (s ListTagsForResourceInput) GoString() string {
7166	return s.String()
7167}
7168
7169// Validate inspects the fields of the type to determine if they are valid.
7170func (s *ListTagsForResourceInput) Validate() error {
7171	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
7172	if s.ResourceArn == nil {
7173		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
7174	}
7175	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
7176		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
7177	}
7178
7179	if invalidParams.Len() > 0 {
7180		return invalidParams
7181	}
7182	return nil
7183}
7184
7185// SetResourceArn sets the ResourceArn field's value.
7186func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput {
7187	s.ResourceArn = &v
7188	return s
7189}
7190
7191type ListTagsForResourceOutput struct {
7192	_ struct{} `type:"structure"`
7193
7194	// A list of key-value pairs that contain metadata for the resource. For more
7195	// information, see Tag your resources (https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html)
7196	// in the IoT Greengrass V2 Developer Guide.
7197	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
7198}
7199
7200// String returns the string representation
7201func (s ListTagsForResourceOutput) String() string {
7202	return awsutil.Prettify(s)
7203}
7204
7205// GoString returns the string representation
7206func (s ListTagsForResourceOutput) GoString() string {
7207	return s.String()
7208}
7209
7210// SetTags sets the Tags field's value.
7211func (s *ListTagsForResourceOutput) SetTags(v map[string]*string) *ListTagsForResourceOutput {
7212	s.Tags = v
7213	return s
7214}
7215
7216// The request is already in progress. This exception occurs when you use a
7217// client token for multiple requests while IoT Greengrass is still processing
7218// an earlier request that uses the same client token.
7219type RequestAlreadyInProgressException struct {
7220	_            struct{}                  `type:"structure"`
7221	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
7222
7223	Message_ *string `locationName:"message" type:"string"`
7224}
7225
7226// String returns the string representation
7227func (s RequestAlreadyInProgressException) String() string {
7228	return awsutil.Prettify(s)
7229}
7230
7231// GoString returns the string representation
7232func (s RequestAlreadyInProgressException) GoString() string {
7233	return s.String()
7234}
7235
7236func newErrorRequestAlreadyInProgressException(v protocol.ResponseMetadata) error {
7237	return &RequestAlreadyInProgressException{
7238		RespMetadata: v,
7239	}
7240}
7241
7242// Code returns the exception type name.
7243func (s *RequestAlreadyInProgressException) Code() string {
7244	return "RequestAlreadyInProgressException"
7245}
7246
7247// Message returns the exception's message.
7248func (s *RequestAlreadyInProgressException) Message() string {
7249	if s.Message_ != nil {
7250		return *s.Message_
7251	}
7252	return ""
7253}
7254
7255// OrigErr always returns nil, satisfies awserr.Error interface.
7256func (s *RequestAlreadyInProgressException) OrigErr() error {
7257	return nil
7258}
7259
7260func (s *RequestAlreadyInProgressException) Error() string {
7261	return fmt.Sprintf("%s: %s", s.Code(), s.Message())
7262}
7263
7264// Status code returns the HTTP status code for the request's response error.
7265func (s *RequestAlreadyInProgressException) StatusCode() int {
7266	return s.RespMetadata.StatusCode
7267}
7268
7269// RequestID returns the service's response RequestID for request.
7270func (s *RequestAlreadyInProgressException) RequestID() string {
7271	return s.RespMetadata.RequestID
7272}
7273
7274type ResolveComponentCandidatesInput struct {
7275	_ struct{} `type:"structure"`
7276
7277	// The list of components to resolve.
7278	//
7279	// ComponentCandidates is a required field
7280	ComponentCandidates []*ComponentCandidate `locationName:"componentCandidates" type:"list" required:"true"`
7281
7282	// The platform to use to resolve compatible components.
7283	//
7284	// Platform is a required field
7285	Platform *ComponentPlatform `locationName:"platform" type:"structure" required:"true"`
7286}
7287
7288// String returns the string representation
7289func (s ResolveComponentCandidatesInput) String() string {
7290	return awsutil.Prettify(s)
7291}
7292
7293// GoString returns the string representation
7294func (s ResolveComponentCandidatesInput) GoString() string {
7295	return s.String()
7296}
7297
7298// Validate inspects the fields of the type to determine if they are valid.
7299func (s *ResolveComponentCandidatesInput) Validate() error {
7300	invalidParams := request.ErrInvalidParams{Context: "ResolveComponentCandidatesInput"}
7301	if s.ComponentCandidates == nil {
7302		invalidParams.Add(request.NewErrParamRequired("ComponentCandidates"))
7303	}
7304	if s.Platform == nil {
7305		invalidParams.Add(request.NewErrParamRequired("Platform"))
7306	}
7307	if s.ComponentCandidates != nil {
7308		for i, v := range s.ComponentCandidates {
7309			if v == nil {
7310				continue
7311			}
7312			if err := v.Validate(); err != nil {
7313				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "ComponentCandidates", i), err.(request.ErrInvalidParams))
7314			}
7315		}
7316	}
7317	if s.Platform != nil {
7318		if err := s.Platform.Validate(); err != nil {
7319			invalidParams.AddNested("Platform", err.(request.ErrInvalidParams))
7320		}
7321	}
7322
7323	if invalidParams.Len() > 0 {
7324		return invalidParams
7325	}
7326	return nil
7327}
7328
7329// SetComponentCandidates sets the ComponentCandidates field's value.
7330func (s *ResolveComponentCandidatesInput) SetComponentCandidates(v []*ComponentCandidate) *ResolveComponentCandidatesInput {
7331	s.ComponentCandidates = v
7332	return s
7333}
7334
7335// SetPlatform sets the Platform field's value.
7336func (s *ResolveComponentCandidatesInput) SetPlatform(v *ComponentPlatform) *ResolveComponentCandidatesInput {
7337	s.Platform = v
7338	return s
7339}
7340
7341type ResolveComponentCandidatesOutput struct {
7342	_ struct{} `type:"structure"`
7343
7344	// A list of components that meet the requirements that you specify in the request.
7345	// This list includes each component's recipe that you can use to install the
7346	// component.
7347	ResolvedComponentVersions []*ResolvedComponentVersion `locationName:"resolvedComponentVersions" type:"list"`
7348}
7349
7350// String returns the string representation
7351func (s ResolveComponentCandidatesOutput) String() string {
7352	return awsutil.Prettify(s)
7353}
7354
7355// GoString returns the string representation
7356func (s ResolveComponentCandidatesOutput) GoString() string {
7357	return s.String()
7358}
7359
7360// SetResolvedComponentVersions sets the ResolvedComponentVersions field's value.
7361func (s *ResolveComponentCandidatesOutput) SetResolvedComponentVersions(v []*ResolvedComponentVersion) *ResolveComponentCandidatesOutput {
7362	s.ResolvedComponentVersions = v
7363	return s
7364}
7365
7366// Contains information about a component version that is compatible to run
7367// on a Greengrass core device.
7368type ResolvedComponentVersion struct {
7369	_ struct{} `type:"structure"`
7370
7371	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
7372	// of the component version.
7373	Arn *string `locationName:"arn" type:"string"`
7374
7375	// The name of the component.
7376	ComponentName *string `locationName:"componentName" min:"1" type:"string"`
7377
7378	// The version of the component.
7379	ComponentVersion *string `locationName:"componentVersion" min:"1" type:"string"`
7380
7381	// The recipe of the component version.
7382	//
7383	// Recipe is automatically base64 encoded/decoded by the SDK.
7384	Recipe []byte `locationName:"recipe" type:"blob"`
7385}
7386
7387// String returns the string representation
7388func (s ResolvedComponentVersion) String() string {
7389	return awsutil.Prettify(s)
7390}
7391
7392// GoString returns the string representation
7393func (s ResolvedComponentVersion) GoString() string {
7394	return s.String()
7395}
7396
7397// SetArn sets the Arn field's value.
7398func (s *ResolvedComponentVersion) SetArn(v string) *ResolvedComponentVersion {
7399	s.Arn = &v
7400	return s
7401}
7402
7403// SetComponentName sets the ComponentName field's value.
7404func (s *ResolvedComponentVersion) SetComponentName(v string) *ResolvedComponentVersion {
7405	s.ComponentName = &v
7406	return s
7407}
7408
7409// SetComponentVersion sets the ComponentVersion field's value.
7410func (s *ResolvedComponentVersion) SetComponentVersion(v string) *ResolvedComponentVersion {
7411	s.ComponentVersion = &v
7412	return s
7413}
7414
7415// SetRecipe sets the Recipe field's value.
7416func (s *ResolvedComponentVersion) SetRecipe(v []byte) *ResolvedComponentVersion {
7417	s.Recipe = v
7418	return s
7419}
7420
7421// The requested resource can't be found.
7422type ResourceNotFoundException struct {
7423	_            struct{}                  `type:"structure"`
7424	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
7425
7426	Message_ *string `locationName:"message" type:"string"`
7427
7428	// The ID of the resource that isn't found.
7429	//
7430	// ResourceId is a required field
7431	ResourceId *string `locationName:"resourceId" type:"string" required:"true"`
7432
7433	// The type of the resource that isn't found.
7434	//
7435	// ResourceType is a required field
7436	ResourceType *string `locationName:"resourceType" type:"string" required:"true"`
7437}
7438
7439// String returns the string representation
7440func (s ResourceNotFoundException) String() string {
7441	return awsutil.Prettify(s)
7442}
7443
7444// GoString returns the string representation
7445func (s ResourceNotFoundException) GoString() string {
7446	return s.String()
7447}
7448
7449func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
7450	return &ResourceNotFoundException{
7451		RespMetadata: v,
7452	}
7453}
7454
7455// Code returns the exception type name.
7456func (s *ResourceNotFoundException) Code() string {
7457	return "ResourceNotFoundException"
7458}
7459
7460// Message returns the exception's message.
7461func (s *ResourceNotFoundException) Message() string {
7462	if s.Message_ != nil {
7463		return *s.Message_
7464	}
7465	return ""
7466}
7467
7468// OrigErr always returns nil, satisfies awserr.Error interface.
7469func (s *ResourceNotFoundException) OrigErr() error {
7470	return nil
7471}
7472
7473func (s *ResourceNotFoundException) Error() string {
7474	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
7475}
7476
7477// Status code returns the HTTP status code for the request's response error.
7478func (s *ResourceNotFoundException) StatusCode() int {
7479	return s.RespMetadata.StatusCode
7480}
7481
7482// RequestID returns the service's response RequestID for request.
7483func (s *ResourceNotFoundException) RequestID() string {
7484	return s.RespMetadata.RequestID
7485}
7486
7487// Your request exceeds a service quota. For example, you might have the maximum
7488// number of components that you can create.
7489type ServiceQuotaExceededException struct {
7490	_            struct{}                  `type:"structure"`
7491	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
7492
7493	Message_ *string `locationName:"message" type:"string"`
7494
7495	// The code for the quota in Service Quotas (https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html).
7496	//
7497	// QuotaCode is a required field
7498	QuotaCode *string `locationName:"quotaCode" type:"string" required:"true"`
7499
7500	// The ID of the resource that exceeds the service quota.
7501	ResourceId *string `locationName:"resourceId" type:"string"`
7502
7503	// The type of the resource that exceeds the service quota.
7504	ResourceType *string `locationName:"resourceType" type:"string"`
7505
7506	// The code for the service in Service Quotas (https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html).
7507	//
7508	// ServiceCode is a required field
7509	ServiceCode *string `locationName:"serviceCode" type:"string" required:"true"`
7510}
7511
7512// String returns the string representation
7513func (s ServiceQuotaExceededException) String() string {
7514	return awsutil.Prettify(s)
7515}
7516
7517// GoString returns the string representation
7518func (s ServiceQuotaExceededException) GoString() string {
7519	return s.String()
7520}
7521
7522func newErrorServiceQuotaExceededException(v protocol.ResponseMetadata) error {
7523	return &ServiceQuotaExceededException{
7524		RespMetadata: v,
7525	}
7526}
7527
7528// Code returns the exception type name.
7529func (s *ServiceQuotaExceededException) Code() string {
7530	return "ServiceQuotaExceededException"
7531}
7532
7533// Message returns the exception's message.
7534func (s *ServiceQuotaExceededException) Message() string {
7535	if s.Message_ != nil {
7536		return *s.Message_
7537	}
7538	return ""
7539}
7540
7541// OrigErr always returns nil, satisfies awserr.Error interface.
7542func (s *ServiceQuotaExceededException) OrigErr() error {
7543	return nil
7544}
7545
7546func (s *ServiceQuotaExceededException) Error() string {
7547	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
7548}
7549
7550// Status code returns the HTTP status code for the request's response error.
7551func (s *ServiceQuotaExceededException) StatusCode() int {
7552	return s.RespMetadata.StatusCode
7553}
7554
7555// RequestID returns the service's response RequestID for request.
7556func (s *ServiceQuotaExceededException) RequestID() string {
7557	return s.RespMetadata.RequestID
7558}
7559
7560// Contains information about system resource limits that the IoT Greengrass
7561// Core software applies to a component's processes. For more information, see
7562// Configure system resource limits for components (https://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html#configure-component-system-resource-limits).
7563type SystemResourceLimits struct {
7564	_ struct{} `type:"structure"`
7565
7566	// The maximum amount of CPU time that a component's processes can use on the
7567	// core device. A core device's total CPU time is equivalent to the device's
7568	// number of CPU cores. For example, on a core device with 4 CPU cores, you
7569	// can set this value to 2 to limit the component's processes to 50 percent
7570	// usage of each CPU core. On a device with 1 CPU core, you can set this value
7571	// to 0.25 to limit the component's processes to 25 percent usage of the CPU.
7572	// If you set this value to a number greater than the number of CPU cores, the
7573	// IoT Greengrass Core software doesn't limit the component's CPU usage.
7574	Cpus *float64 `locationName:"cpus" type:"double"`
7575
7576	// The maximum amount of RAM, expressed in kilobytes, that a component's processes
7577	// can use on the core device.
7578	Memory *int64 `locationName:"memory" type:"long"`
7579}
7580
7581// String returns the string representation
7582func (s SystemResourceLimits) String() string {
7583	return awsutil.Prettify(s)
7584}
7585
7586// GoString returns the string representation
7587func (s SystemResourceLimits) GoString() string {
7588	return s.String()
7589}
7590
7591// SetCpus sets the Cpus field's value.
7592func (s *SystemResourceLimits) SetCpus(v float64) *SystemResourceLimits {
7593	s.Cpus = &v
7594	return s
7595}
7596
7597// SetMemory sets the Memory field's value.
7598func (s *SystemResourceLimits) SetMemory(v int64) *SystemResourceLimits {
7599	s.Memory = &v
7600	return s
7601}
7602
7603type TagResourceInput struct {
7604	_ struct{} `type:"structure"`
7605
7606	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
7607	// of the resource to tag.
7608	//
7609	// ResourceArn is a required field
7610	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`
7611
7612	// A list of key-value pairs that contain metadata for the resource. For more
7613	// information, see Tag your resources (https://docs.aws.amazon.com/greengrass/v2/developerguide/tag-resources.html)
7614	// in the IoT Greengrass V2 Developer Guide.
7615	//
7616	// Tags is a required field
7617	Tags map[string]*string `locationName:"tags" min:"1" type:"map" required:"true"`
7618}
7619
7620// String returns the string representation
7621func (s TagResourceInput) String() string {
7622	return awsutil.Prettify(s)
7623}
7624
7625// GoString returns the string representation
7626func (s TagResourceInput) GoString() string {
7627	return s.String()
7628}
7629
7630// Validate inspects the fields of the type to determine if they are valid.
7631func (s *TagResourceInput) Validate() error {
7632	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
7633	if s.ResourceArn == nil {
7634		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
7635	}
7636	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
7637		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
7638	}
7639	if s.Tags == nil {
7640		invalidParams.Add(request.NewErrParamRequired("Tags"))
7641	}
7642	if s.Tags != nil && len(s.Tags) < 1 {
7643		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
7644	}
7645
7646	if invalidParams.Len() > 0 {
7647		return invalidParams
7648	}
7649	return nil
7650}
7651
7652// SetResourceArn sets the ResourceArn field's value.
7653func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
7654	s.ResourceArn = &v
7655	return s
7656}
7657
7658// SetTags sets the Tags field's value.
7659func (s *TagResourceInput) SetTags(v map[string]*string) *TagResourceInput {
7660	s.Tags = v
7661	return s
7662}
7663
7664type TagResourceOutput struct {
7665	_ struct{} `type:"structure"`
7666}
7667
7668// String returns the string representation
7669func (s TagResourceOutput) String() string {
7670	return awsutil.Prettify(s)
7671}
7672
7673// GoString returns the string representation
7674func (s TagResourceOutput) GoString() string {
7675	return s.String()
7676}
7677
7678// Your request exceeded a request rate quota. For example, you might have exceeded
7679// the amount of times that you can retrieve device or deployment status per
7680// second.
7681type ThrottlingException struct {
7682	_            struct{}                  `type:"structure"`
7683	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
7684
7685	Message_ *string `locationName:"message" type:"string"`
7686
7687	// The code for the quota in Service Quotas (https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html).
7688	QuotaCode *string `locationName:"quotaCode" type:"string"`
7689
7690	// The amount of time to wait before you retry the request.
7691	RetryAfterSeconds *int64 `location:"header" locationName:"Retry-After" type:"integer"`
7692
7693	// The code for the service in Service Quotas (https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html).
7694	ServiceCode *string `locationName:"serviceCode" type:"string"`
7695}
7696
7697// String returns the string representation
7698func (s ThrottlingException) String() string {
7699	return awsutil.Prettify(s)
7700}
7701
7702// GoString returns the string representation
7703func (s ThrottlingException) GoString() string {
7704	return s.String()
7705}
7706
7707func newErrorThrottlingException(v protocol.ResponseMetadata) error {
7708	return &ThrottlingException{
7709		RespMetadata: v,
7710	}
7711}
7712
7713// Code returns the exception type name.
7714func (s *ThrottlingException) Code() string {
7715	return "ThrottlingException"
7716}
7717
7718// Message returns the exception's message.
7719func (s *ThrottlingException) Message() string {
7720	if s.Message_ != nil {
7721		return *s.Message_
7722	}
7723	return ""
7724}
7725
7726// OrigErr always returns nil, satisfies awserr.Error interface.
7727func (s *ThrottlingException) OrigErr() error {
7728	return nil
7729}
7730
7731func (s *ThrottlingException) Error() string {
7732	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
7733}
7734
7735// Status code returns the HTTP status code for the request's response error.
7736func (s *ThrottlingException) StatusCode() int {
7737	return s.RespMetadata.StatusCode
7738}
7739
7740// RequestID returns the service's response RequestID for request.
7741func (s *ThrottlingException) RequestID() string {
7742	return s.RespMetadata.RequestID
7743}
7744
7745type UntagResourceInput struct {
7746	_ struct{} `type:"structure"`
7747
7748	// The ARN (https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)
7749	// of the resource to untag.
7750	//
7751	// ResourceArn is a required field
7752	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`
7753
7754	// A list of keys for tags to remove from the resource.
7755	//
7756	// TagKeys is a required field
7757	TagKeys []*string `location:"querystring" locationName:"tagKeys" min:"1" type:"list" required:"true"`
7758}
7759
7760// String returns the string representation
7761func (s UntagResourceInput) String() string {
7762	return awsutil.Prettify(s)
7763}
7764
7765// GoString returns the string representation
7766func (s UntagResourceInput) GoString() string {
7767	return s.String()
7768}
7769
7770// Validate inspects the fields of the type to determine if they are valid.
7771func (s *UntagResourceInput) Validate() error {
7772	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
7773	if s.ResourceArn == nil {
7774		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
7775	}
7776	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
7777		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
7778	}
7779	if s.TagKeys == nil {
7780		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
7781	}
7782	if s.TagKeys != nil && len(s.TagKeys) < 1 {
7783		invalidParams.Add(request.NewErrParamMinLen("TagKeys", 1))
7784	}
7785
7786	if invalidParams.Len() > 0 {
7787		return invalidParams
7788	}
7789	return nil
7790}
7791
7792// SetResourceArn sets the ResourceArn field's value.
7793func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
7794	s.ResourceArn = &v
7795	return s
7796}
7797
7798// SetTagKeys sets the TagKeys field's value.
7799func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
7800	s.TagKeys = v
7801	return s
7802}
7803
7804type UntagResourceOutput struct {
7805	_ struct{} `type:"structure"`
7806}
7807
7808// String returns the string representation
7809func (s UntagResourceOutput) String() string {
7810	return awsutil.Prettify(s)
7811}
7812
7813// GoString returns the string representation
7814func (s UntagResourceOutput) GoString() string {
7815	return s.String()
7816}
7817
7818// The request isn't valid. This can occur if your request contains malformed
7819// JSON or unsupported characters.
7820type ValidationException struct {
7821	_            struct{}                  `type:"structure"`
7822	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
7823
7824	// The list of fields that failed to validate.
7825	Fields []*ValidationExceptionField `locationName:"fields" type:"list"`
7826
7827	Message_ *string `locationName:"message" type:"string"`
7828
7829	// The reason for the validation exception.
7830	Reason *string `locationName:"reason" type:"string" enum:"ValidationExceptionReason"`
7831}
7832
7833// String returns the string representation
7834func (s ValidationException) String() string {
7835	return awsutil.Prettify(s)
7836}
7837
7838// GoString returns the string representation
7839func (s ValidationException) GoString() string {
7840	return s.String()
7841}
7842
7843func newErrorValidationException(v protocol.ResponseMetadata) error {
7844	return &ValidationException{
7845		RespMetadata: v,
7846	}
7847}
7848
7849// Code returns the exception type name.
7850func (s *ValidationException) Code() string {
7851	return "ValidationException"
7852}
7853
7854// Message returns the exception's message.
7855func (s *ValidationException) Message() string {
7856	if s.Message_ != nil {
7857		return *s.Message_
7858	}
7859	return ""
7860}
7861
7862// OrigErr always returns nil, satisfies awserr.Error interface.
7863func (s *ValidationException) OrigErr() error {
7864	return nil
7865}
7866
7867func (s *ValidationException) Error() string {
7868	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
7869}
7870
7871// Status code returns the HTTP status code for the request's response error.
7872func (s *ValidationException) StatusCode() int {
7873	return s.RespMetadata.StatusCode
7874}
7875
7876// RequestID returns the service's response RequestID for request.
7877func (s *ValidationException) RequestID() string {
7878	return s.RespMetadata.RequestID
7879}
7880
7881// Contains information about a validation exception field.
7882type ValidationExceptionField struct {
7883	_ struct{} `type:"structure"`
7884
7885	// The message of the exception field.
7886	//
7887	// Message is a required field
7888	Message *string `locationName:"message" type:"string" required:"true"`
7889
7890	// The name of the exception field.
7891	//
7892	// Name is a required field
7893	Name *string `locationName:"name" type:"string" required:"true"`
7894}
7895
7896// String returns the string representation
7897func (s ValidationExceptionField) String() string {
7898	return awsutil.Prettify(s)
7899}
7900
7901// GoString returns the string representation
7902func (s ValidationExceptionField) GoString() string {
7903	return s.String()
7904}
7905
7906// SetMessage sets the Message field's value.
7907func (s *ValidationExceptionField) SetMessage(v string) *ValidationExceptionField {
7908	s.Message = &v
7909	return s
7910}
7911
7912// SetName sets the Name field's value.
7913func (s *ValidationExceptionField) SetName(v string) *ValidationExceptionField {
7914	s.Name = &v
7915	return s
7916}
7917
7918const (
7919	// CloudComponentStateRequested is a CloudComponentState enum value
7920	CloudComponentStateRequested = "REQUESTED"
7921
7922	// CloudComponentStateInitiated is a CloudComponentState enum value
7923	CloudComponentStateInitiated = "INITIATED"
7924
7925	// CloudComponentStateDeployable is a CloudComponentState enum value
7926	CloudComponentStateDeployable = "DEPLOYABLE"
7927
7928	// CloudComponentStateFailed is a CloudComponentState enum value
7929	CloudComponentStateFailed = "FAILED"
7930
7931	// CloudComponentStateDeprecated is a CloudComponentState enum value
7932	CloudComponentStateDeprecated = "DEPRECATED"
7933)
7934
7935// CloudComponentState_Values returns all elements of the CloudComponentState enum
7936func CloudComponentState_Values() []string {
7937	return []string{
7938		CloudComponentStateRequested,
7939		CloudComponentStateInitiated,
7940		CloudComponentStateDeployable,
7941		CloudComponentStateFailed,
7942		CloudComponentStateDeprecated,
7943	}
7944}
7945
7946const (
7947	// ComponentDependencyTypeHard is a ComponentDependencyType enum value
7948	ComponentDependencyTypeHard = "HARD"
7949
7950	// ComponentDependencyTypeSoft is a ComponentDependencyType enum value
7951	ComponentDependencyTypeSoft = "SOFT"
7952)
7953
7954// ComponentDependencyType_Values returns all elements of the ComponentDependencyType enum
7955func ComponentDependencyType_Values() []string {
7956	return []string{
7957		ComponentDependencyTypeHard,
7958		ComponentDependencyTypeSoft,
7959	}
7960}
7961
7962const (
7963	// ComponentVisibilityScopePrivate is a ComponentVisibilityScope enum value
7964	ComponentVisibilityScopePrivate = "PRIVATE"
7965
7966	// ComponentVisibilityScopePublic is a ComponentVisibilityScope enum value
7967	ComponentVisibilityScopePublic = "PUBLIC"
7968)
7969
7970// ComponentVisibilityScope_Values returns all elements of the ComponentVisibilityScope enum
7971func ComponentVisibilityScope_Values() []string {
7972	return []string{
7973		ComponentVisibilityScopePrivate,
7974		ComponentVisibilityScopePublic,
7975	}
7976}
7977
7978const (
7979	// CoreDeviceStatusHealthy is a CoreDeviceStatus enum value
7980	CoreDeviceStatusHealthy = "HEALTHY"
7981
7982	// CoreDeviceStatusUnhealthy is a CoreDeviceStatus enum value
7983	CoreDeviceStatusUnhealthy = "UNHEALTHY"
7984)
7985
7986// CoreDeviceStatus_Values returns all elements of the CoreDeviceStatus enum
7987func CoreDeviceStatus_Values() []string {
7988	return []string{
7989		CoreDeviceStatusHealthy,
7990		CoreDeviceStatusUnhealthy,
7991	}
7992}
7993
7994const (
7995	// DeploymentComponentUpdatePolicyActionNotifyComponents is a DeploymentComponentUpdatePolicyAction enum value
7996	DeploymentComponentUpdatePolicyActionNotifyComponents = "NOTIFY_COMPONENTS"
7997
7998	// DeploymentComponentUpdatePolicyActionSkipNotifyComponents is a DeploymentComponentUpdatePolicyAction enum value
7999	DeploymentComponentUpdatePolicyActionSkipNotifyComponents = "SKIP_NOTIFY_COMPONENTS"
8000)
8001
8002// DeploymentComponentUpdatePolicyAction_Values returns all elements of the DeploymentComponentUpdatePolicyAction enum
8003func DeploymentComponentUpdatePolicyAction_Values() []string {
8004	return []string{
8005		DeploymentComponentUpdatePolicyActionNotifyComponents,
8006		DeploymentComponentUpdatePolicyActionSkipNotifyComponents,
8007	}
8008}
8009
8010const (
8011	// DeploymentFailureHandlingPolicyRollback is a DeploymentFailureHandlingPolicy enum value
8012	DeploymentFailureHandlingPolicyRollback = "ROLLBACK"
8013
8014	// DeploymentFailureHandlingPolicyDoNothing is a DeploymentFailureHandlingPolicy enum value
8015	DeploymentFailureHandlingPolicyDoNothing = "DO_NOTHING"
8016)
8017
8018// DeploymentFailureHandlingPolicy_Values returns all elements of the DeploymentFailureHandlingPolicy enum
8019func DeploymentFailureHandlingPolicy_Values() []string {
8020	return []string{
8021		DeploymentFailureHandlingPolicyRollback,
8022		DeploymentFailureHandlingPolicyDoNothing,
8023	}
8024}
8025
8026const (
8027	// DeploymentHistoryFilterAll is a DeploymentHistoryFilter enum value
8028	DeploymentHistoryFilterAll = "ALL"
8029
8030	// DeploymentHistoryFilterLatestOnly is a DeploymentHistoryFilter enum value
8031	DeploymentHistoryFilterLatestOnly = "LATEST_ONLY"
8032)
8033
8034// DeploymentHistoryFilter_Values returns all elements of the DeploymentHistoryFilter enum
8035func DeploymentHistoryFilter_Values() []string {
8036	return []string{
8037		DeploymentHistoryFilterAll,
8038		DeploymentHistoryFilterLatestOnly,
8039	}
8040}
8041
8042const (
8043	// DeploymentStatusActive is a DeploymentStatus enum value
8044	DeploymentStatusActive = "ACTIVE"
8045
8046	// DeploymentStatusCompleted is a DeploymentStatus enum value
8047	DeploymentStatusCompleted = "COMPLETED"
8048
8049	// DeploymentStatusCanceled is a DeploymentStatus enum value
8050	DeploymentStatusCanceled = "CANCELED"
8051
8052	// DeploymentStatusFailed is a DeploymentStatus enum value
8053	DeploymentStatusFailed = "FAILED"
8054
8055	// DeploymentStatusInactive is a DeploymentStatus enum value
8056	DeploymentStatusInactive = "INACTIVE"
8057)
8058
8059// DeploymentStatus_Values returns all elements of the DeploymentStatus enum
8060func DeploymentStatus_Values() []string {
8061	return []string{
8062		DeploymentStatusActive,
8063		DeploymentStatusCompleted,
8064		DeploymentStatusCanceled,
8065		DeploymentStatusFailed,
8066		DeploymentStatusInactive,
8067	}
8068}
8069
8070const (
8071	// EffectiveDeploymentExecutionStatusInProgress is a EffectiveDeploymentExecutionStatus enum value
8072	EffectiveDeploymentExecutionStatusInProgress = "IN_PROGRESS"
8073
8074	// EffectiveDeploymentExecutionStatusQueued is a EffectiveDeploymentExecutionStatus enum value
8075	EffectiveDeploymentExecutionStatusQueued = "QUEUED"
8076
8077	// EffectiveDeploymentExecutionStatusFailed is a EffectiveDeploymentExecutionStatus enum value
8078	EffectiveDeploymentExecutionStatusFailed = "FAILED"
8079
8080	// EffectiveDeploymentExecutionStatusCompleted is a EffectiveDeploymentExecutionStatus enum value
8081	EffectiveDeploymentExecutionStatusCompleted = "COMPLETED"
8082
8083	// EffectiveDeploymentExecutionStatusTimedOut is a EffectiveDeploymentExecutionStatus enum value
8084	EffectiveDeploymentExecutionStatusTimedOut = "TIMED_OUT"
8085
8086	// EffectiveDeploymentExecutionStatusCanceled is a EffectiveDeploymentExecutionStatus enum value
8087	EffectiveDeploymentExecutionStatusCanceled = "CANCELED"
8088
8089	// EffectiveDeploymentExecutionStatusRejected is a EffectiveDeploymentExecutionStatus enum value
8090	EffectiveDeploymentExecutionStatusRejected = "REJECTED"
8091)
8092
8093// EffectiveDeploymentExecutionStatus_Values returns all elements of the EffectiveDeploymentExecutionStatus enum
8094func EffectiveDeploymentExecutionStatus_Values() []string {
8095	return []string{
8096		EffectiveDeploymentExecutionStatusInProgress,
8097		EffectiveDeploymentExecutionStatusQueued,
8098		EffectiveDeploymentExecutionStatusFailed,
8099		EffectiveDeploymentExecutionStatusCompleted,
8100		EffectiveDeploymentExecutionStatusTimedOut,
8101		EffectiveDeploymentExecutionStatusCanceled,
8102		EffectiveDeploymentExecutionStatusRejected,
8103	}
8104}
8105
8106const (
8107	// InstalledComponentLifecycleStateNew is a InstalledComponentLifecycleState enum value
8108	InstalledComponentLifecycleStateNew = "NEW"
8109
8110	// InstalledComponentLifecycleStateInstalled is a InstalledComponentLifecycleState enum value
8111	InstalledComponentLifecycleStateInstalled = "INSTALLED"
8112
8113	// InstalledComponentLifecycleStateStarting is a InstalledComponentLifecycleState enum value
8114	InstalledComponentLifecycleStateStarting = "STARTING"
8115
8116	// InstalledComponentLifecycleStateRunning is a InstalledComponentLifecycleState enum value
8117	InstalledComponentLifecycleStateRunning = "RUNNING"
8118
8119	// InstalledComponentLifecycleStateStopping is a InstalledComponentLifecycleState enum value
8120	InstalledComponentLifecycleStateStopping = "STOPPING"
8121
8122	// InstalledComponentLifecycleStateErrored is a InstalledComponentLifecycleState enum value
8123	InstalledComponentLifecycleStateErrored = "ERRORED"
8124
8125	// InstalledComponentLifecycleStateBroken is a InstalledComponentLifecycleState enum value
8126	InstalledComponentLifecycleStateBroken = "BROKEN"
8127
8128	// InstalledComponentLifecycleStateFinished is a InstalledComponentLifecycleState enum value
8129	InstalledComponentLifecycleStateFinished = "FINISHED"
8130)
8131
8132// InstalledComponentLifecycleState_Values returns all elements of the InstalledComponentLifecycleState enum
8133func InstalledComponentLifecycleState_Values() []string {
8134	return []string{
8135		InstalledComponentLifecycleStateNew,
8136		InstalledComponentLifecycleStateInstalled,
8137		InstalledComponentLifecycleStateStarting,
8138		InstalledComponentLifecycleStateRunning,
8139		InstalledComponentLifecycleStateStopping,
8140		InstalledComponentLifecycleStateErrored,
8141		InstalledComponentLifecycleStateBroken,
8142		InstalledComponentLifecycleStateFinished,
8143	}
8144}
8145
8146const (
8147	// IoTJobAbortActionCancel is a IoTJobAbortAction enum value
8148	IoTJobAbortActionCancel = "CANCEL"
8149)
8150
8151// IoTJobAbortAction_Values returns all elements of the IoTJobAbortAction enum
8152func IoTJobAbortAction_Values() []string {
8153	return []string{
8154		IoTJobAbortActionCancel,
8155	}
8156}
8157
8158const (
8159	// IoTJobExecutionFailureTypeFailed is a IoTJobExecutionFailureType enum value
8160	IoTJobExecutionFailureTypeFailed = "FAILED"
8161
8162	// IoTJobExecutionFailureTypeRejected is a IoTJobExecutionFailureType enum value
8163	IoTJobExecutionFailureTypeRejected = "REJECTED"
8164
8165	// IoTJobExecutionFailureTypeTimedOut is a IoTJobExecutionFailureType enum value
8166	IoTJobExecutionFailureTypeTimedOut = "TIMED_OUT"
8167
8168	// IoTJobExecutionFailureTypeAll is a IoTJobExecutionFailureType enum value
8169	IoTJobExecutionFailureTypeAll = "ALL"
8170)
8171
8172// IoTJobExecutionFailureType_Values returns all elements of the IoTJobExecutionFailureType enum
8173func IoTJobExecutionFailureType_Values() []string {
8174	return []string{
8175		IoTJobExecutionFailureTypeFailed,
8176		IoTJobExecutionFailureTypeRejected,
8177		IoTJobExecutionFailureTypeTimedOut,
8178		IoTJobExecutionFailureTypeAll,
8179	}
8180}
8181
8182const (
8183	// LambdaEventSourceTypePubSub is a LambdaEventSourceType enum value
8184	LambdaEventSourceTypePubSub = "PUB_SUB"
8185
8186	// LambdaEventSourceTypeIotCore is a LambdaEventSourceType enum value
8187	LambdaEventSourceTypeIotCore = "IOT_CORE"
8188)
8189
8190// LambdaEventSourceType_Values returns all elements of the LambdaEventSourceType enum
8191func LambdaEventSourceType_Values() []string {
8192	return []string{
8193		LambdaEventSourceTypePubSub,
8194		LambdaEventSourceTypeIotCore,
8195	}
8196}
8197
8198const (
8199	// LambdaFilesystemPermissionRo is a LambdaFilesystemPermission enum value
8200	LambdaFilesystemPermissionRo = "ro"
8201
8202	// LambdaFilesystemPermissionRw is a LambdaFilesystemPermission enum value
8203	LambdaFilesystemPermissionRw = "rw"
8204)
8205
8206// LambdaFilesystemPermission_Values returns all elements of the LambdaFilesystemPermission enum
8207func LambdaFilesystemPermission_Values() []string {
8208	return []string{
8209		LambdaFilesystemPermissionRo,
8210		LambdaFilesystemPermissionRw,
8211	}
8212}
8213
8214const (
8215	// LambdaInputPayloadEncodingTypeJson is a LambdaInputPayloadEncodingType enum value
8216	LambdaInputPayloadEncodingTypeJson = "json"
8217
8218	// LambdaInputPayloadEncodingTypeBinary is a LambdaInputPayloadEncodingType enum value
8219	LambdaInputPayloadEncodingTypeBinary = "binary"
8220)
8221
8222// LambdaInputPayloadEncodingType_Values returns all elements of the LambdaInputPayloadEncodingType enum
8223func LambdaInputPayloadEncodingType_Values() []string {
8224	return []string{
8225		LambdaInputPayloadEncodingTypeJson,
8226		LambdaInputPayloadEncodingTypeBinary,
8227	}
8228}
8229
8230const (
8231	// LambdaIsolationModeGreengrassContainer is a LambdaIsolationMode enum value
8232	LambdaIsolationModeGreengrassContainer = "GreengrassContainer"
8233
8234	// LambdaIsolationModeNoContainer is a LambdaIsolationMode enum value
8235	LambdaIsolationModeNoContainer = "NoContainer"
8236)
8237
8238// LambdaIsolationMode_Values returns all elements of the LambdaIsolationMode enum
8239func LambdaIsolationMode_Values() []string {
8240	return []string{
8241		LambdaIsolationModeGreengrassContainer,
8242		LambdaIsolationModeNoContainer,
8243	}
8244}
8245
8246const (
8247	// RecipeOutputFormatJson is a RecipeOutputFormat enum value
8248	RecipeOutputFormatJson = "JSON"
8249
8250	// RecipeOutputFormatYaml is a RecipeOutputFormat enum value
8251	RecipeOutputFormatYaml = "YAML"
8252)
8253
8254// RecipeOutputFormat_Values returns all elements of the RecipeOutputFormat enum
8255func RecipeOutputFormat_Values() []string {
8256	return []string{
8257		RecipeOutputFormatJson,
8258		RecipeOutputFormatYaml,
8259	}
8260}
8261
8262const (
8263	// ValidationExceptionReasonUnknownOperation is a ValidationExceptionReason enum value
8264	ValidationExceptionReasonUnknownOperation = "UNKNOWN_OPERATION"
8265
8266	// ValidationExceptionReasonCannotParse is a ValidationExceptionReason enum value
8267	ValidationExceptionReasonCannotParse = "CANNOT_PARSE"
8268
8269	// ValidationExceptionReasonFieldValidationFailed is a ValidationExceptionReason enum value
8270	ValidationExceptionReasonFieldValidationFailed = "FIELD_VALIDATION_FAILED"
8271
8272	// ValidationExceptionReasonOther is a ValidationExceptionReason enum value
8273	ValidationExceptionReasonOther = "OTHER"
8274)
8275
8276// ValidationExceptionReason_Values returns all elements of the ValidationExceptionReason enum
8277func ValidationExceptionReason_Values() []string {
8278	return []string{
8279		ValidationExceptionReasonUnknownOperation,
8280		ValidationExceptionReasonCannotParse,
8281		ValidationExceptionReasonFieldValidationFailed,
8282		ValidationExceptionReasonOther,
8283	}
8284}
8285