github.com/aavshr/aws-sdk-go@v1.41.3/service/iot1clickprojects/api.go (about)

     1  // Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
     2  
     3  package iot1clickprojects
     4  
     5  import (
     6  	"fmt"
     7  	"time"
     8  
     9  	"github.com/aavshr/aws-sdk-go/aws"
    10  	"github.com/aavshr/aws-sdk-go/aws/awsutil"
    11  	"github.com/aavshr/aws-sdk-go/aws/request"
    12  	"github.com/aavshr/aws-sdk-go/private/protocol"
    13  	"github.com/aavshr/aws-sdk-go/private/protocol/restjson"
    14  )
    15  
    16  const opAssociateDeviceWithPlacement = "AssociateDeviceWithPlacement"
    17  
    18  // AssociateDeviceWithPlacementRequest generates a "aws/request.Request" representing the
    19  // client's request for the AssociateDeviceWithPlacement 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 AssociateDeviceWithPlacement for more information on using the AssociateDeviceWithPlacement
    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 AssociateDeviceWithPlacementRequest method.
    34  //    req, resp := client.AssociateDeviceWithPlacementRequest(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/iot1click-projects-2018-05-14/AssociateDeviceWithPlacement
    42  func (c *IoT1ClickProjects) AssociateDeviceWithPlacementRequest(input *AssociateDeviceWithPlacementInput) (req *request.Request, output *AssociateDeviceWithPlacementOutput) {
    43  	op := &request.Operation{
    44  		Name:       opAssociateDeviceWithPlacement,
    45  		HTTPMethod: "PUT",
    46  		HTTPPath:   "/projects/{projectName}/placements/{placementName}/devices/{deviceTemplateName}",
    47  	}
    48  
    49  	if input == nil {
    50  		input = &AssociateDeviceWithPlacementInput{}
    51  	}
    52  
    53  	output = &AssociateDeviceWithPlacementOutput{}
    54  	req = c.newRequest(op, input, output)
    55  	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
    56  	return
    57  }
    58  
    59  // AssociateDeviceWithPlacement API operation for AWS IoT 1-Click Projects Service.
    60  //
    61  // Associates a physical device with a placement.
    62  //
    63  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
    64  // with awserr.Error's Code and Message methods to get detailed information about
    65  // the error.
    66  //
    67  // See the AWS API reference guide for AWS IoT 1-Click Projects Service's
    68  // API operation AssociateDeviceWithPlacement for usage and error information.
    69  //
    70  // Returned Error Types:
    71  //   * InternalFailureException
    72  //
    73  //   * InvalidRequestException
    74  //
    75  //   * ResourceConflictException
    76  //
    77  //   * ResourceNotFoundException
    78  //
    79  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/AssociateDeviceWithPlacement
    80  func (c *IoT1ClickProjects) AssociateDeviceWithPlacement(input *AssociateDeviceWithPlacementInput) (*AssociateDeviceWithPlacementOutput, error) {
    81  	req, out := c.AssociateDeviceWithPlacementRequest(input)
    82  	return out, req.Send()
    83  }
    84  
    85  // AssociateDeviceWithPlacementWithContext is the same as AssociateDeviceWithPlacement with the addition of
    86  // the ability to pass a context and additional request options.
    87  //
    88  // See AssociateDeviceWithPlacement for details on how to use this API operation.
    89  //
    90  // The context must be non-nil and will be used for request cancellation. If
    91  // the context is nil a panic will occur. In the future the SDK may create
    92  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
    93  // for more information on using Contexts.
    94  func (c *IoT1ClickProjects) AssociateDeviceWithPlacementWithContext(ctx aws.Context, input *AssociateDeviceWithPlacementInput, opts ...request.Option) (*AssociateDeviceWithPlacementOutput, error) {
    95  	req, out := c.AssociateDeviceWithPlacementRequest(input)
    96  	req.SetContext(ctx)
    97  	req.ApplyOptions(opts...)
    98  	return out, req.Send()
    99  }
   100  
   101  const opCreatePlacement = "CreatePlacement"
   102  
   103  // CreatePlacementRequest generates a "aws/request.Request" representing the
   104  // client's request for the CreatePlacement operation. The "output" return
   105  // value will be populated with the request's response once the request completes
   106  // successfully.
   107  //
   108  // Use "Send" method on the returned Request to send the API call to the service.
   109  // the "output" return value is not valid until after Send returns without error.
   110  //
   111  // See CreatePlacement for more information on using the CreatePlacement
   112  // API call, and error handling.
   113  //
   114  // This method is useful when you want to inject custom logic or configuration
   115  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   116  //
   117  //
   118  //    // Example sending a request using the CreatePlacementRequest method.
   119  //    req, resp := client.CreatePlacementRequest(params)
   120  //
   121  //    err := req.Send()
   122  //    if err == nil { // resp is now filled
   123  //        fmt.Println(resp)
   124  //    }
   125  //
   126  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/CreatePlacement
   127  func (c *IoT1ClickProjects) CreatePlacementRequest(input *CreatePlacementInput) (req *request.Request, output *CreatePlacementOutput) {
   128  	op := &request.Operation{
   129  		Name:       opCreatePlacement,
   130  		HTTPMethod: "POST",
   131  		HTTPPath:   "/projects/{projectName}/placements",
   132  	}
   133  
   134  	if input == nil {
   135  		input = &CreatePlacementInput{}
   136  	}
   137  
   138  	output = &CreatePlacementOutput{}
   139  	req = c.newRequest(op, input, output)
   140  	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
   141  	return
   142  }
   143  
   144  // CreatePlacement API operation for AWS IoT 1-Click Projects Service.
   145  //
   146  // Creates an empty placement.
   147  //
   148  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   149  // with awserr.Error's Code and Message methods to get detailed information about
   150  // the error.
   151  //
   152  // See the AWS API reference guide for AWS IoT 1-Click Projects Service's
   153  // API operation CreatePlacement for usage and error information.
   154  //
   155  // Returned Error Types:
   156  //   * InternalFailureException
   157  //
   158  //   * InvalidRequestException
   159  //
   160  //   * ResourceConflictException
   161  //
   162  //   * ResourceNotFoundException
   163  //
   164  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/CreatePlacement
   165  func (c *IoT1ClickProjects) CreatePlacement(input *CreatePlacementInput) (*CreatePlacementOutput, error) {
   166  	req, out := c.CreatePlacementRequest(input)
   167  	return out, req.Send()
   168  }
   169  
   170  // CreatePlacementWithContext is the same as CreatePlacement with the addition of
   171  // the ability to pass a context and additional request options.
   172  //
   173  // See CreatePlacement for details on how to use this API operation.
   174  //
   175  // The context must be non-nil and will be used for request cancellation. If
   176  // the context is nil a panic will occur. In the future the SDK may create
   177  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   178  // for more information on using Contexts.
   179  func (c *IoT1ClickProjects) CreatePlacementWithContext(ctx aws.Context, input *CreatePlacementInput, opts ...request.Option) (*CreatePlacementOutput, error) {
   180  	req, out := c.CreatePlacementRequest(input)
   181  	req.SetContext(ctx)
   182  	req.ApplyOptions(opts...)
   183  	return out, req.Send()
   184  }
   185  
   186  const opCreateProject = "CreateProject"
   187  
   188  // CreateProjectRequest generates a "aws/request.Request" representing the
   189  // client's request for the CreateProject operation. The "output" return
   190  // value will be populated with the request's response once the request completes
   191  // successfully.
   192  //
   193  // Use "Send" method on the returned Request to send the API call to the service.
   194  // the "output" return value is not valid until after Send returns without error.
   195  //
   196  // See CreateProject for more information on using the CreateProject
   197  // API call, and error handling.
   198  //
   199  // This method is useful when you want to inject custom logic or configuration
   200  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   201  //
   202  //
   203  //    // Example sending a request using the CreateProjectRequest method.
   204  //    req, resp := client.CreateProjectRequest(params)
   205  //
   206  //    err := req.Send()
   207  //    if err == nil { // resp is now filled
   208  //        fmt.Println(resp)
   209  //    }
   210  //
   211  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/CreateProject
   212  func (c *IoT1ClickProjects) CreateProjectRequest(input *CreateProjectInput) (req *request.Request, output *CreateProjectOutput) {
   213  	op := &request.Operation{
   214  		Name:       opCreateProject,
   215  		HTTPMethod: "POST",
   216  		HTTPPath:   "/projects",
   217  	}
   218  
   219  	if input == nil {
   220  		input = &CreateProjectInput{}
   221  	}
   222  
   223  	output = &CreateProjectOutput{}
   224  	req = c.newRequest(op, input, output)
   225  	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
   226  	return
   227  }
   228  
   229  // CreateProject API operation for AWS IoT 1-Click Projects Service.
   230  //
   231  // Creates an empty project with a placement template. A project contains zero
   232  // or more placements that adhere to the placement template defined in the project.
   233  //
   234  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   235  // with awserr.Error's Code and Message methods to get detailed information about
   236  // the error.
   237  //
   238  // See the AWS API reference guide for AWS IoT 1-Click Projects Service's
   239  // API operation CreateProject for usage and error information.
   240  //
   241  // Returned Error Types:
   242  //   * InternalFailureException
   243  //
   244  //   * InvalidRequestException
   245  //
   246  //   * ResourceConflictException
   247  //
   248  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/CreateProject
   249  func (c *IoT1ClickProjects) CreateProject(input *CreateProjectInput) (*CreateProjectOutput, error) {
   250  	req, out := c.CreateProjectRequest(input)
   251  	return out, req.Send()
   252  }
   253  
   254  // CreateProjectWithContext is the same as CreateProject with the addition of
   255  // the ability to pass a context and additional request options.
   256  //
   257  // See CreateProject for details on how to use this API operation.
   258  //
   259  // The context must be non-nil and will be used for request cancellation. If
   260  // the context is nil a panic will occur. In the future the SDK may create
   261  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   262  // for more information on using Contexts.
   263  func (c *IoT1ClickProjects) CreateProjectWithContext(ctx aws.Context, input *CreateProjectInput, opts ...request.Option) (*CreateProjectOutput, error) {
   264  	req, out := c.CreateProjectRequest(input)
   265  	req.SetContext(ctx)
   266  	req.ApplyOptions(opts...)
   267  	return out, req.Send()
   268  }
   269  
   270  const opDeletePlacement = "DeletePlacement"
   271  
   272  // DeletePlacementRequest generates a "aws/request.Request" representing the
   273  // client's request for the DeletePlacement operation. The "output" return
   274  // value will be populated with the request's response once the request completes
   275  // successfully.
   276  //
   277  // Use "Send" method on the returned Request to send the API call to the service.
   278  // the "output" return value is not valid until after Send returns without error.
   279  //
   280  // See DeletePlacement for more information on using the DeletePlacement
   281  // API call, and error handling.
   282  //
   283  // This method is useful when you want to inject custom logic or configuration
   284  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   285  //
   286  //
   287  //    // Example sending a request using the DeletePlacementRequest method.
   288  //    req, resp := client.DeletePlacementRequest(params)
   289  //
   290  //    err := req.Send()
   291  //    if err == nil { // resp is now filled
   292  //        fmt.Println(resp)
   293  //    }
   294  //
   295  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/DeletePlacement
   296  func (c *IoT1ClickProjects) DeletePlacementRequest(input *DeletePlacementInput) (req *request.Request, output *DeletePlacementOutput) {
   297  	op := &request.Operation{
   298  		Name:       opDeletePlacement,
   299  		HTTPMethod: "DELETE",
   300  		HTTPPath:   "/projects/{projectName}/placements/{placementName}",
   301  	}
   302  
   303  	if input == nil {
   304  		input = &DeletePlacementInput{}
   305  	}
   306  
   307  	output = &DeletePlacementOutput{}
   308  	req = c.newRequest(op, input, output)
   309  	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
   310  	return
   311  }
   312  
   313  // DeletePlacement API operation for AWS IoT 1-Click Projects Service.
   314  //
   315  // Deletes a placement. To delete a placement, it must not have any devices
   316  // associated with it.
   317  //
   318  // When you delete a placement, all associated data becomes irretrievable.
   319  //
   320  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   321  // with awserr.Error's Code and Message methods to get detailed information about
   322  // the error.
   323  //
   324  // See the AWS API reference guide for AWS IoT 1-Click Projects Service's
   325  // API operation DeletePlacement for usage and error information.
   326  //
   327  // Returned Error Types:
   328  //   * InternalFailureException
   329  //
   330  //   * InvalidRequestException
   331  //
   332  //   * ResourceNotFoundException
   333  //
   334  //   * TooManyRequestsException
   335  //
   336  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/DeletePlacement
   337  func (c *IoT1ClickProjects) DeletePlacement(input *DeletePlacementInput) (*DeletePlacementOutput, error) {
   338  	req, out := c.DeletePlacementRequest(input)
   339  	return out, req.Send()
   340  }
   341  
   342  // DeletePlacementWithContext is the same as DeletePlacement with the addition of
   343  // the ability to pass a context and additional request options.
   344  //
   345  // See DeletePlacement for details on how to use this API operation.
   346  //
   347  // The context must be non-nil and will be used for request cancellation. If
   348  // the context is nil a panic will occur. In the future the SDK may create
   349  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   350  // for more information on using Contexts.
   351  func (c *IoT1ClickProjects) DeletePlacementWithContext(ctx aws.Context, input *DeletePlacementInput, opts ...request.Option) (*DeletePlacementOutput, error) {
   352  	req, out := c.DeletePlacementRequest(input)
   353  	req.SetContext(ctx)
   354  	req.ApplyOptions(opts...)
   355  	return out, req.Send()
   356  }
   357  
   358  const opDeleteProject = "DeleteProject"
   359  
   360  // DeleteProjectRequest generates a "aws/request.Request" representing the
   361  // client's request for the DeleteProject operation. The "output" return
   362  // value will be populated with the request's response once the request completes
   363  // successfully.
   364  //
   365  // Use "Send" method on the returned Request to send the API call to the service.
   366  // the "output" return value is not valid until after Send returns without error.
   367  //
   368  // See DeleteProject for more information on using the DeleteProject
   369  // API call, and error handling.
   370  //
   371  // This method is useful when you want to inject custom logic or configuration
   372  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   373  //
   374  //
   375  //    // Example sending a request using the DeleteProjectRequest method.
   376  //    req, resp := client.DeleteProjectRequest(params)
   377  //
   378  //    err := req.Send()
   379  //    if err == nil { // resp is now filled
   380  //        fmt.Println(resp)
   381  //    }
   382  //
   383  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/DeleteProject
   384  func (c *IoT1ClickProjects) DeleteProjectRequest(input *DeleteProjectInput) (req *request.Request, output *DeleteProjectOutput) {
   385  	op := &request.Operation{
   386  		Name:       opDeleteProject,
   387  		HTTPMethod: "DELETE",
   388  		HTTPPath:   "/projects/{projectName}",
   389  	}
   390  
   391  	if input == nil {
   392  		input = &DeleteProjectInput{}
   393  	}
   394  
   395  	output = &DeleteProjectOutput{}
   396  	req = c.newRequest(op, input, output)
   397  	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
   398  	return
   399  }
   400  
   401  // DeleteProject API operation for AWS IoT 1-Click Projects Service.
   402  //
   403  // Deletes a project. To delete a project, it must not have any placements associated
   404  // with it.
   405  //
   406  // When you delete a project, all associated data becomes irretrievable.
   407  //
   408  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   409  // with awserr.Error's Code and Message methods to get detailed information about
   410  // the error.
   411  //
   412  // See the AWS API reference guide for AWS IoT 1-Click Projects Service's
   413  // API operation DeleteProject for usage and error information.
   414  //
   415  // Returned Error Types:
   416  //   * InternalFailureException
   417  //
   418  //   * InvalidRequestException
   419  //
   420  //   * ResourceNotFoundException
   421  //
   422  //   * TooManyRequestsException
   423  //
   424  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/DeleteProject
   425  func (c *IoT1ClickProjects) DeleteProject(input *DeleteProjectInput) (*DeleteProjectOutput, error) {
   426  	req, out := c.DeleteProjectRequest(input)
   427  	return out, req.Send()
   428  }
   429  
   430  // DeleteProjectWithContext is the same as DeleteProject with the addition of
   431  // the ability to pass a context and additional request options.
   432  //
   433  // See DeleteProject for details on how to use this API operation.
   434  //
   435  // The context must be non-nil and will be used for request cancellation. If
   436  // the context is nil a panic will occur. In the future the SDK may create
   437  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   438  // for more information on using Contexts.
   439  func (c *IoT1ClickProjects) DeleteProjectWithContext(ctx aws.Context, input *DeleteProjectInput, opts ...request.Option) (*DeleteProjectOutput, error) {
   440  	req, out := c.DeleteProjectRequest(input)
   441  	req.SetContext(ctx)
   442  	req.ApplyOptions(opts...)
   443  	return out, req.Send()
   444  }
   445  
   446  const opDescribePlacement = "DescribePlacement"
   447  
   448  // DescribePlacementRequest generates a "aws/request.Request" representing the
   449  // client's request for the DescribePlacement operation. The "output" return
   450  // value will be populated with the request's response once the request completes
   451  // successfully.
   452  //
   453  // Use "Send" method on the returned Request to send the API call to the service.
   454  // the "output" return value is not valid until after Send returns without error.
   455  //
   456  // See DescribePlacement for more information on using the DescribePlacement
   457  // API call, and error handling.
   458  //
   459  // This method is useful when you want to inject custom logic or configuration
   460  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   461  //
   462  //
   463  //    // Example sending a request using the DescribePlacementRequest method.
   464  //    req, resp := client.DescribePlacementRequest(params)
   465  //
   466  //    err := req.Send()
   467  //    if err == nil { // resp is now filled
   468  //        fmt.Println(resp)
   469  //    }
   470  //
   471  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/DescribePlacement
   472  func (c *IoT1ClickProjects) DescribePlacementRequest(input *DescribePlacementInput) (req *request.Request, output *DescribePlacementOutput) {
   473  	op := &request.Operation{
   474  		Name:       opDescribePlacement,
   475  		HTTPMethod: "GET",
   476  		HTTPPath:   "/projects/{projectName}/placements/{placementName}",
   477  	}
   478  
   479  	if input == nil {
   480  		input = &DescribePlacementInput{}
   481  	}
   482  
   483  	output = &DescribePlacementOutput{}
   484  	req = c.newRequest(op, input, output)
   485  	return
   486  }
   487  
   488  // DescribePlacement API operation for AWS IoT 1-Click Projects Service.
   489  //
   490  // Describes a placement in a project.
   491  //
   492  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   493  // with awserr.Error's Code and Message methods to get detailed information about
   494  // the error.
   495  //
   496  // See the AWS API reference guide for AWS IoT 1-Click Projects Service's
   497  // API operation DescribePlacement for usage and error information.
   498  //
   499  // Returned Error Types:
   500  //   * InternalFailureException
   501  //
   502  //   * InvalidRequestException
   503  //
   504  //   * ResourceNotFoundException
   505  //
   506  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/DescribePlacement
   507  func (c *IoT1ClickProjects) DescribePlacement(input *DescribePlacementInput) (*DescribePlacementOutput, error) {
   508  	req, out := c.DescribePlacementRequest(input)
   509  	return out, req.Send()
   510  }
   511  
   512  // DescribePlacementWithContext is the same as DescribePlacement with the addition of
   513  // the ability to pass a context and additional request options.
   514  //
   515  // See DescribePlacement for details on how to use this API operation.
   516  //
   517  // The context must be non-nil and will be used for request cancellation. If
   518  // the context is nil a panic will occur. In the future the SDK may create
   519  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   520  // for more information on using Contexts.
   521  func (c *IoT1ClickProjects) DescribePlacementWithContext(ctx aws.Context, input *DescribePlacementInput, opts ...request.Option) (*DescribePlacementOutput, error) {
   522  	req, out := c.DescribePlacementRequest(input)
   523  	req.SetContext(ctx)
   524  	req.ApplyOptions(opts...)
   525  	return out, req.Send()
   526  }
   527  
   528  const opDescribeProject = "DescribeProject"
   529  
   530  // DescribeProjectRequest generates a "aws/request.Request" representing the
   531  // client's request for the DescribeProject operation. The "output" return
   532  // value will be populated with the request's response once the request completes
   533  // successfully.
   534  //
   535  // Use "Send" method on the returned Request to send the API call to the service.
   536  // the "output" return value is not valid until after Send returns without error.
   537  //
   538  // See DescribeProject for more information on using the DescribeProject
   539  // API call, and error handling.
   540  //
   541  // This method is useful when you want to inject custom logic or configuration
   542  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   543  //
   544  //
   545  //    // Example sending a request using the DescribeProjectRequest method.
   546  //    req, resp := client.DescribeProjectRequest(params)
   547  //
   548  //    err := req.Send()
   549  //    if err == nil { // resp is now filled
   550  //        fmt.Println(resp)
   551  //    }
   552  //
   553  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/DescribeProject
   554  func (c *IoT1ClickProjects) DescribeProjectRequest(input *DescribeProjectInput) (req *request.Request, output *DescribeProjectOutput) {
   555  	op := &request.Operation{
   556  		Name:       opDescribeProject,
   557  		HTTPMethod: "GET",
   558  		HTTPPath:   "/projects/{projectName}",
   559  	}
   560  
   561  	if input == nil {
   562  		input = &DescribeProjectInput{}
   563  	}
   564  
   565  	output = &DescribeProjectOutput{}
   566  	req = c.newRequest(op, input, output)
   567  	return
   568  }
   569  
   570  // DescribeProject API operation for AWS IoT 1-Click Projects Service.
   571  //
   572  // Returns an object describing a project.
   573  //
   574  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   575  // with awserr.Error's Code and Message methods to get detailed information about
   576  // the error.
   577  //
   578  // See the AWS API reference guide for AWS IoT 1-Click Projects Service's
   579  // API operation DescribeProject for usage and error information.
   580  //
   581  // Returned Error Types:
   582  //   * InternalFailureException
   583  //
   584  //   * InvalidRequestException
   585  //
   586  //   * ResourceNotFoundException
   587  //
   588  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/DescribeProject
   589  func (c *IoT1ClickProjects) DescribeProject(input *DescribeProjectInput) (*DescribeProjectOutput, error) {
   590  	req, out := c.DescribeProjectRequest(input)
   591  	return out, req.Send()
   592  }
   593  
   594  // DescribeProjectWithContext is the same as DescribeProject with the addition of
   595  // the ability to pass a context and additional request options.
   596  //
   597  // See DescribeProject for details on how to use this API operation.
   598  //
   599  // The context must be non-nil and will be used for request cancellation. If
   600  // the context is nil a panic will occur. In the future the SDK may create
   601  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   602  // for more information on using Contexts.
   603  func (c *IoT1ClickProjects) DescribeProjectWithContext(ctx aws.Context, input *DescribeProjectInput, opts ...request.Option) (*DescribeProjectOutput, error) {
   604  	req, out := c.DescribeProjectRequest(input)
   605  	req.SetContext(ctx)
   606  	req.ApplyOptions(opts...)
   607  	return out, req.Send()
   608  }
   609  
   610  const opDisassociateDeviceFromPlacement = "DisassociateDeviceFromPlacement"
   611  
   612  // DisassociateDeviceFromPlacementRequest generates a "aws/request.Request" representing the
   613  // client's request for the DisassociateDeviceFromPlacement operation. The "output" return
   614  // value will be populated with the request's response once the request completes
   615  // successfully.
   616  //
   617  // Use "Send" method on the returned Request to send the API call to the service.
   618  // the "output" return value is not valid until after Send returns without error.
   619  //
   620  // See DisassociateDeviceFromPlacement for more information on using the DisassociateDeviceFromPlacement
   621  // API call, and error handling.
   622  //
   623  // This method is useful when you want to inject custom logic or configuration
   624  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   625  //
   626  //
   627  //    // Example sending a request using the DisassociateDeviceFromPlacementRequest method.
   628  //    req, resp := client.DisassociateDeviceFromPlacementRequest(params)
   629  //
   630  //    err := req.Send()
   631  //    if err == nil { // resp is now filled
   632  //        fmt.Println(resp)
   633  //    }
   634  //
   635  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/DisassociateDeviceFromPlacement
   636  func (c *IoT1ClickProjects) DisassociateDeviceFromPlacementRequest(input *DisassociateDeviceFromPlacementInput) (req *request.Request, output *DisassociateDeviceFromPlacementOutput) {
   637  	op := &request.Operation{
   638  		Name:       opDisassociateDeviceFromPlacement,
   639  		HTTPMethod: "DELETE",
   640  		HTTPPath:   "/projects/{projectName}/placements/{placementName}/devices/{deviceTemplateName}",
   641  	}
   642  
   643  	if input == nil {
   644  		input = &DisassociateDeviceFromPlacementInput{}
   645  	}
   646  
   647  	output = &DisassociateDeviceFromPlacementOutput{}
   648  	req = c.newRequest(op, input, output)
   649  	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
   650  	return
   651  }
   652  
   653  // DisassociateDeviceFromPlacement API operation for AWS IoT 1-Click Projects Service.
   654  //
   655  // Removes a physical device from a placement.
   656  //
   657  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   658  // with awserr.Error's Code and Message methods to get detailed information about
   659  // the error.
   660  //
   661  // See the AWS API reference guide for AWS IoT 1-Click Projects Service's
   662  // API operation DisassociateDeviceFromPlacement for usage and error information.
   663  //
   664  // Returned Error Types:
   665  //   * InternalFailureException
   666  //
   667  //   * InvalidRequestException
   668  //
   669  //   * ResourceNotFoundException
   670  //
   671  //   * TooManyRequestsException
   672  //
   673  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/DisassociateDeviceFromPlacement
   674  func (c *IoT1ClickProjects) DisassociateDeviceFromPlacement(input *DisassociateDeviceFromPlacementInput) (*DisassociateDeviceFromPlacementOutput, error) {
   675  	req, out := c.DisassociateDeviceFromPlacementRequest(input)
   676  	return out, req.Send()
   677  }
   678  
   679  // DisassociateDeviceFromPlacementWithContext is the same as DisassociateDeviceFromPlacement with the addition of
   680  // the ability to pass a context and additional request options.
   681  //
   682  // See DisassociateDeviceFromPlacement for details on how to use this API operation.
   683  //
   684  // The context must be non-nil and will be used for request cancellation. If
   685  // the context is nil a panic will occur. In the future the SDK may create
   686  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   687  // for more information on using Contexts.
   688  func (c *IoT1ClickProjects) DisassociateDeviceFromPlacementWithContext(ctx aws.Context, input *DisassociateDeviceFromPlacementInput, opts ...request.Option) (*DisassociateDeviceFromPlacementOutput, error) {
   689  	req, out := c.DisassociateDeviceFromPlacementRequest(input)
   690  	req.SetContext(ctx)
   691  	req.ApplyOptions(opts...)
   692  	return out, req.Send()
   693  }
   694  
   695  const opGetDevicesInPlacement = "GetDevicesInPlacement"
   696  
   697  // GetDevicesInPlacementRequest generates a "aws/request.Request" representing the
   698  // client's request for the GetDevicesInPlacement operation. The "output" return
   699  // value will be populated with the request's response once the request completes
   700  // successfully.
   701  //
   702  // Use "Send" method on the returned Request to send the API call to the service.
   703  // the "output" return value is not valid until after Send returns without error.
   704  //
   705  // See GetDevicesInPlacement for more information on using the GetDevicesInPlacement
   706  // API call, and error handling.
   707  //
   708  // This method is useful when you want to inject custom logic or configuration
   709  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   710  //
   711  //
   712  //    // Example sending a request using the GetDevicesInPlacementRequest method.
   713  //    req, resp := client.GetDevicesInPlacementRequest(params)
   714  //
   715  //    err := req.Send()
   716  //    if err == nil { // resp is now filled
   717  //        fmt.Println(resp)
   718  //    }
   719  //
   720  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/GetDevicesInPlacement
   721  func (c *IoT1ClickProjects) GetDevicesInPlacementRequest(input *GetDevicesInPlacementInput) (req *request.Request, output *GetDevicesInPlacementOutput) {
   722  	op := &request.Operation{
   723  		Name:       opGetDevicesInPlacement,
   724  		HTTPMethod: "GET",
   725  		HTTPPath:   "/projects/{projectName}/placements/{placementName}/devices",
   726  	}
   727  
   728  	if input == nil {
   729  		input = &GetDevicesInPlacementInput{}
   730  	}
   731  
   732  	output = &GetDevicesInPlacementOutput{}
   733  	req = c.newRequest(op, input, output)
   734  	return
   735  }
   736  
   737  // GetDevicesInPlacement API operation for AWS IoT 1-Click Projects Service.
   738  //
   739  // Returns an object enumerating the devices in a placement.
   740  //
   741  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   742  // with awserr.Error's Code and Message methods to get detailed information about
   743  // the error.
   744  //
   745  // See the AWS API reference guide for AWS IoT 1-Click Projects Service's
   746  // API operation GetDevicesInPlacement for usage and error information.
   747  //
   748  // Returned Error Types:
   749  //   * InternalFailureException
   750  //
   751  //   * InvalidRequestException
   752  //
   753  //   * ResourceNotFoundException
   754  //
   755  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/GetDevicesInPlacement
   756  func (c *IoT1ClickProjects) GetDevicesInPlacement(input *GetDevicesInPlacementInput) (*GetDevicesInPlacementOutput, error) {
   757  	req, out := c.GetDevicesInPlacementRequest(input)
   758  	return out, req.Send()
   759  }
   760  
   761  // GetDevicesInPlacementWithContext is the same as GetDevicesInPlacement with the addition of
   762  // the ability to pass a context and additional request options.
   763  //
   764  // See GetDevicesInPlacement for details on how to use this API operation.
   765  //
   766  // The context must be non-nil and will be used for request cancellation. If
   767  // the context is nil a panic will occur. In the future the SDK may create
   768  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   769  // for more information on using Contexts.
   770  func (c *IoT1ClickProjects) GetDevicesInPlacementWithContext(ctx aws.Context, input *GetDevicesInPlacementInput, opts ...request.Option) (*GetDevicesInPlacementOutput, error) {
   771  	req, out := c.GetDevicesInPlacementRequest(input)
   772  	req.SetContext(ctx)
   773  	req.ApplyOptions(opts...)
   774  	return out, req.Send()
   775  }
   776  
   777  const opListPlacements = "ListPlacements"
   778  
   779  // ListPlacementsRequest generates a "aws/request.Request" representing the
   780  // client's request for the ListPlacements operation. The "output" return
   781  // value will be populated with the request's response once the request completes
   782  // successfully.
   783  //
   784  // Use "Send" method on the returned Request to send the API call to the service.
   785  // the "output" return value is not valid until after Send returns without error.
   786  //
   787  // See ListPlacements for more information on using the ListPlacements
   788  // API call, and error handling.
   789  //
   790  // This method is useful when you want to inject custom logic or configuration
   791  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   792  //
   793  //
   794  //    // Example sending a request using the ListPlacementsRequest method.
   795  //    req, resp := client.ListPlacementsRequest(params)
   796  //
   797  //    err := req.Send()
   798  //    if err == nil { // resp is now filled
   799  //        fmt.Println(resp)
   800  //    }
   801  //
   802  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/ListPlacements
   803  func (c *IoT1ClickProjects) ListPlacementsRequest(input *ListPlacementsInput) (req *request.Request, output *ListPlacementsOutput) {
   804  	op := &request.Operation{
   805  		Name:       opListPlacements,
   806  		HTTPMethod: "GET",
   807  		HTTPPath:   "/projects/{projectName}/placements",
   808  		Paginator: &request.Paginator{
   809  			InputTokens:     []string{"nextToken"},
   810  			OutputTokens:    []string{"nextToken"},
   811  			LimitToken:      "maxResults",
   812  			TruncationToken: "",
   813  		},
   814  	}
   815  
   816  	if input == nil {
   817  		input = &ListPlacementsInput{}
   818  	}
   819  
   820  	output = &ListPlacementsOutput{}
   821  	req = c.newRequest(op, input, output)
   822  	return
   823  }
   824  
   825  // ListPlacements API operation for AWS IoT 1-Click Projects Service.
   826  //
   827  // Lists the placement(s) of a project.
   828  //
   829  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   830  // with awserr.Error's Code and Message methods to get detailed information about
   831  // the error.
   832  //
   833  // See the AWS API reference guide for AWS IoT 1-Click Projects Service's
   834  // API operation ListPlacements for usage and error information.
   835  //
   836  // Returned Error Types:
   837  //   * InternalFailureException
   838  //
   839  //   * InvalidRequestException
   840  //
   841  //   * ResourceNotFoundException
   842  //
   843  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/ListPlacements
   844  func (c *IoT1ClickProjects) ListPlacements(input *ListPlacementsInput) (*ListPlacementsOutput, error) {
   845  	req, out := c.ListPlacementsRequest(input)
   846  	return out, req.Send()
   847  }
   848  
   849  // ListPlacementsWithContext is the same as ListPlacements with the addition of
   850  // the ability to pass a context and additional request options.
   851  //
   852  // See ListPlacements for details on how to use this API operation.
   853  //
   854  // The context must be non-nil and will be used for request cancellation. If
   855  // the context is nil a panic will occur. In the future the SDK may create
   856  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   857  // for more information on using Contexts.
   858  func (c *IoT1ClickProjects) ListPlacementsWithContext(ctx aws.Context, input *ListPlacementsInput, opts ...request.Option) (*ListPlacementsOutput, error) {
   859  	req, out := c.ListPlacementsRequest(input)
   860  	req.SetContext(ctx)
   861  	req.ApplyOptions(opts...)
   862  	return out, req.Send()
   863  }
   864  
   865  // ListPlacementsPages iterates over the pages of a ListPlacements operation,
   866  // calling the "fn" function with the response data for each page. To stop
   867  // iterating, return false from the fn function.
   868  //
   869  // See ListPlacements method for more information on how to use this operation.
   870  //
   871  // Note: This operation can generate multiple requests to a service.
   872  //
   873  //    // Example iterating over at most 3 pages of a ListPlacements operation.
   874  //    pageNum := 0
   875  //    err := client.ListPlacementsPages(params,
   876  //        func(page *iot1clickprojects.ListPlacementsOutput, lastPage bool) bool {
   877  //            pageNum++
   878  //            fmt.Println(page)
   879  //            return pageNum <= 3
   880  //        })
   881  //
   882  func (c *IoT1ClickProjects) ListPlacementsPages(input *ListPlacementsInput, fn func(*ListPlacementsOutput, bool) bool) error {
   883  	return c.ListPlacementsPagesWithContext(aws.BackgroundContext(), input, fn)
   884  }
   885  
   886  // ListPlacementsPagesWithContext same as ListPlacementsPages except
   887  // it takes a Context and allows setting request options on the pages.
   888  //
   889  // The context must be non-nil and will be used for request cancellation. If
   890  // the context is nil a panic will occur. In the future the SDK may create
   891  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   892  // for more information on using Contexts.
   893  func (c *IoT1ClickProjects) ListPlacementsPagesWithContext(ctx aws.Context, input *ListPlacementsInput, fn func(*ListPlacementsOutput, bool) bool, opts ...request.Option) error {
   894  	p := request.Pagination{
   895  		NewRequest: func() (*request.Request, error) {
   896  			var inCpy *ListPlacementsInput
   897  			if input != nil {
   898  				tmp := *input
   899  				inCpy = &tmp
   900  			}
   901  			req, _ := c.ListPlacementsRequest(inCpy)
   902  			req.SetContext(ctx)
   903  			req.ApplyOptions(opts...)
   904  			return req, nil
   905  		},
   906  	}
   907  
   908  	for p.Next() {
   909  		if !fn(p.Page().(*ListPlacementsOutput), !p.HasNextPage()) {
   910  			break
   911  		}
   912  	}
   913  
   914  	return p.Err()
   915  }
   916  
   917  const opListProjects = "ListProjects"
   918  
   919  // ListProjectsRequest generates a "aws/request.Request" representing the
   920  // client's request for the ListProjects operation. The "output" return
   921  // value will be populated with the request's response once the request completes
   922  // successfully.
   923  //
   924  // Use "Send" method on the returned Request to send the API call to the service.
   925  // the "output" return value is not valid until after Send returns without error.
   926  //
   927  // See ListProjects for more information on using the ListProjects
   928  // API call, and error handling.
   929  //
   930  // This method is useful when you want to inject custom logic or configuration
   931  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
   932  //
   933  //
   934  //    // Example sending a request using the ListProjectsRequest method.
   935  //    req, resp := client.ListProjectsRequest(params)
   936  //
   937  //    err := req.Send()
   938  //    if err == nil { // resp is now filled
   939  //        fmt.Println(resp)
   940  //    }
   941  //
   942  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/ListProjects
   943  func (c *IoT1ClickProjects) ListProjectsRequest(input *ListProjectsInput) (req *request.Request, output *ListProjectsOutput) {
   944  	op := &request.Operation{
   945  		Name:       opListProjects,
   946  		HTTPMethod: "GET",
   947  		HTTPPath:   "/projects",
   948  		Paginator: &request.Paginator{
   949  			InputTokens:     []string{"nextToken"},
   950  			OutputTokens:    []string{"nextToken"},
   951  			LimitToken:      "maxResults",
   952  			TruncationToken: "",
   953  		},
   954  	}
   955  
   956  	if input == nil {
   957  		input = &ListProjectsInput{}
   958  	}
   959  
   960  	output = &ListProjectsOutput{}
   961  	req = c.newRequest(op, input, output)
   962  	return
   963  }
   964  
   965  // ListProjects API operation for AWS IoT 1-Click Projects Service.
   966  //
   967  // Lists the AWS IoT 1-Click project(s) associated with your AWS account and
   968  // region.
   969  //
   970  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
   971  // with awserr.Error's Code and Message methods to get detailed information about
   972  // the error.
   973  //
   974  // See the AWS API reference guide for AWS IoT 1-Click Projects Service's
   975  // API operation ListProjects for usage and error information.
   976  //
   977  // Returned Error Types:
   978  //   * InternalFailureException
   979  //
   980  //   * InvalidRequestException
   981  //
   982  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/ListProjects
   983  func (c *IoT1ClickProjects) ListProjects(input *ListProjectsInput) (*ListProjectsOutput, error) {
   984  	req, out := c.ListProjectsRequest(input)
   985  	return out, req.Send()
   986  }
   987  
   988  // ListProjectsWithContext is the same as ListProjects with the addition of
   989  // the ability to pass a context and additional request options.
   990  //
   991  // See ListProjects for details on how to use this API operation.
   992  //
   993  // The context must be non-nil and will be used for request cancellation. If
   994  // the context is nil a panic will occur. In the future the SDK may create
   995  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
   996  // for more information on using Contexts.
   997  func (c *IoT1ClickProjects) ListProjectsWithContext(ctx aws.Context, input *ListProjectsInput, opts ...request.Option) (*ListProjectsOutput, error) {
   998  	req, out := c.ListProjectsRequest(input)
   999  	req.SetContext(ctx)
  1000  	req.ApplyOptions(opts...)
  1001  	return out, req.Send()
  1002  }
  1003  
  1004  // ListProjectsPages iterates over the pages of a ListProjects operation,
  1005  // calling the "fn" function with the response data for each page. To stop
  1006  // iterating, return false from the fn function.
  1007  //
  1008  // See ListProjects method for more information on how to use this operation.
  1009  //
  1010  // Note: This operation can generate multiple requests to a service.
  1011  //
  1012  //    // Example iterating over at most 3 pages of a ListProjects operation.
  1013  //    pageNum := 0
  1014  //    err := client.ListProjectsPages(params,
  1015  //        func(page *iot1clickprojects.ListProjectsOutput, lastPage bool) bool {
  1016  //            pageNum++
  1017  //            fmt.Println(page)
  1018  //            return pageNum <= 3
  1019  //        })
  1020  //
  1021  func (c *IoT1ClickProjects) ListProjectsPages(input *ListProjectsInput, fn func(*ListProjectsOutput, bool) bool) error {
  1022  	return c.ListProjectsPagesWithContext(aws.BackgroundContext(), input, fn)
  1023  }
  1024  
  1025  // ListProjectsPagesWithContext same as ListProjectsPages except
  1026  // it takes a Context and allows setting request options on the pages.
  1027  //
  1028  // The context must be non-nil and will be used for request cancellation. If
  1029  // the context is nil a panic will occur. In the future the SDK may create
  1030  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1031  // for more information on using Contexts.
  1032  func (c *IoT1ClickProjects) ListProjectsPagesWithContext(ctx aws.Context, input *ListProjectsInput, fn func(*ListProjectsOutput, bool) bool, opts ...request.Option) error {
  1033  	p := request.Pagination{
  1034  		NewRequest: func() (*request.Request, error) {
  1035  			var inCpy *ListProjectsInput
  1036  			if input != nil {
  1037  				tmp := *input
  1038  				inCpy = &tmp
  1039  			}
  1040  			req, _ := c.ListProjectsRequest(inCpy)
  1041  			req.SetContext(ctx)
  1042  			req.ApplyOptions(opts...)
  1043  			return req, nil
  1044  		},
  1045  	}
  1046  
  1047  	for p.Next() {
  1048  		if !fn(p.Page().(*ListProjectsOutput), !p.HasNextPage()) {
  1049  			break
  1050  		}
  1051  	}
  1052  
  1053  	return p.Err()
  1054  }
  1055  
  1056  const opListTagsForResource = "ListTagsForResource"
  1057  
  1058  // ListTagsForResourceRequest generates a "aws/request.Request" representing the
  1059  // client's request for the ListTagsForResource operation. The "output" return
  1060  // value will be populated with the request's response once the request completes
  1061  // successfully.
  1062  //
  1063  // Use "Send" method on the returned Request to send the API call to the service.
  1064  // the "output" return value is not valid until after Send returns without error.
  1065  //
  1066  // See ListTagsForResource for more information on using the ListTagsForResource
  1067  // API call, and error handling.
  1068  //
  1069  // This method is useful when you want to inject custom logic or configuration
  1070  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1071  //
  1072  //
  1073  //    // Example sending a request using the ListTagsForResourceRequest method.
  1074  //    req, resp := client.ListTagsForResourceRequest(params)
  1075  //
  1076  //    err := req.Send()
  1077  //    if err == nil { // resp is now filled
  1078  //        fmt.Println(resp)
  1079  //    }
  1080  //
  1081  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/ListTagsForResource
  1082  func (c *IoT1ClickProjects) ListTagsForResourceRequest(input *ListTagsForResourceInput) (req *request.Request, output *ListTagsForResourceOutput) {
  1083  	op := &request.Operation{
  1084  		Name:       opListTagsForResource,
  1085  		HTTPMethod: "GET",
  1086  		HTTPPath:   "/tags/{resourceArn}",
  1087  	}
  1088  
  1089  	if input == nil {
  1090  		input = &ListTagsForResourceInput{}
  1091  	}
  1092  
  1093  	output = &ListTagsForResourceOutput{}
  1094  	req = c.newRequest(op, input, output)
  1095  	return
  1096  }
  1097  
  1098  // ListTagsForResource API operation for AWS IoT 1-Click Projects Service.
  1099  //
  1100  // Lists the tags (metadata key/value pairs) which you have assigned to the
  1101  // resource.
  1102  //
  1103  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1104  // with awserr.Error's Code and Message methods to get detailed information about
  1105  // the error.
  1106  //
  1107  // See the AWS API reference guide for AWS IoT 1-Click Projects Service's
  1108  // API operation ListTagsForResource for usage and error information.
  1109  //
  1110  // Returned Error Types:
  1111  //   * InternalFailureException
  1112  //
  1113  //   * InvalidRequestException
  1114  //
  1115  //   * ResourceNotFoundException
  1116  //
  1117  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/ListTagsForResource
  1118  func (c *IoT1ClickProjects) ListTagsForResource(input *ListTagsForResourceInput) (*ListTagsForResourceOutput, error) {
  1119  	req, out := c.ListTagsForResourceRequest(input)
  1120  	return out, req.Send()
  1121  }
  1122  
  1123  // ListTagsForResourceWithContext is the same as ListTagsForResource with the addition of
  1124  // the ability to pass a context and additional request options.
  1125  //
  1126  // See ListTagsForResource for details on how to use this API operation.
  1127  //
  1128  // The context must be non-nil and will be used for request cancellation. If
  1129  // the context is nil a panic will occur. In the future the SDK may create
  1130  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1131  // for more information on using Contexts.
  1132  func (c *IoT1ClickProjects) ListTagsForResourceWithContext(ctx aws.Context, input *ListTagsForResourceInput, opts ...request.Option) (*ListTagsForResourceOutput, error) {
  1133  	req, out := c.ListTagsForResourceRequest(input)
  1134  	req.SetContext(ctx)
  1135  	req.ApplyOptions(opts...)
  1136  	return out, req.Send()
  1137  }
  1138  
  1139  const opTagResource = "TagResource"
  1140  
  1141  // TagResourceRequest generates a "aws/request.Request" representing the
  1142  // client's request for the TagResource operation. The "output" return
  1143  // value will be populated with the request's response once the request completes
  1144  // successfully.
  1145  //
  1146  // Use "Send" method on the returned Request to send the API call to the service.
  1147  // the "output" return value is not valid until after Send returns without error.
  1148  //
  1149  // See TagResource for more information on using the TagResource
  1150  // API call, and error handling.
  1151  //
  1152  // This method is useful when you want to inject custom logic or configuration
  1153  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1154  //
  1155  //
  1156  //    // Example sending a request using the TagResourceRequest method.
  1157  //    req, resp := client.TagResourceRequest(params)
  1158  //
  1159  //    err := req.Send()
  1160  //    if err == nil { // resp is now filled
  1161  //        fmt.Println(resp)
  1162  //    }
  1163  //
  1164  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/TagResource
  1165  func (c *IoT1ClickProjects) TagResourceRequest(input *TagResourceInput) (req *request.Request, output *TagResourceOutput) {
  1166  	op := &request.Operation{
  1167  		Name:       opTagResource,
  1168  		HTTPMethod: "POST",
  1169  		HTTPPath:   "/tags/{resourceArn}",
  1170  	}
  1171  
  1172  	if input == nil {
  1173  		input = &TagResourceInput{}
  1174  	}
  1175  
  1176  	output = &TagResourceOutput{}
  1177  	req = c.newRequest(op, input, output)
  1178  	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1179  	return
  1180  }
  1181  
  1182  // TagResource API operation for AWS IoT 1-Click Projects Service.
  1183  //
  1184  // Creates or modifies tags for a resource. Tags are key/value pairs (metadata)
  1185  // that can be used to manage a resource. For more information, see AWS Tagging
  1186  // Strategies (https://aws.amazon.com/answers/account-management/aws-tagging-strategies/).
  1187  //
  1188  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1189  // with awserr.Error's Code and Message methods to get detailed information about
  1190  // the error.
  1191  //
  1192  // See the AWS API reference guide for AWS IoT 1-Click Projects Service's
  1193  // API operation TagResource for usage and error information.
  1194  //
  1195  // Returned Error Types:
  1196  //   * InternalFailureException
  1197  //
  1198  //   * InvalidRequestException
  1199  //
  1200  //   * ResourceNotFoundException
  1201  //
  1202  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/TagResource
  1203  func (c *IoT1ClickProjects) TagResource(input *TagResourceInput) (*TagResourceOutput, error) {
  1204  	req, out := c.TagResourceRequest(input)
  1205  	return out, req.Send()
  1206  }
  1207  
  1208  // TagResourceWithContext is the same as TagResource with the addition of
  1209  // the ability to pass a context and additional request options.
  1210  //
  1211  // See TagResource for details on how to use this API operation.
  1212  //
  1213  // The context must be non-nil and will be used for request cancellation. If
  1214  // the context is nil a panic will occur. In the future the SDK may create
  1215  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1216  // for more information on using Contexts.
  1217  func (c *IoT1ClickProjects) TagResourceWithContext(ctx aws.Context, input *TagResourceInput, opts ...request.Option) (*TagResourceOutput, error) {
  1218  	req, out := c.TagResourceRequest(input)
  1219  	req.SetContext(ctx)
  1220  	req.ApplyOptions(opts...)
  1221  	return out, req.Send()
  1222  }
  1223  
  1224  const opUntagResource = "UntagResource"
  1225  
  1226  // UntagResourceRequest generates a "aws/request.Request" representing the
  1227  // client's request for the UntagResource operation. The "output" return
  1228  // value will be populated with the request's response once the request completes
  1229  // successfully.
  1230  //
  1231  // Use "Send" method on the returned Request to send the API call to the service.
  1232  // the "output" return value is not valid until after Send returns without error.
  1233  //
  1234  // See UntagResource for more information on using the UntagResource
  1235  // API call, and error handling.
  1236  //
  1237  // This method is useful when you want to inject custom logic or configuration
  1238  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1239  //
  1240  //
  1241  //    // Example sending a request using the UntagResourceRequest method.
  1242  //    req, resp := client.UntagResourceRequest(params)
  1243  //
  1244  //    err := req.Send()
  1245  //    if err == nil { // resp is now filled
  1246  //        fmt.Println(resp)
  1247  //    }
  1248  //
  1249  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/UntagResource
  1250  func (c *IoT1ClickProjects) UntagResourceRequest(input *UntagResourceInput) (req *request.Request, output *UntagResourceOutput) {
  1251  	op := &request.Operation{
  1252  		Name:       opUntagResource,
  1253  		HTTPMethod: "DELETE",
  1254  		HTTPPath:   "/tags/{resourceArn}",
  1255  	}
  1256  
  1257  	if input == nil {
  1258  		input = &UntagResourceInput{}
  1259  	}
  1260  
  1261  	output = &UntagResourceOutput{}
  1262  	req = c.newRequest(op, input, output)
  1263  	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1264  	return
  1265  }
  1266  
  1267  // UntagResource API operation for AWS IoT 1-Click Projects Service.
  1268  //
  1269  // Removes one or more tags (metadata key/value pairs) from a resource.
  1270  //
  1271  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1272  // with awserr.Error's Code and Message methods to get detailed information about
  1273  // the error.
  1274  //
  1275  // See the AWS API reference guide for AWS IoT 1-Click Projects Service's
  1276  // API operation UntagResource for usage and error information.
  1277  //
  1278  // Returned Error Types:
  1279  //   * InternalFailureException
  1280  //
  1281  //   * InvalidRequestException
  1282  //
  1283  //   * ResourceNotFoundException
  1284  //
  1285  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/UntagResource
  1286  func (c *IoT1ClickProjects) UntagResource(input *UntagResourceInput) (*UntagResourceOutput, error) {
  1287  	req, out := c.UntagResourceRequest(input)
  1288  	return out, req.Send()
  1289  }
  1290  
  1291  // UntagResourceWithContext is the same as UntagResource with the addition of
  1292  // the ability to pass a context and additional request options.
  1293  //
  1294  // See UntagResource for details on how to use this API operation.
  1295  //
  1296  // The context must be non-nil and will be used for request cancellation. If
  1297  // the context is nil a panic will occur. In the future the SDK may create
  1298  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1299  // for more information on using Contexts.
  1300  func (c *IoT1ClickProjects) UntagResourceWithContext(ctx aws.Context, input *UntagResourceInput, opts ...request.Option) (*UntagResourceOutput, error) {
  1301  	req, out := c.UntagResourceRequest(input)
  1302  	req.SetContext(ctx)
  1303  	req.ApplyOptions(opts...)
  1304  	return out, req.Send()
  1305  }
  1306  
  1307  const opUpdatePlacement = "UpdatePlacement"
  1308  
  1309  // UpdatePlacementRequest generates a "aws/request.Request" representing the
  1310  // client's request for the UpdatePlacement operation. The "output" return
  1311  // value will be populated with the request's response once the request completes
  1312  // successfully.
  1313  //
  1314  // Use "Send" method on the returned Request to send the API call to the service.
  1315  // the "output" return value is not valid until after Send returns without error.
  1316  //
  1317  // See UpdatePlacement for more information on using the UpdatePlacement
  1318  // API call, and error handling.
  1319  //
  1320  // This method is useful when you want to inject custom logic or configuration
  1321  // into the SDK's request lifecycle. Such as custom headers, or retry logic.
  1322  //
  1323  //
  1324  //    // Example sending a request using the UpdatePlacementRequest method.
  1325  //    req, resp := client.UpdatePlacementRequest(params)
  1326  //
  1327  //    err := req.Send()
  1328  //    if err == nil { // resp is now filled
  1329  //        fmt.Println(resp)
  1330  //    }
  1331  //
  1332  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/UpdatePlacement
  1333  func (c *IoT1ClickProjects) UpdatePlacementRequest(input *UpdatePlacementInput) (req *request.Request, output *UpdatePlacementOutput) {
  1334  	op := &request.Operation{
  1335  		Name:       opUpdatePlacement,
  1336  		HTTPMethod: "PUT",
  1337  		HTTPPath:   "/projects/{projectName}/placements/{placementName}",
  1338  	}
  1339  
  1340  	if input == nil {
  1341  		input = &UpdatePlacementInput{}
  1342  	}
  1343  
  1344  	output = &UpdatePlacementOutput{}
  1345  	req = c.newRequest(op, input, output)
  1346  	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1347  	return
  1348  }
  1349  
  1350  // UpdatePlacement API operation for AWS IoT 1-Click Projects Service.
  1351  //
  1352  // Updates a placement with the given attributes. To clear an attribute, pass
  1353  // an empty value (i.e., "").
  1354  //
  1355  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1356  // with awserr.Error's Code and Message methods to get detailed information about
  1357  // the error.
  1358  //
  1359  // See the AWS API reference guide for AWS IoT 1-Click Projects Service's
  1360  // API operation UpdatePlacement for usage and error information.
  1361  //
  1362  // Returned Error Types:
  1363  //   * InternalFailureException
  1364  //
  1365  //   * InvalidRequestException
  1366  //
  1367  //   * ResourceNotFoundException
  1368  //
  1369  //   * TooManyRequestsException
  1370  //
  1371  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/UpdatePlacement
  1372  func (c *IoT1ClickProjects) UpdatePlacement(input *UpdatePlacementInput) (*UpdatePlacementOutput, error) {
  1373  	req, out := c.UpdatePlacementRequest(input)
  1374  	return out, req.Send()
  1375  }
  1376  
  1377  // UpdatePlacementWithContext is the same as UpdatePlacement with the addition of
  1378  // the ability to pass a context and additional request options.
  1379  //
  1380  // See UpdatePlacement for details on how to use this API operation.
  1381  //
  1382  // The context must be non-nil and will be used for request cancellation. If
  1383  // the context is nil a panic will occur. In the future the SDK may create
  1384  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1385  // for more information on using Contexts.
  1386  func (c *IoT1ClickProjects) UpdatePlacementWithContext(ctx aws.Context, input *UpdatePlacementInput, opts ...request.Option) (*UpdatePlacementOutput, error) {
  1387  	req, out := c.UpdatePlacementRequest(input)
  1388  	req.SetContext(ctx)
  1389  	req.ApplyOptions(opts...)
  1390  	return out, req.Send()
  1391  }
  1392  
  1393  const opUpdateProject = "UpdateProject"
  1394  
  1395  // UpdateProjectRequest generates a "aws/request.Request" representing the
  1396  // client's request for the UpdateProject 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 UpdateProject for more information on using the UpdateProject
  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 UpdateProjectRequest method.
  1411  //    req, resp := client.UpdateProjectRequest(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/iot1click-projects-2018-05-14/UpdateProject
  1419  func (c *IoT1ClickProjects) UpdateProjectRequest(input *UpdateProjectInput) (req *request.Request, output *UpdateProjectOutput) {
  1420  	op := &request.Operation{
  1421  		Name:       opUpdateProject,
  1422  		HTTPMethod: "PUT",
  1423  		HTTPPath:   "/projects/{projectName}",
  1424  	}
  1425  
  1426  	if input == nil {
  1427  		input = &UpdateProjectInput{}
  1428  	}
  1429  
  1430  	output = &UpdateProjectOutput{}
  1431  	req = c.newRequest(op, input, output)
  1432  	req.Handlers.Unmarshal.Swap(restjson.UnmarshalHandler.Name, protocol.UnmarshalDiscardBodyHandler)
  1433  	return
  1434  }
  1435  
  1436  // UpdateProject API operation for AWS IoT 1-Click Projects Service.
  1437  //
  1438  // Updates a project associated with your AWS account and region. With the exception
  1439  // of device template names, you can pass just the values that need to be updated
  1440  // because the update request will change only the values that are provided.
  1441  // To clear a value, pass the empty string (i.e., "").
  1442  //
  1443  // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
  1444  // with awserr.Error's Code and Message methods to get detailed information about
  1445  // the error.
  1446  //
  1447  // See the AWS API reference guide for AWS IoT 1-Click Projects Service's
  1448  // API operation UpdateProject for usage and error information.
  1449  //
  1450  // Returned Error Types:
  1451  //   * InternalFailureException
  1452  //
  1453  //   * InvalidRequestException
  1454  //
  1455  //   * ResourceNotFoundException
  1456  //
  1457  //   * TooManyRequestsException
  1458  //
  1459  // See also, https://docs.aws.amazon.com/goto/WebAPI/iot1click-projects-2018-05-14/UpdateProject
  1460  func (c *IoT1ClickProjects) UpdateProject(input *UpdateProjectInput) (*UpdateProjectOutput, error) {
  1461  	req, out := c.UpdateProjectRequest(input)
  1462  	return out, req.Send()
  1463  }
  1464  
  1465  // UpdateProjectWithContext is the same as UpdateProject with the addition of
  1466  // the ability to pass a context and additional request options.
  1467  //
  1468  // See UpdateProject for details on how to use this API operation.
  1469  //
  1470  // The context must be non-nil and will be used for request cancellation. If
  1471  // the context is nil a panic will occur. In the future the SDK may create
  1472  // sub-contexts for http.Requests. See https://golang.org/pkg/context/
  1473  // for more information on using Contexts.
  1474  func (c *IoT1ClickProjects) UpdateProjectWithContext(ctx aws.Context, input *UpdateProjectInput, opts ...request.Option) (*UpdateProjectOutput, error) {
  1475  	req, out := c.UpdateProjectRequest(input)
  1476  	req.SetContext(ctx)
  1477  	req.ApplyOptions(opts...)
  1478  	return out, req.Send()
  1479  }
  1480  
  1481  type AssociateDeviceWithPlacementInput struct {
  1482  	_ struct{} `type:"structure"`
  1483  
  1484  	// The ID of the physical device to be associated with the given placement in
  1485  	// the project. Note that a mandatory 4 character prefix is required for all
  1486  	// deviceId values.
  1487  	//
  1488  	// DeviceId is a required field
  1489  	DeviceId *string `locationName:"deviceId" min:"1" type:"string" required:"true"`
  1490  
  1491  	// The device template name to associate with the device ID.
  1492  	//
  1493  	// DeviceTemplateName is a required field
  1494  	DeviceTemplateName *string `location:"uri" locationName:"deviceTemplateName" min:"1" type:"string" required:"true"`
  1495  
  1496  	// The name of the placement in which to associate the device.
  1497  	//
  1498  	// PlacementName is a required field
  1499  	PlacementName *string `location:"uri" locationName:"placementName" min:"1" type:"string" required:"true"`
  1500  
  1501  	// The name of the project containing the placement in which to associate the
  1502  	// device.
  1503  	//
  1504  	// ProjectName is a required field
  1505  	ProjectName *string `location:"uri" locationName:"projectName" min:"1" type:"string" required:"true"`
  1506  }
  1507  
  1508  // String returns the string representation.
  1509  //
  1510  // API parameter values that are decorated as "sensitive" in the API will not
  1511  // be included in the string output. The member name will be present, but the
  1512  // value will be replaced with "sensitive".
  1513  func (s AssociateDeviceWithPlacementInput) String() string {
  1514  	return awsutil.Prettify(s)
  1515  }
  1516  
  1517  // GoString returns the string representation.
  1518  //
  1519  // API parameter values that are decorated as "sensitive" in the API will not
  1520  // be included in the string output. The member name will be present, but the
  1521  // value will be replaced with "sensitive".
  1522  func (s AssociateDeviceWithPlacementInput) GoString() string {
  1523  	return s.String()
  1524  }
  1525  
  1526  // Validate inspects the fields of the type to determine if they are valid.
  1527  func (s *AssociateDeviceWithPlacementInput) Validate() error {
  1528  	invalidParams := request.ErrInvalidParams{Context: "AssociateDeviceWithPlacementInput"}
  1529  	if s.DeviceId == nil {
  1530  		invalidParams.Add(request.NewErrParamRequired("DeviceId"))
  1531  	}
  1532  	if s.DeviceId != nil && len(*s.DeviceId) < 1 {
  1533  		invalidParams.Add(request.NewErrParamMinLen("DeviceId", 1))
  1534  	}
  1535  	if s.DeviceTemplateName == nil {
  1536  		invalidParams.Add(request.NewErrParamRequired("DeviceTemplateName"))
  1537  	}
  1538  	if s.DeviceTemplateName != nil && len(*s.DeviceTemplateName) < 1 {
  1539  		invalidParams.Add(request.NewErrParamMinLen("DeviceTemplateName", 1))
  1540  	}
  1541  	if s.PlacementName == nil {
  1542  		invalidParams.Add(request.NewErrParamRequired("PlacementName"))
  1543  	}
  1544  	if s.PlacementName != nil && len(*s.PlacementName) < 1 {
  1545  		invalidParams.Add(request.NewErrParamMinLen("PlacementName", 1))
  1546  	}
  1547  	if s.ProjectName == nil {
  1548  		invalidParams.Add(request.NewErrParamRequired("ProjectName"))
  1549  	}
  1550  	if s.ProjectName != nil && len(*s.ProjectName) < 1 {
  1551  		invalidParams.Add(request.NewErrParamMinLen("ProjectName", 1))
  1552  	}
  1553  
  1554  	if invalidParams.Len() > 0 {
  1555  		return invalidParams
  1556  	}
  1557  	return nil
  1558  }
  1559  
  1560  // SetDeviceId sets the DeviceId field's value.
  1561  func (s *AssociateDeviceWithPlacementInput) SetDeviceId(v string) *AssociateDeviceWithPlacementInput {
  1562  	s.DeviceId = &v
  1563  	return s
  1564  }
  1565  
  1566  // SetDeviceTemplateName sets the DeviceTemplateName field's value.
  1567  func (s *AssociateDeviceWithPlacementInput) SetDeviceTemplateName(v string) *AssociateDeviceWithPlacementInput {
  1568  	s.DeviceTemplateName = &v
  1569  	return s
  1570  }
  1571  
  1572  // SetPlacementName sets the PlacementName field's value.
  1573  func (s *AssociateDeviceWithPlacementInput) SetPlacementName(v string) *AssociateDeviceWithPlacementInput {
  1574  	s.PlacementName = &v
  1575  	return s
  1576  }
  1577  
  1578  // SetProjectName sets the ProjectName field's value.
  1579  func (s *AssociateDeviceWithPlacementInput) SetProjectName(v string) *AssociateDeviceWithPlacementInput {
  1580  	s.ProjectName = &v
  1581  	return s
  1582  }
  1583  
  1584  type AssociateDeviceWithPlacementOutput struct {
  1585  	_ struct{} `type:"structure" nopayload:"true"`
  1586  }
  1587  
  1588  // String returns the string representation.
  1589  //
  1590  // API parameter values that are decorated as "sensitive" in the API will not
  1591  // be included in the string output. The member name will be present, but the
  1592  // value will be replaced with "sensitive".
  1593  func (s AssociateDeviceWithPlacementOutput) String() string {
  1594  	return awsutil.Prettify(s)
  1595  }
  1596  
  1597  // GoString returns the string representation.
  1598  //
  1599  // API parameter values that are decorated as "sensitive" in the API will not
  1600  // be included in the string output. The member name will be present, but the
  1601  // value will be replaced with "sensitive".
  1602  func (s AssociateDeviceWithPlacementOutput) GoString() string {
  1603  	return s.String()
  1604  }
  1605  
  1606  type CreatePlacementInput struct {
  1607  	_ struct{} `type:"structure"`
  1608  
  1609  	// Optional user-defined key/value pairs providing contextual data (such as
  1610  	// location or function) for the placement.
  1611  	Attributes map[string]*string `locationName:"attributes" type:"map"`
  1612  
  1613  	// The name of the placement to be created.
  1614  	//
  1615  	// PlacementName is a required field
  1616  	PlacementName *string `locationName:"placementName" min:"1" type:"string" required:"true"`
  1617  
  1618  	// The name of the project in which to create the placement.
  1619  	//
  1620  	// ProjectName is a required field
  1621  	ProjectName *string `location:"uri" locationName:"projectName" min:"1" type:"string" required:"true"`
  1622  }
  1623  
  1624  // String returns the string representation.
  1625  //
  1626  // API parameter values that are decorated as "sensitive" in the API will not
  1627  // be included in the string output. The member name will be present, but the
  1628  // value will be replaced with "sensitive".
  1629  func (s CreatePlacementInput) String() string {
  1630  	return awsutil.Prettify(s)
  1631  }
  1632  
  1633  // GoString returns the string representation.
  1634  //
  1635  // API parameter values that are decorated as "sensitive" in the API will not
  1636  // be included in the string output. The member name will be present, but the
  1637  // value will be replaced with "sensitive".
  1638  func (s CreatePlacementInput) GoString() string {
  1639  	return s.String()
  1640  }
  1641  
  1642  // Validate inspects the fields of the type to determine if they are valid.
  1643  func (s *CreatePlacementInput) Validate() error {
  1644  	invalidParams := request.ErrInvalidParams{Context: "CreatePlacementInput"}
  1645  	if s.PlacementName == nil {
  1646  		invalidParams.Add(request.NewErrParamRequired("PlacementName"))
  1647  	}
  1648  	if s.PlacementName != nil && len(*s.PlacementName) < 1 {
  1649  		invalidParams.Add(request.NewErrParamMinLen("PlacementName", 1))
  1650  	}
  1651  	if s.ProjectName == nil {
  1652  		invalidParams.Add(request.NewErrParamRequired("ProjectName"))
  1653  	}
  1654  	if s.ProjectName != nil && len(*s.ProjectName) < 1 {
  1655  		invalidParams.Add(request.NewErrParamMinLen("ProjectName", 1))
  1656  	}
  1657  
  1658  	if invalidParams.Len() > 0 {
  1659  		return invalidParams
  1660  	}
  1661  	return nil
  1662  }
  1663  
  1664  // SetAttributes sets the Attributes field's value.
  1665  func (s *CreatePlacementInput) SetAttributes(v map[string]*string) *CreatePlacementInput {
  1666  	s.Attributes = v
  1667  	return s
  1668  }
  1669  
  1670  // SetPlacementName sets the PlacementName field's value.
  1671  func (s *CreatePlacementInput) SetPlacementName(v string) *CreatePlacementInput {
  1672  	s.PlacementName = &v
  1673  	return s
  1674  }
  1675  
  1676  // SetProjectName sets the ProjectName field's value.
  1677  func (s *CreatePlacementInput) SetProjectName(v string) *CreatePlacementInput {
  1678  	s.ProjectName = &v
  1679  	return s
  1680  }
  1681  
  1682  type CreatePlacementOutput struct {
  1683  	_ struct{} `type:"structure" nopayload:"true"`
  1684  }
  1685  
  1686  // String returns the string representation.
  1687  //
  1688  // API parameter values that are decorated as "sensitive" in the API will not
  1689  // be included in the string output. The member name will be present, but the
  1690  // value will be replaced with "sensitive".
  1691  func (s CreatePlacementOutput) String() string {
  1692  	return awsutil.Prettify(s)
  1693  }
  1694  
  1695  // GoString returns the string representation.
  1696  //
  1697  // API parameter values that are decorated as "sensitive" in the API will not
  1698  // be included in the string output. The member name will be present, but the
  1699  // value will be replaced with "sensitive".
  1700  func (s CreatePlacementOutput) GoString() string {
  1701  	return s.String()
  1702  }
  1703  
  1704  type CreateProjectInput struct {
  1705  	_ struct{} `type:"structure"`
  1706  
  1707  	// An optional description for the project.
  1708  	Description *string `locationName:"description" type:"string"`
  1709  
  1710  	// The schema defining the placement to be created. A placement template defines
  1711  	// placement default attributes and device templates. You cannot add or remove
  1712  	// device templates after the project has been created. However, you can update
  1713  	// callbackOverrides for the device templates using the UpdateProject API.
  1714  	PlacementTemplate *PlacementTemplate `locationName:"placementTemplate" type:"structure"`
  1715  
  1716  	// The name of the project to create.
  1717  	//
  1718  	// ProjectName is a required field
  1719  	ProjectName *string `locationName:"projectName" min:"1" type:"string" required:"true"`
  1720  
  1721  	// Optional tags (metadata key/value pairs) to be associated with the project.
  1722  	// For example, { {"key1": "value1", "key2": "value2"} }. For more information,
  1723  	// see AWS Tagging Strategies (https://aws.amazon.com/answers/account-management/aws-tagging-strategies/).
  1724  	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
  1725  }
  1726  
  1727  // String returns the string representation.
  1728  //
  1729  // API parameter values that are decorated as "sensitive" in the API will not
  1730  // be included in the string output. The member name will be present, but the
  1731  // value will be replaced with "sensitive".
  1732  func (s CreateProjectInput) String() string {
  1733  	return awsutil.Prettify(s)
  1734  }
  1735  
  1736  // GoString returns the string representation.
  1737  //
  1738  // API parameter values that are decorated as "sensitive" in the API will not
  1739  // be included in the string output. The member name will be present, but the
  1740  // value will be replaced with "sensitive".
  1741  func (s CreateProjectInput) GoString() string {
  1742  	return s.String()
  1743  }
  1744  
  1745  // Validate inspects the fields of the type to determine if they are valid.
  1746  func (s *CreateProjectInput) Validate() error {
  1747  	invalidParams := request.ErrInvalidParams{Context: "CreateProjectInput"}
  1748  	if s.ProjectName == nil {
  1749  		invalidParams.Add(request.NewErrParamRequired("ProjectName"))
  1750  	}
  1751  	if s.ProjectName != nil && len(*s.ProjectName) < 1 {
  1752  		invalidParams.Add(request.NewErrParamMinLen("ProjectName", 1))
  1753  	}
  1754  	if s.Tags != nil && len(s.Tags) < 1 {
  1755  		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
  1756  	}
  1757  
  1758  	if invalidParams.Len() > 0 {
  1759  		return invalidParams
  1760  	}
  1761  	return nil
  1762  }
  1763  
  1764  // SetDescription sets the Description field's value.
  1765  func (s *CreateProjectInput) SetDescription(v string) *CreateProjectInput {
  1766  	s.Description = &v
  1767  	return s
  1768  }
  1769  
  1770  // SetPlacementTemplate sets the PlacementTemplate field's value.
  1771  func (s *CreateProjectInput) SetPlacementTemplate(v *PlacementTemplate) *CreateProjectInput {
  1772  	s.PlacementTemplate = v
  1773  	return s
  1774  }
  1775  
  1776  // SetProjectName sets the ProjectName field's value.
  1777  func (s *CreateProjectInput) SetProjectName(v string) *CreateProjectInput {
  1778  	s.ProjectName = &v
  1779  	return s
  1780  }
  1781  
  1782  // SetTags sets the Tags field's value.
  1783  func (s *CreateProjectInput) SetTags(v map[string]*string) *CreateProjectInput {
  1784  	s.Tags = v
  1785  	return s
  1786  }
  1787  
  1788  type CreateProjectOutput struct {
  1789  	_ struct{} `type:"structure" nopayload:"true"`
  1790  }
  1791  
  1792  // String returns the string representation.
  1793  //
  1794  // API parameter values that are decorated as "sensitive" in the API will not
  1795  // be included in the string output. The member name will be present, but the
  1796  // value will be replaced with "sensitive".
  1797  func (s CreateProjectOutput) String() string {
  1798  	return awsutil.Prettify(s)
  1799  }
  1800  
  1801  // GoString returns the string representation.
  1802  //
  1803  // API parameter values that are decorated as "sensitive" in the API will not
  1804  // be included in the string output. The member name will be present, but the
  1805  // value will be replaced with "sensitive".
  1806  func (s CreateProjectOutput) GoString() string {
  1807  	return s.String()
  1808  }
  1809  
  1810  type DeletePlacementInput struct {
  1811  	_ struct{} `type:"structure" nopayload:"true"`
  1812  
  1813  	// The name of the empty placement to delete.
  1814  	//
  1815  	// PlacementName is a required field
  1816  	PlacementName *string `location:"uri" locationName:"placementName" min:"1" type:"string" required:"true"`
  1817  
  1818  	// The project containing the empty placement to delete.
  1819  	//
  1820  	// ProjectName is a required field
  1821  	ProjectName *string `location:"uri" locationName:"projectName" min:"1" type:"string" required:"true"`
  1822  }
  1823  
  1824  // String returns the string representation.
  1825  //
  1826  // API parameter values that are decorated as "sensitive" in the API will not
  1827  // be included in the string output. The member name will be present, but the
  1828  // value will be replaced with "sensitive".
  1829  func (s DeletePlacementInput) String() string {
  1830  	return awsutil.Prettify(s)
  1831  }
  1832  
  1833  // GoString returns the string representation.
  1834  //
  1835  // API parameter values that are decorated as "sensitive" in the API will not
  1836  // be included in the string output. The member name will be present, but the
  1837  // value will be replaced with "sensitive".
  1838  func (s DeletePlacementInput) GoString() string {
  1839  	return s.String()
  1840  }
  1841  
  1842  // Validate inspects the fields of the type to determine if they are valid.
  1843  func (s *DeletePlacementInput) Validate() error {
  1844  	invalidParams := request.ErrInvalidParams{Context: "DeletePlacementInput"}
  1845  	if s.PlacementName == nil {
  1846  		invalidParams.Add(request.NewErrParamRequired("PlacementName"))
  1847  	}
  1848  	if s.PlacementName != nil && len(*s.PlacementName) < 1 {
  1849  		invalidParams.Add(request.NewErrParamMinLen("PlacementName", 1))
  1850  	}
  1851  	if s.ProjectName == nil {
  1852  		invalidParams.Add(request.NewErrParamRequired("ProjectName"))
  1853  	}
  1854  	if s.ProjectName != nil && len(*s.ProjectName) < 1 {
  1855  		invalidParams.Add(request.NewErrParamMinLen("ProjectName", 1))
  1856  	}
  1857  
  1858  	if invalidParams.Len() > 0 {
  1859  		return invalidParams
  1860  	}
  1861  	return nil
  1862  }
  1863  
  1864  // SetPlacementName sets the PlacementName field's value.
  1865  func (s *DeletePlacementInput) SetPlacementName(v string) *DeletePlacementInput {
  1866  	s.PlacementName = &v
  1867  	return s
  1868  }
  1869  
  1870  // SetProjectName sets the ProjectName field's value.
  1871  func (s *DeletePlacementInput) SetProjectName(v string) *DeletePlacementInput {
  1872  	s.ProjectName = &v
  1873  	return s
  1874  }
  1875  
  1876  type DeletePlacementOutput struct {
  1877  	_ struct{} `type:"structure" nopayload:"true"`
  1878  }
  1879  
  1880  // String returns the string representation.
  1881  //
  1882  // API parameter values that are decorated as "sensitive" in the API will not
  1883  // be included in the string output. The member name will be present, but the
  1884  // value will be replaced with "sensitive".
  1885  func (s DeletePlacementOutput) String() string {
  1886  	return awsutil.Prettify(s)
  1887  }
  1888  
  1889  // GoString returns the string representation.
  1890  //
  1891  // API parameter values that are decorated as "sensitive" in the API will not
  1892  // be included in the string output. The member name will be present, but the
  1893  // value will be replaced with "sensitive".
  1894  func (s DeletePlacementOutput) GoString() string {
  1895  	return s.String()
  1896  }
  1897  
  1898  type DeleteProjectInput struct {
  1899  	_ struct{} `type:"structure" nopayload:"true"`
  1900  
  1901  	// The name of the empty project to delete.
  1902  	//
  1903  	// ProjectName is a required field
  1904  	ProjectName *string `location:"uri" locationName:"projectName" min:"1" type:"string" required:"true"`
  1905  }
  1906  
  1907  // String returns the string representation.
  1908  //
  1909  // API parameter values that are decorated as "sensitive" in the API will not
  1910  // be included in the string output. The member name will be present, but the
  1911  // value will be replaced with "sensitive".
  1912  func (s DeleteProjectInput) String() string {
  1913  	return awsutil.Prettify(s)
  1914  }
  1915  
  1916  // GoString returns the string representation.
  1917  //
  1918  // API parameter values that are decorated as "sensitive" in the API will not
  1919  // be included in the string output. The member name will be present, but the
  1920  // value will be replaced with "sensitive".
  1921  func (s DeleteProjectInput) GoString() string {
  1922  	return s.String()
  1923  }
  1924  
  1925  // Validate inspects the fields of the type to determine if they are valid.
  1926  func (s *DeleteProjectInput) Validate() error {
  1927  	invalidParams := request.ErrInvalidParams{Context: "DeleteProjectInput"}
  1928  	if s.ProjectName == nil {
  1929  		invalidParams.Add(request.NewErrParamRequired("ProjectName"))
  1930  	}
  1931  	if s.ProjectName != nil && len(*s.ProjectName) < 1 {
  1932  		invalidParams.Add(request.NewErrParamMinLen("ProjectName", 1))
  1933  	}
  1934  
  1935  	if invalidParams.Len() > 0 {
  1936  		return invalidParams
  1937  	}
  1938  	return nil
  1939  }
  1940  
  1941  // SetProjectName sets the ProjectName field's value.
  1942  func (s *DeleteProjectInput) SetProjectName(v string) *DeleteProjectInput {
  1943  	s.ProjectName = &v
  1944  	return s
  1945  }
  1946  
  1947  type DeleteProjectOutput struct {
  1948  	_ struct{} `type:"structure" nopayload:"true"`
  1949  }
  1950  
  1951  // String returns the string representation.
  1952  //
  1953  // API parameter values that are decorated as "sensitive" in the API will not
  1954  // be included in the string output. The member name will be present, but the
  1955  // value will be replaced with "sensitive".
  1956  func (s DeleteProjectOutput) String() string {
  1957  	return awsutil.Prettify(s)
  1958  }
  1959  
  1960  // GoString returns the string representation.
  1961  //
  1962  // API parameter values that are decorated as "sensitive" in the API will not
  1963  // be included in the string output. The member name will be present, but the
  1964  // value will be replaced with "sensitive".
  1965  func (s DeleteProjectOutput) GoString() string {
  1966  	return s.String()
  1967  }
  1968  
  1969  type DescribePlacementInput struct {
  1970  	_ struct{} `type:"structure" nopayload:"true"`
  1971  
  1972  	// The name of the placement within a project.
  1973  	//
  1974  	// PlacementName is a required field
  1975  	PlacementName *string `location:"uri" locationName:"placementName" min:"1" type:"string" required:"true"`
  1976  
  1977  	// The project containing the placement to be described.
  1978  	//
  1979  	// ProjectName is a required field
  1980  	ProjectName *string `location:"uri" locationName:"projectName" min:"1" type:"string" required:"true"`
  1981  }
  1982  
  1983  // String returns the string representation.
  1984  //
  1985  // API parameter values that are decorated as "sensitive" in the API will not
  1986  // be included in the string output. The member name will be present, but the
  1987  // value will be replaced with "sensitive".
  1988  func (s DescribePlacementInput) String() string {
  1989  	return awsutil.Prettify(s)
  1990  }
  1991  
  1992  // GoString returns the string representation.
  1993  //
  1994  // API parameter values that are decorated as "sensitive" in the API will not
  1995  // be included in the string output. The member name will be present, but the
  1996  // value will be replaced with "sensitive".
  1997  func (s DescribePlacementInput) GoString() string {
  1998  	return s.String()
  1999  }
  2000  
  2001  // Validate inspects the fields of the type to determine if they are valid.
  2002  func (s *DescribePlacementInput) Validate() error {
  2003  	invalidParams := request.ErrInvalidParams{Context: "DescribePlacementInput"}
  2004  	if s.PlacementName == nil {
  2005  		invalidParams.Add(request.NewErrParamRequired("PlacementName"))
  2006  	}
  2007  	if s.PlacementName != nil && len(*s.PlacementName) < 1 {
  2008  		invalidParams.Add(request.NewErrParamMinLen("PlacementName", 1))
  2009  	}
  2010  	if s.ProjectName == nil {
  2011  		invalidParams.Add(request.NewErrParamRequired("ProjectName"))
  2012  	}
  2013  	if s.ProjectName != nil && len(*s.ProjectName) < 1 {
  2014  		invalidParams.Add(request.NewErrParamMinLen("ProjectName", 1))
  2015  	}
  2016  
  2017  	if invalidParams.Len() > 0 {
  2018  		return invalidParams
  2019  	}
  2020  	return nil
  2021  }
  2022  
  2023  // SetPlacementName sets the PlacementName field's value.
  2024  func (s *DescribePlacementInput) SetPlacementName(v string) *DescribePlacementInput {
  2025  	s.PlacementName = &v
  2026  	return s
  2027  }
  2028  
  2029  // SetProjectName sets the ProjectName field's value.
  2030  func (s *DescribePlacementInput) SetProjectName(v string) *DescribePlacementInput {
  2031  	s.ProjectName = &v
  2032  	return s
  2033  }
  2034  
  2035  type DescribePlacementOutput struct {
  2036  	_ struct{} `type:"structure"`
  2037  
  2038  	// An object describing the placement.
  2039  	//
  2040  	// Placement is a required field
  2041  	Placement *PlacementDescription `locationName:"placement" type:"structure" required:"true"`
  2042  }
  2043  
  2044  // String returns the string representation.
  2045  //
  2046  // API parameter values that are decorated as "sensitive" in the API will not
  2047  // be included in the string output. The member name will be present, but the
  2048  // value will be replaced with "sensitive".
  2049  func (s DescribePlacementOutput) String() string {
  2050  	return awsutil.Prettify(s)
  2051  }
  2052  
  2053  // GoString returns the string representation.
  2054  //
  2055  // API parameter values that are decorated as "sensitive" in the API will not
  2056  // be included in the string output. The member name will be present, but the
  2057  // value will be replaced with "sensitive".
  2058  func (s DescribePlacementOutput) GoString() string {
  2059  	return s.String()
  2060  }
  2061  
  2062  // SetPlacement sets the Placement field's value.
  2063  func (s *DescribePlacementOutput) SetPlacement(v *PlacementDescription) *DescribePlacementOutput {
  2064  	s.Placement = v
  2065  	return s
  2066  }
  2067  
  2068  type DescribeProjectInput struct {
  2069  	_ struct{} `type:"structure" nopayload:"true"`
  2070  
  2071  	// The name of the project to be described.
  2072  	//
  2073  	// ProjectName is a required field
  2074  	ProjectName *string `location:"uri" locationName:"projectName" min:"1" type:"string" required:"true"`
  2075  }
  2076  
  2077  // String returns the string representation.
  2078  //
  2079  // API parameter values that are decorated as "sensitive" in the API will not
  2080  // be included in the string output. The member name will be present, but the
  2081  // value will be replaced with "sensitive".
  2082  func (s DescribeProjectInput) String() string {
  2083  	return awsutil.Prettify(s)
  2084  }
  2085  
  2086  // GoString returns the string representation.
  2087  //
  2088  // API parameter values that are decorated as "sensitive" in the API will not
  2089  // be included in the string output. The member name will be present, but the
  2090  // value will be replaced with "sensitive".
  2091  func (s DescribeProjectInput) GoString() string {
  2092  	return s.String()
  2093  }
  2094  
  2095  // Validate inspects the fields of the type to determine if they are valid.
  2096  func (s *DescribeProjectInput) Validate() error {
  2097  	invalidParams := request.ErrInvalidParams{Context: "DescribeProjectInput"}
  2098  	if s.ProjectName == nil {
  2099  		invalidParams.Add(request.NewErrParamRequired("ProjectName"))
  2100  	}
  2101  	if s.ProjectName != nil && len(*s.ProjectName) < 1 {
  2102  		invalidParams.Add(request.NewErrParamMinLen("ProjectName", 1))
  2103  	}
  2104  
  2105  	if invalidParams.Len() > 0 {
  2106  		return invalidParams
  2107  	}
  2108  	return nil
  2109  }
  2110  
  2111  // SetProjectName sets the ProjectName field's value.
  2112  func (s *DescribeProjectInput) SetProjectName(v string) *DescribeProjectInput {
  2113  	s.ProjectName = &v
  2114  	return s
  2115  }
  2116  
  2117  type DescribeProjectOutput struct {
  2118  	_ struct{} `type:"structure"`
  2119  
  2120  	// An object describing the project.
  2121  	//
  2122  	// Project is a required field
  2123  	Project *ProjectDescription `locationName:"project" type:"structure" required:"true"`
  2124  }
  2125  
  2126  // String returns the string representation.
  2127  //
  2128  // API parameter values that are decorated as "sensitive" in the API will not
  2129  // be included in the string output. The member name will be present, but the
  2130  // value will be replaced with "sensitive".
  2131  func (s DescribeProjectOutput) String() string {
  2132  	return awsutil.Prettify(s)
  2133  }
  2134  
  2135  // GoString returns the string representation.
  2136  //
  2137  // API parameter values that are decorated as "sensitive" in the API will not
  2138  // be included in the string output. The member name will be present, but the
  2139  // value will be replaced with "sensitive".
  2140  func (s DescribeProjectOutput) GoString() string {
  2141  	return s.String()
  2142  }
  2143  
  2144  // SetProject sets the Project field's value.
  2145  func (s *DescribeProjectOutput) SetProject(v *ProjectDescription) *DescribeProjectOutput {
  2146  	s.Project = v
  2147  	return s
  2148  }
  2149  
  2150  // An object representing a device for a placement template (see PlacementTemplate).
  2151  type DeviceTemplate struct {
  2152  	_ struct{} `type:"structure"`
  2153  
  2154  	// An optional Lambda function to invoke instead of the default Lambda function
  2155  	// provided by the placement template.
  2156  	CallbackOverrides map[string]*string `locationName:"callbackOverrides" type:"map"`
  2157  
  2158  	// The device type, which currently must be "button".
  2159  	DeviceType *string `locationName:"deviceType" type:"string"`
  2160  }
  2161  
  2162  // String returns the string representation.
  2163  //
  2164  // API parameter values that are decorated as "sensitive" in the API will not
  2165  // be included in the string output. The member name will be present, but the
  2166  // value will be replaced with "sensitive".
  2167  func (s DeviceTemplate) String() string {
  2168  	return awsutil.Prettify(s)
  2169  }
  2170  
  2171  // GoString returns the string representation.
  2172  //
  2173  // API parameter values that are decorated as "sensitive" in the API will not
  2174  // be included in the string output. The member name will be present, but the
  2175  // value will be replaced with "sensitive".
  2176  func (s DeviceTemplate) GoString() string {
  2177  	return s.String()
  2178  }
  2179  
  2180  // SetCallbackOverrides sets the CallbackOverrides field's value.
  2181  func (s *DeviceTemplate) SetCallbackOverrides(v map[string]*string) *DeviceTemplate {
  2182  	s.CallbackOverrides = v
  2183  	return s
  2184  }
  2185  
  2186  // SetDeviceType sets the DeviceType field's value.
  2187  func (s *DeviceTemplate) SetDeviceType(v string) *DeviceTemplate {
  2188  	s.DeviceType = &v
  2189  	return s
  2190  }
  2191  
  2192  type DisassociateDeviceFromPlacementInput struct {
  2193  	_ struct{} `type:"structure" nopayload:"true"`
  2194  
  2195  	// The device ID that should be removed from the placement.
  2196  	//
  2197  	// DeviceTemplateName is a required field
  2198  	DeviceTemplateName *string `location:"uri" locationName:"deviceTemplateName" min:"1" type:"string" required:"true"`
  2199  
  2200  	// The name of the placement that the device should be removed from.
  2201  	//
  2202  	// PlacementName is a required field
  2203  	PlacementName *string `location:"uri" locationName:"placementName" min:"1" type:"string" required:"true"`
  2204  
  2205  	// The name of the project that contains the placement.
  2206  	//
  2207  	// ProjectName is a required field
  2208  	ProjectName *string `location:"uri" locationName:"projectName" min:"1" type:"string" required:"true"`
  2209  }
  2210  
  2211  // String returns the string representation.
  2212  //
  2213  // API parameter values that are decorated as "sensitive" in the API will not
  2214  // be included in the string output. The member name will be present, but the
  2215  // value will be replaced with "sensitive".
  2216  func (s DisassociateDeviceFromPlacementInput) String() string {
  2217  	return awsutil.Prettify(s)
  2218  }
  2219  
  2220  // GoString returns the string representation.
  2221  //
  2222  // API parameter values that are decorated as "sensitive" in the API will not
  2223  // be included in the string output. The member name will be present, but the
  2224  // value will be replaced with "sensitive".
  2225  func (s DisassociateDeviceFromPlacementInput) GoString() string {
  2226  	return s.String()
  2227  }
  2228  
  2229  // Validate inspects the fields of the type to determine if they are valid.
  2230  func (s *DisassociateDeviceFromPlacementInput) Validate() error {
  2231  	invalidParams := request.ErrInvalidParams{Context: "DisassociateDeviceFromPlacementInput"}
  2232  	if s.DeviceTemplateName == nil {
  2233  		invalidParams.Add(request.NewErrParamRequired("DeviceTemplateName"))
  2234  	}
  2235  	if s.DeviceTemplateName != nil && len(*s.DeviceTemplateName) < 1 {
  2236  		invalidParams.Add(request.NewErrParamMinLen("DeviceTemplateName", 1))
  2237  	}
  2238  	if s.PlacementName == nil {
  2239  		invalidParams.Add(request.NewErrParamRequired("PlacementName"))
  2240  	}
  2241  	if s.PlacementName != nil && len(*s.PlacementName) < 1 {
  2242  		invalidParams.Add(request.NewErrParamMinLen("PlacementName", 1))
  2243  	}
  2244  	if s.ProjectName == nil {
  2245  		invalidParams.Add(request.NewErrParamRequired("ProjectName"))
  2246  	}
  2247  	if s.ProjectName != nil && len(*s.ProjectName) < 1 {
  2248  		invalidParams.Add(request.NewErrParamMinLen("ProjectName", 1))
  2249  	}
  2250  
  2251  	if invalidParams.Len() > 0 {
  2252  		return invalidParams
  2253  	}
  2254  	return nil
  2255  }
  2256  
  2257  // SetDeviceTemplateName sets the DeviceTemplateName field's value.
  2258  func (s *DisassociateDeviceFromPlacementInput) SetDeviceTemplateName(v string) *DisassociateDeviceFromPlacementInput {
  2259  	s.DeviceTemplateName = &v
  2260  	return s
  2261  }
  2262  
  2263  // SetPlacementName sets the PlacementName field's value.
  2264  func (s *DisassociateDeviceFromPlacementInput) SetPlacementName(v string) *DisassociateDeviceFromPlacementInput {
  2265  	s.PlacementName = &v
  2266  	return s
  2267  }
  2268  
  2269  // SetProjectName sets the ProjectName field's value.
  2270  func (s *DisassociateDeviceFromPlacementInput) SetProjectName(v string) *DisassociateDeviceFromPlacementInput {
  2271  	s.ProjectName = &v
  2272  	return s
  2273  }
  2274  
  2275  type DisassociateDeviceFromPlacementOutput struct {
  2276  	_ struct{} `type:"structure" nopayload:"true"`
  2277  }
  2278  
  2279  // String returns the string representation.
  2280  //
  2281  // API parameter values that are decorated as "sensitive" in the API will not
  2282  // be included in the string output. The member name will be present, but the
  2283  // value will be replaced with "sensitive".
  2284  func (s DisassociateDeviceFromPlacementOutput) String() string {
  2285  	return awsutil.Prettify(s)
  2286  }
  2287  
  2288  // GoString returns the string representation.
  2289  //
  2290  // API parameter values that are decorated as "sensitive" in the API will not
  2291  // be included in the string output. The member name will be present, but the
  2292  // value will be replaced with "sensitive".
  2293  func (s DisassociateDeviceFromPlacementOutput) GoString() string {
  2294  	return s.String()
  2295  }
  2296  
  2297  type GetDevicesInPlacementInput struct {
  2298  	_ struct{} `type:"structure" nopayload:"true"`
  2299  
  2300  	// The name of the placement to get the devices from.
  2301  	//
  2302  	// PlacementName is a required field
  2303  	PlacementName *string `location:"uri" locationName:"placementName" min:"1" type:"string" required:"true"`
  2304  
  2305  	// The name of the project containing the placement.
  2306  	//
  2307  	// ProjectName is a required field
  2308  	ProjectName *string `location:"uri" locationName:"projectName" min:"1" type:"string" required:"true"`
  2309  }
  2310  
  2311  // String returns the string representation.
  2312  //
  2313  // API parameter values that are decorated as "sensitive" in the API will not
  2314  // be included in the string output. The member name will be present, but the
  2315  // value will be replaced with "sensitive".
  2316  func (s GetDevicesInPlacementInput) String() string {
  2317  	return awsutil.Prettify(s)
  2318  }
  2319  
  2320  // GoString returns the string representation.
  2321  //
  2322  // API parameter values that are decorated as "sensitive" in the API will not
  2323  // be included in the string output. The member name will be present, but the
  2324  // value will be replaced with "sensitive".
  2325  func (s GetDevicesInPlacementInput) GoString() string {
  2326  	return s.String()
  2327  }
  2328  
  2329  // Validate inspects the fields of the type to determine if they are valid.
  2330  func (s *GetDevicesInPlacementInput) Validate() error {
  2331  	invalidParams := request.ErrInvalidParams{Context: "GetDevicesInPlacementInput"}
  2332  	if s.PlacementName == nil {
  2333  		invalidParams.Add(request.NewErrParamRequired("PlacementName"))
  2334  	}
  2335  	if s.PlacementName != nil && len(*s.PlacementName) < 1 {
  2336  		invalidParams.Add(request.NewErrParamMinLen("PlacementName", 1))
  2337  	}
  2338  	if s.ProjectName == nil {
  2339  		invalidParams.Add(request.NewErrParamRequired("ProjectName"))
  2340  	}
  2341  	if s.ProjectName != nil && len(*s.ProjectName) < 1 {
  2342  		invalidParams.Add(request.NewErrParamMinLen("ProjectName", 1))
  2343  	}
  2344  
  2345  	if invalidParams.Len() > 0 {
  2346  		return invalidParams
  2347  	}
  2348  	return nil
  2349  }
  2350  
  2351  // SetPlacementName sets the PlacementName field's value.
  2352  func (s *GetDevicesInPlacementInput) SetPlacementName(v string) *GetDevicesInPlacementInput {
  2353  	s.PlacementName = &v
  2354  	return s
  2355  }
  2356  
  2357  // SetProjectName sets the ProjectName field's value.
  2358  func (s *GetDevicesInPlacementInput) SetProjectName(v string) *GetDevicesInPlacementInput {
  2359  	s.ProjectName = &v
  2360  	return s
  2361  }
  2362  
  2363  type GetDevicesInPlacementOutput struct {
  2364  	_ struct{} `type:"structure"`
  2365  
  2366  	// An object containing the devices (zero or more) within the placement.
  2367  	//
  2368  	// Devices is a required field
  2369  	Devices map[string]*string `locationName:"devices" type:"map" required:"true"`
  2370  }
  2371  
  2372  // String returns the string representation.
  2373  //
  2374  // API parameter values that are decorated as "sensitive" in the API will not
  2375  // be included in the string output. The member name will be present, but the
  2376  // value will be replaced with "sensitive".
  2377  func (s GetDevicesInPlacementOutput) String() string {
  2378  	return awsutil.Prettify(s)
  2379  }
  2380  
  2381  // GoString returns the string representation.
  2382  //
  2383  // API parameter values that are decorated as "sensitive" in the API will not
  2384  // be included in the string output. The member name will be present, but the
  2385  // value will be replaced with "sensitive".
  2386  func (s GetDevicesInPlacementOutput) GoString() string {
  2387  	return s.String()
  2388  }
  2389  
  2390  // SetDevices sets the Devices field's value.
  2391  func (s *GetDevicesInPlacementOutput) SetDevices(v map[string]*string) *GetDevicesInPlacementOutput {
  2392  	s.Devices = v
  2393  	return s
  2394  }
  2395  
  2396  type InternalFailureException struct {
  2397  	_            struct{}                  `type:"structure"`
  2398  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  2399  
  2400  	Code_ *string `locationName:"code" type:"string"`
  2401  
  2402  	Message_ *string `locationName:"message" type:"string"`
  2403  }
  2404  
  2405  // String returns the string representation.
  2406  //
  2407  // API parameter values that are decorated as "sensitive" in the API will not
  2408  // be included in the string output. The member name will be present, but the
  2409  // value will be replaced with "sensitive".
  2410  func (s InternalFailureException) String() string {
  2411  	return awsutil.Prettify(s)
  2412  }
  2413  
  2414  // GoString returns the string representation.
  2415  //
  2416  // API parameter values that are decorated as "sensitive" in the API will not
  2417  // be included in the string output. The member name will be present, but the
  2418  // value will be replaced with "sensitive".
  2419  func (s InternalFailureException) GoString() string {
  2420  	return s.String()
  2421  }
  2422  
  2423  func newErrorInternalFailureException(v protocol.ResponseMetadata) error {
  2424  	return &InternalFailureException{
  2425  		RespMetadata: v,
  2426  	}
  2427  }
  2428  
  2429  // Code returns the exception type name.
  2430  func (s *InternalFailureException) Code() string {
  2431  	return "InternalFailureException"
  2432  }
  2433  
  2434  // Message returns the exception's message.
  2435  func (s *InternalFailureException) Message() string {
  2436  	if s.Message_ != nil {
  2437  		return *s.Message_
  2438  	}
  2439  	return ""
  2440  }
  2441  
  2442  // OrigErr always returns nil, satisfies awserr.Error interface.
  2443  func (s *InternalFailureException) OrigErr() error {
  2444  	return nil
  2445  }
  2446  
  2447  func (s *InternalFailureException) Error() string {
  2448  	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
  2449  }
  2450  
  2451  // Status code returns the HTTP status code for the request's response error.
  2452  func (s *InternalFailureException) StatusCode() int {
  2453  	return s.RespMetadata.StatusCode
  2454  }
  2455  
  2456  // RequestID returns the service's response RequestID for request.
  2457  func (s *InternalFailureException) RequestID() string {
  2458  	return s.RespMetadata.RequestID
  2459  }
  2460  
  2461  type InvalidRequestException struct {
  2462  	_            struct{}                  `type:"structure"`
  2463  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  2464  
  2465  	Code_ *string `locationName:"code" type:"string"`
  2466  
  2467  	Message_ *string `locationName:"message" type:"string"`
  2468  }
  2469  
  2470  // String returns the string representation.
  2471  //
  2472  // API parameter values that are decorated as "sensitive" in the API will not
  2473  // be included in the string output. The member name will be present, but the
  2474  // value will be replaced with "sensitive".
  2475  func (s InvalidRequestException) String() string {
  2476  	return awsutil.Prettify(s)
  2477  }
  2478  
  2479  // GoString returns the string representation.
  2480  //
  2481  // API parameter values that are decorated as "sensitive" in the API will not
  2482  // be included in the string output. The member name will be present, but the
  2483  // value will be replaced with "sensitive".
  2484  func (s InvalidRequestException) GoString() string {
  2485  	return s.String()
  2486  }
  2487  
  2488  func newErrorInvalidRequestException(v protocol.ResponseMetadata) error {
  2489  	return &InvalidRequestException{
  2490  		RespMetadata: v,
  2491  	}
  2492  }
  2493  
  2494  // Code returns the exception type name.
  2495  func (s *InvalidRequestException) Code() string {
  2496  	return "InvalidRequestException"
  2497  }
  2498  
  2499  // Message returns the exception's message.
  2500  func (s *InvalidRequestException) Message() string {
  2501  	if s.Message_ != nil {
  2502  		return *s.Message_
  2503  	}
  2504  	return ""
  2505  }
  2506  
  2507  // OrigErr always returns nil, satisfies awserr.Error interface.
  2508  func (s *InvalidRequestException) OrigErr() error {
  2509  	return nil
  2510  }
  2511  
  2512  func (s *InvalidRequestException) Error() string {
  2513  	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
  2514  }
  2515  
  2516  // Status code returns the HTTP status code for the request's response error.
  2517  func (s *InvalidRequestException) StatusCode() int {
  2518  	return s.RespMetadata.StatusCode
  2519  }
  2520  
  2521  // RequestID returns the service's response RequestID for request.
  2522  func (s *InvalidRequestException) RequestID() string {
  2523  	return s.RespMetadata.RequestID
  2524  }
  2525  
  2526  type ListPlacementsInput struct {
  2527  	_ struct{} `type:"structure" nopayload:"true"`
  2528  
  2529  	// The maximum number of results to return per request. If not set, a default
  2530  	// value of 100 is used.
  2531  	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
  2532  
  2533  	// The token to retrieve the next set of results.
  2534  	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
  2535  
  2536  	// The project containing the placements to be listed.
  2537  	//
  2538  	// ProjectName is a required field
  2539  	ProjectName *string `location:"uri" locationName:"projectName" min:"1" type:"string" required:"true"`
  2540  }
  2541  
  2542  // String returns the string representation.
  2543  //
  2544  // API parameter values that are decorated as "sensitive" in the API will not
  2545  // be included in the string output. The member name will be present, but the
  2546  // value will be replaced with "sensitive".
  2547  func (s ListPlacementsInput) String() string {
  2548  	return awsutil.Prettify(s)
  2549  }
  2550  
  2551  // GoString returns the string representation.
  2552  //
  2553  // API parameter values that are decorated as "sensitive" in the API will not
  2554  // be included in the string output. The member name will be present, but the
  2555  // value will be replaced with "sensitive".
  2556  func (s ListPlacementsInput) GoString() string {
  2557  	return s.String()
  2558  }
  2559  
  2560  // Validate inspects the fields of the type to determine if they are valid.
  2561  func (s *ListPlacementsInput) Validate() error {
  2562  	invalidParams := request.ErrInvalidParams{Context: "ListPlacementsInput"}
  2563  	if s.MaxResults != nil && *s.MaxResults < 1 {
  2564  		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
  2565  	}
  2566  	if s.NextToken != nil && len(*s.NextToken) < 1 {
  2567  		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
  2568  	}
  2569  	if s.ProjectName == nil {
  2570  		invalidParams.Add(request.NewErrParamRequired("ProjectName"))
  2571  	}
  2572  	if s.ProjectName != nil && len(*s.ProjectName) < 1 {
  2573  		invalidParams.Add(request.NewErrParamMinLen("ProjectName", 1))
  2574  	}
  2575  
  2576  	if invalidParams.Len() > 0 {
  2577  		return invalidParams
  2578  	}
  2579  	return nil
  2580  }
  2581  
  2582  // SetMaxResults sets the MaxResults field's value.
  2583  func (s *ListPlacementsInput) SetMaxResults(v int64) *ListPlacementsInput {
  2584  	s.MaxResults = &v
  2585  	return s
  2586  }
  2587  
  2588  // SetNextToken sets the NextToken field's value.
  2589  func (s *ListPlacementsInput) SetNextToken(v string) *ListPlacementsInput {
  2590  	s.NextToken = &v
  2591  	return s
  2592  }
  2593  
  2594  // SetProjectName sets the ProjectName field's value.
  2595  func (s *ListPlacementsInput) SetProjectName(v string) *ListPlacementsInput {
  2596  	s.ProjectName = &v
  2597  	return s
  2598  }
  2599  
  2600  type ListPlacementsOutput struct {
  2601  	_ struct{} `type:"structure"`
  2602  
  2603  	// The token used to retrieve the next set of results - will be effectively
  2604  	// empty if there are no further results.
  2605  	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
  2606  
  2607  	// An object listing the requested placements.
  2608  	//
  2609  	// Placements is a required field
  2610  	Placements []*PlacementSummary `locationName:"placements" type:"list" required:"true"`
  2611  }
  2612  
  2613  // String returns the string representation.
  2614  //
  2615  // API parameter values that are decorated as "sensitive" in the API will not
  2616  // be included in the string output. The member name will be present, but the
  2617  // value will be replaced with "sensitive".
  2618  func (s ListPlacementsOutput) String() string {
  2619  	return awsutil.Prettify(s)
  2620  }
  2621  
  2622  // GoString returns the string representation.
  2623  //
  2624  // API parameter values that are decorated as "sensitive" in the API will not
  2625  // be included in the string output. The member name will be present, but the
  2626  // value will be replaced with "sensitive".
  2627  func (s ListPlacementsOutput) GoString() string {
  2628  	return s.String()
  2629  }
  2630  
  2631  // SetNextToken sets the NextToken field's value.
  2632  func (s *ListPlacementsOutput) SetNextToken(v string) *ListPlacementsOutput {
  2633  	s.NextToken = &v
  2634  	return s
  2635  }
  2636  
  2637  // SetPlacements sets the Placements field's value.
  2638  func (s *ListPlacementsOutput) SetPlacements(v []*PlacementSummary) *ListPlacementsOutput {
  2639  	s.Placements = v
  2640  	return s
  2641  }
  2642  
  2643  type ListProjectsInput struct {
  2644  	_ struct{} `type:"structure" nopayload:"true"`
  2645  
  2646  	// The maximum number of results to return per request. If not set, a default
  2647  	// value of 100 is used.
  2648  	MaxResults *int64 `location:"querystring" locationName:"maxResults" min:"1" type:"integer"`
  2649  
  2650  	// The token to retrieve the next set of results.
  2651  	NextToken *string `location:"querystring" locationName:"nextToken" min:"1" type:"string"`
  2652  }
  2653  
  2654  // String returns the string representation.
  2655  //
  2656  // API parameter values that are decorated as "sensitive" in the API will not
  2657  // be included in the string output. The member name will be present, but the
  2658  // value will be replaced with "sensitive".
  2659  func (s ListProjectsInput) String() string {
  2660  	return awsutil.Prettify(s)
  2661  }
  2662  
  2663  // GoString returns the string representation.
  2664  //
  2665  // API parameter values that are decorated as "sensitive" in the API will not
  2666  // be included in the string output. The member name will be present, but the
  2667  // value will be replaced with "sensitive".
  2668  func (s ListProjectsInput) GoString() string {
  2669  	return s.String()
  2670  }
  2671  
  2672  // Validate inspects the fields of the type to determine if they are valid.
  2673  func (s *ListProjectsInput) Validate() error {
  2674  	invalidParams := request.ErrInvalidParams{Context: "ListProjectsInput"}
  2675  	if s.MaxResults != nil && *s.MaxResults < 1 {
  2676  		invalidParams.Add(request.NewErrParamMinValue("MaxResults", 1))
  2677  	}
  2678  	if s.NextToken != nil && len(*s.NextToken) < 1 {
  2679  		invalidParams.Add(request.NewErrParamMinLen("NextToken", 1))
  2680  	}
  2681  
  2682  	if invalidParams.Len() > 0 {
  2683  		return invalidParams
  2684  	}
  2685  	return nil
  2686  }
  2687  
  2688  // SetMaxResults sets the MaxResults field's value.
  2689  func (s *ListProjectsInput) SetMaxResults(v int64) *ListProjectsInput {
  2690  	s.MaxResults = &v
  2691  	return s
  2692  }
  2693  
  2694  // SetNextToken sets the NextToken field's value.
  2695  func (s *ListProjectsInput) SetNextToken(v string) *ListProjectsInput {
  2696  	s.NextToken = &v
  2697  	return s
  2698  }
  2699  
  2700  type ListProjectsOutput struct {
  2701  	_ struct{} `type:"structure"`
  2702  
  2703  	// The token used to retrieve the next set of results - will be effectively
  2704  	// empty if there are no further results.
  2705  	NextToken *string `locationName:"nextToken" min:"1" type:"string"`
  2706  
  2707  	// An object containing the list of projects.
  2708  	//
  2709  	// Projects is a required field
  2710  	Projects []*ProjectSummary `locationName:"projects" type:"list" required:"true"`
  2711  }
  2712  
  2713  // String returns the string representation.
  2714  //
  2715  // API parameter values that are decorated as "sensitive" in the API will not
  2716  // be included in the string output. The member name will be present, but the
  2717  // value will be replaced with "sensitive".
  2718  func (s ListProjectsOutput) String() string {
  2719  	return awsutil.Prettify(s)
  2720  }
  2721  
  2722  // GoString returns the string representation.
  2723  //
  2724  // API parameter values that are decorated as "sensitive" in the API will not
  2725  // be included in the string output. The member name will be present, but the
  2726  // value will be replaced with "sensitive".
  2727  func (s ListProjectsOutput) GoString() string {
  2728  	return s.String()
  2729  }
  2730  
  2731  // SetNextToken sets the NextToken field's value.
  2732  func (s *ListProjectsOutput) SetNextToken(v string) *ListProjectsOutput {
  2733  	s.NextToken = &v
  2734  	return s
  2735  }
  2736  
  2737  // SetProjects sets the Projects field's value.
  2738  func (s *ListProjectsOutput) SetProjects(v []*ProjectSummary) *ListProjectsOutput {
  2739  	s.Projects = v
  2740  	return s
  2741  }
  2742  
  2743  type ListTagsForResourceInput struct {
  2744  	_ struct{} `type:"structure" nopayload:"true"`
  2745  
  2746  	// The ARN of the resource whose tags you want to list.
  2747  	//
  2748  	// ResourceArn is a required field
  2749  	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`
  2750  }
  2751  
  2752  // String returns the string representation.
  2753  //
  2754  // API parameter values that are decorated as "sensitive" in the API will not
  2755  // be included in the string output. The member name will be present, but the
  2756  // value will be replaced with "sensitive".
  2757  func (s ListTagsForResourceInput) String() string {
  2758  	return awsutil.Prettify(s)
  2759  }
  2760  
  2761  // GoString returns the string representation.
  2762  //
  2763  // API parameter values that are decorated as "sensitive" in the API will not
  2764  // be included in the string output. The member name will be present, but the
  2765  // value will be replaced with "sensitive".
  2766  func (s ListTagsForResourceInput) GoString() string {
  2767  	return s.String()
  2768  }
  2769  
  2770  // Validate inspects the fields of the type to determine if they are valid.
  2771  func (s *ListTagsForResourceInput) Validate() error {
  2772  	invalidParams := request.ErrInvalidParams{Context: "ListTagsForResourceInput"}
  2773  	if s.ResourceArn == nil {
  2774  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  2775  	}
  2776  	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
  2777  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
  2778  	}
  2779  
  2780  	if invalidParams.Len() > 0 {
  2781  		return invalidParams
  2782  	}
  2783  	return nil
  2784  }
  2785  
  2786  // SetResourceArn sets the ResourceArn field's value.
  2787  func (s *ListTagsForResourceInput) SetResourceArn(v string) *ListTagsForResourceInput {
  2788  	s.ResourceArn = &v
  2789  	return s
  2790  }
  2791  
  2792  type ListTagsForResourceOutput struct {
  2793  	_ struct{} `type:"structure"`
  2794  
  2795  	// The tags (metadata key/value pairs) which you have assigned to the resource.
  2796  	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
  2797  }
  2798  
  2799  // String returns the string representation.
  2800  //
  2801  // API parameter values that are decorated as "sensitive" in the API will not
  2802  // be included in the string output. The member name will be present, but the
  2803  // value will be replaced with "sensitive".
  2804  func (s ListTagsForResourceOutput) String() string {
  2805  	return awsutil.Prettify(s)
  2806  }
  2807  
  2808  // GoString returns the string representation.
  2809  //
  2810  // API parameter values that are decorated as "sensitive" in the API will not
  2811  // be included in the string output. The member name will be present, but the
  2812  // value will be replaced with "sensitive".
  2813  func (s ListTagsForResourceOutput) GoString() string {
  2814  	return s.String()
  2815  }
  2816  
  2817  // SetTags sets the Tags field's value.
  2818  func (s *ListTagsForResourceOutput) SetTags(v map[string]*string) *ListTagsForResourceOutput {
  2819  	s.Tags = v
  2820  	return s
  2821  }
  2822  
  2823  // An object describing a project's placement.
  2824  type PlacementDescription struct {
  2825  	_ struct{} `type:"structure"`
  2826  
  2827  	// The user-defined attributes associated with the placement.
  2828  	//
  2829  	// Attributes is a required field
  2830  	Attributes map[string]*string `locationName:"attributes" type:"map" required:"true"`
  2831  
  2832  	// The date when the placement was initially created, in UNIX epoch time format.
  2833  	//
  2834  	// CreatedDate is a required field
  2835  	CreatedDate *time.Time `locationName:"createdDate" type:"timestamp" required:"true"`
  2836  
  2837  	// The name of the placement.
  2838  	//
  2839  	// PlacementName is a required field
  2840  	PlacementName *string `locationName:"placementName" min:"1" type:"string" required:"true"`
  2841  
  2842  	// The name of the project containing the placement.
  2843  	//
  2844  	// ProjectName is a required field
  2845  	ProjectName *string `locationName:"projectName" min:"1" type:"string" required:"true"`
  2846  
  2847  	// The date when the placement was last updated, in UNIX epoch time format.
  2848  	// If the placement was not updated, then createdDate and updatedDate are the
  2849  	// same.
  2850  	//
  2851  	// UpdatedDate is a required field
  2852  	UpdatedDate *time.Time `locationName:"updatedDate" type:"timestamp" required:"true"`
  2853  }
  2854  
  2855  // String returns the string representation.
  2856  //
  2857  // API parameter values that are decorated as "sensitive" in the API will not
  2858  // be included in the string output. The member name will be present, but the
  2859  // value will be replaced with "sensitive".
  2860  func (s PlacementDescription) String() string {
  2861  	return awsutil.Prettify(s)
  2862  }
  2863  
  2864  // GoString returns the string representation.
  2865  //
  2866  // API parameter values that are decorated as "sensitive" in the API will not
  2867  // be included in the string output. The member name will be present, but the
  2868  // value will be replaced with "sensitive".
  2869  func (s PlacementDescription) GoString() string {
  2870  	return s.String()
  2871  }
  2872  
  2873  // SetAttributes sets the Attributes field's value.
  2874  func (s *PlacementDescription) SetAttributes(v map[string]*string) *PlacementDescription {
  2875  	s.Attributes = v
  2876  	return s
  2877  }
  2878  
  2879  // SetCreatedDate sets the CreatedDate field's value.
  2880  func (s *PlacementDescription) SetCreatedDate(v time.Time) *PlacementDescription {
  2881  	s.CreatedDate = &v
  2882  	return s
  2883  }
  2884  
  2885  // SetPlacementName sets the PlacementName field's value.
  2886  func (s *PlacementDescription) SetPlacementName(v string) *PlacementDescription {
  2887  	s.PlacementName = &v
  2888  	return s
  2889  }
  2890  
  2891  // SetProjectName sets the ProjectName field's value.
  2892  func (s *PlacementDescription) SetProjectName(v string) *PlacementDescription {
  2893  	s.ProjectName = &v
  2894  	return s
  2895  }
  2896  
  2897  // SetUpdatedDate sets the UpdatedDate field's value.
  2898  func (s *PlacementDescription) SetUpdatedDate(v time.Time) *PlacementDescription {
  2899  	s.UpdatedDate = &v
  2900  	return s
  2901  }
  2902  
  2903  // An object providing summary information for a particular placement.
  2904  type PlacementSummary struct {
  2905  	_ struct{} `type:"structure"`
  2906  
  2907  	// The date when the placement was originally created, in UNIX epoch time format.
  2908  	//
  2909  	// CreatedDate is a required field
  2910  	CreatedDate *time.Time `locationName:"createdDate" type:"timestamp" required:"true"`
  2911  
  2912  	// The name of the placement being summarized.
  2913  	//
  2914  	// PlacementName is a required field
  2915  	PlacementName *string `locationName:"placementName" min:"1" type:"string" required:"true"`
  2916  
  2917  	// The name of the project containing the placement.
  2918  	//
  2919  	// ProjectName is a required field
  2920  	ProjectName *string `locationName:"projectName" min:"1" type:"string" required:"true"`
  2921  
  2922  	// The date when the placement was last updated, in UNIX epoch time format.
  2923  	// If the placement was not updated, then createdDate and updatedDate are the
  2924  	// same.
  2925  	//
  2926  	// UpdatedDate is a required field
  2927  	UpdatedDate *time.Time `locationName:"updatedDate" type:"timestamp" required:"true"`
  2928  }
  2929  
  2930  // String returns the string representation.
  2931  //
  2932  // API parameter values that are decorated as "sensitive" in the API will not
  2933  // be included in the string output. The member name will be present, but the
  2934  // value will be replaced with "sensitive".
  2935  func (s PlacementSummary) String() string {
  2936  	return awsutil.Prettify(s)
  2937  }
  2938  
  2939  // GoString returns the string representation.
  2940  //
  2941  // API parameter values that are decorated as "sensitive" in the API will not
  2942  // be included in the string output. The member name will be present, but the
  2943  // value will be replaced with "sensitive".
  2944  func (s PlacementSummary) GoString() string {
  2945  	return s.String()
  2946  }
  2947  
  2948  // SetCreatedDate sets the CreatedDate field's value.
  2949  func (s *PlacementSummary) SetCreatedDate(v time.Time) *PlacementSummary {
  2950  	s.CreatedDate = &v
  2951  	return s
  2952  }
  2953  
  2954  // SetPlacementName sets the PlacementName field's value.
  2955  func (s *PlacementSummary) SetPlacementName(v string) *PlacementSummary {
  2956  	s.PlacementName = &v
  2957  	return s
  2958  }
  2959  
  2960  // SetProjectName sets the ProjectName field's value.
  2961  func (s *PlacementSummary) SetProjectName(v string) *PlacementSummary {
  2962  	s.ProjectName = &v
  2963  	return s
  2964  }
  2965  
  2966  // SetUpdatedDate sets the UpdatedDate field's value.
  2967  func (s *PlacementSummary) SetUpdatedDate(v time.Time) *PlacementSummary {
  2968  	s.UpdatedDate = &v
  2969  	return s
  2970  }
  2971  
  2972  // An object defining the template for a placement.
  2973  type PlacementTemplate struct {
  2974  	_ struct{} `type:"structure"`
  2975  
  2976  	// The default attributes (key/value pairs) to be applied to all placements
  2977  	// using this template.
  2978  	DefaultAttributes map[string]*string `locationName:"defaultAttributes" type:"map"`
  2979  
  2980  	// An object specifying the DeviceTemplate for all placements using this (PlacementTemplate)
  2981  	// template.
  2982  	DeviceTemplates map[string]*DeviceTemplate `locationName:"deviceTemplates" type:"map"`
  2983  }
  2984  
  2985  // String returns the string representation.
  2986  //
  2987  // API parameter values that are decorated as "sensitive" in the API will not
  2988  // be included in the string output. The member name will be present, but the
  2989  // value will be replaced with "sensitive".
  2990  func (s PlacementTemplate) String() string {
  2991  	return awsutil.Prettify(s)
  2992  }
  2993  
  2994  // GoString returns the string representation.
  2995  //
  2996  // API parameter values that are decorated as "sensitive" in the API will not
  2997  // be included in the string output. The member name will be present, but the
  2998  // value will be replaced with "sensitive".
  2999  func (s PlacementTemplate) GoString() string {
  3000  	return s.String()
  3001  }
  3002  
  3003  // SetDefaultAttributes sets the DefaultAttributes field's value.
  3004  func (s *PlacementTemplate) SetDefaultAttributes(v map[string]*string) *PlacementTemplate {
  3005  	s.DefaultAttributes = v
  3006  	return s
  3007  }
  3008  
  3009  // SetDeviceTemplates sets the DeviceTemplates field's value.
  3010  func (s *PlacementTemplate) SetDeviceTemplates(v map[string]*DeviceTemplate) *PlacementTemplate {
  3011  	s.DeviceTemplates = v
  3012  	return s
  3013  }
  3014  
  3015  // An object providing detailed information for a particular project associated
  3016  // with an AWS account and region.
  3017  type ProjectDescription struct {
  3018  	_ struct{} `type:"structure"`
  3019  
  3020  	// The ARN of the project.
  3021  	Arn *string `locationName:"arn" type:"string"`
  3022  
  3023  	// The date when the project was originally created, in UNIX epoch time format.
  3024  	//
  3025  	// CreatedDate is a required field
  3026  	CreatedDate *time.Time `locationName:"createdDate" type:"timestamp" required:"true"`
  3027  
  3028  	// The description of the project.
  3029  	Description *string `locationName:"description" type:"string"`
  3030  
  3031  	// An object describing the project's placement specifications.
  3032  	PlacementTemplate *PlacementTemplate `locationName:"placementTemplate" type:"structure"`
  3033  
  3034  	// The name of the project for which to obtain information from.
  3035  	//
  3036  	// ProjectName is a required field
  3037  	ProjectName *string `locationName:"projectName" min:"1" type:"string" required:"true"`
  3038  
  3039  	// The tags (metadata key/value pairs) associated with the project.
  3040  	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
  3041  
  3042  	// The date when the project was last updated, in UNIX epoch time format. If
  3043  	// the project was not updated, then createdDate and updatedDate are the same.
  3044  	//
  3045  	// UpdatedDate is a required field
  3046  	UpdatedDate *time.Time `locationName:"updatedDate" type:"timestamp" required:"true"`
  3047  }
  3048  
  3049  // String returns the string representation.
  3050  //
  3051  // API parameter values that are decorated as "sensitive" in the API will not
  3052  // be included in the string output. The member name will be present, but the
  3053  // value will be replaced with "sensitive".
  3054  func (s ProjectDescription) String() string {
  3055  	return awsutil.Prettify(s)
  3056  }
  3057  
  3058  // GoString returns the string representation.
  3059  //
  3060  // API parameter values that are decorated as "sensitive" in the API will not
  3061  // be included in the string output. The member name will be present, but the
  3062  // value will be replaced with "sensitive".
  3063  func (s ProjectDescription) GoString() string {
  3064  	return s.String()
  3065  }
  3066  
  3067  // SetArn sets the Arn field's value.
  3068  func (s *ProjectDescription) SetArn(v string) *ProjectDescription {
  3069  	s.Arn = &v
  3070  	return s
  3071  }
  3072  
  3073  // SetCreatedDate sets the CreatedDate field's value.
  3074  func (s *ProjectDescription) SetCreatedDate(v time.Time) *ProjectDescription {
  3075  	s.CreatedDate = &v
  3076  	return s
  3077  }
  3078  
  3079  // SetDescription sets the Description field's value.
  3080  func (s *ProjectDescription) SetDescription(v string) *ProjectDescription {
  3081  	s.Description = &v
  3082  	return s
  3083  }
  3084  
  3085  // SetPlacementTemplate sets the PlacementTemplate field's value.
  3086  func (s *ProjectDescription) SetPlacementTemplate(v *PlacementTemplate) *ProjectDescription {
  3087  	s.PlacementTemplate = v
  3088  	return s
  3089  }
  3090  
  3091  // SetProjectName sets the ProjectName field's value.
  3092  func (s *ProjectDescription) SetProjectName(v string) *ProjectDescription {
  3093  	s.ProjectName = &v
  3094  	return s
  3095  }
  3096  
  3097  // SetTags sets the Tags field's value.
  3098  func (s *ProjectDescription) SetTags(v map[string]*string) *ProjectDescription {
  3099  	s.Tags = v
  3100  	return s
  3101  }
  3102  
  3103  // SetUpdatedDate sets the UpdatedDate field's value.
  3104  func (s *ProjectDescription) SetUpdatedDate(v time.Time) *ProjectDescription {
  3105  	s.UpdatedDate = &v
  3106  	return s
  3107  }
  3108  
  3109  // An object providing summary information for a particular project for an associated
  3110  // AWS account and region.
  3111  type ProjectSummary struct {
  3112  	_ struct{} `type:"structure"`
  3113  
  3114  	// The ARN of the project.
  3115  	Arn *string `locationName:"arn" type:"string"`
  3116  
  3117  	// The date when the project was originally created, in UNIX epoch time format.
  3118  	//
  3119  	// CreatedDate is a required field
  3120  	CreatedDate *time.Time `locationName:"createdDate" type:"timestamp" required:"true"`
  3121  
  3122  	// The name of the project being summarized.
  3123  	//
  3124  	// ProjectName is a required field
  3125  	ProjectName *string `locationName:"projectName" min:"1" type:"string" required:"true"`
  3126  
  3127  	// The tags (metadata key/value pairs) associated with the project.
  3128  	Tags map[string]*string `locationName:"tags" min:"1" type:"map"`
  3129  
  3130  	// The date when the project was last updated, in UNIX epoch time format. If
  3131  	// the project was not updated, then createdDate and updatedDate are the same.
  3132  	//
  3133  	// UpdatedDate is a required field
  3134  	UpdatedDate *time.Time `locationName:"updatedDate" type:"timestamp" required:"true"`
  3135  }
  3136  
  3137  // String returns the string representation.
  3138  //
  3139  // API parameter values that are decorated as "sensitive" in the API will not
  3140  // be included in the string output. The member name will be present, but the
  3141  // value will be replaced with "sensitive".
  3142  func (s ProjectSummary) String() string {
  3143  	return awsutil.Prettify(s)
  3144  }
  3145  
  3146  // GoString returns the string representation.
  3147  //
  3148  // API parameter values that are decorated as "sensitive" in the API will not
  3149  // be included in the string output. The member name will be present, but the
  3150  // value will be replaced with "sensitive".
  3151  func (s ProjectSummary) GoString() string {
  3152  	return s.String()
  3153  }
  3154  
  3155  // SetArn sets the Arn field's value.
  3156  func (s *ProjectSummary) SetArn(v string) *ProjectSummary {
  3157  	s.Arn = &v
  3158  	return s
  3159  }
  3160  
  3161  // SetCreatedDate sets the CreatedDate field's value.
  3162  func (s *ProjectSummary) SetCreatedDate(v time.Time) *ProjectSummary {
  3163  	s.CreatedDate = &v
  3164  	return s
  3165  }
  3166  
  3167  // SetProjectName sets the ProjectName field's value.
  3168  func (s *ProjectSummary) SetProjectName(v string) *ProjectSummary {
  3169  	s.ProjectName = &v
  3170  	return s
  3171  }
  3172  
  3173  // SetTags sets the Tags field's value.
  3174  func (s *ProjectSummary) SetTags(v map[string]*string) *ProjectSummary {
  3175  	s.Tags = v
  3176  	return s
  3177  }
  3178  
  3179  // SetUpdatedDate sets the UpdatedDate field's value.
  3180  func (s *ProjectSummary) SetUpdatedDate(v time.Time) *ProjectSummary {
  3181  	s.UpdatedDate = &v
  3182  	return s
  3183  }
  3184  
  3185  type ResourceConflictException struct {
  3186  	_            struct{}                  `type:"structure"`
  3187  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  3188  
  3189  	Code_ *string `locationName:"code" type:"string"`
  3190  
  3191  	Message_ *string `locationName:"message" type:"string"`
  3192  }
  3193  
  3194  // String returns the string representation.
  3195  //
  3196  // API parameter values that are decorated as "sensitive" in the API will not
  3197  // be included in the string output. The member name will be present, but the
  3198  // value will be replaced with "sensitive".
  3199  func (s ResourceConflictException) String() string {
  3200  	return awsutil.Prettify(s)
  3201  }
  3202  
  3203  // GoString returns the string representation.
  3204  //
  3205  // API parameter values that are decorated as "sensitive" in the API will not
  3206  // be included in the string output. The member name will be present, but the
  3207  // value will be replaced with "sensitive".
  3208  func (s ResourceConflictException) GoString() string {
  3209  	return s.String()
  3210  }
  3211  
  3212  func newErrorResourceConflictException(v protocol.ResponseMetadata) error {
  3213  	return &ResourceConflictException{
  3214  		RespMetadata: v,
  3215  	}
  3216  }
  3217  
  3218  // Code returns the exception type name.
  3219  func (s *ResourceConflictException) Code() string {
  3220  	return "ResourceConflictException"
  3221  }
  3222  
  3223  // Message returns the exception's message.
  3224  func (s *ResourceConflictException) Message() string {
  3225  	if s.Message_ != nil {
  3226  		return *s.Message_
  3227  	}
  3228  	return ""
  3229  }
  3230  
  3231  // OrigErr always returns nil, satisfies awserr.Error interface.
  3232  func (s *ResourceConflictException) OrigErr() error {
  3233  	return nil
  3234  }
  3235  
  3236  func (s *ResourceConflictException) Error() string {
  3237  	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
  3238  }
  3239  
  3240  // Status code returns the HTTP status code for the request's response error.
  3241  func (s *ResourceConflictException) StatusCode() int {
  3242  	return s.RespMetadata.StatusCode
  3243  }
  3244  
  3245  // RequestID returns the service's response RequestID for request.
  3246  func (s *ResourceConflictException) RequestID() string {
  3247  	return s.RespMetadata.RequestID
  3248  }
  3249  
  3250  type ResourceNotFoundException struct {
  3251  	_            struct{}                  `type:"structure"`
  3252  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  3253  
  3254  	Code_ *string `locationName:"code" type:"string"`
  3255  
  3256  	Message_ *string `locationName:"message" type:"string"`
  3257  }
  3258  
  3259  // String returns the string representation.
  3260  //
  3261  // API parameter values that are decorated as "sensitive" in the API will not
  3262  // be included in the string output. The member name will be present, but the
  3263  // value will be replaced with "sensitive".
  3264  func (s ResourceNotFoundException) String() string {
  3265  	return awsutil.Prettify(s)
  3266  }
  3267  
  3268  // GoString returns the string representation.
  3269  //
  3270  // API parameter values that are decorated as "sensitive" in the API will not
  3271  // be included in the string output. The member name will be present, but the
  3272  // value will be replaced with "sensitive".
  3273  func (s ResourceNotFoundException) GoString() string {
  3274  	return s.String()
  3275  }
  3276  
  3277  func newErrorResourceNotFoundException(v protocol.ResponseMetadata) error {
  3278  	return &ResourceNotFoundException{
  3279  		RespMetadata: v,
  3280  	}
  3281  }
  3282  
  3283  // Code returns the exception type name.
  3284  func (s *ResourceNotFoundException) Code() string {
  3285  	return "ResourceNotFoundException"
  3286  }
  3287  
  3288  // Message returns the exception's message.
  3289  func (s *ResourceNotFoundException) Message() string {
  3290  	if s.Message_ != nil {
  3291  		return *s.Message_
  3292  	}
  3293  	return ""
  3294  }
  3295  
  3296  // OrigErr always returns nil, satisfies awserr.Error interface.
  3297  func (s *ResourceNotFoundException) OrigErr() error {
  3298  	return nil
  3299  }
  3300  
  3301  func (s *ResourceNotFoundException) Error() string {
  3302  	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
  3303  }
  3304  
  3305  // Status code returns the HTTP status code for the request's response error.
  3306  func (s *ResourceNotFoundException) StatusCode() int {
  3307  	return s.RespMetadata.StatusCode
  3308  }
  3309  
  3310  // RequestID returns the service's response RequestID for request.
  3311  func (s *ResourceNotFoundException) RequestID() string {
  3312  	return s.RespMetadata.RequestID
  3313  }
  3314  
  3315  type TagResourceInput struct {
  3316  	_ struct{} `type:"structure"`
  3317  
  3318  	// The ARN of the resouce for which tag(s) should be added or modified.
  3319  	//
  3320  	// ResourceArn is a required field
  3321  	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`
  3322  
  3323  	// The new or modifying tag(s) for the resource. See AWS IoT 1-Click Service
  3324  	// Limits (https://docs.aws.amazon.com/iot-1-click/latest/developerguide/1click-appendix.html#1click-limits)
  3325  	// for the maximum number of tags allowed per resource.
  3326  	//
  3327  	// Tags is a required field
  3328  	Tags map[string]*string `locationName:"tags" min:"1" type:"map" required:"true"`
  3329  }
  3330  
  3331  // String returns the string representation.
  3332  //
  3333  // API parameter values that are decorated as "sensitive" in the API will not
  3334  // be included in the string output. The member name will be present, but the
  3335  // value will be replaced with "sensitive".
  3336  func (s TagResourceInput) String() string {
  3337  	return awsutil.Prettify(s)
  3338  }
  3339  
  3340  // GoString returns the string representation.
  3341  //
  3342  // API parameter values that are decorated as "sensitive" in the API will not
  3343  // be included in the string output. The member name will be present, but the
  3344  // value will be replaced with "sensitive".
  3345  func (s TagResourceInput) GoString() string {
  3346  	return s.String()
  3347  }
  3348  
  3349  // Validate inspects the fields of the type to determine if they are valid.
  3350  func (s *TagResourceInput) Validate() error {
  3351  	invalidParams := request.ErrInvalidParams{Context: "TagResourceInput"}
  3352  	if s.ResourceArn == nil {
  3353  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  3354  	}
  3355  	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
  3356  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
  3357  	}
  3358  	if s.Tags == nil {
  3359  		invalidParams.Add(request.NewErrParamRequired("Tags"))
  3360  	}
  3361  	if s.Tags != nil && len(s.Tags) < 1 {
  3362  		invalidParams.Add(request.NewErrParamMinLen("Tags", 1))
  3363  	}
  3364  
  3365  	if invalidParams.Len() > 0 {
  3366  		return invalidParams
  3367  	}
  3368  	return nil
  3369  }
  3370  
  3371  // SetResourceArn sets the ResourceArn field's value.
  3372  func (s *TagResourceInput) SetResourceArn(v string) *TagResourceInput {
  3373  	s.ResourceArn = &v
  3374  	return s
  3375  }
  3376  
  3377  // SetTags sets the Tags field's value.
  3378  func (s *TagResourceInput) SetTags(v map[string]*string) *TagResourceInput {
  3379  	s.Tags = v
  3380  	return s
  3381  }
  3382  
  3383  type TagResourceOutput struct {
  3384  	_ struct{} `type:"structure" nopayload:"true"`
  3385  }
  3386  
  3387  // String returns the string representation.
  3388  //
  3389  // API parameter values that are decorated as "sensitive" in the API will not
  3390  // be included in the string output. The member name will be present, but the
  3391  // value will be replaced with "sensitive".
  3392  func (s TagResourceOutput) String() string {
  3393  	return awsutil.Prettify(s)
  3394  }
  3395  
  3396  // GoString returns the string representation.
  3397  //
  3398  // API parameter values that are decorated as "sensitive" in the API will not
  3399  // be included in the string output. The member name will be present, but the
  3400  // value will be replaced with "sensitive".
  3401  func (s TagResourceOutput) GoString() string {
  3402  	return s.String()
  3403  }
  3404  
  3405  type TooManyRequestsException struct {
  3406  	_            struct{}                  `type:"structure"`
  3407  	RespMetadata protocol.ResponseMetadata `json:"-" xml:"-"`
  3408  
  3409  	Code_ *string `locationName:"code" type:"string"`
  3410  
  3411  	Message_ *string `locationName:"message" type:"string"`
  3412  }
  3413  
  3414  // String returns the string representation.
  3415  //
  3416  // API parameter values that are decorated as "sensitive" in the API will not
  3417  // be included in the string output. The member name will be present, but the
  3418  // value will be replaced with "sensitive".
  3419  func (s TooManyRequestsException) String() string {
  3420  	return awsutil.Prettify(s)
  3421  }
  3422  
  3423  // GoString returns the string representation.
  3424  //
  3425  // API parameter values that are decorated as "sensitive" in the API will not
  3426  // be included in the string output. The member name will be present, but the
  3427  // value will be replaced with "sensitive".
  3428  func (s TooManyRequestsException) GoString() string {
  3429  	return s.String()
  3430  }
  3431  
  3432  func newErrorTooManyRequestsException(v protocol.ResponseMetadata) error {
  3433  	return &TooManyRequestsException{
  3434  		RespMetadata: v,
  3435  	}
  3436  }
  3437  
  3438  // Code returns the exception type name.
  3439  func (s *TooManyRequestsException) Code() string {
  3440  	return "TooManyRequestsException"
  3441  }
  3442  
  3443  // Message returns the exception's message.
  3444  func (s *TooManyRequestsException) Message() string {
  3445  	if s.Message_ != nil {
  3446  		return *s.Message_
  3447  	}
  3448  	return ""
  3449  }
  3450  
  3451  // OrigErr always returns nil, satisfies awserr.Error interface.
  3452  func (s *TooManyRequestsException) OrigErr() error {
  3453  	return nil
  3454  }
  3455  
  3456  func (s *TooManyRequestsException) Error() string {
  3457  	return fmt.Sprintf("%s: %s\n%s", s.Code(), s.Message(), s.String())
  3458  }
  3459  
  3460  // Status code returns the HTTP status code for the request's response error.
  3461  func (s *TooManyRequestsException) StatusCode() int {
  3462  	return s.RespMetadata.StatusCode
  3463  }
  3464  
  3465  // RequestID returns the service's response RequestID for request.
  3466  func (s *TooManyRequestsException) RequestID() string {
  3467  	return s.RespMetadata.RequestID
  3468  }
  3469  
  3470  type UntagResourceInput struct {
  3471  	_ struct{} `type:"structure" nopayload:"true"`
  3472  
  3473  	// The ARN of the resource whose tag you want to remove.
  3474  	//
  3475  	// ResourceArn is a required field
  3476  	ResourceArn *string `location:"uri" locationName:"resourceArn" type:"string" required:"true"`
  3477  
  3478  	// The keys of those tags which you want to remove.
  3479  	//
  3480  	// TagKeys is a required field
  3481  	TagKeys []*string `location:"querystring" locationName:"tagKeys" min:"1" type:"list" required:"true"`
  3482  }
  3483  
  3484  // String returns the string representation.
  3485  //
  3486  // API parameter values that are decorated as "sensitive" in the API will not
  3487  // be included in the string output. The member name will be present, but the
  3488  // value will be replaced with "sensitive".
  3489  func (s UntagResourceInput) String() string {
  3490  	return awsutil.Prettify(s)
  3491  }
  3492  
  3493  // GoString returns the string representation.
  3494  //
  3495  // API parameter values that are decorated as "sensitive" in the API will not
  3496  // be included in the string output. The member name will be present, but the
  3497  // value will be replaced with "sensitive".
  3498  func (s UntagResourceInput) GoString() string {
  3499  	return s.String()
  3500  }
  3501  
  3502  // Validate inspects the fields of the type to determine if they are valid.
  3503  func (s *UntagResourceInput) Validate() error {
  3504  	invalidParams := request.ErrInvalidParams{Context: "UntagResourceInput"}
  3505  	if s.ResourceArn == nil {
  3506  		invalidParams.Add(request.NewErrParamRequired("ResourceArn"))
  3507  	}
  3508  	if s.ResourceArn != nil && len(*s.ResourceArn) < 1 {
  3509  		invalidParams.Add(request.NewErrParamMinLen("ResourceArn", 1))
  3510  	}
  3511  	if s.TagKeys == nil {
  3512  		invalidParams.Add(request.NewErrParamRequired("TagKeys"))
  3513  	}
  3514  	if s.TagKeys != nil && len(s.TagKeys) < 1 {
  3515  		invalidParams.Add(request.NewErrParamMinLen("TagKeys", 1))
  3516  	}
  3517  
  3518  	if invalidParams.Len() > 0 {
  3519  		return invalidParams
  3520  	}
  3521  	return nil
  3522  }
  3523  
  3524  // SetResourceArn sets the ResourceArn field's value.
  3525  func (s *UntagResourceInput) SetResourceArn(v string) *UntagResourceInput {
  3526  	s.ResourceArn = &v
  3527  	return s
  3528  }
  3529  
  3530  // SetTagKeys sets the TagKeys field's value.
  3531  func (s *UntagResourceInput) SetTagKeys(v []*string) *UntagResourceInput {
  3532  	s.TagKeys = v
  3533  	return s
  3534  }
  3535  
  3536  type UntagResourceOutput struct {
  3537  	_ struct{} `type:"structure" nopayload:"true"`
  3538  }
  3539  
  3540  // String returns the string representation.
  3541  //
  3542  // API parameter values that are decorated as "sensitive" in the API will not
  3543  // be included in the string output. The member name will be present, but the
  3544  // value will be replaced with "sensitive".
  3545  func (s UntagResourceOutput) String() string {
  3546  	return awsutil.Prettify(s)
  3547  }
  3548  
  3549  // GoString returns the string representation.
  3550  //
  3551  // API parameter values that are decorated as "sensitive" in the API will not
  3552  // be included in the string output. The member name will be present, but the
  3553  // value will be replaced with "sensitive".
  3554  func (s UntagResourceOutput) GoString() string {
  3555  	return s.String()
  3556  }
  3557  
  3558  type UpdatePlacementInput struct {
  3559  	_ struct{} `type:"structure"`
  3560  
  3561  	// The user-defined object of attributes used to update the placement. The maximum
  3562  	// number of key/value pairs is 50.
  3563  	Attributes map[string]*string `locationName:"attributes" type:"map"`
  3564  
  3565  	// The name of the placement to update.
  3566  	//
  3567  	// PlacementName is a required field
  3568  	PlacementName *string `location:"uri" locationName:"placementName" min:"1" type:"string" required:"true"`
  3569  
  3570  	// The name of the project containing the placement to be updated.
  3571  	//
  3572  	// ProjectName is a required field
  3573  	ProjectName *string `location:"uri" locationName:"projectName" min:"1" type:"string" required:"true"`
  3574  }
  3575  
  3576  // String returns the string representation.
  3577  //
  3578  // API parameter values that are decorated as "sensitive" in the API will not
  3579  // be included in the string output. The member name will be present, but the
  3580  // value will be replaced with "sensitive".
  3581  func (s UpdatePlacementInput) String() string {
  3582  	return awsutil.Prettify(s)
  3583  }
  3584  
  3585  // GoString returns the string representation.
  3586  //
  3587  // API parameter values that are decorated as "sensitive" in the API will not
  3588  // be included in the string output. The member name will be present, but the
  3589  // value will be replaced with "sensitive".
  3590  func (s UpdatePlacementInput) GoString() string {
  3591  	return s.String()
  3592  }
  3593  
  3594  // Validate inspects the fields of the type to determine if they are valid.
  3595  func (s *UpdatePlacementInput) Validate() error {
  3596  	invalidParams := request.ErrInvalidParams{Context: "UpdatePlacementInput"}
  3597  	if s.PlacementName == nil {
  3598  		invalidParams.Add(request.NewErrParamRequired("PlacementName"))
  3599  	}
  3600  	if s.PlacementName != nil && len(*s.PlacementName) < 1 {
  3601  		invalidParams.Add(request.NewErrParamMinLen("PlacementName", 1))
  3602  	}
  3603  	if s.ProjectName == nil {
  3604  		invalidParams.Add(request.NewErrParamRequired("ProjectName"))
  3605  	}
  3606  	if s.ProjectName != nil && len(*s.ProjectName) < 1 {
  3607  		invalidParams.Add(request.NewErrParamMinLen("ProjectName", 1))
  3608  	}
  3609  
  3610  	if invalidParams.Len() > 0 {
  3611  		return invalidParams
  3612  	}
  3613  	return nil
  3614  }
  3615  
  3616  // SetAttributes sets the Attributes field's value.
  3617  func (s *UpdatePlacementInput) SetAttributes(v map[string]*string) *UpdatePlacementInput {
  3618  	s.Attributes = v
  3619  	return s
  3620  }
  3621  
  3622  // SetPlacementName sets the PlacementName field's value.
  3623  func (s *UpdatePlacementInput) SetPlacementName(v string) *UpdatePlacementInput {
  3624  	s.PlacementName = &v
  3625  	return s
  3626  }
  3627  
  3628  // SetProjectName sets the ProjectName field's value.
  3629  func (s *UpdatePlacementInput) SetProjectName(v string) *UpdatePlacementInput {
  3630  	s.ProjectName = &v
  3631  	return s
  3632  }
  3633  
  3634  type UpdatePlacementOutput struct {
  3635  	_ struct{} `type:"structure" nopayload:"true"`
  3636  }
  3637  
  3638  // String returns the string representation.
  3639  //
  3640  // API parameter values that are decorated as "sensitive" in the API will not
  3641  // be included in the string output. The member name will be present, but the
  3642  // value will be replaced with "sensitive".
  3643  func (s UpdatePlacementOutput) String() string {
  3644  	return awsutil.Prettify(s)
  3645  }
  3646  
  3647  // GoString returns the string representation.
  3648  //
  3649  // API parameter values that are decorated as "sensitive" in the API will not
  3650  // be included in the string output. The member name will be present, but the
  3651  // value will be replaced with "sensitive".
  3652  func (s UpdatePlacementOutput) GoString() string {
  3653  	return s.String()
  3654  }
  3655  
  3656  type UpdateProjectInput struct {
  3657  	_ struct{} `type:"structure"`
  3658  
  3659  	// An optional user-defined description for the project.
  3660  	Description *string `locationName:"description" type:"string"`
  3661  
  3662  	// An object defining the project update. Once a project has been created, you
  3663  	// cannot add device template names to the project. However, for a given placementTemplate,
  3664  	// you can update the associated callbackOverrides for the device definition
  3665  	// using this API.
  3666  	PlacementTemplate *PlacementTemplate `locationName:"placementTemplate" type:"structure"`
  3667  
  3668  	// The name of the project to be updated.
  3669  	//
  3670  	// ProjectName is a required field
  3671  	ProjectName *string `location:"uri" locationName:"projectName" min:"1" type:"string" required:"true"`
  3672  }
  3673  
  3674  // String returns the string representation.
  3675  //
  3676  // API parameter values that are decorated as "sensitive" in the API will not
  3677  // be included in the string output. The member name will be present, but the
  3678  // value will be replaced with "sensitive".
  3679  func (s UpdateProjectInput) String() string {
  3680  	return awsutil.Prettify(s)
  3681  }
  3682  
  3683  // GoString returns the string representation.
  3684  //
  3685  // API parameter values that are decorated as "sensitive" in the API will not
  3686  // be included in the string output. The member name will be present, but the
  3687  // value will be replaced with "sensitive".
  3688  func (s UpdateProjectInput) GoString() string {
  3689  	return s.String()
  3690  }
  3691  
  3692  // Validate inspects the fields of the type to determine if they are valid.
  3693  func (s *UpdateProjectInput) Validate() error {
  3694  	invalidParams := request.ErrInvalidParams{Context: "UpdateProjectInput"}
  3695  	if s.ProjectName == nil {
  3696  		invalidParams.Add(request.NewErrParamRequired("ProjectName"))
  3697  	}
  3698  	if s.ProjectName != nil && len(*s.ProjectName) < 1 {
  3699  		invalidParams.Add(request.NewErrParamMinLen("ProjectName", 1))
  3700  	}
  3701  
  3702  	if invalidParams.Len() > 0 {
  3703  		return invalidParams
  3704  	}
  3705  	return nil
  3706  }
  3707  
  3708  // SetDescription sets the Description field's value.
  3709  func (s *UpdateProjectInput) SetDescription(v string) *UpdateProjectInput {
  3710  	s.Description = &v
  3711  	return s
  3712  }
  3713  
  3714  // SetPlacementTemplate sets the PlacementTemplate field's value.
  3715  func (s *UpdateProjectInput) SetPlacementTemplate(v *PlacementTemplate) *UpdateProjectInput {
  3716  	s.PlacementTemplate = v
  3717  	return s
  3718  }
  3719  
  3720  // SetProjectName sets the ProjectName field's value.
  3721  func (s *UpdateProjectInput) SetProjectName(v string) *UpdateProjectInput {
  3722  	s.ProjectName = &v
  3723  	return s
  3724  }
  3725  
  3726  type UpdateProjectOutput struct {
  3727  	_ struct{} `type:"structure" nopayload:"true"`
  3728  }
  3729  
  3730  // String returns the string representation.
  3731  //
  3732  // API parameter values that are decorated as "sensitive" in the API will not
  3733  // be included in the string output. The member name will be present, but the
  3734  // value will be replaced with "sensitive".
  3735  func (s UpdateProjectOutput) String() string {
  3736  	return awsutil.Prettify(s)
  3737  }
  3738  
  3739  // GoString returns the string representation.
  3740  //
  3741  // API parameter values that are decorated as "sensitive" in the API will not
  3742  // be included in the string output. The member name will be present, but the
  3743  // value will be replaced with "sensitive".
  3744  func (s UpdateProjectOutput) GoString() string {
  3745  	return s.String()
  3746  }