using System.Collections.Generic;
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
using BinaryLane.Api.V2.Models;
using BinaryLane.Api.V2.Pagination;
namespace BinaryLane.Api.V2.Resources;
/// Reads information about the authenticated account.
public interface IAccountApi
{
/// Gets the current account.
Task GetAsync(CancellationToken cancellationToken = default);
/// Gets the untyped account response for forward compatibility.
Task GetRawAsync(CancellationToken cancellationToken = default);
}
/// Reads and waits for asynchronous account and server actions.
public interface IActionsApi
{
/// Gets an action by its global action ID.
Task GetAsync(long actionId, CancellationToken cancellationToken = default);
/// Lists global actions.
Task> ListAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
/// Streams all global actions.
IAsyncEnumerable ListAllAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
/// Supplies a requested user interaction for an action.
Task ProceedAsync(long actionId, ProceedRequest request, CancellationToken cancellationToken = default);
/// Polls an action until BinaryLane reports a terminal state.
Task WaitForCompletionAsync(
long actionId,
ActionWaitOptions? options = null,
CancellationToken cancellationToken = default);
}
/// Reads account billing and invoice information.
public interface IBillingApi
{
Task GetBalanceAsync(CancellationToken cancellationToken = default);
Task GetInvoiceAsync(long invoiceId, CancellationToken cancellationToken = default);
Task> ListInvoicesAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
Task> ListUnpaidPaymentFailedInvoicesAsync(CancellationToken cancellationToken = default);
}
/// Reads data-transfer usage data.
public interface IDataUsageApi
{
Task> ListCurrentAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
IAsyncEnumerable ListAllCurrentAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
Task GetCurrentAsync(long serverId, CancellationToken cancellationToken = default);
}
/// Manages DNS domains and DNS records.
public interface IDomainsApi
{
Task> GetNameserversAsync(CancellationToken cancellationToken = default);
Task RefreshNameserverCacheAsync(DomainRefreshRequest request, CancellationToken cancellationToken = default);
Task> ListAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
IAsyncEnumerable ListAllAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
Task CreateAsync(DomainRequest request, CancellationToken cancellationToken = default);
Task GetAsync(string domainName, CancellationToken cancellationToken = default);
Task DeleteAsync(string domainName, CancellationToken cancellationToken = default);
Task> ListRecordsAsync(string domainName, PageRequest? page = null, CancellationToken cancellationToken = default);
Task CreateRecordAsync(string domainName, DomainRecordRequest request, CancellationToken cancellationToken = default);
Task GetRecordAsync(string domainName, long recordId, CancellationToken cancellationToken = default);
Task UpdateRecordAsync(string domainName, long recordId, UpdateDomainRecordRequest request, CancellationToken cancellationToken = default);
Task DeleteRecordAsync(string domainName, long recordId, CancellationToken cancellationToken = default);
}
/// Reads and manages account images and backups represented as images.
public interface IImagesApi
{
Task> ListAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
IAsyncEnumerable ListAllAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
Task GetAsync(string imageIdOrSlug, CancellationToken cancellationToken = default);
Task UpdateAsync(long imageId, ImageRequest request, CancellationToken cancellationToken = default);
Task GetDownloadAsync(long imageId, CancellationToken cancellationToken = default);
}
/// Manages account SSH keys.
public interface ISshKeysApi
{
Task> ListAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
IAsyncEnumerable ListAllAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
Task GetAsync(long keyId, CancellationToken cancellationToken = default);
Task CreateAsync(SshKeyRequest request, CancellationToken cancellationToken = default);
Task UpdateAsync(long keyId, UpdateSshKeyRequest request, CancellationToken cancellationToken = default);
Task DeleteAsync(long keyId, CancellationToken cancellationToken = default);
}
/// Manages load balancers, their members, and forwarding rules.
public interface ILoadBalancersApi
{
Task> ListAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
IAsyncEnumerable ListAllAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
Task GetAsync(long loadBalancerId, CancellationToken cancellationToken = default);
Task CreateAsync(CreateLoadBalancerRequest request, CancellationToken cancellationToken = default);
Task UpdateAsync(long loadBalancerId, UpdateLoadBalancerRequest request, CancellationToken cancellationToken = default);
Task DeleteAsync(long loadBalancerId, CancellationToken cancellationToken = default);
Task> GetAvailabilityAsync(CancellationToken cancellationToken = default);
Task AddServersAsync(long loadBalancerId, ServerIdsRequest request, CancellationToken cancellationToken = default);
Task RemoveServersAsync(long loadBalancerId, ServerIdsRequest request, CancellationToken cancellationToken = default);
Task AddForwardingRulesAsync(long loadBalancerId, ForwardingRulesRequest request, CancellationToken cancellationToken = default);
Task RemoveForwardingRulesAsync(long loadBalancerId, ForwardingRulesRequest request, CancellationToken cancellationToken = default);
}
/// Lists BinaryLane regions.
public interface IRegionsApi
{
Task> ListAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
IAsyncEnumerable ListAllAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
}
/// Manages IPv6 reverse-name configuration.
public interface IReverseNamesApi
{
Task> ListIpv6Async(PageRequest? page = null, CancellationToken cancellationToken = default);
IAsyncEnumerable ListAllIpv6Async(PageRequest? page = null, CancellationToken cancellationToken = default);
Task UpdateIpv6Async(ReverseNameserversRequest request, CancellationToken cancellationToken = default);
}
/// Reads monitoring samples for servers.
public interface ISampleSetsApi
{
Task GetLatestAsync(long serverId, string? dataInterval = null, CancellationToken cancellationToken = default);
Task> ListAsync(long serverId, PageRequest? page = null, string? dataInterval = null, DateTimeOffset? start = null, DateTimeOffset? endAt = null, CancellationToken cancellationToken = default);
}
/// Manages BinaryLane servers and their server-scoped resources.
public interface IServersApi
{
Task GetAsync(long serverId, CancellationToken cancellationToken = default);
Task> ListAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
IAsyncEnumerable ListAllAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
Task CreateAsync(CreateServerRequest request, CancellationToken cancellationToken = default);
Task DeleteAsync(long serverId, string? reason = null, CancellationToken cancellationToken = default);
Task> ListActionsAsync(long serverId, PageRequest? page = null, CancellationToken cancellationToken = default);
Task GetActionAsync(long serverId, long actionId, CancellationToken cancellationToken = default);
Task SubmitActionAsync(long serverId, ServerAction request, CancellationToken cancellationToken = default);
Task> GetAdvancedFirewallRulesAsync(long serverId, CancellationToken cancellationToken = default);
Task GetAvailableAdvancedFeaturesAsync(long serverId, CancellationToken cancellationToken = default);
Task> ListBackupsAsync(long serverId, PageRequest? page = null, CancellationToken cancellationToken = default);
Task CreateBackupAsync(long serverId, UploadImageRequest request, CancellationToken cancellationToken = default);
Task> ListKernelsAsync(long serverId, PageRequest? page = null, CancellationToken cancellationToken = default);
Task> ListSnapshotsAsync(long serverId, PageRequest? page = null, CancellationToken cancellationToken = default);
Task> GetThresholdAlertsAsync(long serverId, CancellationToken cancellationToken = default);
Task> GetThresholdAlertServerIdsAsync(CancellationToken cancellationToken = default);
Task> ListSoftwareAsync(long serverId, PageRequest? page = null, CancellationToken cancellationToken = default);
Task GetUserDataAsync(long serverId, CancellationToken cancellationToken = default);
Task GetConsoleAsync(long serverId, CancellationToken cancellationToken = default);
}
/// Lists available server sizes.
public interface ISizesApi
{
Task> ListAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
IAsyncEnumerable ListAllAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
}
/// Lists available licensed software and operating-system software.
public interface ISoftwareApi
{
Task> ListAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
IAsyncEnumerable ListAllAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
Task GetAsync(long softwareId, CancellationToken cancellationToken = default);
Task> ListOperatingSystemAsync(string operatingSystemIdOrSlug, PageRequest? page = null, CancellationToken cancellationToken = default);
}
/// Manages private virtual networks and their members.
public interface IVpcsApi
{
Task> ListAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
IAsyncEnumerable ListAllAsync(PageRequest? page = null, CancellationToken cancellationToken = default);
Task GetAsync(long vpcId, CancellationToken cancellationToken = default);
Task CreateAsync(CreateVpcRequest request, CancellationToken cancellationToken = default);
Task ReplaceAsync(long vpcId, UpdateVpcRequest request, CancellationToken cancellationToken = default);
Task UpdateAsync(long vpcId, PatchVpcRequest request, CancellationToken cancellationToken = default);
Task DeleteAsync(long vpcId, CancellationToken cancellationToken = default);
Task> ListMembersAsync(long vpcId, PageRequest? page = null, CancellationToken cancellationToken = default);
}