Introduction
Our HTTP REST API allows you to manage vital details of your account and services in client portal. JSON is used for all API returns
Use left menu to browse trough available methods, use right menu to check required parameters, data to post and code samples in various languages.
Swagger Doc: You can download or display the JSON to generate documentation in Swagger.
Authentication
JSON Web Token Authentication
curl 'https://my.balvps.com/api/login' \
-d username="username"\
-d password="password"
# grab authentication token from the response and pass it in Authorization header
curl 'https://my.balvps.com/api/details' \
-H "Authorization: Bearer $token"
$resp = $client->post('login', [
'form_params' => [
'username' => 'username',
'password' => 'password'
]
]);
$token = $resp->json()['token'];
$resp = $client->get('details', [
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
echo $resp->getBody();
payload = username
resp = requests.post('https://my.balvps.com/api/login', data=payload)
headers = {
'Authorization': 'Bearer ' + req.json().token
}
resp = requests.get('https://my.balvps.com/api/details', headers=headers)
print(resp)
Make sure to replace
usernameandpasswordwith your client area details.
To authenticate, you need to send a JSON Web Token (JWT) in the authorization header of the HTTP request.
To obtain the authorization token you need to submit a request with your username and password
to POST https://my.balvps.com/api/login API method
All API calls that require authentication expect HTTP header in the form of
Authorization: Bearer <token>.
For example:
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc...
Basic Authentication
# pass the correct header with each request (-u option)
curl 'https://my.balvps.com/api/details' \
-u "username:password"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'auth' => ['username', 'password']
]);
$resp = $client->get('details');
# python requests module handles basic authentication if provided with auth parameter
payload = username
req = requests.get('https://my.balvps.com/api/details', auth=('username', 'password'))
print(req.json())
Make sure to replace
usernameandpasswordwith your client area details.
This authentication method requires that you send your client area username (email address) and password with each request.
API calls that require authentication expect a header in the form of
Authorization: Basic <credentials>, where credentials is the Base64 encoding
of username and password joined by a single colon :.
For example:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
You can find more info on this authentication method here: Basic HTTP Authentication
Clientarea
Login
Generate new authorization token
POST_DATA="{
\"username\": \"user@example.com\",
\"password\": \"secret\"
}"
curl -X POST "https://my.balvps.com/api/login" \
-H "Content-Type: application/json" \
-d "${POST_DATA}"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
]);
$options = [
'json' => [
"username" => "user@example.com",
"password" => "secret"
]
]
$resp = $client->post('login', $options);
echo $resp->getBody();
payload = {
'username': "user@example.com",
'password': "secret"
}
req = requests.post('https://my.balvps.com/api/login', json=payload)
print(req.json())
Example Response:
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRw(...)5lZ9T79ft9uwOkqRRmIBbtR51_w",
"refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIzMD(...)ChwIAb3zvxBu6kvULa2AwAt9U-I"
}
HTTP Request
POST /login
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| username | string |
Your acount email address |
| password | string |
Account password |
Logout
Invalidate authorization token
curl -X POST "https://my.balvps.com/api/logout" \
-H "Authorization: Bearer $token"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$resp = $client->post('logout');
echo $resp->getBody();
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.post('https://my.balvps.com/api/logout', headers=headers)
print(req.json())
Example Response:
{
"status": true
}
HTTP Request
POST /logout
Refresh Token
Generate new authorization token using refresh token
POST_DATA="{
\"refresh_token\": \"refresh_tokenValue\"
}"
curl -X POST "https://my.balvps.com/api/token" \
-H "Content-Type: application/json" \
-d "${POST_DATA}"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
]);
$options = [
'json' => [
"refresh_token" => "refresh_tokenValue"
]
]
$resp = $client->post('token', $options);
echo $resp->getBody();
payload = {
'refresh_token': "refresh_tokenValue"
}
req = requests.post('https://my.balvps.com/api/token', json=payload)
print(req.json())
Example Response:
{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHR(...)vY2xlYiHGvauCWZD9B0VwXgHEzXDllqY",
"refresh": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJBQ(...)Rmivc_u3YA_kgDqOPtUuGNXOzueXYtZw"
}
HTTP Request
POST /token
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| refresh_token | string |
Refresh token previously obtained from |
Revoke Token
Invalidate authorization and refresh token. Pass refresh token or call this method with valid access token
POST_DATA="{
\"refresh_token\": \"refresh_tokenValue\"
}"
curl -X POST "https://my.balvps.com/api/revoke" \
-H "Content-Type: application/json" \
-d "${POST_DATA}"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
]);
$options = [
'json' => [
"refresh_token" => "refresh_tokenValue"
]
]
$resp = $client->post('revoke', $options);
echo $resp->getBody();
payload = {
'refresh_token': "refresh_tokenValue"
}
req = requests.post('https://my.balvps.com/api/revoke', json=payload)
print(req.json())
Example Response:
{
"status": true
}
HTTP Request
POST /revoke
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| refresh_token | string |
Sign up
Create new account
POST_DATA="{
\"email\": \"emailValue\",
\"password\": \"passwordValue\",
\"firstname\": \"firstnameValue\",
\"lastname\": \"lastnameValue\",
\"companyname\": \"companynameValue\",
\"address1\": \"address1Value\",
\"address2\": \"address2Value\",
\"city\": \"cityValue\",
\"state\": \"stateValue\",
\"postcode\": \"postcodeValue\",
\"country\": \"countryValue\",
\"phonenumber\": \"phonenumberValue\",
\"type\": \"typeValue\",
\"vatnumber\": \"vatnumberValue\",
\"mobilephone\": \"mobilephoneValue\",
\"currency\": \"currencyValue\"
}"
curl -X POST "https://my.balvps.com/api/signup" \
-H "Content-Type: application/json" \
-d "${POST_DATA}"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
]);
$options = [
'json' => [
"email" => "emailValue",
"password" => "passwordValue",
"firstname" => "firstnameValue",
"lastname" => "lastnameValue",
"companyname" => "companynameValue",
"address1" => "address1Value",
"address2" => "address2Value",
"city" => "cityValue",
"state" => "stateValue",
"postcode" => "postcodeValue",
"country" => "countryValue",
"phonenumber" => "phonenumberValue",
"type" => "typeValue",
"vatnumber" => "vatnumberValue",
"mobilephone" => "mobilephoneValue",
"currency" => "currencyValue"
]
]
$resp = $client->post('signup', $options);
echo $resp->getBody();
payload = {
'email': "emailValue",
'password': "passwordValue",
'firstname': "firstnameValue",
'lastname': "lastnameValue",
'companyname': "companynameValue",
'address1': "address1Value",
'address2': "address2Value",
'city': "cityValue",
'state': "stateValue",
'postcode': "postcodeValue",
'country': "countryValue",
'phonenumber': "phonenumberValue",
'type': "typeValue",
'vatnumber': "vatnumberValue",
'mobilephone': "mobilephoneValue",
'currency': "currencyValue"
}
req = requests.post('https://my.balvps.com/api/signup', json=payload)
print(req.json())
Example Response:
{
"info": [
"client_registered"
]
}
HTTP Request
POST /signup
Query Parameters
| Parameter | Type | Description |
|---|---|---|
string |
Email Address Required |
|
| password | string |
Password Required |
| firstname | string |
First Name
Value pattern: |
| lastname | string |
Last Name
Value pattern: |
| companyname | string |
Organization Required for organization account |
| address1 | string |
Address 1 Required |
| address2 | string |
Address 2 |
| city | string |
City Required |
| state | string |
State Required |
| postcode | string |
Post code Required |
| country | string |
Country Required |
| phonenumber | string |
Phone Required |
| type | string |
Account Type
Available values:
|
| vatnumber | string |
VAT number |
| mobilephone | string |
Mobile phone number - To receive SMS notifications about your services with us please provide your mobile phone number, starting with country code prefix, ie. +1 |
| currency | string |
Currency
Available values:
|
Password Reset
Request password reset email for account
POST_DATA="{
\"email\": \"emailValue\"
}"
curl -X POST "https://my.balvps.com/api/passwordreset" \
-H "Content-Type: application/json" \
-d "${POST_DATA}"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
]);
$options = [
'json' => [
"email" => "emailValue"
]
]
$resp = $client->post('passwordreset', $options);
echo $resp->getBody();
payload = {
'email': "emailValue"
}
req = requests.post('https://my.balvps.com/api/passwordreset', json=payload)
print(req.json())
Example Response:
{
"info": [
"generated_reset_request"
]
}
HTTP Request
POST /passwordreset
Query Parameters
| Parameter | Type | Description |
|---|---|---|
string |
EMail address |
User Details
Return registration details for my account
curl -X GET "https://my.balvps.com/api/details" \
-H "Authorization: Bearer $token"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$resp = $client->get('details');
echo $resp->getBody();
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.get('https://my.balvps.com/api/details', headers=headers)
print(req.json())
Example Response:
{
"client": {
"id": "26",
"email": "api@example.com",
"lastlogin": "2016-12-30 12:24:28",
"ip": "172.100.2.1",
"host": "hostname",
"firstname": "Joe",
"lastname": "Doe",
"companyname": "",
"address1": "Pretty View Lane",
"address2": "3294",
"city": "Santa Rosa",
"state": "California",
"postcode": "95401",
"country": "US",
"phonenumber": "+1.24123123"
}
}
HTTP Request
GET /details
Update User Details
Update registration details under my account
POST_DATA="{
\"email\": \"emailValue\",
\"firstname\": \"firstnameValue\",
\"lastname\": \"lastnameValue\",
\"companyname\": \"companynameValue\",
\"address1\": \"address1Value\",
\"address2\": \"address2Value\",
\"city\": \"cityValue\",
\"state\": \"stateValue\",
\"postcode\": \"postcodeValue\",
\"country\": \"countryValue\",
\"phonenumber\": \"phonenumberValue\",
\"type\": \"typeValue\",
\"telegramnotifications\": \"telegramnotificationsValue\",
\"vatnumber\": \"vatnumberValue\",
\"mobilephone\": \"mobilephoneValue\"
}"
curl -X PUT "https://my.balvps.com/api/details" \
-H "Authorization: Bearer $token" \
-H "Content-Type: application/json" \
-d "${POST_DATA}"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$options = [
'json' => [
"email" => "emailValue",
"firstname" => "firstnameValue",
"lastname" => "lastnameValue",
"companyname" => "companynameValue",
"address1" => "address1Value",
"address2" => "address2Value",
"city" => "cityValue",
"state" => "stateValue",
"postcode" => "postcodeValue",
"country" => "countryValue",
"phonenumber" => "phonenumberValue",
"type" => "typeValue",
"telegramnotifications" => "telegramnotificationsValue",
"vatnumber" => "vatnumberValue",
"mobilephone" => "mobilephoneValue"
]
]
$resp = $client->put('details', $options);
echo $resp->getBody();
payload = {
'email': "emailValue",
'firstname': "firstnameValue",
'lastname': "lastnameValue",
'companyname': "companynameValue",
'address1': "address1Value",
'address2': "address2Value",
'city': "cityValue",
'state': "stateValue",
'postcode': "postcodeValue",
'country': "countryValue",
'phonenumber': "phonenumberValue",
'type': "typeValue",
'telegramnotifications': "telegramnotificationsValue",
'vatnumber': "vatnumberValue",
'mobilephone': "mobilephoneValue"
}
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.put('https://my.balvps.com/api/details', json=payload, headers=headers)
print(req.json())
Example Response:
{
"client": {
"id": "26",
"email": "api@example.com",
"lastlogin": "2016-12-30 12:34:20",
"ip": "172.100.2.1",
"host": "hostname",
"firstname": "Joe",
"lastname": "Doe",
"companyname": "",
"address1": "Pretty View Lane",
"address2": "3194",
"city": "Santa Rosa",
"state": "California",
"postcode": "95401",
"country": "US",
"phonenumber": "+1.24123123"
},
"info": [
"client_info_updated"
]
}
HTTP Request
PUT /details
Query Parameters
| Parameter | Type | Description |
|---|---|---|
string |
Email Address |
|
| firstname | string |
First Name
Value pattern: |
| lastname | string |
Last Name
Value pattern: |
| companyname | string |
Organization |
| address1 | string |
Address 1 |
| address2 | string |
Address 2 |
| city | string |
City |
| state | string |
State |
| postcode | string |
Post code |
| country | string |
Country |
| phonenumber | string |
Phone |
| type | string |
Account Type
Available values:
|
| telegramnotifications | string[] |
Telegram notifications
Available values:
|
| vatnumber | string |
VAT number |
| mobilephone | string |
Mobile phone number - To receive SMS notifications about your services with us please provide your mobile phone number, starting with country code prefix, ie. +1 |
List contacts
Return a list of contacts on this account
curl -X GET "https://my.balvps.com/api/contact" \
-H "Authorization: Bearer $token"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$resp = $client->get('contact');
echo $resp->getBody();
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.get('https://my.balvps.com/api/contact', headers=headers)
print(req.json())
Example Response:
{
"contacts": [
{
"email": "mary@example.com",
"id": "49",
"firstname": "Mary",
"lastname": "Sue",
"companyname": "",
"company": "0",
"lastlogin": "0000-00-00 00:00:00"
}
]
}
HTTP Request
GET /contact
Add contact
Create new contact account, if password is provided you can use provided email addres to login as that contact.
POST_DATA="{
\"password\": \"passwordValue\",
\"privileges\": \"privilegesValue\",
\"email\": \"emailValue\",
\"firstname\": \"firstnameValue\",
\"lastname\": \"lastnameValue\",
\"companyname\": \"companynameValue\",
\"address1\": \"address1Value\",
\"address2\": \"address2Value\",
\"city\": \"cityValue\",
\"state\": \"stateValue\",
\"postcode\": \"postcodeValue\",
\"country\": \"countryValue\",
\"phonenumber\": \"phonenumberValue\",
\"type\": \"typeValue\",
\"telegramnotifications\": \"telegramnotificationsValue\",
\"vatnumber\": \"vatnumberValue\",
\"mobilephone\": \"mobilephoneValue\"
}"
curl -X POST "https://my.balvps.com/api/contact" \
-H "Authorization: Bearer $token" \
-H "Content-Type: application/json" \
-d "${POST_DATA}"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$options = [
'json' => [
"password" => "passwordValue",
"privileges" => "privilegesValue",
"email" => "emailValue",
"firstname" => "firstnameValue",
"lastname" => "lastnameValue",
"companyname" => "companynameValue",
"address1" => "address1Value",
"address2" => "address2Value",
"city" => "cityValue",
"state" => "stateValue",
"postcode" => "postcodeValue",
"country" => "countryValue",
"phonenumber" => "phonenumberValue",
"type" => "typeValue",
"telegramnotifications" => "telegramnotificationsValue",
"vatnumber" => "vatnumberValue",
"mobilephone" => "mobilephoneValue"
]
]
$resp = $client->post('contact', $options);
echo $resp->getBody();
payload = {
'password': "passwordValue",
'privileges': "privilegesValue",
'email': "emailValue",
'firstname': "firstnameValue",
'lastname': "lastnameValue",
'companyname': "companynameValue",
'address1': "address1Value",
'address2': "address2Value",
'city': "cityValue",
'state': "stateValue",
'postcode': "postcodeValue",
'country': "countryValue",
'phonenumber': "phonenumberValue",
'type': "typeValue",
'telegramnotifications': "telegramnotificationsValue",
'vatnumber': "vatnumberValue",
'mobilephone': "mobilephoneValue"
}
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.post('https://my.balvps.com/api/contact', json=payload, headers=headers)
print(req.json())
Example Response:
{
"contact_id": "1",
"info": [
"profile_added"
]
}
HTTP Request
POST /contact
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| password | string |
Optional, allows you to login as contact |
| privileges | array |
Array with privileges that you want to enable. Formatted the same way as output from |
string |
Email Address |
|
| firstname | string |
First Name
Value pattern: |
| lastname | string |
Last Name
Value pattern: |
| companyname | string |
Organization |
| address1 | string |
Address 1 |
| address2 | string |
Address 2 |
| city | string |
City |
| state | string |
State |
| postcode | string |
Post code |
| country | string |
Country |
| phonenumber | string |
Phone |
| type | string |
Account Type
Available values:
|
| telegramnotifications | string[] |
Telegram notifications
Available values:
|
| vatnumber | string |
VAT number |
| mobilephone | string |
Mobile phone number - To receive SMS notifications about your services with us please provide your mobile phone number, starting with country code prefix, ie. +1 |
Contact privileges
List possible contact privileges.
Each domain and service may list additional privileges, depending on available features.
curl -X GET "https://my.balvps.com/api/contact/privileges" \
-H "Authorization: Bearer $token"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$resp = $client->get('contact/privileges');
echo $resp->getBody();
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.get('https://my.balvps.com/api/contact/privileges', headers=headers)
print(req.json())
Example Response:
{
"privileges": {
"billing": [
"emails", // Receive billing notifications
"payinvoice", // Allow to view/pay invoices
"orders", // Allow to place new orders
"balance", // View account balance
"addfunds", // Add account funds
"creditcard" // Edit Credit Card details
],
"support": [
"newticket", // Open new tickets
"tickets", // View all tickets
"closeticket", // Close tickets
"emails" // Receive email notifications from support
],
"misc": [
"editmain", // Modify main profile details
"emails", // View emails history
"editipaccess", // Edit allowed IP access
"manageprofiles", // Add / Edit contacts
"affiliates" // Access affiliates section
],
"services": {
"full": 1, // Full control over services
"332": [
"basic", // View basic details
"billing", // View billing info
"cancelation", // Request cancellation
"upgrade", // Upgrade / Downgrade
"notify", // Receive related email notifications
(...)
"logindetails"
]
},
"domains": {
"full": 1, // Full control over domains
"523": [
"basic", // View basic details
"renew", // Renew domain
"notify", // Receive related email notifications
"contactinfo", // Contact Information
(...)
"nameservers" // Manage Nameservers
]
}
}
}
HTTP Request
GET /contact/privileges
Get contacts details
Return array with contact details
curl -X GET "https://my.balvps.com/api/contact/@id" \
-H "Authorization: Bearer $token"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$resp = $client->get('contact/@id');
echo $resp->getBody();
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.get('https://my.balvps.com/api/contact/@id', headers=headers)
print(req.json())
Example Response:
{
"contact": {
"id": "49",
"email": "mary@example.com",
"firstname": "Mary",
"lastname": "Sue",
"companyname": "",
"address1": "Pretty View Lane",
"address2": "3194",
"city": "Santa Rosa",
"state": "California",
"postcode": "95401",
"country": "US",
"phonenumber": "+1.24123123",
"type": "Private",
"privileges" : {
"support" : ["tickets", "newticket"]
}
}
}
HTTP Request
GET /contact/@id
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| id | int |
Contact ID |
Edit contact
Change contact details`
POST_DATA="{
\"id\": \"idValue\",
\"privileges\": \"privilegesValue\",
\"email\": \"emailValue\",
\"firstname\": \"firstnameValue\",
\"lastname\": \"lastnameValue\",
\"companyname\": \"companynameValue\",
\"address1\": \"address1Value\",
\"address2\": \"address2Value\",
\"city\": \"cityValue\",
\"state\": \"stateValue\",
\"postcode\": \"postcodeValue\",
\"country\": \"countryValue\",
\"phonenumber\": \"phonenumberValue\",
\"type\": \"typeValue\",
\"telegramnotifications\": \"telegramnotificationsValue\",
\"vatnumber\": \"vatnumberValue\",
\"mobilephone\": \"mobilephoneValue\"
}"
curl -X PUT "https://my.balvps.com/api/contact/@id" \
-H "Authorization: Bearer $token" \
-H "Content-Type: application/json" \
-d "${POST_DATA}"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$options = [
'json' => [
"id" => "idValue",
"privileges" => "privilegesValue",
"email" => "emailValue",
"firstname" => "firstnameValue",
"lastname" => "lastnameValue",
"companyname" => "companynameValue",
"address1" => "address1Value",
"address2" => "address2Value",
"city" => "cityValue",
"state" => "stateValue",
"postcode" => "postcodeValue",
"country" => "countryValue",
"phonenumber" => "phonenumberValue",
"type" => "typeValue",
"telegramnotifications" => "telegramnotificationsValue",
"vatnumber" => "vatnumberValue",
"mobilephone" => "mobilephoneValue"
]
]
$resp = $client->put('contact/@id', $options);
echo $resp->getBody();
payload = {
'id': "idValue",
'privileges': "privilegesValue",
'email': "emailValue",
'firstname': "firstnameValue",
'lastname': "lastnameValue",
'companyname': "companynameValue",
'address1': "address1Value",
'address2': "address2Value",
'city': "cityValue",
'state': "stateValue",
'postcode': "postcodeValue",
'country': "countryValue",
'phonenumber': "phonenumberValue",
'type': "typeValue",
'telegramnotifications': "telegramnotificationsValue",
'vatnumber': "vatnumberValue",
'mobilephone': "mobilephoneValue"
}
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.put('https://my.balvps.com/api/contact/@id', json=payload, headers=headers)
print(req.json())
Example Response:
{
"info": [
"profile_updated"
]
}
HTTP Request
PUT /contact/@id
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| id | int |
Contact ID |
| privileges | array |
Array with privileges that you want to enable. Formatted the same way as output from |
string |
Email Address |
|
| firstname | string |
First Name
Value pattern: |
| lastname | string |
Last Name
Value pattern: |
| companyname | string |
Organization |
| address1 | string |
Address 1 |
| address2 | string |
Address 2 |
| city | string |
City |
| state | string |
State |
| postcode | string |
Post code |
| country | string |
Country |
| phonenumber | string |
Phone |
| type | string |
Account Type
Available values:
|
| telegramnotifications | string[] |
Telegram notifications
Available values:
|
| vatnumber | string |
VAT number |
| mobilephone | string |
Mobile phone number - To receive SMS notifications about your services with us please provide your mobile phone number, starting with country code prefix, ie. +1 |
Billing
Account balance
Get current account balance(unpaid invoices total), account credit
curl -X GET "https://my.balvps.com/api/balance" \
-H "Authorization: Bearer $token"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$resp = $client->get('balance');
echo $resp->getBody();
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.get('https://my.balvps.com/api/balance', headers=headers)
print(req.json())
Example Response:
{
{
"success": true,
"details": {
"currency": "USD",
"acc_balance": "123456.55",
"acc_credit": "0.00"
}
}
}
HTTP Request
GET /balance
List Invoices
List all invoices under my account
curl -X GET "https://my.balvps.com/api/invoice" \
-H "Authorization: Bearer $token"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$resp = $client->get('invoice');
echo $resp->getBody();
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.get('https://my.balvps.com/api/invoice', headers=headers)
print(req.json())
Example Response:
{
"invoices": [
{
"id": "308976",
"date": "2016-12-30",
"dateorig": "2016-12-30",
"duedate": "2017-01-06",
"paybefore": "2017-01-06",
"total": "19.65",
"datepaid": "2016-12-30 12:40:47",
"status": "Paid",
"merge_id": null,
"number": "2016\/12\/1",
"currency": "USD"
}
]
}
HTTP Request
GET /invoice
Invoice Details
Get invoice details
curl -X GET "https://my.balvps.com/api/invoice/@id" \
-H "Authorization: Bearer $token"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$resp = $client->get('invoice/@id');
echo $resp->getBody();
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.get('https://my.balvps.com/api/invoice/@id', headers=headers)
print(req.json())
Example Response:
{
"invoice": {
"id": "308976",
"status": "Paid",
"date": "2016-12-30",
"duedate": "2017-01-06",
"paybefore": "2017-01-06",
"datepaid": "2016-12-30 12:40:47",
"subtotal": 16.24,
"credit": 0,
"tax": 3.41,
"taxrate": 21,
"tax2": 0,
"taxrate2": 0,
"taxexempt": "0",
"total": 19.65,
"rate": 1,
"rate2": 0,
"rate3": 1,
"notes": "",
"items": [
{
"id": "12305",
"invoice_id": "308976",
"type": "Other",
"item_id": "0",
"description": "Example Service",
"amount": "15.00",
"taxed": "1",
"qty": "1.00",
"linetotal": "15.00"
},
{
"id": "12309",
"invoice_id": "308976",
"type": "Other",
"item_id": "-2",
"description": "PayPal Payment Fee",
"amount": "1.24",
"taxed": "1",
"qty": "1.00",
"linetotal": "1.24"
}
],
"client": {
"id": "26",
"email": "api@example.com",
"firstname": "Joe",
"lastname": "Doe",
"companyname": "",
"address1": "Pretty View Lane",
"address2": "3194",
"city": "Santa Rosa",
"state": "California",
"postcode": "95401",
"country": "US",
"phonenumber": "+1.24123123"
},
"number": "2016\/12\/1",
"currency": "USD"
}
}
HTTP Request
GET /invoice/@id
Apply credit
Apply account credit to invoice
POST_DATA="{
\"amount\": \"amountValue\"
}"
curl -X POST "https://my.balvps.com/api/invoice/@id/credit" \
-H "Authorization: Bearer $token" \
-H "Content-Type: application/json" \
-d "${POST_DATA}"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$options = [
'json' => [
"amount" => "amountValue"
]
]
$resp = $client->post('invoice/@id/credit', $options);
echo $resp->getBody();
payload = {
'amount': "amountValue"
}
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.post('https://my.balvps.com/api/invoice/@id/credit', json=payload, headers=headers)
print(req.json())
Example Response:
{
"success": true,
"invoice_status": "Paid",
"applied": 2.1
}
HTTP Request
POST /invoice/@id/credit
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| amount | number |
Optional credit amount, when no value is specified maximum amount to fully pay the invoice will be used |
Support
List Tickets
List support tickets under my account
curl -X GET "https://my.balvps.com/api/tickets" \
-H "Authorization: Bearer $token"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$resp = $client->get('tickets');
echo $resp->getBody();
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.get('https://my.balvps.com/api/tickets', headers=headers)
print(req.json())
Example Response:
{
"tickets": [
{
"client_read": "1",
"ticket_number": "736633",
"date": "2016-12-30 12:48:13",
"deptname": "Billing",
"subject": "Lore Ipsum",
"status": "Open",
"lastreply": "2020-09-12 11:10:03"
}
]
}
HTTP Request
GET /tickets
Ticket details
Get ticket details, including all replies
curl -X GET "https://my.balvps.com/api/tickets/@number" \
-H "Authorization: Bearer $token"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$resp = $client->get('tickets/@number');
echo $resp->getBody();
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.get('https://my.balvps.com/api/tickets/@number', headers=headers)
print(req.json())
Example Response:
{
"ticket": {
"date": "2016-12-30 12:48:13",
"ticket_number": "736633",
"name": "Joe Doe",
"email": "api@example.com",
"subject": "Lore Ipsum",
"body": "Donec sollicitudin molestie malesuada. \r\nSed porttitor lectus nibh. Vivamus magna justo, \r\nlacinia eget consectetur sed, convallis at tellus.",
"status": "Answered",
"client_read": "1",
"deptname": "Billing"
},
"replies": [
{
"id": "929",
"name": "Suppport Staff",
"date": "2016-12-30 12:51:04",
"body": "Vestibulum ac diam sit amet quam \r\nvehicula elementum sed sit amet dui. \r\nPraesent sapien massa\r\n\r\n-- Maecenas efficitur elit est --",
"status": "Sent",
"type": "Admin"
}
]
}
HTTP Request
GET /tickets/@number
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| number | int |
Ticket number |
Create Ticket
Submit new ticket
POST_DATA="{
\"dept_id\": 1,
\"subject\": \"Subject\",
\"body\": \"Message ...\"
}"
curl -X POST "https://my.balvps.com/api/tickets" \
-H "Authorization: Bearer $token" \
-H "Content-Type: application/json" \
-d "${POST_DATA}"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$options = [
'json' => [
"dept_id" => 1,
"subject" => "Subject",
"body" => "Message ..."
]
]
$resp = $client->post('tickets', $options);
echo $resp->getBody();
payload = {
'dept_id': 1,
'subject': "Subject",
'body': "Message ..."
}
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.post('https://my.balvps.com/api/tickets', json=payload, headers=headers)
print(req.json())
Example Response:
{
"ticket": 865650
}
HTTP Request
POST /tickets
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| dept_id | int |
Department id |
| subject | string |
Ticket subject |
| body | string |
Ticket message |
Create Reply
Reply to ticket
POST_DATA="{
\"number\": \"numberValue\",
\"body\": \"reply text ..\"
}"
curl -X POST "https://my.balvps.com/api/tickets/@number" \
-H "Authorization: Bearer $token" \
-H "Content-Type: application/json" \
-d "${POST_DATA}"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$options = [
'json' => [
"number" => "numberValue",
"body" => "reply text .."
]
]
$resp = $client->post('tickets/@number', $options);
echo $resp->getBody();
payload = {
'number': "numberValue",
'body': "reply text .."
}
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.post('https://my.balvps.com/api/tickets/@number', json=payload, headers=headers)
print(req.json())
Example Response:
{
"info": [
"reply_added"
]
}
HTTP Request
POST /tickets/@number
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| number | int |
Ticket number |
| body | string |
Reply message |
Re-open ticket
Try to re-open closed ticket
POST_DATA="{
\"number\": \"numberValue\"
}"
curl -X PUT "https://my.balvps.com/api/tickets/@number/open" \
-H "Authorization: Bearer $token" \
-H "Content-Type: application/json" \
-d "${POST_DATA}"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$options = [
'json' => [
"number" => "numberValue"
]
]
$resp = $client->put('tickets/@number/open', $options);
echo $resp->getBody();
payload = {
'number': "numberValue"
}
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.put('https://my.balvps.com/api/tickets/@number/open', json=payload, headers=headers)
print(req.json())
Example Response:
{
"status": true
}
HTTP Request
PUT /tickets/@number/open
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| number | int |
Ticket number |
Close ticket
Send request to close a ticket
POST_DATA="{
\"number\": \"numberValue\"
}"
curl -X PUT "https://my.balvps.com/api/tickets/@number/close" \
-H "Authorization: Bearer $token" \
-H "Content-Type: application/json" \
-d "${POST_DATA}"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$options = [
'json' => [
"number" => "numberValue"
]
]
$resp = $client->put('tickets/@number/close', $options);
echo $resp->getBody();
payload = {
'number': "numberValue"
}
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.put('https://my.balvps.com/api/tickets/@number/close', json=payload, headers=headers)
print(req.json())
Example Response:
{
"status": true
}
HTTP Request
PUT /tickets/@number/close
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| number | int |
Ticket number |
List ticket departments
Get the list of ticket departments
curl -X GET "https://my.balvps.com/api/ticket/departments" \
-H "Authorization: Bearer $token"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$resp = $client->get('ticket/departments');
echo $resp->getBody();
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.get('https://my.balvps.com/api/ticket/departments', headers=headers)
print(req.json())
HTTP Request
GET /ticket/departments
DNS
List DNS
Returns a list of all DNS
curl -X GET "https://my.balvps.com/api/dns" \
-H "Authorization: Bearer $token"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$resp = $client->get('dns');
echo $resp->getBody();
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.get('https://my.balvps.com/api/dns', headers=headers)
print(req.json())
Example Response:
{
"service_ids": [
"10",
"20"
],
"zones": [
{
"domain_id": "60",
"name": "qwerty.com",
"service_id": "10"
},
{
"domain_id": "61",
"name": "bgg12ooble.com",
"service_id": "20"
}
]
}
HTTP Request
GET /dns
Add DNS Zone
Creates a new DNS zone
POST_DATA="{
\"service_id\": \"service_idValue\",
\"name\": \"testzone.com\"
}"
curl -X POST "https://my.balvps.com/api/service/@service_id/dns" \
-H "Authorization: Bearer $token" \
-H "Content-Type: application/json" \
-d "${POST_DATA}"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$options = [
'json' => [
"service_id" => "service_idValue",
"name" => "testzone.com"
]
]
$resp = $client->post('service/@service_id/dns', $options);
echo $resp->getBody();
payload = {
'service_id': "service_idValue",
'name': "testzone.com"
}
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.post('https://my.balvps.com/api/service/@service_id/dns', json=payload, headers=headers)
print(req.json())
Example Response:
{
"info": [
"Domain zone testzone.com was created successfully."
]
}
HTTP Request
POST /service/@service_id/dns
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| service_id | int |
Service ID |
| name | string |
Zone name |
List DNS for service
Returns a list of DNS zones under the service
curl -X GET "https://my.balvps.com/api/service/@service_id/dns" \
-H "Authorization: Bearer $token"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$resp = $client->get('service/@service_id/dns');
echo $resp->getBody();
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.get('https://my.balvps.com/api/service/@service_id/dns', headers=headers)
print(req.json())
Example Response:
{
"error": [
"invalid method"
]
}
HTTP Request
GET /service/@service_id/dns
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| service_id | int |
Service ID |
Get DNS details
Returns details of the DNS zone
curl -X GET "https://my.balvps.com/api/service/@service_id/dns/@zone_id" \
-H "Authorization: Bearer $token"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$resp = $client->get('service/@service_id/dns/@zone_id');
echo $resp->getBody();
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.get('https://my.balvps.com/api/service/@service_id/dns/@zone_id', headers=headers)
print(req.json())
Example Response:
{
"service_id": 10,
"name": "qwerty.com",
"records": [
{
"id":"10",
"name":"qwerty",
"ttl":1800,
"priority":0,
"content":"127.0.0.1",
"type":"A"
},
{
"id":"11",
"name":"qwerty",
"ttl":1800,
"priority":0,
"content":"ns1.qwerty.com",
"type":"NS"
}
]
}
HTTP Request
GET /service/@service_id/dns/@zone_id
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| service_id | int |
Service ID |
| zone_id | int |
Zone ID |
Remove DNS zone
Deletes the selected DNS zone
curl -X DELETE "https://my.balvps.com/api/service/@service_id/dns/@zone_id" \
-H "Authorization: Bearer $token"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$resp = $client->delete('service/@service_id/dns/@zone_id');
echo $resp->getBody();
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.delete('https://my.balvps.com/api/service/@service_id/dns/@zone_id', headers=headers)
print(req.json())
Example Response:
{
"info": [
"Domain zone testzone.com was deleted successfully."
]
}
HTTP Request
DELETE /service/@service_id/dns/@zone_id
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| service_id | int |
Service ID |
| zone_id | int |
Zone ID |
Add DNS Record
Creates a new record in the DNS zone
POST_DATA="{
\"service_id\": \"service_idValue\",
\"zone_id\": \"zone_idValue\",
\"name\": \"example.com\",
\"ttl\": 3600,
\"priority\": 10,
\"type\": \"A\",
\"content\": \"192.168.1.2\"
}"
# OR ...
POST_DATA="{
\"service_id\": \"service_idValue\",
\"zone_id\": \"zone_idValue\",
\"name\": \"_sip._tcp.example.com\",
\"ttl\": 3600,
\"priority\": 10,
\"type\": \"SRV\",
\"content\": [
10,
5060,
\"vc01.example.com\"
]
}"
curl -X POST "https://my.balvps.com/api/service/@service_id/dns/@zone_id/records" \
-H "Authorization: Bearer $token" \
-H "Content-Type: application/json" \
-d "${POST_DATA}"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$options = [
'json' => [
"service_id" => "service_idValue",
"zone_id" => "zone_idValue",
"name" => "example.com",
"ttl" => 3600,
"priority" => 10,
"type" => "A",
"content" => "192.168.1.2"
]
]);
// OR ...
$options = [
'json' => [
"service_id" => "service_idValue",
"zone_id" => "zone_idValue",
"name" => "_sip._tcp.example.com",
"ttl" => 3600,
"priority" => 10,
"type" => "SRV",
"content" => [
10,
5060,
"vc01.example.com"
]
]
]);
$resp = $client->post('service/@service_id/dns/@zone_id/records', $options);
echo $resp->getBody();
payload = {
'service_id': "service_idValue",
'zone_id': "zone_idValue",
'name': "example.com",
'ttl': 3600,
'priority': 10,
'type': "A",
'content': "192.168.1.2"
}
# OR ...
payload = {
'service_id': "service_idValue",
'zone_id': "zone_idValue",
'name': "_sip._tcp.example.com",
'ttl': 3600,
'priority': 10,
'type': "SRV",
'content': [
10,
5060,
"vc01.example.com"
]
}
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.post('https://my.balvps.com/api/service/@service_id/dns/@zone_id/records', json=payload, headers=headers)
print(req.json())
Example Response:
{
"record": {
"name": "_sip._tcp.example.com",
"type": "SRV",
"ttl": "3600",
"priority": "10",
"content": [
10,
5060,
"vc01.example.com"
]
},
"info": [
"dnsnewrecordadded",
"SRV"
]
}
HTTP Request
POST /service/@service_id/dns/@zone_id/records
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| service_id | int |
Service ID |
| zone_id | int |
Zone ID |
| name | string |
Record name |
| ttl | int |
Record ttl |
| priority | int |
Priority of the record |
| type | string |
Record type |
| content | string |
Contents of the record |
Edit DNS Record
Edits the selected DNS zone record
POST_DATA="{
\"service_id\": \"service_idValue\",
\"zone_id\": \"zone_idValue\",
\"record_id\": \"record_idValue\",
\"name\": \"example.com\",
\"ttl\": 3600,
\"priority\": 10,
\"type\": \"A\",
\"content\": \"192.168.1.2\"
}"
curl -X PUT "https://my.balvps.com/api/service/@service_id/dns/@zone_id/records/@record_id" \
-H "Authorization: Bearer $token" \
-H "Content-Type: application/json" \
-d "${POST_DATA}"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$options = [
'json' => [
"service_id" => "service_idValue",
"zone_id" => "zone_idValue",
"record_id" => "record_idValue",
"name" => "example.com",
"ttl" => 3600,
"priority" => 10,
"type" => "A",
"content" => "192.168.1.2"
]
]
$resp = $client->put('service/@service_id/dns/@zone_id/records/@record_id', $options);
echo $resp->getBody();
payload = {
'service_id': "service_idValue",
'zone_id': "zone_idValue",
'record_id': "record_idValue",
'name': "example.com",
'ttl': 3600,
'priority': 10,
'type': "A",
'content': "192.168.1.2"
}
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.put('https://my.balvps.com/api/service/@service_id/dns/@zone_id/records/@record_id', json=payload, headers=headers)
print(req.json())
Example Response:
{
"record": {
"id": "55",
"type": "A",
"ttl": "3600",
"name": "test",
"priority": 0,
"content": "192.168.1.2"
},
"info": [
"The record was updated successfully."
]
}
HTTP Request
PUT /service/@service_id/dns/@zone_id/records/@record_id
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| service_id | int |
Service ID |
| zone_id | int |
Zone ID |
| record_id | int |
Record ID |
| name | string |
Record name |
| ttl | int |
Record ttl |
| priority | int |
Priority of the record |
| type | string |
Record type |
| content | string |
Contents of the record |
Remove DNS Record
Removes the selected DNS zone record
curl -X DELETE "https://my.balvps.com/api/service/@service_id/dns/@zone_id/records/@record_id" \
-H "Authorization: Bearer $token"
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://my.balvps.com/api/',
'headers' => [
'Authorization' => 'Bearer ' . $token
]
]);
$resp = $client->delete('service/@service_id/dns/@zone_id/records/@record_id');
echo $resp->getBody();
headers = {
'Authorization': 'Bearer ' + token
}
req = requests.delete('https://my.balvps.com/api/service/@service_id/dns/@zone_id/records/@record_id', headers=headers)
print(req.json())
HTTP Request
DELETE /service/@service_id/dns/@zone_id/records/@record_id
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| service_id | int |
Service ID |
| zone_id | int |
Zone ID |
| record_id | int |
Record ID |