Vuflows
Vuflows are used to hook the VIS into a TaskEngine setup.
Vuflow Object
{
"id": "a5d067bd-cb45-4d7b-814c-e1caa0833304",
"name": "Example Vuflow",
"configurationJson": "{...}"
}
Configuration JSON
Example:
To be defined.
Schema:
{
"vuflows": {
"type": "array",
"items": {
"title": "vuflow",
"type": "object",
"properties": {
"name": {
"type": "string"
},
"ismUrl": {
"type": "string"
},
"type": {
"type": "string",
"enum": [
"TaskEngine"
]
},
"taskEngineSpecific": {
"type": "object",
"oneOf": [
{
"$ref": "#/definitions/taskEngines"
}
]
},
"streamingServer": {
"title": "streaming Server",
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"USP"
]
},
"streamingServerSpecific": {
"type": "object",
"oneOf": [
{
"$ref": "#/definitions/uspVod"
},
{
"$ref": "#/definitions/wowzaVod"
}
]
}
}
},
"outputUrls": {
"type": "array",
"items": {
"title": "stream",
"type": "object",
"anyOf": [
{
"$ref": "#/definitions/hlsVod"
},
{
"$ref": "#/definitions/hlseVod"
},
{
"$ref": "#/definitions/hssVod"
},
{
"$ref": "#/definitions/dashVod"
},
{
"$ref": "#/definitions/hdsVod"
}
]
}
}
},
"required": [
"name",
"type",
"ismUrl",
"taskEngineSpecific",
"streamingServer",
"outputUrls"
]
}
},
"definitions": {
"taskEngines": {
"properties": {
"apiUrl": { "type": "string" },
"vuflowGuiUrl": { "type": "string" },
"callbackUrls": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [ "apiUrl", "vuflowGuiUrl" ],
"additionalProperties": false
},
"uspVod": {
"properties": {
"primaryPublishingPoint": {
"type": "object",
"properties": {
"uspAPI": { "type": "string" },
"uspAPIKey": { "type": "string" }
},
"required": [ "uspAPI", "uspAPIKey" ]
},
"secondaryPublishingPoint": {
"type": "object",
"properties": {
"uspAPI": { "type": "string" },
"uspAPIKey": { "type": "string" }
},
"required": [ "uspAPI", "uspAPIKey" ]
}
},
"required": [ "primaryPublishingPoint", "secondaryPublishingPoint" ],
"additionalProperties": false
},
"wowzaVod": {
"properties": {
"not set": { "type": "string" }
},
"additionalProperties": false
},
"hlsVod": {
"properties": {
"streamProtocol": { "enum": [ "HLS" ] },
"vodCdnPrimaryUrl": {
"type": "string"
},
"vodCdnSecondaryUrl": {
"type": "string"
},
"vodPrivateUrl": {
"type": "string"
},
"vodOriginPrimaryUrl": {
"type": "string"
},
"vodOriginSecondaryUrl": {
"type": "string"
}
},
"required": [ "streamProtocol", "vodCdnPrimaryUrl", "vodOriginPrimaryUrl" ],
"additionalProperties": false
},
"hlseVod": {
"properties": {
"streamProtocol": { "enum": [ "HLSe" ] },
"vodCdnPrimaryUrl": {
"type": "string"
},
"vodCdnSecondaryUrl": {
"type": "string"
},
"vodPrivateUrl": {
"type": "string"
},
"vodOriginPrimaryUrl": {
"type": "string"
},
"vodOriginSecondaryUrl": {
"type": "string"
}
},
"required": [ "streamProtocol", "vodCdnPrimaryUrl", "vodOriginPrimaryUrl" ],
"additionalProperties": false
},
"hssVod": {
"properties": {
"streamProtocol": { "enum": [ "HSS" ] },
"vodCdnPrimaryUrl": {
"type": "string"
},
"vodCdnSecondaryUrl": {
"type": "string"
},
"vodPrivateUrl": {
"type": "string"
},
"vodOriginPrimaryUrl": {
"type": "string"
},
"vodOriginSecondaryUrl": {
"type": "string"
}
},
"required": [ "streamProtocol", "vodCdnPrimaryUrl", "vodOriginPrimaryUrl" ],
"additionalProperties": false
},
"dashVod": {
"properties": {
"streamProtocol": { "enum": [ "DASH" ] },
"vodCdnPrimaryUrl": {
"type": "string"
},
"vodCdnSecondaryUrl": {
"type": "string"
},
"vodPrivateUrl": {
"type": "string"
},
"vodOriginPrimaryUrl": {
"type": "string"
},
"vodOriginSecondaryUrl": {
"type": "string"
}
},
"required": [ "streamProtocol", "vodCdnPrimaryUrl", "vodOriginPrimaryUrl" ],
"additionalProperties": false
},
"hdsVod": {
"properties": {
"streamProtocol": { "enum": [ "HDS" ] },
"vodCdnPrimaryUrl": {
"type": "string"
},
"vodCdnSecondaryUrl": {
"type": "string"
},
"vodPrivateUrl": {
"type": "string"
},
"vodOriginPrimaryUrl": {
"type": "string"
},
"vodOriginSecondaryUrl": {
"type": "string"
}
},
"required": [ "streamProtocol", "vodCdnPrimaryUrl", "vodOriginPrimaryUrl" ],
"additionalProperties": false
}
}
}
Task Engine Object
A parsed Vuflow can be returned as a Task Engine object:
{
"name": "Task Engine Example",
"vuflowType": 0,
"vuflowDetails": {},
"streamingServerDetails": {},
"outputStreams": [
{
"streamProtocol": 0,
"vodCdnPrimaryUrl": "cdn-primary-url",
"vodCdnSecondaryUrl": "cdn-secondary-url",
"vodOriginPrimaryUrl": "origin-primary-url",
"vodOriginSecondaryUrl": "origin-secondary-url",
"vodPrivateUrl": "origin-private-url"
}
],
"callbackUrls": [
"url-one"
],
"ismUrl": "ism-url-here"
}
Vuflow Types:
TaskEngine = 0
Stream Protocols:
HLS = 0
HSS = 1
DASH = 2
HDS = 3
HLSe = 4
Supported Actions
POST /vuflow/
Add a Vuflow.
Request Body:
{
"id": "cc93e6f3-4cf1-4ab7-9f2b-ed80bc3f378b",
"name": "Example Vuflow",
"configurationJson": "{...}"
}
Note: id
is optional. If not provided, one will be generated for you.
Response: 200 OK
or 400 Bad Request
if the JSON is rejected.
PUT /vuflow/{id}
Update a Vuflow by Id.
Request Body:
{
"name": "Example Vuflow",
"configurationJson": "{...}"
}
Response: 200 OK
or 400 Bad Request
if the JSON is rejected.
GET /vuflow/{id}
Get Vuflow by Id.
Query Parameters:
Name | Type | Required | Description |
---|---|---|---|
noCache | bool | No | Whether or not to bypass cache. Defaults to False. |
Response:
200 OK
and JSON containing the Vuflow object.
or
204 No Content
if no Vuflow was found.
GET /vuflow/
Get all Vuflows.
Query Parameters:
Name | Type | Required | Description |
---|---|---|---|
noCache | bool | No | Whether or not to bypass cache. Defaults to False. |
Response: 200 OK
and a JSON array containing multiple Vuflow objects.
GET /vuflow/taskengines/{id}
Get the specified Vuflow as a parsed TaskEngine object.
Response: 200 OK
and JSON containing the TaskEngine object.
DEL /vuflow/{id}
Delete a Vuflow by Id.
Response: 200 OK
or 404 Not Found
if the specified Vuflow is not found.