@reveldigital/reveldigital-mcp-server
Version:
MCP Server generated from OpenAPI spec for revel-digital-rest-api
374 lines • 131 kB
JavaScript
#!/usr/bin/env node
/**
* MCP Server generated from OpenAPI spec for revel-digital-rest-api vv1
* Generated on: 2025-08-18T18:49:44.749Z
*/
// Load environment variables from .env file
import dotenv from 'dotenv';
dotenv.config();
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { CallToolRequestSchema, ListToolsRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema } from "@modelcontextprotocol/sdk/types.js";
import { z, ZodError } from 'zod';
import { jsonSchemaToZod } from 'json-schema-to-zod';
import axios from 'axios';
/**
* Server configuration
*/
export const SERVER_NAME = "revel-digital-rest-api";
export const SERVER_VERSION = "v1";
export const API_BASE_URL = "https://api.reveldigital.com";
/**
* MCP Server instance
*/
const server = new Server({ name: SERVER_NAME, version: SERVER_VERSION }, { capabilities: { tools: {}, prompts: {} } });
/**
* Map of tool definitions by name
*/
const toolDefinitionMap = new Map([
["getaccount", {
name: "getaccount",
description: `Gets account details.`,
inputSchema: { "type": "object", "properties": {} },
method: "get",
pathTemplate: "/account",
executionParameters: [],
requestBodyContentType: undefined,
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["putaccount", {
name: "putaccount",
description: `Updates an account.`,
inputSchema: { "type": "object", "properties": { "requestBody": { "type": "object", "properties": { "id": { "type": ["string", "null"], "description": "The account id" }, "name": { "type": ["string", "null"], "description": "The account name" }, "tags": { "type": ["string", "null"], "description": "Tags associated with this account" }, "business_name": { "type": ["string", "null"], "description": "The business name" }, "address_1": { "type": ["string", "null"], "description": "The address line 1" }, "address_2": { "type": ["string", "null"], "description": "The address line 2" }, "city": { "type": ["string", "null"], "description": "The city" }, "state": { "type": ["string", "null"], "description": "The state" }, "postal_code": { "type": ["string", "null"], "description": "The postal code" }, "country": { "type": ["string", "null"], "description": "The country" }, "phone": { "type": ["string", "null"], "description": "The phone number" }, "fax": { "type": ["string", "null"], "description": "The fax number" }, "primary_contact_id": { "type": ["string", "null"], "description": "The primary contact user id" }, "secondary_contact_id": { "type": ["string", "null"], "description": "The secondary contact user id" }, "created_on": { "type": ["string", "null"], "description": "The created on date", "format": "date-time" }, "timeZone": { "type": ["string", "null"], "description": "The time zone" }, "logo_url": { "type": ["string", "null"], "description": "The logo url" } }, "additionalProperties": false, "description": "Account" } } },
method: "put",
pathTemplate: "/account",
executionParameters: [],
requestBodyContentType: "application/json",
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["getorganizations", {
name: "getorganizations",
description: `Gets organizations.`,
inputSchema: { "type": "object", "properties": {} },
method: "get",
pathTemplate: "/account/organizations",
executionParameters: [],
requestBodyContentType: undefined,
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["getdevices", {
name: "getdevices",
description: `Gets all devices in an account.`,
inputSchema: { "type": "object", "properties": { "Id": { "type": "string", "description": "Unique identifier for the device." }, "Take": { "type": "number", "format": "int32", "description": "Maximum number of items to retrieve in a query." }, "Page": { "type": "number", "format": "int32", "description": "Current page number for paginated results." }, "DeviceTypeId": { "type": "string", "description": "Unique identifier for the type of device." }, "GroupId": { "type": "array", "items": { "type": "string" }, "description": "List of unique identifiers for media groups to filter by." }, "GroupName": { "type": "array", "items": { "type": "string" }, "description": "Collection of group names to filter by." }, "IncludeSnap": { "type": "boolean", "description": "Include the snapshot of the currently playing content. JPG format, base64 encoded." }, "OrgId": { "type": "string", "description": "Unique identifier for an organization to filter by." }, "IsOnline": { "type": "boolean", "description": "Filter devices by their online status." } } },
method: "get",
pathTemplate: "/devices",
executionParameters: [{ "name": "Id", "in": "query" }, { "name": "Take", "in": "query" }, { "name": "Page", "in": "query" }, { "name": "DeviceTypeId", "in": "query" }, { "name": "GroupId", "in": "query" }, { "name": "GroupName", "in": "query" }, { "name": "IncludeSnap", "in": "query" }, { "name": "OrgId", "in": "query" }, { "name": "IsOnline", "in": "query" }],
requestBodyContentType: undefined,
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["postdevice", {
name: "postdevice",
description: `Registers a new device.`,
inputSchema: { "type": "object", "properties": { "activation_code": { "type": "string", "description": "Activation code" }, "requestBody": { "type": "object", "properties": { "name": { "type": ["string", "null"], "description": "The device name" }, "tags": { "type": ["string", "null"], "description": "Tags associated with this device" }, "timeZone": { "type": ["string", "null"], "description": "The timezone of the device" }, "language_code": { "type": ["string", "null"], "description": "The language code of the device" }, "group_id": { "type": ["string", "null"], "description": "The group id" }, "last_service": { "type": ["string", "null"], "description": "The last service date", "format": "date-time" }, "mac_address": { "type": ["string", "null"], "description": "The MAC address of this device, is applicable" }, "location": { "type": "object", "properties": { "city": { "type": ["string", "null"], "description": "City" }, "state": { "type": ["string", "null"], "description": "State" }, "county": { "type": ["string", "null"], "description": "County" }, "country": { "type": ["string", "null"], "description": "Country" }, "postal_code": { "type": ["string", "null"], "description": "Postal code" }, "address": { "type": ["string", "null"], "description": "Address" }, "latitude": { "type": ["number", "null"], "description": "Latitude", "format": "double" }, "longitude": { "type": ["number", "null"], "description": "Longitude", "format": "double" } }, "additionalProperties": false }, "beacon": { "type": "object", "properties": { "distance": { "type": ["number", "null"], "format": "double" }, "calibration": { "type": ["number", "null"], "format": "double" }, "phone": { "type": ["string", "null"] }, "emailAddress": { "type": ["string", "null"] }, "website": { "type": ["string", "null"] }, "devices": { "type": ["array", "null"], "items": { "type": "string" } }, "rating": { "type": ["number", "null"], "format": "double" }, "uuid": { "type": ["string", "null"] }, "major": { "type": ["string", "null"] }, "minor": { "type": ["string", "null"] }, "notification_delay": { "type": ["number", "null"], "format": "int32" }, "instance_id": { "type": ["string", "null"] }, "namespace": { "type": ["string", "null"] } }, "additionalProperties": false } }, "additionalProperties": false, "description": "Device" } } },
method: "post",
pathTemplate: "/devices",
executionParameters: [{ "name": "activation_code", "in": "query" }],
requestBodyContentType: "application/json",
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["getdevicebyid", {
name: "getdevicebyid",
description: `Gets a device by ID.`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Device Id" } }, "required": ["id"] },
method: "get",
pathTemplate: "/devices/{id}",
executionParameters: [{ "name": "id", "in": "path" }],
requestBodyContentType: undefined,
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["putdevice", {
name: "putdevice",
description: `Updates a device.`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Device Id" }, "requestBody": { "type": "object", "properties": { "name": { "type": ["string", "null"], "description": "The device name" }, "tags": { "type": ["string", "null"], "description": "Tags associated with this device" }, "timeZone": { "type": ["string", "null"], "description": "The timezone of the device" }, "language_code": { "type": ["string", "null"], "description": "The language code of the device" }, "group_id": { "type": ["string", "null"], "description": "The group id" }, "last_service": { "type": ["string", "null"], "description": "The last service date", "format": "date-time" }, "mac_address": { "type": ["string", "null"], "description": "The MAC address of this device, is applicable" }, "location": { "type": "object", "properties": { "city": { "type": ["string", "null"], "description": "City" }, "state": { "type": ["string", "null"], "description": "State" }, "county": { "type": ["string", "null"], "description": "County" }, "country": { "type": ["string", "null"], "description": "Country" }, "postal_code": { "type": ["string", "null"], "description": "Postal code" }, "address": { "type": ["string", "null"], "description": "Address" }, "latitude": { "type": ["number", "null"], "description": "Latitude", "format": "double" }, "longitude": { "type": ["number", "null"], "description": "Longitude", "format": "double" } }, "additionalProperties": false }, "beacon": { "type": "object", "properties": { "distance": { "type": ["number", "null"], "format": "double" }, "calibration": { "type": ["number", "null"], "format": "double" }, "phone": { "type": ["string", "null"] }, "emailAddress": { "type": ["string", "null"] }, "website": { "type": ["string", "null"] }, "devices": { "type": ["array", "null"], "items": { "type": "string" } }, "rating": { "type": ["number", "null"], "format": "double" }, "uuid": { "type": ["string", "null"] }, "major": { "type": ["string", "null"] }, "minor": { "type": ["string", "null"] }, "notification_delay": { "type": ["number", "null"], "format": "int32" }, "instance_id": { "type": ["string", "null"] }, "namespace": { "type": ["string", "null"] } }, "additionalProperties": false } }, "additionalProperties": false, "description": "Device" } }, "required": ["id"] },
method: "put",
pathTemplate: "/devices/{id}",
executionParameters: [{ "name": "id", "in": "path" }],
requestBodyContentType: "application/json",
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["deletedevice", {
name: "deletedevice",
description: `Delete a device.`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Device Id" } }, "required": ["id"] },
method: "delete",
pathTemplate: "/devices/{id}",
executionParameters: [{ "name": "id", "in": "path" }],
requestBodyContentType: undefined,
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["patchdevice", {
name: "patchdevice",
description: `Patch a device. Patch allows partial updates by targeting specific properties of the device.
Uses the JSON Patch syntax (http://jsonpatch.com)`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Device Id" }, "requestBody": { "type": "string", "description": "Patch document" } }, "required": ["id"] },
method: "patch",
pathTemplate: "/devices/{id}",
executionParameters: [{ "name": "id", "in": "path" }],
requestBodyContentType: "application/json-patch+json",
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["getdevicegroups", {
name: "getdevicegroups",
description: `Gets device groups in the account.`,
inputSchema: { "type": "object", "properties": { "tree": { "type": "boolean", "default": false, "description": "Optional hierarchical data format" }, "id": { "type": "string", "description": "Optional group id" }, "take": { "type": "number", "format": "int32", "description": "Optional number of items to return" }, "page": { "type": "number", "format": "int32", "description": "Optional number of page to return" } } },
method: "get",
pathTemplate: "/devices/groups",
executionParameters: [{ "name": "tree", "in": "query" }, { "name": "id", "in": "query" }, { "name": "take", "in": "query" }, { "name": "page", "in": "query" }],
requestBodyContentType: undefined,
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["postdevicegroup", {
name: "postdevicegroup",
description: `Create a new device group.`,
inputSchema: { "type": "object", "properties": { "requestBody": { "type": "object", "properties": { "name": { "type": ["string", "null"], "description": "The group name" } }, "additionalProperties": false, "description": "Device group" } } },
method: "post",
pathTemplate: "/devices/groups",
executionParameters: [],
requestBodyContentType: "application/json",
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["putdevicegroup", {
name: "putdevicegroup",
description: `Updates a device group.`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Group id" }, "requestBody": { "type": "object", "properties": { "name": { "type": ["string", "null"], "description": "The group name" } }, "additionalProperties": false, "description": "Device group" } }, "required": ["id"] },
method: "put",
pathTemplate: "/devices/groups/{id}",
executionParameters: [{ "name": "id", "in": "path" }],
requestBodyContentType: "application/json",
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["deletedevicegroup", {
name: "deletedevicegroup",
description: `Group must be empty.`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Device group Id" } }, "required": ["id"] },
method: "delete",
pathTemplate: "/devices/groups/{id}",
executionParameters: [{ "name": "id", "in": "path" }],
requestBodyContentType: undefined,
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["getpingdata", {
name: "getpingdata",
description: `Gets device ping data by registration key.`,
inputSchema: { "type": "object", "properties": { "key": { "type": "string", "description": "Registration key" } } },
method: "get",
pathTemplate: "/devices/pingdata",
executionParameters: [{ "name": "key", "in": "query" }],
requestBodyContentType: undefined,
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["getsnapshot", {
name: "getsnapshot",
description: `Gets current snapshot of the device screen. Image is returned as a JPEG image.`,
inputSchema: { "type": "object", "properties": { "registrationKey": { "type": "string", "description": "Device registration key" }, "base64": { "type": "boolean", "default": false, "description": "If true, the JPG image will be returned as a base64-encoded string" } }, "required": ["registrationKey"] },
method: "get",
pathTemplate: "/devices/{registrationKey}/snap",
executionParameters: [{ "name": "registrationKey", "in": "path" }, { "name": "base64", "in": "query" }],
requestBodyContentType: undefined,
securityRequirements: [{}]
}],
["getdevicepingdata", {
name: "getdevicepingdata",
description: `Gets device ping data by registration key.`,
inputSchema: { "type": "object", "properties": { "registrationKey": { "type": "string" } }, "required": ["registrationKey"] },
method: "get",
pathTemplate: "/devices/{registrationKey}/pingdata",
executionParameters: [{ "name": "registrationKey", "in": "path" }],
requestBodyContentType: undefined,
securityRequirements: [{}]
}],
["postdevicescommands", {
name: "postdevicescommands",
description: `Sends a collection of commands to devices.`,
inputSchema: { "type": "object", "properties": { "requestBody": { "type": "array", "items": { "type": "object", "properties": { "deviceId": { "type": ["string", "null"] }, "commands": { "type": ["array", "null"], "items": { "type": "object", "properties": { "name": { "type": "string", "nullable": true }, "arg": { "type": "string", "nullable": true } }, "additionalProperties": false } } }, "additionalProperties": false }, "description": "Command set" } } },
method: "post",
pathTemplate: "/devices/commands",
executionParameters: [],
requestBodyContentType: "application/json",
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["postdevicecommands", {
name: "postdevicecommands",
description: `Sends a collection of commands to a specific device.`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Device Id" }, "requestBody": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": ["string", "null"] }, "arg": { "type": ["string", "null"] } }, "additionalProperties": false }, "description": "Commands" } }, "required": ["id"] },
method: "post",
pathTemplate: "/devices/{id}/commands",
executionParameters: [{ "name": "id", "in": "path" }],
requestBodyContentType: "application/json",
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["postevent", {
name: "postevent",
description: `Create an event associated with a device.`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Device Id" }, "requestBody": { "type": "object", "properties": { "session_id": { "type": ["string", "null"] }, "event_name": { "type": ["string", "null"] }, "properties": { "type": ["object", "null"], "additionalProperties": { "nullable": true } } }, "additionalProperties": false, "description": "Event" } }, "required": ["id"] },
method: "post",
pathTemplate: "/devices/{id}/track",
executionParameters: [{ "name": "id", "in": "path" }],
requestBodyContentType: "application/json",
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["getmedia", {
name: "getmedia",
description: `Gets all media in an account.`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Optional Media Id" }, "take": { "type": "number", "format": "int32", "description": "Optional number of items to return" }, "page": { "type": "number", "format": "int32", "description": "Optional number of page to return" }, "group_id": { "type": "array", "items": { "type": "string" }, "description": "Optional media group Id" }, "group_name": { "type": "array", "items": { "type": "string" }, "description": "Optional group name to filter by" } } },
method: "get",
pathTemplate: "/media",
executionParameters: [{ "name": "id", "in": "query" }, { "name": "take", "in": "query" }, { "name": "page", "in": "query" }, { "name": "group_id", "in": "query" }, { "name": "group_name", "in": "query" }],
requestBodyContentType: undefined,
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["postmediamultipart", {
name: "postmediamultipart",
description: `POST body must be in multipart/form-data format`,
inputSchema: { "type": "object", "properties": { "requestBody": { "type": "string", "description": "Request body (content type: multipart/form-data)" } } },
method: "post",
pathTemplate: "/media",
executionParameters: [],
requestBodyContentType: "multipart/form-data",
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["getmediabyid", {
name: "getmediabyid",
description: `Gets media item by ID.`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Media Id" } }, "required": ["id"] },
method: "get",
pathTemplate: "/media/{id}",
executionParameters: [{ "name": "id", "in": "path" }],
requestBodyContentType: undefined,
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["putmedia", {
name: "putmedia",
description: `Update media asset properties.`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Media Id" }, "requestBody": { "type": "object", "properties": { "name": { "type": ["string", "null"], "description": "The media name" }, "group_id": { "type": ["string", "null"], "description": "The group id" }, "tags": { "type": ["string", "null"], "description": "The tags associated with this media" }, "advertiser_id": { "type": ["string", "null"], "description": "The advertiser id. Optional" }, "is_shared": { "type": ["boolean", "null"], "description": "Is this media shared with other accounts" }, "start_date": { "type": ["string", "null"], "description": "The start date for this media", "format": "date-time" }, "end_date": { "type": ["string", "null"], "description": "The end date for this media", "format": "date-time" } }, "additionalProperties": false, "description": "Media request model. Used for creating and updating media" } }, "required": ["id"] },
method: "put",
pathTemplate: "/media/{id}",
executionParameters: [{ "name": "id", "in": "path" }],
requestBodyContentType: "application/json",
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["deletemedia", {
name: "deletemedia",
description: `Delete media asset.`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string" } }, "required": ["id"] },
method: "delete",
pathTemplate: "/media/{id}",
executionParameters: [{ "name": "id", "in": "path" }],
requestBodyContentType: undefined,
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["patchmedia", {
name: "patchmedia",
description: `Patch a media item. Patch allows partial updates by targeting specific properties of the schedule.
Uses the JSON Patch syntax (http://jsonpatch.com)`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Media Id" }, "requestBody": { "type": "string", "description": "Patch update" } }, "required": ["id"] },
method: "patch",
pathTemplate: "/media/{id}",
executionParameters: [{ "name": "id", "in": "path" }],
requestBodyContentType: "application/json-patch+json",
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["getmediagroups", {
name: "getmediagroups",
description: `Gets media groups.`,
inputSchema: { "type": "object", "properties": { "tree": { "type": "boolean", "default": false, "description": "Optional hierarchical data format" }, "id": { "type": "string", "description": "Optional group id" }, "take": { "type": "number", "format": "int32", "description": "Optional number of items to return" }, "page": { "type": "number", "format": "int32", "description": "Optional number of page to return" } } },
method: "get",
pathTemplate: "/media/groups",
executionParameters: [{ "name": "tree", "in": "query" }, { "name": "id", "in": "query" }, { "name": "take", "in": "query" }, { "name": "page", "in": "query" }],
requestBodyContentType: undefined,
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["postmediagroup", {
name: "postmediagroup",
description: `Create a new media group.`,
inputSchema: { "type": "object", "properties": { "requestBody": { "type": "object", "properties": { "name": { "type": ["string", "null"], "description": "The group name" } }, "additionalProperties": false, "description": "Media group" } } },
method: "post",
pathTemplate: "/media/groups",
executionParameters: [],
requestBodyContentType: "application/json",
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["putmediagroup", {
name: "putmediagroup",
description: `Updates a media group.`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Group id" }, "requestBody": { "type": "object", "properties": { "name": { "type": ["string", "null"], "description": "The group name" } }, "additionalProperties": false, "description": "Media group" } }, "required": ["id"] },
method: "put",
pathTemplate: "/media/groups/{id}",
executionParameters: [{ "name": "id", "in": "path" }],
requestBodyContentType: "application/json",
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["deletemediagroup", {
name: "deletemediagroup",
description: `Group must be empty.`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Media group Id" } }, "required": ["id"] },
method: "delete",
pathTemplate: "/media/groups/{id}",
executionParameters: [{ "name": "id", "in": "path" }],
requestBodyContentType: undefined,
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["postmediabyfilename", {
name: "postmediabyfilename",
description: `POST body should contain raw binary media file`,
inputSchema: { "type": "object", "properties": { "group_id": { "type": "string" }, "file_name": { "type": "string" }, "shared": { "type": "boolean", "default": false, "description": "Optional media sharing" }, "start_date": { "type": "string", "format": "date-time", "description": "Optional start date" }, "end_date": { "type": "string", "format": "date-time", "description": "Optional end date" }, "advertiser_id": { "type": "number", "format": "int32", "description": "Optional advertiser user Id" }, "name": { "type": "string", "description": "Optional media name. Overrides the uploaded name" }, "description": { "type": "string", "description": "Optional media tags" } }, "required": ["group_id", "file_name"] },
method: "post",
pathTemplate: "/media/{group_id}/{file_name}",
executionParameters: [{ "name": "group_id", "in": "path" }, { "name": "file_name", "in": "path" }, { "name": "shared", "in": "query" }, { "name": "start_date", "in": "query" }, { "name": "end_date", "in": "query" }, { "name": "advertiser_id", "in": "query" }, { "name": "name", "in": "query" }, { "name": "description", "in": "query" }],
requestBodyContentType: undefined,
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["postmediaimport", {
name: "postmediaimport",
description: `Import a file from a URL.`,
inputSchema: { "type": "object", "properties": { "url": { "type": "string", "description": "URL of the file to import" }, "group_id": { "type": "string", "description": "Media group Id" } } },
method: "post",
pathTemplate: "/media/import",
executionParameters: [{ "name": "url", "in": "query" }, { "name": "group_id", "in": "query" }],
requestBodyContentType: undefined,
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["getplaylists", {
name: "getplaylists",
description: `Gets all playlists in an account.`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Optional playlist Id to filter by" }, "take": { "type": "number", "format": "int32", "description": "Optional number of items to return" }, "page": { "type": "number", "format": "int32", "description": "Optional number of page to return" }, "group_id": { "type": "array", "items": { "type": "string" } }, "group_name": { "type": "array", "items": { "type": "string" } } } },
method: "get",
pathTemplate: "/playlists",
executionParameters: [{ "name": "id", "in": "query" }, { "name": "take", "in": "query" }, { "name": "page", "in": "query" }, { "name": "group_id", "in": "query" }, { "name": "group_name", "in": "query" }],
requestBodyContentType: undefined,
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["postplaylist", {
name: "postplaylist",
description: `Create a new playlist.`,
inputSchema: { "type": "object", "properties": { "requestBody": { "type": "object", "properties": { "id": { "type": ["string", "null"], "description": "The playlist id" }, "name": { "type": ["string", "null"], "description": "The playlist name" }, "group_name": { "type": ["string", "null"], "description": "The group name" }, "group_id": { "type": ["string", "null"], "description": "The group id" }, "tags": { "type": ["string", "null"], "description": "The tags associated with this playlist" }, "type": { "enum": ["Multimedia", "Slideshow", "Template", "Marquee"], "type": "string" }, "duration": { "type": ["number", "null"], "description": "Total duration for this playlist. Used in conjunction with loop policy", "format": "int32" }, "is_random_start": { "type": ["boolean", "null"], "description": "Randomize the order of the playlist" }, "created_on": { "type": ["string", "null"], "description": "The date the playlist was created", "format": "date-time" }, "created_by_id": { "type": ["string", "null"], "description": "The user id that created the playlist" }, "modified_on": { "type": ["string", "null"], "description": "The date the playlist was last modified", "format": "date-time" }, "modified_by_id": { "type": ["string", "null"], "description": "The user id that last modified the playlist" }, "sources": { "type": ["array", "null"], "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The source id", "nullable": true }, "name": { "type": "string", "description": "The source name", "nullable": true }, "type": { "enum": ["Audio", "Command", "Flash", "Gadget", "Image", "Pdf", "PlaceExchange", "Playlist", "PowerPoint", "Rss", "Svg", "Template", "Text", "Twitter", "Url", "Video", "VistarMedia", "WebPage", "YouTube", "VistarMediaEx"], "type": "string" }, "sequence": { "type": "integer", "description": "The sequence. Lower numbers are displayed first.", "format": "int32", "nullable": true }, "media_id": { "type": "string", "description": "The media file id", "nullable": true }, "template_id": { "type": "string", "description": "The template id", "nullable": true }, "playlist_id": { "type": "string", "description": "The playlist id", "nullable": true }, "value": { "type": "string", "description": "The value", "nullable": true }, "interval": { "type": "integer", "description": "The duration in seconds", "format": "int32", "nullable": true }, "media": { "type": "object", "properties": { "name": { "type": "string", "description": "The media name", "nullable": true }, "group_id": { "type": "string", "description": "The group id", "nullable": true }, "tags": { "type": "string", "description": "The tags associated with this media", "nullable": true }, "advertiser_id": { "type": "string", "description": "The advertiser id. Optional", "nullable": true }, "is_shared": { "type": "boolean", "description": "Is this media shared with other accounts", "nullable": true }, "start_date": { "type": "string", "description": "The start date for this media", "format": "date-time", "nullable": true }, "end_date": { "type": "string", "description": "The end date for this media", "format": "date-time", "nullable": true }, "id": { "type": "string", "description": "The media id", "nullable": true }, "group_name": { "type": "string", "description": "The group name", "nullable": true }, "mime_type": { "type": "string", "description": "The MIME type for this media", "nullable": true }, "file_size": { "type": "integer", "description": "The file size in bytes", "format": "int32" }, "file_name": { "type": "string", "description": "The file name", "nullable": true }, "file_url": { "type": "string", "description": "The file URL", "nullable": true }, "thumbnail_url": { "type": "string", "description": "The thumbnail URL", "nullable": true }, "uploaded_on": { "type": "string", "description": "The date the media was uploaded", "format": "date-time", "nullable": true }, "uploaded_by_id": { "type": "string", "description": "The user id that uploaded the media", "nullable": true }, "sha_512": { "type": "string", "description": "The SHA512 hash of the media file", "nullable": true }, "width": { "type": "integer", "description": "The width of the media", "format": "int32", "nullable": true }, "height": { "type": "integer", "description": "The height of the media", "format": "int32", "nullable": true } }, "additionalProperties": false, "description": "Media model" }, "loop_policy_type": { "enum": ["Default", "OverSaturate2x", "OverSaturate3x", "OverSaturate4x", "OverSaturate5x", "Random", "UnderSaturate2x", "UnderSaturate3x", "UnderSaturate4x", "UnderSaturate5x", "Prefill", "Postfill", "Spreadfill"], "type": "string", "description": "Loop policy type determines how a source is to generatively positioned within a loop.\r\nIMPORTANT: Playlist duration must be set for this to take effect. If no playlist duration is specified, then source loop policy should not be assigned." }, "conditions": { "type": "array", "items": { "type": "object", "properties": { "type": { "enum": ["AfterDate", "AfterTime", "Always", "BeforeDate", "BeforeTime", "Command", "DateRange", "DayOfMonth", "DaysOfWeek", "DeviceByGroup", "DeviceByNestedGroup", "DeviceByName", "DeviceByTag", "DeviceByOrg", "Everywhere", "GeoLocation", "GpsWithinRadius", "KeyEvent", "MonthOfYear", "Motion", "Never", "Nowhere", "PctAdult", "PctChild", "PctFemale", "PctMale", "PctSenior", "PctYoung", "PctYoungAdult", "PlaylistByName", "PlaylistByTag", "SendCommand", "SpecificDevice", "SpecificPlaylist", "SpecificTemplate", "SpecificZone", "TemplateByName", "TemplateByTag", "TimeRange", "TopicSet", "TotalViewersGreaterThan", "TotalViewersLessThan", "TouchEvent", "WeekOfMonth", "WeekOfYear"], "type": "string", "description": "The following enum represents the different types of conditions that can be used in scheduling logic.\r\n\r\nImportant usage notes specific to ConditionType:\r\n\r\n- ConditionType: \"TimeRange\"\r\n Value1: \"01/01/1970 12:00:00 AM\" # Start time. Starts at this time. Date/time format: \"MM/dd/yyyy hh:mm:ss aa\"\r\n Value2: \"01/01/1970 12:00:00 AM\" # End time. Stops at this time. Date/time format: \"MM/dd/yyyy hh:mm:ss aa\"\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"TopicSet\"\r\n Value1: \"sports,news,weather\" # Comma separted list of topics\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"TotalViewersGreaterThan\"\r\n Value1: \"50\"\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"TotalViewersLessThan\"\r\n Value1: \"100\"\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"TouchEvent\"\r\n Value1: \"tap\"\r\n Value2: \"screen1\"\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"WeekOfMonth\"\r\n Value1: \"2\"\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"WeekOfYear\"\r\n Value1: \"25\"\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"GpsWithinRadius\"\r\n Value1: \"40.7128\"\r\n Value2: \"-74.0060\"\r\n Value3: \"50\"\r\n Value4: \"miles\"\r\n- ConditionType: \"KeyEvent\"\r\n Value1: \"ENTER\"\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"MonthOfYear\"\r\n Value1: \"12\"\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"Motion\"\r\n Value1: \"detected\"\r\n Value2: \"5\"\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"Never\"\r\n Value1: null\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"PctAdult\"\r\n Value1: \"60\"\r\n Value2: \">=\"\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"PctChild\"\r\n Value1: \"25\"\r\n Value2: \"<=\"\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"PctFemale\"\r\n Value1: \"40\"\r\n Value2: \">=\"\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"PctMale\"\r\n Value1: \"60\"\r\n Value2: \"<=\"\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"PctSenior\"\r\n Value1: \"15\"\r\n Value2: \">=\"\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"PctYoung\"\r\n Value1: \"30\"\r\n Value2: \"<=\"\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"PctYoungAdult\"\r\n Value1: \"35\"\r\n Value2: \">=\"\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"AfterDate\"\r\n Value1: \"01/01/1970 12:00:00 AM\" # Date/time format: \"MM/dd/yyyy hh:mm:ss aa\"\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"AfterTime\"\r\n Value1: \"01/01/1970 12:00:00 AM\" # Date/time format: \"MM/dd/yyyy hh:mm:ss aa\"\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"Always\"\r\n Value1: null\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"BeforeDate\"\r\n Value1: \"01/01/1970 12:00:00 AM\" # Date/time format: \"MM/dd/yyyy hh:mm:ss aa\"\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"BeforeTime\"\r\n Value1: \"01/01/1970 12:00:00 AM\" # Date/time format: \"MM/dd/yyyy hh:mm:ss aa\"\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"Command\"\r\n Value1: \"Command Name\"\r\n Value2: \"Command Arg\"\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"DateRange\"\r\n Value1: \"01/01/1970 12:00:00 AM\" # Start date. Starts ON this date. Date/time format: \"MM/dd/yyyy hh:mm:ss aa\"\r\n Value2: \"01/01/1970 12:00:00 AM\" # End date. Stops AFTER this date. Date/time format: \"MM/dd/yyyy hh:mm:ss aa\"\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"DayOfMonth\"\r\n Value1: \"15\"\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"DaysOfWeek\"\r\n Value1: \"10\" # Integer Bitfield starting with Sunday as the least significant bit\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"DeviceByGroup\" # Selects all devices in a group by the groups unique identifier\r\n Value1: 0 # Unique device group ID\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"DeviceByName\" # Selects a device by its name. Supports regular expressions for advanced matching\r\n Value1: \"Device Name\" # Supports regular expressions\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"DeviceByNestedGroup\" # Selects all devices in a group by the groups unique identifier. Includes all devices in this group and all nested groups\r\n Value1: 0 # Unique device group ID\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"DeviceByOrg\" # Selects all devices in an organization\r\n Value1: 0 # Unique organization ID\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"DeviceByTag\" # Selects devices by their associated tags\r\n Value1: \"critical_infrastructure\" # Newline separted list of tags\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"Everywhere\"\r\n Value1: null\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"GeoLocation\"\r\n Value1: \"37.7749\" # Latitude of the location\r\n Value2: \"-122.4194\" # Longitude of the location\r\n Value3: \"50\" # Distance in miles from geolocation\"\r\n Value4: \"123 5th St. N\" # Street address of the location\r\n- ConditionType: \"Nowhere\"\r\n Value1: null\r\n Value2: null\r\n Value3: null\r\n Value4: null\r\n- ConditionType: \"SpecificDevice\"\r\n Value1: 0 # Unique device ID\r\n Value2: null\r\n Value3: null\r\n Value4: null" }, "operator": { "enum": ["And", "Or", "AndNot", "OrNot"], "type": "string" }, "value_1": { "type": "string", "description": "Value 1. See ConditionType documentation for usage notes.", "nullable": true }, "value_2": { "type": "string", "description": "Value 2. See ConditionType documentation for usage notes.", "nullable": true }, "value_3": { "type": "string", "description": "Value 3. See ConditionType documentation for usage notes.", "nullable": true }, "value_4": { "type": "string", "description": "Value 4. See ConditionType documentation for usage notes.", "nullable": true } }, "additionalProperties": false }, "description": "The conditions for this source", "nullable": true } }, "additionalProperties": false, "description": "Source model" }, "description": "The sources associated with this playlist" } }, "additionalProperties": false, "description": "Playlist to create" } } },
method: "post",
pathTemplate: "/playlists",
executionParameters: [],
requestBodyContentType: "application/json",
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["getplaylistbyid", {
name: "getplaylistbyid",
description: `Gets a playlist by ID.`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Playlist Id" } }, "required": ["id"] },
method: "get",
pathTemplate: "/playlists/{id}",
executionParameters: [{ "name": "id", "in": "path" }],
requestBodyContentType: undefined,
securityRequirements: [{ "Bearer": ["webapi"] }, { "ApiKeyInHeader": [] }, { "ApiKeyInQuery": [] }]
}],
["putplaylist", {
name: "putplaylist",
description: `Put a playlist. Replaces a playlist with the one provided.`,
inputSchema: { "type": "object", "properties": { "id": { "type": "string", "description": "Playlist Id" }, "requestBody": { "type": "object", "properties": { "id": { "type": ["string", "null"], "description": "The playlist id" }, "name": { "type": ["string", "null"], "description": "The playlist name" }, "group_name": { "type": ["string", "null"], "description": "The group name" }, "group_id": { "type": ["string", "null"], "description": "The group id" }, "tags": { "type": ["string", "null"], "description": "The tags associated with this playlist" }, "type": { "enum": ["Multimedia", "Slideshow", "Template", "Marquee"], "type": "string" }, "duration": { "type": ["number", "null"], "description": "Total duration for this playlist. Used in conjunction with loop policy", "format": "int32" }, "is_random_start": { "type": ["boolean", "null"], "description": "Randomize the order of the playlist" }, "created_on": { "type": ["string", "null"], "description": "The date the playlist was created", "format": "date-time" }, "created_by_id": { "type": ["string", "null"], "description": "The user id that created the playlist" }, "modified_on": { "type": ["string", "null"], "description": "The date the playlist was last modified", "format": "date-time" }, "modified_by_id": { "type": ["string", "null"], "description": "The user id that last modified the playlist" }, "sources": { "type": ["array", "null"], "items": { "type": "object", "properties": { "id": { "type": "string", "description": "The source id", "nullable": true }, "name": { "type": "string", "description": "The source name", "nullable": true }, "type": { "enum": ["Audio", "Command", "Flash", "Gadget", "Image", "Pdf", "PlaceExchange", "Playlist", "PowerPoint", "Rss", "Svg", "Template", "Text", "Twitter", "Url", "Video", "VistarMedia", "WebPage", "YouTube", "VistarMediaEx"], "type": "string" }, "sequence": { "type": "integer", "description": "The sequence. Lower numbers are displayed first.", "format": "int32", "nullable": true }, "media_id": { "type": "string", "description": "The media file id", "nullable": true }, "template_id": { "type": "string", "description": "The template id", "nullable": true }, "playlist_id": { "type": "string", "description": "The playlist id", "nullable": true }, "value": { "type": "string", "description": "The value", "nullable": true }, "interval": { "type": "integer", "description": "The duration in seconds", "format": "int32", "nullable": true }, "media": { "type": "object", "properties": { "name": { "type": "string", "description": "The media name", "nullable": true }, "group_id": { "type": "string", "description": "The group id", "nullable": true }, "tags": { "type": "string", "description": "The tags associated with this media", "nullable": true }, "advertiser_id": { "type": "string", "description": "The advertiser id. Optional", "nullable": true }, "is_shared": { "type": "boolean", "description": "Is this media shared with other accounts", "nullable": true }, "start_date": { "type": "string", "description": "The start date for this media", "format": "date-time", "nullable": true }, "end_date": { "type": "string", "description": "The end date for this media", "format": "date-time", "nullable": true }, "id": { "type": "string", "description": "The media id", "nullable": true }, "group_name": { "type": "string", "description": "The group name", "nullable": true }, "mime_type": { "type": "string", "description": "The MIME type for this media", "nullable": true }, "file_size": { "type": "integer", "description": "The file size in bytes", "format": "int32" }, "file_name": { "type": "string", "description": "The file name", "nullable": true }, "file_url": { "type": "string", "description": "The file URL", "nullable": true }, "thumbnail_url": { "type": "string", "description": "The thumbnail URL", "nullable": true }, "uploaded_on": { "type": "string", "description": "The date the media was uploaded", "format": "date-time", "nullable": true }, "uploaded_by_id": { "type": "string", "description": "The user id that uploaded the media", "nullable": true }, "sha_512": { "type": "string", "description": "The SHA512 hash of the media file", "nullable": true }, "width": { "type": "integer", "description": "The width of the media", "format": "int32", "nullable": true }, "height": { "type": "integer", "description": "The height of the media", "format": "int32", "nullable": true } }, "additionalProperties": false, "description": "Media model" }, "loop_policy_type": { "enum": ["Default", "OverSaturate2x", "OverSaturate3x", "OverSaturate4x", "OverSaturate5x", "Random", "UnderSaturate2x", "UnderSaturate3x", "UnderSaturate4x", "UnderSaturate5x", "Prefill", "Postfill", "Spreadfill"], "type": "strin