Table of Contents

Class Subscription

Namespace
VpnHood.AppLib.Abstractions.Accounts
Assembly
VpnHood.AppLib.Abstractions.dll

The store subscription serving an account. Its very presence is the answer to "is this account subscribed" — the facts below are only meaningful together, so they live or go as one object rather than as eight independently-nullable fields on the account.

public class Subscription
Inheritance
Subscription
Inherited Members

Properties

BillingPeriod

The period PriceAmount buys, as an ISO-8601 duration ("P1M", "P1Y", …) — the same vocabulary the store uses for plan periods. Without it the UI cannot say what the price is per, and a yearly subscription reads as a monthly one.

public string? BillingPeriod { get; set; }

Property Value

string

CreatedTime

When the subscription began.

public DateTime? CreatedTime { get; set; }

Property Value

DateTime?

ExpirationTime

Gets or sets when the current period ends, or null.

public DateTime? ExpirationTime { get; set; }

Property Value

DateTime?

IsAutoRenew

Gets or sets a value indicating whether the subscription renews at the period's end, or null where that is not known.

public bool? IsAutoRenew { get; set; }

Property Value

bool?

Management

Where this subscription can be managed from here, and when it cannot, why. A URL never crosses to the UI: the store provider performs it, so no UI holds a store address. Composed by the account provider, which is the only place that knows both who billed the subscription and what this device can show — the portal never sends it.

public SubscriptionManagement Management { get; set; }

Property Value

SubscriptionManagement

PriceAmount

What the STORE charged for the current period — not a catalogue price.

public decimal? PriceAmount { get; set; }

Property Value

decimal?

PriceCurrency

Gets or sets the currency of PriceAmount, or null.

public string? PriceCurrency { get; set; }

Property Value

string

StoreId

The store that billed it ("googleplay", "appstore", "microsoft"). This is the BILLING store, which legitimately differs from the store this build ships to (bought on Android, now signed in on an iPhone), so it never answers "which app is this". An id, as the name says: the app decides on it, the UI never shows it.

public required string StoreId { get; set; }

Property Value

string