NAV Navbar
cURL PHP

Introduction

API Reference

Welcome to the VooDooTix API!

You can use our API to access VooDooTix API endpoints. These endpoints are divided into two categories.

In the documentation, you will always find if the endpoint require a valid JWT to be sent.

You can generate master tickets, upload graphical templates, create API keys with a fine grain RBAC. You can also manage the delegation of your objects to other VooDooTix users for a maximum flexibility. Cherry on the cake, you get a reporting engine to extract the lifecycle of every ticket generated through VooDooTix platform.

We have language bindings in cURL and PHP for the moment, more language to come! You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.

Authentication

# We recommand the use of composer to load the PHP SDK and it's dependencies.
# You can add the PHP SDK to your composer.json file by typing the shell command

composer require Voodootix/sdk


#Don't forget then to write the autoload statement before using Voodootix PHP SDK

<?php
require __DIR__ . '/vendor/autoload.php';
use \Voodootix\vtxClient;
?>

Private VooDooTix API endpoints are authenticated with signed JSON Web Tokens (JWT).
To retrieve a JWT, you can authenticate with 2 type of credentials.

API keys are more suitable for machine to machine connectivity.
User accounts are better for interactive session.

You can manage the roles and rights of each API key and User through the backoffice GUI.
You can delegate some rights to someone alse just by knowing it's User id.

Some api endpoints are not accessible through API id/secret authentication.

API Key

To authenticate and retrieve a JWT, use this code:

# The JWT is automatically retrived when you create a vtxClient with the SDK.

$my_vtx_client = new vtxClient("my api ID","my api secret","api","if not set, is default account");
# With cURL, you can retrieve a valid JWT like this.
curl -X POST 
     -H 'Content-Type: application/json'    
     -d '{"identifier":"my api ID","secret":"my api secret","authType":"api","accountId":"if not set, is default account"}'
     "https://api.voodootix.com/v1/auth"

API keys are generated through the GUI or API calls authenticated via a user account. You can create a VooDooTix account at our developer portal.

HTTP Request

POST https://api.voodootix.com/v1/auth

Query Parameters

Parameter Description
identifier Use an api id from an account that has the rights on the resources (master, templates, API...).
secret Use the secret associated to this api id.
authType Set this to api.
accountId This can remain empty for use of the default account of be specified to access a specific Voodootix account.

JSON response fields

Field Description
status Status 200 is given if the API call is successfull. If not, an error code is provided (See Errors section for more info)
jwt If authentication is successfull, the generated JWT is returned.

User account

# The JWT is automatically retrived when you create a vtxClient with the SDK.

$my_vtx_client = new vtxClient("my login","my password","user","if not set, is default account");
# With cURL, you can retrieve a valid JWT like this.
curl -X POST 
     -H 'Content-Type: application/json'    
     -d '{"identifier":"my login","secret":"my password","authType":"user","accountId":"if not set, is default account"}'
     "https://api.voodootix.com/v1/auth"

API keys are generated through the GUI or API calls authenticated via a user account. You can create a VooDooTix account at our developer portal.

Make sure to replace yourlogin and yourpass with your real login and password.

JWT are retrieve through an API call to a public endpoint.

The above command returns JSON structured like this:

{
  "status": "200",
  "msg" : "",   
  "jwt": "skdhqlkhqlkf.lskdufkjsgldjkdmglmd.smldfjkslfsjdlkfjsklv" 
}

HTTP Request

POST https://api.voodootix.com/v1/auth

Query Parameters

Parameter Description
identifier Use the login from an account that has the rights on the resources (master, templates, API...).
secret Use the password associated to the login.
authType Set this to user.
accountId This can remain empty for use of the default account of be specified to access a specific Voodootix account.

JSON response fields

Field Description
status Status 200 is given if the API call is successfull. If not, an error code is provided (See Errors section for more info)
jwt If authentication is successfull, the generated JWT is returned.
msg The msg field provide more relevant information related to the status code.

Accounts

Get all accounts

use Voodootix\vtxClient;

$my_vtx_client = new vtxClient("my identifier","my secret","api or user","if not set, is default account");
$my_projects = $my_vtx_client->getProject(); 

