System Administration
System configuration, database setup, scheduling, statistics, collections, tags, media delivery, payments, recommendations, and embedded content.
System Administration API
Overview
The System Administration API provides endpoints for system configuration, database setup, scheduling, statistics, metadata management (collections, tags, related content), media delivery, payments, recommendations, embedded content, and legacy V1 operations.
System Management
Base Route: admin/system
Invalidate Cache
- POST
admin/system/invalidate-cache - Auth: Bearer token required
- Description: Invalidates the CDN distribution cache for the specified paths.
- Request Body:
InvalidateDistributionModel - Response:
bool— true if the cache invalidation succeeded.
Rebuild Share
- POST
admin/system/rebuild-share/{shareId?} - Auth: Bearer token required
- Description: Rebuilds share index records. If a share ID is provided, only that share is rebuilt; otherwise, all shares are rebuilt.
- Parameters:
shareId(path, optional) — The specific share to rebuild.excludeExpiredShares(query, default: true) — Whether to skip expired shares.
- Response:
200 OK
Email Dispatcher
- POST
admin/system/email-dispatcher - Auth: Bearer token required (admin user only)
- Description: Dispatches an email using the provided email configuration.
- Request Body:
EmailDispatcherModel - Response:
bool— true if the email was sent.
License Check
- GET
admin/system/license-check - Auth: None
- Description: Returns the encrypted license grant for the specified customer ID.
- Parameters:
id(query) — The customer identifier.
- Response:
string— The encrypted license grant.
License Test
- POST
admin/system/license-test - Auth: None
- Description: Checks and returns the current license for the application.
- Parameters:
forceReload(query) — Whether to force a fresh license check from the license server.
- Response:
LicenseGrant
Migrate Assets
- POST
admin/system/migrate-assets - Auth: Admin user only
- Description: Triggers an asset migration from one platform to another using the specified bucket replacements.
- Request Body:
List<KeyValuePair<string, string>>— Bucket name replacements. - Response:
BatchResultModel
Align Catalog
- POST
admin/system/align-catalog - Auth: Admin user only
- Description: Aligns the catalog by triggering a batch action to synchronize catalog data.
- Request Body:
AlignCatalogModel(optional) - Response:
BatchResultModel
Database Setup
Base Route: admin/setup
Auth: Bearer token required for all endpoints.
Create Database Tables
- POST
admin/setup/create-db-tables - Description: Ensures all required database tables exist.
- Response:
200 OK
Create Content Definitions File
- POST
admin/setup/create-contentdefinitions-file - Description: Generates and returns the built-in content definitions as a JSON string.
- Response:
string— The generated JSON content definitions.
Create Default Saved Searches
- POST
admin/setup/create-default-savedsearches - Description: Ensures default saved search configurations exist in the system.
- Response:
200 OK
Create Default Live Output Profile Groups
- POST
admin/setup/create-default-liveoutputprofilegroups - Description: Ensures default live output profile groups exist.
- Response:
200 OK
Upgrade 2023-12
- POST
admin/setup/upgrade-2023-12 - Description: Triggers the December 2023 upgrade batch process.
- Response:
200 OK
Upgrade 2024-02
- POST
admin/setup/upgrade-2024-02 - Description: Triggers the February 2024 full update upgrade.
- Parameters:
previewOnly(query, default: true) — When true, previews the upgrade without applying changes.
- Response:
200 OK
Upgrade 2024-08
- POST
admin/setup/upgrade-2024-08 - Description: Triggers the August 2024 share migration upgrade.
- Parameters:
previewOnly(query, default: true) — When true, previews the upgrade without applying changes.
- Response:
200 OK
Upgrade 2024-12
- POST
admin/setup/upgrade-2024-12 - Description: Triggers the December 2024 upgrade, which migrates security permissions and live output profile groups to S3.
- Parameters:
previewOnly(query, default: true) — When true, previews the upgrade without applying changes.
- Response:
200 OK
Statistics & Reporting
Base Route: admin/statistics
Auth: Bearer token required for all endpoints.
Get All Statistics
- GET
admin/statistics/all - Description: Retrieves all available statistics records.
- Response:
List<StatisticsListModel>
Get Statistics by Date Range
- GET
admin/statistics/date-range - Description: Retrieves statistics records within the specified date range.
- Parameters:
fromDate(query) — The start date.toDate(query) — The end date.
- Response:
List<StatisticsListModel>
Get Statistics Measurements Config
- GET
admin/statistics/measurements/config - Description: Returns the statistics measurements configuration, including available measurement types and settings.
- Response:
StatisticsConfigResultModel
List Statistics Measurements
- POST
admin/statistics/measurements - Description: Returns aggregated statistics measurements from search indexes over the specified period.
- Request Body:
StatisticsRequestModel - Response:
IEnumerable<StatisiticsDataGraph>
Update Statistics Measurements (Restore from Rollups)
- POST
admin/statistics/measurements/rollup - Description: Restores statistics measurement data from S3 rollup snapshots into the search index.
- Response:
204 No Content
Generate Measurements (Rollup Snapshot)
- PUT
admin/statistics/measurements/rollup - Description: Generates a rollup snapshot of statistics measurements for the specified date.
- Parameters:
snapshotDate(query, optional) — The date for the rollup snapshot.
- Response:
204 No Content
Export Journal
- POST
admin/statistics/exportjournal - Description: Exports journal entries as an Excel spreadsheet for the specified date range. Supports background or synchronous processing.
- Parameters:
exportDate(query) — The export start date.exportEndDate(query, optional) — The export end date.background(query, default: true) — Whether to process in the background.
- Response: Excel file when synchronous, or
204 No Contentwhen background.
Generate Statistics
- POST
admin/statistics/generate-statistics - Auth: Admin user only
- Description: Generates system-wide statistics for the environment.
- Parameters:
forceReload(query) — Whether to regenerate statistics even if they already exist.
- Response:
bool— true if statistics were generated.
Scheduling
Base Route: admin/schedule
Auth: Bearer token required for all endpoints.
Get Schedule
- GET
admin/schedule/{scheduleId} - Description: Retrieves a specific schedule by its identifier.
- Response:
ScheduleModel
Get Schedule Preview
- GET
admin/schedule/{scheduleId}/preview - Description: Returns a preview of the schedule guide.
- Response:
List<ScheduleGuideModel>
Get Schedule Item
- GET
admin/schedule/{scheduleId}/item/{itemId} - Description: Retrieves a specific schedule item by its identifier.
- Response:
ScheduleItemModel
Get Schedule Items
- GET
admin/schedule/{scheduleId}/items - Description: Retrieves all items belonging to a specific schedule.
- Response:
List<ScheduleItemModel>
Create Schedule
- POST
admin/schedule - Request Body:
AddScheduleModel - Response:
ScheduleModel
Create Schedule Item
- POST
admin/schedule/{scheduleId}/item - Request Body:
AddScheduleItemModel - Response:
ScheduleItemChangeModel
Update Schedule
- PUT
admin/schedule/{scheduleId} - Request Body:
AddScheduleModel - Response:
ScheduleModel
Update Schedule Item
- PUT
admin/schedule/{scheduleId}/item/{itemId} - Request Body:
AddScheduleItemModel - Response:
ScheduleItemModel
Delete Schedule
- DELETE
admin/schedule/{scheduleId} - Response:
IdModel
Delete Schedule Item
- DELETE
admin/schedule/{scheduleId}/item/{itemId} - Response:
ScheduleItemChangeModel
Move Schedule Item
- POST
admin/schedule/{scheduleId}/item/{itemId}/move - Request Body:
ScheduleItemMoveModel - Response:
List<ScheduleItemModel>
Start Schedule
- POST
admin/schedule/{scheduleId}/start - Description: Starts the schedule for live channel playback.
- Parameters:
background(query, default: true) - Response:
ScheduleModel
Stop Schedule
- POST
admin/schedule/{scheduleId}/stop - Description: Stops a running schedule.
- Parameters:
background(query, default: true) - Response:
ScheduleModel
Publish Schedule
- POST
admin/schedule/{scheduleId}/publish - Request Body:
PublishScheduleRequestModel - Parameters:
background(query, default: true) - Response:
ScheduleModel
Import Schedule Items
- POST
admin/schedule/{scheduleId}/items/import - Request Body:
List<ImportScheduleItemModel> - Response:
List<ScheduleItemModel>
S3 Events
Base Route: s3
S3 Webhook
- POST
s3/webhook - Auth: None
- Description: Receives and processes S3 bucket event notifications.
- Response:
200 OKor400 Bad Request
Collections
Base Route: admin/collection
Auth: Bearer token required for all endpoints.
| Method | Route | Description | Response |
|---|---|---|---|
| GET | /{id} | Get collection | CollectionModel |
| POST | / | Create or update collection | IdModel |
| DELETE | /{id} | Delete collection | IdModel |
| POST | /content | Add collection content associations | BatchResultModel |
| POST | /content/delete | Remove collection content associations | BatchResultModel |
Tags
Base Route: admin/tag
Auth: Bearer token required for all endpoints.
| Method | Route | Description | Response |
|---|---|---|---|
| GET | /{id} | Get tag | TagModel |
| POST | / | Create or update tag | IdModel |
| DELETE | /{id} | Delete tag | IdModel |
| POST | /content | Add tag content associations | BatchResultModel |
| POST | /content/delete | Remove tag content associations | BatchResultModel |
Related Content
Base Route: admin/related
Auth: Bearer token required for all endpoints.
| Method | Route | Description | Response |
|---|---|---|---|
| POST | / | Create related content associations | BatchResultModel |
| POST | /delete | Remove related content associations | BatchResultModel |
Comments
Base Route: comment
Auth: Bearer token required for all endpoints.
| Method | Route | Description | Response |
|---|---|---|---|
| GET | /{contentId} | Get comments for content | List<ContentCommentModel> |
| POST | /{contentId} | Create comment | ContentCommentModel |
| PUT | /{commentId} | Update comment | ContentCommentModel |
| DELETE | /{commentId} | Delete comment | IdModel |
Media
Base Route: media
Public Endpoints (No Auth)
| Method | Route | Description | Response |
|---|---|---|---|
| GET | /group/{fullSlugOrId} | Get media group | MediaGroupModel |
| GET | /item/{fullSlugOrId} | Get media item | MediaItemModel |
| GET | /content/{fullSlugOrId} | Get dynamic content | DynamicContentModel |
| GET | /content | List dynamic content | List<DynamicContentModel> |
| GET | /config/{id} | Get site config | SiteConfigModel |
| GET | /config | Get default site config | SiteConfigModel |
| POST | /search | Media search | List<FeaturedItemModel> |
| POST | /form/{id} | Post custom form | IdModel |
| GET | /routes | Get URL routes (text/plain) | string |
| GET | /sitemap/{baseUrl} | Get sitemap (text/plain) | string |
| GET | /set-cookies/{id} | Get secure cookies | IEnumerable<string> |
Authenticated Endpoints (Bearer Token)
| Method | Route | Description | Response |
|---|---|---|---|
| GET | /my-group/{id} | Get personalized media group | MediaGroupModel |
| GET | /my-group/{id}/{profileId} | Get media group by profile | MediaGroupModel |
| GET | /my-content | Get favorites/watchlist | MyContentModel |
| GET | /my-content/{profileId} | Get content by profile | MyContentModel |
| POST | /clear-watchlist | Clear watchlist | — |
| POST | /clear-watching | Clear continue watching | — |
Media Builder
Base Route: mediaBuilder
Auth: Bearer token required for all endpoints.
| Method | Route | Description | Response |
|---|---|---|---|
| GET | / | Get all media builders | MediaBuilderModel[] |
| GET | /{mediaBuilderId} | Get media builder | MediaBuilderModel |
| GET | /idsbysource/{sourceAssetId} | Get IDs by source asset | Guid[] |
| GET | /{mediaBuilderId}/items | Get items | MediaBuilderItemModel[] |
| POST | / | Create media builder | MediaBuilderModel |
| PUT | /{mediaBuilderId} | Update media builder | MediaBuilderModel |
| POST | /{mediaBuilderId}/items | Create item | MediaBuilderItemChangeModel |
| POST | /{mediaBuilderId}/items/{sourceAssetId}/add-annotations | Create from annotations | MediaBuilderItemChangeModel[] |
| POST | /{mediaBuilderId}/items/bulk | Bulk create items | MediaBuilderItemChangeModel[] |
| DELETE | /{mediaBuilderId} | Delete media builder | IdModel |
| DELETE | /{mediaBuilderId}/items/{itemId} | Delete item | MediaBuilderItemChangeModel |
| POST | /{mediaBuilderId}/items/{itemId}/move | Move item | MediaBuilderItemChangeModel |
| POST | /{mediaBuilderId}/render | Render | MediaBuilderModel |
| POST | /{mediaBuilderId}/duplicate | Duplicate | MediaBuilderModel |
MRSS Feed
- GET
mrss/feed— Returns MRSS XML feed. Auth: Bearer token required.
Payments
Base Route: payment
Auth: Bearer token required for all endpoints.
| Method | Route | Description | Response |
|---|---|---|---|
| POST | /start-transaction | Start payment | StartTransactionResponseModel |
| POST | /{id}/cancel-transaction | Cancel payment | IdModel |
| POST | /{id}/complete-transaction | Complete payment | IdModel |
Recommendations
Base Route: recommendation
Auth: Bearer token required for all endpoints.
| Method | Route | Description |
|---|---|---|
| POST | /index-assets | Index assets for recommendations |
| POST | /index-content | Index content for recommendations |
| POST | /interaction | Submit user interaction |
| DELETE | /delete-item/{id} | Remove item from index |
Roku Feed
- GET
roku/feed— Returns Roku Direct Publisher JSON feed. Auth: None.
Stage (Interactive Experience)
Base Route: stage
Auth: Bearer token required for all endpoints.
| Method | Route | Description | Response |
|---|---|---|---|
| POST | /auth | Authenticate session | StageLoginResponseModel |
| GET | /ping/{id} | Session heartbeat | StagePingResponseModel |
| POST | /start-session | Start session | StageLoginResponseModel |
| POST | /verify-session | Verify session | StageLoginResponseModel |
Embedded Content
Base Route: embedded
Auth: None for all endpoints.
| Method | Route | Produces | Description |
|---|---|---|---|
| GET | /iframe-media | text/html | IFrame video player |
| GET | /media/{id} | application/json | Embedded media model |
| GET | /share-media | text/html | Share page with social metadata |
| GET | /share/{shareId} | application/json | Shared search results |
CoJudicial Streams
- GET
cojudicial/streams— Returns counties and live streams. Auth: None.
V1 Legacy API
Base Route: v1/
Auth: Bearer token required.
Legacy endpoints maintained for backward compatibility. New development should use the current API versions.
- Config, Content, Content Definitions, Content Definition Groups, Content Instances, Content Labels, Content Types, Fields, Lookups
Common Error Responses
| Status Code | Description |
|---|---|
| 400 | Bad Request — Missing or invalid parameters |
| 401 | Unauthorized — Missing or invalid Bearer token |
| 403 | Forbidden — Insufficient permissions |
| 404 | Not Found — Resource does not exist |
| 500 | Internal Server Error — Unexpected error |
