/*
 * Copyright 2018-2023 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.
 */
package com.amazonaws.services.iotfleethub;
import javax.annotation.Generated;
import com.amazonaws.*;
import com.amazonaws.regions.*;
import com.amazonaws.services.iotfleethub.model.*;
/**
 * Interface for accessing AWS IoT Fleet Hub.
 * 
 * Note: Do not directly implement this interface, new methods are added to it regularly. Extend from
 * {@link com.amazonaws.services.iotfleethub.AbstractAWSIoTFleetHub} instead.
 * 
 * 
 * 
 * With Fleet Hub for AWS IoT Device Management you can build stand-alone web applications for monitoring the health of
 * your device fleets.
 * 
 * 
 * 
 * Fleet Hub for AWS IoT Device Management is in public preview and is subject to change.
 * 
 * 
 */
@Generated("com.amazonaws:aws-java-sdk-code-generator")
public interface AWSIoTFleetHub {
    /**
     * The region metadata service name for computing region endpoints. You can use this value to retrieve metadata
     * (such as supported regions) of the service.
     *
     * @see RegionUtils#getRegionsForService(String)
     */
    String ENDPOINT_PREFIX = "api.fleethub.iot";
    /**
     * 
     * Creates a Fleet Hub for AWS IoT Device Management web application.
     * 
     * 
     * 
     * Fleet Hub for AWS IoT Device Management is in public preview and is subject to change.
     * 
     * 
     * 
     * @param createApplicationRequest
     * @return Result of the CreateApplication operation returned by the service.
     * @throws InvalidRequestException
     *         The request is not valid.
     * @throws InternalFailureException
     *         An unexpected error has occurred.
     * @throws ThrottlingException
     *         The rate exceeds the limit.
     * @throws LimitExceededException
     *         A limit has been exceeded.
     * @sample AWSIoTFleetHub.CreateApplication
     * @see AWS
     *      API Documentation
     */
    CreateApplicationResult createApplication(CreateApplicationRequest createApplicationRequest);
    /**
     * 
     * Deletes a Fleet Hub for AWS IoT Device Management web application.
     * 
     * 
     * 
     * Fleet Hub for AWS IoT Device Management is in public preview and is subject to change.
     * 
     * 
     * 
     * @param deleteApplicationRequest
     * @return Result of the DeleteApplication operation returned by the service.
     * @throws InvalidRequestException
     *         The request is not valid.
     * @throws ResourceNotFoundException
     *         The specified resource does not exist.
     * @throws InternalFailureException
     *         An unexpected error has occurred.
     * @throws ThrottlingException
     *         The rate exceeds the limit.
     * @sample AWSIoTFleetHub.DeleteApplication
     * @see AWS
     *      API Documentation
     */
    DeleteApplicationResult deleteApplication(DeleteApplicationRequest deleteApplicationRequest);
    /**
     * 
     * Gets information about a Fleet Hub for AWS IoT Device Management web application.
     * 
     * 
     * 
     * Fleet Hub for AWS IoT Device Management is in public preview and is subject to change.
     * 
     * 
     * 
     * @param describeApplicationRequest
     * @return Result of the DescribeApplication operation returned by the service.
     * @throws InvalidRequestException
     *         The request is not valid.
     * @throws ResourceNotFoundException
     *         The specified resource does not exist.
     * @throws InternalFailureException
     *         An unexpected error has occurred.
     * @throws ThrottlingException
     *         The rate exceeds the limit.
     * @sample AWSIoTFleetHub.DescribeApplication
     * @see AWS API Documentation
     */
    DescribeApplicationResult describeApplication(DescribeApplicationRequest describeApplicationRequest);
    /**
     * 
     * Gets a list of Fleet Hub for AWS IoT Device Management web applications for the current account.
     * 
     * 
     * 
     * Fleet Hub for AWS IoT Device Management is in public preview and is subject to change.
     * 
     * 
     * 
     * @param listApplicationsRequest
     * @return Result of the ListApplications operation returned by the service.
     * @throws InvalidRequestException
     *         The request is not valid.
     * @throws InternalFailureException
     *         An unexpected error has occurred.
     * @throws ThrottlingException
     *         The rate exceeds the limit.
     * @sample AWSIoTFleetHub.ListApplications
     * @see AWS
     *      API Documentation
     */
    ListApplicationsResult listApplications(ListApplicationsRequest listApplicationsRequest);
    /**
     * 
     * Lists the tags for the specified resource.
     * 
     * 
     * 
     * Fleet Hub for AWS IoT Device Management is in public preview and is subject to change.
     * 
     * 
     * 
     * @param listTagsForResourceRequest
     * @return Result of the ListTagsForResource operation returned by the service.
     * @throws InternalFailureException
     *         An unexpected error has occurred.
     * @throws InvalidRequestException
     *         The request is not valid.
     * @throws ResourceNotFoundException
     *         The specified resource does not exist.
     * @sample AWSIoTFleetHub.ListTagsForResource
     * @see AWS API Documentation
     */
    ListTagsForResourceResult listTagsForResource(ListTagsForResourceRequest listTagsForResourceRequest);
    /**
     * 
     * Adds to or modifies the tags of the specified resource. Tags are metadata which can be used to manage a resource.
     * 
     * 
     * 
     * Fleet Hub for AWS IoT Device Management is in public preview and is subject to change.
     * 
     * 
     * 
     * @param tagResourceRequest
     * @return Result of the TagResource operation returned by the service.
     * @throws InternalFailureException
     *         An unexpected error has occurred.
     * @throws InvalidRequestException
     *         The request is not valid.
     * @throws ResourceNotFoundException
     *         The specified resource does not exist.
     * @sample AWSIoTFleetHub.TagResource
     * @see AWS API
     *      Documentation
     */
    TagResourceResult tagResource(TagResourceRequest tagResourceRequest);
    /**
     * 
     * Removes the specified tags (metadata) from the resource.
     * 
     * 
     * 
     * Fleet Hub for AWS IoT Device Management is in public preview and is subject to change.
     * 
     * 
     * 
     * @param untagResourceRequest
     * @return Result of the UntagResource operation returned by the service.
     * @throws InternalFailureException
     *         An unexpected error has occurred.
     * @throws InvalidRequestException
     *         The request is not valid.
     * @throws ResourceNotFoundException
     *         The specified resource does not exist.
     * @sample AWSIoTFleetHub.UntagResource
     * @see AWS API
     *      Documentation
     */
    UntagResourceResult untagResource(UntagResourceRequest untagResourceRequest);
    /**
     * 
     * Updates information about a Fleet Hub for a AWS IoT Device Management web application.
     * 
     * 
     * 
     * Fleet Hub for AWS IoT Device Management is in public preview and is subject to change.
     * 
     * 
     * 
     * @param updateApplicationRequest
     * @return Result of the UpdateApplication operation returned by the service.
     * @throws InvalidRequestException
     *         The request is not valid.
     * @throws ResourceNotFoundException
     *         The specified resource does not exist.
     * @throws InternalFailureException
     *         An unexpected error has occurred.
     * @throws ConflictException
     *         The request conflicts with the current state of the resource.
     * @throws ThrottlingException
     *         The rate exceeds the limit.
     * @sample AWSIoTFleetHub.UpdateApplication
     * @see AWS
     *      API Documentation
     */
    UpdateApplicationResult updateApplication(UpdateApplicationRequest updateApplicationRequest);
    /**
     * Shuts down this client object, releasing any resources that might be held open. This is an optional method, and
     * callers are not expected to call it, but can if they want to explicitly release any open resources. Once a client
     * has been shutdown, it should not be used to make any more requests.
     */
    void shutdown();
    /**
     * Returns additional metadata for a previously executed successful request, typically used for debugging issues
     * where a service isn't acting as expected. This data isn't considered part of the result data returned by an
     * operation, so it's available through this separate, diagnostic interface.
     * 
     * Response metadata is only cached for a limited period of time, so if you need to access this extra diagnostic
     * information for an executed request, you should use this method to retrieve it as soon as possible after
     * executing a request.
     *
     * @param request
     *        The originally executed request.
     *
     * @return The response metadata for the specified request, or null if none is available.
     */
    ResponseMetadata getCachedResponseMetadata(AmazonWebServiceRequest request);
}