# With a JWT retrieved during a auth call, cURL command is as follow
curl -X GET 
     -H "Authorization: Bearer <yourJWT>"
     "https://api.voodootix.com/v1/account"

The above command returns JSON structured like this:

{
  "status": "200",
  "msg" : "",   
  "data": 
    [
      {"account_id": "skdhqlkhqllfsjdlkfjsklv",
       "account_name": "Test account name",
       "account_desc": "Test account description",
       "role_on_account": "owner",
       "account_pub_key": "sslkfjsklfsmgjsgjslkjfsnirlslgquhjwkdlsjf....",
       "account_status": "0",
       "account_delegable": "1",
       "account_delegated": "0",
       "account_balance":"99999",
       "account_type":"premium",
       "account_default":"0"},
      {"account_id": "skdhqlkhqllfsjdlkfjsklv",
       "account_name": "Test account name",
       "account_desc": "Test account description",
       "role_on_account": "owner",
       "account_pub_key": "sslkfjsklfsmgjsgjslkjfsnirlslgquhjwkdlsjf....",
       "account_status": "0",
       "account_delegable": "1",
       "account_delegated": "0",
       "account_balance":"99999",
       "account_type":"premium",
       "account_default":"0"}
    ]
}

This endpoint retrieves all accounts you have access to depending of the user or API key rights.

HTTP Request

