Archiverflows


Archiverflow represents the configuration between ControlHub and the archiver service, allowing ControlHub to stream archiver Events.


Archiverflow Object

An Archiverflow object will contain the following:

{
    "id": "221529f1-965a-4197-b38a-ebcbe16103b0",
    "name": "Archiverflow 01 (Example)",
    "configurationJson": "{...}"
}

The configurationJson property contains all of the configuration, and is the essential part.

ConfigurationJson

Example:

{
  "archiverflows": [
    {
      "name": "default",
      "type": "ArchiverFlow",
      "outputUrls": [
        {
          "streamProtocol": "HLS",
          "cdnPrimaryUrl": "https://origin.vualto.example.vualto.com/catchup/{capture_id}/{profile_id}/archive.ism/.m3u8?t={starttime}-{endtime}",
          "cdnSecondaryUrl": "",
          "privateUrl": "",
          "originPrimaryUrl": "https://origin.vualto.example.vualto.com/catchup/{capture_id}/{profile_id}/archive.ism/.m3u8?t={starttime}-{endtime}",
          "originSecondaryUrl": ""
        },
        {
          "streamProtocol": "DASH",
          "cdnPrimaryUrl": "https://origin.vualto.example.vualto.com/catchup/{capture_id}/{profile_id}/archive.ism/.mpd?t={starttime}-{endtime}",
          "cdnSecondaryUrl": "",
          "privateUrl": "",
          "originPrimaryUrl": "https://origin.vualto.example.vualto.com/catchup/{capture_id}/{profile_id}/archive.ism/.mpd?t={starttime}-{endtime}",
          "originSecondaryUrl": ""
        },
        {
          "streamProtocol": "HSS",
          "cdnPrimaryUrl": "https://origin.vualto.example.vualto.com/catchup/{capture_id}/{profile_id}/archive.ism/Manifest?t={starttime}-{endtime}",
          "cdnSecondaryUrl": "",
          "privateUrl": "",
          "originPrimaryUrl": "https://origin.vualto.example.vualto.com/catchup/{capture_id}/{profile_id}/archive.ism/Manifest?t={starttime}-{endtime}",
          "originSecondaryUrl": ""
        }
      ]
    }
  ]
}

Schema:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "archiverflow Json Schema",
  "description": "archiverflow Json",
  "type": "object",
  "properties": {
    "archiverflows": {
      "type": "array",
      "items": {
        "title": "archiverflow",
        "type": "object",
        "properties": {
          "outputUrls": {
            "type": "array",
            "items": {
              "title": "stream",
              "type": "object",
              "anyOf": [
                { "$ref": "#/definitions/hlsArchiver" },
                { "$ref": "#/definitions/hlseArchiver" },
                { "$ref": "#/definitions/hssArchiver" },
                { "$ref": "#/definitions/dashArchiver" },
                { "$ref": "#/definitions/hdsArchiver" }
              ]
            }
          }
        },
        "required": [ "outputUrls" ]
      }
    }
  },
  "definitions": {
    "hlsArchiver": {
      "properties": {
        "streamProtocol": { "enum": [ "HLS" ] },
        "cdnPrimaryUrl": {
          "type": "string"
        },
        "cdnSecondaryUrl": {
          "type": "string"
        },
        "privateUrl": {
          "type": "string"
        },
        "originPrimaryUrl": {
          "type": "string"
        },
        "originSecondaryUrl": {
          "type": "string"
        }
      },
      "required": [ "streamProtocol", "cdnPrimaryUrl", "originPrimaryUrl" ],
      "additionalProperties": false
    },
    "hlseArchiver": {
      "properties": {
        "streamProtocol": { "enum": [ "HLSe" ] },
        "cdnPrimaryUrl": {
          "type": "string"
        },
        "cdnSecondaryUrl": {
          "type": "string"
        },
        "privateUrl": {
          "type": "string"
        },
        "originPrimaryUrl": {
          "type": "string"
        },
        "originSecondaryUrl": {
          "type": "string"
        }
      },
      "required": [ "streamProtocol", "cdnPrimaryUrl", "originPrimaryUrl" ],
      "additionalProperties": false
    },
    "hssArchiver": {
      "properties": {
        "streamProtocol": { "enum": [ "HSS" ] },
        "cdnPrimaryUrl": {
          "type": "string"
        },
        "cdnSecondaryUrl": {
          "type": "string"
        },
        "privateUrl": {
          "type": "string"
        },
        "originPrimaryUrl": {
          "type": "string"
        },
        "originSecondaryUrl": {
          "type": "string"
        }
      },
      "required": [ "streamProtocol", "cdnPrimaryUrl", "originPrimaryUrl" ],
      "additionalProperties": false
    },
    "dashArchiver": {
      "properties": {
        "streamProtocol": { "enum": [ "DASH" ] },
        "cdnPrimaryUrl": {
          "type": "string"
        },
        "cdnSecondaryUrl": {
          "type": "string"
        },
        "privateUrl": {
          "type": "string"
        },
        "originPrimaryUrl": {
          "type": "string"
        },
        "originSecondaryUrl": {
          "type": "string"
        }
      },
      "required": [ "streamProtocol", "cdnPrimaryUrl", "originPrimaryUrl" ],
      "additionalProperties": false
    },
    "hdsArchiver": {
      "properties": {
        "streamProtocol": { "enum": [ "HDS" ] },
        "cdnPrimaryUrl": {
          "type": "string"
        },
        "cdnSecondaryUrl": {
          "type": "string"
        },
        "privateUrl": {
          "type": "string"
        },
        "originPrimaryUrl": {
          "type": "string"
        },
        "originSecondaryUrl": {
          "type": "string"
        }
      },
      "required": [ "streamProtocol", "cdnPrimaryUrl", "originPrimaryUrl" ],
      "additionalProperties": false
    }
  }
}

Supported Actions

POST /archiverflow/

Add an Archiverflow.

{
  "id": "90b3e9c7-b304-479a-92c1-09ff4af001d5",
  "name": "archiverflow-name",
  "configurationJson": "{...}"
}

Response: 200 OK or 400 Bad Request if the JSON schema is invalid.


PUT /archiverflow/{id}

Update an Archiverflow by Id.

This request is the same as the above, but with the Id in the route instead of the body.

Response: 200 OK or 400 Bad Request if the JSON schema is invalid.


GET /archiverflow/

Get all Archiverflows.

Query Parameters:

Name Type Required Description
noCache bool No Whether or not to skip cache. Defaults to False.

Response: 200 OK and JSON array containing multiple Archiverflow object.


GET /archiverflow/{id}

Get Archiverflow by Id.

Query Parameters:

Name Type Required Description
noCache bool No Whether or not to skip cache. Defaults to False.

Response:

200 OK and JSON containing Archiverflow object.

or

204 No Content if no Archiverflow exists with the given Id.


DELETE /archiverflow/{id}

Delete an Archiverflow by Id.

Response: 200 OK