VPN SDK & API to build VPN into your product

Add secure, high-speed VPN to your app without building network infrastructure or protocol stacks from scratch. KeepSolid provides the SDK, the global server backbone, and the security foundation — you keep your brand, your UX, and your roadmap.

Request SDK details
VPN SDK & API to build VPN into your product

WL API - white-label compatibility gateway Reference

https://apis.oem.vpnunlimited.com

The observable HTTP contract of the white-label gateway. This document describes the 33 compatibility paths exactly as docs/api-contract.md fixes them. It is published as a static asset and is never generated at runtime (AD-010). The gateway does not own the business payloads it forwards, so unknown auth, VPN and sales fields stay free-form rather than invented.

Authentication

Positive decimal integer; an existing companies_products.id. Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

Accounts & authentication

Confirm Send

POST/confirmSend

Flow `normal_command`. Forwarded to the configured `auth` API as action `confirmaccountmailsend`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X POST "https://apis.oem.vpnunlimited.com/confirmSend" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

Gdpr Delete Wl

POST/gdpr/delete

Flow `normal_command`. Forwarded to the configured `auth` API as action `gdpr_delete_wl`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X POST "https://apis.oem.vpnunlimited.com/gdpr/delete" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

Gdpr Delete

POST/gdprDelete

Flow `normal_command`. Forwarded to the configured `auth` API as action `gdpr_delete`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X POST "https://apis.oem.vpnunlimited.com/gdprDelete" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

Gdpr Delete New

GET/gdprDeleteNew

Flow `public_bridge`. Forwarded to the configured `auth` API as action `gdpr_delete_wl_new`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

curl -X GET "https://apis.oem.vpnunlimited.com/gdprDeleteNew"

Gdpr Export

POST/gdprExport

Flow `normal_command`. Forwarded to the configured `auth` API as action `gdpr_export`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X POST "https://apis.oem.vpnunlimited.com/gdprExport" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

Login

POST/login

Flow `normal_command`. Forwarded to the configured `auth` API as action `login`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X POST "https://apis.oem.vpnunlimited.com/login" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

Login V2

POST/loginV2

Flow `normal_command`. Forwarded to the configured `auth` API as action `login_v2`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X POST "https://apis.oem.vpnunlimited.com/loginV2" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

Logout

POST/logout

Flow `normal_command`. Forwarded to the configured `auth` API as action `logout`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X POST "https://apis.oem.vpnunlimited.com/logout" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

Recovery Password

POST/recoveryPassword

Flow `normal_command`. Forwarded to the configured `auth` API as action `recoveryaccountpassword`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X POST "https://apis.oem.vpnunlimited.com/recoveryPassword" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

Recovery Password Send

POST/recoveryPasswordSend

Flow `normal_command`. Forwarded to the configured `auth` API as action `recoveryaccountpasswordmailsend`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X POST "https://apis.oem.vpnunlimited.com/recoveryPasswordSend" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

Registration

POST/registration

Flow `normal_command`. Forwarded to the configured `auth` API as action `register`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X POST "https://apis.oem.vpnunlimited.com/registration" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

Registration V2

POST/registrationV2

Flow `normal_command`. Forwarded to the configured `auth` API as action `register_v2`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X POST "https://apis.oem.vpnunlimited.com/registrationV2" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

Session

GET/session

Flow `normal_query`. Forwarded to the configured `auth` API as action `checksession`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X GET "https://apis.oem.vpnunlimited.com/session" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>"

User Info

GET/user

Flow `normal_query`. Forwarded to the configured `auth` API as action `userinfo`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X GET "https://apis.oem.vpnunlimited.com/user" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>"

User Accounts

GET/user/accounts

Flow `normal_query`. Forwarded to the configured `auth` API as action `useraccounts`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X GET "https://apis.oem.vpnunlimited.com/user/accounts" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>"

User Change Name

PUT/user/changeName

Flow `normal_command`. Forwarded to the configured `auth` API as action `changeuserflname`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X PUT "https://apis.oem.vpnunlimited.com/user/changeName" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

User Change Password

PUT/user/changePassword

Flow `normal_command`. Forwarded to the configured `auth` API as action `changeaccountpassword`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X PUT "https://apis.oem.vpnunlimited.com/user/changePassword" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

