Applications API
Overview
getApplications
Description
Returns a list of all the Red5 Pro web applications on the server.
REQUEST
- URI:
http://{host}:5080/api/v1/applications?accessToken={security-token} - Method: GET
 - Parameters:
 
| Property | Type | Description | Required | Default | 
|---|---|---|---|---|
| accessToken | Query Param | Security token | Required if token security is enabled | 
RESPONSE
- 
Failure: NA
 - 
Data: NA
 - 
Success: HTTP CODE
200 - OK - 
Data:
 
Example
REQUEST
- URI:
http://localhost:5080/api/v1/applications?accessToken=xyz123 - Method: GET
 
RESPONSE
- Success: HTTP CODE 
200 - OK - Data:
 
{
  "status": "success",
  "code": 200,
  "data": [
    "api",
    "live"
  ],
  "timestamp": 1467060546158
}
getApplicationStatistics (all apps)
Description
Returns statistics for all applications.
REQUEST
- URI:
http://{host}:5080/api/v1/applications/statistics?accessToken={security-token} - Method: GET
 - Parameters:
 
| Property | Type | Description | Required | Default | 
|---|---|---|---|---|
| unit | Query Param | Unit of data transfer | Optional | b (bytes), kb, mb, gb | 
| accessToken | Query Param | Security token | Required if token security is enabled | |
| app | Query Param | web app to include in the report | Optional | 
RESPONSE
- Failure: HTTP CODE 
400or404or500or401
See failure status code table for more information on error cause. - Data:
 
{
  "status": "error",
  "code": <http-status-code>,
  "message": <error-message>",
  "timestamp": <server-timestamp>
}
- Success: HTTP CODE 
200 - OK - Data: Returns a list of ScopeStatistics JSON objects, depending on the number of apps that are running under red5pro. See Response objects for attribute definitions. A filtered list of applications can also be specified by providing one or multiple entries for the query parameter ‘app’ in the query string.
 
Example
REQUEST
- URI:
http://localhost:5080/api/v1/applications/statistics?accessToken=xyz123 - Method: GET
 
RESPONSE
- Success: HTTP CODE 
200 - OK - Data:
 
{
    "status": "success",
    "code": 200,
    "data": [
        {
            "name": "api",
            "path": "/default",
            "creation_time": 1623880035035,
            "depth": 1,
            "active_connections": 0,
            "total_connections": 0,
            "max_connections": 0,
            "active_subscopes": 0,
            "total_subscopes": 0,
            "max_subscopes": 0,
            "bytes_in": 0.0,
            "bytes_out": 0.0,
            "messages_out": 0,
            "messages_in": 0,
            "type": "application",
            "data_unit": "b"
        },
        {
            "name": "live",
            "path": "/default",
            "creation_time": 1623880034862,
            "depth": 1,
            "active_connections": 0,
            "total_connections": 0,
            "max_connections": 0,
            "active_subscopes": 0,
            "total_subscopes": 0,
            "max_subscopes": 0,
            "bytes_in": 0.0,
            "bytes_out": 0.0,
            "messages_out": 0,
            "messages_in": 0,
            "type": "application",
            "data_unit": "b"
        },
        {
            "name": "streammanager",
            "path": "/default",
            "creation_time": 1623880034917,
            "depth": 1,
            "active_connections": 0,
            "total_connections": 0,
            "max_connections": 0,
            "active_subscopes": 0,
            "total_subscopes": 0,
            "max_subscopes": 0,
            "bytes_in": 0.0,
            "bytes_out": 0.0,
            "messages_out": 0,
            "messages_in": 0,
            "type": "application",
            "data_unit": "b"
        }
    ],
    "timestamp": 1623880073212
}
Example2
REQUEST
- URI:
http://localhost:5080/api/v1/applications/statistics?accessToken=xyz123&app=live&app=api - Method: GET
 
RESPONSE
- Success: HTTP CODE 
200 - OK - Data:
 
{
    "status": "success",
    "code": 200,
    "data": [
        {
            "name": "api",
            "path": "/default",
            "creation_time": 1623880035035,
            "depth": 1,
            "active_connections": 0,
            "total_connections": 0,
            "max_connections": 0,
            "active_subscopes": 0,
            "total_subscopes": 0,
            "max_subscopes": 0,
            "bytes_in": 0.0,
            "bytes_out": 0.0,
            "messages_out": 0,
            "messages_in": 0,
            "type": "application",
            "data_unit": "b"
        },
        {
            "name": "live",
            "path": "/default",
            "creation_time": 1623880034862,
            "depth": 1,
            "active_connections": 0,
            "total_connections": 0,
            "max_connections": 0,
            "active_subscopes": 0,
            "total_subscopes": 0,
            "max_subscopes": 0,
            "bytes_in": 0.0,
            "bytes_out": 0.0,
            "messages_out": 0,
            "messages_in": 0,
            "type": "application",
            "data_unit": "b"
        }
    ],
    "timestamp": 162384973212
}
getApplicationStatistics (single app)
Description
Returns statistics for a single application. Optionally you can provide the relative path to the scope (a subdirectory of an application) if you wish to get statistics for that scope.
REQUEST
- URI :
http://{host}:5080/api/v1/applications/{appname}?accessToken={security-token} - Method: GET
 - Parameters:
 
