The Mosart Remote Control Service (RCS) provides a REST API for controlling Viz Mosart rundowns using REST.
Copy RemoteDispatcherServiceConfig.xml inC:\Program Files (x86)\Mosart Medialab\Mosart Server\ConfigurationFiles
to
C:\ProgramData\Mosart Medialab\ConfigurationFiles.
Open the copied file in a text editor.
Locate the <item> element with name="RestApiKey"
Set the value to an arbitrary, string that you choose.
All API clients must include this key to authorize their requests.
For example:
Save the file.
From Windows Services, restart the Mosart Remote Control Service.
Make an HTTP request to http://[machine-name]:55167.
For example:
If you want to enable accessing the API via HTTPS, you need to edit the RemoteDispatcherServiceConfig.xml changing the following items:
/backup setup
If you want your API calls to go to the currently active Mosart Server, you can route them through Mosart Web Applications.
Install it on a separate machine and configure it to connect to both main and backup. Then you can use the endpoint http://[web-apps-machine-name]:65152 and Web Apps will act as a proxy and redirect the call to the active server.
Mosart Server ships with an interactive documentation page that will be available after enabling the Mosart REST API.
interactively: Swagger UI (local instance).
GET /api/v1/assets/graphics (since v5.13.0)
.
POST /api/v1/assets/graphics/{}/take (since v5.13.0)
POST /api/v1/assets/graphics/{mosartItemId}/take-out (since v5.13.0)
Take or take out an overlay graphics by its Mosart id.
mosartItemId: The . id property from /graphics.
POST /api/v1/assets/graphics/take?name={name} (since v5.13.0)
POST /api/v1/assets/graphics/take-out?name={name} (since v5.13.0)
Take or take out an overlay graphics by its name.
name: The slug of the graphic. This is the name visible in the Viz Mosart GUI. slug property from /graphics.
PATCH /api/v1/devices/{} (since v5.13.0)
Sets the standby status of the specified device type.
type: audio, audio-player, fullscreen-graphics, generic-rest, gpi, graphics, lights, loudness, robotic-camera, router, subtitling, switcher, video, video-wall, virtual-set, weather.-graphics, generic-rest, graphics, robotic-camera
Example of the request body
PATCH /api/v1/devices/{}/{id} (since v5.13.0)
Sets the standby state for a single device/controller identified by one ID.
type: fullscreen-graphics, generic-rest, graphics, robotic-camera
id: The device (or controller) ID. For graphics, this can be the engine ID or the destination.
Example of the request body
PATCH /api/v1/devices/{type}/{} (since v5.13.0)
Sets standby for a device addressed by controller and device ids.
type: robotic-camera
controllerId: The controller ID
deviceId: The device ID.
Example of the request body
GET /api/v1/media/search?name={clip-name} (since v5.11.0)
Searches the video servers configured in Mosart and returns a list of clips.
clip-name: The word you want to search for.
GET /api/v1/settings/nrcs (since v5.13.0)
Get the details of how Mosart is configured to connect to the NRCS.
PATCH /api/v1/settings/nrcs (since v5.13.0)
Change the NRCS connection in Mosart. Can we used to switch between different NRCS systems. I.e. using Showmaker for certain shows.
GET /build (since v5.1.0)
GET /api/v1/build (since v5.4.0)
Information about the version of the Mosart Server.
GET /status (since v5.4.0)
GET /api/v1/status (since v5.4.0)
Get the status of the Mosart server.
Example of returned status
GET /api/v1/timeline (since v5.13.0)
Get timeline information including timeline status, current story, next story, current item and next item.
GET /api/v1/rundown (since v5.13.0)
Get the rundown that is currently loaded.
Example of response.
{
"id": "a1e1e678-4adc-420a-bdbb-8aaa76dc6cf0",
"name": "graphics",
"stories": [
{
"id": "ba6f770a-1962-47ec-bdbe-54b81b3c25a6",
"insertId": "NSID-1",
"storyDuration": 10,
"storyPlannedDuration": 0,
"storyBackTime": -1,
"pageNumber": "",
"slug": "Untitled",
"accessories": [
{
"id": "100_a1e1e678-4adc-420a-bdbb-8aaa76dc6cf0_ba6f770a-1962-47ec-bdbe-54b81b3c25a6_5",
"type": "100",
"variant": "MANUAL-DSK",
"slug": "Mosart=L|M|O",
"storyId": "ba6f770a-1962-47ec-bdbe-54b81b3c25a6",
"status": 1,
"graphicType": "MANUAL",
"handlerName": "DSK",
"description": "(DSK) - Mosart=L|M|O",
"hasContent": true,
"in": 0,
"duration": 5,
"plannedDuration": 5,
"actualDuration": 0,
"fields": [
{
"name": "graphics_description",
"value": "Mosart=L|M|O",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "graphics_id",
"value": "13059",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "tc_dur",
"value": "00:05",
"default": "00:00",
"fieldType": "TIMECODE",
"keyList": null,
"inputMask": "mm:ss",
"servers": null
},
{
"name": "continuecount",
"value": "-2",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "payloaduri",
"value": "/dataelements/13059/payload",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "thumbnailuri",
"value": "/dataelements/13059/thumb",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "elementuri",
"value": "/dataelements/13059",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "editoruri",
"value": "/app/pilotedge/pilotedge.html?dataelement=13059&edit=",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
}
],
"hasTemplate": null,
"emptyTemplate": null,
"templatePlaceHolders": null
}
],
"items": [
{
"subItems": [
{
"id": "100_a1e1e678-4adc-420a-bdbb-8aaa76dc6cf0_ba6f770a-1962-47ec-bdbe-54b81b3c25a6_2",
"type": "100",
"variant": "TIMECODE-DSK",
"slug": "Mosart=L|-00:00|00:29",
"storyId": "ba6f770a-1962-47ec-bdbe-54b81b3c25a6",
"status": 0,
"graphicType": "",
"handlerName": "DSK",
"description": "(DSK) - Mosart=L|-00:00|00:29",
"hasContent": true,
"in": 0,
"duration": 29,
"plannedDuration": 29,
"actualDuration": 0,
"fields": [
{
"name": "graphics_description",
"value": "Mosart=L|-00:00|00:29",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "graphics_id",
"value": "23757",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "tc_dur",
"value": "00:29",
"default": "00:00",
"fieldType": "TIMECODE",
"keyList": null,
"inputMask": "mm:ss",
"servers": null
},
{
"name": "continuecount",
"value": "0",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "payloaduri",
"value": "/dataelements/23757/payload",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "thumbnailuri",
"value": "/dataelements/23757/thumb",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "elementuri",
"value": "/dataelements/23757",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "editoruri",
"value": "/app/pilotedge/pilotedge.html?dataelement=23757&edit=",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "tc_in",
"value": "00:00",
"default": "00:00",
"fieldType": "TIMECODE",
"keyList": null,
"inputMask": "mm:ss",
"servers": null
}
],
"hasTemplate": null,
"emptyTemplate": null,
"templatePlaceHolders": null
}
],
"transition": {
"type": "Mix",
"rateOrIndex": 0
},
"bodyText": "",
"id": "0_a1e1e678-4adc-420a-bdbb-8aaa76dc6cf0_ba6f770a-1962-47ec-bdbe-54b81b3c25a6_CAMERA1_1",
"type": "0",
"variant": "1",
"slug": "CAMERA 1",
"storyId": "ba6f770a-1962-47ec-bdbe-54b81b3c25a6",
"status": 0,
"graphicType": null,
"handlerName": null,
"description": null,
"hasContent": true,
"in": 0,
"duration": 5,
"plannedDuration": 5,
"actualDuration": 0,
"fields": [
{
"name": "xpoint",
"value": "CAM1",
"default": "CAM1",
"fieldType": "LIST",
"keyList": "mixerinputs",
"inputMask": null,
"servers": null
},
{
"name": "sr_create_story_clip",
"value": "False",
"default": null,
"fieldType": null,
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "sr_publish_story_clip",
"value": "False",
"default": null,
"fieldType": null,
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "sr_story_clip_id",
"value": "",
"default": null,
"fieldType": null,
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "sr_story_clip_slug",
"value": "",
"default": null,
"fieldType": null,
"keyList": null,
"inputMask": null,
"servers": null
}
],
"hasTemplate": true,
"emptyTemplate": false,
"templatePlaceHolders": null
},
{
"subItems": [],
"transition": {
"type": "Mix",
"rateOrIndex": 0
},
"bodyText": "",
"id": "4_a1e1e678-4adc-420a-bdbb-8aaa76dc6cf0_ba6f770a-1962-47ec-bdbe-54b81b3c25a6_Mosart=F_4",
"type": "4",
"variant": "FULL",
"slug": "Mosart=F",
"storyId": "ba6f770a-1962-47ec-bdbe-54b81b3c25a6",
"status": 0,
"graphicType": null,
"handlerName": "FULL",
"description": null,
"hasContent": true,
"in": 5,
"duration": 5,
"plannedDuration": 5,
"actualDuration": 0,
"fields": [
{
"name": "scenename",
"value": null,
"default": "",
"fieldType": "TEXT",
"keyList": "",
"inputMask": null,
"servers": null
},
{
"name": "text",
"value": null,
"default": "",
"fieldType": "TEXT",
"keyList": "",
"inputMask": null,
"servers": null
},
{
"name": "graphics_description",
"value": "Mosart=F",
"default": "",
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "graphics_id",
"value": "23661",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "tc_dur",
"value": "00:05",
"default": "00:00",
"fieldType": "TIMECODE",
"keyList": null,
"inputMask": "mm:ss",
"servers": null
},
{
"name": "continuecount",
"value": "1",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "payloaduri",
"value": "/dataelements/23661/payload",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "thumbnailuri",
"value": "/dataelements/23661/thumb",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "elementuri",
"value": "/dataelements/23661",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "editoruri",
"value": "/app/pilotedge/pilotedge.html?dataelement=23661&edit=",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
}
],
"hasTemplate": true,
"emptyTemplate": false,
"templatePlaceHolders": null
}
]
},
{
"id": "ca6a3127-48a6-42e9-814b-a79ccafa8a12",
"insertId": "ba6f770a-1962-47ec-bdbe-54b81b3c25a6",
"storyDuration": 5,
"storyPlannedDuration": 0,
"storyBackTime": -1,
"pageNumber": "",
"slug": "Untitled",
"accessories": [],
"items": [
{
"subItems": [
{
"id": "100_a1e1e678-4adc-420a-bdbb-8aaa76dc6cf0_ca6a3127-48a6-42e9-814b-a79ccafa8a12_2",
"type": "100",
"variant": "DSK",
"slug": "A test/Mosart=L",
"storyId": "ca6a3127-48a6-42e9-814b-a79ccafa8a12",
"status": 0,
"graphicType": "",
"handlerName": "DSK",
"description": "(DSK) - A test/Mosart=L",
"hasContent": true,
"in": 0,
"duration": 5,
"plannedDuration": 5,
"actualDuration": 0,
"fields": [
{
"name": "graphics_description",
"value": "A test/Mosart=L",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "graphics_id",
"value": "14617",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "tc_dur",
"value": "00:05",
"default": "00:00",
"fieldType": "TIMECODE",
"keyList": null,
"inputMask": "mm:ss",
"servers": null
},
{
"name": "continuecount",
"value": "-2",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "payloaduri",
"value": "/dataelements/14617/payload",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "thumbnailuri",
"value": "/dataelements/14617/thumb",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "elementuri",
"value": "/dataelements/14617",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "editoruri",
"value": "/app/pilotedge/pilotedge.html?dataelement=14617&edit=",
"default": null,
"fieldType": "TEXT",
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "tc_in",
"value": "00:00",
"default": "00:00",
"fieldType": "TIMECODE",
"keyList": null,
"inputMask": "mm:ss",
"servers": null
}
],
"hasTemplate": null,
"emptyTemplate": null,
"templatePlaceHolders": null
}
],
"transition": {
"type": "Mix",
"rateOrIndex": 0
},
"bodyText": "",
"id": "0_a1e1e678-4adc-420a-bdbb-8aaa76dc6cf0_ca6a3127-48a6-42e9-814b-a79ccafa8a12_CAMERA1_1",
"type": "0",
"variant": "1",
"slug": "CAMERA 1",
"storyId": "ca6a3127-48a6-42e9-814b-a79ccafa8a12",
"status": 0,
"graphicType": null,
"handlerName": null,
"description": null,
"hasContent": true,
"in": 0,
"duration": 5,
"plannedDuration": 5,
"actualDuration": 0,
"fields": [
{
"name": "xpoint",
"value": "CAM1",
"default": "CAM1",
"fieldType": "LIST",
"keyList": "mixerinputs",
"inputMask": null,
"servers": null
},
{
"name": "sr_create_story_clip",
"value": "False",
"default": null,
"fieldType": null,
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "sr_publish_story_clip",
"value": "False",
"default": null,
"fieldType": null,
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "sr_story_clip_id",
"value": "",
"default": null,
"fieldType": null,
"keyList": null,
"inputMask": null,
"servers": null
},
{
"name": "sr_story_clip_slug",
"value": "",
"default": null,
"fieldType": null,
"keyList": null,
"inputMask": null,
"servers": null
}
],
"hasTemplate": true,
"emptyTemplate": false,
"templatePlaceHolders": null
}
]
}
]
}
GET /api/v1/command/open-rundown?id={rundown-id} (s)
Load a specific rundown in Mosart.
rundowm-id: Either the name or id of the rundown. Both can be found from the response of /rundown.
GET /api/v1/command/reload (since v5.4.0)
Reload the current rundown.
GET /api/v1/command/start-continue (since v5.4.0)
Take the next item in the rundown. Has some optional URL parameters:
option: , Mix, Wipe, Effect
rate: The transition rate for mix/wipe (integer)
effect: The effect number (integer)
delay: The delay in milliseconds for continue (integer)
GET /api/v1/command/skip-next (since v5.10.0)
Skip the next item in the rundown.
GET /api/v1/command/un-skip-next (since v5.10.0)
Unskip last skipped item in the rundown.
GET /api/v1/command/skip-next-sub-item (since v5.10.0)
Skip the next sub item in the rundown.
GET /api/v1/command/un-skip-next-sub-item (since v5.10.0)
Unskip last skipped sub item in the rundown.
GET /api/v1/command/start-from-top (since v5.4.0)
Restart the rundown from the first story.
GET /api/v1/command/set-as-next?storyid={story-id} (since v5.10.0)
Set story as next.
GET /api/v1/command/rehearsal-mode?state={state} (since v5.4.0)
Enable/disable/toggle rehearsal mode.
state: true = enable, false = disable, no parameter = toggle.
GET /api/v1/command/template?type={template-type}&variant={variant}&bus={preview|program}&insert={true|false} (since v5.4.0)
GET /api/v1/command/template?type=Camera&variant=CAM1
This will cut the Camera template variant CAM1 directly to Program.
GET /api/v1/command/template?type=Camera&variant=CAM1&bus=PREVIEW
This will put the Camera template variant CAM1 into Preview, replacing any manual item already in Preview.
GET /api/v1/command/template?type=Camera&variant=CAM1&bus=PREVIEW&insert=true
This will put the Camera template variant CAM1 into Preview, inserted in front of the item currently in Preview, not overwriting any manual item in Preview.
GET /api/v1/command/directtake?number={number} (since v5.4.0)
Trigger a given DirectTake template. You must provide the number of the desired template.
GET /api/v1/command/controlcommand/{command}?params… (since v5.10.0)
Here is a list of the control commands supported by the API along with the parameters the command takes.
Control command | Parameters () |
|---|
start_from_top | |
switch_rehearsal_mode | Action=TOGGLE | ACTIVATE | DEACTIVATE If no Action parameter is passed, it will DEACTIVATE. |
autotake | Action= | DEACTIVATE | TOGGLE If no Action parameter is passed, it will TOGGLE |
play_story | Story Name= |
videowallmode | MixEffect=string |
release_background | CueOnly=TRUE | FALSE |
| Render=string Action=CONTINUE | TAKE_MANUAL_OUT | TAKE_ALL_OUT | | PRETAKE_NEXT | CLEAR | MACRO | TAKE_NAMED_OVERLAY Parameter=string Value=string |
directtake | Template=number |
| |
| Action=START_STATUS | STOP_STATUS Parameter=string |
| |
e | Message=string |
| Target=SELECTED | ONAIR | PREVIEW Handlers=string TakeOutMethod=AUTOMATIC | MANUAL storyid=string |
| |
| Action=RemotePanelFunctions Parameter=string |
switch_graphics_mirroring | Action=TOGGLE | ACTIVATE | DE-ACTIVATE |
enable_graphics_mirroring | Target=BOTH | OVERLAY | FULLSCREEN Action=TRUE | FALSE |
switch_genlock_mode | Action=TOGGLE | ACTIVATE | DEACTIVATE |
| Action=INIT | PRESET_STYLE | GOTO_PREV_PRESET PresetName=string Transition=CUT | TAKE |
autotrans | MixEffect=PP | PROGRAM | ME1 | ME2 | ME3 Transitionrate=string |
video_server_goto | ServerChannel=ONAIR | PREVIEW frame=number |
dve | Direction=FORWARD | FWD | REVERSE | REV | BACKWARD |
| Engine=string Action=CONTINUE | MACRO Parameter=string |
| Action=FADE_MANUAL | FADE_OUT_KEEPS | FREEZE_AUDIO | SET_LEVEL_2_PREVIEW | SET_LEVEL_2_ONAIR | FADE_DOWN_ALL_MAINS | FADE_DOWN_SECONDARY_AUDIO | FADE_UP_LAST_MAINS | FADE_UP_SECONDARY_AUDIO Faderate=number |
| Scene=number |
sequence | Action=START | STOP | LOOP | STOPLOOP |
take_server_to_program | MixEffect=PP | PROGRAM | ME1 | ME2 | ME3 Transitionrate=number |
video_port | Action=PLAY_PAUSE | STOP | CUE | RECUE | SET_LOOP | PLAY_TAIL | CUE_ VideoPort=string Parameter=string |
| VideoPort: string |
| Action=PLAY | CONTINUE | GOTO_FIRST |
graphicsprofile | Name=string |
studiosetup | Name=string |
set_aux_crosspoint | Bus=string CrossPoint=string |
set_crosspoint | MixEffect=PP | PROGRAM | ME1 | ME2 | ME3 Bus=A | B | C | D | KEY1 | KEY2 | KEY3 | KEY4 CrossPoint=string |
transition_type | TransitionType=MIX |EF Default | Toggle | Cut | None Value=number |
record | Command=PREPARE | START | STOP | STOP_AND_D| DELETE | GETSOM ClipName=string Name=string Group=string Recorder=string
reClipNamePattern=TRUE | FALSE |
device_property | For audio mixer device properties: Parameter1=AUDIO Parameter2=string The key of the property you want to set. Parameter3=string The value of the property you want to set. For camera control device properties (format depending on robotic camera system
gory=string Speed=string |
set_videoserver_salvo | Salvo=string |
switch_videoserver_mirroring | |
reset_overunder | |