26.3 26.2 26.1 25.3 25.2 25.1 24.3 24.2 24.1 23.4 23.3 23.2 23.1
26.3 26.2 26.1 25.3 25.2 25.1 24.3 24.2 24.1 23.4 23.3 23.2 23.1

OGraf Server API - Call

Renderer Registration

DataHub calls addressed to OGrafServer. Each example shows the message header and its JSON body. Send call parameters in the body as {"Params":{...}}. Replies are sent to the service named in RespondTo as a CallResult message. Method and field names are case sensitive.

OGraf-Register [CALL]

OGraf-Register

Registers a renderer with the OGraf server. RespondTo identifies the VideoIO service that owns the renderer. Registering an ID that already exists replaces the previous registration.

Params

info

object

Renderer information. info.id is required and must not be empty.

Result

Success

boolean

Whether registration succeeded.

statusCode

number

200 on success, 400 for invalid parameters or a missing renderer ID.

statusMessage

string

Description of the result.

rendererId optional

string

Registered renderer ID, present on success.

Example - Register a renderer

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "OGrafServer",
  "RespondTo": "AB-PC-Pipeline",
  "Method": "OGraf-Register",
  "ID": "register-1"
}
JSON
{
  "Params": {
    "info": {
      "id": "renderer-vio-1",
      "name": "Program renderer"
    }
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "AB-PC-Pipeline",
  "ExecutedOn": "OGrafServer",
  "Method": "OGraf-Register",
  "ID": "register-1"
}
JSON
{
  "Result": {
    "Success": true,
    "statusCode": 200,
    "statusMessage": "Renderer registered successfully",
    "rendererId": "renderer-vio-1"
  }
}

Graphic Playout

Actions on graphic instances, addressed to OGrafServer.

Load [CALL]

Load

Loads a graphic on every target and waits for each renderer to confirm. The graphic must be installed and all targets must be connected, otherwise the request is rejected with 400. Targets that already have the same graphic loaded with the same data are skipped and reported with skipped: true.

Params

graphicId

string

ID of the installed graphic.

graphicInstanceId

string

Caller-supplied graphic instance ID.

layer

number

Layer number, starting at 0.

targets

object

Map of VideoIO service names to lists of renderer routing IDs.

params

any

Load parameters. params.data contains the initial graphic data.

timeoutMs optional (default: 60000)

number

Timeout in milliseconds, from 1 to 300000.

Result

Success

boolean

Whether every target confirmed the load.

statusCode

number

Overall result code.

statusMessage

string

Summary of the result.

results optional

object

Per-target results keyed by routing ID. Omitted when the request is rejected.

Example 1 - Load a lower third on two renderers

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "OGrafServer",
  "RespondTo": "MyController",
  "Method": "Load",
  "ID": "load-1"
}
JSON
{
  "Params": {
    "graphicId": "lower-third",
    "graphicInstanceId": "lower-third-1",
    "layer": 1,
    "targets": {
      "AB-PC-Pipeline": [
        "vio-1",
        "vio-2"
      ]
    },
    "params": {
      "data": {
        "title": "Hello"
      }
    }
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "MyController",
  "ExecutedOn": "OGrafServer",
  "Method": "Load",
  "ID": "load-1"
}
JSON
{
  "Result": {
    "Success": true,
    "statusCode": 200,
    "statusMessage": "lower-third load confirmed on 2 renderer(s)",
    "results": {
      "vio-1": {
        "ok": true,
        "skipped": true
      },
      "vio-2": {
        "ok": true
      }
    }
  }
}
Example 2 - One renderer fails to confirm the load

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "OGrafServer",
  "RespondTo": "MyController",
  "Method": "Load",
  "ID": "load-2"
}
JSON
{
  "Params": {
    "graphicId": "lower-third",
    "graphicInstanceId": "lower-third-1",
    "layer": 1,
    "targets": {
      "AB-PC-Pipeline": [
        "vio-1",
        "vio-2"
      ]
    },
    "params": {
      "data": {
        "title": "Hello"
      }
    },
    "timeoutMs": 10000
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "MyController",
  "ExecutedOn": "OGrafServer",
  "Method": "Load",
  "ID": "load-2"
}
JSON
{
  "Result": {
    "Success": false,
    "statusCode": 504,
    "statusMessage": "1 of 2 renderers did not confirm load of lower-third: vio-2",
    "results": {
      "vio-1": {
        "ok": true
      },
      "vio-2": {
        "ok": false,
        "reason": "timeout"
      }
    }
  }
}
Play [CALL]

Play

Plays a graphic on every target. By default the call returns once the play action has been sent, without waiting for the renderers. Targets that are unavailable are reported individually while the others still play. With ensureSync set to true, the graphic must be installed and all targets connected. The graphic is first loaded where needed and played only after every load is confirmed. If a load fails, nothing is played and the result describes the failure. Load and play share one timeout.

Params

graphicId

string

Graphic ID. Must be installed when ensureSync is true.

graphicInstanceId

string

Graphic instance ID.

layer

number

Layer number, starting at 0.

targets

object

Map of VideoIO service names to lists of renderer routing IDs.

ensureSync optional (default: false)

boolean

Load the graphic where needed and wait for the renderers to confirm.

loadParams optional

any

Required when ensureSync is true. loadParams.data contains the initial graphic data.

playParams optional

any

Play parameters such as delta, goto or skipAnimation.

timeoutMs optional (default: 60000)

number

Timeout in milliseconds, from 1 to 300000.

Result

Success

boolean

Whether the action succeeded on every target.

statusCode

number

Overall result code.

statusMessage

string

Summary of the result.

results optional

object

Per-target results keyed by routing ID. Omitted when the request is rejected.

Example 1 - Play a loaded graphic

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "OGrafServer",
  "RespondTo": "MyController",
  "Method": "Play",
  "ID": "play-1"
}
JSON
{
  "Params": {
    "graphicId": "lower-third",
    "graphicInstanceId": "lower-third-1",
    "layer": 1,
    "targets": {
      "AB-PC-Pipeline": [
        "vio-1"
      ]
    },
    "playParams": {
      "delta": 1
    }
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "MyController",
  "ExecutedOn": "OGrafServer",
  "Method": "Play",
  "ID": "play-1"
}
JSON
{
  "Result": {
    "Success": true,
    "statusCode": 200,
    "statusMessage": "lower-third play sent to 1 renderer(s)",
    "results": {
      "vio-1": {
        "ok": true
      }
    }
  }
}
Example 2 - Load and play with confirmation

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "OGrafServer",
  "RespondTo": "MyController",
  "Method": "Play",
  "ID": "play-2"
}
JSON
{
  "Params": {
    "graphicId": "lower-third",
    "graphicInstanceId": "lower-third-1",
    "layer": 1,
    "targets": {
      "AB-PC-Pipeline": [
        "vio-1"
      ]
    },
    "ensureSync": true,
    "loadParams": {
      "data": {
        "title": "Hello"
      }
    },
    "playParams": {
      "delta": 1
    }
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "MyController",
  "ExecutedOn": "OGrafServer",
  "Method": "Play",
  "ID": "play-2"
}
JSON
{
  "Result": {
    "Success": true,
    "statusCode": 200,
    "statusMessage": "lower-third play confirmed on 1 renderer(s)",
    "results": {
      "vio-1": {
        "ok": true
      }
    }
  }
}
Stop [CALL]

Stop

Stops a graphic on every target. Returns once the action has been sent, without waiting for the graphic to stop. Disconnected targets are reported individually while the others still stop.

Params

graphicId

string

Graphic ID.

graphicInstanceId

string

Graphic instance ID.

layer

number

Layer number, starting at 0.

targets

object

Map of VideoIO service names to lists of renderer routing IDs.

params optional

any

Stop parameters, such as skipAnimation.

timeoutMs optional (default: 60000)

number

Timeout in milliseconds, from 1 to 300000.

Result

Success

boolean

Whether the action was sent to every target.

statusCode

number

Overall result code.

statusMessage

string

Summary of the result.

results optional

object

Per-target results keyed by routing ID. Omitted when the request is rejected.

Example - Stop without animation

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "OGrafServer",
  "RespondTo": "MyController",
  "Method": "Stop",
  "ID": "stop-1"
}
JSON
{
  "Params": {
    "graphicId": "lower-third",
    "graphicInstanceId": "lower-third-1",
    "layer": 1,
    "targets": {
      "AB-PC-Pipeline": [
        "vio-1"
      ]
    },
    "params": {
      "skipAnimation": true
    }
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "MyController",
  "ExecutedOn": "OGrafServer",
  "Method": "Stop",
  "ID": "stop-1"
}
JSON
{
  "Result": {
    "Success": true,
    "statusCode": 200,
    "statusMessage": "lower-third stop sent to 1 renderer(s)",
    "results": {
      "vio-1": {
        "ok": true
      }
    }
  }
}
Continue [CALL]

Continue

Continues a graphic on every target. Returns once the action has been sent, without waiting for the renderers. Disconnected targets are reported individually while the others still continue.

Params

graphicId

string

Graphic ID.

graphicInstanceId

string

Graphic instance ID.

layer

number

Layer number, starting at 0.

targets

object

Map of VideoIO service names to lists of renderer routing IDs.

params optional

any

Play parameters such as delta, goto or skipAnimation.

timeoutMs optional (default: 60000)

number

Timeout in milliseconds, from 1 to 300000.

Result

Success

boolean

Whether the action was sent to every target.

statusCode

number

Overall result code.

statusMessage

string

Summary of the result.

results optional

object

Per-target results keyed by routing ID. Omitted when the request is rejected.

Example - Continue a graphic

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "OGrafServer",
  "RespondTo": "MyController",
  "Method": "Continue",
  "ID": "continue-1"
}
JSON
{
  "Params": {
    "graphicId": "lower-third",
    "graphicInstanceId": "lower-third-1",
    "layer": 1,
    "targets": {
      "AB-PC-Pipeline": [
        "vio-1"
      ]
    },
    "params": {}
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "MyController",
  "ExecutedOn": "OGrafServer",
  "Method": "Continue",
  "ID": "continue-1"
}
JSON
{
  "Result": {
    "Success": true,
    "statusCode": 200,
    "statusMessage": "lower-third continue sent to 1 renderer(s)",
    "results": {
      "vio-1": {
        "ok": true
      }
    }
  }
}
Update [CALL]

Update

Updates the data of a graphic on every target. Returns once the action has been sent, without waiting for the new data to appear. Disconnected targets are reported individually while the others still update.

Params

graphicId

string

Graphic ID.

graphicInstanceId

string

Graphic instance ID.

layer

number

Layer number, starting at 0.

targets

object

Map of VideoIO service names to lists of renderer routing IDs.

params optional

any

Update parameters. params.data contains the new graphic data and params.skipAnimation optionally skips animation.

timeoutMs optional (default: 60000)

number

Timeout in milliseconds, from 1 to 300000.

Result

Success

boolean

Whether the action was sent to every target.

statusCode

number

Overall result code.

statusMessage

string

Summary of the result.

results optional

object

Per-target results keyed by routing ID. Omitted when the request is rejected.

Example - Update a lower third

Request (you send)

JSON
{
  "Type": "Call",
  "Target": "OGrafServer",
  "RespondTo": "MyController",
  "Method": "Update",
  "ID": "update-1"
}
JSON
{
  "Params": {
    "graphicId": "lower-third",
    "graphicInstanceId": "lower-third-1",
    "layer": 1,
    "targets": {
      "AB-PC-Pipeline": [
        "vio-1"
      ]
    },
    "params": {
      "data": {
        "title": "Updated"
      }
    }
  }
}

Response (you receive)

JSON
{
  "Type": "CallResult",
  "Target": "MyController",
  "ExecutedOn": "OGrafServer",
  "Method": "Update",
  "ID": "update-1"
}
JSON
{
  "Result": {
    "Success": true,
    "statusCode": 200,
    "statusMessage": "lower-third update sent to 1 renderer(s)",
    "results": {
      "vio-1": {
        "ok": true
      }
    }
  }
}