Introduction
OpenVeo offers a Web Service which must be started as a different process and needs some extra configuration.
Configure the Web Service
Open ~openveo/core/serverConf.json
{
  "ws" : {
    "port" : PORT // Replace PORT by the HTTP server port to use (e.g. 3001)
  }
}
Configure the Web Service logger
Open ~openveo/core/loggerConf.json
{
  "ws" : {
    "fileName" : "/var/log/openveo/openveo-ws.log", // Path to web service log file
    "level" : "info", // Log level
    "maxFileSize" : 1048576, // Maximum log file size (in Bytes)
    "maxFiles" : 2 // Maximum number of files archived
  }
}
Launch the Web Service
If you want to interact with OpenVeo through the Web Service, you need to start it. To start the OpenVeo Web Service, just use the -ws option :
node server.js -ws
Authenticate to the Web Service
The Web Service uses OAuth2 for authentication.
Get a client id and client secret
You can create a new application with a client id and a client secret through the back end (http://localhost:PORT/be/applications).
Get an access token
To make Web Service requests you will need an Access token. To get an Access token, you must make an HTTP POST request on /token.
Expected headers :
- 'Authorization: Basic CREDENTIALS' (Replace CREDENTIALS by "CLIENT_ID:CLIENT_SECRET" encoded in base 64)
Expected POST parameters :
- 'grant_type' => 'client_credentials'
You will receive an Access token to authenticate each Web Service requests.
PHP example
$curlCookieJar = tempnam(sys_get_temp_dir(), "cookies_");
// Initialize a curl session
$curlHandle = curl_init();
// Default curl options for all future requests
curl_setopt($curlHandle, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curlHandle, CURLOPT_COOKIESESSION, false);
curl_setopt($curlHandle, CURLOPT_COOKIEJAR, $curlCookieJar);
curl_setopt($curlHandle, CURLOPT_COOKIEFILE, $curlCookieJar);
curl_setopt($curlHandle, CURLOPT_HEADER, false);
curl_setopt($curlHandle, CURLOPT_CONNECTTIMEOUT, 1);
curl_setopt($curlHandle, CURLOPT_TIMEOUT, 30);
// Retrieve an oauth token
// Use HTTP POST method
curl_setopt($curlHandle, CURLOPT_CUSTOMREQUEST, 'POST');
// Replace {OPENVEO_URL} by the openveo server url
curl_setopt($curlHandle, CURLOPT_URL, '{OPENVEO_URL}/token');
// Replace {CLIENT_ID} and {CLIENT_SECRET} by your credentials
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array(
  'Authorization: Basic ' . base64_encode('{CLIENT_ID}:{CLIENT_SECRET}'),
  'Content-Type: application/json'
));
// Set oauth grant type to client_credentials
curl_setopt($curlHandle, CURLOPT_POSTFIELDS, json_encode(array(
    'grant_type' => 'client_credentials'
  )
));
$resultWithToken = json_decode(curl_exec($curlHandle));
Authenticate a request
All requests to the Web Service must be authenticated using the HTTP header :
- 'Authorization: Bearer TOKEN' (Replace TOKEN by your access token)
PHP example
// Get the list of videos
curl_setopt($curlHandle, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curlHandle, CURLOPT_URL, '{OPENVEO_URL}/publish/videos');
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array(
  'Authorization: Bearer ' . $resultWithToken->access_token
));
// Got the list of videos
$videos = json_decode(curl_exec($curlHandle));
Endpoints
Taxonomies
Get taxonomies.
GET WEB_SERVICE_URL/taxonomies
| Name | Type | Required | Default | Details | 
|---|---|---|---|---|
| query | String | No | - | To search on taxonomies' name | 
| sortOrder | String | No | desc | Sort order (either asc or desc) | 
| page | Number | No | 1 | The expected page | 
| limit | Number | No | - | To limit the number of taxonomies per page. If not specified get all taxonomies | 
| HTTP Status Code | Details | 
|---|---|
| 200 | Got the list of taxonomies (even if the list is empty) | 
| 500 | An error occured on the server side | 
| 400 | Wrong list of parameters | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "entities": [
    {
      "id": "1443533344313",
      "name": "Taxonomy 1",
      "tree": [
        {
          "id" : "1445433239636",
          "items": [],
          "title": "Term 1"
        }
      ]
    },
    {
      "id": "1333443134453",
      "name": "Taxonomy 2",
      "tree": [
        {
          "id" : "3239636144543",
          "items": [],
          "title": "Term 1"
        }
      ]
    }
  ],
  "pagination": {
    "limit": 1,
    "page": 1,
    "pages": 2,
    "size": 2
  }
}
Get taxonomy.
GET WEB_SERVICE_URL/taxonomies/{taxonomy_id}
| HTTP Status Code | Details | 
|---|---|
| 200 | Got the taxonomy | 
| 500 | An error occured on the server side | 
| 400 | Missing the taxonomy id | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "entity": {
    "name": "My taxonomy",
    "id": "{taxonomy_id}",
    "tree": []
  }
}
Get the list of terms of a taxonomy.
GET WEB_SERVICE_URL/taxonomies/{taxonomy_id}/terms
| HTTP Status Code | Details | 
|---|---|
| 200 | Got the taxonomy's terms | 
| 500 | An error occured on the server side | 
| 400 | Missing the taxonomy id | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "terms": [
    {
      "id" : "1445433239636",
      "title": "Term 1",
      "items": [
        {
          "id" : "1445433239637",
          "items": [],
          "title": "Sub term 1"
        }
      ]
    },
    {
      "title": "Term 2",
      "id" : "1333443134453",
      "items": []
    }
  ]
}
Add a taxonomy.
PUT WEB_SERVICE_URL/taxonomies
| HTTP Status Code | Details | 
|---|---|
| 200 | The taxonomy has been added | 
| 500 | An error occured on the server side | 
| 400 | Wrong PUT parameters | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "entity": {
    "name": "My taxonomy",
    "id": "41U3sYipg",
    "tree": []
  }
}
Update a taxonomy.
POST WEB_SERVICE_URL/taxonomies/{taxonomy_id}
| HTTP Status Code | Details | 
|---|---|
| 200 | The taxonomy has been updated | 
| 500 | An error occured on the server side | 
| 400 | Missing the taxonomy id | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "error": null,
  "status": "ok"
}
Delete a taxonomy.
DELETE WEB_SERVICE_URL/taxonomies/{taxonomy_id}
| HTTP Status Code | Details | 
|---|---|
| 200 | The taxonomy has been deleted | 
| 500 | An error occured on the server side | 
| 400 | Missing the taxonomy id | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "error": null,
  "status": "ok"
}
Groups
Get groups.
GET WEB_SERVICE_URL/groups
| Name | Type | Required | Default | Details | 
|---|---|---|---|---|
| query | String | No | - | To search on both groups' name and description | 
| sortBy | String | No | name | To sort groups by either name or description | 
| sortOrder | String | No | desc | Sort order (either asc or desc) | 
| page | Number | No | 1 | The expected page | 
| limit | Number | No | - | To limit the number of groups per page. If not specified get all groups | 
| HTTP Status Code | Details | 
|---|---|
| 200 | Got the list of groups (even if the list is empty) | 
| 500 | An error occured on the server side | 
| 400 | Wrong list of parameters | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "entities": [
    {
      "id": "Nk0fPIulZ",
      "name": "Group name",
      "description": "Group description"
    },
    {
      "id": "VJfQDIul-",
      "name": "Group name",
      "description": "Group description"
    }
  ],
  "pagination": {
    "limit": 1,
    "page": 1,
    "pages": 2,
    "size": 2
  }
}
Get information about a group.
GET WEB_SERVICE_URL/groups/{group_id}
| Name | Type | Required | Default | Details | 
|---|---|---|---|---|
| group_id | String | Yes | - | The id of the group to fetch | 
| HTTP Status Code | Details | 
|---|---|
| 200 | Got the group | 
| 500 | An error occured on the server side | 
| 400 | Missing the id of the group | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "entity": {
    "id": "{group_id}",
    "name": "Group name",
    "description": "Group description"
  }
}
Add a group.
PUT WEB_SERVICE_URL/groups
| HTTP Status Code | Details | 
|---|---|
| 200 | The group has been added | 
| 500 | An error occured on the server side | 
| 400 | Wrong PUT parameters | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "entity": {
    "id": "41U3sYipg",
    "name": "Group name",
    "description": "Group description"
  }
}
Update a group.
POST WEB_SERVICE_URL/groups/{group_id}
| HTTP Status Code | Details | 
|---|---|
| 200 | The group has been updated | 
| 500 | An error occured on the server side | 
| 400 | Missing the group id | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "error": null,
  "status": "ok"
}
Delete a group.
DELETE WEB_SERVICE_URL/groups/{group_id}
| HTTP Status Code | Details | 
|---|---|
| 200 | The group has been deleted | 
| 500 | An error occured on the server side | 
| 400 | Missing the group id | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "error": null,
  "status": "ok"
}
Roles
Get roles.
GET WEB_SERVICE_URL/roles
| Name | Type | Required | Default | Details | 
|---|---|---|---|---|
| query | String | No | - | To search on roles' name | 
| sortOrder | String | No | desc | Sort order (either asc or desc) | 
| page | Number | No | 1 | The expected page | 
| limit | Number | No | - | To limit the number of roles per page. If not specified get all roles | 
| HTTP Status Code | Details | 
|---|---|
| 200 | Got the list of roles (even if the list is empty) | 
| 500 | An error occured on the server side | 
| 400 | Wrong list of parameters | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "entities": [
    {
      "id": "4J5KIL_lb",
      "name": "Role name",
      "permissions" : [...]
    }
  ],
  "pagination": {
    "limit": 1,
    "page": 1,
    "pages": 2,
    "size": 2
  }
}
Get information about a role.
GET WEB_SERVICE_URL/roles/{role_id}
| Name | Type | Required | Default | Details | 
|---|---|---|---|---|
| role_id | String | Yes | - | The id of the role to fetch | 
| HTTP Status Code | Details | 
|---|---|
| 200 | Got the role | 
| 500 | An error occured on the server side | 
| 400 | Missing the id of the role | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "entity": {
    "id": "{role_id}",
    "name": "Role name",
    "permissions" : [...]
  }
}
Add a role.
PUT WEB_SERVICE_URL/roles
| HTTP Status Code | Details | 
|---|---|
| 200 | The role has been added | 
| 500 | An error occured on the server side | 
| 400 | Wrong PUT parameters | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "entity": {
    "id": "41U3sYipg",
    "name": "Role name",
    "permissions" : [...]
  }
}
Update a role.
POST WEB_SERVICE_URL/roles/{role_id}
| HTTP Status Code | Details | 
|---|---|
| 200 | The role has been updated | 
| 500 | An error occured on the server side | 
| 400 | Missing the role id | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "error": null,
  "status": "ok"
}
Delete a role.
DELETE WEB_SERVICE_URL/roles/{role_id}
| HTTP Status Code | Details | 
|---|---|
| 200 | The role has been deleted | 
| 500 | An error occured on the server side | 
| 400 | Missing the role id | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "error": null,
  "status": "ok"
}
Users
Get users.
GET WEB_SERVICE_URL/users
| Name | Type | Required | Default | Details | 
|---|---|---|---|---|
| query | String | No | - | To search on users' name | 
| sortOrder | String | No | desc | Sort order (either asc or desc) | 
| page | Number | No | 1 | The expected page | 
| limit | Number | No | - | To limit the number of users per page. If not specified get all users | 
| HTTP Status Code | Details | 
|---|---|
| 200 | Got the list of users (even if the list is empty) | 
| 500 | An error occured on the server side | 
| 400 | Wrong list of parameters | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "entities": [
    {
      "id": "42",
      "name": "User name",
      "password": "38d03dd58cd1bb6b4fdc59c3d03601461118c166b48baf787b96d5589ff0758d",
      "email" : "user.mail@company.com"
    }
  ],
  "pagination": {
    "limit": 1,
    "page": 1,
    "pages": 2,
    "size": 2
  }
}
Get information about a user.
GET WEB_SERVICE_URL/users/{user_id}
| Name | Type | Required | Default | Details | 
|---|---|---|---|---|
| user_id | String | Yes | - | The id of the user to fetch | 
| HTTP Status Code | Details | 
|---|---|
| 200 | Got the user | 
| 500 | An error occured on the server side | 
| 400 | Missing the id of the user | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "entity": {
    "id": "{user_id}",
    "name": "User name",
    "password": "38d03dd58cd1bb6b4fdc59c3d03601461118c166b48baf787b96d5589ff0758d",
    "email" : "user.mail@company.com"
  }
}
Add a user.
PUT WEB_SERVICE_URL/users
| HTTP Status Code | Details | 
|---|---|
| 200 | The user has been added | 
| 500 | An error occured on the server side | 
| 400 | Wrong PUT parameters | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "entity": {
    "id": "41U3sYipg",
    "name": "User name",
    "password": "38d03dd58cd1bb6b4fdc59c3d03601461118c166b48baf787b96d5589ff0758d",
    "email" : "user.mail@company.com"
  }
}
Update a user.
POST WEB_SERVICE_URL/users/{user_id}
| HTTP Status Code | Details | 
|---|---|
| 200 | The user has been updated | 
| 500 | An error occured on the server side | 
| 400 | Missing the user id | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "error": null,
  "status": "ok"
}
Delete a user.
DELETE WEB_SERVICE_URL/users/{user_id}
| HTTP Status Code | Details | 
|---|---|
| 200 | The user has been deleted | 
| 500 | An error occured on the server side | 
| 400 | Missing the user id | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "error": null,
  "status": "ok"
}
Applications
Get applications.
GET WEB_SERVICE_URL/applications
| Name | Type | Required | Default | Details | 
|---|---|---|---|---|
| query | String | No | - | To search on applications' name | 
| sortOrder | String | No | desc | Sort order (either asc or desc) | 
| page | Number | No | 1 | The expected page | 
| limit | Number | No | - | To limit the number of applications per page. If not specified get all applications | 
| HTTP Status Code | Details | 
|---|---|
| 200 | Got the list of applications (even if the list is empty) | 
| 500 | An error occured on the server side | 
| 400 | Wrong list of parameters | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "entities": [
    {
      "id": "4J6CUL_gZ",
      "name": "Application name",
      "scopes": [...],
      "secret" : "179a905785d4258bba255ffb812a25f2225f7d4c"
    }
  ],
  "pagination": {
    "limit": 1,
    "page": 1,
    "pages": 2,
    "size": 2
  }
}
Get information about an application.
GET WEB_SERVICE_URL/applications/{application_id}
| Name | Type | Required | Default | Details | 
|---|---|---|---|---|
| application_id | String | Yes | - | The id of the application to fetch | 
| HTTP Status Code | Details | 
|---|---|
| 200 | Got the application | 
| 500 | An error occured on the server side | 
| 400 | Missing the id of the application | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "entity": {
    "id": "{application_id}",
    "name": "Application name",
    "scopes": [...],
    "secret" : "179a905785d4258bba255ffb812a25f2225f7d4c"
  }
}
Add an application.
PUT WEB_SERVICE_URL/applications
| HTTP Status Code | Details | 
|---|---|
| 200 | The application has been added | 
| 500 | An error occured on the server side | 
| 400 | Wrong PUT parameters | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "entity": {
    "id": "41U3sYipg",
    "name": "Application name",
    "scopes": [...],
    "secret" : "179a905785d4258bba255ffb812a25f2225f7d4c"
  }
}
Update an application.
POST WEB_SERVICE_URL/applications/{application_id}
| HTTP Status Code | Details | 
|---|---|
| 200 | The application has been updated | 
| 500 | An error occured on the server side | 
| 400 | Missing the application id | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "error": null,
  "status": "ok"
}
Delete an application.
DELETE WEB_SERVICE_URL/applications/{application_id}
| HTTP Status Code | Details | 
|---|---|
| 200 | The application has been deleted | 
| 500 | An error occured on the server side | 
| 400 | Missing the application id | 
| 401 | Authentication to the web service failed | 
| 403 | Authorization forbidden for this end point | 
{
  "error": null,
  "status": "ok"
}
Client libraries
PHP client
A PHP client is also available on Github to help interface with OpenVeo Web Service.
NodeJS client
A NodeJS client is also available on Github to help interface with OpenVeo Web Service.