openapi: 3.0.3 x-bc-implicit-head: true x-bc-implicit-options: true x-bc-upstream: 'https://backend_server' info: title: Brightcove In-Page Experiences API Reference description: |- Reference for the Brightcove In-Page Experiences API, used to access and manage your In-Page Experiences. **Base URL**: https://experiences.api.brightcove.com/v1 version: 1.0.0 x-bc-access: public servers: - url: 'https://experiences.api.brightcove.com/v1' variables: {} tags: - name: Experiences description: Manage your In-Page Experiences. - name: Interactions description: Manage your In-Page Experience interactions. - name: Templates description: Manage templates for In-Page Experiences. - name: Themes description: Manage themes for In-Page Experiences. - name: Fonts description: Manage fonts for In-Page Experiences. paths: '/accounts/{{account_id}}/experiences': parameters: - $ref: '#/components/parameters/AccountId' - $ref: '#/components/parameters/ContentType' get: summary: Get In-Page Experiences description: Gets a list of all experiences in the account operationId: GetExperiences tags: - Experiences parameters: - name: sort in: query description: >- Sort the result by the specified field. A - prefix can be added to reverse the sort order style: form explode: true schema: type: string - name: q in: query description: >- Search string for searching In-Page Experience titles and descriptions style: form explode: true schema: type: string responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/ExperienceList' '401': $ref: '#/components/responses/Unauthorized' deprecated: false security: - BC_OAuth2: - video-cloud/experience/read post: summary: Create In-Page Experience description: Creates an In-Page Experience operationId: CreateExperience tags: - Experiences requestBody: content: application/json: schema: $ref: '#/components/schemas/Experience' responses: '201': description: CREATED content: application/json: schema: $ref: '#/components/schemas/Experience' '400': $ref: '#/components/responses/BadRequestExperience' '401': $ref: '#/components/responses/Unauthorized' security: - BC_OAuth2: - video-cloud/experience/all '/accounts/{{account_id}}/experiences/{experience_id}': parameters: - $ref: '#/components/parameters/AccountId' - $ref: '#/components/parameters/ExperienceId' - $ref: '#/components/parameters/ContentType' get: summary: Get In-Page Experience description: Gets a specific In-Page Experience in the account operationId: GetExperience tags: - Experiences responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/Experience' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundExperience' security: - BC_OAuth2: - video-cloud/experience/read put: summary: Update In-Page Experience description: Updates an In-Page Experience operationId: UpdateExperience tags: - Experiences requestBody: content: application/json: schema: $ref: '#/components/schemas/Experience' responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/Experience' '400': $ref: '#/components/responses/BadRequestExperience' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundExperience' security: - BC_OAuth2: - video-cloud/experience/all delete: summary: Delete In-Page Experience description: Deletes an In-Page Experience operationId: DeleteExperience tags: - Experiences responses: '204': description: SUCCESS '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundExperience' security: - BC_OAuth2: - video-cloud/experience/all '/accounts/{{account_id}}/experiences/{experience_id}/actions/publish': parameters: - $ref: '#/components/parameters/AccountId' - $ref: '#/components/parameters/ExperienceId' - $ref: '#/components/parameters/ContentType' post: summary: Publish In-Page Experience description: >- Publish the specified In-Page Experience. This will initiate a publish, you can poll the GET endpoint for fetching the In-Page Experience to check its published status to see when publishing completes operationId: PublishExperience tags: - Experiences responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/Experience' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundExperience' security: - BC_OAuth2: - video-cloud/experience/all '/accounts/{{account_id}}/experiences/{experience_id}/actions/unpublish': parameters: - $ref: '#/components/parameters/AccountId' - $ref: '#/components/parameters/ExperienceId' - $ref: '#/components/parameters/ContentType' post: summary: Unpublish In-Page Experience description: >- Takes the specified In-Page Experience offline. If this In-Page Experience is embedded anywhere, it will be replaced with text notifying the end user that it is offline. This will initiate an unpublish, you can poll the GET endpoint for fetching the In-Page Experience to check its published status to see when unpublishing completes operationId: UnpublishExperience tags: - Experiences responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/Experience' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundExperience' security: - BC_OAuth2: - video-cloud/experience/all '/accounts/{{account_id}}/experiences/{experience_id}/actions/duplicate': parameters: - $ref: '#/components/parameters/AccountId' - $ref: '#/components/parameters/ExperienceId' - $ref: '#/components/parameters/ContentType' post: summary: Duplicate In-Page Experience description: >- Duplicates the specified In-Page Experience and all of its associated interactivity operationId: DuplicateExperience tags: - Experiences requestBody: content: application/json: schema: title: ExperienceDuplicateParameters type: object properties: name: type: string description: New name for the duplicated In-Page Experience description: type: string description: New description for the duplicated In-Page Experience responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/Experience' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundExperience' security: - BC_OAuth2: - video-cloud/experience/all '/accounts/{{account_id}}/experiences/{experience_id}/live/status': parameters: - $ref: '#/components/parameters/AccountId' - $ref: '#/components/parameters/ExperienceId' - $ref: '#/components/parameters/ContentType' get: summary: Get In-Page Experience Live Status description: Gets the live event status of the specified In-Page Experience operationId: GetExperienceLiveStatus tags: - Experiences responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/ExperienceEventStatus' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundExperience' security: - BC_OAuth2: - video-cloud/experience/read put: summary: Set In-Page Experience Live Status description: Sets the live event status of the specified In-Page Experience operationId: SetExperienceLiveStatus tags: - Experiences requestBody: content: application/json: schema: $ref: '#/components/schemas/ExperienceEventStatus' responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/ExperienceEventStatus' '400': description: 'BAD_REQUEST: Invalid live event status, see response for details' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundExperience' security: - BC_OAuth2: - video-cloud/experience/all '/accounts/{{account_id}}/interactions': parameters: - $ref: '#/components/parameters/AccountId' - $ref: '#/components/parameters/ContentType' get: summary: Get In-Page Experience Interactions description: Retrieves a list of interactions related to the given accountId. operationId: GetInteractions tags: - Interactions responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/InteractionList' '401': $ref: '#/components/responses/Unauthorized' deprecated: false security: - BC_OAuth2: - video-cloud/experience/read post: summary: Create In-Page Experience Interaction description: Creates an In-Page Experience Interaction operationId: CreateInteraction tags: - Interactions requestBody: content: application/json: schema: $ref: '#/components/schemas/Interaction' responses: '201': description: CREATED content: application/json: schema: $ref: '#/components/schemas/Interaction' '400': $ref: '#/components/responses/BadRequestInteraction' '401': $ref: '#/components/responses/Unauthorized' security: - BC_OAuth2: - video-cloud/experience/all '/accounts/{{account_id}}/interactions/{interaction_id}': parameters: - $ref: '#/components/parameters/AccountId' - $ref: '#/components/parameters/InteractionId' - $ref: '#/components/parameters/ContentType' get: summary: Get In-Page Experience Interaction description: Gets a specific In-Page Experience interaction in the account operationId: GetInteraction tags: - Interactions responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/Interaction' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundInteraction' security: - BC_OAuth2: - video-cloud/experience/read put: summary: Update an interaction description: Updates an interaction operationId: UpdateInteraction tags: - Interactions requestBody: content: application/json: schema: $ref: '#/components/schemas/Interaction' responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/Interaction' '400': $ref: '#/components/responses/BadRequestInteraction' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundInteraction' security: - BC_OAuth2: - video-cloud/experience/all delete: summary: Delete an interaction description: Deletes an interaction operationId: DeleteInteraction tags: - Interactions responses: '204': description: SUCCESS '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundInteraction' security: - BC_OAuth2: - video-cloud/experience/all '/accounts/{{account_id}}/templates': parameters: - $ref: '#/components/parameters/AccountId' - $ref: '#/components/parameters/ContentType' get: summary: Get Templates description: Gets all templates available to the account operationId: GetTemplates tags: - Templates parameters: - name: locale in: query description: Locale for translating the template metadata style: form explode: true schema: type: string enum: - en_US - es_ES - fr_FR - ja_JP - ko_KO - zh_HANT responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/TemplateList' '401': $ref: '#/components/responses/Unauthorized' security: - BC_OAuth2: - video-cloud/experience/read '/accounts/{{account_id}}/templates/{template_id}': parameters: - $ref: '#/components/parameters/AccountId' - name: template_id in: path description: Template ID required: true style: simple explode: false schema: type: string - $ref: '#/components/parameters/ContentType' get: summary: Get Template description: Gets the specified template operationId: GetTemplate tags: - Templates parameters: - name: locale in: query description: Locale for translating the template metadata style: form explode: true schema: type: string enum: - en_US - es_ES - fr_FR - ja_JP - ko_KO - zh_HANT - name: version in: query description: Template version style: form explode: true schema: type: string responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/Template' '400': description: >- BAD_REQUEST: The template version must be a semantic version string (i.e. `1.0.0`) '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundTemplate' security: - BC_OAuth2: - video-cloud/experience/read '/accounts/{{account_id}}/themes': parameters: - $ref: '#/components/parameters/AccountId' - $ref: '#/components/parameters/ContentType' get: summary: Get Themes description: Gets all themes for the account operationId: GetThemes tags: - Themes responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/ThemeList' '401': $ref: '#/components/responses/Unauthorized' security: - BC_OAuth2: - video-cloud/experience/read post: summary: Create Theme description: Creates a new theme operationId: CreateTheme tags: - Themes requestBody: content: application/json: schema: $ref: '#/components/schemas/Theme' responses: '201': description: CREATED content: application/json: schema: $ref: '#/components/schemas/Theme' '400': $ref: '#/components/responses/BadRequestTheme' '401': $ref: '#/components/responses/Unauthorized' security: - BC_OAuth2: - video-cloud/experience/all '/accounts/{{account_id}}/themes/{theme_id}': parameters: - $ref: '#/components/parameters/AccountId' - name: theme_id in: path description: Theme ID required: true style: simple explode: false schema: type: string - $ref: '#/components/parameters/ContentType' get: summary: Get Theme description: Gets the specified theme operationId: GetTheme tags: - Themes responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/Theme' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundTheme' security: - BC_OAuth2: - video-cloud/experience/read put: summary: Update Theme description: Updates the specified theme operationId: UpdateTheme tags: - Themes requestBody: content: application/json: schema: $ref: '#/components/schemas/Theme' responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/Theme' '400': $ref: '#/components/responses/BadRequestTheme' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundTheme' security: - BC_OAuth2: - video-cloud/experience/all delete: summary: Delete Theme description: Deletes the specified theme operationId: DeleteTheme tags: - Themes responses: '204': description: SUCCESS '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundTheme' security: - BC_OAuth2: - video-cloud/experience/all '/accounts/{{account_id}}/fonts': parameters: - $ref: '#/components/parameters/AccountId' - $ref: '#/components/parameters/ContentType' get: summary: Get Fonts description: Gets all fonts for the account operationId: GetFonts tags: - Fonts responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/FontList' '401': $ref: '#/components/responses/Unauthorized' security: - BC_OAuth2: - video-cloud/experience/read post: summary: Create Font description: Creates a font operationId: CreateFont tags: - Fonts requestBody: content: application/json: schema: $ref: '#/components/schemas/Font' responses: '201': description: CREATED content: application/json: schema: $ref: '#/components/schemas/Font' '400': $ref: '#/components/responses/BadRequestFont' '401': $ref: '#/components/responses/Unauthorized' security: - BC_OAuth2: - video-cloud/experience/all '/accounts/{{account_id}}/fonts/{font_id}': parameters: - $ref: '#/components/parameters/AccountId' - name: font_id in: path description: Font ID required: true style: simple explode: false schema: type: string - $ref: '#/components/parameters/ContentType' get: summary: Get Font description: Gets the specified font operationId: GetFont tags: - Fonts responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/Font' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundFont' security: - BC_OAuth2: - video-cloud/experience/read put: summary: Update Font description: Updates the specified font operationId: UpdateFont requestBody: content: application/json: schema: $ref: '#/components/schemas/Font' tags: - Fonts responses: '200': description: SUCCESS content: application/json: schema: $ref: '#/components/schemas/Font' '400': $ref: '#/components/responses/BadRequestFont' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundFont' security: - BC_OAuth2: - video-cloud/experience/all delete: summary: Delete Font description: Deletes the specified font operationId: DeleteFont tags: - Fonts responses: '204': description: SUCCESS '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFoundFont' security: - BC_OAuth2: - video-cloud/experience/all components: schemas: ExperienceList: title: ExperienceList description: List of In-Page Experience documents type: object properties: items: type: array items: $ref: '#/components/schemas/Experience' Experience: title: Experience description: In-Page Experience document type: object properties: id: type: string description: ID of the In-Page Experience example: '111111111111' readOnly: true accountId: type: number description: Video Cloud account ID example: 1111111111111 readOnly: true name: type: string description: Name of the In-Page Experience example: Sample In-Page Experience description: type: string description: Description for the In-Page Experience example: A sample In-Page Experience for demonstration purposes inactive: type: boolean description: Whether the In-Page Experience is offline (inactive) example: false height: type: number description: Fixed height of the In-Page Experience (null for responsive height) width: type: number description: Fixed width of the In-Page Experience (null for responsive width) template: type: string description: ID of the template example: ee-single-video templateVersion: type: string description: Version of the template example: 1.0.0 readOnly: true locale: type: string enum: - en_US - es_ES - fr_FR - ja_JP - ko_KO - zh_HK - zh_TW description: The locale of the In-Page Experience videos: $ref: '#/components/schemas/ExperienceVideos' player: $ref: '#/components/schemas/ExperiencePlayer' playbackApiBaseUrl: type: string description: >- Base URL for fetching video information from the [Playback API](https://apis.support.brightcove.com/playback/). For IP restricted accounts this should be set to https://edge-elb.api.brightcove.com/playback/v1, otherwise this should be null policyKey: type: string description: >- Policy key for fetching video information from the [Playback API](https://apis.support.brightcove.com/playback/). youtubeKey: type: string description: >- Auto-generated key for fetching YouTube video information from Gallery. readOnly: true assets: $ref: '#/components/schemas/ExperienceAssets' social: $ref: '#/components/schemas/ExperienceSocial' styles: $ref: '#/components/schemas/Styles' layouts: $ref: '#/components/schemas/ExperienceLayouts' content: $ref: '#/components/schemas/ExperienceContent' analytics: $ref: '#/components/schemas/ExperienceAnalytics' event: $ref: '#/components/schemas/ExperienceEvent' configurations: $ref: '#/components/schemas/ExperienceConfigurations' publishAttemptedAt: type: string description: ISO-8601 date when the last publish was attempted readOnly: true publishedAt: type: string description: ISO-8601 date when the last successful publish happened readOnly: true publishFailedAt: type: string description: ISO-8601 date when the last failed publish happened readOnly: true updatedAt: type: string description: ISO-8601 date when the In-Page Experience was last updated readOnly: true createdAt: type: string description: ISO-8601 date when the In-Page Experience was created readOnly: true publishedUrl: type: string description: >- URL to the published In-Page Experience. `null` if the Experience has never been published readOnly: true previewUrl: type: string description: >- URL for previewing the In-Page Experience. This URL is valid for 24 hours and is re-generated for each request to the API readOnly: true theme: type: string description: >- ID of the theme to use for styling this In-Page Experience. Can also be `light` or `dark` to use the built-in light and dark themes hasChanges: type: boolean description: >- Whether the In-Page Experience has been modified since the last time it was published readOnly: true publishedStatus: type: string enum: - unpublished - success - publishing - unpublishing - inactive - failed description: The current published status of the In-Page Experience readOnly: true required: - name - template ExperienceAssets: title: ExperienceAssets description: Assets used by the In-Page Experience type: object properties: customCss: type: string description: Inline custom CSS customCssUrl: type: string description: External custom CSS URL customJavaScript: type: string description: Inline custom JavaScript customJavaScriptUrl: type: string description: External custom JavaScript URL headerAdCode: type: string description: >- Global advertising code which gets inlined into the `
` of the page fonts: type: array items: $ref: '#/components/schemas/FontBase' description: Fonts which are included in the In-Page Experience ExperienceVideos: title: ExperienceVideos description: >- Properties defining the videos in the In-Page Experience and behavior related to videos type: object properties: type: type: string enum: - manual - playlist description: How videos are defined videoIds: type: array items: type: string description: >- IDs of videos which are included in the In-Page Experience when type is set to manual. For Video Cloud videos this is just the numeric ID. For YouTube videos, a prefix of `youtube:` must be added to the ID. playlistId: type: string description: ID of the playlist to pull videos from when type is set to playlist showRelatedLinks: type: boolean description: Whether related links for videos should be displayed useLongDescriptions: type: boolean description: >- Whether to display the long description of a video (if it exists) while it is being watched allowDownloads: type: string enum: - none - all - custom-field description: >- Criteria for displaying a download link for videos. `none` disables downloads, `all` enables downloads for all videos which have an mp4 source, and `custom-field` will enable downloads for videos which have a matching custom field. YouTube videos cannot be downloaded. downloadCustomField: type: string description: >- Custom field to check whether to display a download link for videos when `allowDownloads` is set to `custom-field` downloadCustomFieldValue: type: string description: >- Custom field value to check whether to display a download link for videos when `allowDownloads` is set to `custom-field` watchedIndicator: type: boolean description: >- Whether to show an indicator that a video has been watched on its thumbnail after it has finished playing ExperiencePlayer: title: ExperiencePlayer description: Properties defining the player and its behavior type: object properties: id: type: string description: ID of the player to use autoAdvance: type: boolean description: >- Whether to automatically advance to the next video when the current one finishes playing autoAdvanceTime: type: number description: >- Number of seconds to wait before advancing to the next video when autoAdvance is true playsInline: type: boolean description: Whether the video plays inline on iOS devices endBehavior: type: string enum: - after - during description: >- Whether the In-Page Experience advances to the After Play state (after), or stays on the Playing state (during) after the current video finishes playing ExperienceSocial: title: ExperienceSocial description: Properties describing social sharing behavior type: object properties: display: type: string enum: - button - icons description: How social sharing should be displayed deepLinkParameter: type: string description: >- Query-string parameter used for deep-linking to a specific video in the In-Page Experience when it is shared sharingOptions: $ref: '#/components/schemas/ExperienceSharingOptions' ExperienceAnalytics: title: ExperienceAnalytics description: Analytics settings type: object properties: googleAnalyticsId: type: string description: Google Analytics project ID for sending events to Google Analytics ExperienceEvent: title: ExperienceEvent description: Live event information (only available for the ee-live-event template) type: object properties: showCountdown: type: boolean description: Whether to show the event countdown showAddToCalendar: type: boolean description: Whether to show the Add to Calendar button startTime: type: string description: Event start time as an ISO-8601 string endTime: type: string description: Event end time as an ISO-8601 string timezone: type: string description: Timezone of the event title: type: string description: Event title used in the calendar event description: type: string description: Event description used in the calendar event location: type: string description: Event location used in the calendar event transitionMessage: type: string description: >- Message to use in the countdown after the time remaining has reached 0 social: $ref: '#/components/schemas/ExperienceEventSocial' ExperienceEventSocial: title: ExperienceEventSocial type: object properties: display: type: string enum: - button - icon description: How to display event sharing title: type: string description: Title of the event used when it is shared description: type: string description: Description of the event used when it is shared image: type: string description: URL to an image which is used when the event is shared sharingOptions: $ref: '#/components/schemas/ExperienceSharingOptions' ExperienceEventStatus: title: ExperienceEventStatus description: Live event status of an In-Page Experience type: object properties: status: type: string enum: - preEvent - live - postEvent description: Currently displayed state of the In-Page Experience ExperienceSharingOptions: title: ExperienceSharingOptions description: Platform-specific sharing options type: object properties: facebook: allOf: - $ref: '#/components/schemas/ExperienceSharingOption' description: Sharing options for Facebook googlePlus: allOf: - $ref: '#/components/schemas/ExperienceSharingOption' description: Sharing options for Google+ linkedIn: allOf: - $ref: '#/components/schemas/ExperienceSharingOption' description: Sharing options for LinkedIn pinterest: allOf: - $ref: '#/components/schemas/ExperienceSharingOption' description: Sharing options for Pinterest twitter: allOf: - $ref: '#/components/schemas/ExperienceSharingOption' description: Sharing options for Twitter email: allOf: - $ref: '#/components/schemas/ExperienceSharingOption' description: Sharing options for Email ExperienceSharingOption: title: ExperienceSharingOption type: object properties: enabled: type: boolean description: Whether sharing is enabled for the specified platform useCustomMessage: type: boolean description: >- Whether custom messaging should be enabled for the specified platform (if the platform supports it) customMessage: type: string description: >- Custom message to use for the specified platform if `useCustomMessage` is `true` ExperienceContent: title: ExperienceContent description: Experience content type: object properties: top: type: array items: $ref: '#/components/schemas/ExperienceComponent' description: Components which are displayed on top of the In-Page Experience left: type: array items: $ref: '#/components/schemas/ExperienceComponent' description: Components which are displayed to the left of the In-Page Experience right: type: array items: $ref: '#/components/schemas/ExperienceComponent' description: >- Components which are displayed to the right of the In-Page Experience bottom: type: array items: $ref: '#/components/schemas/ExperienceComponent' description: Components which are displayed below the In-Page Experience main: type: array items: $ref: '#/components/schemas/ExperienceComponent' description: Live event hero image (only applies to the ee-live-event template) preEventDetails: type: array items: $ref: '#/components/schemas/ExperienceComponent' description: >- Live event pre-event details text (only applies to the ee-live-event template) postEventDetails: type: array items: $ref: '#/components/schemas/ExperienceComponent' description: >- Live event post-event details text (only applies to the ee-live-event template) ExperienceComponent: title: ExperienceComponent description: Experience component type: object properties: id: type: string description: ID of the component (auto-generated) readOnly: true name: type: string description: 'Name of the component, used for analytics' views: type: array items: type: string description: Views that this component will be visible during type: type: string enum: - text - image - advertisement - chat - heroImage - html - threePlay - twitter description: Type of component value: oneOf: - $ref: '#/components/schemas/ExperienceComponentImageValue' - $ref: '#/components/schemas/ExperienceComponentHeroImageValue' - type: string description: >- Value of the component. This is dependent on the value of `type`. `image` and `heroImage` have extended properties, whereas the other component types simply take a string value. `text`, `advertisement`, `chat`, `html`, and `twitter` all take an HTML string, while `threePlay` takes the 3Play project ID required: - views ExperienceComponentImageValue: title: ExperienceComponentImageValue description: Image component value type: object properties: image: type: string description: URL of the image display: type: string enum: - responsive - fixed description: How the image will be sized alignment: type: string enum: - left - center - right description: How the image will be horizontally aligned width: type: number description: Width of the image when `display` is `fixed` height: type: number description: Height of the image when `display` is `fixed` clickThroughUrl: type: string description: URL to navigate to when the image is clicked openNewWindow: type: boolean description: Whether to open the `clickThroughUrl` in a new window ExperienceComponentHeroImageValue: title: ExperienceComponentHeroImageValue description: Hero image component value type: object properties: image: type: string description: URL of the image size: type: string enum: - cover - contain - stretch - none description: >- How the image will be sized within the hero image container. `cover` will crop the image, `contain` will contain the image within the bounds of the container, `stretch` will stretch the image to fill the container ignoring aspect ratio, and `none` will use the original image size ExperienceConfigurations: title: ExperienceConfigurations description: Experience configurations type: object properties: preEvent: allOf: - $ref: '#/components/schemas/ExperienceConfiguration' description: >- Configuration for the pre-event state (only applies to the ee-live-event template) live: allOf: - $ref: '#/components/schemas/ExperienceConfiguration' description: >- Configuration for the live state (only applies to the ee-live-event template) postEvent: allOf: - $ref: '#/components/schemas/ExperienceConfiguration' description: >- Configuration for the post-event state (only applies to the ee-live-event template) ExperienceConfiguration: title: ExperienceConfiguration description: Experience configuration type: object properties: videos: $ref: '#/components/schemas/ExperienceVideos' ExperienceLayouts: title: ExperienceLayouts description: >- Collection of layout options for the In-Page Experience. The keys for this can be found in the template layouts metadata type: object additionalProperties: $ref: '#/components/schemas/ExperienceLayoutOptions' ExperienceLayoutOptions: title: ExperienceLayoutOptions description: >- Layout options for the In-Page Experience. The keys and values for this can be found in the template layouts metadata type: object additionalProperties: type: string InteractionList: title: Interaction List description: >- List of interatctions for the account. type: object readOnly: true properties: items: type: array items: $ref: '#/components/schemas/Interaction' example: { "items": [ { "start": { "quantity": 5, "from": "start", "unit": "seconds" }, "end": { "quantity": 10, "from": "start", "unit": "seconds" }, "durationType": "span", "type": "External", "content": [ { "name": "Oregon Coast", "type": "text", "value": "A peaceful morning on the coast of Oregon
" } ], "createdAt": "2018-09-30T19:00:12.114Z", "updatedAt": "2018-09-30T19:00:12.115Z", "experience": "5bb11c8880b4990011750ed1", "videoId": "5842159189001", "lookup": "right", "accountId": 57838016001, "id": "5bb11d3c5cdcdc001222ce1d" }, { "start": { "quantity": 5, "from": "start", "unit": "seconds" }, "end": { "quantity": 20.257, "from": "start", "unit": "seconds" }, "durationType": "span", "playbackBehavior": "none", "type": "Card", "createdAt": "2018-11-07T15:25:27.666Z", "updatedAt": "2018-11-07T15:25:27.667Z", "experience": "5bc4991f0f6f340011b3e968", "videoId": "5857167159001", "title": "test", "img": null, "description": "", "href": "", "linkText": "", "openOnStart": false, "accountId": 57838016001, "id": "5be303e7b5cd1c00106dc287" }, { "start": { "quantity": 50, "from": "start", "unit": "percent" }, "end": { "quantity": 70, "from": "start", "unit": "percent" }, "durationType": "point", "playbackBehavior": "none", "type": "Card", "createdAt": "2019-03-13T17:47:37.077Z", "updatedAt": "2019-03-13T17:47:37.078Z", "title": "Brightcove Support", "description": "Get help using Brightcove products", "linkText": "Brightcove Documentation", "href": "https://support.brightcove.com", "accountId": 57838016001, "id": "5c89423903b4450016165450" }, { "start": { "quantity": 50, "from": "start", "unit": "percent" }, "end": { "quantity": 70, "from": "start", "unit": "percent" }, "durationType": "point", "placement": "top-right", "playbackBehavior": "none", "type": "Link", "createdAt": "2019-03-13T19:38:06.974Z", "updatedAt": "2019-03-13T19:38:06.975Z", "text": "Brightcove Documentation", "href": "https://support.brightcove.com", "accountId": 57838016001, "id": "5c895c1e009c2a0015c104af" } ] } Interaction: title: Interaction description: >- Object describing the interaction required: [ 'type' ] properties: id: type: string description: The id for the interaction readOnly: true accountId: type: string description: >- The id of the account that the interaction interaction belongs to. readOnly: true start: type: object description: Object describing the starting point where the interaction becomes active properties: quantity: type: number description: position of the start point, either in seconds or a percentage of the video duration from: type: string description: where the `quantity` is measured from enum: - start - end unit: type: string description: what usits are used for the `quantity` enum: - percent - seconds end: type: object description: Object describing the end point where the interaction becomes inactive properties: quantity: type: number description: position of the end point, either in seconds or a percentage of the video duration from: type: string description: where the `quantity` is measured from enum: - start - end unit: type: string description: what usits are used for the `quantity` enum: - percent - seconds createdAt: type: string readOnly: true description: >- A date-time string indicating when the interaction was created example: '2019-03-13T17:47:37.077Z' updatedAt: type: string readOnly: true description: >- A date-time string indicating when the interaction was last modified example: '2019-03-13T17:47:37.077Z' type: type: string description: |- The type of interaction - `Link` - A hyperlink - `Card` - A card that can contain text, a link, and/or an image - `External` - A custom type built with HTML, CSS, and JavaScript. enum: - Link - Card - External durationType: type: string description: |- Duration type of the interaction - `point` - it appears at some point in playback - `span` - it is available over some span of playback - `end` - it is available at the end of playback - `full` - it is always available There is no need to set `durationType` if you are setting `start` and `end`. It will simply reflect what you set there. For `durationType` set to `end` or `full` **only**, you can use this as a shortcut instead of setting `start` and `end`. enum: - point - span - end - full experience: type: string description: |- An experience id. If specified when you create an interaction, the interaction will belong to that experience. If you do not specify an experience, the interaction can be used by any experience. example: '5bc4991f0f6f340011b3e968' placement: type: string description: |- Physical placement of a `Link` interaction. Used only for 'Link' tupes interactions enum: - top-left - top-right - bottom-left - bottom-right text: type: string description: |- Link text for a hyperlink. Used for `Link` and `Card` type interactions. href: type: string description: |- The URL that a hyperlink points to. Used for `Link` and `Card` type interactions. title: type: string description: |- The title for a card. Used for`Card` type interactions. description: type: string description: |- The description for a card. Used for`Card` type interactions. img: type: string description: |- A URL pointing to the image for a card. Used for`Card` type interactions. TemplateList: title: Template List description: List of In-Page Experience templates type: object readOnly: true properties: items: type: array items: $ref: '#/components/schemas/Template' Template: title: Template description: In-Page Experience template type: object readOnly: true properties: id: type: string description: ID of the template version: type: string description: Template version metadata: $ref: '#/components/schemas/TemplateMetadata' TemplateMetadata: title: TemplateMetadata description: Metadata describing the template type: object readOnly: true properties: name: type: string description: Template display name description: type: string description: Template description demo: type: string description: URL to a demo of the template image: type: string description: Relative URL to an SVG image representing the template views: type: array items: $ref: '#/components/schemas/TemplateView' layouts: type: array items: $ref: '#/components/schemas/TemplateLayout' options: $ref: '#/components/schemas/TemplateOptions' TemplateOptions: title: TemplateOptions description: Template options type: object readOnly: true properties: singleVideo: type: boolean description: Whether this template only displays a single video liveVideo: type: boolean description: Whether this template displays a live video TemplateView: title: TemplateView description: Template view type: object readOnly: true properties: name: type: string description: View ID title: type: string description: View display name isPlaybackView: type: boolean description: Whether this view is used for playing back videos hidden: type: boolean description: Whether this view is hidden in the authoring environment TemplateLayout: title: TemplateLayout description: Template layout descriptor type: object readOnly: true properties: name: type: string description: Layout ID title: type: string description: Layout display name categories: type: array items: $ref: '#/components/schemas/TemplateLayoutCategory' TemplateLayoutCategory: title: TemplateLayoutCategory description: Template layout category type: object readOnly: true properties: name: type: string description: Template layout category ID title: type: string description: Template layout category display name options: type: array items: $ref: '#/components/schemas/TemplateLayoutOption' TemplateLayoutOption: title: TemplateLayoutOption description: Template layout option type: object readOnly: true properties: name: type: string description: Template layout option ID title: type: string description: Template layout option display name image: type: string description: Relative URL to an SVG image which represents the layout option ThemeList: title: ThemeList description: List of In-Page Experience themes type: object properties: items: type: array items: $ref: '#/components/schemas/Theme' Theme: title: Theme description: In-Page Experience theme type: object properties: id: type: string description: ID of the theme readOnly: true accountId: type: number description: Video Cloud account ID readOnly: true name: type: string description: Name of the theme description: type: string description: Description of the theme styles: $ref: '#/components/schemas/Styles' fonts: type: array items: $ref: '#/components/schemas/FontBase' description: Fonts included in the theme updatedAt: type: string description: ISO-8601 date when the theme was last modified readOnly: true createdAt: type: string description: ISO-8601 date when the theme was created readOnly: true required: - name Styles: title: ExperienceStyles description: Style overrides type: object properties: global: allOf: - $ref: '#/components/schemas/Style' description: Global style overrides anchor: allOf: - $ref: '#/components/schemas/Style' description: Link style overrides navigation: allOf: - $ref: '#/components/schemas/Style' description: Navigation link style overrides videoInfo: allOf: - $ref: '#/components/schemas/Style' description: Video information style overrides videoTitle: allOf: - $ref: '#/components/schemas/Style' description: Video title style overrides videoDescription: allOf: - $ref: '#/components/schemas/Style' description: Video description style overrides overlay: allOf: - $ref: '#/components/schemas/Style' description: Overlay video information style overrides overlayTitle: allOf: - $ref: '#/components/schemas/Style' description: Overlay video title style overrides overlayDescription: allOf: - $ref: '#/components/schemas/Style' description: Overlay video description style overrides overlayBanner: allOf: - $ref: '#/components/schemas/Style' description: Watched banner style overrides nowPlaying: allOf: - $ref: '#/components/schemas/Style' description: Now playing banner style overrides playButton: allOf: - $ref: '#/components/schemas/Style' description: Play button style overrides sharing: allOf: - $ref: '#/components/schemas/Style' description: Sharing button style overrides overlaySharing: allOf: - $ref: '#/components/schemas/Style' description: Overlay sharing button style overrides eventCountdown: allOf: - $ref: '#/components/schemas/Style' description: Live event countdown style overrides calendarReminder: allOf: - $ref: '#/components/schemas/Style' description: Live event calendar reminder style overrides Style: title: Style type: object additionalProperties: type: string example: color: 'rgba(255, 0, 0, 1)' backgroundColor: blue fontSize: '14' FontBase: title: FontBase description: Base font container for Theme and Experience documents type: object properties: name: type: string description: Font name css: type: string description: CSS required to import the font required: - name - css FontList: title: FontList description: List of In-Page Experience Fonts type: object properties: items: type: array items: $ref: '#/components/schemas/Font' Font: title: In-Page Experience custom font description: >- Container for custom fonts which can be used within an In-Page Experience type: object properties: id: type: string description: Font ID readOnly: true accountId: type: string description: Video Cloud account ID readOnly: true name: type: string description: Font name css: type: string description: CSS required to import the font updatedAt: type: string description: ISO-8601 date when the font was last modified createdAt: type: string description: ISO-8601 date when the font was created HttpError: title: HttpError description: HTTP error code and description type: object properties: status: type: number description: Error status code code: type: string description: Error code message: type: string description: Error message details: oneOf: - type: array items: type: string description: Array of error details - type: string description: Error details parameters: AccountId: name: account_id in: path description: Video Cloud account ID. required: true style: simple explode: false schema: type: string ContentType: name: Content-Type in: header description: 'Content-Type: application/json' required: true style: simple explode: false schema: type: string default: application/json example: application/json ExperienceId: name: experience_id in: path description: In-Page Experience ID required: true style: simple explode: false schema: type: string InteractionId: name: interaction_id in: path description: Iteraction ID required: true style: simple explode: false schema: type: string responses: BadRequestExperience: description: >- BAD_REQUEST: Invalid In-Page Experience document, see response for details content: application/json: schema: allOf: - $ref: '#/components/schemas/HttpError' example: status: 400 code: BAD_REQUEST message: Specified template does not exist BadRequestInteraction: description: >- BAD_REQUEST: Invalid In-Page Experience interaction, see response for details content: application/json: schema: allOf: - $ref: '#/components/schemas/HttpError' example: status: 400 code: BAD_REQUEST message: Interaction type is missing BadRequestTheme: description: 'BAD_REQUEST: Invalid Theme document, see response for details' content: application/json: schema: allOf: - $ref: '#/components/schemas/HttpError' example: status: 400 code: BAD_REQUEST details: - Path `name` is required. BadRequestFont: description: 'BAD_REQUEST: Invalid Font document, see response for details' content: application/json: schema: allOf: - $ref: '#/components/schemas/HttpError' example: status: 400 code: BAD_REQUEST details: - Path `name` is required. Unauthorized: description: >- UNAUTHORIZED: Authentication failed - check to make sure your client credentials were correct for the access token NotFoundExperience: description: 'NOT_FOUND: The specified In-Page Experience does not exist' content: application/json: schema: allOf: - $ref: '#/components/schemas/HttpError' example: status: 404 code: NOT_FOUND message: Experience 123456 not found NotFoundInteraction: description: 'NOT_FOUND: The specified In-Page Experience does not exist' content: application/json: schema: allOf: - $ref: '#/components/schemas/HttpError' example: status: 404 code: NOT_FOUND message: Experience 123456 not found NotFoundTemplate: description: 'NOT_FOUND: The specified template does not exist' content: application/json: schema: allOf: - $ref: '#/components/schemas/HttpError' example: status: 404 code: NOT_FOUND NotFoundTheme: description: 'NOT_FOUND: The specified theme does not exist' content: application/json: schema: allOf: - $ref: '#/components/schemas/HttpError' example: status: 404 code: NOT_FOUND message: Theme 123456 not found NotFoundFont: description: 'NOT_FOUND: The specified font does not exist' content: application/json: schema: allOf: - $ref: '#/components/schemas/HttpError' example: status: 404 code: NOT_FOUND message: Font 123456 not found securitySchemes: BC_OAuth2: type: oauth2 description: >- Brightcove OAuth API. See the [support documentation](https://apis.support.brightcove.com/oauth/) or [Getting Access Tokens](https://apis.support.brightcove.com/oauth/guides/getting-access-tokens.html to learn more flows: clientCredentials: tokenUrl: 'https://oauth.brightcove.com/v4/access_token' scopes: video-cloud/experience/read: Read video-cloud/experience/all: All