openapi: 3.0.3 info: title: '{{$appName}}' description: '' version: 1.0.0 servers: - url: '{{$appUrl}}' paths: /v3/auth: post: summary: 'Authentication Request' operationId: authenticationRequest description: "Authenticates the user with given credentials. If everything is okay, you'll get Success Response.\n\nThe request will fail with a response of Invalid Credentials." parameters: [] responses: 200: description: 'Invalid Credentials' content: application/json: schema: type: object example: auth: false active: false expired: false expiry_date: '' properties: auth: type: boolean example: false description: 'true when both username and password are valid.' active: type: boolean example: false description: 'true if the status of username account is not disabled.' expired: type: boolean example: false description: 'false when the expiry date of account is past.' expiry_date: type: string example: '' description: 'Expiry Date of Account in dd-mmm-yyyy format.' tags: - 'Client Apps v3' requestBody: required: true content: application/json: schema: type: object properties: username: type: string|null description: Username. example: testing password: type: string|null description: Password. example: testing accountId: type: string|null description: 'Account ID.' example: test-test deviceDetails: type: object description: 'Device Details.' example: [] properties: type: type: string description: 'Device Type.' example: Window|Mac|Android|iOS name: type: string description: 'Device Model with Name.' example: "Someone's iPhone" id: type: string description: 'Device ID.' example: '' required: - deviceDetails security: [] /v3/servers-list: get: summary: 'Server List Request' operationId: serverListRequest description: "Returns List of Servers.\n\nThe request will fail with a 402 error, and a response of Unauthorized." parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "{\n \"servers\": [\n {\n \"id\": 1,\n \"name\": \"Frankfurt - Germany\",\n \"ip\": \"0.0.0.0\",\n \"port\": 443,\n \"flag\": \"ic_list_country_de\",\n \"premium\": true,\n \"country\": \"Germany\",\n \"country_code\": \"de\"\n \"dns1\": \"8.8.8.8\",\n \"dns2\": \"8.8.8.8\",\n }\n ],\n \"dnsServers\": {\"dns1\": \"8.8.8.8\", \"dns2\": \"8.8.4.4\" },\n \"openvpn\": {\n \"certificate\": certificate,\n \"ports\": [{\n \"protocol\": \"tcp\",\n \"port\": 443\n }]\n },\n \"wireguard\": [ 51820 ]\n}" tags: - 'Client Apps v3' /v3/app/notification: get: summary: 'Retrieves the notifications from the AppNotification model and returns them as a JSON response.' operationId: retrievesTheNotificationsFromTheAppNotificationModelAndReturnsThemAsAJSONResponse description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthorized properties: message: type: string example: Unauthorized tags: - 'Client Apps v3' security: [] /v3/details: get: summary: 'User Details Request' operationId: userDetailsRequest description: "Get Details of Loggedin User\n\nThe request will fail with a 401 error if session is already revoked" parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "{\n \"expired\" : true,\n \"totalSessionsAllowed\": 5,\n \"loggedInSessions\": 0,\n \"activeSessions\": [{\n \"tokenId\": ,\n \"details\": {\n \"id\": \"\",\n \"name\": \"\",\n \"type\": \"\"\n },\n \"last_used_at\": \"2022-05-13T15:35:23.000000Z\",\n \"currentDevice\": true\n }]\n }" 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated tags: - 'Client Apps v3' /v3/signout: post: summary: 'Logout Request' operationId: logoutRequest description: "Revokes Current Logged-in Session\n\nThe request will fail with a 401 error if session is already revoked" parameters: [] responses: 200: description: 'Success: No Content' content: application/json: schema: type: object example: message: 'User logged out Successfully.' properties: message: type: string example: 'User logged out Successfully.' 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated tags: - 'Client Apps v3' '/v3/logout/{tokenId}': post: summary: 'Logout Device Request' operationId: logoutDeviceRequest description: 'Revokes Session based on ID' parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "{\n \"activeSessions\": [{\n \"tokenId\": ,\n \"details\": {\n \"id\": \"\",\n \"name\": \"\",\n \"type\": \"\"\n },\n \"last_used_at\": \"2022-05-13T15:35:23.000000Z\",\n \"currentDevice\": true\n }]\n }" 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated tags: - 'Client Apps v3' parameters: - in: path name: tokenId description: "ID of Device to be Logged out\n\nThe request will fail with a 401 error if session is already revoked" example: 1 required: true schema: type: integer /v3/logout-all: post: summary: 'Logout All Device Request' operationId: logoutAllDeviceRequest description: "Revokes All Sessions\n\nThe request will fail with a 401 error if session is already revoked" parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "{\n \"activeSessions\": [{\n \"tokenId\": ,\n \"details\": {\n \"id\": \"\",\n \"name\": \"\",\n \"type\": \"\"\n },\n \"last_used_at\": \"2022-05-13T15:35:23.000000Z\",\n \"currentDevice\": true\n }]\n }" 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated tags: - 'Client Apps v3' /v3/connect-to-vpn: post: summary: 'Wireguard Connection Request' operationId: wireguardConnectionRequest description: "Add Public Key to Wireguard Server.\n\nThe request will fail with a 401 error if session is already revoked" parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "[{\n 'ip': 0.0.0.0,\n 'country' => 'Germany',\n 'city' => Frankfurt,\n 'wg' => [{\n 'publicKey' => \"ijhasfd876089798uiohljkafsdd98s\",\n 'port' => 51820,\n 'allowedIps' => '0.0.0.0/0',\n }\n}]" 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated tags: - 'Client Apps v3' requestBody: required: true content: application/json: schema: type: object properties: country: type: string description: 'Must be at least 2 characters. Must not be greater than 50 characters.' example: grnxtrdhsfdnqyskjwxvlr city: type: string description: '' example: aliquam publicKey: type: string description: '' example: null required: - country /v3/delete: post: summary: 'Delete Request' operationId: deleteRequest description: "Delete Customer Account.\n\nThe request will fail with a 401 error if session is already revoked" parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "{\n 'message': 'Account Deleted Successfully'\n}" 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated tags: - 'Client Apps v3' /v3/notification/token: post: summary: 'Register Device for Notification Request' operationId: registerDeviceForNotificationRequest description: "Register Device for Firebase Notifications.\n\nThe request will fail with a 401 error if session is already revoked" parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "{\n 'message': 'Token Updated Successfully'\n}" 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated tags: - 'Client Apps v3' requestBody: required: true content: application/json: schema: type: object properties: token: type: string description: 'Must not be greater than 255 characters. Must be at least 0 characters.' example: yplndnlvurbiostyulspeduv required: - token /v3/update-password: post: summary: 'Update Password Request' operationId: updatePasswordRequest description: "Update Customer Password..\n\nThe request will fail with a 401 error if session is already revoked" parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "{\n 'message': 'Password updated successfully'\n}" 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated tags: - 'Client Apps v3' /v3/set-password: post: summary: 'Set Password Request' operationId: setPasswordRequest description: 'Set Password of Customer.' parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "{\n 'state': true,\n 'message': \"Password Updated Successfully\"\n}" 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated tags: - 'Client Apps v3' requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'Must be a valid email address.' example: lamont.dicki@example.net password: type: string description: 'Must be at least 6 characters.' example: 'h/A]F1`Pm' confirm_password: type: string description: 'The value and password must match. Must be at least 6 characters.' example: hephkintjlbpqouecicinrwnjrajbgnglycbdul required: - email - password - confirm_password security: [] /v3/attach-customer: post: summary: '' operationId: postV3AttachCustomer description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - 'Client Apps v3' security: [] /v3/verify-otp: post: summary: 'Verify OTP Request' operationId: verifyOTPRequest description: 'Verify OTP of Customer.' parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "{\n 'state': true,\n 'message': 'User Verified. Please proceed to set Password.'\n 'token': ''\n}" 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated tags: - 'Client Apps v3' requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'Must be a valid email address.' example: reilly.samara@example.org otp: type: string description: 'Must be at least 6 characters. Must not be greater than 6 characters.' example: tl required: - email - otp security: [] /v3/forget-password: post: summary: 'Reset Password Request' operationId: resetPasswordRequest description: 'Email Customer to reset Password.' parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "{\n 'state': true,\n 'message': 'A Verification Code has been sent to your email. Please check your Email.'\n}" 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated tags: - 'Client Apps v3' requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'Must be a valid email address.' example: xrobel@example.org required: - email security: [] /v3/reset-password: post: summary: 'Reset Password Request' operationId: resetPasswordRequest description: 'Email Customer to reset Password.' parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "{\n 'state': true,\n 'message': 'A Verification Code has been sent to your email. Please check your Email.'\n}" 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated tags: - 'Client Apps v3' requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'Must be a valid email address.' example: antonetta.satterfield@example.com required: - email security: [] /v3/plans: get: summary: 'IAP Plans Request' operationId: iAPPlansRequest description: 'Plans Identifier for Apps' parameters: - in: query name: platform description: '' example: android|ios required: false schema: type: string description: '' example: android|ios responses: 200: description: Success content: text/plain: schema: type: string example: "[{\n 'plans': [{\n 'identifier':'com.example.monthly',\n 'days': 30,\n 'save': 0\n }],\n 'subtitle': ''\n}]" tags: - 'Client Apps v3' security: [] /v3/restore-purchase: post: summary: 'Restore Purchase Request' operationId: restorePurchaseRequest description: "Restore Purchase of User on the basis of Account ID.\n\nThe request will fail with a 401 error if session is already revoked" parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: '' tags: - 'Client Apps v3' requestBody: required: false content: application/json: schema: type: object properties: UUID: type: string description: 'This field is required when purchaseToken is not present.' example: da1d21f6-d125-308f-b485-cddc811e5920 purchaseToken: type: string description: 'This field is required when UUID is not present.' example: rem security: [] /v3/country-list: get: summary: 'Get Country List' operationId: getCountryList description: '' parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "{\n 'country': [{\n 'code': 'de',\n \"name\": \"Germany\"\n }]\n}" tags: - 'Client Apps v3' security: [] '/v3/location/{ip}': get: summary: 'Location Request' operationId: locationRequest description: 'Get Location of Current IP or IP Provided' parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "[{\n 'code': '',\n 'country': '',\n 'city': '',\n 'latitude': '',\n 'longitude': '',\n 'ip': '',\n \"isp\": '',\n}]" 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated tags: - 'Client Apps v3' security: [] parameters: - in: path name: ip description: 'Optional parameter.' required: true schema: type: string examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: placeat /v3/tv/generate: get: summary: 'TV Login Request' operationId: tVLoginRequest description: 'Generate Code for TV Login to display on TV and then use it on website.' parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "{\n 'code': 'OXVA-78I9',\n 'token': ''\n}" tags: - 'Client Apps v3' security: [] /v3/tv/poll: post: summary: 'Poll Request for TV Login' operationId: pollRequestForTVLogin description: 'Poll every few seconds to check if User has Logged in on Website.' parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "{\n 'is_login': true,\n 'message': 'Logged in Successfully',\n 'state': true,\n 'response': ''\n}" tags: - 'Client Apps v3' requestBody: required: true content: application/json: schema: type: object properties: tvCode: type: string description: '' example: fuga required: - tvCode security: [] /v3/sso/firebase: post: summary: 'Login using Firebase Request' operationId: loginUsingFirebaseRequest description: 'Login User on the basis of Firebase ID Token' parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: '' tags: - 'Client Apps v3' requestBody: required: true content: application/json: schema: type: object properties: idToken: type: string description: '' example: aspernatur required: - idToken security: [] /v3/update-delay: post: summary: '' operationId: postV3UpdateDelay description: '' parameters: [] responses: 401: description: '' content: application/json: schema: type: object example: message: Unauthenticated. properties: message: type: string example: Unauthenticated. tags: - Endpoints security: [] /v3/auth/verify-otp: post: summary: '' operationId: postV3AuthVerifyOtp description: '' parameters: [] responses: 422: description: '' content: application/json: schema: type: object example: message: 'The email field is required.' errors: email: - 'The email field is required.' properties: message: type: string example: 'The email field is required.' errors: type: object properties: email: type: array example: - 'The email field is required.' items: type: string tags: - Endpoints security: [] /v3/auth/complete: post: summary: '' operationId: postV3AuthComplete description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: state: false errorCode: 429 message: 'Invalid Token.' properties: state: type: boolean example: false errorCode: type: integer example: 429 message: type: string example: 'Invalid Token.' tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: email: type: string description: 'Must be a valid email address.' example: jude.satterfield@example.org token: type: string description: '' example: magni required: - email - token security: [] /v3/auth/sso/firebase: post: summary: '' operationId: postV3AuthSsoFirebase description: '' parameters: [] responses: 400: description: '' content: application/json: schema: type: object example: error: 'Invalid token' properties: error: type: string example: 'Invalid token' tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: idToken: type: string description: '' example: voluptatem required: - idToken security: [] /v3/auth/social-login/google: post: summary: '' operationId: postV3AuthSocialLoginGoogle description: '' parameters: [] responses: 400: description: '' content: application/json: schema: type: object example: error: 'Invalid identity token' properties: error: type: string example: 'Invalid identity token' tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: idToken: type: string description: '' example: est UUID: type: string description: '' example: a78fa051-6d77-369e-8b27-1c5ae6a67038 attach: type: boolean description: '' example: true attachSubscription: type: boolean description: '' example: true required: - idToken security: [] /v3/auth/social-login/apple: post: summary: '' operationId: postV3AuthSocialLoginApple description: '' parameters: [] responses: 400: description: '' content: application/json: schema: type: object example: error: 'Invalid identity token' properties: error: type: string example: 'Invalid identity token' tags: - Endpoints requestBody: required: true content: application/json: schema: type: object properties: idToken: type: string description: '' example: eaque UUID: type: string description: '' example: 912e7155-1ddb-3a3c-b441-b143c3a9494c attach: type: boolean description: '' example: false attachSubscription: type: boolean description: '' example: false required: - idToken security: [] /v3/exclusion_services: get: summary: '' operationId: getV3Exclusion_services description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: categories: - id: SHOP name: Shopping services: - service_id: aliexpress service_name: Aliexpress icon_url: 'https://icons.adguardvpn.com/icon?domain=aliexpress.com' categories: - SHOP modified_time: '2021-09-14T10:23:00+0000' - service_id: amazon service_name: Amazon icon_url: 'https://icons.adguardvpn.com/icon?domain=amazon.com' categories: - SHOP modified_time: '2021-09-14T10:23:00+0000' properties: categories: type: array example: - id: SHOP name: Shopping items: type: object properties: id: type: string example: SHOP name: type: string example: Shopping services: type: array example: - service_id: aliexpress service_name: Aliexpress icon_url: 'https://icons.adguardvpn.com/icon?domain=aliexpress.com' categories: - SHOP modified_time: '2021-09-14T10:23:00+0000' - service_id: amazon service_name: Amazon icon_url: 'https://icons.adguardvpn.com/icon?domain=amazon.com' categories: - SHOP modified_time: '2021-09-14T10:23:00+0000' items: type: object properties: service_id: type: string example: aliexpress service_name: type: string example: Aliexpress icon_url: type: string example: 'https://icons.adguardvpn.com/icon?domain=aliexpress.com' categories: type: array example: - SHOP items: type: string modified_time: type: string example: '2021-09-14T10:23:00+0000' tags: - Endpoints security: [] /v3/exclusion_services/domains: get: summary: '' operationId: getV3Exclusion_servicesDomains description: '' parameters: [] responses: 200: description: '' content: application/json: schema: type: object example: services: - service_id: aliexpress domains: - aliexpress.com - aliexpress.ru - service_id: amazon domains: - a2z.com - amazon-corp.com - amazon.ca - amazon.co.jp - amazon.co.uk - amazon.com - amazon.com.au - amazon.com.mx - amazon.de - amazon.es - amazon.eu - amazon.fr - amazon.in - amazon.it - amazon.nl - amazon.sa - amazonbrowserapp.co.uk - amazonbrowserapp.es - amazoncognito.com - amazoncrl.com - amazonpay.com - amazonpay.in - amazontrust.com - associates-amazon.com - images-amazon.com - media-amazon.com - ssl-images-amazon.com properties: services: type: array example: - service_id: aliexpress domains: - aliexpress.com - aliexpress.ru - service_id: amazon domains: - a2z.com - amazon-corp.com - amazon.ca - amazon.co.jp - amazon.co.uk - amazon.com - amazon.com.au - amazon.com.mx - amazon.de - amazon.es - amazon.eu - amazon.fr - amazon.in - amazon.it - amazon.nl - amazon.sa - amazonbrowserapp.co.uk - amazonbrowserapp.es - amazoncognito.com - amazoncrl.com - amazonpay.com - amazonpay.in - amazontrust.com - associates-amazon.com - images-amazon.com - media-amazon.com - ssl-images-amazon.com items: type: object properties: service_id: type: string example: aliexpress domains: type: array example: - aliexpress.com - aliexpress.ru items: type: string tags: - Endpoints security: [] '/v3/customers/find/{type}/{value}': get: summary: 'Find Account Request' operationId: findAccountRequest description: "Get details of account by username, email\n\nThe request will fail with a 401 error if auth token is revoked" parameters: [] responses: 200: description: Success content: application/json: schema: type: object example: id: 1 is_active: true fta: false username: testing password: testing status: inactive expiry_text: '30 Day(s) left' expiry_date: null devices: 2 expiry_timestamp: null created_date: 'Jan 31, 1970 00:00:00 AM' properties: id: type: integer example: 1 is_active: type: boolean example: true fta: type: boolean example: false username: type: string example: testing password: type: string example: testing status: type: string example: inactive expiry_text: type: string example: '30 Day(s) left' expiry_date: type: string example: null devices: type: integer example: 2 expiry_timestamp: type: string example: null created_date: type: string example: 'Jan 31, 1970 00:00:00 AM' 401: description: Unauthorized content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated 404: description: 'Not Found' content: application/json: schema: type: object example: message: 'No Data Found for Query' properties: message: type: string example: 'No Data Found for Query' tags: - 'VPN Accounts v3' parameters: - in: path name: type description: 'Type of Search Column' example: username required: true schema: type: string - in: path name: value description: 'Value to be searched' example: testing required: true schema: type: string /v3/customers: post: summary: 'Create Account Request' operationId: createAccountRequest description: "Creates New VPN Account for VPN Connection.\nOne of duration or expiry_date parameters is necessary.\nif the duration is set expiry date of account will be set once account first time connects to vpn.\nor you can set expiry date directly.\n\nThe request will fail with a 401 error if auth token is revoked" parameters: [] responses: 200: description: Success content: application/json: schema: type: object example: state: success message: 'Account Created Successfully' data: id: 1 is_active: true fta: false username: testing password: testing status: inactive expiry_text: '30 Day(s) left' expiry_date: null devices: 2 expiry_timestamp: null created_date: 'Jan 31, 1970 00:00:00 AM' properties: state: type: string example: success message: type: string example: 'Account Created Successfully' data: type: object properties: id: type: integer example: 1 is_active: type: boolean example: true fta: type: boolean example: false username: type: string example: testing password: type: string example: testing status: type: string example: inactive expiry_text: type: string example: '30 Day(s) left' expiry_date: type: string example: null devices: type: integer example: 2 expiry_timestamp: type: string example: null created_date: type: string example: 'Jan 31, 1970 00:00:00 AM' 401: description: Unauthorized content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated 422: description: 'Unprocessable Entity' content: application/json: schema: type: object example: message: 'The given data was invalid.' errors: duration: - 'The duration field is required.' expiry_date: - 'The expiry date field is required.' username: - 'The username field is required.' password: - 'The password field is required.' properties: message: type: string example: 'The given data was invalid.' errors: type: object properties: duration: type: array example: - 'The duration field is required.' items: type: string expiry_date: type: array example: - 'The expiry date field is required.' items: type: string username: type: array example: - 'The username field is required.' items: type: string password: type: array example: - 'The password field is required.' items: type: string tags: - 'VPN Accounts v3' requestBody: required: true content: application/json: schema: type: object properties: duration: type: integer description: 'Duration of Account in Months between 1 and 36 (Max 3 yrs.)' example: 6 expiry_date: type: integer description: 'Expiry Date of Account in UNIX Timestamp.' example: 2 devices: type: integer description: 'optional Number of Devices associated with account.' example: 7 firstname: type: string description: 'Must not be greater than 20 characters.' example: ekhrgtgaglbjvunch lastname: type: string description: 'Must not be greater than 20 characters.' example: urlcztmsxretqqdf email: type: string description: 'optional Email associated with account.' example: barrows.danyka@example.net username: type: string description: Username. example: testing password: type: string description: Password. example: testing group: type: integer description: 'optional Id of Group.' example: 12 name: type: string description: 'optional Name associated with account.' example: quisquam required: - username - password '/v3/customers/{customer_id}': get: summary: 'Get Account Request' operationId: getAccountRequest description: "Get Details of Account\n\nThe request will fail with a 401 error if auth token is revoked" parameters: [] responses: 200: description: Success content: application/json: schema: type: object example: id: 1 is_active: true fta: false username: testing password: testing status: inactive expiry_text: '30 Day(s) left' expiry_date: null devices: 2 expiry_timestamp: null created_date: 'Jan 31, 1970 00:00:00 AM' properties: id: type: integer example: 1 is_active: type: boolean example: true fta: type: boolean example: false username: type: string example: testing password: type: string example: testing status: type: string example: inactive expiry_text: type: string example: '30 Day(s) left' expiry_date: type: string example: null devices: type: integer example: 2 expiry_timestamp: type: string example: null created_date: type: string example: 'Jan 31, 1970 00:00:00 AM' 401: description: Unauthorized content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated 404: description: 'Not Found' content: application/json: schema: type: object example: message: 'No Data Found for Query' properties: message: type: string example: 'No Data Found for Query' tags: - 'VPN Accounts v3' put: summary: 'Update Account Request' operationId: updateAccountRequest description: "Update Account Details\n\nThe request will fail with a 401 error if auth token is revoked" parameters: [] responses: 200: description: Error content: application/json: schema: type: object example: state: error message: 'Unexpected Error Occurred.' properties: state: type: string example: error message: type: string example: 'Unexpected Error Occurred.' 401: description: Unauthorized content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated 404: description: 'Not Found' content: application/json: schema: type: object example: message: 'No Data Found for Query' properties: message: type: string example: 'No Data Found for Query' tags: - 'VPN Accounts v3' requestBody: required: true content: application/json: schema: type: object properties: firstname: type: string description: 'Must not be greater than 20 characters.' example: jbrbgk lastname: type: string description: 'Must not be greater than 20 characters.' example: fhvsvvqwivu email: type: string description: 'optional Email associated with account.' example: chaag@example.net username: type: string description: '' example: null password: type: string description: Password. example: testing devices: type: integer description: 'optional Number of Devices associated with account.' example: 8 group: type: string description: '' example: null name: type: string description: 'optional Name associated with account.' example: quas required: - password delete: summary: 'Delete Request' operationId: deleteRequest description: "Delete VPN Account.\n\nThe request will fail with a 401 error if session is expired" parameters: [] responses: 200: description: Error content: application/json: schema: type: object example: state: error message: 'Unexpected Error Occurred.' properties: state: type: string example: error message: type: string example: 'Unexpected Error Occurred.' 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated 404: description: 'Not Found' content: application/json: schema: type: object example: message: 'No Data Found for Query' properties: message: type: string example: 'No Data Found for Query' tags: - 'VPN Accounts v3' parameters: - in: path name: customer_id description: 'The ID of the customer.' example: 1 required: true schema: type: integer '/v3/customers/{customer_id}/duration/add': put: summary: 'Add Duration Request' operationId: addDurationRequest description: "Adds Duration to Expiry Date of Account.\n\nThe request will fail with a 401 error if session is expired" parameters: [] responses: 200: description: Success content: text/plain: schema: type: string example: "{\n \"state\": \"success\",\n \"message\": \"Expiry Date updated Successfully.\",\n \"data\": {\n \"\"id\": 1,\n \"is_active\": true,\n \"fta\": false,\n \"username\": \"testing\",\n \"password\": \"testing\",\n \"status\": \"inactive\",\n \"expiry_text\": \"30 Day(s) left\",\n \"expiry_date\": null,\n \"devices\": 2,\n \"expiry_timestamp\": null,\n \"created_date\": \"Jan 31, 1970 00:00:00 AM\"\n }\n }" 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated 404: description: 'Not Found' content: application/json: schema: type: object example: message: 'No Data Found for Query' properties: message: type: string example: 'No Data Found for Query' tags: - 'VPN Accounts v3' requestBody: required: false content: application/json: schema: type: object properties: duration: type: required description: 'Number of Months to be added to Account.' example: praesentium parameters: - in: path name: customer_id description: 'The ID of the customer.' example: 1 required: true schema: type: integer '/v3/customers/{customer_id}/duration/remove': put: summary: 'Remove Duration Request' operationId: removeDurationRequest description: "Removes Duration From Account.\n\nThe request will fail with a 401 error if session is expired" parameters: [] responses: 200: description: Success content: application/json: schema: type: object example: state: success message: 'Expiry Date updated Successfully.' data: id: 1 is_active: true fta: false username: testing password: testing status: inactive expiry_text: '30 Day(s) left' expiry_date: null devices: 2 expiry_timestamp: null created_date: 'Jan 31, 1970 00:00:00 AM' properties: state: type: string example: success message: type: string example: 'Expiry Date updated Successfully.' data: type: object properties: id: type: integer example: 1 is_active: type: boolean example: true fta: type: boolean example: false username: type: string example: testing password: type: string example: testing status: type: string example: inactive expiry_text: type: string example: '30 Day(s) left' expiry_date: type: string example: null devices: type: integer example: 2 expiry_timestamp: type: string example: null created_date: type: string example: 'Jan 31, 1970 00:00:00 AM' 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated 404: description: 'Not Found' content: application/json: schema: type: object example: message: 'No Data Found for Query' properties: message: type: string example: 'No Data Found for Query' tags: - 'VPN Accounts v3' requestBody: required: false content: application/json: schema: type: object properties: duration: type: required description: 'Number of Months to be removed from Account.' example: eum parameters: - in: path name: customer_id description: 'The ID of the customer.' example: 1 required: true schema: type: integer '/v3/customers/{customer_id}/expiry': put: summary: 'Update Expiry Request' operationId: updateExpiryRequest description: "Updates Expiry of Account.\n\nThe request will fail with a 401 error if session is expired" parameters: [] responses: 200: description: Success content: application/json: schema: type: object example: state: success message: 'Expiry Date updated Successfully.' data: id: 1 is_active: true fta: false username: testing password: testing status: inactive expiry_text: '30 Day(s) left' expiry_date: null devices: 2 expiry_timestamp: null created_date: 'Jan 31, 1970 00:00:00 AM' properties: state: type: string example: success message: type: string example: 'Expiry Date updated Successfully.' data: type: object properties: id: type: integer example: 1 is_active: type: boolean example: true fta: type: boolean example: false username: type: string example: testing password: type: string example: testing status: type: string example: inactive expiry_text: type: string example: '30 Day(s) left' expiry_date: type: string example: null devices: type: integer example: 2 expiry_timestamp: type: string example: null created_date: type: string example: 'Jan 31, 1970 00:00:00 AM' 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated 404: description: 'Not Found' content: application/json: schema: type: object example: message: 'No Data Found for Query' properties: message: type: string example: 'No Data Found for Query' tags: - 'VPN Accounts v3' requestBody: required: true content: application/json: schema: type: object properties: timestamp: type: integer description: 'Unix Timestamp of new Expiry Date.' example: 18 required: - timestamp parameters: - in: path name: customer_id description: 'The ID of the customer.' example: 1 required: true schema: type: integer '/v3/customers/{customer}/{status}': put: summary: 'Update Status Request' operationId: updateStatusRequest description: "Update is_active parameter of Account.\n\nThe request will fail with a 401 error if session is expired" parameters: [] responses: 200: description: Error content: text/plain: schema: type: string example: "{\n \"state\": \"error\",\n \"message\": \"Unexpected Error Occurred.\",\n }" 401: description: 'Already Revoked' content: application/json: schema: type: object example: message: Unauthenticated properties: message: type: string example: Unauthenticated 404: description: 'Not Found' content: application/json: schema: type: object example: message: 'No Data Found for Query' properties: message: type: string example: 'No Data Found for Query' tags: - 'VPN Accounts v3' parameters: - in: path name: customer description: 'The customer.' example: nisi required: true schema: type: string - in: path name: status description: 'Optional parameter. New State of Account' required: true schema: type: string examples: omitted: summary: 'When the value is omitted' value: '' present: summary: 'When the value is present' value: true|false tags: - name: 'Client Apps v3' description: "\nAPI for Client Application v3" - name: Endpoints description: '' - name: 'VPN Accounts v3' description: "\nAPI for VPN Accounts Management\n"