| Property | Type | Description | Required | Default | 
|---|---|---|---|---|
| appname | Path Param | Application name | Required | |
| scope | Query Param | Application sub-scope path | Optional (For use with single app request) | |
| unit | Query Param | Unit of data transfer | Optional | b (bytes), kb, mb, gb | 
| accessToken | Query Param | Security token | Required if token security is enabled | 
RESPONSE
- Failure: HTTP CODE 
400or404or500or401
See failure status code table for more information on error cause. - Data:
 
{
  "status": "error",
  "code": <http-status-code>,
  "message": <error-message>",
  "timestamp": <server-timestamp>
}
- Success: HTTP CODE 
200 - OK - Data: Returns a single ScopeStatistics json object. See Response objects for attribute definitions.
 
Example
REQUEST
- URI:
http://localhost:5080/api/v1/applications/live?accessToken=xyz123 - Method: GET
 
RESPONSE
- Success: HTTP CODE 
200 - OK - Data:
 
{
  "status": "success",
  "code": 200,
  "data": {
      "name": "live",
      "path": "/default",
      "creation_time": 1467058529097,
      "depth": 1,
      "active_connections": 0,
      "total_connections": 9,
      "max_connections": 2,
      "active_subscopes": 1,
      "total_subscopes": 4,
      "max_subscopes": 1,
      "bytes_in": 10,
      "bytes_out": 0,
      "messages_out": 0,
      "messages_in": 0,
      "type": "application",
      "data_unit": "b"
    },
  "timestamp": 1467060616203
}
invoke
Description
Invokes a custom method on the application’s ApplicationAdapter class. Note: HTTP to java RMI has limitations. Use String, Double (for numerics).
The invoke API is applicable only to custom-developed Red5Pro applications and is used for invoking custom methods on the ApplicationAdapter. These custom methods may carry a business logic that is specific to the given application.
REQUEST
- URI:
http://{host}:5080/api/v1/applications/{appname}/invoke?accessToken={security-token} - Method: POST
 - Parameters:
 
| Property | Type | Description | Required | Default | 
|---|---|---|---|---|
| appname | Path Param | Application name | Required | |
Custom Method Invoke Object | 
Post Param | Json Complex Object | Required | |
| accessToken | Query Param | Security token | Required if token security is enabled | 
Custom Method Invoke Object
{
  "method": "",
  "parameters": [ ]
}
RESPONSE
- Failure: HTTP CODE 
400or404or500or401
See failure status code table for more information on error cause. - Data:
 
{
  "status": "error",
  "code": <http-status-code>,
  "message": <error-message>",
  "timestamp": <server-timestamp>
}
- Success: HTTP CODE 
200 - OK - Data: Custom JSON serialized object as per developer’s return type in the invoked method.
 
{
  "status": "success",
  "code": 200,
  "data": {CustomResponseObject},
  "timestamp": 1467060941836
}
Example 1
Below is a sample of the ApplicationAdapter of a custom Red5 Pro application with a custom method called sayHello. The objective of the method is to receive a clientname parameter and return a welcome message.
public class Application extends MultiThreadedApplicationAdapter
{
    private static Logger log = Red5LoggerFactory.getLogger(Application.class, "Application");
    public String sayHello(String name)
    {
        return "Welcome " + name;
    }
}
REQUEST
- URI:
http://localhost:5080/api/v1/applications/api/invoke?accessToken=xyz123 - Method: POST
 - Data: JSON
 
{
  "method": "sayHello",
  "parameters": [
    "Tony"
  ]
}
RESPONSE
- Success: HTTP CODE 
200 - OK - Data:
 
{
  "status": "success",
  "code": 200,
  "data": "Welcome Tony",
  "timestamp": 1467193076102
}
Example 2
In this example, we have a custom-made application with a method to accept two integers and print the sum. Below is a sample of the ApplicationAdapter of a custom Red5 Pro application with a custom method called getSum. The objective of the method is to receive two parameters and return the sum.
public class Application extends MultiThreadedApplicationAdapter
{
    private static Logger log = Red5LoggerFactory.getLogger(Application.class, "Application");
    public Integer add(Double  a, Double  b)
    {
        return a.intValue() + b.intValue();
    }
}
Note that the parameter type is declared as Double. This is because any number in JSON is a float (contains a decimal place). So if you pass 1 it is treated as 1.0. However, when returning a result, you may return any data type which can be serialized into JSON.
REQUEST
- URI:
http://localhost:5080/api/v1/applications/api/invoke?accessToken=xyz123 - Method: POST
 - Data: JSON
 
{
  "method": "getSum",
  "parameters": [
    1,
    2
  ]
}
RESPONSE
- Success: HTTP CODE 
200 - OK - Data:
 
{
  "status": "success",
  "code": 200,
  "data": 3,
  "timestamp": 1467193610836
}