/*
 * 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 arc-zonal-shift-2022-10-30.normal.json service model.
 */
using System;
using System.Collections.Generic;
using Amazon.Runtime;
using Amazon.ARCZonalShift.Model;
namespace Amazon.ARCZonalShift
{
    /// 
    /// Interface for accessing ARCZonalShift
    ///
    /// This is the API Reference Guide for the zonal shift feature of Amazon Route 53 Application
    /// Recovery Controller. This guide is for developers who need detailed information about
    /// zonal shift API actions, data types, and errors.
    /// 
    ///  
    /// 
    /// Zonal shift is in preview release for Amazon Route 53 Application Recovery Controller
    /// and is subject to change.
    /// 
    ///  
    /// 
    /// Zonal shift in Route 53 ARC enables you to move traffic for a load balancer resource
    /// away from an Availability Zone. Starting a zonal shift helps your application recover
    /// immediately, for example, from a developer's bad code deployment or from an AWS infrastructure
    /// failure in a single Availability Zone, reducing the impact and time lost from an issue
    /// in one zone. 
    /// 
    ///  
    /// 
    /// Supported AWS resources are automatically registered with Route 53 ARC. Resources
    /// that are registered for zonal shifts in Route 53 ARC are managed resources in Route
    /// 53 ARC. You can start a zonal shift for any managed resource in your account in a
    /// Region. At this time, you can only start a zonal shift for Network Load Balancers
    /// and Application Load Balancers with cross-zone load balancing turned off.
    /// 
    ///  
    /// 
    /// Zonal shifts are temporary. You must specify an expiration when you start a zonal
    /// shift, of up to three days initially. If you want to still keep traffic away from
    /// an Availability Zone, you can update the zonal shift and set a new expiration. You
    /// can also cancel a zonal shift, before it expires, for example, if you're ready to
    /// restore traffic to the Availability Zone.
    /// 
    ///  
    /// 
    /// For more information about using zonal shift, see the Amazon
    /// Route 53 Application Recovery Controller Developer Guide.
    /// 
    /// 
    public partial interface IAmazonARCZonalShift : IAmazonService, IDisposable
    {
#if BCL45 || AWS_ASYNC_ENUMERABLES_API
        /// 
        /// Paginators for the service
        /// 
        IARCZonalShiftPaginatorFactory Paginators { get; }
#endif
        
        #region  CancelZonalShift
        /// 
        /// Cancel a zonal shift in Amazon Route 53 Application Recovery Controller that you've
        /// started for a resource in your AWS account in an AWS Region.
        /// 
        /// Container for the necessary parameters to execute the CancelZonalShift service method.
        /// 
        /// The response from the CancelZonalShift service method, as returned by ARCZonalShift.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The request could not be processed because of conflict in the current state of the
        /// resource.
        /// 
        /// 
        /// There was an internal server error.
        /// 
        /// 
        /// The input requested a resource that was not found.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for CancelZonalShift Operation
        CancelZonalShiftResponse CancelZonalShift(CancelZonalShiftRequest request);
        /// 
        /// Initiates the asynchronous execution of the CancelZonalShift operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the CancelZonalShift operation on AmazonARCZonalShiftClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndCancelZonalShift
        ///         operation.
        /// REST API Reference for CancelZonalShift Operation
        IAsyncResult BeginCancelZonalShift(CancelZonalShiftRequest request, AsyncCallback callback, object state);
        /// 
        /// Finishes the asynchronous execution of the  CancelZonalShift operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginCancelZonalShift.
        /// 
        /// Returns a  CancelZonalShiftResult from ARCZonalShift.
        /// REST API Reference for CancelZonalShift Operation
        CancelZonalShiftResponse EndCancelZonalShift(IAsyncResult asyncResult);
        #endregion
        
