Table of Contents

Class AppDescriptor

Namespace
VpnHood.AppLib.Api.App
Assembly
VpnHood.AppLib.Api.dll

Represents what the app is and offers on this device: its identity, its features and its links, which the UI reads once.

public class AppDescriptor
Inheritance
AppDescriptor
Inherited Members

Properties

AllowEndPointStrategy

Gets a value indicating whether the settings may choose how a server's addresses are ordered (EndPointStrategy).

public required bool AllowEndPointStrategy { get; init; }

Property Value

bool

AlwaysOnSupport

Gets how the app supports always-on VPN on this device.

public required AlwaysOnSupport AlwaysOnSupport { get; init; }

Property Value

AlwaysOnSupport

AppId

Gets the app's ID, as the head names it, which the client's ID is made from.

public required string AppId { get; init; }

Property Value

string

AppName

Gets the app's name.

public required string AppName { get; init; }

Property Value

string

AuthProviderIds

Gets the IDs of the sign-in methods the app offers (AuthProviders), as its account backend declares them; none where it has no account backend.

public required IReadOnlyList<string> AuthProviderIds { get; init; }

Property Value

IReadOnlyList<string>

Remarks

They are strings, not an enum, as a third party's provider declares its own; the UI's label for each is SIGN_IN_WITH_ and the ID in upper case.

ChannelProtocols

Gets the channel protocols the app's VPN can use on this device.

public required IReadOnlyList<ChannelProtocol> ChannelProtocols { get; init; }

Property Value

IReadOnlyList<ChannelProtocol>

ClientId

Gets the client's ID, made from the app's ID and the device's or the install's own.

public required string ClientId { get; init; }

Property Value

string

CompanyName

Gets the maker's name, for a document that names it ({companyName}) as AppName is {appName}.

public required string CompanyName { get; init; }

Property Value

string

CustomData

Gets the JSON the head hands the UI uninterpreted, as a product's own settings, or null.

public required JsonElement? CustomData { get; init; }

Property Value

JsonElement?

DebugCommands

Gets the debug commands the app knows.

public required IReadOnlyList<string> DebugCommands { get; init; }

Property Value

IReadOnlyList<string>

IsAccountSupported

Gets a value indicating whether the app has an account backend, with its sign-in.

public required bool IsAccountSupported { get; init; }

Property Value

bool

IsAdSupported

Gets or sets a value indicating whether the app shows ads.

public required bool IsAdSupported { get; set; }

Property Value

bool

IsAddAccessKeySupported

Gets a value indicating whether the person may add an access key.

public required bool IsAddAccessKeySupported { get; init; }

Property Value

bool

IsAnonymousTrackerSupported

Gets a value indicating whether this build collects anonymous data at all: usage events, and the crash reports that go with them where the tracker reports crashes.

public required bool IsAnonymousTrackerSupported { get; init; }

Property Value

bool

Remarks

It follows the tracker the app could make, so the UI drops the privacy consent in a build that collects nothing; the person's choice is AllowAnonymousTracker.

IsAutomaticUpdateSupported

Gets a value indicating whether the settings turn the automatic update on and off, as a desktop's own updater does (GetAutomaticUpdate(CancellationToken)); a store keeps its own setting.

public required bool IsAutomaticUpdateSupported { get; init; }

Property Value

bool

IsBillingSupported

Gets a value indicating whether the app has in-app purchasing.

public required bool IsBillingSupported { get; init; }

Property Value

bool

IsDebugMode

Gets a value indicating whether the app runs in its debug mode.

public required bool IsDebugMode { get; init; }

Property Value

bool

IsExcludeAppsSupported

Gets a value indicating whether the split tunneling by app can exclude apps on this device.

public required bool IsExcludeAppsSupported { get; init; }

Property Value

bool

IsIncludeAppsSupported

Gets a value indicating whether the split tunneling by app can include apps on this device.

public required bool IsIncludeAppsSupported { get; init; }

Property Value

bool

IsKillSwitchSupported

Gets a value indicating whether the app keeps a kill switch of its own, as a desktop's (KillSwitch).

public required bool IsKillSwitchSupported { get; init; }

Property Value

bool

Remarks

Android's is the system's setting, which its page opens (IsKillSwitchSettingsSupported).

IsLicenseAgreementRequired

Gets a value indicating whether the person must accept the license agreement first.

public required bool IsLicenseAgreementRequired { get; init; }

Property Value

bool

IsProxySupported

Gets a value indicating whether the app's VPN can reach its server through proxies.

public required bool IsProxySupported { get; init; }

Property Value

bool

IsQuicSupported

Gets a value indicating whether the app's VPN can use QUIC on this device.

public required bool IsQuicSupported { get; init; }

Property Value

bool

IsRemoteAccessSupported

Gets a value indicating whether the app has a listener a phone can pair with; without it, the remote access's calls throw, so the UI hides the pairing.

public required bool IsRemoteAccessSupported { get; init; }

Property Value

bool

IsRewardedAdSupported

Gets a value indicating whether the app has rewarded ads.

public required bool IsRewardedAdSupported { get; init; }

Property Value

bool

IsSplitCountrySupported

Gets a value indicating whether this build has the IP-location data a split by country needs; without it, a country mode fails the connect, so the UI hides it.

public required bool IsSplitCountrySupported { get; init; }

Property Value

bool

IsTv

Gets or sets a value indicating whether the device is a TV, which the UI is drawn for.

public required bool IsTv { get; set; }

Property Value

bool

IsUserReviewSupported

Gets a value indicating whether the app has a store review to ask for.

public required bool IsUserReviewSupported { get; init; }

Property Value

bool

KillSwitchOffScriptPath

Gets the path of the installer's script that lifts the kill switch's block with neither the service nor the app, which Linux's Kill Switch page prints as a command; null outside an install, and on Windows, whose page names the Start menu's entry.

public required string? KillSwitchOffScriptPath { get; init; }

Property Value

string

Gets the app's links; a null link is one the UI hides.

public required AppLinks Links { get; init; }

Property Value

AppLinks

LogoAssetPath

Gets the path of the logo in the UI's store.

public required string LogoAssetPath { get; init; }

Property Value

string

OsType

Gets the operating system the app runs on.

public required AppOsType OsType { get; init; }

Property Value

AppOsType

PackageTitle

Gets the name without spaces that the release files, a desktop executable and its service, and the VPN adapter are called by.

public required string PackageTitle { get; init; }

Property Value

string

Premium

Gets this build's premium tier, or null where the product has none.

public required AppPremiumOptions? Premium { get; init; }

Property Value

AppPremiumOptions

Remarks

null is the full app, not a locked one: every premium feature allowed, nothing sold, and no page that promotes or bills, whatever the server's client policy offers. The premium code and the purchase address exist only inside a tier.

PrivacyConsentAssetName

Gets the name of the privacy consent's document in the UI's store, which the UI completes per language.

public required string PrivacyConsentAssetName { get; init; }

Property Value

string

ShowPoweredBy

Gets a value indicating whether the UI shows that the app is powered by VpnHood.

public required bool ShowPoweredBy { get; init; }

Property Value

bool

UiTheme

Gets the theme's name, as blue or violet, which picks the UI's palette and its theme folder in the UI's store.

public required string UiTheme { get; init; }

Property Value

string

Version

Gets the app's version.

[JsonConverter(typeof(VersionConverter))]
public required Version Version { get; init; }

Property Value

Version