/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License").
 * You may not use this file except in compliance with the License.
 * A copy of the License is located at
 * 
 *  http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed
 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
 * express or implied. See the License for the specific language governing
 * permissions and limitations under the License.
 */
/*
 * Do not modify this file. This file is generated from the iot1click-projects-2018-05-14.normal.json service model.
 */
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Collections.Generic;
using Amazon.Runtime;
using Amazon.IoT1ClickProjects.Model;
namespace Amazon.IoT1ClickProjects
{
    /// 
    /// Interface for accessing IoT1ClickProjects
    ///
    /// The AWS IoT 1-Click Projects API Reference
    /// 
    public partial interface IAmazonIoT1ClickProjects : IAmazonService, IDisposable
    {
        
        #region  AssociateDeviceWithPlacement
        /// 
        /// Associates a physical device with a placement.
        /// 
        /// Container for the necessary parameters to execute the AssociateDeviceWithPlacement service method.
        /// 
        /// The response from the AssociateDeviceWithPlacement service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for AssociateDeviceWithPlacement Operation
        AssociateDeviceWithPlacementResponse AssociateDeviceWithPlacement(AssociateDeviceWithPlacementRequest request);
        /// 
        /// Associates a physical device with a placement.
        /// 
        /// Container for the necessary parameters to execute the AssociateDeviceWithPlacement service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the AssociateDeviceWithPlacement service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for AssociateDeviceWithPlacement Operation
        Task AssociateDeviceWithPlacementAsync(AssociateDeviceWithPlacementRequest request, CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
        #region  CreatePlacement
        /// 
        /// Creates an empty placement.
        /// 
        /// Container for the necessary parameters to execute the CreatePlacement service method.
        /// 
        /// The response from the CreatePlacement service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for CreatePlacement Operation
        CreatePlacementResponse CreatePlacement(CreatePlacementRequest request);
        /// 
        /// Creates an empty placement.
        /// 
        /// Container for the necessary parameters to execute the CreatePlacement service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the CreatePlacement service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for CreatePlacement Operation
        Task CreatePlacementAsync(CreatePlacementRequest request, CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
        #region  CreateProject
        /// 
        /// Creates an empty project with a placement template. A project contains zero or more
        /// placements that adhere to the placement template defined in the project.
        /// 
        /// Container for the necessary parameters to execute the CreateProject service method.
        /// 
        /// The response from the CreateProject service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for CreateProject Operation
        CreateProjectResponse CreateProject(CreateProjectRequest request);
        /// 
        /// Creates an empty project with a placement template. A project contains zero or more
        /// placements that adhere to the placement template defined in the project.
        /// 
        /// Container for the necessary parameters to execute the CreateProject service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the CreateProject service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for CreateProject Operation
        Task CreateProjectAsync(CreateProjectRequest request, CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
        #region  DeletePlacement
        /// 
        /// Deletes a placement. To delete a placement, it must not have any devices associated
        /// with it.
        /// 
        ///   
        /// 
        /// When you delete a placement, all associated data becomes irretrievable.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DeletePlacement service method.
        /// 
        /// The response from the DeletePlacement service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for DeletePlacement Operation
        DeletePlacementResponse DeletePlacement(DeletePlacementRequest request);
        /// 
        /// Deletes a placement. To delete a placement, it must not have any devices associated
        /// with it.
        /// 
        ///   
        /// 
        /// When you delete a placement, all associated data becomes irretrievable.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DeletePlacement service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeletePlacement service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for DeletePlacement Operation
        Task DeletePlacementAsync(DeletePlacementRequest request, CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
        #region  DeleteProject
        /// 
        /// Deletes a project. To delete a project, it must not have any placements associated
        /// with it.
        /// 
        ///   
        /// 
        /// When you delete a project, all associated data becomes irretrievable.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DeleteProject service method.
        /// 
        /// The response from the DeleteProject service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for DeleteProject Operation
        DeleteProjectResponse DeleteProject(DeleteProjectRequest request);
        /// 
        /// Deletes a project. To delete a project, it must not have any placements associated
        /// with it.
        /// 
        ///   
        /// 
        /// When you delete a project, all associated data becomes irretrievable.
        /// 
        ///  
        /// 
        /// Container for the necessary parameters to execute the DeleteProject service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DeleteProject service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for DeleteProject Operation
        Task DeleteProjectAsync(DeleteProjectRequest request, CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
        #region  DescribePlacement
        /// 
        /// Describes a placement in a project.
        /// 
        /// Container for the necessary parameters to execute the DescribePlacement service method.
        /// 
        /// The response from the DescribePlacement service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for DescribePlacement Operation
        DescribePlacementResponse DescribePlacement(DescribePlacementRequest request);
        /// 
        /// Describes a placement in a project.
        /// 
        /// Container for the necessary parameters to execute the DescribePlacement service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribePlacement service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for DescribePlacement Operation
        Task DescribePlacementAsync(DescribePlacementRequest request, CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
        #region  DescribeProject
        /// 
        /// Returns an object describing a project.
        /// 
        /// Container for the necessary parameters to execute the DescribeProject service method.
        /// 
        /// The response from the DescribeProject service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for DescribeProject Operation
        DescribeProjectResponse DescribeProject(DescribeProjectRequest request);
        /// 
        /// Returns an object describing a project.
        /// 
        /// Container for the necessary parameters to execute the DescribeProject service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DescribeProject service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for DescribeProject Operation
        Task DescribeProjectAsync(DescribeProjectRequest request, CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
        #region  DisassociateDeviceFromPlacement
        /// 
        /// Removes a physical device from a placement.
        /// 
        /// Container for the necessary parameters to execute the DisassociateDeviceFromPlacement service method.
        /// 
        /// The response from the DisassociateDeviceFromPlacement service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for DisassociateDeviceFromPlacement Operation
        DisassociateDeviceFromPlacementResponse DisassociateDeviceFromPlacement(DisassociateDeviceFromPlacementRequest request);
        /// 
        /// Removes a physical device from a placement.
        /// 
        /// Container for the necessary parameters to execute the DisassociateDeviceFromPlacement service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the DisassociateDeviceFromPlacement service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for DisassociateDeviceFromPlacement Operation
        Task DisassociateDeviceFromPlacementAsync(DisassociateDeviceFromPlacementRequest request, CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
        #region  GetDevicesInPlacement
        /// 
        /// Returns an object enumerating the devices in a placement.
        /// 
        /// Container for the necessary parameters to execute the GetDevicesInPlacement service method.
        /// 
        /// The response from the GetDevicesInPlacement service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for GetDevicesInPlacement Operation
        GetDevicesInPlacementResponse GetDevicesInPlacement(GetDevicesInPlacementRequest request);
        /// 
        /// Returns an object enumerating the devices in a placement.
        /// 
        /// Container for the necessary parameters to execute the GetDevicesInPlacement service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the GetDevicesInPlacement service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for GetDevicesInPlacement Operation
        Task GetDevicesInPlacementAsync(GetDevicesInPlacementRequest request, CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
        #region  ListPlacements
        /// 
        /// Lists the placement(s) of a project.
        /// 
        /// Container for the necessary parameters to execute the ListPlacements service method.
        /// 
        /// The response from the ListPlacements service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for ListPlacements Operation
        ListPlacementsResponse ListPlacements(ListPlacementsRequest request);
        /// 
        /// Lists the placement(s) of a project.
        /// 
        /// Container for the necessary parameters to execute the ListPlacements service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListPlacements service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for ListPlacements Operation
        Task ListPlacementsAsync(ListPlacementsRequest request, CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
        #region  ListProjects
        /// 
        /// Lists the AWS IoT 1-Click project(s) associated with your AWS account and region.
        /// 
        /// Container for the necessary parameters to execute the ListProjects service method.
        /// 
        /// The response from the ListProjects service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for ListProjects Operation
        ListProjectsResponse ListProjects(ListProjectsRequest request);
        /// 
        /// Lists the AWS IoT 1-Click project(s) associated with your AWS account and region.
        /// 
        /// Container for the necessary parameters to execute the ListProjects service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListProjects service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for ListProjects Operation
        Task ListProjectsAsync(ListProjectsRequest request, CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
        #region  ListTagsForResource
        /// 
        /// Lists the tags (metadata key/value pairs) which you have assigned to the resource.
        /// 
        /// Container for the necessary parameters to execute the ListTagsForResource service method.
        /// 
        /// The response from the ListTagsForResource service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for ListTagsForResource Operation
        ListTagsForResourceResponse ListTagsForResource(ListTagsForResourceRequest request);
        /// 
        /// Lists the tags (metadata key/value pairs) which you have assigned to the resource.
        /// 
        /// Container for the necessary parameters to execute the ListTagsForResource service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the ListTagsForResource service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for ListTagsForResource Operation
        Task ListTagsForResourceAsync(ListTagsForResourceRequest request, CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
        #region  TagResource
        /// 
        /// Creates or modifies tags for a resource. Tags are key/value pairs (metadata) that
        /// can be used to manage a resource. For more information, see AWS
        /// Tagging Strategies.
        /// 
        /// Container for the necessary parameters to execute the TagResource service method.
        /// 
        /// The response from the TagResource service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for TagResource Operation
        TagResourceResponse TagResource(TagResourceRequest request);
        /// 
        /// Creates or modifies tags for a resource. Tags are key/value pairs (metadata) that
        /// can be used to manage a resource. For more information, see AWS
        /// Tagging Strategies.
        /// 
        /// Container for the necessary parameters to execute the TagResource service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the TagResource service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for TagResource Operation
        Task TagResourceAsync(TagResourceRequest request, CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
        #region  UntagResource
        /// 
        /// Removes one or more tags (metadata key/value pairs) from a resource.
        /// 
        /// Container for the necessary parameters to execute the UntagResource service method.
        /// 
        /// The response from the UntagResource service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for UntagResource Operation
        UntagResourceResponse UntagResource(UntagResourceRequest request);
        /// 
        /// Removes one or more tags (metadata key/value pairs) from a resource.
        /// 
        /// Container for the necessary parameters to execute the UntagResource service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the UntagResource service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for UntagResource Operation
        Task UntagResourceAsync(UntagResourceRequest request, CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
        #region  UpdatePlacement
        /// 
        /// Updates a placement with the given attributes. To clear an attribute, pass an empty
        /// value (i.e., "").
        /// 
        /// Container for the necessary parameters to execute the UpdatePlacement service method.
        /// 
        /// The response from the UpdatePlacement service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for UpdatePlacement Operation
        UpdatePlacementResponse UpdatePlacement(UpdatePlacementRequest request);
        /// 
        /// Updates a placement with the given attributes. To clear an attribute, pass an empty
        /// value (i.e., "").
        /// 
        /// Container for the necessary parameters to execute the UpdatePlacement service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the UpdatePlacement service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for UpdatePlacement Operation
        Task UpdatePlacementAsync(UpdatePlacementRequest request, CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
        #region  UpdateProject
        /// 
        /// Updates a project associated with your AWS account and region. With the exception
        /// of device template names, you can pass just the values that need to be updated because
        /// the update request will change only the values that are provided. To clear a value,
        /// pass the empty string (i.e., "").
        /// 
        /// Container for the necessary parameters to execute the UpdateProject service method.
        /// 
        /// The response from the UpdateProject service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for UpdateProject Operation
        UpdateProjectResponse UpdateProject(UpdateProjectRequest request);
        /// 
        /// Updates a project associated with your AWS account and region. With the exception
        /// of device template names, you can pass just the values that need to be updated because
        /// the update request will change only the values that are provided. To clear a value,
        /// pass the empty string (i.e., "").
        /// 
        /// Container for the necessary parameters to execute the UpdateProject service method.
        /// 
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// 
        /// 
        /// The response from the UpdateProject service method, as returned by IoT1ClickProjects.
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// REST API Reference for UpdateProject Operation
        Task UpdateProjectAsync(UpdateProjectRequest request, CancellationToken cancellationToken = default(CancellationToken));
        #endregion
        
    }
}