`GET https://api.voodootix.com/v1/account

JSON response fields

Field Description
status Status 200 is given if the API call is successfull. If not, an error code is provided (See Errors section for more info)
msg The msg field provide more relevant information related to the status code.
data Data field is a Array of JSON objects containing the Accounts details.

Account data field :

Field Description
account_id Account ID. Unique identifier.
account_name Account name.
account_desc Account description field.
account_pub_key Account public key. It is used to validate the JWT issued for a specific account. ONLY retrievable if your right on account is "admin" or "owner".
role_on_account The role defining the action the current user/API key has the rights to perform. See more info about roles in Roles section.
account_status 1 stands for an active account, 0 stands for an account that still needs to get activated or was suspended. ONLY retrievable if your right on account is "admin" or "owner".
account_dalegated 1 stands for an account the api of user got tights on from another user.
account_delegable 1 stands for an account you have rights to delegate access to someone else.
account_balance Current credits on the account. ONLY retrievable if your right on account is "admin" or "owner".
account_type Each type of account gives specific rights. ONLY retrievable if your right on account is "admin" or "owner".
account_default 1 if the account is the user's default account.

Get a Specific account

use Voodootix\vtxClient;

$my_vtx_client = new vtxClient("my identifier","my secret","api or user","if not set, is default account");
$my_projects = $my_vtx_client->getProject("<ID>"); 
# With a JWT retrieved during a auth call, cURL command is as follow
curl -X GET 
     -H "Authorization: Bearer <yourJWT>"
     "https://api.voodootix.com/v1/accountt/<ID>"

The above command returns JSON structured like this:

{
  "status": "200",
  "msg" : "",   
  "data": 
    [
      {"account_id": "skdhqlkhqllfsjdlkfjsklv",
       "account_name": "Test account name",
       "account_desc": "Test account description",
       "role_on_account": "owner",
       "account_pub_key": "sslkfjsklfsmgjsgjslkjfsnirlslgquhjwkdlsjf....",
       "account_status": "0",
       "account_delegable": "1",
       "account_delegated": "0",
       "account_balance":"99999",
       "account_type":"premium",
       "account_default":"0"}
    ]
}

This endpoint retrieves a specific account.

HTTP Request

GET https://api.voodootix.com/v1/project/<ID>

URL Parameters

Parameter Description
ID The ID of the account to retrieve

JSON response fields

Field Description
status Status 200 is given if the API call is successfull. If not, an error code is provided (See Errors section for more info)
msg The msg field provide more relevant information related to the status code.
data Data field is a Array of JSON objects containing the Account details.

Account data field :

Field Description
account_id Account ID. Unique identifier.
account_name Account name.
account_desc Account description field.
account_pub_key Account public key. It is used to validate the JWT issued for a specific account. ONLY retrievable if your right on account is "admin" or "owner".
role_on_account The role defining the action the current user/API key has the rights to perform. See more info about roles in Roles section.
account_status 1 stands for an active account, 0 stands for an account that still needs to get activated or was suspended. ONLY retrievable if your right on account is "admin" or "owner".
account_dalegated 1 stands for an account the api of user got tights on from another user.
account_delegable 1 stands for an account you have rights to delegate access to someone else.
account_balance Current credits on the account. ONLY retrievable if your right on account is "admin" or "owner".
account_type Each type of account gives specific rights. ONLY retrievable if your right on account is "admin" or "owner".
account_default 1 if the account is the user's default account.

Create a new account

use Voodootix\vtxClient;

$my_vtx_client = new vtxClient("my identifier","my secret","api or user","if not set, is default account");
$data["account_name"] = "<your account name>";
$data["account_desc"] = "<your account desc>";
$new_account = $my_vtx_client->createAccount($data); 
# With a JWT, cURL command is as follow
curl -X POST
     -H "Authorization: Bearer <yourJWT>"
     -H "Content-Type: application/json"
     -d '{"data":{"account_name":"<yourAccountName>","account_desc":"<yourAccountDesc>"}}'
     "https://api.voodootix.com/v1/account"

The above command returns JSON structured like this:

{
  "status": "200",
  "msg" : "Account created",    
  "ID": <ID> 
}

This endpoint creates a new account.

HTTP Request

POST https://api.voodootix.com/v1/account

URL Parameters

Parameter Description
account_name Name of the new account
account_desc Desc of the new account

Update a account

use Voodootix\vtxClient;

$my_vtx_client = new vtxClient("my identifier","my secret","api or user","if not set, is default account");
$data["account_name"] = "<your account name>";
$data["account_desc"] = "<your account desc>";
$id = "<your account ID>";
$my_updated_account = $my_vtx_client->updateAccount($id,$data); 
# With a JWT, cURL command is as follow
curl -X PUT
     -H "Authorization: Bearer <yourJWT>"
     -H "Content-Type: application/json"
     -d '{"account_name":"<yourAccountName>","account_desc","<yourAccountDesc>"}'
     "https://api.voodootix.com/v1/account/<ID>"

The above command returns JSON structured like this:

{
  "status": "200",
  "msg" : "Account updated",    
  "ID": <ID> 
}

This endpoint updates a account.

HTTP Request

PUT https://api.voodootix.com/v1/account/<ID>

URL Parameters

Parameter Description
account_name Name of the account
account_desc Desc of the account

Projets

Get all projets

use Voodootix\vtxClient;

$my_vtx_client = new vtxClient("my identifier","my secret","api or user","if not set, is default account");
$my_projects = $my_vtx_client->getProject(); 

# With a JWT retrieved during a auth call, cURL command is as follow
curl -X GET 
     -H "Authorization: Bearer <yourJWT>"
     "https://api.voodootix.com/v1/project"

The above command returns JSON structured like this:

{
  "status": "200",
  "msg" : "",   
  "data": 
    [
      {"project_id": "skdhqlkhqllfsjdlkfjsklv",
       "project_name": "Test project",
       "project_desc": "This is a test project for doc purpose",
       "project_pub_key": "sslkfjsklfsmgjsgjslkjfsnirlslgquhjwkdlsjf....",
       "role": "owner",
       "delegated": 0,
       "delegable": 1},
      {"project_id": "aaaijffiiojdlkfjsklv",
       "project_name": "Test project 2",
       "project_desc": "This is a delegated project for doc purpose",
       "project_pub_key": "sslkfjsklgakfixlfjslkjfsnirlslgquhjwkdlsjf....",
       "role": "viewer",
       "delegated": 1,
       "delegable": 0}
    ]
}

This endpoint retrieves all projects you have access to depending of the user or API key rights.

HTTP Request

`GET https://api.voodootix.com/v1/project

JSON response fields

Field Description
status Status 200 is given if the API call is successfull. If not, an error code is provided (See Errors section for more info)
msg The msg field provide more relevant information related to the status code.
data Data field is a Array of JSON objects containing the Projects details.

