{{apiSource.lastResponseJson}}
+
+ {{else}}
+ API sources
+Store API endpoints, refresh cadence, and the latest JSON response pulled from each endpoint.
+Saved sources
+ {{#if (hasPermission currentUser 'api-sources.create')}} +| Name | +API URL | +Refresh interval | +Last pulled | +Last response | +Actions | +
|---|---|---|---|---|---|
| {{name}} | +{{api_url}} | +{{intervalLabel}} | ++ {{#if lastPulledAtValue}} + + {{else}} + {{lastPullLabel}} + {{/if}} + | ++ {{#if last_pull_error}} + Failed + {{else if last_response_status}} + {{last_response_status}} + {{#if last_response_content_type}}{{last_response_content_type}}{{/if}} + {{else}} + - + {{/if}} + | +
+ {{#if (anyPermission ../currentUser 'api-sources.update' 'api-sources.delete')}}
+
+ {{#if (hasPermission ../currentUser 'api-sources.update')}}
+ Edit
+ {{/if}}
+ {{#if (hasPermission ../currentUser 'api-sources.delete')}}
+
+ {{/if}}
+
+ {{else}}
+ -
+ {{/if}}
+ |
+
| No API sources yet. | |||||
Add RSS feed
+Capture a feed URL, refresh interval, and the number of items to store.
+RSS feed details
+Edit RSS feed - {{rssFeed.name}}
+Adjust the source URL, refresh interval, or item count.
+RSS feed details
+Pulled items
++ +
+-
+
- Title +
- {{title}} + +
- Link +
- + {{#if link}} + {{link}} + {{else}} + - + {{/if}} + + +
- Published +
- {{#if pubDate}}{{pubDate}}{{else}}-{{/if}} + +
- Author +
- {{#if itemJson.author}}{{itemJson.author}}{{else}}-{{/if}} + +
- GUID +
- {{#if itemJson.guid}}{{itemJson.guid}}{{else}}-{{/if}} + +
- Comments +
- + {{#if itemJson.comments}} + {{itemJson.comments}} + {{else}} + - + {{/if}} + + +
- Description +
- {{#if description}}{{description}}{{else}}-{{/if}} + +
- Categories +
-
+ {{#if itemJson.categories.length}}
+
-
+ {{#each itemJson.categories}}
+
- + {{value}} + {{#if domain}}{{domain}}{{/if}} + + {{/each}} +
+
+ - Enclosure +
-
+ {{#if itemJson.enclosure}}
+
-
+
- URL +
- + {{#if itemJson.enclosure.url}} + {{itemJson.enclosure.url}} + {{else}} + - + {{/if}} + +
- Length +
- {{#if itemJson.enclosure.length}}{{itemJson.enclosure.length}}{{else}}-{{/if}} +
- Type +
- {{#if itemJson.enclosure.type}}{{itemJson.enclosure.type}}{{else}}-{{/if}} +
+
+ - Source +
-
+ {{#if itemJson.source}}
+
-
+
- Title +
- {{#if itemJson.source.title}}{{itemJson.source.title}}{{else}}-{{/if}} +
- URL +
- + {{#if itemJson.source.url}} + {{itemJson.source.url}} + {{else}} + - + {{/if}} + +
+
+ - Raw item XML +
-
+ {{#if itemJson.rawXml}}
+ ++ {{else}} + - + {{/if}} +
Show raw XML
+{{itemJson.rawXml}}+
+
RSS feeds
+Store feed sources, refresh cadence, and how many entries to pull each time.
+Saved feeds
+ {{#if (hasPermission currentUser 'rss-feeds.create')}} +| Name | +Feed URL | +Refresh interval | +Items pulled | +Actions | +
|---|---|---|---|---|
| {{name}} | +{{feed_url}} | +{{intervalLabel}} | +{{itemLabel}} | +
+ {{#if (anyPermission ../currentUser 'rss-feeds.update' 'rss-feeds.delete')}}
+
+ {{#if (hasPermission ../currentUser 'rss-feeds.update')}}
+ Edit
+ {{/if}}
+ {{#if (hasPermission ../currentUser 'rss-feeds.delete')}}
+
+ {{/if}}
+
+ {{else}}
+ -
+ {{/if}}
+ |
+
| No RSS feeds yet. | ||||
{{statusCode}}
+{{errorTitle}}
+{{errorMessage}}
+ {{#if detail}} +{{detail}}
+ {{/if}}
+ Sign in
-Use your admin credentials to manage screens, playlists, and slides.
- - {{#if message}} -Background tasks
+Queued data refreshes run in the web process. Finished items stay here until you clear them.
+Task queue
+| Task | +Category | +Status | +Queued | +Started | +Finished | +Source | +Actions | +
|---|---|---|---|---|---|---|---|
|
+ {{title}}
+ {{#if key}}
+ {{key}}
+ {{/if}}
+ {{#if errorMessage}}
+ {{errorMessage}}
+ {{/if}}
+ |
+ {{category}} | ++ {{#if (eq status 'queued')}} + Queued + {{else if (eq status 'running')}} + Running + {{else if (eq status 'completed')}} + Completed + {{else if (eq status 'failed')}} + Failed + {{else if (eq status 'canceled')}} + Canceled + {{else}} + {{status}} + {{/if}} + | ++ {{#if createdAt}} + + {{else}} + - + {{/if}} + | ++ {{#if startedAt}} + + {{else}} + - + {{/if}} + | ++ {{#if finishedAt}} + + {{else}} + - + {{/if}} + | +
+ {{#if metadata.sourceName}}
+ {{metadata.sourceName}}
+ {{metadata.sourceType}} #{{metadata.sourceId}}
+ {{else}}
+ -
+ {{/if}}
+ |
+
+
+ {{#if canManage}}
+ {{#if (eq status 'queued')}}
+
+ {{/if}}
+ {{#if (eq status 'failed')}}
+
+ {{/if}}
+ {{/if}}
+
+ |
+
| No background tasks are queued right now. | +|||||||
Scheduled refreshes
+| Task | +Interval | +Next run | +Last run | +Last result | +Source | +
|---|---|---|---|---|---|
|
+ {{title}}
+ {{key}}
+ |
+ {{intervalLabel}} | ++ {{#if nextRunAt}} + + {{else}}-{{/if}} + | ++ {{#if lastRunAt}} + + {{else}}-{{/if}} + | +
+ {{#if lastStatus}}
+ {{lastStatus}}
+ {{#if lastError}} {{lastError}} {{/if}}
+ {{else}}
+ -
+ {{/if}}
+ |
+
+ {{#if metadata.sourceName}}
+ {{metadata.sourceName}}
+ {{metadata.sourceType}} #{{metadata.sourceId}}
+ {{else}}
+ -
+ {{/if}}
+ |
+
| No scheduled refreshes are registered yet. | +|||||