@reveldigital/mcp-graphql-proxy 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -693,6 +693,37 @@ type Mutation {
693
693
  sendBulkDeviceCommands(input: BulkCommandInput): BulkCommandResult
694
694
  @cost(weight: "10")
695
695
  """
696
+ Create a new device group (organizational folder for player devices).
697
+ Mirrors the REST POST /api/devices/groups endpoint.
698
+ Example: An AI agent organizes newly provisioned players into a "Lobby Displays" group.
699
+ """
700
+ createDeviceGroup(input: CreateGroupInput): GroupMutationResult
701
+ @cost(weight: "10")
702
+ """
703
+ Create a new media group (organizational folder for uploaded content files).
704
+ Mirrors the REST POST /api/media/groups endpoint.
705
+ """
706
+ createMediaGroup(input: CreateGroupInput): GroupMutationResult
707
+ @cost(weight: "10")
708
+ """
709
+ Create a new playlist group (organizational folder for playlists).
710
+ Mirrors the REST POST /api/playlists/groups endpoint.
711
+ """
712
+ createPlaylistGroup(input: CreateGroupInput): GroupMutationResult
713
+ @cost(weight: "10")
714
+ """
715
+ Create a new schedule group (organizational folder for schedules).
716
+ Mirrors the REST POST /api/schedules/groups endpoint.
717
+ """
718
+ createScheduleGroup(input: CreateGroupInput): GroupMutationResult
719
+ @cost(weight: "10")
720
+ """
721
+ Create a new template group (organizational folder for screen layouts/templates).
722
+ Mirrors the REST POST /api/templates/groups endpoint.
723
+ """
724
+ createTemplateGroup(input: CreateGroupInput): GroupMutationResult
725
+ @cost(weight: "10")
726
+ """
696
727
  Create a new media asset by downloading from a URL.
697
728
  Useful for AI agents that generate images/videos and need to add them to the CMS.
698
729
  Example: AI generates a promotional image via DALL-E and uploads it for digital signage display.
@@ -748,6 +779,60 @@ type Mutation {
748
779
  """
749
780
  reorderPlaylistSources(input: ReorderPlaylistSourcesInput): PlaylistMutationResult
750
781
  @cost(weight: "10")
782
+ """
783
+ Update a template's properties (name, tags, dimensions, colors, etc.).
784
+ Example: AI adjusts template dimensions to optimize for a new display resolution.
785
+ """
786
+ updateTemplate(input: UpdateTemplateInput): TemplateMutationResult
787
+ @cost(weight: "10")
788
+ """
789
+ Add a new module to a template.
790
+ Example: AI adds a new weather module to show real-time conditions in the corner.
791
+ """
792
+ addTemplateModule(input: AddTemplateModuleInput): ModuleMutationResult
793
+ @cost(weight: "10")
794
+ """
795
+ Update a module within a template.
796
+ Example: AI repositions a module based on engagement analytics, or changes the assigned playlist.
797
+ """
798
+ updateTemplateModule(input: UpdateTemplateModuleInput): ModuleMutationResult
799
+ @cost(weight: "10")
800
+ """
801
+ Remove a module from a template.
802
+ Example: AI removes an underperforming ad module to optimize content flow.
803
+ """
804
+ removeTemplateModule(input: RemoveTemplateModuleInput): ModuleMutationResult
805
+ @cost(weight: "10")
806
+ """
807
+ Reorder modules within a template by updating their sequence/z-order.
808
+ Example: AI reorders modules to bring important content to the front based on viewer engagement.
809
+ """
810
+ reorderTemplateModules(input: ReorderTemplateModulesInput): TemplateMutationResult
811
+ @cost(weight: "10")
812
+ """
813
+ Batch update multiple modules in a template at once.
814
+ Example: AI repositions all modules to create a new layout optimized for viewer attention.
815
+ """
816
+ batchUpdateTemplateModules(input: BatchUpdateTemplateModulesInput): BatchModuleMutationResult
817
+ @cost(weight: "10")
818
+ """
819
+ Set all options for a module (replaces existing options).
820
+ Example: AI configures a weather module with location, units, and API key settings.
821
+ """
822
+ setModuleOptions(input: SetModuleOptionsInput): ModuleMutationResult
823
+ @cost(weight: "10")
824
+ """
825
+ Add or update a single module option.
826
+ Example: AI updates the refresh interval for a web module.
827
+ """
828
+ upsertModuleOption(input: UpsertModuleOptionInput): ModuleOptionMutationResult
829
+ @cost(weight: "10")
830
+ """
831
+ Remove a module option by name.
832
+ Example: AI removes an outdated configuration setting from a module.
833
+ """
834
+ removeModuleOption(input: RemoveModuleOptionInput): ModuleOptionMutationResult
835
+ @cost(weight: "10")
751
836
  }