User Change Subscription

PUT/user/changeSubscription

Flow `normal_command`. Forwarded to the configured `auth` API as action `changeusersubscription`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X PUT "https://apis.oem.vpnunlimited.com/user/changeSubscription" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

User Device Delete

DELETE/user/device

Flow `normal_command`. Forwarded to the configured `auth` API as action `userdeletedevice`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X DELETE "https://apis.oem.vpnunlimited.com/user/device" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>"

User Devices

GET/user/devices

Flow `normal_query`. Forwarded to the configured `auth` API as action `userdevicelist`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X GET "https://apis.oem.vpnunlimited.com/user/devices" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>"

VPN configuration

Account Status

GET/accountStatus

Flow `normal_query`. Forwarded to the configured `vpn` API as action `account_status_v2`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X GET "https://apis.oem.vpnunlimited.com/accountStatus" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>"

Config

GET/config

Flow `normal_query`. Forwarded to the configured `vpn` API as action `config_info`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X GET "https://apis.oem.vpnunlimited.com/config" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>"

Config Ovpn

GET/config/ovpn

Flow `private_bridge`. Forwarded to the configured `vpn` API as action `get_ovpn_config_by_user_pb`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X GET "https://apis.oem.vpnunlimited.com/config/ovpn" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>"

Config Wg

GET/config_wg

Flow `normal_query`. Forwarded to the configured `vpn` API as action `wireguard_client_config`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X GET "https://apis.oem.vpnunlimited.com/config_wg" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>"

Regions

GET/regions

Flow `normal_query`. Forwarded to the configured `vpn` API as action `vpn_regions`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X GET "https://apis.oem.vpnunlimited.com/regions" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>"

Purchases & subscriptions

Purchase Buy

POST/purchase/buy

Flow `normal_command`. Forwarded to the configured `sales` API as action `wl_buy`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X POST "https://apis.oem.vpnunlimited.com/purchase/buy" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

Purchase Create

POST/purchase/create

Flow `normal_command`. Forwarded to the configured `sales` API as action `wl_create_purchase`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X POST "https://apis.oem.vpnunlimited.com/purchase/create" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

Purchase Locale

POST/purchase/locale

Flow `normal_command`. Forwarded to the configured `sales` API as action `wl_create_locale`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X POST "https://apis.oem.vpnunlimited.com/purchase/locale" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

Purchase Locale Update

PUT/purchase/locale/update

Flow `normal_command`. Forwarded to the configured `sales` API as action `wl_update_locale`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X PUT "https://apis.oem.vpnunlimited.com/purchase/locale/update" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

Purchase Refund

PUT/purchase/refund

Flow `normal_command`. Forwarded to the configured `sales` API as action `wl_refund_purchase`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X PUT "https://apis.oem.vpnunlimited.com/purchase/refund" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

Purchase Update

PUT/purchase/update

Flow `normal_command`. Forwarded to the configured `sales` API as action `wl_update_purchase`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X PUT "https://apis.oem.vpnunlimited.com/purchase/update" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

Subscription Cancel

PUT/subscription/cancel

Flow `normal_command`. Forwarded to the configured `sales` API as action `wl_cancel_subscription`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X PUT "https://apis.oem.vpnunlimited.com/subscription/cancel" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>" \
  -H "Content-Type: application/json" \
  -d '{}'

User Purchases

GET/user/purchases

Flow `normal_query`. Forwarded to the configured `sales` API as action `wl_user_purchases`. The downstream business payload is not modelled: auth, VPN and sales own those fields and no approved document defines them, so bodies stay free-form rather than invented.

Parameters

X-Keepsolid-Applicationid stringRequired
Positive decimal integer; an existing companies_products.id.
X-Keepsolid-Authorization stringRequired
Lowercase 40-character hex HMAC-SHA1. GET and DELETE sign the raw request target; POST and PUT sign the raw body.

D1: the downstream body byte-for-byte, whatever status the downstream returned.

curl -X GET "https://apis.oem.vpnunlimited.com/user/purchases" \
  -H "X-Keepsolid-Applicationid: <x-keepsolid-applicationid>" \
  -H "X-Keepsolid-Authorization: <x-keepsolid-authorization>"