Table of Contents

Class SubAccountsClient

Namespace
Vonage.SubAccounts
Assembly
Vonage.dll
public class SubAccountsClient : ISubAccountsClient
Inheritance
SubAccountsClient
Implements
Inherited Members

Constructors

SubAccountsClient(VonageHttpClientConfiguration, string)

Creates a new Subaccounts API client.

public SubAccountsClient(VonageHttpClientConfiguration configuration, string apiKey)

Parameters

configuration VonageHttpClientConfiguration

The HTTP client configuration.

apiKey string

The primary account API key.

Methods

CreateSubAccountAsync(Result<CreateSubAccountRequest>)

Creates a subaccount under the primary account.

public Task<Result<Account>> CreateSubAccountAsync(Result<CreateSubAccountRequest> request)

Parameters

request Result<CreateSubAccountRequest>

The request containing the subaccount details. See CreateSubAccountRequest.

Returns

Task<Result<Account>>

A Result<T> containing the created Account with its API key and secret on success, or an error on failure.

Examples

var request = CreateSubAccountRequest.Build()
    .WithName("Department A")
    .DisableSharedAccountBalance()
    .Create();
var result = await client.SubAccountsClient.CreateSubAccountAsync(request);
See Also

GetBalanceTransfersAsync(Result<GetTransfersRequest>)

Retrieves a list of balance transfers that have taken place for the primary account within a specified time period.

public Task<Result<Transfer[]>> GetBalanceTransfersAsync(Result<GetTransfersRequest> request)

Parameters

request Result<GetTransfersRequest>

The request containing the time period filter. See GetTransfersRequest.

Returns

Task<Result<Transfer[]>>

A Result<T> containing an array of Transfer records on success, or an error on failure.

Examples

var request = GetTransfersRequest.Build()
    .WithStartDate(DateTimeOffset.UtcNow.AddDays(-30))
    .Create();
var result = await client.SubAccountsClient.GetBalanceTransfersAsync(request);
See Also

GetCreditTransfersAsync(Result<GetTransfersRequest>)

Retrieves a list of credit transfers that have taken place for the primary account within a specified time period.

public Task<Result<Transfer[]>> GetCreditTransfersAsync(Result<GetTransfersRequest> request)

Parameters

request Result<GetTransfersRequest>

The request containing the time period filter. See GetTransfersRequest.

Returns

Task<Result<Transfer[]>>

A Result<T> containing an array of Transfer records on success, or an error on failure.

Examples

var request = GetTransfersRequest.Build()
    .WithStartDate(DateTimeOffset.UtcNow.AddDays(-30))
    .Create();
var result = await client.SubAccountsClient.GetCreditTransfersAsync(request);
See Also

GetSubAccountAsync(Result<GetSubAccountRequest>)

Retrieves a specific subaccount by its API key.

public Task<Result<Account>> GetSubAccountAsync(Result<GetSubAccountRequest> request)

Parameters

request Result<GetSubAccountRequest>

The request containing the subaccount API key. See GetSubAccountRequest.

Returns

Task<Result<Account>>

A Result<T> containing the Account details on success, or an error on failure.

Examples

var request = GetSubAccountRequest.Parse("bbe6222f");
var result = await client.SubAccountsClient.GetSubAccountAsync(request);
See Also

GetSubAccountsAsync()

Retrieves the primary account and all its subaccounts.

public Task<Result<GetSubAccountsResponse>> GetSubAccountsAsync()

Returns

Task<Result<GetSubAccountsResponse>>

A Result<T> containing a GetSubAccountsResponse with the primary account and all subaccounts on success, or an error on failure.

Examples

var result = await client.SubAccountsClient.GetSubAccountsAsync();
result.IfSuccess(response =>
{
    Console.WriteLine($"Primary: {response.PrimaryAccount.Name}");
    foreach (var sub in response.SubAccounts)
        Console.WriteLine($"Sub: {sub.Name}");
});
See Also

TransferBalanceAsync(Result<TransferAmountRequest>)

Transfers balance between the primary account and one of its subaccounts.

public Task<Result<Transfer>> TransferBalanceAsync(Result<TransferAmountRequest> request)

Parameters

request Result<TransferAmountRequest>

The request containing transfer details. See TransferAmountRequest.

Returns

Task<Result<Transfer>>

A Result<T> containing the Transfer record on success, or an error on failure.

Examples

var request = TransferAmountRequest.Build()
    .WithFrom("7c9738e6")
    .WithTo("ad6dc56f")
    .WithAmount(123.45m)
    .Create();
var result = await client.SubAccountsClient.TransferBalanceAsync(request);

Remarks

The balance available for transfer equals the absolute value of (account_balance - credit_limit) of the source account.

See Also

TransferCreditAsync(Result<TransferAmountRequest>)

Transfers credit limit between the primary account and one of its subaccounts.

public Task<Result<Transfer>> TransferCreditAsync(Result<TransferAmountRequest> request)

Parameters

request Result<TransferAmountRequest>

The request containing transfer details. See TransferAmountRequest.

Returns

Task<Result<Transfer>>

A Result<T> containing the Transfer record on success, or an error on failure.

Examples

var request = TransferAmountRequest.Build()
    .WithFrom("7c9738e6")
    .WithTo("ad6dc56f")
    .WithAmount(100.00m)
    .WithReference("Monthly credit allocation")
    .Create();
var result = await client.SubAccountsClient.TransferCreditAsync(request);
See Also

TransferNumberAsync(Result<TransferNumberRequest>)

Transfers a phone number from one account to another within the primary account's hierarchy.

public Task<Result<TransferNumberResponse>> TransferNumberAsync(Result<TransferNumberRequest> request)

Parameters

request Result<TransferNumberRequest>

The request containing transfer details. See TransferNumberRequest.

Returns

Task<Result<TransferNumberResponse>>

A Result<T> containing the TransferNumberResponse on success, or an error on failure.

Examples

var request = TransferNumberRequest.Build()
    .WithFrom("7c9738e6")
    .WithTo("ad6dc56f")
    .WithNumber("447700900000")
    .WithCountry("GB")
    .Create();
var result = await client.SubAccountsClient.TransferNumberAsync(request);
See Also

UpdateSubAccountAsync(Result<UpdateSubAccountRequest>)

Updates the properties of an existing subaccount.

public Task<Result<Account>> UpdateSubAccountAsync(Result<UpdateSubAccountRequest> request)

Parameters

request Result<UpdateSubAccountRequest>

The request containing the properties to update. See UpdateSubAccountRequest.

Returns

Task<Result<Account>>

A Result<T> containing the updated Account on success, or an error on failure.

Examples

var request = UpdateSubAccountRequest.Build()
    .WithSubAccountKey("bbe6222f")
    .WithName("Department B")
    .SuspendAccount()
    .Create();
var result = await client.SubAccountsClient.UpdateSubAccountAsync(request);
See Also