Interface ISubscriptionsApi
- Namespace
- Cloudflare.NET.Subscriptions
- Assembly
- Cloudflare.NET.dll
Provides access to Cloudflare Subscriptions API operations.
This interface provides unified access to subscription management across account, user, and zone scopes. Subscriptions manage billing plans and add-ons for Cloudflare services.
public interface ISubscriptionsApi
Examples
// List account subscriptions
var subscriptions = await cf.Subscriptions.ListAccountSubscriptionsAsync(accountId);
foreach (var sub in subscriptions)
{
Console.WriteLine($"{sub.RatePlan?.PublicName}: {sub.State}");
}
// Create a new subscription
var newSub = await cf.Subscriptions.CreateAccountSubscriptionAsync(accountId,
new CreateAccountSubscriptionRequest(
RatePlan: new RatePlanReference("rate_plan_id"),
Frequency: SubscriptionFrequency.Monthly));
Remarks
Billing Permissions Required: Subscriptions API requires tokens with Billing Read and/or Billing Write permissions.
Cost Warning: Creating or updating subscriptions may incur charges. Use test/sandbox accounts for development.
Externally Managed Subscriptions: Some subscriptions are managed outside of Cloudflare (e.g., through partners) and cannot be modified via API.
Methods
CreateAccountSubscriptionAsync(string, CreateAccountSubscriptionRequest, CancellationToken)
Creates a new subscription for an account.
Warning: Creating subscriptions may incur billing charges. Requires Billing Write permission.
Task<Subscription> CreateAccountSubscriptionAsync(string accountId, CreateAccountSubscriptionRequest request, CancellationToken cancellationToken = default)
Parameters
accountIdstringThe account identifier.
requestCreateAccountSubscriptionRequestThe subscription creation parameters.
cancellationTokenCancellationTokenA cancellation token.
Returns
- Task<Subscription>
The created subscription.
Examples
var request = new CreateAccountSubscriptionRequest(
RatePlan: new RatePlanReference("enterprise_plan_id"),
Frequency: SubscriptionFrequency.Yearly);
var subscription = await cf.Subscriptions.CreateAccountSubscriptionAsync(accountId, request);
Console.WriteLine($"Created: {subscription.Id}");
Remarks
Preview: This operation has limited test coverage.
Exceptions
- ArgumentException
Thrown when
accountIdis null or whitespace.- ArgumentNullException
Thrown when
requestis null.- HttpRequestException
Thrown when the API request fails (403 if no billing permission).
- CloudflareApiException
Thrown when the rate plan is invalid or subscription cannot be created.
CreateZoneSubscriptionAsync(string, CreateZoneSubscriptionRequest, CancellationToken)
Creates a zone subscription (upgrades the zone plan).
Use this to upgrade a zone from Free to a paid plan (Pro, Business, Enterprise).
Warning: Creating subscriptions will incur billing charges for paid plans.
Task<Subscription> CreateZoneSubscriptionAsync(string zoneId, CreateZoneSubscriptionRequest request, CancellationToken cancellationToken = default)
Parameters
zoneIdstringThe zone identifier.
requestCreateZoneSubscriptionRequestThe subscription creation parameters.
cancellationTokenCancellationTokenA cancellation token.
Returns
- Task<Subscription>
The created subscription.
Examples
// Upgrade to Pro plan
var subscription = await cf.Subscriptions.CreateZoneSubscriptionAsync(zoneId,
new CreateZoneSubscriptionRequest(
RatePlan: new RatePlanReference("pro"),
Frequency: SubscriptionFrequency.Monthly));
Remarks
Preview: This operation has limited test coverage.
Exceptions
- ArgumentException
Thrown when
zoneIdis null or whitespace.- ArgumentNullException
Thrown when
requestis null.- HttpRequestException
Thrown when the API request fails (404 if zone not found, 403 if no billing permission).
- CloudflareApiException
Thrown when the rate plan is invalid or subscription cannot be created.
DeleteAccountSubscriptionAsync(string, string, CancellationToken)
Deletes an account subscription.
Warning: Deleting a subscription will cancel the associated plan. This action may be irreversible.
Note: Externally managed subscriptions cannot be deleted via API.
Task DeleteAccountSubscriptionAsync(string accountId, string subscriptionId, CancellationToken cancellationToken = default)
Parameters
accountIdstringThe account identifier.
subscriptionIdstringThe subscription identifier to delete.
cancellationTokenCancellationTokenA cancellation token.
Returns
Examples
await cf.Subscriptions.DeleteAccountSubscriptionAsync(accountId, subscriptionId);
Console.WriteLine("Subscription cancelled");
Remarks
Preview: This operation has limited test coverage.
Exceptions
- ArgumentException
Thrown when
accountIdorsubscriptionIdis null or whitespace.- HttpRequestException
Thrown when the API request fails (404 if not found, 403 if no permission).
- CloudflareApiException
Thrown when the subscription is externally managed or deletion fails.
DeleteUserSubscriptionAsync(string, CancellationToken)
Deletes a user subscription.
Warning: Deleting a subscription will cancel the associated plan. This action may be irreversible.
Note: Externally managed subscriptions cannot be deleted via API.
Task<DeleteUserSubscriptionResult> DeleteUserSubscriptionAsync(string subscriptionId, CancellationToken cancellationToken = default)
Parameters
subscriptionIdstringThe subscription identifier to delete.
cancellationTokenCancellationTokenA cancellation token.
Returns
- Task<DeleteUserSubscriptionResult>
Result containing the deleted subscription ID.
Examples
var result = await cf.Subscriptions.DeleteUserSubscriptionAsync(subscriptionId);
Console.WriteLine($"Deleted subscription: {result.SubscriptionId}");
Remarks
Preview: This operation has limited test coverage.
Exceptions
- ArgumentException
Thrown when
subscriptionIdis null or whitespace.- HttpRequestException
Thrown when the API request fails (404 if not found, 403 if no permission).
- CloudflareApiException
Thrown when the subscription is externally managed or deletion fails.
GetZoneSubscriptionAsync(string, CancellationToken)
Gets the subscription details for a zone.
Returns the current subscription including the rate plan, state, and billing details. Zones always have a subscription (at minimum, a Free plan).
Task<Subscription> GetZoneSubscriptionAsync(string zoneId, CancellationToken cancellationToken = default)
Parameters
zoneIdstringThe zone identifier.
cancellationTokenCancellationTokenA cancellation token.
Returns
- Task<Subscription>
The zone subscription details.
Examples
var subscription = await cf.Subscriptions.GetZoneSubscriptionAsync(zoneId);
Console.WriteLine($"Current plan: {subscription.RatePlan?.PublicName}");
Console.WriteLine($"State: {subscription.State}");
Exceptions
- ArgumentException
Thrown when
zoneIdis null or whitespace.- HttpRequestException
Thrown when the API request fails (404 if zone not found, 403 if no billing permission).
ListAccountSubscriptionsAsync(string, CancellationToken)
Lists all subscriptions for an account.
Returns all active and inactive subscriptions associated with the account. Requires Billing Read permission.
Task<IReadOnlyList<Subscription>> ListAccountSubscriptionsAsync(string accountId, CancellationToken cancellationToken = default)
Parameters
accountIdstringThe account identifier.
cancellationTokenCancellationTokenA cancellation token.
Returns
- Task<IReadOnlyList<Subscription>>
All subscriptions for the account.
Examples
var subscriptions = await cf.Subscriptions.ListAccountSubscriptionsAsync(accountId);
foreach (var sub in subscriptions)
{
Console.WriteLine($"{sub.RatePlan?.PublicName}: {sub.Price} {sub.Currency}");
Console.WriteLine($" State: {sub.State}, Frequency: {sub.Frequency}");
}
Exceptions
- ArgumentException
Thrown when
accountIdis null or whitespace.- HttpRequestException
Thrown when the API request fails (403 if no billing permission).
ListAvailableRatePlansAsync(string, CancellationToken)
Lists all rate plans available for a zone.
Returns the plans the zone can subscribe to, including pricing information. Use this to discover valid rate plan IDs before creating or updating subscriptions.
Task<IReadOnlyList<ZoneRatePlan>> ListAvailableRatePlansAsync(string zoneId, CancellationToken cancellationToken = default)
Parameters
zoneIdstringThe zone identifier.
cancellationTokenCancellationTokenA cancellation token.
Returns
- Task<IReadOnlyList<ZoneRatePlan>>
Available rate plans for the zone.
Examples
var plans = await cf.Subscriptions.ListAvailableRatePlansAsync(zoneId);
foreach (var plan in plans)
{
Console.WriteLine($"{plan.Name}: {plan.Currency} {plan.Frequency}");
}
Exceptions
- ArgumentException
Thrown when
zoneIdis null or whitespace.- HttpRequestException
Thrown when the API request fails (404 if zone not found).
ListUserSubscriptionsAsync(CancellationToken)
Lists all subscriptions for the authenticated user.
Returns all active and inactive subscriptions owned by the user. Requires Billing Read permission.
Task<IReadOnlyList<Subscription>> ListUserSubscriptionsAsync(CancellationToken cancellationToken = default)
Parameters
cancellationTokenCancellationTokenA cancellation token.
Returns
- Task<IReadOnlyList<Subscription>>
All subscriptions for the authenticated user.
Examples
var subscriptions = await cf.Subscriptions.ListUserSubscriptionsAsync();
foreach (var sub in subscriptions)
{
Console.WriteLine($"{sub.RatePlan?.PublicName}: {sub.State}");
}
Exceptions
- HttpRequestException
Thrown when the API request fails (403 if no billing permission).
UpdateAccountSubscriptionAsync(string, string, UpdateAccountSubscriptionRequest, CancellationToken)
Updates an existing account subscription.
Warning: Updating subscriptions may affect billing. Requires Billing Write permission.
Note: Externally managed subscriptions cannot be updated via API.
Task<Subscription> UpdateAccountSubscriptionAsync(string accountId, string subscriptionId, UpdateAccountSubscriptionRequest request, CancellationToken cancellationToken = default)
Parameters
accountIdstringThe account identifier.
subscriptionIdstringThe subscription identifier to update.
requestUpdateAccountSubscriptionRequestThe update parameters.
cancellationTokenCancellationTokenA cancellation token.
Returns
- Task<Subscription>
The updated subscription.
Examples
// Change to yearly billing
var request = new UpdateAccountSubscriptionRequest(
Frequency: SubscriptionFrequency.Yearly);
var updated = await cf.Subscriptions.UpdateAccountSubscriptionAsync(
accountId, subscriptionId, request);
Remarks
Preview: This operation has limited test coverage.
Exceptions
- ArgumentException
Thrown when
accountIdorsubscriptionIdis null or whitespace.- ArgumentNullException
Thrown when
requestis null.- HttpRequestException
Thrown when the API request fails (404 if not found, 403 if no permission).
- CloudflareApiException
Thrown when the subscription is externally managed or update fails.
UpdateUserSubscriptionAsync(string, UpdateUserSubscriptionRequest, CancellationToken)
Updates an existing user subscription.
Warning: Updating subscriptions may affect billing. Requires Billing Write permission.
Note: Externally managed subscriptions cannot be updated via API.
Task<Subscription> UpdateUserSubscriptionAsync(string subscriptionId, UpdateUserSubscriptionRequest request, CancellationToken cancellationToken = default)
Parameters
subscriptionIdstringThe subscription identifier to update.
requestUpdateUserSubscriptionRequestThe update parameters.
cancellationTokenCancellationTokenA cancellation token.
Returns
- Task<Subscription>
The updated subscription.
Examples
// Change to yearly billing
var request = new UpdateUserSubscriptionRequest(
Frequency: SubscriptionFrequency.Yearly);
var updated = await cf.Subscriptions.UpdateUserSubscriptionAsync(subscriptionId, request);
Remarks
Preview: This operation has limited test coverage.
Exceptions
- ArgumentException
Thrown when
subscriptionIdis null or whitespace.- ArgumentNullException
Thrown when
requestis null.- HttpRequestException
Thrown when the API request fails (404 if not found, 403 if no permission).
- CloudflareApiException
Thrown when the subscription is externally managed or update fails.
UpdateZoneSubscriptionAsync(string, UpdateZoneSubscriptionRequest, CancellationToken)
Updates a zone subscription.
Use this to change the plan, billing frequency, or component values. Can be used to upgrade, downgrade, or modify an existing subscription.
Warning: Updating subscriptions may affect billing.
Task<Subscription> UpdateZoneSubscriptionAsync(string zoneId, UpdateZoneSubscriptionRequest request, CancellationToken cancellationToken = default)
Parameters
zoneIdstringThe zone identifier.
requestUpdateZoneSubscriptionRequestThe update parameters.
cancellationTokenCancellationTokenA cancellation token.
Returns
- Task<Subscription>
The updated subscription.
Examples
// Downgrade to Pro from Business
var subscription = await cf.Subscriptions.UpdateZoneSubscriptionAsync(zoneId,
new UpdateZoneSubscriptionRequest(
RatePlan: new RatePlanReference("pro")));
Remarks
Preview: This operation has limited test coverage.
Exceptions
- ArgumentException
Thrown when
zoneIdis null or whitespace.- ArgumentNullException
Thrown when
requestis null.- HttpRequestException
Thrown when the API request fails (404 if zone not found, 403 if no billing permission).
- CloudflareApiException
Thrown when the rate plan is invalid or update fails.