Project data field :

Field Description
project_id Project ID. Unique identifier.
project_name Project name.
project_desc Project description field.
project_pub_key Project public key. It is used to validate the signature of VooDooTix tickets.
role The role defining the action the current user/API key has the rights to perform. See more info about roles in Roles section.
delegated This field shows if the access to the project was provided through a delegation from another user.
delegable This field shows if the current user/API key has the right to delegate access to the ticket to someone else.

Get a Specific project

use Voodootix\vtxClient;

$my_vtx_client = new vtxClient("my identifier","my secret","api or user","if not set, is default account");
$my_projects = $my_vtx_client->getProject("<ID>"); 
# With a JWT retrieved during a auth call, cURL command is as follow
curl -X GET 
     -H "Authorization: Bearer <yourJWT>"
     "https://api.voodootix.com/v1/project/<ID>"

The above command returns JSON structured like this:

{
  "status": "200",
  "msg" : "",   
  "data": 
    [
      {"project_id": "skdhqlkhqllfsjdlkfjsklv",
       "project_name": "Test project",
       "project_desc": "This is a test project for doc purpose",
       "project_pub_key": "sslkfjsklfsmgjsgjslkjfsnirlslgquhjwkdlsjf....",
       "role": "owner",
       "delegated": 0,
       "delegable": 1}
    ]
}

This endpoint retrieves a specific project.

HTTP Request

GET https://api.voodootix.com/v1/project/<ID>

URL Parameters

Parameter Description
ID The ID of the project to retrieve

JSON response fields

Field Description
status Status 200 is given if the API call is successfull. If not, an error code is provided (See Errors section for more info)
msg The msg field provide more relevant information related to the status code.
data Data field is a Array of JSON objects containing the Projects details.

Project data field :

Field Description
project_id Project ID. Unique identifier.
project_name Project name.
project_desc Project description field.
project_pub_key Project public key. It is used to validate the signature of VooDooTix tickets.
role The role defining the action the current user/API key has the rights to perform. See more info about roles in Roles section.
delegated This field shows if the access to the project was provided through a delegation from another user.
delegable This field shows if the current user/API key has the right to delegate access to the ticket to someone else.

Delete a Specific project

use Voodootix\vtxClient;

$my_vtx_client = new vtxClient("my identifier","my secret","api or user","if not set, is default account");
$my_project = $my_vtx_client->deleteProject("<ID>"); 
# With a JWT retrieved during a auth call, cURL command is as follow
curl -X DELETE
     -H "Authorization: Bearer <yourJWT>"
     "https://api.voodootix.com/v1/project/<ID>"

The above command returns JSON structured like this:

{
  "status": "200",  
  "msg": "Project deleted",
  "ID": "<ID>"  
}

This endpoint deletes a specific project.

HTTP Request

DELETE https://api.voodootix.com/project/<ID>

URL Parameters

Parameter Description
ID The ID of the project to delete

JSON response fields

Field Description
status Status 200 is given if the API call is successfull. If not, an error code is provided (See Errors section for more info)
msg The msg field provide more relevant information related to the status code.
ID ID of the deleted project.

Create a new project

use Voodootix\vtxClient;

$my_vtx_client = new vtxClient("my identifier","my secret","api or user","if not set, is default account");
$data["project_name"] = "<your project name>";
$data["project_desc"] = "<your project desc>";
$my_projects = $my_vtx_client->CreateProject($data); 
# With a JWT, cURL command is as follow
curl -X POST
     -H "Authorization: Bearer <yourJWT>"
     -H "Content-Type: application/json"
     -d '{"project_name":"<yourProjectName>","project_desc","<yourProjectDesc>"}'
     "https://api.voodootix.com/v1/project"

The above command returns JSON structured like this:

{
  "status": "200",
  "msg" : "Project created",    
  "ID": <ID> 
}

This endpoint creates a new project.

HTTP Request

POST https://api.voodootix.com/v1/project

URL Parameters

Parameter Description
project_name Name of the new project
project_desc Desc of the new project

Update a project

use Voodootix\vtxClient;