        #region  GetManagedResource
        /// 
        /// Get information about a resource that's been registered for zonal shifts with Amazon
        /// Route 53 Application Recovery Controller in this AWS Region. Resources that are registered
        /// for zonal shifts are managed resources in Route 53 ARC.
        /// 
        ///  
        /// 
        /// At this time, you can only start a zonal shift for Network Load Balancers and Application
        /// Load Balancers with cross-zone load balancing turned off.
        /// 
        /// 
        /// Container for the necessary parameters to execute the GetManagedResource service method.
        /// 
        /// The response from the GetManagedResource service method, as returned by ARCZonalShift.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// There was an internal server error.
        /// 
        /// 
        /// The input requested a resource that was not found.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for GetManagedResource Operation
        GetManagedResourceResponse GetManagedResource(GetManagedResourceRequest request);
        /// 
        /// Initiates the asynchronous execution of the GetManagedResource operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the GetManagedResource operation on AmazonARCZonalShiftClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndGetManagedResource
        ///         operation.
        /// REST API Reference for GetManagedResource Operation
        IAsyncResult BeginGetManagedResource(GetManagedResourceRequest request, AsyncCallback callback, object state);
        /// 
        /// Finishes the asynchronous execution of the  GetManagedResource operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginGetManagedResource.
        /// 
        /// Returns a  GetManagedResourceResult from ARCZonalShift.
        /// REST API Reference for GetManagedResource Operation
        GetManagedResourceResponse EndGetManagedResource(IAsyncResult asyncResult);
        #endregion
        
        #region  ListManagedResources
        /// 
        /// Lists all the resources in your AWS account in this AWS Region that are managed for
        /// zonal shifts in Amazon Route 53 Application Recovery Controller, and information about
        /// them. The information includes their Amazon Resource Names (ARNs), the Availability
        /// Zones the resources are deployed in, and the resource name.
        /// 
        /// Container for the necessary parameters to execute the ListManagedResources service method.
        /// 
        /// The response from the ListManagedResources service method, as returned by ARCZonalShift.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// There was an internal server error.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for ListManagedResources Operation
        ListManagedResourcesResponse ListManagedResources(ListManagedResourcesRequest request);
        /// 
        /// Initiates the asynchronous execution of the ListManagedResources operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListManagedResources operation on AmazonARCZonalShiftClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndListManagedResources
        ///         operation.
        /// REST API Reference for ListManagedResources Operation
        IAsyncResult BeginListManagedResources(ListManagedResourcesRequest request, AsyncCallback callback, object state);
        /// 
        /// Finishes the asynchronous execution of the  ListManagedResources operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListManagedResources.
        /// 
        /// Returns a  ListManagedResourcesResult from ARCZonalShift.
        /// REST API Reference for ListManagedResources Operation
        ListManagedResourcesResponse EndListManagedResources(IAsyncResult asyncResult);
        #endregion
        
        #region  ListZonalShifts
        /// 
        /// Lists all the active zonal shifts in Amazon Route 53 Application Recovery Controller
        /// in your AWS account in this AWS Region.
        /// 
        /// Container for the necessary parameters to execute the ListZonalShifts service method.
        /// 
        /// The response from the ListZonalShifts service method, as returned by ARCZonalShift.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// There was an internal server error.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for ListZonalShifts Operation
        ListZonalShiftsResponse ListZonalShifts(ListZonalShiftsRequest request);
        /// 
        /// Initiates the asynchronous execution of the ListZonalShifts operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the ListZonalShifts operation on AmazonARCZonalShiftClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndListZonalShifts
        ///         operation.
        /// REST API Reference for ListZonalShifts Operation
        IAsyncResult BeginListZonalShifts(ListZonalShiftsRequest request, AsyncCallback callback, object state);
        /// 
        /// Finishes the asynchronous execution of the  ListZonalShifts operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginListZonalShifts.
        /// 
        /// Returns a  ListZonalShiftsResult from ARCZonalShift.
        /// REST API Reference for ListZonalShifts Operation
        ListZonalShiftsResponse EndListZonalShifts(IAsyncResult asyncResult);
        #endregion
        
