dgmbq7cup3tep.cloudfront.net
Open in
urlscan Pro
2600:9000:261f:8000:17:c4a:2840:93a1
Public Scan
URL:
https://dgmbq7cup3tep.cloudfront.net/
Submission: On December 03 via api from US — Scanned from US
Submission: On December 03 via api from US — Scanned from US
Form analysis
0 forms found in the DOMText Content
* Introduction * Cross-Origin Resource Sharing * Authentication * Image Manipulation * Content Taxonomy * Deprecated Routes * App Load * postGet the information necessary to load an app. * App Version * getGet latest app version by platform. * Country * postGet geo data from IP. * Category * getGet all categories. * getGet a category. * Channel * getGet all channels. * getGet channels by category. * getGet a channel by category. * getGet a child channel. * getGet a channel without category. * getGet a channel without category. * getGet channel by Spotlight Channel ID. * postRefresh a channel. * postRefresh a company's channels * postRefresh channels in bulk * Company * getGet all videos. * getGet all available channels. * getGet all available genres. * getGet all subscribed to channels. * postUnsubscribe from channel. * DRM * getGet a stream session ID * getRegister concurrent stream * delDestroy stream session * delDestroy a user's login session * delDestroy every login session for a user * Live * getGet live channels. * getGet a live channel. * getGet company EPG. * getGet EPG program by Program ID. * Page * getGet home page data. * getGet movies page data. * getGet series page data. * getGet a list of pages. * getGet the navigation menu. * getGet a page. * getGet a list of posts. * getGet a post. * getGet a story block. * Playlist * getGet videos by playlist ID. * Roku * getGet a JSON direct publisher feed for your company. * Search * getFind channels by platform. * getFind programs by platform and country code. * getFind videos. * getFind video titles (autocomplete). * getFind channel titles (autocomplete). * getGet content recommendations. * getGet video recommendations. * getGet recommendations by Video ID. * getGet recommendations by Channel. * getSearch channels. * getSearch videos. * Subscription * Subscription Creation Flow * Subscription Entitlement Flow * Subscription Upgrade/Downgrade (Web Only) * Subscription Reactivation (Web Only) * Subscription Support * getGet company product summary. * getGet the default subscription behavior. * getGet list of channels in a product. * getGet all products a channel part of. * getGet subscription user. * getGet subscription user. * getGet user's subscriptions. * getGet user's products. * getGet a user's purchase history * getCheck subscription status. * postCreate a payment profile for a user (WEB) * postImport Braintree user and subscribe (WEB) * postSubscribe user. * postCancel subscription (WEB) * postValidate coupon (WEB) * postCreate an Amazon Fire subscription (AMAZON FIRE) * postCreate an Apple subscription (APPLE) * postCreate an Android/Google subscription (ANDROID/GOOGLE) * postAttach Roku customer data to a user (ROKU) * postAssociate a Roku transaction id with a user (ROKU) * postCreate a Roku subscription (ROKU) * putUpdate payment profile. * postVerify subscription entitlement for one or more users. * Token * postObtain API access token. * User * postGet a client token. * getGet user details. * delRemove a user from the system * getGet the account deletion date for a user * postRefresh client token. * postGet payment token. * getGet all "recently watched" data. * getGet "recently watched" data for a video. * postCreate point data. * Video * getGet a video by ID. * getGet a video by slug. * getGet a random video. * getGet video MRSS feed. * VMAP * getGet a VMAP document for a video * Watchlist * getGet a user's watchlist. * postAdd to a user's watchlist. * delDelete a channel from a user's watchlist. * Webhooks API docs by Redocly DOTSTUDIOPRO API Download OpenAPI specification:Download E-mail: info@dotstudiopro.com Find out more about dotstudioPRO INTRODUCTION dotstudioPRO exposes its data via an Application Programming Interface (API), so developers can interact in a programmatic way with the dotstudioPRO application. This document is the official reference for that functionality. CROSS-ORIGIN RESOURCE SHARING This API features Cross-Origin Resource Sharing (CORS). All responses have a wildcard same-origin which makes them completely public and accessible to everyone, including any code on any site. AUTHENTICATION Most requests to the API require an API access token passed in as a header, with key x-access-token. To obtain a new access token, retrieve your API key from the "User" settings in the dotstudioPRO dashboard, and use it to create a POST request to the API's Token endpoint. An additional token is required whenever accessing any user-related functions, such as logging users in, getting or updating user data, or creating orders. This token should be passed in via the header as x-client-token. The reference for this functionality is avaliable under "User". IMAGE MANIPULATION The size of any image served by dotstudioPRO is configurable to best fit your use-case. To get a custom size for any image append the image URL with two path parameters, one for width and one for height. For example, you may receive an thumbnail URL such as https://images.dotstudiopro.com/58a37a4a99f815d405cb59f7 when you make a call to get video info, but your UI only requires a 350x200 version of this image and you want a smaller copy to save your users bandwidth. You may append the URL with /350/200 to get a smaller version to use in your app/project. Example - https://images.dotstudiopro.com/58a37a4a99f815d405cb59f7/350/200 Two additional querystring parameters are available: blur - a value between 1 and 100 can be passed to apply a blur filter to the image Example - https://images.dotstudiopro.com/58a37a4a99f815d405cb59f7?blur=80. webp - a value of 1 can be passed to return an image in the WebP format Example - https://images.dotstudiopro.com/58a37a4a99f815d405cb59f7?webp=1. All new iterations of any images are automatically cached in a CDN. CONTENT TAXONOMY dotstudioPRO allows users to organize content in a top-down taxonomy. At the top-most level are Categories - here users specify which devices, platforms, or feeds published content appears on. Most commonly a category will be rendered as an individual page, rail, or carousel in an application. A Category can be assigned to any number of channels. The next level down are Channels. A channel that is published and assigned to a category will begin appearing in API responses whenever that category data is requested. A channel may have any number of categories assigned to it. A channel not assigned to any categories is essentially unpublished and will not be visible in any applications. dotstudioPRO has 3 main channel types: 1. parent channels. This channel type is used to group seasonal content (ie multiple "regular" channels) together. The simplest check you can make to know if you are looking at a parent channel is to look at the length of the childchannels array - if it comes back with a value greater than 0 you are looking at a parent channel. 2. regular channels. This channel type contains a single video or a playlist of videos. To determine what the contents of a regular channel are, check the length of the laylist array. If the array has any items in it, each item will represent a video in the playlist assigned to the channel. Otherwise, if the playlist array is empty it means the channel contains only a single video which will be found under the video key. 3. live channels. This channel type is used to create Live Linear playouts and will always contain a single live video & stream URL. There will be other keys you can use to categorize channel types, but they will likely be dependent on how your content team configures metadata in the dashboard. The above examples are provided as the "universal" check as they are going to be reliable no matter how you set up your content. In summary: if (channel?.childchannels?.length) { //this is a parent channel containing 1...n regular channels } else if (channel?.playlist?.length) { //this is a regular channel containing a playlist with 1...n videos } else { //this is a regular channel containing exactly 1 video } The next level down are Playlists. dotstudioPRO allows users to either construct playlists manually with a drag-and-drop interface, or construct playlists dynamically based on video metadata. The API responses for the two different playlist types are normalized, and any items inside the channel.playlist array will always have the same model and each represent a single video. The final layer of the content taxonomy are Videos. These point to an actual video file and contain any video-specific data like ad rules, VoD rules, title-specific metadata etc. DEPRECATED ROUTES Any routes that are deprecated will be marked as deprecated in the documentation and a x-deprecation header will be returned with a timestamp the route is expected to stop functioning. If there is an alternate or updated route to use, this will be returned in a x-deprecation-update header with a url to the documentation for the new route. APP LOAD GET THE INFORMATION NECESSARY TO LOAD AN APP. post/appload/{platform}/{countryCode} https://api.myspotlight.tv/appload/{platform}/{countryCode} This route is a combination of several features/routes that make loading an app easier. First, this route returns an object called app_data. This returns app info metadata and an access token (app_data.token). This ensures that your app does not have to hit our /token route to get a new token when the app launches. Second, this route returns an object called user_data. If the x-client-token header is not passed, this object will be empty. If the x-client-token header is passed with a valid token, there will be a token property that is a fresh client, along with some other user data like resumptions and subscription info. Note: If the login session for the client token is expired or invalid, the user_data object will have either a clear_sessions_only flag, or a must_reauthenticate flag. Please refer to the headers of similar names in our DRM documentation to understand what each means. In these instances, the client token that is returned will not be usable and the user must be redirected to authenticate for the app to receive a fresh client token. Third, this route returns an object called homepage which is the equivalent of calling our Home Page route. PATH PARAMETERS countryCode required string 2-letter ISO Alpha2 formatted country code of the end-user. platform required string Enum: "android" "androidtv" "appletv" "firetv" "ios" "roku" "tizen" "website" "html5" The platform creating the request. QUERY PARAMETERS api_key required string An API key to authenticate against the Spotlight API. asset_dates boolean A flag to return asset dates (created_at, updated_at) with video assets. HEADER PARAMETERS x-client-token string The client token for a user who has already authenticated. RESPONSES 200 Successful operation 400 Missing the necessary parameters for this request. 401 The client token is expired or invalid. 403 Missing or invalid API key, or invalid client token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "user_data": { * "resumptions": { * "continue-watching": [ * { * "_id": "4d65a4f89a41df65a1f8d9s", * "company_id": "4d65a4f89a41df65a1f8d9s", * "user_id": "4d65a4f89a41df65a1f8d9s", * "title": "Some Neat Video", * "seriestitle": "Neat Videos", * "thumb": "4d65a4f89a41df65a1f8d9s", * "duration": 123.4, * "point": 123.4, * "progress": 25, * "updatedAt": "2022-04-29T23:13:14.154Z", * "episode": "3", * "poster": "4d65a4f89a41df65a1f8d9s" } ], * "watch-again": [ * { * "_id": "4d65a4f89a41df65a1f8d9s", * "company_id": "4d65a4f89a41df65a1f8d9s", * "user_id": "4d65a4f89a41df65a1f8d9s", * "title": "Some Neat Video", * "seriestitle": "Neat Videos", * "thumb": "4d65a4f89a41df65a1f8d9s", * "duration": 123.4, * "point": 123.4, * "progress": 97, * "updatedAt": "2022-04-29T23:13:14.154Z", * "episode": "3", * "poster": "4d65a4f89a41df65a1f8d9s" } ] }, * "products": { * "svod": [ * { * "id": 15236915, * "state": "active", * "current_period_ends_at": "2016-11-15T14:48:10-05:00", * "trial_started_at": null, * "trial_ended_at": null, * "activated_at": "2016-11-14T14:48:12-05:00", * "expires_at": null, * "created_at": "2016-11-14T14:48:10-05:00", * "updated_at": "2016-11-14T15:24:41-05:00", * "current_period_started_at": "2016-11-14T14:48:10-05:00", * "coupon_code": "5SNN6HFK3GBH", * "customer": { * "first_name": "Curtis", * "last_name": "Test", * "email": "curtis@example.com", * "created_at": "2016-11-14T14:48:10-05:00", * "updated_at": "2016-11-14T14:48:13-05:00", * "address": "123 Anywhere Street", * "address_2": "", * "city": "Boulder", * "state": "CO", * "zip": "80302", * "country": "US" }, * "product": { * "id": 3792003, * "name": "$10 Basic Plan", * "handle": "basic", * "description": "lorem ipsum", * "accounting_code": "basic", * "price_in_cents": 1000, * "interval": 1, * "interval_unit": "day", * "trial_interval": null, * "trial_interval_unit": "month", * "created_at": "2016-03-24T13:38:39-04:00", * "updated_at": "2016-11-03T13:03:05-04:00", * "archived_at": null, * "credit_card": { * "id": 10191713, * "payment_type": "credit_card", * "first_name": "Curtis", * "last_name": "Test", * "masked_card_number": "XXXX-XXXX-XXXX-1", * "card_type": "bogus", * "expiration_month": 1, * "expiration_year": 2026, * "billing_address": "123 Anywhere Street", * "billing_address_2": "", * "billing_city": "Boulder", * "billing_state": null, * "billing_country": "", * "billing_zip": "80302" }, * "payment_type": "credit_card" } } ], * "tvod": [ * { * "id": 15236915, * "state": "active", * "current_period_ends_at": "2017-11-14T14:48:10-05:00", * "trial_started_at": null, * "trial_ended_at": null, * "activated_at": "2016-11-14T14:48:12-05:00", * "expires_at": "2017-11-14T14:48:10-05:00", * "created_at": "2016-11-14T14:48:10-05:00", * "updated_at": "2016-11-14T15:24:41-05:00", * "current_period_started_at": "2016-11-14T14:48:10-05:00", * "coupon_code": "5SNN6HFK3GBH", * "customer": { * "first_name": "Curtis", * "last_name": "Test", * "email": "curtis@example.com", * "created_at": "2016-11-14T14:48:10-05:00", * "updated_at": "2016-11-14T14:48:13-05:00", * "address": "123 Anywhere Street", * "address_2": "", * "city": "Boulder", * "state": "CO", * "zip": "80302", * "country": "US" }, * "product": { * "id": 3792004, * "name": "Watch A Channel Plan", * "handle": "watch_channel", * "description": "lorem ipsum", * "accounting_code": "watch_channel", * "price_in_cents": 500, * "interval": 1, * "interval_unit": "day", * "trial_interval": null, * "trial_interval_unit": "month", * "created_at": "2016-03-24T13:38:39-04:00", * "updated_at": "2016-11-03T13:03:05-04:00", * "archived_at": null, * "credit_card": { * "id": 10191713, * "payment_type": "credit_card", * "first_name": "Curtis", * "last_name": "Test", * "masked_card_number": "XXXX-XXXX-XXXX-1", * "card_type": "bogus", * "expiration_month": 1, * "expiration_year": 2026, * "billing_address": "123 Anywhere Street", * "billing_address_2": "", * "billing_city": "Boulder", * "billing_state": null, * "billing_country": "", * "billing_zip": "80302" }, * "payment_type": "credit_card" } } ] }, * "subscription": { * "id": 15236915, * "state": "active", * "current_period_ends_at": "2016-11-15T14:48:10-05:00", * "trial_started_at": null, * "trial_ended_at": null, * "activated_at": "2016-11-14T14:48:12-05:00", * "expires_at": null, * "created_at": "2016-11-14T14:48:10-05:00", * "updated_at": "2016-11-14T15:24:41-05:00", * "current_period_started_at": "2016-11-14T14:48:10-05:00", * "coupon_code": "5SNN6HFK3GBH", * "customer": { * "first_name": "Curtis", * "last_name": "Test", * "email": "curtis@example.com", * "created_at": "2016-11-14T14:48:10-05:00", * "updated_at": "2016-11-14T14:48:13-05:00", * "address": "123 Anywhere Street", * "address_2": "", * "city": "Boulder", * "state": "CO", * "zip": "80302", * "country": "US" }, * "product": { * "id": 3792003, * "name": "$10 Basic Plan", * "handle": "basic", * "description": "lorem ipsum", * "accounting_code": "basic", * "price_in_cents": 1000, * "interval": 1, * "interval_unit": "day", * "trial_interval": null, * "trial_interval_unit": "month", * "created_at": "2016-03-24T13:38:39-04:00", * "updated_at": "2016-11-03T13:03:05-04:00", * "archived_at": null }, * "payment_info": { * "first_name": "John", * "last_name": "Smith", * "masked_card_number": "XXXX-XXXX-XXXX-1111", * "card_type": "visa", * "expiration_month": 12, * "expiration_year": 2025, * "billing_address": "1355 Anywhere Street", * "billing_address_2": null, * "billing_city": "Somewhere", * "billing_state": "CA", * "billing_zip": "90001", * "billing_country": "US" }, * "platform": "web" }, * "token": "eyJf0eXAiOdadfadsf87da61df3hbGciOiJIUzI1Niadfadfadf.Jjb250ZXh0Ijp7ImF2YXRhciI6Imh0dHBzOi8vcy5ncmF2Yd5jb20vYXadfZhdGFyLzg0YzIafd5ZGadRmZmQ3NTdmOTad987FF6a1ds3YTExMjU0P3M9NDgwJnI9cGcmZD1odHRwcyUzQSUyRiUyRmNkbi5hdXRoMC5jb20lMkZhdmF0YXJzJTJGZGgucG5nIiwiaWQiOiI2MjZjNmYzMWRmNjVmZadsBlNWZiY2ZmNWEiLCJmaXJzdF9uYW1lIjoiIiwibGFzdF9uYW1lIjoafdiIn77.sd86a74fd.fQ-6sc9EJJulYFdPbKe_noE8r8A36-wJFzExJQ" }, * "app_data": { * "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9", * "app_info": { * "platform": "ios", * "package_name": "com.somecompany.somevalue.someothervalue", * "version": 1, * "appstore_url": "www.thisisatest.com/someapp", * "app_name": "Test App" } }, * "homepage": [ * { * "category": { * "_id": "string", * "name": "Featuired", * "slug": "featured", * "display_type": "default" }, * "channels": [ * { * "_id": "string", * "title": "Big Buck Bunny", * "description": "Big Buck Bunny", * "poster": "Big Buck Bunny", * "channel_logo": "string", * "spotlight_poster": "string", * "slug": "big-buck-bunny", * "is_product": true, * "channel_type": "parent", * "programming_type": "Series" } ] } ] } APP VERSION Retrieve the latest versions of your company's apps. This endpoint can be called on the launch of your app to determine whether or not updates have been released and if it's necessary to display any messages to the user prompting them to update their app. GET LATEST APP VERSION BY PLATFORM. get/latestAppVersion/{platform}/{package} https://api.myspotlight.tv/latestAppVersion/{platform}/{package} Retrieve the latest versions of your company's apps. AUTHORIZATIONS: api_key PATH PARAMETERS platform required string Enum: "android" "apple_tv" "fire_tv" "ios" "roku" 2-letter ISO Alpha2 formatted country code of the end-user. package required string Example: com.developmentcompany.yourcoolapp Package name for the app RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "latestVersion": { * "company_id": "592709ff97f81578165aa389", * "appstore_url": "https://play.google.com/store/apps/details?id=com.dotstudioz.dotstudioPRO.myPackage", * "platform": "android", * "severity_level": 0 } } COUNTRY The Spotlight API requires (for most content-related calls) an ISO Alpha2 formatted two letter country code. Most implementations of this can be done on the client side through geolocation. However, if a user declines to share where they are through the geolocation service, this call can be used. GET GEO DATA FROM IP. post/country https://api.myspotlight.tv/country Receive detailed geo information about a user based on their IP address. REQUEST BODY SCHEMA: APPLICATION/JSON REQUIRED The user's IP string (Ip) RESPONSES 200 Success 400 Missing required parameter ip in POST body. 403 Missing or invalid API access token. REQUEST SAMPLES * Payload Content type application/json Copy { * "ip": "166.78.41.43" } RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "data": { * "region": "BC", * "city": "Vancouver", * "postalCode": "V1A", * "continentCode": "NA", * "regionName": "British Columbia", * "countryCode": "CA", * "countryName": "Canada", * "latitude": 49, * "longitude": -123, * "timeZone": "America/Vancouver" } } CATEGORY Retrieve category data from dotstudioPRO GET ALL CATEGORIES. get/categories/{countryCode} https://api.myspotlight.tv/categories/{countryCode} Obtain a list of all categories added to the Spotlight API for a particular token. Please note that passing either of the pagination parameters (page or limit) will result in the pagination properties (total, limit, page, pages) being sent back as part of the top-level return object. Otherwise, these parameters will not be returned and all results for a given country code will be returned in the categories array. AUTHORIZATIONS: api_key PATH PARAMETERS countryCode required string 2-letter ISO Alpha2 formatted country code of the end-user. QUERY PARAMETERS page number The page of results being requested. limit number The limit to the results being requested. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "path": "https://api.myspotlight.tv/categories/US", * "categories": [ * { * "_id": "59555d78ae075a721ddac670", * "company_id": "592709ff97f81578165aa389", * "display_type": "default", * "enabled": true, * "homepage": true, * "image": { * "height": 250, * "width": 480, * "poster": "https://images.dotstudiopro.com/5a20726598f8151741b582ad", * "spotlight_poster": "https://images.dotstudiopro.com/5a20725f97f8156c1c721d55", * "videos_thumb": "https://images.dotstudiopro.com/5a331ff798f8151d669bc18f" }, * "menu": true, * "name": "Featured Content", * "slug": "featured", * "weight": 0, * "platforms": [ * { * "android": "true", * "ios": "false", * "roku": "true" } ], * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "path": "http://api.myspotlight.tv/categories/US/featured", * "channels": "http://api.myspotlight.tv/channels/US/featured" } ], * "pages": { * "total": 20, * "limit": 10, * "page": 1, * "pages": 2 } } GET A CATEGORY. get/categories/{countryCode}/{category_slug} https://api.myspotlight.tv/categories/{countryCode}/{category_slug} Obtain a category object for a specific category. AUTHORIZATIONS: api_key PATH PARAMETERS countryCode required string 2-letter ISO Alpha2 formatted country code of the end-user. category_slug required string Slug of the category you wish to retrieve. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "_id": "59555d78ae075a721ddac670", * "company_id": "592709ff97f81578165aa389", * "display_type": "default", * "enabled": true, * "homepage": true, * "image": { * "height": 250, * "width": 480, * "poster": "https://images.dotstudiopro.com/5a20726598f8151741b582ad", * "spotlight_poster": "https://images.dotstudiopro.com/5a20725f97f8156c1c721d55", * "videos_thumb": "https://images.dotstudiopro.com/5a331ff798f8151d669bc18f" }, * "menu": true, * "name": "Featured Content", * "slug": "featured", * "weight": 0, * "platforms": [ * { * "android": "true", * "ios": "false", * "roku": "true" } ], * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "path": "http://api.myspotlight.tv/categories/US/featured", * "channels": "http://api.myspotlight.tv/channels/US/featured" } CHANNEL Retrieve channel data from dotstudioPRO GET ALL CHANNELS. get/channels/{countryCode} https://api.myspotlight.tv/channels/{countryCode} Obtain a list of all channels that are currently published. AUTHORIZATIONS: api_key PATH PARAMETERS countryCode required string 2-letter ISO Alpha2 formatted country code of the end-user. QUERY PARAMETERS genre string A genre slug to query for (optional) platform string Enum: "android" "androidtv" "appletv" "firetv" "ios" "roku" "tizen" "website" "html5" The platform creating the request. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "_id": "59c724ef98e82b310e85fd4c", * "actors": [ * "Actor A", * "Actor B" ], * "categories": [ * { * "_id": "59555d78ae075a721ddac670", * "company_id": "592709ff97f81578165aa389", * "display_type": "default", * "enabled": true, * "homepage": true, * "image": { * "height": 250, * "width": 480, * "poster": "https://images.dotstudiopro.com/5a20726598f8151741b582ad", * "spotlight_poster": "https://images.dotstudiopro.com/5a20725f97f8156c1c721d55", * "videos_thumb": "https://images.dotstudiopro.com/5a331ff798f8151d669bc18f" }, * "menu": true, * "name": "Featured Content", * "slug": "featured", * "weight": 0, * "platforms": [ * { * "android": "true", * "ios": "false", * "roku": "true" } ], * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "path": "http://api.myspotlight.tv/categories/US/featured", * "channels": "http://api.myspotlight.tv/channels/US/featured" } ], * "channel_url": "https://subdomain.dotstudiopro.com/channel/my-channel", * "childchannels": [ * "channelObject1", * "channelObject2" ], * "company": "subdomain", * "country": "Canada", * "description": "This is a great show!", * "directors": [ * "Director A" ], * "genres": [ * "Action", * "Comedy" ], * "hasYoutube": false, * "in_watchlist": false, * "language": "English", * "or_release_date": "2020-01-01", * "path": "https://api.myspotlight.tv/channels/US/category_slug/channel_slug", * "playlist": [ * { * "_id": "5452484e97f8154f0c092f3ec", * "ads": { * "pre": "yes", * "mid": "yes", * "post": "no", * "over": "no", * "pre_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "post_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "offsets": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] } }, * "ad_tag": { * "pre": "https://adserver.com/custom_ad_tag?param=true", * "mid": "string", * "post": "string", * "customTagPre": true, * "customTagMid": false, * "customTagPost": false }, * "access": "public", * "actors": [ * "Actor A", * "Actor B" ], * "category": "Web-series", * "chromecast_vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080?device_type=chromecast", * "company": { * "_id": "59c724ef98e82b310e85fd4c", * "name": "coolmovies", * "cast_custom_cdn": "https://111111.ssl.hwcdn.net", * "custom_cdn": "https://222222.ssl.hwcdn.net", * "media_tailor_cdn": "https://333333.ssl.hwcdn.net" }, * "company_id": "5452484e97f8154f0c092f3ec", * "country": "Canada", * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "description": "A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel,\nwho are determined to squelch his happiness.\n", * "directors": [ * "Director A", * "Director B" ], * "duration": 1072, * "episode": 1, * "geoblock": "ALL", * "genres": [ * "2000s animation" ], * "geocheck": true, * "is_teaser": false, * "language": "English", * "paths": { }, * "paywall": { }, * "poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "product_id": 11470, * "rating": "PG", * "roku_bif_files": { * "sd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-sd.bif", * "hd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-hd.bif", * "fhd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-fhd.bif" }, * "season": 1, * "seriestitle": "Open Source Films", * "server_side_ads": true, * "slug": "big-buck-bunny", * "socialImage": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "status": "Uploaded", * "thumb": "https://images.dotstudiopro.com/59a5a4f899f815d6403c31dd", * "thumbs": [ * "5ed871383d9aea7cf65b2184", * "5ed7f8c22f40d94404789de7", * "5ed7f8c12f40d94404789de6" ], * "title": "Big Buck Bunny", * "video_m3u8": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8", * "vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } ], * "playlist_id": "59c7210b97f815b52ea068cf", * "playlist_type": "manual", * "poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "programming_type": "Series", * "rating": "PG", * "season": 1, * "spotlight_poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "slug": "my-channel", * "title": "My Cool Channel", * "trailer": { * "video_id": "5ed7e4b6b32ab5755a17a932", * "url": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8" }, * "video": "videoObj[0]", * "videos_thumb": "https://images.dotstudiopro.com/59c84de297f815e8473807a2", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } GET CHANNELS BY CATEGORY. get/channels/{countryCode}/{category_slug} https://api.myspotlight.tv/channels/{countryCode}/{category_slug} Obtain a list of all published channels within a particular category. AUTHORIZATIONS: api_key PATH PARAMETERS countryCode required string 2-letter ISO Alpha2 formatted country code of the end-user. category_slug required string Slug of category whose channels you wish to retrieve. QUERY PARAMETERS genre string A genre slug to query for (optional) platform string Enum: "android" "androidtv" "appletv" "firetv" "ios" "roku" "tizen" "website" "html5" The platform creating the request. RESPONSES 200 Successful operation 403 Missing or invalid API access token. 404 No category with that slug could be found. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "_id": "59c724ef98e82b310e85fd4c", * "actors": [ * "Actor A", * "Actor B" ], * "categories": [ * { * "_id": "59555d78ae075a721ddac670", * "company_id": "592709ff97f81578165aa389", * "display_type": "default", * "enabled": true, * "homepage": true, * "image": { * "height": 250, * "width": 480, * "poster": "https://images.dotstudiopro.com/5a20726598f8151741b582ad", * "spotlight_poster": "https://images.dotstudiopro.com/5a20725f97f8156c1c721d55", * "videos_thumb": "https://images.dotstudiopro.com/5a331ff798f8151d669bc18f" }, * "menu": true, * "name": "Featured Content", * "slug": "featured", * "weight": 0, * "platforms": [ * { * "android": "true", * "ios": "false", * "roku": "true" } ], * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "path": "http://api.myspotlight.tv/categories/US/featured", * "channels": "http://api.myspotlight.tv/channels/US/featured" } ], * "channel_url": "https://subdomain.dotstudiopro.com/channel/my-channel", * "childchannels": [ * "channelObject1", * "channelObject2" ], * "company": "subdomain", * "country": "Canada", * "description": "This is a great show!", * "directors": [ * "Director A" ], * "genres": [ * "Action", * "Comedy" ], * "hasYoutube": false, * "in_watchlist": false, * "language": "English", * "or_release_date": "2020-01-01", * "path": "https://api.myspotlight.tv/channels/US/category_slug/channel_slug", * "playlist": [ * { * "_id": "5452484e97f8154f0c092f3ec", * "ads": { * "pre": "yes", * "mid": "yes", * "post": "no", * "over": "no", * "pre_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "post_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "offsets": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] } }, * "ad_tag": { * "pre": "https://adserver.com/custom_ad_tag?param=true", * "mid": "string", * "post": "string", * "customTagPre": true, * "customTagMid": false, * "customTagPost": false }, * "access": "public", * "actors": [ * "Actor A", * "Actor B" ], * "category": "Web-series", * "chromecast_vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080?device_type=chromecast", * "company": { * "_id": "59c724ef98e82b310e85fd4c", * "name": "coolmovies", * "cast_custom_cdn": "https://111111.ssl.hwcdn.net", * "custom_cdn": "https://222222.ssl.hwcdn.net", * "media_tailor_cdn": "https://333333.ssl.hwcdn.net" }, * "company_id": "5452484e97f8154f0c092f3ec", * "country": "Canada", * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "description": "A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel,\nwho are determined to squelch his happiness.\n", * "directors": [ * "Director A", * "Director B" ], * "duration": 1072, * "episode": 1, * "geoblock": "ALL", * "genres": [ * "2000s animation" ], * "geocheck": true, * "is_teaser": false, * "language": "English", * "paths": { }, * "paywall": { }, * "poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "product_id": 11470, * "rating": "PG", * "roku_bif_files": { * "sd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-sd.bif", * "hd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-hd.bif", * "fhd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-fhd.bif" }, * "season": 1, * "seriestitle": "Open Source Films", * "server_side_ads": true, * "slug": "big-buck-bunny", * "socialImage": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "status": "Uploaded", * "thumb": "https://images.dotstudiopro.com/59a5a4f899f815d6403c31dd", * "thumbs": [ * "5ed871383d9aea7cf65b2184", * "5ed7f8c22f40d94404789de7", * "5ed7f8c12f40d94404789de6" ], * "title": "Big Buck Bunny", * "video_m3u8": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8", * "vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } ], * "playlist_id": "59c7210b97f815b52ea068cf", * "playlist_type": "manual", * "poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "programming_type": "Series", * "rating": "PG", * "season": 1, * "spotlight_poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "slug": "my-channel", * "title": "My Cool Channel", * "trailer": { * "video_id": "5ed7e4b6b32ab5755a17a932", * "url": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8" }, * "video": "videoObj[0]", * "videos_thumb": "https://images.dotstudiopro.com/59c84de297f815e8473807a2", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } GET A CHANNEL BY CATEGORY. get/channels/{countryCode}/{category_slug}/{channel_slug} https://api.myspotlight.tv/channels/{countryCode}/{category_slug}/{channel_slug} Get a particular channel within a particular category. AUTHORIZATIONS: api_key PATH PARAMETERS countryCode required string 2-letter ISO Alpha2 formatted country code of the end-user. category_slug required string Slug of category whose channels you wish to retrieve. channel_slug required string Slug of the channel you wish to retrieve. QUERY PARAMETERS platform string Enum: "android" "androidtv" "appletv" "firetv" "ios" "roku" "tizen" "website" "html5" The platform creating the request. RESPONSES 200 Successful operation 403 Missing or invalid API access token. 404 No category with that slug could be found. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "_id": "59c724ef98e82b310e85fd4c", * "actors": [ * "Actor A", * "Actor B" ], * "categories": [ * { * "_id": "59555d78ae075a721ddac670", * "company_id": "592709ff97f81578165aa389", * "display_type": "default", * "enabled": true, * "homepage": true, * "image": { * "height": 250, * "width": 480, * "poster": "https://images.dotstudiopro.com/5a20726598f8151741b582ad", * "spotlight_poster": "https://images.dotstudiopro.com/5a20725f97f8156c1c721d55", * "videos_thumb": "https://images.dotstudiopro.com/5a331ff798f8151d669bc18f" }, * "menu": true, * "name": "Featured Content", * "slug": "featured", * "weight": 0, * "platforms": [ * { * "android": "true", * "ios": "false", * "roku": "true" } ], * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "path": "http://api.myspotlight.tv/categories/US/featured", * "channels": "http://api.myspotlight.tv/channels/US/featured" } ], * "channel_url": "https://subdomain.dotstudiopro.com/channel/my-channel", * "childchannels": [ * "channelObject1", * "channelObject2" ], * "company": "subdomain", * "country": "Canada", * "description": "This is a great show!", * "directors": [ * "Director A" ], * "genres": [ * "Action", * "Comedy" ], * "hasYoutube": false, * "in_watchlist": false, * "language": "English", * "or_release_date": "2020-01-01", * "path": "https://api.myspotlight.tv/channels/US/category_slug/channel_slug", * "playlist": [ * { * "_id": "5452484e97f8154f0c092f3ec", * "ads": { * "pre": "yes", * "mid": "yes", * "post": "no", * "over": "no", * "pre_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "post_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "offsets": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] } }, * "ad_tag": { * "pre": "https://adserver.com/custom_ad_tag?param=true", * "mid": "string", * "post": "string", * "customTagPre": true, * "customTagMid": false, * "customTagPost": false }, * "access": "public", * "actors": [ * "Actor A", * "Actor B" ], * "category": "Web-series", * "chromecast_vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080?device_type=chromecast", * "company": { * "_id": "59c724ef98e82b310e85fd4c", * "name": "coolmovies", * "cast_custom_cdn": "https://111111.ssl.hwcdn.net", * "custom_cdn": "https://222222.ssl.hwcdn.net", * "media_tailor_cdn": "https://333333.ssl.hwcdn.net" }, * "company_id": "5452484e97f8154f0c092f3ec", * "country": "Canada", * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "description": "A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel,\nwho are determined to squelch his happiness.\n", * "directors": [ * "Director A", * "Director B" ], * "duration": 1072, * "episode": 1, * "geoblock": "ALL", * "genres": [ * "2000s animation" ], * "geocheck": true, * "is_teaser": false, * "language": "English", * "paths": { }, * "paywall": { }, * "poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "product_id": 11470, * "rating": "PG", * "roku_bif_files": { * "sd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-sd.bif", * "hd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-hd.bif", * "fhd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-fhd.bif" }, * "season": 1, * "seriestitle": "Open Source Films", * "server_side_ads": true, * "slug": "big-buck-bunny", * "socialImage": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "status": "Uploaded", * "thumb": "https://images.dotstudiopro.com/59a5a4f899f815d6403c31dd", * "thumbs": [ * "5ed871383d9aea7cf65b2184", * "5ed7f8c22f40d94404789de7", * "5ed7f8c12f40d94404789de6" ], * "title": "Big Buck Bunny", * "video_m3u8": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8", * "vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } ], * "playlist_id": "59c7210b97f815b52ea068cf", * "playlist_type": "manual", * "poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "programming_type": "Series", * "rating": "PG", * "season": 1, * "spotlight_poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "slug": "my-channel", * "title": "My Cool Channel", * "trailer": { * "video_id": "5ed7e4b6b32ab5755a17a932", * "url": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8" }, * "video": "videoObj[0]", * "videos_thumb": "https://images.dotstudiopro.com/59c84de297f815e8473807a2", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } GET A CHILD CHANNEL. get/channels/{countryCode}/{category_slug}/{channel_slug}/{child_slug} https://api.myspotlight.tv/channels/{countryCode}/{category_slug}/{channel_slug}/{child_slug} Get channel data for a particular parent channel's child channel within a particular category. AUTHORIZATIONS: api_key PATH PARAMETERS countryCode required string 2-letter ISO Alpha2 formatted country code of the end-user. category_slug required string Slug of the parent channel's category. channel_slug required string Parent channel slug of the child channel you wish to retrieve. child_slug required string Slug of the child channel you wish to retrieve. QUERY PARAMETERS platform string Enum: "android" "androidtv" "appletv" "firetv" "ios" "roku" "tizen" "website" "html5" The platform creating the request. RESPONSES 200 Successful operation 403 Missing or invalid API access token. 404 No category with that slug could be found. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "_id": "59c724ef98e82b310e85fd4c", * "actors": [ * "Actor A", * "Actor B" ], * "categories": [ * { * "_id": "59555d78ae075a721ddac670", * "company_id": "592709ff97f81578165aa389", * "display_type": "default", * "enabled": true, * "homepage": true, * "image": { * "height": 250, * "width": 480, * "poster": "https://images.dotstudiopro.com/5a20726598f8151741b582ad", * "spotlight_poster": "https://images.dotstudiopro.com/5a20725f97f8156c1c721d55", * "videos_thumb": "https://images.dotstudiopro.com/5a331ff798f8151d669bc18f" }, * "menu": true, * "name": "Featured Content", * "slug": "featured", * "weight": 0, * "platforms": [ * { * "android": "true", * "ios": "false", * "roku": "true" } ], * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "path": "http://api.myspotlight.tv/categories/US/featured", * "channels": "http://api.myspotlight.tv/channels/US/featured" } ], * "channel_url": "https://subdomain.dotstudiopro.com/channel/my-channel", * "childchannels": [ * "channelObject1", * "channelObject2" ], * "company": "subdomain", * "country": "Canada", * "description": "This is a great show!", * "directors": [ * "Director A" ], * "genres": [ * "Action", * "Comedy" ], * "hasYoutube": false, * "in_watchlist": false, * "language": "English", * "or_release_date": "2020-01-01", * "path": "https://api.myspotlight.tv/channels/US/category_slug/channel_slug", * "playlist": [ * { * "_id": "5452484e97f8154f0c092f3ec", * "ads": { * "pre": "yes", * "mid": "yes", * "post": "no", * "over": "no", * "pre_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "post_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "offsets": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] } }, * "ad_tag": { * "pre": "https://adserver.com/custom_ad_tag?param=true", * "mid": "string", * "post": "string", * "customTagPre": true, * "customTagMid": false, * "customTagPost": false }, * "access": "public", * "actors": [ * "Actor A", * "Actor B" ], * "category": "Web-series", * "chromecast_vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080?device_type=chromecast", * "company": { * "_id": "59c724ef98e82b310e85fd4c", * "name": "coolmovies", * "cast_custom_cdn": "https://111111.ssl.hwcdn.net", * "custom_cdn": "https://222222.ssl.hwcdn.net", * "media_tailor_cdn": "https://333333.ssl.hwcdn.net" }, * "company_id": "5452484e97f8154f0c092f3ec", * "country": "Canada", * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "description": "A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel,\nwho are determined to squelch his happiness.\n", * "directors": [ * "Director A", * "Director B" ], * "duration": 1072, * "episode": 1, * "geoblock": "ALL", * "genres": [ * "2000s animation" ], * "geocheck": true, * "is_teaser": false, * "language": "English", * "paths": { }, * "paywall": { }, * "poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "product_id": 11470, * "rating": "PG", * "roku_bif_files": { * "sd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-sd.bif", * "hd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-hd.bif", * "fhd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-fhd.bif" }, * "season": 1, * "seriestitle": "Open Source Films", * "server_side_ads": true, * "slug": "big-buck-bunny", * "socialImage": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "status": "Uploaded", * "thumb": "https://images.dotstudiopro.com/59a5a4f899f815d6403c31dd", * "thumbs": [ * "5ed871383d9aea7cf65b2184", * "5ed7f8c22f40d94404789de7", * "5ed7f8c12f40d94404789de6" ], * "title": "Big Buck Bunny", * "video_m3u8": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8", * "vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } ], * "playlist_id": "59c7210b97f815b52ea068cf", * "playlist_type": "manual", * "poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "programming_type": "Series", * "rating": "PG", * "season": 1, * "spotlight_poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "slug": "my-channel", * "title": "My Cool Channel", * "trailer": { * "video_id": "5ed7e4b6b32ab5755a17a932", * "url": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8" }, * "video": "videoObj[0]", * "videos_thumb": "https://images.dotstudiopro.com/59c84de297f815e8473807a2", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } GET A CHANNEL WITHOUT CATEGORY. get/channel/{countryCode}/{channel_slug} https://api.myspotlight.tv/channel/{countryCode}/{channel_slug} Get channel data for a particular channel without specifying it's category. This endpoint accepts an optional x-client-token. If a user-identifying token is passed, the endpoint will return (at the root of the response) the user's continue-watching object for this channel (if one exists). AUTHORIZATIONS: api_key PATH PARAMETERS countryCode required string 2-letter ISO Alpha2 formatted country code of the end-user. channel_slug required string Slug of the channel you wish to retrieve. RESPONSES 200 Successful operation 403 Missing or invalid API access token. 404 No channel with that slug exists. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "channels": [ * { * "_id": "59c724ef98e82b310e85fd4c", * "actors": [ * "Actor A", * "Actor B" ], * "categories": [ * { * "_id": "59555d78ae075a721ddac670", * "company_id": "592709ff97f81578165aa389", * "display_type": "default", * "enabled": true, * "homepage": true, * "image": { * "height": 250, * "width": 480, * "poster": "https://images.dotstudiopro.com/5a20726598f8151741b582ad", * "spotlight_poster": "https://images.dotstudiopro.com/5a20725f97f8156c1c721d55", * "videos_thumb": "https://images.dotstudiopro.com/5a331ff798f8151d669bc18f" }, * "menu": true, * "name": "Featured Content", * "slug": "featured", * "weight": 0, * "platforms": [ * { * "android": "true", * "ios": "false", * "roku": "true" } ], * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "path": "http://api.myspotlight.tv/categories/US/featured", * "channels": "http://api.myspotlight.tv/channels/US/featured" } ], * "channel_url": "https://subdomain.dotstudiopro.com/channel/my-channel", * "childchannels": [ * "channelObject1", * "channelObject2" ], * "company": "subdomain", * "country": "Canada", * "description": "This is a great show!", * "directors": [ * "Director A" ], * "genres": [ * "Action", * "Comedy" ], * "hasYoutube": false, * "in_watchlist": false, * "language": "English", * "or_release_date": "2020-01-01", * "path": "https://api.myspotlight.tv/channels/US/category_slug/channel_slug", * "playlist": [ * { * "_id": "5452484e97f8154f0c092f3ec", * "ads": { * "pre": "yes", * "mid": "yes", * "post": "no", * "over": "no", * "pre_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "post_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "offsets": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] } }, * "ad_tag": { * "pre": "https://adserver.com/custom_ad_tag?param=true", * "mid": "string", * "post": "string", * "customTagPre": true, * "customTagMid": false, * "customTagPost": false }, * "access": "public", * "actors": [ * "Actor A", * "Actor B" ], * "category": "Web-series", * "chromecast_vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080?device_type=chromecast", * "company": { * "_id": "59c724ef98e82b310e85fd4c", * "name": "coolmovies", * "cast_custom_cdn": "https://111111.ssl.hwcdn.net", * "custom_cdn": "https://222222.ssl.hwcdn.net", * "media_tailor_cdn": "https://333333.ssl.hwcdn.net" }, * "company_id": "5452484e97f8154f0c092f3ec", * "country": "Canada", * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "description": "A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel,\nwho are determined to squelch his happiness.\n", * "directors": [ * "Director A", * "Director B" ], * "duration": 1072, * "episode": 1, * "geoblock": "ALL", * "genres": [ * "2000s animation" ], * "geocheck": true, * "is_teaser": false, * "language": "English", * "paths": { }, * "paywall": { }, * "poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "product_id": 11470, * "rating": "PG", * "roku_bif_files": { * "sd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-sd.bif", * "hd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-hd.bif", * "fhd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-fhd.bif" }, * "season": 1, * "seriestitle": "Open Source Films", * "server_side_ads": true, * "slug": "big-buck-bunny", * "socialImage": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "status": "Uploaded", * "thumb": "https://images.dotstudiopro.com/59a5a4f899f815d6403c31dd", * "thumbs": [ * "5ed871383d9aea7cf65b2184", * "5ed7f8c22f40d94404789de7", * "5ed7f8c12f40d94404789de6" ], * "title": "Big Buck Bunny", * "video_m3u8": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8", * "vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } ], * "playlist_id": "59c7210b97f815b52ea068cf", * "playlist_type": "manual", * "poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "programming_type": "Series", * "rating": "PG", * "season": 1, * "spotlight_poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "slug": "my-channel", * "title": "My Cool Channel", * "trailer": { * "video_id": "5ed7e4b6b32ab5755a17a932", * "url": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8" }, * "video": "videoObj[0]", * "videos_thumb": "https://images.dotstudiopro.com/59c84de297f815e8473807a2", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } ], * "continue_watching": { * "_id": "5e41f4756b4c5d439f3ebca2", * "company_id": "5e41f4756b4c5d439f3ebca2", * "user_id": "5f21ab918f4a8e0fbc29ac86", * "title": "This Weeks Episode", * "thumb": "5e42d4e6b70e4f7f038b4862", * "duration": 5419, * "point": 645, * "episode": 1, * "updatedAt": "2020-07-29T21:05:10.488Z", * "channel": { * "_id": "5e42d4e6b70e4f7f038b4861", * "programming_type": "series", * "season": 1, * "slug": "some-cool-channel", * "title": "Some Cool Channel", * "poster": "https://someimage.com/img", * "spotlight_poster": "https://someimage.com/img" }, * "parent_channel": { * "_id": "5e42d4e6b70e4f7f038b4861", * "title": "Some Cool Parent Channel", * "slug": "some-cool-parent-channel", * "programming_type": "series", * "poster": "https://someimage.com/img", * "spotlight_poster": "https://someimage.com/img" } } } GET A CHANNEL WITHOUT CATEGORY. get/channel/{countryCode}/{channel_slug}/{child_slug} https://api.myspotlight.tv/channel/{countryCode}/{channel_slug}/{child_slug} Get channel data for a particular channel without specifying it's category. AUTHORIZATIONS: api_key PATH PARAMETERS countryCode required string 2-letter ISO Alpha2 formatted country code of the end-user. channel_slug required string Slug of the parent channel whose child you wish to retrieve. child_slug required string Slug of the child channel you wish to retrieve. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "_id": "59c724ef98e82b310e85fd4c", * "actors": [ * "Actor A", * "Actor B" ], * "categories": [ * { * "_id": "59555d78ae075a721ddac670", * "company_id": "592709ff97f81578165aa389", * "display_type": "default", * "enabled": true, * "homepage": true, * "image": { * "height": 250, * "width": 480, * "poster": "https://images.dotstudiopro.com/5a20726598f8151741b582ad", * "spotlight_poster": "https://images.dotstudiopro.com/5a20725f97f8156c1c721d55", * "videos_thumb": "https://images.dotstudiopro.com/5a331ff798f8151d669bc18f" }, * "menu": true, * "name": "Featured Content", * "slug": "featured", * "weight": 0, * "platforms": [ * { * "android": "true", * "ios": "false", * "roku": "true" } ], * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "path": "http://api.myspotlight.tv/categories/US/featured", * "channels": "http://api.myspotlight.tv/channels/US/featured" } ], * "channel_url": "https://subdomain.dotstudiopro.com/channel/my-channel", * "childchannels": [ * "channelObject1", * "channelObject2" ], * "company": "subdomain", * "country": "Canada", * "description": "This is a great show!", * "directors": [ * "Director A" ], * "genres": [ * "Action", * "Comedy" ], * "hasYoutube": false, * "in_watchlist": false, * "language": "English", * "or_release_date": "2020-01-01", * "path": "https://api.myspotlight.tv/channels/US/category_slug/channel_slug", * "playlist": [ * { * "_id": "5452484e97f8154f0c092f3ec", * "ads": { * "pre": "yes", * "mid": "yes", * "post": "no", * "over": "no", * "pre_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "post_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "offsets": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] } }, * "ad_tag": { * "pre": "https://adserver.com/custom_ad_tag?param=true", * "mid": "string", * "post": "string", * "customTagPre": true, * "customTagMid": false, * "customTagPost": false }, * "access": "public", * "actors": [ * "Actor A", * "Actor B" ], * "category": "Web-series", * "chromecast_vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080?device_type=chromecast", * "company": { * "_id": "59c724ef98e82b310e85fd4c", * "name": "coolmovies", * "cast_custom_cdn": "https://111111.ssl.hwcdn.net", * "custom_cdn": "https://222222.ssl.hwcdn.net", * "media_tailor_cdn": "https://333333.ssl.hwcdn.net" }, * "company_id": "5452484e97f8154f0c092f3ec", * "country": "Canada", * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "description": "A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel,\nwho are determined to squelch his happiness.\n", * "directors": [ * "Director A", * "Director B" ], * "duration": 1072, * "episode": 1, * "geoblock": "ALL", * "genres": [ * "2000s animation" ], * "geocheck": true, * "is_teaser": false, * "language": "English", * "paths": { }, * "paywall": { }, * "poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "product_id": 11470, * "rating": "PG", * "roku_bif_files": { * "sd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-sd.bif", * "hd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-hd.bif", * "fhd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-fhd.bif" }, * "season": 1, * "seriestitle": "Open Source Films", * "server_side_ads": true, * "slug": "big-buck-bunny", * "socialImage": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "status": "Uploaded", * "thumb": "https://images.dotstudiopro.com/59a5a4f899f815d6403c31dd", * "thumbs": [ * "5ed871383d9aea7cf65b2184", * "5ed7f8c22f40d94404789de7", * "5ed7f8c12f40d94404789de6" ], * "title": "Big Buck Bunny", * "video_m3u8": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8", * "vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } ], * "playlist_id": "59c7210b97f815b52ea068cf", * "playlist_type": "manual", * "poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "programming_type": "Series", * "rating": "PG", * "season": 1, * "spotlight_poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "slug": "my-channel", * "title": "My Cool Channel", * "trailer": { * "video_id": "5ed7e4b6b32ab5755a17a932", * "url": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8" }, * "video": "videoObj[0]", * "videos_thumb": "https://images.dotstudiopro.com/59c84de297f815e8473807a2", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } GET CHANNEL BY SPOTLIGHT CHANNEL ID. get/channel/{countryCode}/id/{channel_id} https://api.myspotlight.tv/channel/{countryCode}/id/{channel_id} Get channel data for a particular channel based on that channel's Spotlight Channel ID. AUTHORIZATIONS: api_key PATH PARAMETERS countryCode required string 2-letter ISO Alpha2 formatted country code of the end-user. channel_id required string Spotlight ID of the channel you wish to retrieve. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "_id": "59c724ef98e82b310e85fd4c", * "actors": [ * "Actor A", * "Actor B" ], * "categories": [ * { * "_id": "59555d78ae075a721ddac670", * "company_id": "592709ff97f81578165aa389", * "display_type": "default", * "enabled": true, * "homepage": true, * "image": { * "height": 250, * "width": 480, * "poster": "https://images.dotstudiopro.com/5a20726598f8151741b582ad", * "spotlight_poster": "https://images.dotstudiopro.com/5a20725f97f8156c1c721d55", * "videos_thumb": "https://images.dotstudiopro.com/5a331ff798f8151d669bc18f" }, * "menu": true, * "name": "Featured Content", * "slug": "featured", * "weight": 0, * "platforms": [ * { * "android": "true", * "ios": "false", * "roku": "true" } ], * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "path": "http://api.myspotlight.tv/categories/US/featured", * "channels": "http://api.myspotlight.tv/channels/US/featured" } ], * "channel_url": "https://subdomain.dotstudiopro.com/channel/my-channel", * "childchannels": [ * "channelObject1", * "channelObject2" ], * "company": "subdomain", * "country": "Canada", * "description": "This is a great show!", * "directors": [ * "Director A" ], * "genres": [ * "Action", * "Comedy" ], * "hasYoutube": false, * "in_watchlist": false, * "language": "English", * "or_release_date": "2020-01-01", * "path": "https://api.myspotlight.tv/channels/US/category_slug/channel_slug", * "playlist": [ * { * "_id": "5452484e97f8154f0c092f3ec", * "ads": { * "pre": "yes", * "mid": "yes", * "post": "no", * "over": "no", * "pre_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "post_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "offsets": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] } }, * "ad_tag": { * "pre": "https://adserver.com/custom_ad_tag?param=true", * "mid": "string", * "post": "string", * "customTagPre": true, * "customTagMid": false, * "customTagPost": false }, * "access": "public", * "actors": [ * "Actor A", * "Actor B" ], * "category": "Web-series", * "chromecast_vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080?device_type=chromecast", * "company": { * "_id": "59c724ef98e82b310e85fd4c", * "name": "coolmovies", * "cast_custom_cdn": "https://111111.ssl.hwcdn.net", * "custom_cdn": "https://222222.ssl.hwcdn.net", * "media_tailor_cdn": "https://333333.ssl.hwcdn.net" }, * "company_id": "5452484e97f8154f0c092f3ec", * "country": "Canada", * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "description": "A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel,\nwho are determined to squelch his happiness.\n", * "directors": [ * "Director A", * "Director B" ], * "duration": 1072, * "episode": 1, * "geoblock": "ALL", * "genres": [ * "2000s animation" ], * "geocheck": true, * "is_teaser": false, * "language": "English", * "paths": { }, * "paywall": { }, * "poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "product_id": 11470, * "rating": "PG", * "roku_bif_files": { * "sd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-sd.bif", * "hd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-hd.bif", * "fhd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-fhd.bif" }, * "season": 1, * "seriestitle": "Open Source Films", * "server_side_ads": true, * "slug": "big-buck-bunny", * "socialImage": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "status": "Uploaded", * "thumb": "https://images.dotstudiopro.com/59a5a4f899f815d6403c31dd", * "thumbs": [ * "5ed871383d9aea7cf65b2184", * "5ed7f8c22f40d94404789de7", * "5ed7f8c12f40d94404789de6" ], * "title": "Big Buck Bunny", * "video_m3u8": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8", * "vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } ], * "playlist_id": "59c7210b97f815b52ea068cf", * "playlist_type": "manual", * "poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "programming_type": "Series", * "rating": "PG", * "season": 1, * "spotlight_poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "slug": "my-channel", * "title": "My Cool Channel", * "trailer": { * "video_id": "5ed7e4b6b32ab5755a17a932", * "url": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8" }, * "video": "videoObj[0]", * "videos_thumb": "https://images.dotstudiopro.com/59c84de297f815e8473807a2", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } REFRESH A CHANNEL. post/channels/refresh https://api.myspotlight.tv/channels/refresh This call refreshes a channel that contains either the passed Channel ID or an ID of a video or playlist with the latest channel data from dotstudioPRO. This route is not tied to a particular company and will update all matching channels with new data. The key for your request must be either channel, video, or playlist - representing the ID of the asset you wish to refresh. In the response, the updated key will let you know how many channels were successfully updated as a result of the call. The channels array will contain all the updated channels with their new data. AUTHORIZATIONS: api_key REQUEST BODY SCHEMA: APPLICATION/JSON REQUIRED Channel ID/Playlist ID/Video ID channel string RESPONSES 200 Successful operation 403 Missing or invalid API access token. REQUEST SAMPLES * Payload Content type application/json Copy { * "channel": "5452484e97f8154f0c092f3ec" } RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "updated": 2, * "channels": [ * { * "_id": "59c724ef98e82b310e85fd4c", * "actors": [ * "Actor A", * "Actor B" ], * "categories": [ * { * "_id": "59555d78ae075a721ddac670", * "company_id": "592709ff97f81578165aa389", * "display_type": "default", * "enabled": true, * "homepage": true, * "image": { * "height": 250, * "width": 480, * "poster": "https://images.dotstudiopro.com/5a20726598f8151741b582ad", * "spotlight_poster": "https://images.dotstudiopro.com/5a20725f97f8156c1c721d55", * "videos_thumb": "https://images.dotstudiopro.com/5a331ff798f8151d669bc18f" }, * "menu": true, * "name": "Featured Content", * "slug": "featured", * "weight": 0, * "platforms": [ * { * "android": "true", * "ios": "false", * "roku": "true" } ], * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "path": "http://api.myspotlight.tv/categories/US/featured", * "channels": "http://api.myspotlight.tv/channels/US/featured" } ], * "channel_url": "https://subdomain.dotstudiopro.com/channel/my-channel", * "childchannels": [ * "channelObject1", * "channelObject2" ], * "company": "subdomain", * "country": "Canada", * "description": "This is a great show!", * "directors": [ * "Director A" ], * "genres": [ * "Action", * "Comedy" ], * "hasYoutube": false, * "in_watchlist": false, * "language": "English", * "or_release_date": "2020-01-01", * "path": "https://api.myspotlight.tv/channels/US/category_slug/channel_slug", * "playlist": [ * { * "_id": "5452484e97f8154f0c092f3ec", * "ads": { * "pre": "yes", * "mid": "yes", * "post": "no", * "over": "no", * "pre_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "post_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "offsets": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] } }, * "ad_tag": { * "pre": "https://adserver.com/custom_ad_tag?param=true", * "mid": "string", * "post": "string", * "customTagPre": true, * "customTagMid": false, * "customTagPost": false }, * "access": "public", * "actors": [ * "Actor A", * "Actor B" ], * "category": "Web-series", * "chromecast_vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080?device_type=chromecast", * "company": { * "_id": "59c724ef98e82b310e85fd4c", * "name": "coolmovies", * "cast_custom_cdn": "https://111111.ssl.hwcdn.net", * "custom_cdn": "https://222222.ssl.hwcdn.net", * "media_tailor_cdn": "https://333333.ssl.hwcdn.net" }, * "company_id": "5452484e97f8154f0c092f3ec", * "country": "Canada", * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "description": "A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel,\nwho are determined to squelch his happiness.\n", * "directors": [ * "Director A", * "Director B" ], * "duration": 1072, * "episode": 1, * "geoblock": "ALL", * "genres": [ * "2000s animation" ], * "geocheck": true, * "is_teaser": false, * "language": "English", * "paths": { }, * "paywall": { }, * "poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "product_id": 11470, * "rating": "PG", * "roku_bif_files": { * "sd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-sd.bif", * "hd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-hd.bif", * "fhd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-fhd.bif" }, * "season": 1, * "seriestitle": "Open Source Films", * "server_side_ads": true, * "slug": "big-buck-bunny", * "socialImage": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "status": "Uploaded", * "thumb": "https://images.dotstudiopro.com/59a5a4f899f815d6403c31dd", * "thumbs": [ * "5ed871383d9aea7cf65b2184", * "5ed7f8c22f40d94404789de7", * "5ed7f8c12f40d94404789de6" ], * "title": "Big Buck Bunny", * "video_m3u8": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8", * "vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } ], * "playlist_id": "59c7210b97f815b52ea068cf", * "playlist_type": "manual", * "poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "programming_type": "Series", * "rating": "PG", * "season": 1, * "spotlight_poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "slug": "my-channel", * "title": "My Cool Channel", * "trailer": { * "video_id": "5ed7e4b6b32ab5755a17a932", * "url": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8" }, * "video": "videoObj[0]", * "videos_thumb": "https://images.dotstudiopro.com/59c84de297f815e8473807a2", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } ] } REFRESH A COMPANY'S CHANNELS post/channels/refresh/all https://api.myspotlight.tv/channels/refresh/all This call refreshes all of the channels in a company with the latest channel data from dotstudioPRO. In the response, the success key will let you know if the process was successful or not. AUTHORIZATIONS: api_key RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy { * "success": true } REFRESH CHANNELS IN BULK post/channels/refresh/bulk https://api.myspotlight.tv/channels/refresh/bulk This call refreshes a number of channels based on Channel IDs, Video IDs, or Playlist IDs with the latest channel data from dotstudioPRO. This route is not tied to a particular company and will update all matching channels with new data. Each value you need to pass for a channel refresh will live within an array called bulk_data. > { "bulk_data":[ { "type":"channel", "_id":"13486765156" }, { > "type":"playlist", "_id":"65786735756" }, { "type":"video", "_id":"3986876565" > } ] } The key for your request must be either channel, video, or playlist - representing the ID of the asset whose appropriate channel you wish to refresh. In the response, the items_received key will let you know how many items were received for the refresh call, but does not indicate the number of channels that will be refreshed. This route does not return the channels that will be refreshed or any data besides the initial item count and success message. AUTHORIZATIONS: api_key REQUEST BODY SCHEMA: APPLICATION/JSON REQUIRED Array of objects with types and _ids bulk_data Array of any RESPONSES 200 Successful operation 403 Missing or invalid API access token. REQUEST SAMPLES * Payload Content type application/json Copy Expand all Collapse all { * "bulk_data": [ * { * "type": "channel", * "_id": "13486765156" }, * { * "type": "playlist", * "_id": "65786735756" }, * { * "type": "video", * "_id": "3986876565" } ] } RESPONSE SAMPLES * 200 Content type application/json Copy { * "success": true, * "message": "Received 13 items to refresh.", * "items_received": 13 } COMPANY Retrieve data for all assets of a certain type from dotstudioPRO. Please note that response times for these endpoints may be high depending on how much content has been added to this client. GET ALL VIDEOS. get/company/videos https://api.myspotlight.tv/company/videos Get all videos uploaded to this company's dashboard. AUTHORIZATIONS: api_key QUERY PARAMETERS page string Default: 1 Which page to request (useful for pagination). limit string Default: 50 How many videos to return (useful for pagination). mp4 number Default: 0 Whether or not the MP4 URL of the video should be included in the response (send 1 for yes, 0 is the default for no) RESPONSES 200 Successful operation. 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "pages": { * "total": 20, * "limit": 10, * "page": 1, * "pages": 2 }, * "videos": [ * { * "_id": "5452484e97f8154f0c092f3ec", * "ads": { * "pre": "yes", * "mid": "yes", * "post": "no", * "over": "no", * "pre_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "post_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "offsets": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] } }, * "ad_tag": { * "pre": "https://adserver.com/custom_ad_tag?param=true", * "mid": "string", * "post": "string", * "customTagPre": true, * "customTagMid": false, * "customTagPost": false }, * "access": "public", * "actors": [ * "Actor A", * "Actor B" ], * "category": "Web-series", * "chromecast_vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080?device_type=chromecast", * "company": { * "_id": "59c724ef98e82b310e85fd4c", * "name": "coolmovies", * "cast_custom_cdn": "https://111111.ssl.hwcdn.net", * "custom_cdn": "https://222222.ssl.hwcdn.net", * "media_tailor_cdn": "https://333333.ssl.hwcdn.net" }, * "company_id": "5452484e97f8154f0c092f3ec", * "country": "Canada", * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "description": "A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel,\nwho are determined to squelch his happiness.\n", * "directors": [ * "Director A", * "Director B" ], * "duration": 1072, * "episode": 1, * "geoblock": "ALL", * "genres": [ * "2000s animation" ], * "geocheck": true, * "is_teaser": false, * "language": "English", * "paths": { }, * "paywall": { }, * "poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "product_id": 11470, * "rating": "PG", * "roku_bif_files": { * "sd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-sd.bif", * "hd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-hd.bif", * "fhd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-fhd.bif" }, * "season": 1, * "seriestitle": "Open Source Films", * "server_side_ads": true, * "slug": "big-buck-bunny", * "socialImage": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "status": "Uploaded", * "thumb": "https://images.dotstudiopro.com/59a5a4f899f815d6403c31dd", * "thumbs": [ * "5ed871383d9aea7cf65b2184", * "5ed7f8c22f40d94404789de7", * "5ed7f8c12f40d94404789de6" ], * "title": "Big Buck Bunny", * "video_m3u8": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8", * "vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } ] } GET ALL AVAILABLE CHANNELS. get/company/available/channels https://api.myspotlight.tv/company/available/channels Returns all the channels this company has access to, including syndicated content from other companies. AUTHORIZATIONS: api_key QUERY PARAMETERS page string Default: 1 Which page to request (useful for pagination). limit string Default: 50 How many videos to return (useful for pagination). RESPONSES 200 Successful operation. 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "pages": { * "total": 20, * "limit": 5, * "page": 1, * "pages": 4 }, * "channels": [ * { * "_id": "59c724ef98e82b310e85fd4c", * "actors": [ * "Actor A", * "Actor B" ], * "categories": [ * { * "_id": "59555d78ae075a721ddac670", * "company_id": "592709ff97f81578165aa389", * "display_type": "default", * "enabled": true, * "homepage": true, * "image": { * "height": 250, * "width": 480, * "poster": "https://images.dotstudiopro.com/5a20726598f8151741b582ad", * "spotlight_poster": "https://images.dotstudiopro.com/5a20725f97f8156c1c721d55", * "videos_thumb": "https://images.dotstudiopro.com/5a331ff798f8151d669bc18f" }, * "menu": true, * "name": "Featured Content", * "slug": "featured", * "weight": 0, * "platforms": [ * { * "android": "true", * "ios": "false", * "roku": "true" } ], * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "path": "http://api.myspotlight.tv/categories/US/featured", * "channels": "http://api.myspotlight.tv/channels/US/featured" } ], * "channel_url": "https://subdomain.dotstudiopro.com/channel/my-channel", * "childchannels": [ * "channelObject1", * "channelObject2" ], * "company": "subdomain", * "country": "Canada", * "description": "This is a great show!", * "directors": [ * "Director A" ], * "genres": [ * "Action", * "Comedy" ], * "hasYoutube": false, * "in_watchlist": false, * "language": "English", * "or_release_date": "2020-01-01", * "path": "https://api.myspotlight.tv/channels/US/category_slug/channel_slug", * "playlist": [ * { * "_id": "5452484e97f8154f0c092f3ec", * "ads": { * "pre": "yes", * "mid": "yes", * "post": "no", * "over": "no", * "pre_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "post_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "offsets": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] } }, * "ad_tag": { * "pre": "https://adserver.com/custom_ad_tag?param=true", * "mid": "string", * "post": "string", * "customTagPre": true, * "customTagMid": false, * "customTagPost": false }, * "access": "public", * "actors": [ * "Actor A", * "Actor B" ], * "category": "Web-series", * "chromecast_vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080?device_type=chromecast", * "company": { * "_id": "59c724ef98e82b310e85fd4c", * "name": "coolmovies", * "cast_custom_cdn": "https://111111.ssl.hwcdn.net", * "custom_cdn": "https://222222.ssl.hwcdn.net", * "media_tailor_cdn": "https://333333.ssl.hwcdn.net" }, * "company_id": "5452484e97f8154f0c092f3ec", * "country": "Canada", * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "description": "A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel,\nwho are determined to squelch his happiness.\n", * "directors": [ * "Director A", * "Director B" ], * "duration": 1072, * "episode": 1, * "geoblock": "ALL", * "genres": [ * "2000s animation" ], * "geocheck": true, * "is_teaser": false, * "language": "English", * "paths": { }, * "paywall": { }, * "poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "product_id": 11470, * "rating": "PG", * "roku_bif_files": { * "sd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-sd.bif", * "hd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-hd.bif", * "fhd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-fhd.bif" }, * "season": 1, * "seriestitle": "Open Source Films", * "server_side_ads": true, * "slug": "big-buck-bunny", * "socialImage": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "status": "Uploaded", * "thumb": "https://images.dotstudiopro.com/59a5a4f899f815d6403c31dd", * "thumbs": [ * "5ed871383d9aea7cf65b2184", * "5ed7f8c22f40d94404789de7", * "5ed7f8c12f40d94404789de6" ], * "title": "Big Buck Bunny", * "video_m3u8": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8", * "vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } ], * "playlist_id": "59c7210b97f815b52ea068cf", * "playlist_type": "manual", * "poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "programming_type": "Series", * "rating": "PG", * "season": 1, * "spotlight_poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "slug": "my-channel", * "title": "My Cool Channel", * "trailer": { * "video_id": "5ed7e4b6b32ab5755a17a932", * "url": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8" }, * "video": "videoObj[0]", * "videos_thumb": "https://images.dotstudiopro.com/59c84de297f815e8473807a2", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } ] } GET ALL AVAILABLE GENRES. get/company/available/genres https://api.myspotlight.tv/company/available/genres Returns a list of genres currently assigned to any published channel. AUTHORIZATIONS: api_key RESPONSES 200 Successful operation. 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "genres": { * "company_genres": [ * "Action", * "Comedy", * "Drama", * "Food" ], * "movies_genres": [ * "Action", * "Comedy" ], * "series_genres": [ * "Drama" ], * "live_genres": [ * "Food" ] } } GET ALL SUBSCRIBED TO CHANNELS. get/company/available/subscription/channels https://api.myspotlight.tv/company/available/subscription/channels Returns all the channels this company has subscribed to. Does not return company's own channels. AUTHORIZATIONS: api_key RESPONSES 200 Successful operation. 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "pages": { * "total": 20, * "limit": 5, * "page": 1, * "pages": 4 }, * "channels": [ * { * "_id": "59c724ef98e82b310e85fd4c", * "actors": [ * "Actor A", * "Actor B" ], * "categories": [ * { * "_id": "59555d78ae075a721ddac670", * "company_id": "592709ff97f81578165aa389", * "display_type": "default", * "enabled": true, * "homepage": true, * "image": { * "height": 250, * "width": 480, * "poster": "https://images.dotstudiopro.com/5a20726598f8151741b582ad", * "spotlight_poster": "https://images.dotstudiopro.com/5a20725f97f8156c1c721d55", * "videos_thumb": "https://images.dotstudiopro.com/5a331ff798f8151d669bc18f" }, * "menu": true, * "name": "Featured Content", * "slug": "featured", * "weight": 0, * "platforms": [ * { * "android": "true", * "ios": "false", * "roku": "true" } ], * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "path": "http://api.myspotlight.tv/categories/US/featured", * "channels": "http://api.myspotlight.tv/channels/US/featured" } ], * "channel_url": "https://subdomain.dotstudiopro.com/channel/my-channel", * "childchannels": [ * "channelObject1", * "channelObject2" ], * "company": "subdomain", * "country": "Canada", * "description": "This is a great show!", * "directors": [ * "Director A" ], * "genres": [ * "Action", * "Comedy" ], * "hasYoutube": false, * "in_watchlist": false, * "language": "English", * "or_release_date": "2020-01-01", * "path": "https://api.myspotlight.tv/channels/US/category_slug/channel_slug", * "playlist": [ * { * "_id": "5452484e97f8154f0c092f3ec", * "ads": { * "pre": "yes", * "mid": "yes", * "post": "no", * "over": "no", * "pre_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "post_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "offsets": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] } }, * "ad_tag": { * "pre": "https://adserver.com/custom_ad_tag?param=true", * "mid": "string", * "post": "string", * "customTagPre": true, * "customTagMid": false, * "customTagPost": false }, * "access": "public", * "actors": [ * "Actor A", * "Actor B" ], * "category": "Web-series", * "chromecast_vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080?device_type=chromecast", * "company": { * "_id": "59c724ef98e82b310e85fd4c", * "name": "coolmovies", * "cast_custom_cdn": "https://111111.ssl.hwcdn.net", * "custom_cdn": "https://222222.ssl.hwcdn.net", * "media_tailor_cdn": "https://333333.ssl.hwcdn.net" }, * "company_id": "5452484e97f8154f0c092f3ec", * "country": "Canada", * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "description": "A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel,\nwho are determined to squelch his happiness.\n", * "directors": [ * "Director A", * "Director B" ], * "duration": 1072, * "episode": 1, * "geoblock": "ALL", * "genres": [ * "2000s animation" ], * "geocheck": true, * "is_teaser": false, * "language": "English", * "paths": { }, * "paywall": { }, * "poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "product_id": 11470, * "rating": "PG", * "roku_bif_files": { * "sd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-sd.bif", * "hd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-hd.bif", * "fhd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-fhd.bif" }, * "season": 1, * "seriestitle": "Open Source Films", * "server_side_ads": true, * "slug": "big-buck-bunny", * "socialImage": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "status": "Uploaded", * "thumb": "https://images.dotstudiopro.com/59a5a4f899f815d6403c31dd", * "thumbs": [ * "5ed871383d9aea7cf65b2184", * "5ed7f8c22f40d94404789de7", * "5ed7f8c12f40d94404789de6" ], * "title": "Big Buck Bunny", * "video_m3u8": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8", * "vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } ], * "playlist_id": "59c7210b97f815b52ea068cf", * "playlist_type": "manual", * "poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "programming_type": "Series", * "rating": "PG", * "season": 1, * "spotlight_poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "slug": "my-channel", * "title": "My Cool Channel", * "trailer": { * "video_id": "5ed7e4b6b32ab5755a17a932", * "url": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8" }, * "video": "videoObj[0]", * "videos_thumb": "https://images.dotstudiopro.com/59c84de297f815e8473807a2", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } ] } UNSUBSCRIBE FROM CHANNEL. post/company/unsubscribe/{channel_id} https://api.myspotlight.tv/company/unsubscribe/{channel_id} Unsubscribes a company from a syndicated channel. AUTHORIZATIONS: api_key PATH PARAMETERS channel_id required string ID of the channel you wish to unsubscribe from. RESPONSES 200 Successful operation. 403 Missing or invalid API access token. DRM DRM-related functionality. Note that there are two different types of sessions: Stream Sessions, and Login Sessions. Stream Sessions are used for concurrent stream checks from a particlar platform. If a location has too many people streaming (based on the company's settings and the user's IP address), the platform will stop a user from watching their video to tell them the limit has been reached. Login Sessions are stored within the client token and are used by our API to determine how many platforms a user is logged into. Once a user has hit the session limit, the oldest session will be invalidated and a new session will be created for this device; this will cause the device that has an invalidated session token to re-authenticate to get a new session value. If a session is invalid, a user will not be able to do anything else with their client token; they will need to login again. Each type of response includes a relevant header value to check that will differentiate this error from any error the route might normally throw. The API will respond with the following for any disallowed routes when using a "clear sessions only" client token: * Response Code: 409 * Header: x-clear-sessions-only: 1 * Body: { success: false, message: "This token can only be used for clearing sessions for a user." } The API will respond with the following for any disallowed routes when using a "must reauthenticate" client token: * Response Code: 401 * Header: x-must-reauthenticate: 1 * Body: { success: false, message: "This session has expired or is invalid. Please log in again." } GET A STREAM SESSION ID get/drm/stream https://api.myspotlight.tv/drm/stream This endpoint returns a stream session ID for use with the Concurrent Stream Limit functionality within the dotstudioPRO Platform. Note that the stream session ID is not the same thing as the login session ID, which is used with the /drm/sessions/* APIs. AUTHORIZATIONS: api_key HEADER PARAMETERS x-client-token string The user-identifying client token. RESPONSES 200 Successful operation 403 Missing or invalid API access token. 404 The company could not be found. RESPONSE SAMPLES * 200 Content type application/json Copy { * "success": true, * "stream_session_id": "com_companyid_someuuid" } REGISTER CONCURRENT STREAM get/drm/heartbeat https://api.myspotlight.tv/drm/heartbeat This endpoint checks a stream session id (or device UID) to determine if a user has the right to stream based on the number of concurrent streams for their location (ip address based). This is determined by taking the number of concurrent streams and checking them against the company's concurrent stream limit setting. The stream session id is associated with an ip address and each consecutive heartbeat refreshes the expiration time of that stream id for that ip address. Note that either stream_session_id or uid needs to be passed to this endpoint. If neither is passed, the call will fail. AUTHORIZATIONS: api_key QUERY PARAMETERS stream_session_id string The stream session id received from the /drm/stream API uid string The device UID string. This can replace the stream_session_id value. HEADER PARAMETERS x-client-token string The user-identifying client token. RESPONSES 200 Successful operation 403 Missing or invalid API access token. 409 Concurrent heartbeat limit reached RESPONSE SAMPLES * 200 * 409 Content type application/json Copy { * "success": true, * "current_devices": 1 } DESTROY STREAM SESSION delete/drm/stream/clear https://api.myspotlight.tv/drm/stream/clear This endpoint destroys an active stream session by ID, allowing the application developer to register a new one. Note that either stream_session_id or uid needs to be passed to this endpoint. If neither is passed, the call will fail. AUTHORIZATIONS: api_key REQUEST BODY SCHEMA: APPLICATION/JSON REQUIRED The stream session ID received from the /drm/stream API stream_session_id string The stream session ID RESPONSES 200 Successful operation 403 Missing or invalid API access token. REQUEST SAMPLES * Payload Content type application/json Copy { * "stream_session_id": "com_companyid_someuuid" } RESPONSE SAMPLES * 200 Content type application/json Copy { * "success": true, * "current_devices": 1 } DESTROY A USER'S LOGIN SESSION delete/drm/sessions/logout https://api.myspotlight.tv/drm/sessions/logout This endpoint is for platforms to destroy a user's login session when they log out of the device. This is meant to ensure we don't have any "dead" sessions from a user logging out. AUTHORIZATIONS: api_key RESPONSES 200 Successful operation 400 Invalid client token passed. 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy { * "success": true, * "session_cleared": true, * "message": "No session value present in token." } DESTROY EVERY LOGIN SESSION FOR A USER delete/drm/sessions/clear https://api.myspotlight.tv/drm/sessions/clear This endpoint is for platforms to destroy all of the login sessions a user has. This is meant to allow a user to log out of all of their devices in the instance where they have reached the session limit so they can log into a new device. AUTHORIZATIONS: api_key QUERY PARAMETERS new_token boolean A parameter to request a new token after a session is cleared. This will return a new client token in the response body if passed as true. RESPONSES 200 Successful operation 400 Invalid client token passed. 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy { * "success": true, * "sessions_cleared": true, * "token": "abcdefg" } LIVE Obtain data for "Live Feed" channel types and linear playlist that can be used to create a single HLS stream. This data can be used to create a VOD to live workflow. GET LIVE CHANNELS. get/live/channels/{countryCode} https://api.myspotlight.tv/live/channels/{countryCode} Obtain an array of all "Live Feed" type channels in dotstudioPRO, including the scheduled start time for live stream scheduling. AUTHORIZATIONS: api_key PATH PARAMETERS countryCode required string 2-letter ISO Alpha2 formatted country code of the end-user. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "channels": [ * { * "_id": "59c724ef98e82b310e85fd4c", * "actors": [ * "Actor A", * "Actor B" ], * "categories": [ * { * "_id": "59555d78ae075a721ddac670", * "company_id": "592709ff97f81578165aa389", * "display_type": "default", * "enabled": true, * "homepage": true, * "image": { * "height": 250, * "width": 480, * "poster": "https://images.dotstudiopro.com/5a20726598f8151741b582ad", * "spotlight_poster": "https://images.dotstudiopro.com/5a20725f97f8156c1c721d55", * "videos_thumb": "https://images.dotstudiopro.com/5a331ff798f8151d669bc18f" }, * "menu": true, * "name": "Featured Content", * "slug": "featured", * "weight": 0, * "platforms": [ * { * "android": "true", * "ios": "false", * "roku": "true" } ], * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "path": "http://api.myspotlight.tv/categories/US/featured", * "channels": "http://api.myspotlight.tv/channels/US/featured" } ], * "channel_url": "https://subdomain.dotstudiopro.com/channel/my-channel", * "childchannels": [ * "channelObject1", * "channelObject2" ], * "company": "subdomain", * "country": "Canada", * "description": "This is a great show!", * "directors": [ * "Director A" ], * "genres": [ * "Action", * "Comedy" ], * "hasYoutube": false, * "in_watchlist": false, * "language": "English", * "or_release_date": "2020-01-01", * "path": "https://api.myspotlight.tv/channels/US/category_slug/channel_slug", * "playlist": [ * { * "_id": "5452484e97f8154f0c092f3ec", * "ads": { * "pre": "yes", * "mid": "yes", * "post": "no", * "over": "no", * "pre_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "post_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "offsets": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] } }, * "ad_tag": { * "pre": "https://adserver.com/custom_ad_tag?param=true", * "mid": "string", * "post": "string", * "customTagPre": true, * "customTagMid": false, * "customTagPost": false }, * "access": "public", * "actors": [ * "Actor A", * "Actor B" ], * "category": "Web-series", * "chromecast_vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080?device_type=chromecast", * "company": { * "_id": "59c724ef98e82b310e85fd4c", * "name": "coolmovies", * "cast_custom_cdn": "https://111111.ssl.hwcdn.net", * "custom_cdn": "https://222222.ssl.hwcdn.net", * "media_tailor_cdn": "https://333333.ssl.hwcdn.net" }, * "company_id": "5452484e97f8154f0c092f3ec", * "country": "Canada", * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "description": "A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel,\nwho are determined to squelch his happiness.\n", * "directors": [ * "Director A", * "Director B" ], * "duration": 1072, * "episode": 1, * "geoblock": "ALL", * "genres": [ * "2000s animation" ], * "geocheck": true, * "is_teaser": false, * "language": "English", * "paths": { }, * "paywall": { }, * "poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "product_id": 11470, * "rating": "PG", * "roku_bif_files": { * "sd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-sd.bif", * "hd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-hd.bif", * "fhd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-fhd.bif" }, * "season": 1, * "seriestitle": "Open Source Films", * "server_side_ads": true, * "slug": "big-buck-bunny", * "socialImage": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "status": "Uploaded", * "thumb": "https://images.dotstudiopro.com/59a5a4f899f815d6403c31dd", * "thumbs": [ * "5ed871383d9aea7cf65b2184", * "5ed7f8c22f40d94404789de7", * "5ed7f8c12f40d94404789de6" ], * "title": "Big Buck Bunny", * "video_m3u8": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8", * "vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } ], * "playlist_id": "59c7210b97f815b52ea068cf", * "playlist_type": "manual", * "poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "programming_type": "Series", * "rating": "PG", * "season": 1, * "spotlight_poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "slug": "my-channel", * "title": "My Cool Channel", * "trailer": { * "video_id": "5ed7e4b6b32ab5755a17a932", * "url": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8" }, * "video": "videoObj[0]", * "videos_thumb": "https://images.dotstudiopro.com/59c84de297f815e8473807a2", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } ] } GET A LIVE CHANNEL. get/live/channels/{countryCode}/{slug} https://api.myspotlight.tv/live/channels/{countryCode}/{slug} This endpoint returns a single "Live Feed" channel and includes direct links to the media for all the contents in the playlist. AUTHORIZATIONS: api_key PATH PARAMETERS countryCode required string 2-letter ISO Alpha2 formatted country code of the end-user. slug required string Slug of the channel whose playlist you wish to retrieve. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "channel": { * "_id": "string", * "actors": [ * "Actor A", * "Actor B" ], * "directors": [ * "Director A", * "Director B" ], * "genres": [ * "Genre A" ], * "playlist": [ * "videoObj1", * "videoObj2", * "videoObj3" ], * "writers": [ * "Writer A", * "Writer B" ], * "videos_thumb": "https://images.dotstudiopro.com/59c84de297f815e8473807a2" } } GET COMPANY EPG. get/live/epg/{countryCode} https://api.myspotlight.tv/live/epg/{countryCode} Get an Electronic Programming guide for your company. The EPG will be constructuted from any XMLTV's provided with live linear channels in the CMS. AUTHORIZATIONS: api_key PATH PARAMETERS countryCode required string 2-letter ISO Alpha2 formatted country code of the end-user. QUERY PARAMETERS platform string Enum: "android" "androidtv" "appletv" "firetv" "ios" "roku" "tizen" "website" "html5" The platform creating the request. genre string A genre such as comedy, action, etc to query for. The list of available genres can be acquired from https://api.myspotlight.tv/#operation/getCompanyChannels. exclude_ratings string Example: exclude_ratings=PG,PG-13,R A comma-separated value with ratings such as PG, R, etc to exclude from the return. Please note that this filters channels by rating, not videos, and will exclude all channels with those ratings. If this value is not sent, all channels will be returned as normal. dma number Example: dma=501,679,881 A comma-separated list of DMAs such as 501, 881, etc to include from the return. market string Example: market=gaAtlanta,azPhoenix A comma-separated list of SGAs such as gaAtlanta, azPhoenix, etc to include from the return. start_time string Default: "now" Example: start_time=2020-07-29T21:05:10.488Z Starting timestamp for the window in which programs are searched. Must be greater or equal than now. end_time string Default: "start_time + 1 day" Example: end_time=2020-07-30T21:05:10.488Z Ending timestamp for the window in which programs are searched. Must be greater than start_time. from number Default: 0 Index at which to begin returning results (useful for pagination). size number Default: 1000 How many channels to return in the results (useful for pagination). program_size number Default: 3 Example: program_size=5, 100, -1 (all) Max number of programs to return per channel. detail string Example: detail=lean flag to return more or less details in each program object. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "channels": [ * { * "_id": "5452484e97f8154f0c092f3ec", * "name": "NBC", * "slug": "nbc", * "channel_number": 1, * "description": "Catch all the cool sports on NBC Live today!", * "logo": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "spotlight_poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "wallpaper": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "language": "en", * "order_index": 1, * "category": "Web-series", * "genres": [ * "Action", * "Comedy" ], * "rating": "PG", * "year": 2020, * "video_id": "5f2431e3d1fbcb05b4129192", * "program": [ * { * "program_title": "NFL Highlights last week", * "program_language": "en", * "program_description": "Catch all of last weeks great NFL highlights! Sports are awesome.", * "episode_title": "string", * "duration": 3600, * "starts_at": 1598986416, * "ends_at": 1598990016, * "image": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "episode": 1, * "season": 1, * "part": "1/2" } ] } ] } GET EPG PROGRAM BY PROGRAM ID. get/live/program/{program_id} https://api.myspotlight.tv/live/program/{program_id} Get a specific program from the Electronic Programming Guide. AUTHORIZATIONS: api_key QUERY PARAMETERS start_time_epoch string Default: "" Example: start_time_epoch=1676300244 Unix timestamp (in seconds) when program began playback. end_time_epoch string Default: "" Example: end_time_epoch=1676300400 Unix timestamp (in seconds) when program will end. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy { * "program_title": "NFL Highlights last week", * "program_language": "en", * "program_description": "Catch all of last weeks great NFL highlights! Sports are awesome.", * "episode_title": "string", * "duration": 3600, * "starts_at": 1598986416, * "ends_at": 1598990016, * "image": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "episode": 1, * "season": 1, * "part": "1/2" } PAGE Retrieve pages, posts, and story blocks from dotstudioPRO GET HOME PAGE DATA. get/homepage/{countryCode}/{platform} https://api.myspotlight.tv/homepage/{countryCode}/{platform} This endpoint returns an array of objects which can be used to construct a platform-specific home page. Each array item contains an object with a category which has both the "Enabled" and "Enable on Homepage" flags set to true, as well as an array of channel data. AUTHORIZATIONS: api_key PATH PARAMETERS countryCode required string 2-letter ISO Alpha2 formatted country code of the end-user. platform required string Enum: "android" "androidtv" "appletv" "firetv" "ios" "roku" "tizen" "website" "html5" The platform creating the request. QUERY PARAMETERS genre string A genre to query for. The list of available genres can be acquired from https://api.myspotlight.tv/#operation/getCompanyChannels. Because this parameter is in the query, the value must be URL encoded (eg Science Fiction should be passed as Science%20Fiction) exclude_ratings string Example: exclude_ratings=PG,PG-13,R A comma-separated value with ratings such as PG, R, etc to exclude from the return. Please note that this filters channels by rating, not videos, and will exclude all channels with those ratings. If this value is not sent, all channels will be returned as normal. max_ratings string Example: max_ratings=PG-13,R A comma-separated value with ratings such as PG, R, etc to send to iris.tv as the maximum rating for results returned from their system.. asset_dates boolean A flag to return asset dates (created_at, updated_at) with video assets. RESPONSES 200 Successful operation 400 Invalid platform parameter passed 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "homepage": [ * { * "category": { * "_id": "string", * "name": "Featuired", * "slug": "featured", * "display_type": "default" }, * "channels": [ * { * "_id": "string", * "title": "Big Buck Bunny", * "description": "Big Buck Bunny", * "poster": "Big Buck Bunny", * "channel_logo": "string", * "spotlight_poster": "string", * "slug": "big-buck-bunny", * "is_product": true, * "channel_type": "parent", * "programming_type": "Series" } ] } ] } GET MOVIES PAGE DATA. get/movies/{countryCode}/{platform} https://api.myspotlight.tv/movies/{countryCode}/{platform} This endpoint returns an array of objects which can be used to construct a platform-specific movies page. Each array item contains an object with a category which has both the "Enabled" and "Enable on Movies Page" flags set to true, as well as an array of channel data. AUTHORIZATIONS: api_key PATH PARAMETERS countryCode required string 2-letter ISO Alpha2 formatted country code of the end-user. platform required string Enum: "android" "androidtv" "appletv" "firetv" "ios" "roku" "tizen" "website" "html5" The platform creating the request. QUERY PARAMETERS genre string A genre to query for. The list of available genres can be acquired from https://api.myspotlight.tv/#operation/getCompanyChannels. Because this parameter is in the query, the value must be URL encoded (eg Science Fiction should be passed as Science%20Fiction) exclude_ratings string Example: exclude_ratings=PG,PG-13,R A comma-separated value with ratings such as PG, R, etc to exclude from the return. Please note that this filters channels by rating, not videos, and will exclude all channels with those ratings. If this value is not sent, all channels will be returned as normal. max_ratings string Example: max_ratings=PG-13,R A comma-separated value with ratings such as PG, R, etc to send to iris.tv as the maximum rating for results returned from their system.. asset_dates boolean A flag to return asset dates (created_at, updated_at) with video assets. RESPONSES 200 Successful operation 400 Invalid platform parameter passed 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "homepage": [ * { * "category": { * "_id": "string", * "name": "Featuired", * "slug": "featured", * "display_type": "default" }, * "channels": [ * { * "_id": "string", * "title": "Big Buck Bunny", * "description": "Big Buck Bunny", * "poster": "Big Buck Bunny", * "channel_logo": "string", * "spotlight_poster": "string", * "slug": "big-buck-bunny", * "is_product": true, * "channel_type": "parent", * "programming_type": "Series" } ] } ] } GET SERIES PAGE DATA. get/series/{countryCode}/{platform} https://api.myspotlight.tv/series/{countryCode}/{platform} This endpoint returns an array of objects which can be used to construct a platform-specific series page. Each array item contains an object with a category which has both the "Enabled" and "Enable on Series Page" flags set to true, as well as an array of channel data. AUTHORIZATIONS: api_key PATH PARAMETERS countryCode required string 2-letter ISO Alpha2 formatted country code of the end-user. platform required string Enum: "android" "androidtv" "appletv" "firetv" "ios" "roku" "tizen" "website" "html5" The platform creating the request. QUERY PARAMETERS genre string A genre to query for. The list of available genres can be acquired from https://api.myspotlight.tv/#operation/getCompanyChannels. Because this parameter is in the query, the value must be URL encoded (eg Science Fiction should be passed as Science%20Fiction) exclude_ratings string Example: exclude_ratings=PG,PG-13,R A comma-separated value with ratings such as PG, R, etc to exclude from the return. Please note that this filters channels by rating, not videos, and will exclude all channels with those ratings. If this value is not sent, all channels will be returned as normal. max_ratings string Example: max_ratings=PG-13,R A comma-separated value with ratings such as PG, R, etc to send to iris.tv as the maximum rating for results returned from their system.. asset_dates boolean A flag to return asset dates (created_at, updated_at) with video assets. RESPONSES 200 Successful operation 400 Invalid platform parameter passed 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "homepage": [ * { * "category": { * "_id": "string", * "name": "Featuired", * "slug": "featured", * "display_type": "default" }, * "channels": [ * { * "_id": "string", * "title": "Big Buck Bunny", * "description": "Big Buck Bunny", * "poster": "Big Buck Bunny", * "channel_logo": "string", * "spotlight_poster": "string", * "slug": "big-buck-bunny", * "is_product": true, * "channel_type": "parent", * "programming_type": "Series" } ] } ] } GET A LIST OF PAGES. get/pages https://api.myspotlight.tv/pages Retrieve an array of all published pages. Passing a platform parameter is optional - if all your platforms have the same pages this parameter can be ommitted. AUTHORIZATIONS: api_key QUERY PARAMETERS platform required string Enum: "android" "androidtv" "appletv" "firetv" "ios" "roku" "tizen" "website" "html5" The platform creating the request. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "pages": [ * { * "_id": "59555d78ae075a721ddac670", * "nav_name": "Comedy", * "page_name": "Comedy Films", * "slug": "comedy", * "body": "string", * "html": "string", * "code": "string", * "seo": { * "share_image": "string", * "description": "string", * "keywords": [ * "keyword" ] }, * "created_at": "2020-01-01T00:00:00.000Z", * "updated_at": "2020-01-01T00:00:00.000Z", * "gallery_images": { * "_id": "59555d78ae075a721ddac670", * "name": "string", * "active_from": "string", * "active_to": "string", * "caption": "string", * "open_link_in_new_window": true, * "aspect_ratio": { * "width": 0, * "height": 0 }, * "images": [ * null ] }, * "platforms": [ * "android" ], * "story_blocks": [ * { * "_id": "59555d78ae075a721ddac670", * "name": "Paragraph at top of page.", * "type": "text", * "layout": "Full Width", * "last_modified": "2020-01-01T00:00:00.000Z", * "order": 1, * "detail": { * "headline": "string", * "body": "string", * "call_to_action": "Watch now", * "link": "string", * "image": "string", * "video": { }, * "gallery": { * "_id": "59555d78ae075a721ddac670", * "name": "string", * "active_from": "string", * "active_to": "string", * "caption": "string", * "open_link_in_new_window": true, * "aspect_ratio": { * "width": 0, * "height": 0 }, * "images": [ * null ] }, * "code_block": "string" }, * "advanced_options": { * "divider_above": true, * "remove_top_padding": true, * "open_link_in_new_window": true, * "mobile_text_below_media": true, * "wrap_gallery_images": true, * "gallery_images_per_page": 4 } } ] } ] } GET THE NAVIGATION MENU. get/pages/navigation https://api.myspotlight.tv/pages/navigation Retrieve the navigation title and slug of all published pages. Can be used to render a navigation bar inside an application. Passing a platform parameter is optional - if all your platforms have the same pages this parameter can be ommitted. AUTHORIZATIONS: api_key QUERY PARAMETERS platform required string Enum: "android" "androidtv" "appletv" "firetv" "ios" "roku" "tizen" "website" "html5" The platform creating the request. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "navigation_items": [ * { * "_id": "59555d78ae075a721ddac670", * "nav_name": "Comedy", * "page_name": "Comedy Films", * "slug": "comedy-films" } ] } GET A PAGE. get/pages/{slug} https://api.myspotlight.tv/pages/{slug} Retrieve a specific page. AUTHORIZATIONS: api_key PATH PARAMETERS slug required string Slug of the page you wish to retrieve. RESPONSES 200 Successful operation 400 Missing or invalid page slug. 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "page": { * "_id": "59555d78ae075a721ddac670", * "nav_name": "Comedy", * "page_name": "Comedy Films", * "slug": "comedy", * "body": "string", * "html": "string", * "code": "string", * "seo": { * "share_image": "string", * "description": "string", * "keywords": [ * "keyword" ] }, * "created_at": "2020-01-01T00:00:00.000Z", * "updated_at": "2020-01-01T00:00:00.000Z", * "gallery_images": { * "_id": "59555d78ae075a721ddac670", * "name": "string", * "active_from": "string", * "active_to": "string", * "caption": "string", * "open_link_in_new_window": true, * "aspect_ratio": { * "width": 0, * "height": 0 }, * "images": [ * null ] }, * "platforms": [ * "android" ], * "story_blocks": [ * { * "_id": "59555d78ae075a721ddac670", * "name": "Paragraph at top of page.", * "type": "text", * "layout": "Full Width", * "last_modified": "2020-01-01T00:00:00.000Z", * "order": 1, * "detail": { * "headline": "string", * "body": "string", * "call_to_action": "Watch now", * "link": "string", * "image": "string", * "video": { }, * "gallery": { * "_id": "59555d78ae075a721ddac670", * "name": "string", * "active_from": "string", * "active_to": "string", * "caption": "string", * "open_link_in_new_window": true, * "aspect_ratio": { * "width": 0, * "height": 0 }, * "images": [ * null ] }, * "code_block": "string" }, * "advanced_options": { * "divider_above": true, * "remove_top_padding": true, * "open_link_in_new_window": true, * "mobile_text_below_media": true, * "wrap_gallery_images": true, * "gallery_images_per_page": 4 } } ] } } GET A LIST OF POSTS. get/posts https://api.myspotlight.tv/posts Retrieve an array of all published posts. Passing a platform parameter is optional - if all your platforms have the same pages this parameter can be ommitted. AUTHORIZATIONS: api_key QUERY PARAMETERS platform required string Enum: "android" "androidtv" "appletv" "firetv" "ios" "roku" "tizen" "website" "html5" The platform creating the request. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "posts": [ * { * "_id": "59555d78ae075a721ddac670", * "or_publish_date": "2020-01-01T00:00:00.000Z", * "sunset_date": "2020-01-01T00:00:00.000Z", * "title": "Hot this week!", * "description": "Here are all the images and videos we loved watching this week.", * "author": "John Doe", * "source": { * "url": "string", * "name": "NBC" }, * "tags": [ * null ], * "type": "regular", * "created_at": "2020-01-01T00:00:00.000Z", * "updated_at": "2020-01-01T00:00:00.000Z", * "slug": "hot-this-week", * "video": "61085b6eb69a58531f4c5ea1" } ], * "pages": { * "total": 20, * "limit": 10, * "page": 1, * "pages": 2 } } GET A POST. get/posts/{slug} https://api.myspotlight.tv/posts/{slug} Retrieve a specific post. AUTHORIZATIONS: api_key PATH PARAMETERS slug required string Slug of the post you wish to retrieve. RESPONSES 200 Successful operation 403 Missing or invalid API access token. 404 No post with that slug exists. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "_id": "59555d78ae075a721ddac670", * "or_publish_date": "2020-01-01T00:00:00.000Z", * "sunset_date": "2020-01-01T00:00:00.000Z", * "title": "Hot this week!", * "description": "Here are all the images and videos we loved watching this week.", * "author": "John Doe", * "source": { * "url": "string", * "name": "NBC" }, * "tags": [ * null ], * "type": "regular", * "created_at": "2020-01-01T00:00:00.000Z", * "updated_at": "2020-01-01T00:00:00.000Z", * "slug": "hot-this-week", * "video": "61085b6eb69a58531f4c5ea1" } GET A STORY BLOCK. get/pages/blocks/{id} https://api.myspotlight.tv/pages/blocks/{id} Retrieve a story block by ID. AUTHORIZATIONS: api_key PATH PARAMETERS id required string ID of the block you wish to retrieve. RESPONSES 200 Successful operation 403 Missing or invalid API access token. 404 No block with that id exists. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "_id": "59555d78ae075a721ddac670", * "name": "Paragraph at top of page.", * "type": "text", * "layout": "Full Width", * "last_modified": "2020-01-01T00:00:00.000Z", * "order": 1, * "detail": { * "headline": "string", * "body": "string", * "call_to_action": "Watch now", * "link": "string", * "image": "string", * "video": { }, * "gallery": { * "_id": "59555d78ae075a721ddac670", * "name": "string", * "active_from": "string", * "active_to": "string", * "caption": "string", * "open_link_in_new_window": true, * "aspect_ratio": { * "width": 0, * "height": 0 }, * "images": [ * null ] }, * "code_block": "string" }, * "advanced_options": { * "divider_above": true, * "remove_top_padding": true, * "open_link_in_new_window": true, * "mobile_text_below_media": true, * "wrap_gallery_images": true, * "gallery_images_per_page": 4 } } PLAYLIST Retrieve dynamic playlist data from dotstudioPRO GET VIDEOS BY PLAYLIST ID. DEPRECATED get/playlist/dynamic/{playlist_id} https://api.myspotlight.tv/playlist/dynamic/{playlist_id} Returns an array of videos given a playlist ID. AUTHORIZATIONS: api_key PATH PARAMETERS playlist_id required string ID of the playlist whose videos you wish to retrieve. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy [ * "videoObj1", * "videoObj2", * "videoObj3" ] ROKU Retrieve feed for Roku Direct Publisher. For more details please visit https://github.com/rokudev/feed-specifications GET A JSON DIRECT PUBLISHER FEED FOR YOUR COMPANY. get/rokuDirectPublisher https://api.myspotlight.tv/rokuDirectPublisher Retrieve feed for Roku Direct Publisher. For more details please visit https://github.com/rokudev/feed-specifications AUTHORIZATIONS: api_key RESPONSES 200 Successful operation. JSON schema at https://github.com/rokudev/feed-specifications 403 Missing or invalid API access token. SEARCH Retrieve search results for dotstudioPRO assets. FIND CHANNELS BY PLATFORM. get/find/channels/{platform} https://api.myspotlight.tv/find/channels/{platform} Obtain an array of any channel matching the search query. The channels returned are automatically sorted based on relevance. This version of search is based on relevant hits to the channel's title, people, genre and tags keys. AUTHORIZATIONS: api_key PATH PARAMETERS platform required string Enum: "android" "androidtv" "appletv" "firetv" "ios" "roku" "tizen" "website" "html5" The platform creating the request. QUERY PARAMETERS q required string Query of your search. from number Default: 0 Index at which to begin returning search results (useful for pagination). size number Default: 10 How many channels to return in the search results (useful for pagination). exclude_ratings string Example: exclude_ratings=PG,PG-13,R A comma-separated value with ratings such as PG, R, etc to exclude from the return. dma number Example: dma=501,679,881 A comma-separated list of DMAs such as 501, 881, etc to include from the return. market string Example: market=gaAtlanta,azPhoenix A comma-separated list of SGAs such as gaAtlanta, azPhoenix, etc to include from the return. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "channels": [ * { * "_id": "59c724ef98e82b310e85fd4c", * "actors": [ * "Actor A", * "Actor B" ], * "country": "Canada", * "description": "This is a great show!", * "directors": [ * "Director A" ], * "genres": [ * "Action", * "Comedy" ], * "language": "English", * "poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "programming_type": "Series", * "rating": "PG", * "season": 1, * "spotlight_poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "slug": "my-channel", * "title": "My Cool Channel", * "writers": [ * "Writer A", * "Writer B" ], * "markets": [ * { * "sga": { * "allowed": [ * "gaAtlanta", * "azPhoenix" ], * "global": false }, * "dma": { * "allowed": [ * 510 ], * "global": false } } ], * "year": 2020 } ] } FIND PROGRAMS BY PLATFORM AND COUNTRY CODE. get/find/programs/{countryCode}/{platform} https://api.myspotlight.tv/find/programs/{countryCode}/{platform} Obtain an array of any programs matching the search query. The programs returned are automatically sorted based on relevance. This version of the search is based on relevant hits to the program's title. AUTHORIZATIONS: api_key PATH PARAMETERS platform required string Enum: "android" "androidtv" "appletv" "firetv" "ios" "roku" "tizen" "website" "html5" The platform creating the request. countryCode required string 2 letter ISO Alpha2 formatted country code of the country user is in. QUERY PARAMETERS q required string Query of your search. from number Default: 0 Index at which to begin returning search results (useful for pagination). size number Default: 10 How many channels to return in the search results (useful for pagination). start_time string Default: "now" Example: start_time=2020-07-29T21:05:10.488Z Starting timestamp for the window in which programs are searched. Must be greater or equal than now. end_time string Default: "start_time + 1 day" Example: end_time=2020-07-30T21:05:10.488Z Ending timestamp for the window in which programs are searched. Must be greater than start_time. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "programs": [ * { * "program_title": "NFL Highlights last week", * "program_language": "en", * "program_description": "Catch all of last weeks great NFL highlights! Sports are awesome.", * "episode_title": "string", * "duration": 3600, * "starts_at": 1598986416, * "ends_at": 1598990016, * "image": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "episode": 1, * "season": 1, * "part": "1/2", * "channel": { * "_id": "5452484e97f8154f0c092f3ec", * "name": "NBC", * "slug": "nbc", * "description": "Catch all the cool sports on NBC Live today!", * "logo": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "spotlight_poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "wallpaper": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "language": "en", * "order_index": 1, * "category": "Web-series", * "genres": [ * "Action", * "Comedy" ], * "rating": "PG", * "year": 2020, * "video_id": "5f2431e3d1fbcb05b4129192" } } ] } FIND VIDEOS. get/find/videos https://api.myspotlight.tv/find/videos Obtain an array of any videos matching the search query. The videos returned are automatically sorted based on relevance. This version of search will look for matches in the following video metadata fields - title, actors, directors, genre, seriestitle, and writers, AUTHORIZATIONS: api_key QUERY PARAMETERS q required string Query of your search. page number Default: 1 The page of search results being requested. size number Default: 10 How many videos to return in the search results (useful for pagination). RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "videos": [ * { * "_id": "59c724ef98e82b310e85fd4c", * "title": "My Cool Video", * "actors": [ * "Actor A", * "Actor B" ], * "directors": [ * "Director A" ], * "genres": [ * "Action", * "Comedy" ], * "poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "score": 5, * "slug": "my-video-slug", * "thumb": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "wallpaper": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "writers": [ * "Writer A", * "Writer B" ] } ], * "pages": { * "total": 200, * "limit": 20, * "page": 1, * "pages": 10 } } FIND VIDEO TITLES (AUTOCOMPLETE). get/find/videos/autocomplete https://api.myspotlight.tv/find/videos/autocomplete Obtain an array of autocomplete suggestions for a partial video search query. The response can be used to construct an autocomplete suggester in a front-end application. The suggestions can also be URL encoded and sent as a query parameter to the find route to receive search results based on the autocomplete suggestion. AUTHORIZATIONS: api_key QUERY PARAMETERS q required string Query of your search. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "videos": [ * { * "_id": "59c724ef98e82b310e85fd4c", * "slug": "my-video-slug", * "title": "My Cool Video" } ] } FIND CHANNEL TITLES (AUTOCOMPLETE). get/find/channels/autocomplete https://api.myspotlight.tv/find/channels/autocomplete Obtain an array of autocomplete suggestions for a partial channel search query. The response can be used to construct an autocomplete suggester in a front-end application. The suggestions can also be URL encoded and sent as a query parameter to the find route to receive search results based on the autocomplete suggestion. AUTHORIZATIONS: api_key QUERY PARAMETERS q required string Query of your search. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "videos": [ * { * "_id": "59c724ef98e82b310e61ca5d", * "slug": "my-video-slug", * "title": "My Cool Video" } ] } GET CONTENT RECOMMENDATIONS. get/find/recommendations/{channel}/{platform} https://api.myspotlight.tv/find/recommendations/{channel}/{platform} Obtain an array of recommended channels to view based on Channel ID or slug. AUTHORIZATIONS: api_key PATH PARAMETERS channel required string Channel ID or slug of the channel you want to receive recommendations for. QUERY PARAMETERS from number Default: 0 Index at which to begin returning search results (useful for pagination). size number Default: 10 How many videos to return in the search results (useful for pagination). exclude_ratings string Example: exclude_ratings=PG,PG-13,R A comma-separated value with ratings such as PG, R, etc to exclude from the return. Please note that this filters channels by rating, not videos, and will exclude all channels with those ratings. If this value is not sent, all channels will be returned as normal. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "channels": [ * { * "_id": "59c724ef98e82b310e85fd4c", * "actors": [ * "Actor A", * "Actor B" ], * "country": "Canada", * "description": "This is a great show!", * "directors": [ * "Director A" ], * "genres": [ * "Action", * "Comedy" ], * "language": "English", * "poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "programming_type": "Series", * "rating": "PG", * "season": 1, * "spotlight_poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "slug": "my-channel", * "title": "My Cool Channel", * "writers": [ * "Writer A", * "Writer B" ], * "markets": [ * { * "sga": { * "allowed": [ * "gaAtlanta", * "azPhoenix" ], * "global": false }, * "dma": { * "allowed": [ * 510 ], * "global": false } } ], * "year": 2020 } ] } GET VIDEO RECOMMENDATIONS. get/find/recommendations/video/{video} https://api.myspotlight.tv/find/recommendations/video/{video} Obtain an array of recommended videos to view based on Video ID. AUTHORIZATIONS: api_key PATH PARAMETERS video required string Video ID you want to receive recommendations for. QUERY PARAMETERS from number Default: 0 Index at which to begin returning search results (useful for pagination). size number Default: 10 How many videos to return in the search results (useful for pagination). RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "videos": [ * { * "_id": "59c724ef98e82b310e85fd4c", * "title": "My Cool Video", * "actors": [ * "Actor A", * "Actor B" ], * "directors": [ * "Director A" ], * "genres": [ * "Action", * "Comedy" ], * "poster": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "score": 5, * "slug": "my-video-slug", * "thumb": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "wallpaper": "https://images.dotstudiopro.com/59c70a2397f8150d1aa068d3", * "writers": [ * "Writer A", * "Writer B" ] } ], * "pages": { * "total": 200, * "limit": 20, * "page": 1, * "pages": 10 } } GET RECOMMENDATIONS BY VIDEO ID. DEPRECATED get/search/recommendation https://api.myspotlight.tv/search/recommendation Obtain an array of recommended videos to play based on Video ID. AUTHORIZATIONS: api_key QUERY PARAMETERS q required string ID of the video you want to receive recommendations for. from number Default: 0 Index at which to begin returning search results (useful for pagination). size number Default: 10 How many videos to return in the search results (useful for pagination). exclude_ratings string Example: exclude_ratings=PG,PG-13,R A comma-separated value with ratings such as PG, R, etc to exclude from the return. Please note that this filters channels by rating, not videos, and will exclude all channels with those ratings. If this value is not sent, all channels will be returned as normal. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "data": { * "total": 5, * "hits": [ * { * "_source": { * "_id": "59c724ef98e82b310e85fd4c" } } ] } } GET RECOMMENDATIONS BY CHANNEL. DEPRECATED get/search/recommendation/channel https://api.myspotlight.tv/search/recommendation/channel Obtain an array of recommended channels to view based on Channel ID or slug. AUTHORIZATIONS: api_key QUERY PARAMETERS q required string dotstudioPRO channel ID or slug of the channel you want to receive recommendations for. from number Default: 0 Index at which to begin returning search results (useful for pagination). size number Default: 10 How many videos to return in the search results (useful for pagination). exclude_ratings string Example: exclude_ratings=PG,PG-13,R A comma-separated value with ratings such as PG, R, etc to exclude from the return. Please note that this filters channels by rating, not videos, and will exclude all channels with those ratings. If this value is not sent, all channels will be returned as normal. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "data": { * "total": 5, * "hits": [ * { * "_source": { * "_id": "59c724ef98e82b310e85fd4c" } } ] } } SEARCH CHANNELS. DEPRECATED get/search/ https://api.myspotlight.tv/search/ Obtain an array of any channels matching the search query. The channels returned are automatically sorted based on relevance. This version of search is based on relevant hits to the channel's title, actors and directors keys. AUTHORIZATIONS: api_key QUERY PARAMETERS q required string Query of your search. from number Default: 0 Index at which to begin returning search results (useful for pagination). size number Default: 10 How many channels to return in the search results (useful for pagination). RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "data": { * "total": 5, * "hits": [ * { * "_source": { * "_id": "59c724ef98e82b310e85fd4c" } } ] } } SEARCH VIDEOS. DEPRECATED get/search/videos https://api.myspotlight.tv/search/videos Obtain an array of any videos matching the search query. The videos returned are automatically sorted based on relevance. This version of search is based on relevant hits to the videos's title, actors and directors keys. AUTHORIZATIONS: api_key QUERY PARAMETERS q required string Query of your search. from number Default: 0 Index at which to begin returning search results (useful for pagination). size number Default: 10 How many videos to return in the search results (useful for pagination). A maximum of 50 search results can be returned in one query. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "data": { * "total": 5, * "hits": [ * { * "_source": { * "_id": "59c724ef98e82b310e85fd4c" } } ] } } SUBSCRIPTION User Subscriptions are a built-in capability of dotstudioPRO. SUBSCRIPTION CREATION FLOW Website: There are two flows that Web users can go through. The first is Chargify.js. After implementing Chargify.js on your site, the token received from card submissions will be sent to our API and used to create a payment profile for the user. * First, the user's payment profile needs to be created via the Create With Payment route. This will ensure the user's payment profile exists to be used for charging their card during the subscription process. * Next, the user's subscription needs to be created via the Subscribe a User route. * Finally, now that a subscription has been created, the user will be entitled to any content that their subscription allows. The second flow is for non-Chargify.js implemenations and requires credit card data which is saved in our payment processor and tokenized for use with Chargify. * First, the user's payment profile needs to be created via the Create With Payment route. This will ensure the user's payment profile exists to be used for charging their card during the subscription process. * Next, the user's subscription needs to be created via the Import Braintree User and Subscribe route. This takes a token from Braintree and passes it to Chargify to charge the user as part of the subscription creation. * Finally, now that a subscription has been created, the user will be entitled to any content that their subscription allows. Apple (iOS/TV): Subscription purchases are handled through the Apple App Store. Inside of the Apple app, once a purchase is made, the receipt data needs to be sent to the Apple Receipt Parse route. The API will process the receipt data and set the user's subscription up in Chargify, and nothing else is needed. The user will be entitled to any content that their subscription allows. Android (Mobile/TV): Subscription purchases are handled through the Google Play Store. Inside of the Android app, once a purchase is made, the receipt data needs to be sent to the Google Receipt Parse route. The API will process the receipt data and set the user's subscription up in Chargify, and nothing else is needed. The user will be entitled to any content that their subscription allows. Amazon Fire: Subscription purchases are handled through the Amazon Fire store. Inside of the Amazon Fire app, once a purchase is made, the receipt data needs to be sent to the Amazon Fire Receipt Parse route. The API will process the receipt data and set the user's subscription up in Chargify, and nothing else is needed. The user will be entitled to any content that their subscription allows. Roku: Subscription purchases are handled through the Roku Store. The way that Roku operates is a little different from the other platforms: * First, you need to update the user's data with the information that Roku has for them. This can be done via the Roku Customer Save route. * Second, allow the user to purchase the product. Within the Roku app, you will receive a transaction id. This will be necessary for the next step. * Third, associate the user's Roku transaction id with their account via the Roku Customer Associate route. * Fourth, Roku sends a receipt to our API that we use to process the subscription after the purchase. You will need to make a check every second for about 10 seconds to ensure that the user's subscription has processed properly by using the Active Subscriptions route. If the subscription is active, you'll receive it in that call. * Finally, once you've been able to verify the user has an active subscription, they will now be entitled to any content that their subscription allows. SUBSCRIPTION ENTITLEMENT FLOW For any platform that we have integrated our subscriptions with, checking entitlement for a given channel can be done via the Subscription Channel Check route. If you use our Homepage api route as part of your app or site, sending over a client token will return a subscription check for each of the channels returned in the homepage result. This will allow for the display of lock icons on locked resources. SUBSCRIPTION UPGRADE/DOWNGRADE (WEB ONLY) Web subscriptions can be upgraded/downgraded/migrated via the Subscribe a User route. Pass the product id you wish to subscribe the user to and our API will handle applying the change to their Chargify account. SUBSCRIPTION REACTIVATION (WEB ONLY) Web is the only platform that requires reactivation via a "manual" API call; the other platforms send their reactivation receipts to our API automatically. A user's subscription can be reactivated via the Subscribe a User route. This works if the user's subscription has been fully cancelled, or if the user's subscription has a "soft cancel" on it (delayed cancellation until end of period). The API will process any kind of logic that needs to happen to get the user's account subscribed and active again. SUBSCRIPTION SUPPORT As part of having a subscription service, you will have to deal with customer support requests. It's difficult to determine if a user should be entitled to the service based on the information they provide, so we've provided an endpoint to allow your customer support team to validate the status of a user's subscription based on what the given store's receipt API comes back with. This is available via the Support Entitlement Check route GET COMPANY PRODUCT SUMMARY. get/subscriptions/summary https://api.myspotlight.tv/subscriptions/summary Get detailed information about all of your active subscription products and contents. AUTHORIZATIONS: api_key RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "data": [ * { * "_id": "618427d5e2792b6911372392", * "name": "Monthly Product 1 - Dev", * "product_type": "svod", * "duration": { * "interval": 1, * "interval_unit": "month" }, * "company_id": "57bdf792d66da8b744a33855", * "chargify_id": "5834408", * "entire_catalogue": false, * "ads_enabled": false, * "apple_product_id": "com.dotstudioz.dotstudioprotest.autoRenewableWeekly", * "google_product_id": "4650964", * "roku_product_id": "dprotestmonthly", * "amazon_fire_product_id": "com.dotstudioz.dotstudioPRO.inapp.month", * "description": "Monthly Product 1", * "price": "1.00", * "price_display": "monthly", * "is_most_popular": false, * "status": "Active", * "channels": [ * "609daa215c6b0b61d713cde4", * "609da9f15c6b0b61d713cde3" ], * "taxable": false, * "trial": null }, * { * "_id": "61856a9402e84e2583223ab2", * "name": "One Time Product 1 - Dev", * "product_type": "tvod", * "duration": { * "interval": 1, * "interval_unit": "month" }, * "company_id": "57bdf792d66da8b744a33855", * "chargify_id": "5834594", * "entire_catalogue": false, * "ads_enabled": false, * "apple_product_id": "tvod_channels_product", * "google_product_id": "com.dotstudioz.dotstudiopro.revry.tier3", * "roku_product_id": "tvod_channels_product", * "amazon_fire_product_id": "com.dotstudioz.dotstudioPRO.inapp.day", * "description": "One Time Product 1", * "price": "0.00", * "rental_length": 1, * "rental_unit": "month", * "presell": false, * "status": "Active", * "channels": [ * "5ff74b535c23614314605f72" ], * "taxable": false, * "trial": null } ] } GET THE DEFAULT SUBSCRIPTION BEHAVIOR. get/subscriptions/default https://api.myspotlight.tv/subscriptions/default Get the default subscription behavior for a company (play_ads or lock_videos). AUTHORIZATIONS: api_key RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy { * "success": true, * "behavior": "play_ads" } GET LIST OF CHANNELS IN A PRODUCT. get/subscriptions/channels-by-product/{product_id} https://api.myspotlight.tv/subscriptions/channels-by-product/{product_id} Get a list of all channels that belong to a particular product. AUTHORIZATIONS: api_key PATH PARAMETERS product_id required string The dotstudioPRO product ID. RESPONSES 200 Successful operation 400 Product id is incorrectly formatted. 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "channels": [ * { * "title": "Some Cool Channel", * "poster": "https://x8v4e3f8.ssl.hwcdn.net/57be89b9d66da82435a338511", * "spotlight_poster": "https://x8v4e3f8.ssl.hwcdn.net/609da01f1f81f024205a44111", * "actors": [ * "a" ], * "directors": [ * "b" ], * "writers": [ * "c" ], * "description": "Lorem ipsum dolor set imet...", * "display_title": "Some Cool Channel", * "slug": "some-cool-channel", * "_id": "609daff15c6b0b61d713cde1" } ], * "entire_catalogue": false } GET ALL PRODUCTS A CHANNEL PART OF. get/subscriptions/products-by-channel/{channel_id} https://api.myspotlight.tv/subscriptions/products-by-channel/{channel_id} Get an array of all the products a channel belongs to given a dotstudioPRO channel ID. AUTHORIZATIONS: api_key PATH PARAMETERS channel_id required string The dotstudioPRO channel ID. RESPONSES 200 Successful operation 400 Channel id is improperly formatted. 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "products": [ * { * "_id": "618427d5e2792b6911372390", * "name": "Monthly Product 1", * "product_type": "svod", * "duration": { * "number": 1, * "unit": "month" }, * "company_id": "57bdf792d66da8b744a33855", * "chargify_id": "5834408", * "entire_catalogue": false, * "ads_enabled": false, * "apple_product_id": "apple1", * "google_product_id": "google1", * "roku_product_id": "roku1", * "amazon_fire_product_id": "fire1", * "description": "Monthly Product 1", * "price": "$1.00", * "price_display": "monthly", * "is_most_popular": false, * "status": "Active", * "updated_at": "2021-11-05T21:36:52.000Z", * "created_at": "2021-11-04T18:35:01.000Z", * "channels_count": 2 } ] } GET SUBSCRIPTION USER. DEPRECATED get/subscriptions/users/getuser/{chargify_id} https://api.myspotlight.tv/subscriptions/users/getuser/{chargify_id} Get a detailed user object of a Subscription User given EITHER their client token or their Chargify User ID. If an x-client-token is passed the path property chargify_id is not required. AUTHORIZATIONS: api_key PATH PARAMETERS chargify_id required string The user's Chargify User ID. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "user": { * "first_name": "John", * "last_name": "Doe", * "email": "Doe", * "reference": "5ace53e098f815d171e4cc70", * "id": "21116292" } } GET SUBSCRIPTION USER. get/subscriptions/users/getuser https://api.myspotlight.tv/subscriptions/users/getuser Get a detailed user object of a Subscription User given EITHER their client token or their Chargify User ID. If an x-client-token is passed the path property chargify_id is not required. AUTHORIZATIONS: api_key PATH PARAMETERS chargify_id required string The user's Chargify User ID. RESPONSES 200 Successful operation 401 Unauthorized or missing client token. 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "user": { * "first_name": "John", * "last_name": "Doe", * "email": "Doe", * "reference": "5ace53e098f815d171e4cc70", * "id": "21116292" } } GET USER'S SUBSCRIPTIONS. get/subscriptions/users/active_subscriptions https://api.myspotlight.tv/subscriptions/users/active_subscriptions Get detailed information about a user's subscriptions. AUTHORIZATIONS: api_key RESPONSES 200 Successful operation 401 Unauthorized client token. 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "subscriptions": [ * { * "subscription": { * "id": 15236915, * "state": "active", * "current_period_ends_at": "2016-11-15T14:48:10-05:00", * "trial_started_at": null, * "trial_ended_at": null, * "activated_at": "2016-11-14T14:48:12-05:00", * "expires_at": null, * "created_at": "2016-11-14T14:48:10-05:00", * "updated_at": "2016-11-14T15:24:41-05:00", * "current_period_started_at": "2016-11-14T14:48:10-05:00", * "coupon_code": "5SNN6HFK3GBH", * "customer": { * "first_name": "Curtis", * "last_name": "Test", * "email": "curtis@example.com", * "created_at": "2016-11-14T14:48:10-05:00", * "updated_at": "2016-11-14T14:48:13-05:00", * "address": "123 Anywhere Street", * "address_2": "", * "city": "Boulder", * "state": "CO", * "zip": "80302", * "country": "US" }, * "product": { * "id": 3792003, * "name": "$10 Basic Plan", * "handle": "basic", * "description": "lorem ipsum", * "accounting_code": "basic", * "price_in_cents": 1000, * "interval": 1, * "interval_unit": "day", * "trial_interval": null, * "trial_interval_unit": "month", * "created_at": "2016-03-24T13:38:39-04:00", * "updated_at": "2016-11-03T13:03:05-04:00", * "archived_at": null }, * "credit_card": { * "id": 10191713, * "payment_type": "credit_card", * "first_name": "Curtis", * "last_name": "Test", * "masked_card_number": "XXXX-XXXX-XXXX-1", * "card_type": "bogus", * "expiration_month": 1, * "expiration_year": 2026, * "billing_address": "123 Anywhere Street", * "billing_address_2": "", * "billing_city": "Boulder", * "billing_state": null, * "billing_country": "", * "billing_zip": "80302" }, * "payment_type": "credit_card" } } ] } GET USER'S PRODUCTS. get/subscriptions/users/products https://api.myspotlight.tv/subscriptions/users/products Get detailed information about a user's products, both subscriptions and one-time purchases. AUTHORIZATIONS: api_key QUERY PARAMETERS include_inactive_products boolean A flag to include the user's inactive products in the response. RESPONSES 200 Successful operation 401 Unauthorized client token. 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "products": { * "svod": [ * { * "id": 15236915, * "state": "active", * "current_period_ends_at": "2016-11-15T14:48:10-05:00", * "trial_started_at": null, * "trial_ended_at": null, * "activated_at": "2016-11-14T14:48:12-05:00", * "expires_at": null, * "created_at": "2016-11-14T14:48:10-05:00", * "updated_at": "2016-11-14T15:24:41-05:00", * "current_period_started_at": "2016-11-14T14:48:10-05:00", * "coupon_code": "5SNN6HFK3GBH", * "customer": { * "first_name": "Curtis", * "last_name": "Test", * "email": "curtis@example.com", * "created_at": "2016-11-14T14:48:10-05:00", * "updated_at": "2016-11-14T14:48:13-05:00", * "address": "123 Anywhere Street", * "address_2": "", * "city": "Boulder", * "state": "CO", * "zip": "80302", * "country": "US" }, * "product": { * "id": 3792003, * "name": "$10 Basic Plan", * "handle": "basic", * "description": "lorem ipsum", * "accounting_code": "basic", * "price_in_cents": 1000, * "interval": 1, * "interval_unit": "day", * "trial_interval": null, * "trial_interval_unit": "month", * "created_at": "2016-03-24T13:38:39-04:00", * "updated_at": "2016-11-03T13:03:05-04:00", * "archived_at": null }, * "credit_card": { * "id": 10191713, * "payment_type": "credit_card", * "first_name": "Curtis", * "last_name": "Test", * "masked_card_number": "XXXX-XXXX-XXXX-1", * "card_type": "bogus", * "expiration_month": 1, * "expiration_year": 2026, * "billing_address": "123 Anywhere Street", * "billing_address_2": "", * "billing_city": "Boulder", * "billing_state": null, * "billing_country": "", * "billing_zip": "80302" }, * "payment_type": "credit_card" } ], * "tvod": [ * { * "id": 15236915, * "state": "active", * "current_period_ends_at": "2017-11-14T14:48:10-05:00", * "trial_started_at": null, * "trial_ended_at": null, * "activated_at": "2016-11-14T14:48:12-05:00", * "expires_at": "2017-11-14T14:48:10-05:00", * "created_at": "2016-11-14T14:48:10-05:00", * "updated_at": "2016-11-14T15:24:41-05:00", * "current_period_started_at": "2016-11-14T14:48:10-05:00", * "coupon_code": "5SNN6HFK3GBH", * "customer": { * "first_name": "Curtis", * "last_name": "Test", * "email": "curtis@example.com", * "created_at": "2016-11-14T14:48:10-05:00", * "updated_at": "2016-11-14T14:48:13-05:00", * "address": "123 Anywhere Street", * "address_2": "", * "city": "Boulder", * "state": "CO", * "zip": "80302", * "country": "US" }, * "product": { * "id": 3792004, * "name": "Watch A Channel Plan", * "handle": "watch_channel", * "description": "lorem ipsum", * "accounting_code": "watch_channel", * "price_in_cents": 500, * "interval": 1, * "interval_unit": "day", * "trial_interval": null, * "trial_interval_unit": "month", * "created_at": "2016-03-24T13:38:39-04:00", * "updated_at": "2016-11-03T13:03:05-04:00", * "archived_at": null }, * "credit_card": { * "id": 10191713, * "payment_type": "credit_card", * "first_name": "Curtis", * "last_name": "Test", * "masked_card_number": "XXXX-XXXX-XXXX-1", * "card_type": "bogus", * "expiration_month": 1, * "expiration_year": 2026, * "billing_address": "123 Anywhere Street", * "billing_address_2": "", * "billing_city": "Boulder", * "billing_state": null, * "billing_country": "", * "billing_zip": "80302" }, * "payment_type": "credit_card" } ] }, * "platform": "string", * "paymentInfo": { * "first_name": "Testing", * "last_name": "User", * "masked_card_number": "XXXX-XXXX-XXXX-4242", * "card_type": "visa", * "expiration_month": 12, * "expiration_year": 2024, * "billing_address": "1234 Testing Lane", * "billing_address_2": null, * "billing_city": "Testerville", * "billing_state": "CA", * "billing_zip": "12345", * "billing_country": "US" } } GET A USER'S PURCHASE HISTORY get/subscriptions/purchases https://api.myspotlight.tv/subscriptions/purchases Get the total purchase history of a user including payments made on other platforms that were registered in our system. AUTHORIZATIONS: api_key RESPONSES 200 Successful operation 401 Unauthorized client token. 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "current_subscription": { * "product": { * "id": 1234568, * "name": "MONTHLY", * "handle": "monthly_subscription", * "description": null, * "accounting_code": null, * "request_credit_card": true, * "expiration_interval": null, * "expiration_interval_unit": "never", * "created_at": "2020-06-04T14:23:29-04:00", * "updated_at": "2021-11-15T12:39:18-05:00", * "price_in_cents": 199, * "interval": 1, * "interval_unit": "month", * "initial_charge_in_cents": 0, * "trial_price_in_cents": null, * "trial_interval": null, * "trial_interval_unit": null, * "archived_at": null, * "require_credit_card": false, * "return_params": null, * "taxable": true, * "update_return_url": null, * "tax_code": "D0000000", * "initial_charge_after_trial": false, * "version_number": 1, * "update_return_params": null, * "default_product_price_point_id": 1234568, * "request_billing_address": false, * "require_billing_address": false, * "require_shipping_address": false, * "product_price_point_id": 1234568, * "product_price_point_name": "Default", * "product_price_point_handle": "uuid:5204efe0-0809-0139-c166-064aab0ed7ef", * "product_family": { * "id": 1234568, * "name": "Billing", * "description": null, * "handle": "billing-plans", * "accounting_code": null, * "created_at": "2020-06-02T14:54:36-04:00", * "updated_at": "2020-06-02T14:54:36-04:00" }, * "public_signup_pages": [ ] }, * "payment_info": { * "first_name": "John", * "last_name": "Smith", * "masked_card_number": "XXXX-XXXX-XXXX-1111", * "card_type": "visa", * "expiration_month": 12, * "expiration_year": 2025, * "billing_address": "1355 Anywhere Street", * "billing_address_2": null, * "billing_city": "Somewhere", * "billing_state": "CA", * "billing_zip": "90001", * "billing_country": "US" }, * "platform": "web", * "subscription_info": { * "id": 39238114, * "state": "active", * "trial_started_at": null, * "trial_ended_at": null, * "activated_at": "2021-02-04T13:32:03-05:00", * "created_at": "2021-02-04T13:31:59-05:00", * "updated_at": "2021-05-27T13:21:46-04:00", * "expires_at": null, * "balance_in_cents": 0, * "current_period_ends_at": "2027-09-04T13:31:00-04:00", * "next_assessment_at": "2027-09-04T13:31:00-04:00", * "canceled_at": null, * "cancellation_message": null, * "next_product_id": null, * "next_product_handle": null, * "cancel_at_end_of_period": false, * "payment_collection_method": "automatic", * "snap_day": null, * "cancellation_method": null, * "current_period_started_at": "2021-02-04T13:31:59-05:00", * "previous_state": "active", * "signup_payment_id": 465942021, * "signup_revenue": "7.99", * "delayed_cancel_at": null, * "coupon_code": null, * "total_revenue_in_cents": 0, * "product_price_in_cents": 799, * "product_version_number": 1, * "payment_type": "credit_card", * "referral_code": null, * "coupon_use_count": null, * "coupon_uses_allowed": null, * "reason_code": null, * "automatically_resume_at": null, * "coupon_codes": [ ], * "offer_id": null, * "payer_id": null, * "receives_invoice_emails": null, * "product_price_point_id": 1143655, * "next_product_price_point_id": null, * "credit_balance_in_cents": 200, * "prepayment_balance_in_cents": 0, * "net_terms": null, * "stored_credential_transaction_id": null, * "locale": null, * "reference": null, * "currency": "USD", * "on_hold_at": null, * "scheduled_cancellation_at": null, * "product_price_point_type": "catalog", * "group": null, * "price": 7.99 } }, * "history": [ * [ * { * "type": "credit", * "platform": "web", * "credit_amount": "$3.99", * "created_at": "2021-02-16T16:17:12.000Z" }, * { * "type": "refund", * "platform": "web", * "credit_amount": "$3.99", * "created_at": "2021-02-16T16:17:12.000Z" }, * { * "type": "payment", * "payment_amount": "$3.99", * "created_at": "2021-02-04T18:32:02.000Z", * "platform": "web", * "period_start": "2021-02-04T00:00:00.000Z", * "period_end": "2021-03-04T00:00:00.000Z", * "masked_card_number": "XXXX-XXXX-XXXX-1111", * "card_brand": "master", * "dsp_product_id": "6ad93f22358eee1a5e0d6202", * "product_id": 1234568, * "product_name": "MONTHLY SUBSCRIPTION", * "product_type": "svod" } ] ] } CHECK SUBSCRIPTION STATUS. get/subscriptions/check/{channel_id} https://api.myspotlight.tv/subscriptions/check/{channel_id} Perform a check against a particular channel to see if customer currently has an active subscription for it. Note: if you request a parent channel, the childchannels within that parent channel will be checked and returned in a childchannels array. The customer you are a performing a check against must be registered in Chargify in order for this call to work. If they are not the call will always return unlocked=false. AUTHORIZATIONS: api_key PATH PARAMETERS channel_id required string dotstudioPRO Channel ID RESPONSES 200 Successful operation 400 Channel id is improperly formatted. 401 Unauthorized client token. 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "unlocked": true, * "ads_enabled": true, * "childchannels": [ * { * "dspro_id": "5416ba9c97f815f27881be04", * "unlocked": true, * "ads_enabled": true } ] } CREATE A PAYMENT PROFILE FOR A USER (WEB) post/subscriptions/users/create_with_payment https://api.myspotlight.tv/subscriptions/users/create_with_payment Creates a payment profile for a user within Braintree to be used by Chargify (web users only) AUTHORIZATIONS: api_key REQUEST BODY SCHEMA: APPLICATION/JSON REQUIRED A Chargify.js token, or card info to create a payment profile. If a Chargify.js token is passed, the credit card fields are unnecessary. Without the Chargify.js token, all credit card fields are required. chargify_token string Customer's Chargify token from the Chargify.js form submission. first_name string Customer's first name. last_name string Customer's last name. card_number string Credit card number. exp_month string Credit card expiry month. exp_year string Credit card expiry year. cvv string Credit card CVV value. billing_address string Billing address 1. billing_address_2 string Billing address 2. billing_city string Billing city. billing_state string Billing state. billing_zip string Billing ZIP code. billing_country string ISO Alpha2 formatted two letter country code. RESPONSES 200 Successful operation 400 One or more necessary parameters is missing or incorrect. 401 Unauthorized client token. 403 Missing or invalid API access token. REQUEST SAMPLES * Payload Content type application/json Copy { * "chargify_token": "tok_smcb6h2rthmf7sdprr7z67pm", * "first_name": "John", * "last_name": "Doe", * "card_number": "4111111111111111", * "exp_month": "10", * "exp_year": "2020", * "cvv": 123, * "billing_address": "1111 A Street", * "billing_address_2": "Unit 101", * "billing_city": "Vancouver", * "billing_state": "BC", * "billing_zip": "V6A0A1", * "billing_country": "CA" } RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "data": { * "_id": "61b265abb72dbb41787e30342", * "company_id": "37bdf792d66da8b744a33851", * "customer_id": "31b2659f12df9c6f423d753a", * "braintree_customer_id": "318986578686165" } } IMPORT BRAINTREE USER AND SUBSCRIBE (WEB) post/subscriptions/users/import/subscribe_to/{subscription_id} https://api.myspotlight.tv/subscriptions/users/import/subscribe_to/{subscription_id} Creates a new customer object in Chargify corresponding to an existing user in dotstudioPRO's Braintree account. The Braintree user must have a payment method associated with their account in order for this call to work. After creating the user in Chargify they will be subscribed to the subscription ID provided. AUTHORIZATIONS: api_key PATH PARAMETERS subscription_id required string The Chargify Subscription ID the user should be subscribed to. QUERY PARAMETERS coupon string Coupon to apply to the subscription (optional). Coupon MUST BE VALID if passed, otherwise call will error. RESPONSES 200 Successful operation 401 Unauthorized client token. 403 Missing or invalid API access token. 404 The product you're creating a subscription for could not be found. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "data": { * "customer": { }, * "product": { }, * "credit_card": { } } } SUBSCRIBE USER. post/subscriptions/users/subscribe_to/{subscription_id} https://api.myspotlight.tv/subscriptions/users/subscribe_to/{subscription_id} Subscribe a user who has already been created in Chargify to a subscription. This call is useful when using external payment processors such as Apple Pay or Roku Payments. A customer using an external subscription processor may be created in Chargify without credit card data, subscribed using this endpoint, and credited continuously using the Generate Payment endpoint. AUTHORIZATIONS: api_key PATH PARAMETERS subscription_id required string The Chargify Subscription ID the user should be subscribed to. QUERY PARAMETERS platform required string Enum: "android" "android_tv" "apple" "firetv" "roku" "web" The platform creating the request. coupon string A coupon code for this user's plan immediate boolean Default: false For subscription plan changes. Determines whether the plan changes at the end of the billing period or immediately. RESPONSES 200 Successful operation 401 Unauthorized client token. 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "data": { * "customer": { }, * "product": { }, * "credit_card": { } } } CANCEL SUBSCRIPTION (WEB) post/subscriptions/users/cancel https://api.myspotlight.tv/subscriptions/users/cancel Cancels a user's existing subscription. Since a user may be on only 1 active subscription plan at a time it is not necessary to provide a subscription_id to this route. When cancelled, a user will stop being charged immediately. They will maintain access to contents of their old subscription package until their current billing period expires. AUTHORIZATIONS: api_key RESPONSES 200 Successful operation 401 Unauthorized client token. 403 Missing or invalid API access token. 404 The customer could not be found. 409 The customer does not have a subscription. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "subscription": { * "id": 49813741, * "state": "active", * "trial_started_at": null, * "trial_ended_at": null, * "activated_at": "2021-12-09T15:27:10-05:00", * "created_at": "2021-12-09T15:27:07-05:00", * "updated_at": "2021-12-09T15:31:02-05:00", * "expires_at": null, * "balance_in_cents": 0, * "current_period_ends_at": "2022-01-09T15:27:07-05:00", * "next_assessment_at": "2022-01-09T15:27:07-05:00", * "canceled_at": null, * "cancellation_message": null, * "next_product_id": null, * "next_product_handle": null, * "cancel_at_end_of_period": true, * "payment_collection_method": "automatic", * "snap_day": null, * "cancellation_method": null, * "current_period_started_at": "2021-12-09T15:27:07-05:00", * "previous_state": "active", * "signup_payment_id": 586167439, * "signup_revenue": "1.00", * "delayed_cancel_at": "2022-01-09T15:27:07-05:00", * "coupon_code": null, * "total_revenue_in_cents": 100, * "product_price_in_cents": 100, * "product_version_number": 1, * "payment_type": "credit_card", * "referral_code": null, * "coupon_use_count": null, * "coupon_uses_allowed": null, * "reason_code": "CH:Unknown", * "automatically_resume_at": null, * "coupon_codes": [ ], * "offer_id": null, * "payer_id": null, * "receives_invoice_emails": null, * "product_price_point_id": 1632148, * "next_product_price_point_id": null, * "credit_balance_in_cents": 0, * "prepayment_balance_in_cents": 0, * "net_terms": null, * "stored_credential_transaction_id": null, * "locale": null, * "reference": null, * "currency": "USD", * "on_hold_at": null, * "scheduled_cancellation_at": "2022-01-09T15:27:07-05:00", * "product_price_point_type": "default", * "customer": { * "id": 50773431, * "first_name": "Testing", * "last_name": "User", * "organization": null, * "email": "a5c5ab1d-5b4b-429d-9be4-b2abec64fc75_testrunner@dsptest.com", * "created_at": "2021-12-09T15:27:07-05:00", * "updated_at": "2021-12-09T15:27:07-05:00", * "reference": "61b2659f12df9c6f423d753b", * "address": null, * "address_2": null, * "city": null, * "state": null, * "state_name": null, * "zip": null, * "country": null, * "country_name": null, * "phone": null, * "portal_invite_last_sent_at": null, * "portal_invite_last_accepted_at": null, * "verified": false, * "portal_customer_created_at": null, * "vat_number": null, * "cc_emails": null, * "tax_exempt": false, * "parent_id": null, * "locale": null }, * "product": { * "id": 5834408, * "name": "Monthly Product 1 - Dev", * "handle": "monthly_product_1", * "description": "", * "accounting_code": "", * "request_credit_card": true, * "expiration_interval": null, * "expiration_interval_unit": "never", * "created_at": "2021-11-04T14:35:00-04:00", * "updated_at": "2021-11-07T12:38:41-05:00", * "price_in_cents": 100, * "interval": 1, * "interval_unit": "month", * "initial_charge_in_cents": null, * "trial_price_in_cents": null, * "trial_interval": null, * "trial_interval_unit": "month", * "archived_at": null, * "require_credit_card": false, * "return_params": "", * "taxable": false, * "update_return_url": "", * "tax_code": "D0000000", * "initial_charge_after_trial": false, * "version_number": 1, * "update_return_params": "", * "default_product_price_point_id": 1632148, * "request_billing_address": false, * "require_billing_address": false, * "require_shipping_address": false, * "product_price_point_id": 1632148, * "product_price_point_name": "Default", * "product_price_point_handle": "uuid:ed52ff10-2084-013a-dab2-02b7f9ecc5f5", * "product_family": { * "id": 1996356, * "name": "Billing Plans", * "description": null, * "handle": "dotstudioz-billing-plans", * "accounting_code": null, * "created_at": "2021-11-04T14:28:30-04:00", * "updated_at": "2021-11-04T14:28:30-04:00" }, * "public_signup_pages": [ ] }, * "credit_card": { * "id": 33982672, * "first_name": "Testing", * "last_name": "User", * "masked_card_number": "XXXX-XXXX-XXXX-1111", * "card_type": "visa", * "expiration_month": 12, * "expiration_year": 2030, * "customer_id": 50773431, * "current_vault": "braintree_blue", * "vault_token": "163908213855540265612", * "billing_address": "1234 Anywhere St", * "billing_city": "Anywhere", * "billing_state": "CA", * "billing_zip": "90210", * "billing_country": "US", * "customer_vault_token": null, * "billing_address_2": null, * "payment_type": "credit_card", * "disabled": false, * "site_gateway_setting_id": 22901, * "gateway_handle": null }, * "group": null } } VALIDATE COUPON (WEB) post/subscriptions/validate_coupon https://api.myspotlight.tv/subscriptions/validate_coupon Check whether or not a coupon code is valid AUTHORIZATIONS: api_key REQUEST BODY SCHEMA: APPLICATION/JSON REQUIRED coupon string The coupon code RESPONSES 200 Successful operation 403 Missing or invalid API access token. REQUEST SAMPLES * Payload Content type application/json Copy { * "coupon": "ONE_MONTH_FREE" } RESPONSE SAMPLES * 200 Content type application/json Copy { * "success": true, * "coupon_is_valid": true } CREATE AN AMAZON FIRE SUBSCRIPTION (AMAZON FIRE) postsubscriptions/amazon_fire/customer/parse https://api.myspotlight.tvsubscriptions/amazon_fire/customer/parse Create an Amazon Fire subscription subscription using receipt data REQUEST BODY SCHEMA: APPLICATION/JSON REQUIRED orderId string packageName string productId string purchaseTime string purchaseState string purchaseToken string autoRenewing object signature object RESPONSES 200 Successful operation 400 The format of the values sent over is incorrect. This error code will also be returned if the Amazon Fire API returns an error. 403 Missing or invalid API access token, or missing/invalid client token. 404 The customer or the product could not be found within our system. 409 This customer already has an active subscription. REQUEST SAMPLES * Payload Content type application/json Copy Expand all Collapse all { * "orderId": "_n2lIHPuwE9RgcfBK4R3XYtDHrFcsXJdfysmHiyNXAg=:5:44", * "packageName": "com.dotstudioz.helloworld", * "productId": "com.dotstudioz.helloworld", * "purchaseTime": "Mon Dec 06 23:25:27 PST 2021", * "purchaseState": "SUCCESSFUL", * "purchaseToken": "_n2lIHPuwE9RgcfBK4R3XYtDHrFcsXJdfysmHiyNXAg=:5:44", * "autoRenewing": { * "userId": "R0f03EbSdRlaflvBbc1ExsY5Hs54luI3cnBjaHu4L58", * "marketplace": "US" }, * "signature": { * "receiptId": "_n2lIHPuwE9RgcfBK4R3XYtDHrFcsXJdfysmHiyNXAg=:5:44", * "sku": "com.dotstudioz.dotstudioPRO.inapp.month", * "itemType": "SUBSCRIPTION", * "purchaseDate": "Mon Dec 06 23:25:27 PST 2021" } } RESPONSE SAMPLES * 200 Content type application/json Copy { * "success": true, * "data": "Customer account created, subscribed, and credited." } CREATE AN APPLE SUBSCRIPTION (APPLE) post/subscriptions/apple/customer/parse https://api.myspotlight.tv/subscriptions/apple/customer/parse Create an Apple subscription using receipt data AUTHORIZATIONS: api_key REQUEST BODY SCHEMA: APPLICATION/JSON REQUIRED latest_receipt string notification_type string product_id string RESPONSES 200 Successful operation 400 The format of the values sent over is incorrect. 403 Missing or invalid API access token, or missing/invalid client token. REQUEST SAMPLES * Payload Content type application/json Copy { * "latest_receipt": "abcdaruiaofjapdf", * "notification_type": "INITIAL_BUY", * "product_id": "some.apple.product" } RESPONSE SAMPLES * 200 Content type application/json Copy { * "success": true, * "data": "User subscription created!" } CREATE AN ANDROID/GOOGLE SUBSCRIPTION (ANDROID/GOOGLE) postsubscriptions/google/parse https://api.myspotlight.tvsubscriptions/google/parse Create an Android/Google subscription using receipt data REQUEST BODY SCHEMA: APPLICATION/JSON REQUIRED orderId string packageName string productId string purchaseTime number purchaseState number purchaseToken string autoRenewing boolean acknowledged boolean RESPONSES 200 Successful operation 400 The format of the values sent over is incorrect. 403 Missing or invalid API access token, or missing/invalid client token. 404 The customer or the product could not be found within our system. 409 This customer already has an active subscription. REQUEST SAMPLES * Payload Content type application/json Copy { * "orderId": "GPA.5348-0076-1021-86015", * "packageName": "com.dotstudioz.helloworld", * "productId": "abc123", * "purchaseTime": 1624481193482, * "purchaseState": 0, * "purchaseToken": "afdaeafafdafdafdad", * "autoRenewing": true, * "acknowledged": true } RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "data_received": { * "email": "someuser@coolsite.com", * "message": "User subscription created!" } } ATTACH ROKU CUSTOMER DATA TO A USER (ROKU) post/subscriptions/roku/customer/save https://api.myspotlight.tv/subscriptions/roku/customer/save Attach Roku customer data to a user so we have name/address/etc AUTHORIZATIONS: api_key REQUEST BODY SCHEMA: APPLICATION/JSON REQUIRED email_address string firstname string lastname string city string street1 string state string zip string country string RESPONSES 200 Successful operation 400 The format of the values sent over is incorrect. 403 Missing or invalid API access token, or missing/invalid client token. 404 The customer could not be found within our system. REQUEST SAMPLES * Payload Content type application/json Copy { * "email_address": "someuser@coolsite.com", * "firstname": "John", * "lastname": "Smith", * "city": "Sacramento", * "street1": "123 Anywhere Street", * "state": "CA", * "zip": "90001", * "country": "US" } RESPONSE SAMPLES * 200 Content type application/json Copy { * "success": true, * "data": "User updated." } ASSOCIATE A ROKU TRANSACTION ID WITH A USER (ROKU) post/subscriptions/roku/customer/associate https://api.myspotlight.tv/subscriptions/roku/customer/associate Associate a Roku transaction id with a user so that we can evaluate any receipts we get for this transaction AUTHORIZATIONS: api_key REQUEST BODY SCHEMA: APPLICATION/JSON REQUIRED email_address string transaction_id string RESPONSES 200 Successful operation 400 The format of the values sent over is incorrect. 403 Missing or invalid API access token, or missing/invalid client token. 404 The customer or the product could not be found within our system. 409 This customer already has an active subscription. REQUEST SAMPLES * Payload Content type application/json Copy { * "email_address": "cooldude@somesite.com", * "transaction_id": "aodufaojfd9iafdh78a" } RESPONSE SAMPLES * 200 Content type application/json Copy { * "email_address": "cooldude@somesite.com", * "data": "Customer associated with Roku txid" } CREATE A ROKU SUBSCRIPTION (ROKU) postsubscriptions/roku/customer/parse https://api.myspotlight.tvsubscriptions/roku/customer/parse Create a Roku subscription using receipt data. Please note that the return value for this will match the responseKey value due to this route being used by the Roku webhook service as well. AUTHORIZATIONS: api_key REQUEST BODY SCHEMA: APPLICATION/JSON REQUIRED customerId string transactionType string transactionId string channelId string productCode string price number tax number total number currency string comments string eventDate string responseKey string expirationDate string RESPONSES 200 Successful operation 400 The format of the values sent over is incorrect. 403 Missing or invalid API access token, or missing/invalid client token. 404 The customer or the product could not be found within our system. REQUEST SAMPLES * Payload Content type application/json Copy { * "customerId": "adfaeae498ad49a1d6", * "transactionType": "Sale", * "transactionId": "adfae89eaw91ae498ad49a1d6", * "channelId": "58948", * "productCode": "monthly_plan", * "price": 0.99, * "tax": 0.99, * "total": 0.99, * "currency": "usd", * "comments": "New order processed.", * "eventDate": "2014-02-17T22:45:37.496125Z", * "responseKey": "adfouapifjaioai478syf8", * "expirationDate": "2014-02-17T22:45:37.496125Z" } RESPONSE SAMPLES * 200 Content type application/json Copy "adfouapifjaioai478syf8" UPDATE PAYMENT PROFILE. put/subscriptions/payment/update https://api.myspotlight.tv/subscriptions/payment/update Update a payment profile for a customer (ie associate a new credit card with their account). A successful return of this route indicates the customer's old payment method was deleted. AUTHORIZATIONS: api_key REQUEST BODY SCHEMA: APPLICATION/JSON REQUIRED A Chargify.js token, or card info to create a payment profile. If a Chargify.js token is passed, the credit card fields are unnecessary. Without the Chargify.js token, all credit card fields are required. chargify_token string Customer's Chargify token from the Chargify.js form submission. first_name string Customer's first name. last_name string Customer's last name. card_number string Credit card number. exp_month string Credit card expiry month. exp_year string Credit card expiry year. cvv string Credit card CVV value. billing_address string Billing address 1. billing_address_2 string Billing address 2. billing_city string Billing city. billing_state string Billing state. billing_zip string Billing ZIP code. billing_country string ISO Alpha2 formatted two letter country code. RESPONSES 200 Successful operation 400 Invalid parameters passed. 401 Unauthorized client token. 403 Missing or invalid API access token. 407 Route requires HTTPS protocol. REQUEST SAMPLES * Payload Content type application/json Copy { * "chargify_token": "tok_smcb6h2rthmf7sdprr7z67pm", * "first_name": "John", * "last_name": "Doe", * "card_number": "4111111111111111", * "exp_month": "10", * "exp_year": "2020", * "cvv": 123, * "billing_address": "1111 A Street", * "billing_address_2": "Unit 101", * "billing_city": "Vancouver", * "billing_state": "BC", * "billing_zip": "V6A0A1", * "billing_country": "CA" } RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "subscriptions": { * "payment_profile": { * "site_gateway_setting_id": 22901, * "customer_id": 50773431, * "id": 33982672, * "first_name": "Test", * "last_name": "User", * "masked_card_number": "XXXX-XXXX-XXXX-1111", * "card_type": "visa", * "expiration_month": 12, * "expiration_year": 2030, * "current_vault": "braintree_blue", * "vault_token": "16390813854025612", * "billing_address": "1234 Anywhere St", * "billing_city": "Anywhere", * "billing_state": "CA", * "billing_zip": "90210", * "billing_country": "US", * "customer_vault_token": null, * "billing_address_2": null, * "payment_type": "credit_card", * "disabled": false, * "gateway_handle": null } } } VERIFY SUBSCRIPTION ENTITLEMENT FOR ONE OR MORE USERS. post/subscriptions/support/entitlement https://api.myspotlight.tv/subscriptions/support/entitlement Verify the subscription entitlement for one or more users based on validating their subscription against the store receipt we have for their subscription. The response example contains results for each platform we currently support. AUTHORIZATIONS: api_key REQUEST BODY SCHEMA: APPLICATION/JSON REQUIRED Array string RESPONSES 200 Successful operation 400 Invalid parameters passed. 403 Missing or invalid API access token. REQUEST SAMPLES * Payload Content type application/json Copy Expand all Collapse all { * "emails": [ * "some_user_1@provider.net", * "some_user_2@provider.net" ] } RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "results": [ * [ * { * "customer": { * "first_name": "John", * "last_name": "Doe", * "email": "some_customer@provider.net" }, * "subscription": { * "details": { * "customer_id": 786899376, * "product_id": 786899376, * "state": "canceled", * "created_at": "2023-02-28T04:51:50-05:00", * "canceled_at": "2023-02-28T05:05:29-05:00", * "cancel_at_end_of_period": false, * "delayed_cancel_at": null }, * "dotstudiopro": { * "platform": "android", * "chargify_product_id": 786899376, * "chargify_customer_id": 786899376 } }, * "receipt": { * "startTimeMillis": "1670250015113", * "expiryTimeMillis": "1676207981068", * "autoRenewing": false, * "priceCurrencyCode": "GBP", * "priceAmountMicros": "7000000", * "countryCode": "GB", * "developerPayload": "", * "cancelReason": 0, * "userCancellationTimeMillis": "1676207978495", * "orderId": "GPA.1111-2222-3333-44444..0", * "cancelSurveyResult": { * "cancelSurveyReason": 1 }, * "acknowledgementState": 1, * "kind": "androidpublisher#subscriptionPurchase", * "productId": "some_product", * "purchaseToken": "google play purchase token" }, * "entitled": false }, * { * "customer": { * "email": "some_customer_2@provider.net" }, * "subscription": { * "details": { * "customer_id": 681506817, * "product_id": 681506817, * "state": "active", * "created_at": "2023-02-27T21:20:41-05:00", * "canceled_at": null, * "cancel_at_end_of_period": false, * "delayed_cancel_at": null }, * "dotstudiopro": { * "platform": "apple", * "chargify_product_id": 681506817, * "chargify_customer_id": 681506817 } }, * "receipt": { * "receipt": { * "original_purchase_date_pst": "2020-08-18 22:46:48 America/Los_Angeles", * "quantity": "1", * "unique_vendor_identifier": "AFDFDSFDS-F073-4793-A626-DADFSDFEREFD", * "bvrs": "1111.11", * "expires_date_formatted": "2020-12-19 06:46:48 Etc/GMT", * "is_in_intro_offer_period": "false", * "purchase_date_ms": "1605768408000", * "expires_date_formatted_pst": "2020-12-18 22:46:48 America/Los_Angeles", * "is_trial_period": "false", * "item_id": "681506817", * "unique_identifier": "681506817", * "original_transaction_id": "681506817", * "subscription_group_identifier": "681506817", * "app_item_id": "681506817", * "transaction_id": "681506817", * "web_order_line_item_id": "681506817", * "version_external_identifier": "681506817", * "purchase_date": "2020-11-19 06:46:48 Etc/GMT", * "product_id": "some_product", * "expires_date": "1608360408000", * "original_purchase_date": "2020-08-19 05:46:48 Etc/GMT", * "purchase_date_pst": "2020-11-18 22:46:48 America/Los_Angeles", * "bid": "com.someapp.mobileapp", * "original_purchase_date_ms": "1597816008000" }, * "auto_renew_product_id": "some_product", * "auto_renew_status": 1, * "latest_receipt_info": { * "original_purchase_date_pst": "2020-08-18 22:46:48 America/Los_Angeles", * "quantity": "1", * "unique_vendor_identifier": "DFSDFEFFE-2C23-4E9F-9DFD-DADFDDSFDS", * "bvrs": "1", * "expires_date_formatted": "2023-03-28 01:20:35 Etc/GMT", * "is_in_intro_offer_period": "false", * "purchase_date_ms": "1677550835000", * "expires_date_formatted_pst": "2023-03-27 18:20:35 America/Los_Angeles", * "is_trial_period": "false", * "item_id": "681506817", * "unique_identifier": "00008030-681506817", * "original_transaction_id": "681506817", * "subscription_group_identifier": "681506817", * "app_item_id": "681506817", * "transaction_id": "681506817", * "in_app_ownership_type": "PURCHASED", * "web_order_line_item_id": "681506817", * "version_external_identifier": "681506817", * "purchase_date": "2023-02-28 02:20:35 Etc/GMT", * "product_id": "some_product", * "expires_date": "1679966435000", * "original_purchase_date": "2020-08-19 05:46:48 Etc/GMT", * "purchase_date_pst": "2023-02-27 18:20:35 America/Los_Angeles", * "bid": "com.someapp.mobileapp", * "original_purchase_date_ms": "1597816008000" }, * "latest_receipt": "apple receipt string", * "status": 0 }, * "entitled": true }, * { * "customer": { * "email": "some_customer_2@provider.net" }, * "subscription": { * "details": { * "customer_id": 681506817, * "product_id": 681506817, * "state": "active", * "created_at": "2023-02-27T21:20:41-05:00", * "canceled_at": null, * "cancel_at_end_of_period": false, * "delayed_cancel_at": null }, * "dotstudiopro": { * "platform": "apple", * "chargify_product_id": 681506817, * "chargify_customer_id": 681506817 } }, * "receipt": { * "environment": "Production", * "receipt": { * "receipt_type": "Production", * "adam_id": 822994382, * "app_item_id": 822994382, * "bundle_id": "com.someapp.mobileapp", * "application_version": "2", * "download_id": null, * "version_external_identifier": 822994382, * "receipt_creation_date": "2022-10-30 04:53:51 Etc/GMT", * "receipt_creation_date_ms": "1667105631000", * "receipt_creation_date_pst": "2022-10-29 21:53:51 America/Los_Angeles", * "request_date": "2023-02-28 19:33:18 Etc/GMT", * "request_date_ms": "1677612798399", * "request_date_pst": "2023-02-28 11:33:18 America/Los_Angeles", * "original_purchase_date": "2023-02-28 19:33:18 Etc/GMT", * "original_purchase_date_ms": "1677612798365", * "original_purchase_date_pst": "2023-02-28 11:33:18 America/Los_Angeles", * "original_application_version": "1", * "in_app": [ * { * "quantity": "1", * "product_id": "some_product_id", * "transaction_id": "822994382", * "original_transaction_id": "822994382", * "purchase_date": "2017-12-06 08:23:03 Etc/GMT", * "purchase_date_ms": "1512548583000", * "purchase_date_pst": "2017-12-06 00:23:03 America/Los_Angeles", * "original_purchase_date": "2017-10-27 21:37:55 Etc/GMT", * "original_purchase_date_ms": "1509140275000", * "original_purchase_date_pst": "2017-10-27 14:37:55 America/Los_Angeles", * "expires_date": "2018-01-06 08:23:03 Etc/GMT", * "expires_date_ms": "1515226983000", * "expires_date_pst": "2018-01-06 00:23:03 America/Los_Angeles", * "web_order_line_item_id": "822994382", * "is_trial_period": "false", * "is_in_intro_offer_period": "false", * "in_app_ownership_type": "PURCHASED" }, * { * "quantity": "1", * "product_id": "some_product_id", * "transaction_id": "822994382", * "original_transaction_id": "822994382", * "purchase_date": "2017-10-27 21:37:55 Etc/GMT", * "purchase_date_ms": "1509140275000", * "purchase_date_pst": "2017-10-27 14:37:55 America/Los_Angeles", * "original_purchase_date": "2017-10-27 21:37:55 Etc/GMT", * "original_purchase_date_ms": "1509140275000", * "original_purchase_date_pst": "2017-10-27 14:37:55 America/Los_Angeles", * "expires_date": "2017-11-27 22:37:55 Etc/GMT", * "expires_date_ms": "1511822275000", * "expires_date_pst": "2017-11-27 14:37:55 America/Los_Angeles", * "web_order_line_item_id": "822994382", * "is_trial_period": "true", * "is_in_intro_offer_period": "false", * "in_app_ownership_type": "PURCHASED" } ] }, * "latest_receipt_info": [ ], * "latest_receipt": "apple receipt string", * "pending_renewal_info": [ * { * "auto_renew_product_id": "some_product_id", * "product_id": "some_product_id", * "original_transaction_id": "822994382", * "auto_renew_status": "1" } ], * "status": 0 }, * "entitled": true }, * { * "customer": { * "first_name": "Some", * "last_name": "Guy", * "email": "some_customer_3@provider.net" }, * "subscription": { * "details": { * "customer_id": 452452543, * "product_id": 452452543, * "state": "active", * "created_at": "2023-02-26T15:18:48-05:00", * "canceled_at": null, * "cancel_at_end_of_period": false, * "delayed_cancel_at": null }, * "dotstudiopro": { * "platform": "roku", * "chargify_product_id": 452452543, * "chargify_customer_id": 452452543 } }, * "receipt": { * "errorCode": null, * "errorDetails": null, * "errorMessage": "", * "status": 0, * "transactionId": "adfadfae-bffasdfaffe6t12-11dasfadfd-424354fad-adsfa4eer", * "rokuCustomerId": "asdfafewr5w452452543", * "purchaseDate": "/Date(1677442719021+0000)/", * "channelId": 452452543, * "channelName": "Some App Channel", * "productName": "Recurring Monthly", * "productId": "some_roku_product_id", * "amount": 7, * "tax": 0.48, * "total": 7.47, * "quantity": 1, * "expirationDate": "/Date(1679861919021+0000)/", * "originalPurchaseDate": "/Date(1677442719021+0000)/", * "partnerReferenceId": "", * "couponCode": null, * "cancelled": true, * "purchaseType": null, * "purchaseChannel": "DEVICE", * "purchaseContext": "IAP", * "cancelledTransactionIds": null, * "purchaseStatus": "Active", * "currency": "usd", * "OriginalTransactionId": "adfadfae-bffasdfaffe6t12-11dasfadfd-424354fad-adsfa4eer", * "isEntitled": true }, * "entitled": true }, * { * "customer": { * "email": "some_customer_4@provider.net" }, * "subscription": { * "details": { * "customer_id": 78978245254, * "product_id": 78978245254, * "state": "canceled", * "created_at": "2023-02-28T13:57:53-05:00", * "canceled_at": "2023-02-28T14:10:19-05:00", * "cancel_at_end_of_period": false, * "delayed_cancel_at": null }, * "dotstudiopro": { * "platform": "amazon_fire", * "chargify_product_id": 78978245254, * "chargify_customer_id": 78978245254 } }, * "receipt": { * "autoRenewing": false, * "betaProduct": false, * "cancelDate": 1677346340000, * "cancelReason": 1, * "deferredDate": null, * "deferredSku": null, * "freeTrialEndDate": null, * "fulfillmentDate": null, * "fulfillmentResult": null, * "gracePeriodEndDate": null, * "parentProductId": null, * "productId": "some_product_id", * "productType": "SUBSCRIPTION", * "promotions": null, * "purchaseDate": 1660843940000, * "purchaseMetadataMap": null, * "quantity": null, * "receiptId": "some receipt id string", * "renewalDate": null, * "term": "1 Month", * "termSku": "SOME_SKU", * "testTransaction": false }, * "entitled": false }, * { * "customer": { * "first_name": "John", * "last_name": "Doe", * "email": "some_customer_5@provider.net" }, * "subscription": { * "details": { * "customer_id": 4845675776, * "product_id": 4845675776, * "state": "canceled", * "created_at": "2023-02-28T14:16:12-05:00", * "canceled_at": "2023-02-28T14:40:26-05:00", * "cancel_at_end_of_period": false, * "delayed_cancel_at": null }, * "dotstudiopro": { * "platform": "web", * "chargify_product_id": 4845675776, * "chargify_customer_id": 4845675776 } } } ] ] } TOKEN OBTAIN API ACCESS TOKEN. post/token https://api.myspotlight.tv/token Obtain an access token for use with the API. The access token is a standard JSON Web Token (JWT). You may decode this token in your code, or by using a service like https://jwt.io/, to see when it expires. Tokens issued by the Spotlight API are valid for 30 days. After the date in expires you will need to obtain a new token. REQUEST BODY SCHEMA: APPLICATION/JSON REQUIRED Your API key string (APIKey) RESPONSES 200 Success 403 Missing or invalid API key. REQUEST SAMPLES * Payload Content type application/json Copy { * "key": "<your_api_key>" } RESPONSE SAMPLES * 200 Content type application/json Copy { * "success": true, * "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" } USER Create and manage customer data, customer tokens, and payments. Please note all calls in this category require a client token as described in the Authentication section of this documentation. GET A CLIENT TOKEN. DEPRECATED post/users/login https://api.myspotlight.tv/users/login Creates a token that can be used to validate users and be pased for subsequent calls to /users/* The life span of these client tokens is significantly reduced as compared to a company identifying token. The life span is set to be 3 hours. It is recommended to have a system in place that checks for a tokens expiry and make a call for a refreshed client token. The token is a standard JWT token. The decoded information in this token contains: { "iss": "<COMPANY_THAT_ISSUED_THE_CLIENT_TOKEN>", "expires": "<EXPIRY_DATE_IN_MILLISECONDS_SINCE_UNIX_EPOCH>", "context": { "avatar": "<PATH TO AVATAR>", "id": "<USER_ID>", "first_name": "<FIRST_NAME>", "last_name": "<LAST_NAME>" } } AUTHORIZATIONS: api_key REQUEST BODY SCHEMA: APPLICATION/JSON REQUIRED User's login info email string User email. password string User password. RESPONSES 200 Successful operation. 403 The credentials provided were not valid. REQUEST SAMPLES * Payload Content type application/json Copy { * "email": "my.email@provider.com", * "password": "s3cret" } RESPONSE SAMPLES * 200 Content type application/json Copy { * "success": true, * "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" } GET USER DETAILS. get/users/details https://api.myspotlight.tv/users/details Returns a user's details. Please note that the return may differ based on what method the user registered with. If they registered through dotstudioPRO (native login) the return object will contain similar data to the sample return. If they registered through a social media provider (Facebook/Google+) the return object will contain an additional sub-object cointaining the user info provided through that social media's Auth service. AUTHORIZATIONS: api_key RESPONSES 200 Successful operation. 403 The credentials provided were not valid. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "data": { * "_id": null, * "avatar": "https://images.dotstudiopro.com/default_avatar/70/70/1", * "email": "my.email@provider.com", * "first_name": "John", * "last_name": "Doe", * "register": "dotstudiopro" } } REMOVE A USER FROM THE SYSTEM delete/users/account/purge https://api.myspotlight.tv/users/account/purge Calling this route will set a user's account to be purged from dotstudioPRO's system. This means their auth and subscription data will be completely deleted automatically after 30 days. Once their data is deleted, it will be as if they never had an account. AUTHORIZATIONS: api_key RESPONSES 200 Successful operation. 400 The user cannot be set to delete due to an active subscription plan. 403 The credentials provided were not valid. 404 The user does not exist. 409 This user is already set to be deleted. RESPONSE SAMPLES * 200 * 409 Content type application/json Copy { * "success": true, * "account_deletion_ts": 1651943341658 } GET THE ACCOUNT DELETION DATE FOR A USER get/users/account/purge https://api.myspotlight.tv/users/account/purge Get the account deletion date for a user if they have requested their account be deleted. AUTHORIZATIONS: api_key RESPONSES 200 Successful operation. 403 The credentials provided were not valid. 404 The user account does not exist. 412 The account you're querying has not requested to be deleted. RESPONSE SAMPLES * 200 Content type application/json Copy { * "success": true, * "account_deletion_ts": 1651943341658 } REFRESH CLIENT TOKEN. post/users/token/refresh https://api.myspotlight.tv/users/token/refresh Returns a fresh client token. AUTHORIZATIONS: api_key RESPONSES 200 Successful operation. 403 Insufficient or invalid credentials provided. RESPONSE SAMPLES * 200 Content type application/json Copy { * "success": true, * "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" } GET PAYMENT TOKEN. post/users/payment/token https://api.myspotlight.tv/users/payment/token Returns a Braintree token which can be used to generate an order with dotstudioPRO. AUTHORIZATIONS: api_key RESPONSES 200 Successful operation. 403 Insufficient or invalid credentials provided. RESPONSE SAMPLES * 200 Content type application/json Copy { * "success": true, * "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" } GET ALL "RECENTLY WATCHED" DATA. get/users/resumption/videos https://api.myspotlight.tv/users/resumption/videos Returns two arrays containing video objects with resumption data. Videos viewed by the user to at least 5% completion and up to 95% completion will be returned in the array with the key continue-watching. The minimum and maximum values can be changed via the ct_min and ct_max query params. Videos viewed by the user past 95% completion will be returned in the array with the key watch-again. This can be changed via the wa_min query param. This data may be used to construct special rails for logged in users that track their viewing progress. AUTHORIZATIONS: api_key QUERY PARAMETERS limit string Default: 100 The limit of resumptions for each returned array. If you set a limit of 50, the continue-watching and watch-again arrays will have a maximum of 50 resumptions each. ct_min string Default: 0.05 The minimum progress percentage (in decimal format) that will be used to get continue-watching values. ct_max string Default: 0.95 The limit of progress percentage (in decimal format) that will be used to get continue-watching values. wa_min string Default: 0.95 The minimum progress percentage (in decimal format) that will be used to get watch-again values. most_recent number Default: 0 Get only the most recent values from a given channel or parent channel. Without this flag, if you watch 3 episodes of a show, that is 3 different resumption points and will be returned as 3 different resumption points. With this flag, you would only receive one resumption point for the show, which will be the latest episode was watched. RESPONSES 200 Successful operation. 403 The credentials provided were not valid. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "data": { * "continue-watching": [ * { * "_id": "5e41f4756b4c5d439f3ebca2", * "company_id": "5e41f4756b4c5d439f3ebca2", * "user_id": "5f21ab918f4a8e0fbc29ac86", * "title": "This Weeks Episode", * "thumb": "5e42d4e6b70e4f7f038b4862", * "duration": 5419, * "point": 645, * "episode": 1, * "updatedAt": "2020-07-29T21:05:10.488Z", * "channel": { * "_id": "5e42d4e6b70e4f7f038b4861", * "programming_type": "series", * "season": 1, * "slug": "some-cool-channel", * "title": "Some Cool Channel", * "poster": "https://someimage.com/img", * "spotlight_poster": "https://someimage.com/img" }, * "parent_channel": { * "_id": "5e42d4e6b70e4f7f038b4861", * "title": "Some Cool Parent Channel", * "slug": "some-cool-parent-channel", * "programming_type": "series", * "poster": "https://someimage.com/img", * "spotlight_poster": "https://someimage.com/img" } } ], * "watch-again": [ * { * "_id": "5e41f4756b4c5d439f3ebca2", * "company_id": "5e41f4756b4c5d439f3ebca2", * "user_id": "5f21ab918f4a8e0fbc29ac86", * "title": "This Weeks Episode", * "thumb": "5e42d4e6b70e4f7f038b4862", * "duration": 5419, * "point": 645, * "episode": 1, * "updatedAt": "2020-07-29T21:05:10.488Z", * "channel": { * "_id": "5e42d4e6b70e4f7f038b4861", * "programming_type": "series", * "season": 1, * "slug": "some-cool-channel", * "title": "Some Cool Channel", * "poster": "https://someimage.com/img", * "spotlight_poster": "https://someimage.com/img" }, * "parent_channel": { * "_id": "5e42d4e6b70e4f7f038b4861", * "title": "Some Cool Parent Channel", * "slug": "some-cool-parent-channel", * "programming_type": "series", * "poster": "https://someimage.com/img", * "spotlight_poster": "https://someimage.com/img" } } ] } } GET "RECENTLY WATCHED" DATA FOR A VIDEO. get/users/videos/point/{video_id} https://api.myspotlight.tv/users/videos/point/{video_id} Returns the value in seconds at which the user last stopped playback of this video. If the user has no data for this Video ID the value of point in the return will be null AUTHORIZATIONS: api_key PATH PARAMETERS video_id required string The ID of the video you wish to receive "recently watched" data for. RESPONSES 200 Successful operation. 403 The credentials provided were not valid. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "data": { * "point": 60, * "video_id": "59f371db9fcf707c2f967c9c" } } CREATE POINT DATA. post/users/videos/point/{video_id}/{point} https://api.myspotlight.tv/users/videos/point/{video_id}/{point} Save user's watch progress to dotstudioPRO so it can be recovered later with the /users/resumption/videos endpoint. In order to ensure a user can be redirected to the appropriate channel later on (via deep linking or selecting a "continue watching" entry in an application) it is recommended to pass information about the channel when using this endpoint. In the case of a standalone player embed the optional query string parameters can be omitted. AUTHORIZATIONS: api_key PATH PARAMETERS video_id required string The ID of the video you wish to save "recently watched" data for. point required number Time (in seconds) the user has watched the video to. QUERY PARAMETERS channel_id string The ID of the channel this video is being viewed from parent_channel_id string The ID of the parent channel the video is being viewed from (if applicable) RESPONSES 200 Successful operation. 403 The credentials provided were not valid. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "data": { * "point": 60, * "user_id": "6001fc981c4fb75112aaceaa", * "video_id": "5f917e95bd3247663c72a762", * "company_id": "53fd1266d66da833047b23c6", * "createdAt": "2021-01-15T20:35:52.466Z", * "updatedAt": "2021-01-15T20:37:19.610Z", * "progress": 0.62 } } VIDEO Retrieve video data from dotstudioPRO GET A VIDEO BY ID. get/video/play/{video_id}/{width}/{height} https://api.myspotlight.tv/video/play/{video_id}/{width}/{height} Returns a video content object & playback URLs for a particular Video ID. Note: the parameters passed to the VMAP route by mobile apps (like app_bundle) should be passed to this route as well to support SSAI video playback. AUTHORIZATIONS: api_key PATH PARAMETERS video_id required string ID of the video you wish to retrieve. width required number Width of the player the video will be getting displayed in. Required to aid in advertising & targeting. height required number Height of the player the video will be getting displayed in. Required to aid in advertising & targeting. QUERY PARAMETERS embedded_captions boolean Request an HLS playback URL with embedded VTT captions. with_chromecast boolean Send back a Chromecast VMAP url with the response. Used for mobile devices that can cast to a TV so a VMAP url can be passed to the Chromecast device. RESPONSES 200 Successful operation 400 The Video ID provided is not valid. 403 Missing or invalid API access token. 404 Video not found. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "_id": "5452484e97f8154f0c092f3ec", * "ads": { * "pre": "yes", * "mid": "yes", * "post": "no", * "over": "no", * "pre_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "post_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "offsets": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] } }, * "ad_tag": { * "pre": "https://adserver.com/custom_ad_tag?param=true", * "mid": "string", * "post": "string", * "customTagPre": true, * "customTagMid": false, * "customTagPost": false }, * "access": "public", * "actors": [ * "Actor A", * "Actor B" ], * "category": "Web-series", * "chromecast_vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080?device_type=chromecast", * "company": { * "_id": "59c724ef98e82b310e85fd4c", * "name": "coolmovies", * "cast_custom_cdn": "https://111111.ssl.hwcdn.net", * "custom_cdn": "https://222222.ssl.hwcdn.net", * "media_tailor_cdn": "https://333333.ssl.hwcdn.net" }, * "company_id": "5452484e97f8154f0c092f3ec", * "country": "Canada", * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "description": "A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel,\nwho are determined to squelch his happiness.\n", * "directors": [ * "Director A", * "Director B" ], * "duration": 1072, * "episode": 1, * "geoblock": "ALL", * "genres": [ * "2000s animation" ], * "geocheck": true, * "is_teaser": false, * "language": "English", * "paths": { }, * "paywall": { }, * "poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "product_id": 11470, * "rating": "PG", * "roku_bif_files": { * "sd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-sd.bif", * "hd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-hd.bif", * "fhd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-fhd.bif" }, * "season": 1, * "seriestitle": "Open Source Films", * "server_side_ads": true, * "slug": "big-buck-bunny", * "socialImage": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "status": "Uploaded", * "thumb": "https://images.dotstudiopro.com/59a5a4f899f815d6403c31dd", * "thumbs": [ * "5ed871383d9aea7cf65b2184", * "5ed7f8c22f40d94404789de7", * "5ed7f8c12f40d94404789de6" ], * "title": "Big Buck Bunny", * "video_m3u8": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8", * "vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } GET A VIDEO BY SLUG. get/video/playbyslug/{video_slug}/{width}/{height} https://api.myspotlight.tv/video/playbyslug/{video_slug}/{width}/{height} Returns a video content object & playback URLs for a particular Video ID. Note: the parameters passed to the VMAP route by mobile apps (like app_bundle) should be passed to this route as well to support SSAI video playback. AUTHORIZATIONS: api_key PATH PARAMETERS video_slug required string Slug of the video you wish to retrieve. width required number Width of the player the video will be getting displayed in. Required to aid in advertising & targeting. height required number Height of the player the video will be getting displayed in. Required to aid in advertising & targeting. QUERY PARAMETERS embedded_captions boolean Request an HLS playback URL with embedded VTT captions. with_chromecast boolean Send back a Chromecast VMAP url with the response. Used for mobile devices that can cast to a TV so a VMAP url can be passed to the Chromecast device. RESPONSES 200 Successful operation 400 The Video ID provided is not valid. 403 Missing or invalid API access token. 404 Video not found. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "_id": "5452484e97f8154f0c092f3ec", * "ads": { * "pre": "yes", * "mid": "yes", * "post": "no", * "over": "no", * "pre_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "post_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "offsets": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] } }, * "ad_tag": { * "pre": "https://adserver.com/custom_ad_tag?param=true", * "mid": "string", * "post": "string", * "customTagPre": true, * "customTagMid": false, * "customTagPost": false }, * "access": "public", * "actors": [ * "Actor A", * "Actor B" ], * "category": "Web-series", * "chromecast_vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080?device_type=chromecast", * "company": { * "_id": "59c724ef98e82b310e85fd4c", * "name": "coolmovies", * "cast_custom_cdn": "https://111111.ssl.hwcdn.net", * "custom_cdn": "https://222222.ssl.hwcdn.net", * "media_tailor_cdn": "https://333333.ssl.hwcdn.net" }, * "company_id": "5452484e97f8154f0c092f3ec", * "country": "Canada", * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "description": "A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel,\nwho are determined to squelch his happiness.\n", * "directors": [ * "Director A", * "Director B" ], * "duration": 1072, * "episode": 1, * "geoblock": "ALL", * "genres": [ * "2000s animation" ], * "geocheck": true, * "is_teaser": false, * "language": "English", * "paths": { }, * "paywall": { }, * "poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "product_id": 11470, * "rating": "PG", * "roku_bif_files": { * "sd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-sd.bif", * "hd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-hd.bif", * "fhd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-fhd.bif" }, * "season": 1, * "seriestitle": "Open Source Films", * "server_side_ads": true, * "slug": "big-buck-bunny", * "socialImage": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "status": "Uploaded", * "thumb": "https://images.dotstudiopro.com/59a5a4f899f815d6403c31dd", * "thumbs": [ * "5ed871383d9aea7cf65b2184", * "5ed7f8c22f40d94404789de7", * "5ed7f8c12f40d94404789de6" ], * "title": "Big Buck Bunny", * "video_m3u8": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8", * "vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } GET A RANDOM VIDEO. DEPRECATED get/video/random/{days}/{mrss} https://api.myspotlight.tv/video/random/{days}/{mrss} Returns a random video uploaded in the last <days> days. AUTHORIZATIONS: api_key PATH PARAMETERS days required string A random video uploaded in the last <days> days will be returned. mrss required string Enum: 0 1 If this parameter is set to 1 the call will an MRSS feed instead of a JSON Object. RESPONSES 200 Successful operation 403 Missing or invalid API access token. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "_id": "5452484e97f8154f0c092f3ec", * "ads": { * "pre": "yes", * "mid": "yes", * "post": "no", * "over": "no", * "pre_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "post_offset": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] }, * "offsets": { * "nonlinear": [ * 0.001 ], * "linear": [ * 0.001 ] } }, * "ad_tag": { * "pre": "https://adserver.com/custom_ad_tag?param=true", * "mid": "string", * "post": "string", * "customTagPre": true, * "customTagMid": false, * "customTagPost": false }, * "access": "public", * "actors": [ * "Actor A", * "Actor B" ], * "category": "Web-series", * "chromecast_vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080?device_type=chromecast", * "company": { * "_id": "59c724ef98e82b310e85fd4c", * "name": "coolmovies", * "cast_custom_cdn": "https://111111.ssl.hwcdn.net", * "custom_cdn": "https://222222.ssl.hwcdn.net", * "media_tailor_cdn": "https://333333.ssl.hwcdn.net" }, * "company_id": "5452484e97f8154f0c092f3ec", * "country": "Canada", * "custom_fields": [ * { * "field_title": "custom_field_1", * "field_value": "custom_value_1" }, * { * "field_title": "custom_field_2", * "field_value": "custom_value_2" } ], * "description": "A large and lovable rabbit deals with three tiny bullies, led by a flying squirrel,\nwho are determined to squelch his happiness.\n", * "directors": [ * "Director A", * "Director B" ], * "duration": 1072, * "episode": 1, * "geoblock": "ALL", * "genres": [ * "2000s animation" ], * "geocheck": true, * "is_teaser": false, * "language": "English", * "paths": { }, * "paywall": { }, * "poster": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "product_id": 11470, * "rating": "PG", * "roku_bif_files": { * "sd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-sd.bif", * "hd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-hd.bif", * "fhd": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/bif/5ed7e4b6b32ab5755a17a932-fhd.bif" }, * "season": 1, * "seriestitle": "Open Source Films", * "server_side_ads": true, * "slug": "big-buck-bunny", * "socialImage": "https://images.dotstudiopro.com/5a3aa50d99f815b87996da90", * "status": "Uploaded", * "thumb": "https://images.dotstudiopro.com/59a5a4f899f815d6403c31dd", * "thumbs": [ * "5ed871383d9aea7cf65b2184", * "5ed7f8c22f40d94404789de7", * "5ed7f8c12f40d94404789de6" ], * "title": "Big Buck Bunny", * "video_m3u8": "https://cdn.dotstudiopro.com/videos/5ed7e4b6b32ab5755a17a932/vod/5ed7e4b6b32ab5755a17a932.m3u8", * "vmap": "https://api.myspotlight.tv/vmap/5452484e97f8154f0c092f3ec/1920/1080", * "writers": [ * "Writer A", * "Writer B" ], * "year": 2020 } GET VIDEO MRSS FEED. get/videos/mrss https://api.myspotlight.tv/videos/mrss Returns an MRSS feed containing all of this company's videos. AUTHORIZATIONS: api_key RESPONSES 200 Successful operation 403 Missing or invalid API access token. VMAP GET A VMAP DOCUMENT FOR A VIDEO get/vmap/{video_id}/{width}/{height} https://api.myspotlight.tv/vmap/{video_id}/{width}/{height} Creates a VMAP XML doc based on ad parameters passed, as well as the given video id. Please note that there are many custom macros that can be passed to this route as query string parameters - https://www.dotstudiopro.com/adtags Please note that authentication is not necessary for this route. AUTHORIZATIONS: api_key PATH PARAMETERS video_id required string ID of the video you wish to retrieve. width required number The width of the video player requesting the VMAP height required string The height of the video player requesting the VMAP QUERY PARAMETERS secure boolean If passed, any ad tags returned will have the https:// protocol explicitly specified. Otherwise the RFC 3986 URI identifier generic syntax will be used, which means all ad tags returned will be prepended with //. RESPONSES 200 Successful operation 403 Missing or invalid API access token. WATCHLIST Watchlists are lists that a user adds channels to in order to watch videos from them in the future (or possibly rewatch them). When a user adds a channel to a watchlist, that channel will be returned in the call to get the user's watchlist channels. If a user adds a child channel to a watchlist, it is necessary to add a parent channel as well. If a child channel lives in multiple parent channels, an app or website will not know which parent channel to use when routing users to their watchlist channels, which may lead to unwanted behavior in some apps and sites. GET A USER'S WATCHLIST. get/watchlist/channels https://api.myspotlight.tv/watchlist/channels Get a list of channels that a user has added to their watchlist. AUTHORIZATIONS: api_key QUERY PARAMETERS exclude_live string Example: exclude_live=1 Exclude channels with a programming type of "Live Broadcast" from appearing in the result. exclude_vod string Example: exclude_vod=1 Include only channels that have a programming type of "Live Broadcast" in the result. RESPONSES 200 Successful operation 400 Missing or invalid client token. 401 Unauthorized client token. 403 Missing or invalid API access token. 407 No client token present. RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "channels": [ * { * "_id": "12345678910", * "title": "Cool Series | Season 1", * "description": "Cool SEries description", * "company_id": "01987654321", * "poster": "https://images.dotstudiopro.com/abcdefg", * "spotlight_poster": "https://images.dotstudiopro.com/hijklmno", * "slug": "cool-series-season-1" } ] } ADD TO A USER'S WATCHLIST. post/watchlist/channels/add https://api.myspotlight.tv/watchlist/channels/add Add a channel to a user's watchlist. AUTHORIZATIONS: api_key REQUEST BODY SCHEMA: APPLICATION/JSON To add a channel without a parent channel, pass channel_id OR slug in the body. To add a parent channel as well, pass parent_channel_id OR parent_channel_slug in the body with the child channel_id OR slug. channel_id string The channel id to add to the user's watchlist slug string The channel slug to add to the user's watchlist parent_channel_id string A parent channel_id a user wishes to add to their watchlist parent_channel_slug string A parent channel slug a user wishes to add to their watchlist RESPONSES 200 Successful operation 400 Missing or invalid client token, or missing channel_id/slug. 401 Unauthorized client token. 403 Missing or invalid API access token. 407 No client token present. REQUEST SAMPLES * Payload Content type application/json Copy { * "channel_id": "5ab29fdb6ee98b644a93b649", * "parent_channel_id": "5ab29fdb6ee98b644a93b650" } RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "result": [ * { * "_id": "12345678910", * "customer_id": "01987654321", * "company_id": "01987654321", * "channels": [ * { * "channel_id": "5ab29fdb6ee98b644a93b649", * "parent_channel_id": "5ab29fdb6ee98b644a93b650" } ] } ] } DELETE A CHANNEL FROM A USER'S WATCHLIST. delete/watchlist/channels/delete https://api.myspotlight.tv/watchlist/channels/delete Remove a channel from the user's watchlist array. AUTHORIZATIONS: api_key REQUEST BODY SCHEMA: APPLICATION/JSON The id of the channel the user wishes to remove from their watchlist. channel_id string A channel_id a user wishes to remove from their watchlist RESPONSES 200 Successful operation 400 Missing or invalid client token, or missing channel_id. 401 Unauthorized client token. 403 Missing or invalid API access token. 407 No client token present. REQUEST SAMPLES * Payload Content type application/json Copy { * "channel_id": "5ab29fdb6ee98b644a93b649" } RESPONSE SAMPLES * 200 Content type application/json Copy Expand all Collapse all { * "success": true, * "result": [ * { * "_id": "12345678910", * "customer_id": "01987654321", * "channels": [ * { * "channel_id": "5ab29fdb6ee98b644a93b649", * "parent_channel_id": "5ab29fdb6ee98b644a93b650" } ] } ] } WEBHOOKS The dotstudioPRO CMS is able to notify of any changes to content via Webhooks. The Webhooks can be tested anytime by creating a temporary Webhook listener at https://webhook.site/ and adding the resulting URL to your dashboard. The following Webhooks are available, and can be subscribed to from the dashboard by opening the user menu sidebar and clicking on Settings -> Company -> Webhooks. Add Video * Webhook Trigger: new video is uploaded * HTTP Method: POST * Webhook Body: video object Edit Video * Webhook Trigger: existing video metadata is edited * HTTP Method: PUT * Webhook Body: updated video object Add Channel * Webhook Trigger: new channel is published * HTTP Method: POST * Webhook Body: channel object Edit Channel * Webhook Trigger: published channel metadata is edited * HTTP Method: PUT * Webhook Body: updated channel object Delete Channel * Webhook Trigger: a previously pubished channel is unpublished * HTTP Method: DELETE * Webhook Body: channel ID Add Category * Webhook Trigger: new category is created * HTTP Method: POST * Webhook Body: category object Edit Category * Webhook Trigger: existing category metadata is edited * HTTP Method: PUT * Webhook Body: updated category object DELETE Category - category is deleted * Webhook Trigger: existing category is deleted * HTTP Method: DELETE * Webhook Body: category ID