752
837
 
753
838
  "Aggregated audience metrics for a device over a time period"
@@ -1268,6 +1353,18 @@ type BatchDeleteDataTableRowsResult {
1268
1353
  error: String
1269
1354
  }
1270
1355
 
1356
+ "Result from batch updating multiple modules."
1357
+ type BatchModuleMutationResult {
1358
+ "Total number of modules attempted."
1359
+ totalModules: Int!
1360
+ "Number of successful updates."
1361
+ successCount: Int!
1362
+ "Number of failed updates."
1363
+ failureCount: Int!
1364
+ "Per-module results."
1365
+ results: [ModuleMutationResult]
1366
+ }
1367
+
1271
1368
  type BatchRowResultModel {
1272
1369
  rowId: String
1273
1370
  success: Boolean!
@@ -1617,6 +1714,16 @@ type Group {
1617
1714
  children: [Group]
1618
1715
  }
1619
1716
 
1717
+ "Result from a group mutation (e.g., creating a new group)."
1718
+ type GroupMutationResult {
1719
+ "Whether the operation was successful."
1720
+ success: Boolean!
1721
+ "The newly created (or updated) group."
1722
+ group: Group
1723
+ "Error message if the operation failed."
1724
+ error: String
1725
+ }
1726
+
1620
1727
  "Result from an import rows mutation."
1621
1728
  type ImportDataTableRowsResult {
1622
1729
  "Whether the overall operation was successful."
@@ -1719,28 +1826,73 @@ type Media {
1719
1826
  }
1720
1827
 
1721
1828
  """
1722
- Represents a module (zone/region) within a template layout.
1723
- Modules define rectangular areas on screen where content from playlists is displayed.
1829
+ Represents a module (also called a zone or region) within a template layout.
1830
+ Modules/zones define rectangular areas on screen where content from playlists is displayed.
1831
+ The terms "module" and "zone" are used interchangeably throughout the API.
1724
1832
  """
1725
1833
  type Module {
1726
- "Module id"
1834
+ "Module/zone unique identifier"
1727
1835
  id: String
1728
- "Module name"
1836
+ "Module/zone name"
1729
1837
  name: String
1730
- "Module type"
1838
+ "Module/zone type (e.g., 'Playlist', 'Clock', 'Weather', 'Ticker', 'Web')"
1731
1839
  type: String
1732
- "Left position"
1840
+ "Left position in pixels from the top-left corner of the template"
1733
1841
  left: Int
1734
- "Top position"
1842
+ "Top position in pixels from the top-left corner of the template"
1735
1843
  top: Int
1736
- "Width"
1844
+ "Width of the module/zone in pixels"
1737
1845
  width: Int
1738
- "Height"
1846
+ "Height of the module/zone in pixels"
1739
1847
  height: Int
1740
- "Playlist assigned to this module"
1848
+ """
1849
+ Playlist ID assigned to this module/zone.
1850
+ Determines what content is displayed in this area of the screen.
1851
+ """
1741
1852
  playlistId: String
1742
- "Sequence or Z-Order"
1853
+ """
1854
+ Sequence or Z-order for overlapping modules/zones.
1855
+ Higher values appear in front of lower values.
1856
+ """
1743
1857
  sequence: Int
1858
+ """
1859
+ Module/zone configuration options (key-value pairs).
1860
+ Used to store type-specific settings like timezone for Clock zones, location for Weather zones, etc.
1861
+ """
1862
+ options: [ModuleOption]
1863
+ }
1864
+
1865
+ "Result from a module mutation within a template."
1866
+ type ModuleMutationResult {
1867
+ "Whether the operation was successful."
1868
+ success: Boolean!
1869
+ "The created or updated module."
1870
+ module: Module
1871
+ "Error message if the operation failed."
1872
+ error: String
1873
+ }
1874
+
1875
+ """
1876
+ Represents a configuration option for a module/zone (key-value pair).
1877
+ Module/zone options store settings specific to each module/zone type.
1878
+ """
1879
+ type ModuleOption {
1880
+ "Module/zone option unique identifier"
1881
+ id: String
1882
+ "Option name/key (e.g., 'timezone', 'location', 'refresh_interval')"
1883
+ name: String
1884
+ "Option value (stored as string, parse as needed for the specific option)"
1885
+ value: String
1886
+ }
1887
+
1888
+ "Result from a module option mutation."
1889
+ type ModuleOptionMutationResult {
1890
+ "Whether the operation was successful."
1891
+ success: Boolean!
1892
+ "The created or updated module option."
1893
+ option: ModuleOption
1894
+ "Error message if the operation failed."
1895
+ error: String
1744
1896
  }
1745
1897
 
1746
1898
  """
@@ -2085,12 +2237,26 @@ type Template {
2085
2237
  width: Int
2086
2238
  "Height"
2087
2239
  height: Int
2088
- "Orientation (Landscape, Portrait, Landscape Reversed, Portrait Reversed)"
2240
+ "Display orientation: Landscape, Portrait, Landscape Reversed, or Portrait Reversed"
2089
2241
  orientation: Int
2090
- "Modules or zones"
2242
+ """
2243
+ Collection of modules/zones that define content areas within this template.
2244
+ Each module/zone represents a rectangular region where content from a playlist is displayed.
2245
+ The terms "module" and "zone" are used interchangeably.
2246
+ """
2091
2247
  modules: [Module]
2092
2248
  }
2093
2249
 
2250
+ "Result from a template mutation."
2251
+ type TemplateMutationResult {
2252
+ "Whether the operation was successful."
2253
+ success: Boolean!
2254
+ "The updated template."
2255
+ template: Template
2256
+ "Error message if the operation failed."
2257
+ error: String
2258
+ }
2259
+
2094
2260
  "Result from updating media metadata."
2095
2261
  type UpdateMediaResult {
2096
2262
  "Whether the operation was successful."
@@ -2170,6 +2336,14 @@ input AddPlaylistSourceInput {
2170
2336
  position: Int
2171
2337
  }
2172
2338
 
2339
+ "Input for adding a module to a template."
2340
+ input AddTemplateModuleInput {
2341
+ "The template ID to add the module to."
2342
+ templateId: String
2343
+ "The module to add."
2344
+ module: ModuleInput
2345
+ }
2346
+
2173
2347
  "Aggregated audience metrics for a device over a time period"
2174
2348
  input AdHawkAudienceMetricsFilterInput {
2175
2349
  and: [AdHawkAudienceMetricsFilterInput!]
@@ -3221,6 +3395,14 @@ input BatchDeleteDataTableRowsInput {
3221
3395
  rowIds: [String]
3222
3396
  }
3223
3397
 
3398
+ "Input for batch updating multiple modules in a template."
3399
+ input BatchUpdateTemplateModulesInput {
3400
+ "The template ID."
3401
+ templateId: String
3402
+ "List of module updates to apply."
3403
+ modules: [UpdateTemplateModuleInput]
3404
+ }
3405
+
3224
3406
  """
3225
3407
  Represents Bluetooth Low Energy (BLE) beacon configuration for a device.
3226
3408
  Beacons enable proximity-based interactions, allowing mobile devices to detect nearby digital signage
@@ -3478,6 +3660,17 @@ input CreateDataTableRowInput {
3478
3660
  data: Any
3479
3661
  }
3480
3662
 
3663
+ """
3664
+ Input for creating a new organizational group (folder) for a resource type
3665
+ (devices, media, playlists, schedules, or templates).
3666
+ """
3667
+ input CreateGroupInput {
3668
+ "The name of the new group."
3669
+ name: String
3670
+ "Optional parent group ID to nest this group under. If omitted, the group is created at the root level."
3671
+ parentId: String
3672
+ }
3673
+
3481
3674
  "Input for creating a media asset by downloading from a URL."
3482
3675
  input CreateMediaFromUrlInput {
3483
3676
  "URL to download the media file from."
@@ -3904,6 +4097,13 @@ input ListFilterInputTypeOfModuleFilterInput {
3904
4097
  any: Boolean @cost(weight: "10")
3905
4098
  }
3906
4099
 
4100
+ input ListFilterInputTypeOfModuleOptionFilterInput {
4101
+ all: ModuleOptionFilterInput @cost(weight: "10")
4102
+ none: ModuleOptionFilterInput @cost(weight: "10")
4103
+ some: ModuleOptionFilterInput @cost(weight: "10")
4104
+ any: Boolean @cost(weight: "10")
4105
+ }
4106
+
3907
4107
  input ListFilterInputTypeOfScheduleDeviceFilterInput {
3908
4108
  all: ScheduleDeviceFilterInput @cost(weight: "10")
3909
4109
  none: ScheduleDeviceFilterInput @cost(weight: "10")
@@ -4096,30 +4296,96 @@ input MediaSortInput {
4096
4296
  }
4097
4297
 
4098
4298
  """
4099
- Represents a module (zone/region) within a template layout.
4100
- Modules define rectangular areas on screen where content from playlists is displayed.
4299
+ Represents a module (also called a zone or region) within a template layout.
4300
+ Modules/zones define rectangular areas on screen where content from playlists is displayed.
4301
+ The terms "module" and "zone" are used interchangeably throughout the API.
4101
4302
  """
4102
4303
  input ModuleFilterInput {
4103
4304
  and: [ModuleFilterInput!]
4104
4305
  or: [ModuleFilterInput!]
4105
- "Module id"
4306
+ "Module/zone unique identifier"
4106
4307
  id: StringOperationFilterInput
4107
- "Module name"
4308
+ "Module/zone name"
4108
4309
  name: StringOperationFilterInput
4109
- "Module type"
4310
+ "Module/zone type (e.g., 'Playlist', 'Clock', 'Weather', 'Ticker', 'Web')"
4110
4311
  type: StringOperationFilterInput
4111
- "Left position"
4312
+ "Left position in pixels from the top-left corner of the template"
4112
4313
  left: IntOperationFilterInput
4113
- "Top position"
4314
+ "Top position in pixels from the top-left corner of the template"
4114
4315
  top: IntOperationFilterInput
4115
- "Width"
4316
+ "Width of the module/zone in pixels"
4116
4317
  width: IntOperationFilterInput
4117
- "Height"
4318
+ "Height of the module/zone in pixels"
4118
4319
  height: IntOperationFilterInput
4119
- "Playlist assigned to this module"
4320
+ """
4321
+ Playlist ID assigned to this module/zone.
4322
+ Determines what content is displayed in this area of the screen.
4323
+ """
4120
4324
  playlistId: StringOperationFilterInput
4121
- "Sequence or Z-Order"
4325
+ """
4326
+ Sequence or Z-order for overlapping modules/zones.
4327
+ Higher values appear in front of lower values.
4328
+ """
4122
4329
  sequence: IntOperationFilterInput
4330
+ """
4331
+ Module/zone configuration options (key-value pairs).
4332
+ Used to store type-specific settings like timezone for Clock zones, location for Weather zones, etc.
4333
+ """
4334
+ options: ListFilterInputTypeOfModuleOptionFilterInput
4335
+ }
4336
+
4337
+ "Input for a module within a template - used when adding modules."
4338
+ input ModuleInput {
4339
+ "Module name."
4340
+ name: String
4341
+ "Module type (e.g., 'Playlist', 'Clock', 'Weather', 'Ticker', 'Web')."
4342
+ type: String
4343
+ "Left position in pixels."
4344
+ left: Int
4345
+ "Top position in pixels."
4346
+ top: Int
4347
+ "Width in pixels."
4348
+ width: Int
4349
+ "Height in pixels."
4350
+ height: Int
4351
+ "Playlist ID assigned to this module."
4352
+ playlistId: String
4353
+ "Z-order/sequence for overlapping modules."
4354
+ sequence: Int
4355
+ }
4356
+
4357
+ """
4358
+ Represents a configuration option for a module/zone (key-value pair).
4359
+ Module/zone options store settings specific to each module/zone type.
4360
+ """
4361
+ input ModuleOptionFilterInput {
4362
+ and: [ModuleOptionFilterInput!]
4363
+ or: [ModuleOptionFilterInput!]
4364
+ "Module/zone option unique identifier"
4365
+ id: StringOperationFilterInput
4366
+ "Option name/key (e.g., 'timezone', 'location', 'refresh_interval')"
4367
+ name: StringOperationFilterInput
4368
+ "Option value (stored as string, parse as needed for the specific option)"
4369
+ value: StringOperationFilterInput
4370
+ }
4371
+
4372
+ """
4373
+ Request model for creating or updating a module/zone option.
4374
+ Used to set configuration values for specific module/zone types.
4375
+ """
4376
+ input ModuleOptionRequestInput {
4377
+ "Option name/key (e.g., 'timezone', 'location', 'url')"
4378
+ name: String
4379
+ "Option value (string representation that will be parsed based on the option type)"
4380
+ value: String
4381
+ }
4382
+
4383
+ "Represents a module ID and its new sequence number for reordering."
4384
+ input ModuleSequenceInput {
4385
+ "The module ID."
4386
+ moduleId: String
4387
+ "The new sequence/z-order value."
4388
+ sequence: Int!
4123
4389
  }
4124
4390
 
4125
4391
  input NullableOfAdHawkAgeRangeOperationFilterInput {
@@ -4349,6 +4615,24 @@ input PlaylistTypeOperationFilterInput {
4349
4615
  nin: [PlaylistType!] @cost(weight: "10")
4350
4616
  }
4351
4617
 
4618
+ "Input for removing a module option by name."
4619
+ input RemoveModuleOptionInput {
4620
+ "The template ID."
4621
+ templateId: String
4622
+ "The module ID."
4623
+ moduleId: String
4624
+ "The option name to remove."
4625
+ optionName: String
4626
+ }
4627
+
4628
+ "Input for removing a module from a template."
4629
+ input RemoveTemplateModuleInput {
4630
+ "The template ID containing the module."
4631
+ templateId: String
4632
+ "The module ID to remove."
4633
+ moduleId: String
4634
+ }
4635
+
4352
4636
  "Input for reordering rows in a data table."
4353
4637
  input ReorderDataTableRowsInput {
4354
4638
  "The table ID containing the rows."
@@ -4365,6 +4649,14 @@ input ReorderPlaylistSourcesInput {
4365
4649
  sourceIds: [String]
4366
4650
  }
4367
4651
 
4652
+ "Input for reordering modules within a template."
4653
+ input ReorderTemplateModulesInput {
4654
+ "The template ID."
4655
+ templateId: String
4656
+ "List of module IDs with their new sequence numbers."
4657
+ moduleSequences: [ModuleSequenceInput]
4658
+ }
4659
+
4368
4660
  "Input for rolling back a row to a previous version."
4369
4661
  input RollbackDataTableRowInput {
4370
4662
  "The table ID containing the row."
@@ -4595,6 +4887,16 @@ input ScheduleTypeOperationFilterInput {
4595
4887
  nin: [ScheduleType!] @cost(weight: "10")
4596
4888
  }
4597
4889
 
4890
+ "Input for setting all options for a module (replaces existing)."
4891
+ input SetModuleOptionsInput {
4892
+ "The template ID."
4893
+ templateId: String
4894
+ "The module ID."
4895
+ moduleId: String
4896
+ "List of options to set (replaces all existing options)."
4897
+ options: [ModuleOptionRequestInput]
4898
+ }
4899
+
4598
4900
  """
4599
4901
  Represents a content item within a playlist. A source defines what content to display
4600
4902
  and for how long. Sources can reference media files, templates, embedded playlists, URLs, or other content types.
@@ -4712,9 +5014,13 @@ input TemplateFilterInput {
4712
5014
  width: IntOperationFilterInput
4713
5015
  "Height"
4714
5016
  height: IntOperationFilterInput
4715
- "Orientation (Landscape, Portrait, Landscape Reversed, Portrait Reversed)"
5017
+ "Display orientation: Landscape, Portrait, Landscape Reversed, or Portrait Reversed"
4716
5018
  orientation: IntOperationFilterInput
4717
- "Modules or zones"
5019
+ """
5020
+ Collection of modules/zones that define content areas within this template.
5021
+ Each module/zone represents a rectangular region where content from a playlist is displayed.
5022
+ The terms "module" and "zone" are used interchangeably.
5023
+ """
4718
5024
  modules: ListFilterInputTypeOfModuleFilterInput
4719
5025
  }
4720
5026
 
@@ -4749,7 +5055,7 @@ input TemplateSortInput {
4749
5055
  width: SortEnumType @cost(weight: "10")
4750
5056
  "Height"
4751
5057
  height: SortEnumType @cost(weight: "10")
4752
- "Orientation (Landscape, Portrait, Landscape Reversed, Portrait Reversed)"
5058
+ "Display orientation: Landscape, Portrait, Landscape Reversed, or Portrait Reversed"
4753
5059
  orientation: SortEnumType @cost(weight: "10")
4754
5060
  }
4755
5061
 
@@ -4837,6 +5143,62 @@ input UpdatePlaylistSourceInput {
4837
5143
  source: SourceInput
4838
5144
  }
4839
5145
 
5146
+ "Input for updating a template's properties."
5147
+ input UpdateTemplateInput {
5148
+ "The template ID to update."
5149
+ templateId: String
5150
+ "Template name."
5151
+ name: String
5152
+ "Group ID to assign the template to."
5153
+ groupId: String
5154
+ "Tags (newline-delimited values stored in Description field)."
5155
+ tags: String
5156
+ "Template script for custom logic."
5157
+ script: String
5158
+ "Background color (e.g., '#000000')."
5159
+ backColor: String
5160
+ "Template width in pixels."
5161
+ width: Int
5162
+ "Template height in pixels."
5163
+ height: Int
5164
+ "Display orientation (0=Landscape, 1=Portrait, 2=Landscape Reversed, 3=Portrait Reversed)."
5165
+ orientation: Int
5166
+ }
5167
+
5168
+ "Input for updating an existing module within a template."
5169
+ input UpdateTemplateModuleInput {
5170
+ "The template ID containing the module."
5171
+ templateId: String
5172
+ "The module ID to update."
5173
+ moduleId: String
5174
+ "Module name."
5175
+ name: String
5176
+ "Module type."
5177
+ type: String
5178
+ "Left position in pixels."
5179
+ left: Int
5180
+ "Top position in pixels."
5181
+ top: Int
5182
+ "Width in pixels."
5183
+ width: Int
5184
+ "Height in pixels."
5185
+ height: Int
5186
+ "Playlist ID assigned to this module."
5187
+ playlistId: String
5188
+ "Z-order/sequence."
5189
+ sequence: Int
5190
+ }
5191
+
5192
+ "Input for upserting (create or update) a single module option."
5193
+ input UpsertModuleOptionInput {
5194
+ "The template ID."
5195
+ templateId: String
5196
+ "The module ID."
5197
+ moduleId: String
5198
+ "The option to create or update (matched by name)."
5199
+ option: ModuleOptionRequestInput
5200
+ }
5201
+
4840
5202
  "User model"
4841
5203
  input UserFilterInput {
4842
5204
  and: [UserFilterInput!]