$my_vtx_client = new vtxClient("my identifier","my secret","api or user","if not set, is default account");
$data["project_name"] = "<your project name>";
$data["project_desc"] = "<your project desc>";
$id = "<your project ID>";
$my_projects = $my_vtx_client->updateProject($id,$data); 
# With a JWT, cURL command is as follow
curl -X PUT
     -H "Authorization: Bearer <yourJWT>"
     -H "Content-Type: application/json"
     -d '{"project_name":"<yourProjectName>","project_desc","<yourProjectDesc>"}'
     "https://api.voodootix.com/v1/project/<ID>"

The above command returns JSON structured like this:

{
  "status": "200",
  "msg" : "Project updated",    
  "ID": <ID> 
}

This endpoint updates a project.

HTTP Request

PUT https://api.voodootix.com/v1/project/<ID>

URL Parameters

Parameter Description
project_name Name of the project
project_desc Desc of the project

Templates

Get all templates

use Voodootix\vtxClient;

$my_vtx_client = new vtxClient("my identifier","my secret","api or user","if not set, is default account");
$my_templates = $my_vtx_client->getTemplate(); 

# With a JWT retrieved during a auth call, cURL command is as follow
curl -X GET 
     -H "Authorization: Bearer <yourJWT>"
     "https://api.voodootix.com/v1/account"

The above command returns JSON structured like this:

{
  "status": "200",
  "msg" : "",   
  "data": 
    [
      {"template_id": "skdhqlkhqllfsjdlkfjsklv",
       "template_name": "Test account name",
       "template_desc": "Test account description",
       "role": "owner",
       "fields": "field1,field2,...",
       "color_set": "0",
       "mobile_background_color": "#xxxxxx",
       "passbook_backgroundColor": "#xxxxxx",
       "passbook_foregroudColor":"#xxxxxx",
       "passbook_labelColor":"#xxxxxx",
       "passbook_stripColor":"#xxxxxx",
       "passbook_fields":"<JSON FORMAT SEE DOC>"
       "public":"",
       "custom":"",
       "mobile_front_top":"<Html content of zone>",
       "mobile_front_bottom":"<Html content of zone>",
       "mobile_back_top":"<Html content of zone>",
       "mobile_structure":"<Html code of mobile template>",
       "passbook_structure":"<Code structure of passbook build>"},
      {"template_id": "skdhqlkhqllfsjdlkfjsklv",
       "template_name": "Test account name",
       "template_desc": "Test account description",
       "role": "owner",
       "fields": "field1,field2,...",
       "color_set": "0",
       "mobile_background_color": "#xxxxxx",
       "passbook_backgroundColor": "#xxxxxx",
       "passbook_foregroudColor":"#xxxxxx",
       "passbook_labelColor":"#xxxxxx",
       "passbook_stripColor":"#xxxxxx",
       "passbook_fields":"<JSON FORMAT SEE DOC>"
       "public":"",
       "custom":"",
       "mobile_front_top":"<Html content of zone>",
       "mobile_front_bottom":"<Html content of zone>",
       "mobile_back_top":"<Html content of zone>",
       "mobile_structure":"<Html code of mobile template>",
       "passbook_structure":"<Code structure of passbook build>"}
    ]
}

This endpoint retrieves all templates you have access to depending of the user or API key rights.

HTTP Request

