C2A-05 Subscriptions
Post-purchase lifecycle: list a customer's subscriptions and run two-phase cancel and reactivate flows. Provisioning and renewal happen automatically — they don't have direct C2A endpoints, they are driven by Checkout + PSP webhooks.
Concepts
- Provider-agnostic — the same controller drives In-house, App Store, Play Store, PayPal, Third-party, and Postpaid subscriptions via
ISubscriptionProviderFactory. - Two-phase cancel —
cancel/requestresolves the cancellation context (allowed methods, possible retention offer, list of reasons).cancel/confirmfinalizes. Supports retention flows and grace periods. - Source flag — controller stamps
Source = C2Aon every request so analytics and audit trails distinguish C2A actions from portal (P2A) actions.
Base Route
/api/c2a/subscription
Standard C2A auth + headers.
Endpoints
| # | Method | Path | Purpose |
|---|---|---|---|
| C2A-05-01 | GET | /api/c2a/subscription/{customerUrn} | List Customer Subscriptions |
| C2A-05-02 | POST | /api/c2a/subscription/cancel/request | Request Cancel |
| C2A-05-03 | POST | /api/c2a/subscription/cancel/confirm | Confirm Cancel |
| C2A-05-04 | POST | /api/c2a/subscription/reactivate | Reactivate |
State Reference
EnSubscriptionState values observed in list:
| State | Meaning |
|---|---|
Trial | In trial period. |
Active | Paid and current. |
PastDue | Renewal failed; in dunning. |
Canceled | Cancellation finalized; endDate is the access-until date when cancelationMethod = EndOfPeriod. |
Reactivated | Was canceled, now reactivated within the same period. |
Expired | Period ended without renewal. |
Error Statuses
messageCode | Meaning |
|---|---|
SUCCESS | Operation completed. |
SUBSCRIPTION_NOT_FOUND | orderIdentifier unknown for this tenant. |
SUBSCRIPTION_NOT_CANCELABLE | State / channel does not allow cancellation right now. |
SUBSCRIPTION_NOT_REACTIVATABLE | Reactivation window passed or channel does not support it. |
Source
- Controller:
Azotte.Api.Gateway.Controllers.C2A.C2A_05_SubscriptionController - Service:
Azotte.Subscription.Services.ISubscriptionService - DTOs:
Azotte.Subscription.Dto/* - Providers:
Azotte.Subscription.Providers.*(InHouse, AppStore, PlayStore, PayPal, Thirdparty, Postpaid) - Postman:
documents/PostmanSamples/C2A API.postman_collection.json