        #region  StartZonalShift
        /// 
        /// You start a zonal shift to temporarily move load balancer traffic away from an Availability
        /// Zone in a AWS Region, to help your application recover immediately, for example, from
        /// a developer's bad code deployment or from an AWS infrastructure failure in a single
        /// Availability Zone. You can start a zonal shift in Route 53 ARC only for managed resources
        /// in your account in an AWS Region. Resources are automatically registered with Route
        /// 53 ARC by AWS services.
        /// 
        ///  
        /// 
        /// At this time, you can only start a zonal shift for Network Load Balancers and Application
        /// Load Balancers with cross-zone load balancing turned off.
        /// 
        ///  
        /// 
        /// When you start a zonal shift, traffic for the resource is no longer routed to the
        /// Availability Zone. The zonal shift is created immediately in Route 53 ARC. However,
        /// it can take a short time, typically up to a few minutes, for existing, in-progress
        /// connections in the Availability Zone to complete.
        /// 
        ///  
        /// 
        /// For more information, see Zonal
        /// shift in the Amazon Route 53 Application Recovery Controller Developer Guide.
        /// 
        /// 
        /// Container for the necessary parameters to execute the StartZonalShift service method.
        /// 
        /// The response from the StartZonalShift service method, as returned by ARCZonalShift.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The request could not be processed because of conflict in the current state of the
        /// resource.
        /// 
        /// 
        /// There was an internal server error.
        /// 
        /// 
        /// The input requested a resource that was not found.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for StartZonalShift Operation
        StartZonalShiftResponse StartZonalShift(StartZonalShiftRequest request);
        /// 
        /// Initiates the asynchronous execution of the StartZonalShift operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the StartZonalShift operation on AmazonARCZonalShiftClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndStartZonalShift
        ///         operation.
        /// REST API Reference for StartZonalShift Operation
        IAsyncResult BeginStartZonalShift(StartZonalShiftRequest request, AsyncCallback callback, object state);
        /// 
        /// Finishes the asynchronous execution of the  StartZonalShift operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginStartZonalShift.
        /// 
        /// Returns a  StartZonalShiftResult from ARCZonalShift.
        /// REST API Reference for StartZonalShift Operation
        StartZonalShiftResponse EndStartZonalShift(IAsyncResult asyncResult);
        #endregion
        
        #region  UpdateZonalShift
        /// 
        /// Update an active zonal shift in Amazon Route 53 Application Recovery Controller in
        /// your AWS account. You can update a zonal shift to set a new expiration, or edit or
        /// replace the comment for the zonal shift.
        /// 
        /// Container for the necessary parameters to execute the UpdateZonalShift service method.
        /// 
        /// The response from the UpdateZonalShift service method, as returned by ARCZonalShift.
        /// 
        /// You do not have sufficient access to perform this action.
        /// 
        /// 
        /// The request could not be processed because of conflict in the current state of the
        /// resource.
        /// 
        /// 
        /// There was an internal server error.
        /// 
        /// 
        /// The input requested a resource that was not found.
        /// 
        /// 
        /// The request was denied due to request throttling.
        /// 
        /// 
        /// The input fails to satisfy the constraints specified by an AWS service.
        /// 
        /// REST API Reference for UpdateZonalShift Operation
        UpdateZonalShiftResponse UpdateZonalShift(UpdateZonalShiftRequest request);
        /// 
        /// Initiates the asynchronous execution of the UpdateZonalShift operation.
        /// 
        /// 
        /// Container for the necessary parameters to execute the UpdateZonalShift operation on AmazonARCZonalShiftClient.
        /// An AsyncCallback delegate that is invoked when the operation completes.
        /// A user-defined state object that is passed to the callback procedure. Retrieve this object from within the callback
        ///          procedure using the AsyncState property.
        /// 
        /// An IAsyncResult that can be used to poll or wait for results, or both; this value is also needed when invoking EndUpdateZonalShift
        ///         operation.
        /// REST API Reference for UpdateZonalShift Operation
        IAsyncResult BeginUpdateZonalShift(UpdateZonalShiftRequest request, AsyncCallback callback, object state);
        /// 
        /// Finishes the asynchronous execution of the  UpdateZonalShift operation.
        /// 
        /// 
        /// The IAsyncResult returned by the call to BeginUpdateZonalShift.
        /// 
        /// Returns a  UpdateZonalShiftResult from ARCZonalShift.
        /// REST API Reference for UpdateZonalShift Operation
        UpdateZonalShiftResponse EndUpdateZonalShift(IAsyncResult asyncResult);
        #endregion
        
    }
}