`GET https://api.voodootix.com/v1/account

JSON response fields

Field Description
status Status 200 is given if the API call is successfull. If not, an error code is provided (See Errors section for more info)
msg The msg field provide more relevant information related to the status code.
data Data field is a Array of JSON objects containing the Templates details.

Template data field :

Field Description
template_id Template ID. Unique identifier.
template_name Template name.
temaplte_desc Template description field.

Get a Specific template

use Voodootix\vtxClient;

$my_vtx_client = new vtxClient("my identifier","my secret","api or user","if not set, is default account");
$my_projects = $my_vtx_client->getTemplate("<ID>"); 
# With a JWT retrieved during a auth call, cURL command is as follow
curl -X GET 
     -H "Authorization: Bearer <yourJWT>"
     "https://api.voodootix.com/v1/template/<ID>"

The above command returns JSON structured like this:

{
  "status": "200",
  "msg" : "",   
  "data": 
    [
      {"template_id": "skdhqlkhqllfsjdlkfjsklv",
       "template_name": "Test account name",
       "tempalte_desc": "Test account description",
       "...."
    ]
}

This endpoint retrieves a specific template.

HTTP Request

GET https://api.voodootix.com/v1/template/<ID>

URL Parameters

Parameter Description
ID The ID of the template to retrieve

JSON response fields

Field Description
status Status 200 is given if the API call is successfull. If not, an error code is provided (See Errors section for more info)
msg The msg field provide more relevant information related to the status code.
data Data field is a Array of JSON objects containing the Template details.

Template data field :

Field Description
template_id Template ID. Unique identifier.
template_name Template name.
temaplte_desc Template description field.

Create a new template

This endpoint creates a new template and is only accessible from the Voodootix developper studio.

Update a existing template

This endpoint updates a existing template and is only accessible from the Voodootix developper studio.

Vouchers

Mobile format

#This public endpoint returning a full html document is currently not wrapped into the PHP SDK. You can retrive it directly with an iframe or an AJAX call.

# With a JWT retrieved during a auth call, cURL command is as follow
curl -X GET 
     "https://api.voodootix.com/v1/mvoucher/<ID>"

The above command returns an HTML content with the mobile ticket.

This PUBLIC endpoint retrieves the mobile version of a VooDooTix voucher/coupon/ticket based on its ID. The look and feel of the mobile format was chosen at generation time (see POST action on ticket endpoint.)

HTTP Request

GET https://api.voodootix.com/v1/mvoucher/<ID>

Image format

#This public endpoint returning a png image of the voucher's front face is currently not wrapped into the PHP SDK. You can integrate it inside your own html page through a href tag.

# With a JWT retrieved during a auth call, cURL command is as follow
curl -X GET 
     "https://api.voodootix.com/v1/pngvoucher/<ID>"

The above command returns an HTML content with the mobile ticket.

This PUBLIC endpoint returns the image of the front face of a VooDooTix voucher/coupon/ticket based on its ID.
The look and feel is the same as the mobile version.

HTTP Request

GET https://api.voodootix.com/v1/pngvoucher/<ID>

Pkpass format

#This public endpoint returning a pkass build of the voucher is currently not wrapped into the PHP SDK.<br>
The pkpass will be automatically downloaded on iPhones and can be stored on Android phones in wallet apps like Storecard.

# With a JWT retrieved during a auth call, cURL command is as follow
curl -X GET
     "https://api.voodootix.com/v1/pbvoucher/<ID>"

The above command returns an HTML content with the mobile ticket.

This PUBLIC endpoint returns the pkpass build of a VooDooTix voucher/coupon/ticket based on its ID.
The look and feel is the same as the mobile version.

HTTP Request

GET https://api.voodootix.com/v1/pbvoucher/<ID>

Raw format

#This public endpoint returning a json of the voucher can be accessed with or without the SDK.<br>
The json is directly accessible at the voucher url as shown below or via an authenticated SDK call.<br>

$my_vtx_client = new vtxClient("my identifier","my secret","api or user","if not set, is default account");
$my_projects = $my_vtx_client->rawVoucher(<ID>);


# Without authentication, cURL command is as follow
curl -X GET
     "https://api.voodootix.com/v1/rawvoucher/<ID>"

The above command returns an HTML content with the mobile ticket.

This PUBLIC endpoint returns the pkpass build of a VooDooTix voucher/coupon/ticket based on its ID.
The look and feel is the same as the mobile version.

HTTP Request

GET https://api.voodootix.com/v1/rawvoucher/<ID>

Errors

The Voodootix API uses the following error codes:

Error Code Meaning
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your API key is wrong.
403 Forbidden -- You don't have rights to access this item
404 Not Found -- The specified item could not be found.
405 Method Not Allowed -- You tried to use an invalid method.
406 Not Acceptable -- You requested a format that isn't json.
410 Gone -- The requested ID has been removed from our servers.
418 I'm a teapot.
429 Too Many Requests -- You're making too many requests! Slow down!
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.