> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mottostreaming.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Update page component

> UpdatePageComponent

 Updates an existing page_component.



## OpenAPI

````yaml patch /ott/page_components/v2/{page_component_id}
openapi: 3.0.3
info:
  title: Studio API - Motto
  version: 0.0.0
servers:
  - url: https://api.mottostreaming.com
    description: Production server
security:
  - BearerAuth: []
tags:
  - name: AccountService
    description: Account management service
  - name: ActionConfigurationService
    description: Action configuration service definition
  - name: ActionSecretService
    description: Action type service definition
  - name: ActionService
    description: Action service definition
  - name: ActionTypeService
    description: Action type service definition
  - name: ActivityService
    description: Activity service definition
  - name: AdService
    description: Ad management service.
  - name: AnnotationService
    description: Annotation service definition
  - name: AnnotationSetService
    description: Annotation service definition
  - name: AnnotationTypeService
    description: Annotation service definition
  - name: AssetService
    description: Asset management service.
  - name: AuthService
    description: Auth service definition
  - name: BannerService
    description: Banner service definition
  - name: BannerV2Service_v2
    description: Banner service definition
  - name: BannerV3Service_v3
    description: Banner service definition
  - name: CleengService
    description: CleengService service definition
  - name: ClipService
    description: ClipService is the service that handles Clip operations.
  - name: ConfigurationService
    description: >-
      Configuration management service. These configurations allow modifying the
      behavior of streams, uploads, simulcasts, etc.
  - name: ContentTypeService
    description: ContentType service definition
  - name: CreativeWorkService
    description: CreativeWork service definition
  - name: EntitlementService
    description: Entitlement service definition
  - name: EntityService
    description: Entity service definition
  - name: EventService
    description: Event service definition
  - name: FileService
    description: OTT files management.
  - name: IngestService
    description: Ingest management service.
  - name: IngestService_v2
    description: Ingest management service.
  - name: LiveStreamService
    description: LiveStream management service.
  - name: LiveStreamService_v2
    description: LiveStream management service.
  - name: OfferService
    description: Offer service definition
  - name: OrganizationService
    description: Organization management service.
  - name: PageService
    description: Page service definition
  - name: PageService_v2
    description: Page service definition
  - name: PlatformService
    description: Platform service definition
  - name: PlaylistService
    description: Playlist management service.
  - name: ProjectService
    description: Project management service.
  - name: SimulcastService
    description: Simulcast management service.
  - name: SlugService
    description: Slug service definition
  - name: SpiideoService
    description: SpiideoService service definition
  - name: StandingService
    description: Standing service definition
  - name: StitcherService
    description: StitcherService is the service that handles stitching operations.
  - name: StripeService
    description: StripeService service definition
  - name: SubscriptionService
    description: Subscription service definition
  - name: SubtitleService
    description: SubtitleService is the service that handles Subtitle operations.
  - name: TransactionService
    description: Transaction service definition
  - name: UploadService
    description: Upload management service.
  - name: UsageService
    description: The UsageService provides methods to retrieve usage data for SKUs.
  - name: UserService
    description: User management service
  - name: VODService
    description: VODService is the service that handles VOD operations.
  - name: VODService_v2
    description: VODService is the service that handles VOD operations.
  - name: VideoProtectionService
    description: VideoProtection management service.
  - name: VideoProtectionService_v2
    description: VideoProtection management service.
  - name: VideoService
    description: Video management service.
paths:
  /ott/page_components/v2/{page_component_id}:
    patch:
      tags:
        - PageService_v2
      description: |-
        UpdatePageComponent

         Updates an existing page_component.
      operationId: PageService_v2_UpdatePageComponent
      parameters:
        - name: page_component_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: >-
                #/components/schemas/motto.ott.page.v2.UpdatePageComponentRequest
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/motto.ott.page.v2.UpdatePageComponentResponse
        default:
          description: Default error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/google.rpc.Status'
components:
  schemas:
    motto.ott.page.v2.UpdatePageComponentRequest:
      required:
        - page_component_id
        - page_component_update
        - update_mask
      type: object
      properties:
        page_component_id:
          type: string
        page_component_update:
          $ref: '#/components/schemas/motto.ott.page.v2.PageComponent'
        update_mask:
          type: string
          description: >-
            A comma-separated list of fields to be updated. Only fields
            specified in this mask will be updated.
             The mask accepts root-level properties only. Use `data` to replace the component's configuration;
             since the mask cannot reach inside it, send the complete `data` object even to change one property.
          format: field-mask
    motto.ott.page.v2.UpdatePageComponentResponse:
      type: object
      properties:
        page_component:
          $ref: '#/components/schemas/motto.ott.page.v2.PageComponent'
    google.rpc.Status:
      type: object
      properties:
        code:
          type: integer
          description: >-
            The status code, which should be an enum value of
            [google.rpc.Code][google.rpc.Code].
          format: int32
        message:
          type: string
          description: >-
            A developer-facing error message, which should be in English. Any
            user-facing error message should be localized and sent in the
            [google.rpc.Status.details][google.rpc.Status.details] field, or
            localized by the client.
        details:
          type: array
          items:
            $ref: '#/components/schemas/google.protobuf.Any'
          description: >-
            A list of messages that carry the error details.  There is a common
            set of message types for APIs to use.
      description: >-
        The `Status` type defines a logical error model that is suitable for
        different programming environments, including REST APIs and RPC APIs. It
        is used by [gRPC](https://github.com/grpc). Each `Status` message
        contains three pieces of data: error code, error message, and error
        details. You can find out more about this error model and how to work
        with it in the [API Design
        Guide](https://cloud.google.com/apis/design/errors).
    motto.ott.page.v2.PageComponent:
      required:
        - project_id
      type: object
      properties:
        id:
          readOnly: true
          type: string
        project_id:
          type: string
        name:
          type: string
        type:
          type: string
          description: >-
            The type of component that should be rendered. It must correspond to
            the member of the `data`
             oneof that is set.
             Refer to the documentation to find the available types.
        environments:
          type: array
          items:
            type: string
          description: >-
            The environments in which this component should be rendered. The
            available options are:
             "web", "ios", "android", "tvos", "lg", "samsung", "androidtv"
             If left empty, the component will be rendered in all environments (when possible).
        visibility:
          enum:
            - VISIBILITY_UNSPECIFIED
            - VISIBILITY_PUBLISHED
            - VISIBILITY_UNLISTED
            - VISIBILITY_HIDDEN
          type: string
          format: enum
        group_id:
          type: string
          description: >-
            An arbitrary string that can be used to group components together.
            This is useful to render a group of components
             in a shared container so that they can be styled/positioned together.
             Any component that shares a group_id with another component must immediately precede or follow it.
             If a group_id is not provided, the component's own id will be used as the group_id.
        css_classes:
          type: array
          items:
            type: string
          description: >-
            Web only. A list of CSS classes that should be added to the
            component's container element.
             This can be used to apply custom styling to the component.
        banner_collection:
          $ref: '#/components/schemas/motto.ott.page.v2.BannerCollectionData'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        banner_collection_v2:
          $ref: '#/components/schemas/motto.ott.page.v2.BannerCollectionV2Data'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        calendar:
          $ref: '#/components/schemas/motto.ott.page.v2.CalendarData'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        calendar_v2:
          $ref: '#/components/schemas/motto.ott.page.v2.CalendarV2Data'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        rail:
          $ref: '#/components/schemas/motto.ott.page.v2.RailData'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        content_grid:
          $ref: '#/components/schemas/motto.ott.page.v2.ContentGridData'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        filter:
          $ref: '#/components/schemas/motto.ott.page.v2.FilterData'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        creative_work_player:
          $ref: '#/components/schemas/motto.ott.page.v2.CreativeWorkPlayerData'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        event_player:
          $ref: '#/components/schemas/motto.ott.page.v2.EventPlayerData'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        offers:
          $ref: '#/components/schemas/motto.ott.page.v2.OffersData'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        player_profile:
          $ref: '#/components/schemas/motto.ott.page.v2.PlayerProfileData'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        promotional_content:
          $ref: '#/components/schemas/motto.ott.page.v2.PromotionalContentData'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        sponsorship_collection:
          $ref: '#/components/schemas/motto.ott.page.v2.SponsorshipCollectionData'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        standings:
          $ref: '#/components/schemas/motto.ott.page.v2.StandingsData'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        faq:
          $ref: '#/components/schemas/motto.ott.page.v2.FaqData'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        footer:
          $ref: '#/components/schemas/motto.ott.page.v2.FooterData'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        text:
          $ref: '#/components/schemas/motto.ott.page.v2.TextData'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        image:
          $ref: '#/components/schemas/motto.ott.page.v2.ImageData'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
        html:
          $ref: '#/components/schemas/motto.ott.page.v2.HtmlData'
          description: >-
            Important: at most one of `banner_collection`,
            `banner_collection_v2`, `calendar`, `calendar_v2`, `rail`,
            `content_grid`, `filter`, `creative_work_player`, `event_player`,
            `offers`, `player_profile`, `promotional_content`,
            `sponsorship_collection`, `standings`, `faq`, `footer`, `text`,
            `image`, `html` may be set per request.
    google.protobuf.Any:
      type: object
      properties:
        '@type':
          type: string
          description: The type of the serialized message.
      additionalProperties: true
      description: >-
        Contains an arbitrary serialized message along with a @type that
        describes the type of the serialized message.
    motto.ott.page.v2.BannerCollectionData:
      type: object
      properties:
        id:
          type: string
          description: >-
            The banner collection to show. May contain a variable such as `{id}`
            (a URL parameter) or a
             property of the page's entity/event/creative_work, like `{event.fields.season.id}`, which the
             content delivery API resolves. The referenced collections must exist with matching IDs.
        gradients:
          type: array
          items:
            enum:
              - BANNER_COLLECTION_GRADIENT_UNSPECIFIED
              - BANNER_COLLECTION_GRADIENT_TOP
              - BANNER_COLLECTION_GRADIENT_BOTTOM
              - BANNER_COLLECTION_GRADIENT_LEFT
              - BANNER_COLLECTION_GRADIENT_RIGHT
            type: string
            format: enum
        height_fraction:
          type: number
          description: >-
            Height relative to the device screen height, between 0 and 1. A
            value of 0 means the banner
             collection keeps the aspect ratio of the banner images instead.
          format: double
        rotation_interval_seconds:
          type: integer
          description: Auto-rotation interval. 0 means the banners do not auto-rotate.
          format: int32
      description: |-
        Deprecated: use the `banner_collection_v2` component instead.
         Data for the "banner_collection" page component type.
         A carousel of banner images, delivered by the `BannerService` in the content delivery API.
    motto.ott.page.v2.BannerCollectionV2Data:
      type: object
      properties:
        id:
          type: string
          description: >-
            The banner collection to show. May contain a variable such as
            `{id}`, which the content delivery
             API resolves.
        transition_effect:
          enum:
            - BANNER_COLLECTION_V2_TRANSITION_EFFECT_UNSPECIFIED
            - BANNER_COLLECTION_V2_TRANSITION_EFFECT_FADE
            - BANNER_COLLECTION_V2_TRANSITION_EFFECT_SLIDE
          type: string
          format: enum
        transition_interval_seconds:
          type: integer
          description: >-
            Auto-transition interval. 0 means the banners do not
            auto-transition.
          format: int32
        size_strategy:
          enum:
            - BANNER_COLLECTION_V2_SIZE_STRATEGY_UNSPECIFIED
            - BANNER_COLLECTION_V2_SIZE_STRATEGY_IMAGE_HEIGHT
            - BANNER_COLLECTION_V2_SIZE_STRATEGY_CONTENT_HEIGHT
            - BANNER_COLLECTION_V2_SIZE_STRATEGY_RELATIVE_HEIGHT
          type: string
          format: enum
        height_fraction:
          type: number
          description: >-
            Fraction of the viewport height, greater than 0 and up to 1. Only
            applies to
             `BANNER_COLLECTION_V2_SIZE_STRATEGY_RELATIVE_HEIGHT`.
          format: double
        fixed:
          type: boolean
          description: >-
            Web only. Uses fixed positioning, so the banner does not scroll with
            the page.
        hide_by_default:
          type: boolean
          description: >-
            When true, the banner collection reserves zero height until data
            loads. When false, it reserves a
             default height to prevent layout shifts.
        inline:
          type: boolean
          description: >-
            Gives the banner margins on either side like other page components,
            instead of full width.
        border_radius:
          enum:
            - BORDER_RADIUS_UNSPECIFIED
            - BORDER_RADIUS_NONE
            - BORDER_RADIUS_SMALL
            - BORDER_RADIUS_MEDIUM
            - BORDER_RADIUS_LARGE
          type: string
          description: >-
            Only applies when `inline` is true; full-width banners are never
            rounded. Defaults to square
             corners.
          format: enum
      description: |-
        Data for the "banner_collection_v2" page component type.
         A carousel of banner images, delivered by the `v2` endpoints of the `BannerService` in the content
         delivery API.
    motto.ott.page.v2.CalendarData:
      type: object
      properties:
        filter:
          type: string
          description: >-
            KQL filter for retrieving the events. Can contain variables like
            `{id}` or
             `{event.fields.season.id}`, which the content delivery API resolves.
        card:
          $ref: '#/components/schemas/motto.ott.page.v2.Card'
        card_thumbnail:
          $ref: '#/components/schemas/motto.ott.page.v2.CardThumbnail'
      description: |-
        Deprecated: use the `calendar_v2` component instead.
         Data for the "calendar" page component type.
         A calendar view of events.
    motto.ott.page.v2.CalendarV2Data:
      type: object
      properties:
        layout:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.CalendarV2Layout'
          description: Defaults to `day_grid`.
        filter:
          type: string
          description: >-
            KQL filter narrowing which events are eligible. Date scoping is
            handled by the layout. Can
             contain variables like `{id}` or `{entity.fields.season.id}`, which the content delivery API
             resolves.
        additional_filters:
          type: object
          additionalProperties:
            type: string
          description: >-
            Session-storage key -> KQL clause this calendar responds to. When a
            declared key's value changes,
             its clause is re-substituted (using `{key.path}` placeholders) and appended to `filter` with
             ` AND `, then the active date's events are re-fetched. Arrays in a placeholder path expand into
             an `OR` list. Clauses whose substitution fails are dropped.
        exclude_geoblocked:
          type: boolean
          description: Excludes geoblocked events based on the user's IP location.
        show_on_unmatched_additional_filters:
          type: boolean
          description: >-
            When false (the default), the calendar hides its cards whenever a
            session-storage key is set that
             it has not declared in `additional_filters`. Unlike a rail or grid, its header and date rail stay
             visible. Set to true to ignore unrelated keys.
        card:
          $ref: '#/components/schemas/motto.ott.page.v2.CalendarV2Card'
        card_styling:
          $ref: '#/components/schemas/motto.ott.page.v2.CardStyling'
        card_thumbnail:
          $ref: '#/components/schemas/motto.ott.page.v2.CardThumbnail'
      description: |-
        Data for the "calendar_v2" page component type.
         An interactive calendar of events: the user navigates a timeline of dates and the component
         displays that date's events as a grid of cards. Card configuration is shared with `rail` and
         `content_grid`.
    motto.ott.page.v2.RailData:
      type: object
      properties:
        type:
          enum:
            - BASE_TYPE_UNSPECIFIED
            - BASE_TYPE_EVENT
            - BASE_TYPE_CREATIVE_WORK
            - BASE_TYPE_ENTITY
          type: string
          format: enum
        title:
          type: object
          additionalProperties:
            type: string
        description:
          type: string
          description: Only shown when `background` is set.
        filter:
          type: string
          description: >-
            KQL filter for retrieving content items. Can contain variables like
            `{id}` or
             `{entity.fields.season.id}`, which the content delivery API resolves.
        additional_filters:
          type: object
          additionalProperties:
            type: string
          description: >-
            Session-storage key -> KQL clause this rail responds to. When a
            declared key's value changes, its
             clause is re-substituted (using `{key.path}` placeholders) and appended to `filter` with ` AND `,
             then the rail re-fetches. Arrays in a placeholder path expand into an `OR` list. Clauses whose
             substitution fails are dropped. Example: `{ "club": "id:{club.id}" }`.
        search:
          type: string
          description: >-
            Search query passed to the list call. Can contain page variables
            like `{q}`, which the content
             delivery API resolves.
        additional_search:
          type: string
          description: >-
            Session-storage key (typically written by a sibling `filter`
            component's `search-input` control)
             whose value is passed as `search` in the list call. This is the mechanism for free-text search;
             it is independent from `filter`.
        order:
          type: string
          description: >-
            E.g. `name asc`, `start_time desc`. Limited to what the content
            delivery API supports.
        limit:
          type: integer
          format: int32
        pinned:
          type: array
          items:
            type: string
          description: >-
            Content item IDs to display first, in the given order. Dropped
            whenever a filter this rail
             responds to becomes active.
        hide_by_default:
          type: boolean
          description: >-
            When true, the rail reserves zero height until data loads. When
            false, it reserves its expected
             height to prevent layout shifts.
        exclude_geoblocked:
          type: boolean
          description: >-
            Excludes geoblocked content items based on the user's IP location.
            Not applicable to entities.
        show_on_unmatched_additional_filters:
          type: boolean
          description: >-
            When false (the default), the rail is hidden whenever a
            session-storage key is set that it has
             not declared in `additional_filters` or `additional_search` — its data is typically not
             segmentable by that filter. Set to true to ignore unrelated keys.
        card:
          $ref: '#/components/schemas/motto.ott.page.v2.Card'
        card_thumbnail:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.CardThumbnail'
          description: Independent of `card`; usable with any card type.
        card_styling:
          $ref: '#/components/schemas/motto.ott.page.v2.CardStyling'
        background:
          $ref: '#/components/schemas/motto.ott.page.v2.RailBackground'
        arrows:
          $ref: '#/components/schemas/motto.ott.page.v2.RailArrows'
        see_all:
          $ref: '#/components/schemas/motto.ott.page.v2.RailSeeAll'
        preheader:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.RailPreheader'
          description: An optional element displayed above the rail title.
        theme:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.RailTheme'
          description: When unset, a standard horizontal scrollable rail is rendered.
      description: |-
        Data for the "rail" page component type.
         A horizontal scrollable rail (carousel) of content items.
         Previously named `content_carousel`, which remains a supported legacy alias that clients must map
         to the same renderer.
    motto.ott.page.v2.ContentGridData:
      type: object
      properties:
        reference:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.ContentGridReference'
          description: >-
            Mirrors a component on another page (the rail "See all" flow),
            carrying no configuration of
             its own.

            Important: at most one of `reference`, `inline` may be set per
            request.
        inline:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.ContentGridInline'
          description: >-
            Carries its own grid configuration.


            Important: at most one of `reference`, `inline` may be set per
            request.
      description: |-
        Data for the "content_grid" page component type.
         A paginated grid of content items.
    motto.ott.page.v2.FilterData:
      type: object
      properties:
        controls:
          type: array
          items:
            $ref: '#/components/schemas/motto.ott.page.v2.FilterControl'
          description: >-
            Each control owns one URL parameter, or two for a date-range
            control.
        layout:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.FilterLayout'
          description: Defaults to the inline layout.
        chip_border_radius:
          enum:
            - BORDER_RADIUS_UNSPECIFIED
            - BORDER_RADIUS_NONE
            - BORDER_RADIUS_SMALL
            - BORDER_RADIUS_MEDIUM
            - BORDER_RADIUS_LARGE
          type: string
          description: >-
            Applied to the chip-style triggers and removable selected-value
            tags.
          format: enum
      description: |-
        Data for the "filter" page component type.
         Renders filter controls. On interaction the component writes the selected value to session storage
         (keyed by the control's `url_param`) and mirrors a scalar to the URL for shareability. Sibling
         components opt in by listing session-storage keys in their `additional_filters` and referencing the
         values via `{key.path}` substitution. The content delivery API is not involved, so filter URL
         parameters do not need to appear in the page's `parameters`.
         At most one `filter` component is allowed per page.
    motto.ott.page.v2.CreativeWorkPlayerData:
      type: object
      properties:
        id:
          type: string
          description: >-
            The creative work to show. May contain a variable such as `{id}` (a
            URL parameter) or a
             property of the resolved entity/event/creative work, which the content delivery API resolves.

            Important: at most one of `id`, `query` may be set per request.
        query:
          $ref: '#/components/schemas/motto.ott.page.v2.CreativeWorkPlayerQuery'
          description: 'Important: at most one of `id`, `query` may be set per request.'
        autoplay:
          type: boolean
        persist_progress:
          type: boolean
          description: >-
            Persists playback progress on the device and silently resumes from
            it. When false, playback
             always starts from the beginning.
        ima:
          $ref: '#/components/schemas/motto.ott.page.v2.Ima'
        background_image_url:
          type: string
          description: >-
            Shown behind the video player. The creative work's poster image
            takes precedence over it.
        paywall:
          $ref: '#/components/schemas/motto.ott.page.v2.Paywall'
      description: |-
        Data for the "creative_work_player" page component type.
         A video player for a creative work, plus sections shown at different times.
    motto.ott.page.v2.EventPlayerData:
      type: object
      properties:
        id:
          type: string
          description: >-
            The event to show. May contain a variable such as `{id}` (a URL
            parameter) or a property of the
             resolved entity/event/creative work, like `{event.fields.season.id}`, which the content
             delivery API resolves.

            Important: at most one of `id`, `query` may be set per request.
        query:
          $ref: '#/components/schemas/motto.ott.page.v2.EventPlayerQuery'
          description: 'Important: at most one of `id`, `query` may be set per request.'
        autoplay:
          type: boolean
        persist_progress:
          type: boolean
          description: >-
            Persists VOD playback progress on the device and silently resumes
            from it. Live streams are never
             resumed. When false, playback always starts from the beginning.
        ima:
          $ref: '#/components/schemas/motto.ott.page.v2.Ima'
        background_image_url:
          type: string
          description: >-
            Shown behind the video player. The event's poster image takes
            precedence over it.
        info:
          type: object
          description: >-
            Keypaths to properties on the referenced CMS object - team names,
            scores, logos, colors and
             detail lines - with optional per-content-type overrides. Untyped because the accepted keys evolve
             with the player UI; see the `event_player` documentation.
        lineup:
          type: object
          description: >-
            Keypaths for the lineup section: the participants or the home/away
            teams, plus the per-player
             keypaths. Untyped because the accepted keys evolve with the player UI.
        timeline:
          type: object
          description: >-
            Keypaths for the timeline section, which differ per timeline kind.
            Untyped because the accepted
             keys evolve with the player UI.
        paywall:
          $ref: '#/components/schemas/motto.ott.page.v2.Paywall'
      description: |-
        Data for the "event_player" page component type.
         A video player for an event, plus sections shown at different times: event information, lineups,
         timelines, and the registration wall or paywall when the user is not entitled.
    motto.ott.page.v2.OffersData:
      type: object
      properties:
        offer:
          type: array
          items:
            $ref: '#/components/schemas/motto.ott.page.v2.OfferConfig'
        title:
          type: object
          additionalProperties:
            type: string
        subtitle:
          type: object
          additionalProperties:
            type: string
        background_asset_url:
          type: string
        title_color:
          type: string
        subtitle_color:
          type: string
          description: Defaults to `rgba(255, 255, 255, 0.7)`.
        background_color:
          type: string
        card_background_color:
          type: string
          description: Applies to each individual offer card.
        card_title_color:
          type: string
        card_description_color:
          type: string
        main_button_colors:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.ButtonColors'
          description: For the main call-to-action button.
        main_button_text_color:
          type: string
      description: |-
        Data for the "offers" page component type.
         Subscription or purchase offers in a card layout. Selecting an offer initiates a purchase.
         Colors are hex color codes or platform color names.
    motto.ott.page.v2.PlayerProfileData:
      type: object
      properties:
        id:
          type: string
          description: >-
            The entity to show. May contain a variable such as `{id}` (a URL
            parameter). Required.
        name:
          $ref: '#/components/schemas/motto.ott.page.v2.KeypathValue'
        image_url:
          $ref: '#/components/schemas/motto.ott.page.v2.KeypathValue'
        fallback_image_url:
          type: string
          description: Used when the player has no image.
        gender:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.MappedField'
          description: 'Mapping keys: "MALE", "FEMALE".'
        jersey:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.KeypathValue'
          description: Resolves to a string or a number.
        nationality:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.KeypathValue'
          description: Resolves to a two-character country code (ISO 3166-1 alpha-2).
        birthday:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.KeypathValue'
          description: >-
            Resolves to an RFC 3339 datetime, e.g. `2009-08-22T00:00:00Z`. The
            age is calculated from it.
        positions:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.MappedField'
          description: >-
            Mapping keys: "GOALKEEPER", "DEFENDER", "MIDFIELDER", "FORWARD". May
            resolve to a single item or
             an array.
        strong_foot:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.MappedField'
          description: 'Mapping keys: "LEFT", "RIGHT".'
        teams:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.KeypathValue'
          description: May resolve to a single item or an array.
        team:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.PlayerTeamConfig'
          description: Applied to each team entity within the arrays referenced by `teams`.
        colors:
          $ref: '#/components/schemas/motto.ott.page.v2.PlayerProfileColors'
      description: |-
        Data for the "player_profile" page component type.
         The profile of a person who plays sports. Most properties are optional; the set is meant to be
         extensible.
    motto.ott.page.v2.PromotionalContentData:
      type: object
      properties:
        image_url:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.LocalizedString'
          description: >-
            Rendered as a static image.


            Important: at most one of `image_url`, `video_url`, `video_id` may
            be set per request.
        video_url:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.LocalizedString'
          description: >-
            The original content, embedded in a creative work player.


            Important: at most one of `image_url`, `video_url`, `video_id` may
            be set per request.
        video_id:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.LocalizedString'
          description: >-
            VOD identifiers, embedded in a video player.


            Important: at most one of `image_url`, `video_url`, `video_id` may
            be set per request.
        destination_url:
          type: object
          additionalProperties:
            type: string
          description: >-
            Navigated to on interaction. With `image_url` set, both the image
            and the button navigate to it;
             otherwise only the button does.
        tag:
          $ref: '#/components/schemas/motto.ott.page.v2.PromotionalContentTag'
        title:
          type: object
          additionalProperties:
            type: string
          description: >-
            Displayed next to the media. Each value is a plain string or a
            keypath resolved against the page
             entity.
        description:
          type: object
          additionalProperties:
            type: string
          description: >-
            Displayed below the title. Each value is a plain string or a keypath
            resolved against the page
             entity.
        button:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.PromotionalContentButton'
          description: Displayed below the description, navigating to `destination_url`.
      description: |-
        Data for the "promotional_content" page component type.
         A media item alongside descriptive text and an optional call-to-action button, typically used to
         highlight a specific event, creative work or image.
    motto.ott.page.v2.SponsorshipCollectionData:
      type: object
      properties:
        id:
          type: string
          description: >-
            The sponsorship collection to show. May contain a variable such as
            `{id}` (a URL parameter) or a
             property of the page's entity/event/creative_work, like `{event.fields.season.id}`, which the
             content delivery API resolves. The referenced collections must exist with matching IDs.
        title:
          type: object
          additionalProperties:
            type: string
          description: When empty, no header is displayed.
        text_color:
          type: string
        decorator:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.SponsorshipDecorator'
          description: When unset, no decorator is rendered.
        layout:
          $ref: '#/components/schemas/motto.ott.page.v2.SponsorshipLayout'
        hide_by_default:
          type: boolean
          description: >-
            Hides the entire component, reserving no height, while the data
            loads.
        background:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.SponsorshipBackground'
          description: When unset, no dedicated background is used.
      description: |-
        Data for the "sponsorship_collection" page component type.
         Sponsorship images, clickable through to sponsor landing pages. Delivered by the `AdService` in the
         content delivery API.
    motto.ott.page.v2.StandingsData:
      type: object
      properties:
        entity:
          $ref: '#/components/schemas/motto.ott.page.v2.StandingsEntity'
          description: 'Important: at most one of `entity`, `query` may be set per request.'
        query:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.StandingsQuery'
          description: |-
            Use when the entity ID is not known at configuration time.

            Important: at most one of `entity`, `query` may be set per request.
        title:
          type: object
          additionalProperties:
            type: string
          description: >-
            To include the standings name, use `{standing.entityName}`, e.g.
            `Standings -
             {standing.entityName}`. Unlike elsewhere, the client resolves this variable itself from the
             `GetStanding` response.
        entity_column_title:
          type: object
          additionalProperties:
            type: string
          description: E.g. `Team`, `Equipo`, `Équipe`.
        highlight_entry_ids:
          type: array
          items:
            type: string
          description: Entity IDs to highlight in the table.
        show_only_highlighted_entries:
          type: boolean
          description: >-
            Shows only the entries in `highlight_entry_ids`, for a condensed
            table such as on a match page.
        background:
          $ref: '#/components/schemas/motto.ott.page.v2.StandingsBackground'
      description: |-
        Data for the "standings" page component type.
         One or more sports standings tables, supporting multiple phases and multiple groups per phase.
         Delivered by the `StandingService` in the content delivery API.
    motto.ott.page.v2.FaqData:
      type: object
      properties:
        title:
          type: object
          additionalProperties:
            type: string
        subtitle:
          type: object
          additionalProperties:
            type: string
        items:
          type: array
          items:
            $ref: '#/components/schemas/motto.ott.page.v2.FaqItem'
        items_background_color:
          type: string
          description: >-
            Applies to the individual items. Hex color code or a platform color
            name.
      description: |-
        Data for the "faq" page component type.
         A list of questions, each expanding to reveal an answer or linking out to a URL.
    motto.ott.page.v2.FooterData:
      type: object
      properties:
        items:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/motto.ott.page.v2.FooterLocaleContent'
          description: Keyed by locale code, e.g. "en", "es".
        logo_url:
          type: string
          description: Defaults to the platform logo.
        powered_by:
          $ref: '#/components/schemas/motto.ott.page.v2.FooterPoweredBy'
        colors:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.FooterColors'
          description: All fields fall back to platform defaults.
      description: |-
        Data for the "footer" page component type.
         A full-width footer below the main page content, replacing the platform default on pages that have
         one.
    motto.ott.page.v2.TextData:
      type: object
      properties:
        text:
          type: object
          additionalProperties:
            type: string
          description: >-
            Can contain variables like `{entity.name}`, which the content
            delivery API resolves.
        html_element:
          type: string
          description: The HTML element to render, from `h1` to `h6`.
      description: Data for the "text" page component type.
    motto.ott.page.v2.ImageData:
      type: object
      properties:
        external_image_url:
          type: string
      description: Data for the "image" page component type.
    motto.ott.page.v2.HtmlData:
      type: object
      properties:
        html:
          type: object
          additionalProperties:
            type: string
      description: |-
        Data for the "html" page component type.
         Renders raw HTML directly into the page.
    motto.ott.page.v2.Card:
      type: object
      properties:
        properties:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.CardProperties'
          description: >-
            The properties applied to every content item, unless an override
            matches.
        overrides:
          type: array
          items:
            $ref: '#/components/schemas/motto.ott.page.v2.CardOverride'
          description: >-
            Ordered list of exceptions to `properties`. For a property set by
            more than one matching entry,
             the earliest entry wins.
      description: Configuration for how individual cards are rendered.
    motto.ott.page.v2.CardThumbnail:
      type: object
      properties:
        team_vs_team:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.TeamVsTeamThumbnail'
          description: >-
            Home and away team logos on a split background using the team
            colors.


            Important: at most one of `team_vs_team`, `detailed_vs`, `detailed`
            may be set per request.
        detailed_vs:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.DetailedVsThumbnail'
          description: >-
            Team logos and colors, plus background images, overlays, dividers
            and logos.


            Important: at most one of `team_vs_team`, `detailed_vs`, `detailed`
            may be set per request.
        detailed:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.DetailedThumbnail'
          description: >-
            Background images, overlays and logos. Use `detailed_vs` for team
            logos and dividers.


            Important: at most one of `team_vs_team`, `detailed_vs`, `detailed`
            may be set per request.
        fallback_asset_id:
          type: string
          description: >-
            An uploaded asset.


            Important: at most one of `fallback_asset_id`, `fallback_image_url`
            may be set per request.
        fallback_image_url:
          type: string
          description: >-
            An externally hosted image.


            Important: at most one of `fallback_asset_id`, `fallback_image_url`
            may be set per request.
      description: >-
        Optional server-side thumbnail generation, passed to the content
        delivery API's list calls as
         `thumbnail_config`. Used instead of the content item's uploaded thumbnail, with any card type.

         Values are keypaths (e.g. `fields.home_team.item.thumbnail_url`) or asset IDs (e.g.
         `ghVpAWulPhoOcM3S92987UYx_i`), and support coalescing with `??`. Externally hosted URLs are not
         supported.
    motto.ott.page.v2.CalendarV2Layout:
      type: object
      properties:
        day_grid:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.CalendarV2DayGridLayout'
          description: >-
            A single active day at a time: a 'Today' button, a date picker, a
            header showing the active
             date, a horizontal rail of dates, and below it a grid of that day's events. How events are
             fetched is fixed by the layout; authors only control eligibility via `filter` and
             `additional_filters`.
    motto.ott.page.v2.CalendarV2Card:
      type: object
      properties:
        single:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.Card'
          description: >-
            Applied to every event.


            Important: at most one of `single`, `by_event_type` may be set per
            request.
        by_event_type:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.CalendarV2CardMap'
          description: >-
            Different card types depending on the event's content type ID.


            Important: at most one of `single`, `by_event_type` may be set per
            request.
    motto.ott.page.v2.CardStyling:
      type: object
      properties:
        border_radius:
          enum:
            - BORDER_RADIUS_UNSPECIFIED
            - BORDER_RADIUS_NONE
            - BORDER_RADIUS_SMALL
            - BORDER_RADIUS_MEDIUM
            - BORDER_RADIUS_LARGE
          type: string
          description: >-
            Applies to the card's image, not the full card. Defaults per card
            type. The `circle` card ignores it.
          format: enum
    motto.ott.page.v2.RailBackground:
      type: object
      properties:
        color:
          type: string
          description: >-
            Hex color code or a platform color token (e.g. `primary`,
            `base-200`).
        image_url:
          type: string
          description: >-
            Full-bleed background image behind the rail content. Required by the
            `framed_carousel` and
             `with_side_pane` themes.
    motto.ott.page.v2.RailArrows:
      type: object
      properties:
        type:
          enum:
            - RAIL_ARROWS_TYPE_UNSPECIFIED
            - RAIL_ARROWS_TYPE_OPPOSED
            - RAIL_ARROWS_TYPE_GROUPED
            - RAIL_ARROWS_TYPE_NONE
          type: string
          format: enum
    motto.ott.page.v2.RailSeeAll:
      type: object
      properties:
        show:
          type: boolean
        target:
          type: string
          description: URL or path to navigate to.
        text:
          type: object
          additionalProperties:
            type: string
          description: >-
            Localized link label, keyed by language code. Falls back to the
            platform's default label when
             left empty.
        position:
          enum:
            - RAIL_SEE_ALL_POSITION_UNSPECIFIED
            - RAIL_SEE_ALL_POSITION_START
            - RAIL_SEE_ALL_POSITION_END
          type: string
          format: enum
    motto.ott.page.v2.RailPreheader:
      type: object
      properties:
        show:
          type: boolean
    motto.ott.page.v2.RailTheme:
      type: object
      properties:
        framed_carousel:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.RailFramedCarouselTheme'
          description: >-
            Full-bleed framed layout: the background image covers the entire
            rail section, with a darkening
             overlay and a gradient on top, and the title/description floating above the cards.

            Important: at most one of `framed_carousel`, `with_side_pane` may be
            set per request.
        with_side_pane:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.RailWithSidePaneTheme'
          description: >-
            Side-pane layout: on desktop the title and background image sit in a
            fixed-width pane on the
             left and the scrollable cards take the rest. Collapses to a stacked layout on mobile.

            Important: at most one of `framed_carousel`, `with_side_pane` may be
            set per request.
    motto.ott.page.v2.ContentGridReference:
      type: object
      properties:
        page_component_id:
          type: string
          description: >-
            The `id` of the component on the source page whose configuration
            this grid mirrors.
        source_url:
          type: string
          description: Path of the page hosting the referenced component, e.g. `/home`.
    motto.ott.page.v2.ContentGridInline:
      type: object
      properties:
        type:
          enum:
            - BASE_TYPE_UNSPECIFIED
            - BASE_TYPE_EVENT
            - BASE_TYPE_CREATIVE_WORK
            - BASE_TYPE_ENTITY
          type: string
          format: enum
        title:
          type: object
          additionalProperties:
            type: string
        description:
          type: string
        filter:
          type: string
          description: >-
            KQL filter for retrieving content items. Can contain variables like
            `{id}` or
             `{entity.fields.season.id}`, which the content delivery API resolves.
        additional_filters:
          type: object
          additionalProperties:
            type: string
          description: >-
            Session-storage key -> KQL clause this grid responds to. When a
            declared key's value changes, its
             clause is re-substituted (using `{key.path}` placeholders) and appended to `filter` with ` AND `,
             then the grid re-fetches. Arrays in a placeholder path expand into an `OR` list. Clauses whose
             substitution fails are dropped. Example: `{ "club": "id:{club.id}" }`.
        search:
          type: string
          description: >-
            Search query passed to the list call. Can contain page variables
            like `{q}`, which the content
             delivery API resolves.
        additional_search:
          type: string
          description: >-
            Session-storage key (typically written by a sibling `filter`
            component's `search-input` control)
             whose value is passed as `search` in the list call. This is the mechanism for free-text search;
             it is independent from `filter`.
        order:
          type: string
          description: >-
            E.g. `name asc`, `start_time desc`. Limited to what the content
            delivery API supports.
        limit:
          type: integer
          format: int32
        pinned:
          type: array
          items:
            type: string
          description: >-
            Content item IDs to display first, in the given order. Dropped
            whenever a filter this grid
             responds to becomes active.
        hide_by_default:
          type: boolean
          description: >-
            When true, the grid reserves zero height until data loads. When
            false, it reserves its expected
             height to prevent layout shifts.
        exclude_geoblocked:
          type: boolean
          description: >-
            Excludes geoblocked content items based on the user's IP location.
            Not applicable to entities.
        show_on_unmatched_additional_filters:
          type: boolean
          description: >-
            When false (the default), the grid is hidden whenever a
            session-storage key is set that it has
             not declared in `additional_filters` or `additional_search`. Set to true to ignore unrelated keys.
        card:
          $ref: '#/components/schemas/motto.ott.page.v2.Card'
        card_thumbnail:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.CardThumbnail'
          description: Independent of `card`; usable with any card type.
        card_styling:
          $ref: '#/components/schemas/motto.ott.page.v2.CardStyling'
    motto.ott.page.v2.FilterControl:
      type: object
      properties:
        select:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.FilterSelectControl'
          description: >-
            Picks one value, or several when `multi_select` is true. Renders as
            a dropdown by default.


            Important: at most one of `select`, `date_range`, `search_input` may
            be set per request.
        date_range:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.FilterDateRangeControl'
          description: >-
            A two-month range calendar popover.


            Important: at most one of `select`, `date_range`, `search_input` may
            be set per request.
        search_input:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.FilterSearchInputControl'
          description: >-
            A free-text input.


            Important: at most one of `select`, `date_range`, `search_input` may
            be set per request.
    motto.ott.page.v2.FilterLayout:
      type: object
      properties:
        inline:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.FilterInlineLayout'
          description: >-
            A horizontal row above the sibling content. Collapses to a trigger
            button that opens a
             bottom-sheet/drawer on mobile.

            Important: at most one of `inline`, `sidebar`, `rail` may be set per
            request.
        sidebar:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.FilterSidebarLayout'
          description: >-
            A collapsible vertical panel, hidden behind a toggle button at the
            top end of the content area.
             On lg+ it opens as a column next to the content; below lg as a full-screen modal. The filter
             splits the page: components authored above it keep their full-width stack, while the filter and
             everything below it form the toggleable side-by-side region.

            Important: at most one of `inline`, `sidebar`, `rail` may be set per
            request.
        rail:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.FilterRailLayout'
          description: >-
            Renders the single non-multi select control as a horizontal text-tab
            strip instead of a
             dropdown, with the active option bold and underlined.

            Important: at most one of `inline`, `sidebar`, `rail` may be set per
            request.
    motto.ott.page.v2.CreativeWorkPlayerQuery:
      type: object
      properties:
        filter:
          type: string
          description: >-
            KQL filter. Can contain variables like `{id}` or
            `{entity.fields.season.id}`, which the content
             delivery API resolves.
        order:
          type: string
          description: E.g. `release_time desc`.
      description: >-
        Resolves the creative work by taking the first result of a
        `ListCreativeWorks` call.
    motto.ott.page.v2.Ima:
      type: object
      properties:
        enabled:
          type: boolean
          description: Defaults to false.
      description: >-
        Google IMA (Interactive Media Ads) integration. When enabled, the player
        displays pre-roll ads for
         content matching the targeting rules.
    motto.ott.page.v2.Paywall:
      type: object
      properties:
        background_asset_url:
          type: string
        background_color:
          type: string
        card_background_color:
          type: string
          description: Applies to each individual offer card.
        card_title_color:
          type: string
        card_description_color:
          type: string
        main_button_colors:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.ButtonColors'
          description: For the purchase button on offer cards.
        main_button_text_color:
          type: string
      description: >-
        Styling for the paywall shown when the user is not entitled to watch the
        content. Mirrors the
         `offers` component styling. Colors are hex color codes or platform color names.
    motto.ott.page.v2.EventPlayerQuery:
      type: object
      properties:
        filter:
          type: string
          description: >-
            KQL filter. Can contain variables like `{id}` or
            `{event.fields.season.id}`, which the content
             delivery API resolves.
        order:
          type: string
          description: E.g. `start_time desc`.
      description: Resolves the event by taking the first result of a `ListEvents` call.
    motto.ott.page.v2.OfferConfig:
      type: object
      properties:
        offer_id:
          type: string
          description: Identifier of the offer in the monetization system.
        show_prices:
          type: boolean
          description: Defaults to true.
        show_descriptions:
          type: boolean
          description: Defaults to true.
    motto.ott.page.v2.ButtonColors:
      type: object
      properties:
        color1:
          type: string
          description: >-
            Solid color, or the gradient start. Hex color code or a platform
            color name.
        color2:
          type: string
          description: Gradient end color. Only applies when `color1` is also set.
      description: A solid color or a two-stop gradient for a button background.
    motto.ott.page.v2.KeypathValue:
      type: object
      properties:
        keypath:
          type: string
      description: >-
        Keypath to a value in a JSON object. Can be simple (`fields.gender`),
        positional
         (`fields.teams[0].item.fields.color`), or reference an array (`fields.positions[*].item.name`).
    motto.ott.page.v2.MappedField:
      type: object
      properties:
        keypath:
          type: string
        mapping:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/motto.ott.page.v2.MappingValue'
          description: >-
            Maps an enum key (e.g. "MALE", "DEFENDER", "LEFT") to the values
            that resolve to it.
    motto.ott.page.v2.PlayerTeamConfig:
      type: object
      properties:
        name:
          $ref: '#/components/schemas/motto.ott.page.v2.KeypathValue'
        image_url:
          $ref: '#/components/schemas/motto.ott.page.v2.KeypathValue'
        color:
          $ref: '#/components/schemas/motto.ott.page.v2.KeypathValue'
        description:
          $ref: '#/components/schemas/motto.ott.page.v2.KeypathValue'
    motto.ott.page.v2.PlayerProfileColors:
      type: object
      properties:
        color1:
          type: string
        color2:
          type: string
      description: >-
        Gradient colors for the profile header. Each is a keypath to a color
        value, a hex color code, or a
         named color (e.g. `primary`).
    motto.ott.page.v2.LocalizedString:
      type: object
      properties:
        values:
          type: object
          additionalProperties:
            type: string
      description: >-
        A localized string, keyed by language code (ISO 639 - set 1), optionally
        with a region
         (ISO 3166-1 alpha-2), e.g. "en", "en-US".
         Used where a localized string has to sit inside a oneof, which cannot hold a map. Elsewhere a
         plain `map<string, string>` is used.
    motto.ott.page.v2.PromotionalContentTag:
      type: object
      properties:
        text:
          type: object
          additionalProperties:
            type: string
          description: A plain string or a keypath resolved against the page entity.
        is_badge:
          type: boolean
          description: >-
            Renders the tag as a pill in the platform's `primary` color instead
            of a small label in
             `base-content-200`.
      description: A label displayed above the title.
    motto.ott.page.v2.PromotionalContentButton:
      type: object
      properties:
        label:
          type: object
          additionalProperties:
            type: string
          description: A plain string or a keypath resolved against the page entity.
        colors:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.ButtonColors'
          description: Defaults to the platform `primary` color.
        text_color:
          type: string
          description: >-
            Hex color code or a platform color name. Defaults to
            `primary-content`.
    motto.ott.page.v2.SponsorshipDecorator:
      type: object
      properties:
        color:
          type: string
    motto.ott.page.v2.SponsorshipLayout:
      type: object
      properties:
        grid:
          $ref: '#/components/schemas/motto.ott.page.v2.SponsorshipGridLayout'
          description: >-
            Important: at most one of `grid`, `carousel`, `marquee` may be set
            per request.
        carousel:
          $ref: '#/components/schemas/motto.ott.page.v2.SponsorshipCarouselLayout'
          description: >-
            Important: at most one of `grid`, `carousel`, `marquee` may be set
            per request.
        marquee:
          $ref: '#/components/schemas/motto.ott.page.v2.SponsorshipMarqueeLayout'
          description: >-
            Important: at most one of `grid`, `carousel`, `marquee` may be set
            per request.
    motto.ott.page.v2.SponsorshipBackground:
      type: object
      properties:
        color:
          type: string
          description: >-
            Hex color code, e.g. `#ffffff`.


            Important: at most one of `color`, `image_url` may be set per
            request.
        image_url:
          type: string
          description: >-
            Important: at most one of `color`, `image_url` may be set per
            request.
    motto.ott.page.v2.StandingsEntity:
      type: object
      properties:
        entity_id:
          type: string
          description: >-
            May contain a variable such as `{id}` (a URL parameter) or a
            property of the page's
             entity/event/creative_work, like `{event.fields.season.id}`, which the content delivery API
             resolves.
        entity_type:
          type: string
          description: >-
            The type belonging to `entity_id`, typically something like
            `competition_season`.
      description: The entity the Standing object relates to.
    motto.ott.page.v2.StandingsQuery:
      type: object
      properties:
        filter:
          type: string
          description: >-
            KQL filter. Can contain variables like `{id}` or
            `{event.fields.season.id}`, which the content
             delivery API resolves.
        filter_order:
          type: string
          description: E.g. `name asc`.
      description: >-
        Resolves the related entity by taking the first result of a
        `ListEntities` call.
    motto.ott.page.v2.StandingsBackground:
      type: object
      properties:
        color:
          type: string
          description: Hex color code, e.g. `#ffffff`.
    motto.ott.page.v2.FaqItem:
      type: object
      properties:
        question:
          type: object
          additionalProperties:
            type: string
          description: The clickable header.
        answer:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.FaqAnswer'
          description: >-
            Displayed when the item is expanded.


            Important: at most one of `answer`, `redirect` may be set per
            request.
        redirect:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.FaqRedirect'
          description: >-
            Opened in a new tab instead of expanding the item.


            Important: at most one of `answer`, `redirect` may be set per
            request.
    motto.ott.page.v2.FooterLocaleContent:
      type: object
      properties:
        navigation:
          type: array
          items:
            $ref: '#/components/schemas/motto.ott.page.v2.FooterNavigationLink'
        social_networks:
          type: array
          items:
            $ref: '#/components/schemas/motto.ott.page.v2.FooterSocialNetwork'
          description: Rendered as icons.
        app_store_links:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.FooterAppStoreLinks'
          description: When provided, official store badge images are displayed.
    motto.ott.page.v2.FooterPoweredBy:
      type: object
      properties:
        show:
          type: boolean
          description: Defaults to true.
        name:
          type: string
          description: Defaults to "Motto".
        href:
          type: string
          description: Defaults to "https://mottostreaming.com".
      description: The 'Powered By' attribution at the bottom of the footer.
    motto.ott.page.v2.FooterColors:
      type: object
      properties:
        background:
          type: string
          description: Defaults to `base-100`.
        text:
          type: string
          description: Icons and primary text. Defaults to `base-content`.
        text_muted:
          type: string
          description: Links and copyright. Defaults to `base-content-300`.
        border:
          type: string
          description: The horizontal divider line. Defaults to `base-content-300`.
    motto.ott.page.v2.CardProperties:
      type: object
      properties:
        default:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.DefaultCard'
          description: >-
            Standard content display.


            Important: at most one of `default`, `team_vs_team`, `detailed`,
            `detailed_2`, `two_by_three`, `circle`, `circle_2`, `square`,
            `square_2`, `five_by_seven` may be set per request.
        team_vs_team:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.TeamVsTeamCard'
          description: >-
            Team-vs-team card for sports matches.


            Important: at most one of `default`, `team_vs_team`, `detailed`,
            `detailed_2`, `two_by_three`, `circle`, `circle_2`, `square`,
            `square_2`, `five_by_seven` may be set per request.
        detailed:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.DetailedCard'
          description: >-
            Lays out the date-time component next to the title.


            Important: at most one of `default`, `team_vs_team`, `detailed`,
            `detailed_2`, `two_by_three`, `circle`, `circle_2`, `square`,
            `square_2`, `five_by_seven` may be set per request.
        detailed_2:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.Detailed2Card'
          description: >-
            Lays out the date-time component below the title.


            Important: at most one of `default`, `team_vs_team`, `detailed`,
            `detailed_2`, `two_by_three`, `circle`, `circle_2`, `square`,
            `square_2`, `five_by_seven` may be set per request.
        two_by_three:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.TwoByThreeCard'
          description: >-
            Renders a title, date and a single detail line in a 2:3 (portrait
            poster) frame.


            Important: at most one of `default`, `team_vs_team`, `detailed`,
            `detailed_2`, `two_by_three`, `circle`, `circle_2`, `square`,
            `square_2`, `five_by_seven` may be set per request.
        circle:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.CircleCard'
          description: >-
            Circular layout, typically for logos/avatars.


            Important: at most one of `default`, `team_vs_team`, `detailed`,
            `detailed_2`, `two_by_three`, `circle`, `circle_2`, `square`,
            `square_2`, `five_by_seven` may be set per request.
        circle_2:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.Circle2Card'
          description: >-
            Circular layout, larger than `circle`.


            Important: at most one of `default`, `team_vs_team`, `detailed`,
            `detailed_2`, `two_by_three`, `circle`, `circle_2`, `square`,
            `square_2`, `five_by_seven` may be set per request.
        square:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.SquareCard'
          description: >-
            Square aspect ratio.


            Important: at most one of `default`, `team_vs_team`, `detailed`,
            `detailed_2`, `two_by_three`, `circle`, `circle_2`, `square`,
            `square_2`, `five_by_seven` may be set per request.
        square_2:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.Square2Card'
          description: >-
            Square aspect ratio with the primary line overlaid inside the image
            and the secondary line above it.


            Important: at most one of `default`, `team_vs_team`, `detailed`,
            `detailed_2`, `two_by_three`, `circle`, `circle_2`, `square`,
            `square_2`, `five_by_seven` may be set per request.
        five_by_seven:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.FiveBySevenCard'
          description: >-
            5:7 aspect ratio.


            Important: at most one of `default`, `team_vs_team`, `detailed`,
            `detailed_2`, `two_by_three`, `circle`, `circle_2`, `square`,
            `square_2`, `five_by_seven` may be set per request.
        background_color:
          type: string
          description: >-
            Hex color code, a predefined color (e.g. `primary`, `base-200`), or
            a keypath to a color field on
             the content item.
        background_image_url:
          type: string
          description: Direct URL or a keypath to a field on the content item.
        thumbnail_url:
          type: string
          description: Overrides the content item's own thumbnail. Direct URL or a keypath.
        padding:
          enum:
            - PADDING_UNSPECIFIED
            - PADDING_NONE
            - PADDING_SMALL
            - PADDING_MEDIUM
          type: string
          description: Applies to the circle, square and five-by-seven card types.
          format: enum
        border_radius:
          enum:
            - BORDER_RADIUS_UNSPECIFIED
            - BORDER_RADIUS_NONE
            - BORDER_RADIUS_SMALL
            - BORDER_RADIUS_MEDIUM
            - BORDER_RADIUS_LARGE
          type: string
          description: Primarily used for the square card types.
          format: enum
      description: >-
        The properties of a card. The `type` oneof selects the card type and
        carries the properties that
         only apply to it; the remaining properties apply to every type.
    motto.ott.page.v2.CardOverride:
      type: object
      properties:
        when:
          type: string
          description: >-
            KQL filter evaluated against the content item, e.g.
            `type_id:international_match`.
             Leave empty to always match.
        properties:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.CardProperties'
          description: >-
            Replaces the base properties when this entry matches. Setting a
            different card type here renders
             the card as that type, which also requires providing that type's properties.
    motto.ott.page.v2.TeamVsTeamThumbnail:
      type: object
      properties:
        keypaths:
          allOf:
            - $ref: >-
                #/components/schemas/motto.ott.page.v2.TeamVsTeamThumbnailKeypaths
          description: >-
            The keypaths applied to every content item, unless an override
            matches.
        overrides:
          type: array
          items:
            $ref: '#/components/schemas/motto.ott.page.v2.TeamVsTeamThumbnailOverride'
          description: >-
            Ordered list of exceptions. For a keypath set by more than one
            matching entry, the earliest wins.
    motto.ott.page.v2.DetailedVsThumbnail:
      type: object
      properties:
        keypaths:
          allOf:
            - $ref: >-
                #/components/schemas/motto.ott.page.v2.DetailedVsThumbnailKeypaths
          description: >-
            The keypaths applied to every content item, unless an override
            matches.
        overrides:
          type: array
          items:
            $ref: '#/components/schemas/motto.ott.page.v2.DetailedVsThumbnailOverride'
          description: >-
            Ordered list of exceptions. For a keypath set by more than one
            matching entry, the earliest wins.
    motto.ott.page.v2.DetailedThumbnail:
      type: object
      properties:
        keypaths:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.DetailedThumbnailKeypaths'
          description: >-
            The keypaths applied to every content item, unless an override
            matches.
        overrides:
          type: array
          items:
            $ref: '#/components/schemas/motto.ott.page.v2.DetailedThumbnailOverride'
          description: >-
            Ordered list of exceptions. For a keypath set by more than one
            matching entry, the earliest wins.
    motto.ott.page.v2.CalendarV2DayGridLayout:
      type: object
      properties: {}
    motto.ott.page.v2.CalendarV2CardMap:
      type: object
      properties:
        cards:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/motto.ott.page.v2.Card'
          description: >-
            Keyed by content type ID, with `default` as the fallback. Entries
            are standalone: they do not
             inherit from `default` or from one another.
    motto.ott.page.v2.RailFramedCarouselTheme:
      type: object
      properties:
        css_class:
          type: string
          description: Web only. Additional CSS classes.
    motto.ott.page.v2.RailWithSidePaneTheme:
      type: object
      properties:
        css_class:
          type: string
          description: Web only. Additional CSS classes.
    motto.ott.page.v2.FilterSelectControl:
      type: object
      properties:
        label:
          type: object
          additionalProperties:
            type: string
        placeholder:
          type: object
          additionalProperties:
            type: string
          description: Shown when no value is selected, e.g. "Select competition".
        url_param:
          type: string
          description: >-
            The session-storage key and URL query parameter this control writes
            to. Session storage holds the
             selected value (an entity for dynamic sources, a value/label option for static ones), or an array
             of them when `multi_select` is true; the URL mirrors the raw identifier, comma-separated for
             multi-select. Sibling components reference this key in `additional_filters` and read fields of
             the stored value via `{key.path}`.
        multi_select:
          type: boolean
        autocomplete:
          type: boolean
          description: >-
            Renders an inline text input to narrow the options. For a dynamic
            source the typed string is
             passed to `ListEntities` as `search` (debounced) and is not written to session storage; for a
             static source it filters locally. Not supported by the rail layout.
        default:
          type: array
          items:
            type: string
          description: >-
            Written to the URL on first page load when the parameter is absent.
            Must be a value the
             configured `source` can produce. Only one value unless `multi_select` is true.
        source:
          $ref: '#/components/schemas/motto.ott.page.v2.FilterSelectSource'
    motto.ott.page.v2.FilterDateRangeControl:
      type: object
      properties:
        label:
          type: object
          additionalProperties:
            type: string
        url_param_from:
          type: string
        url_param_to:
          type: string
        default:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.FilterDateRangeDefault'
          description: >-
            Written to the URL on first page load when the parameters are
            absent.
      description: >-
        Writes two independent session-storage entries, each holding an ISO-8601
        date (e.g. `2026-01-15`),
         mirrored to two URL parameters. Either end may be cleared independently. Consumers reference each
         side individually, e.g. `{ "from": "start_time>={from}", "to": "end_time<={to}" }`.
    motto.ott.page.v2.FilterSearchInputControl:
      type: object
      properties:
        label:
          type: object
          additionalProperties:
            type: string
        placeholder:
          type: object
          additionalProperties:
            type: string
          description: Shown inside the empty input, e.g. "Search…".
        url_param:
          type: string
        default:
          type: string
          description: Written to the URL on first page load when the parameter is absent.
      description: >-
        The typed string is written to session storage under `url_param` and
        mirrored to the URL.
         Consumers opt in with `additional_search: "<url_param>"`, which passes it as `search` in their
         list call.
    motto.ott.page.v2.FilterInlineLayout:
      type: object
      properties:
        alignment:
          enum:
            - FILTER_ALIGNMENT_UNSPECIFIED
            - FILTER_ALIGNMENT_START
            - FILTER_ALIGNMENT_END
          type: string
          description: Defaults to `FILTER_ALIGNMENT_START`.
          format: enum
    motto.ott.page.v2.FilterSidebarLayout:
      type: object
      properties: {}
    motto.ott.page.v2.FilterRailLayout:
      type: object
      properties: {}
    motto.ott.page.v2.MappingValue:
      type: object
      properties:
        options:
          type: array
          items:
            type: string
    motto.ott.page.v2.SponsorshipGridLayout:
      type: object
      properties:
        min_columns:
          type: integer
          description: >-
            Floor on the column count, which may otherwise be higher depending
            on screen size. Defaults to 1;
             typically set to 1 or 2 to stay usable on small screens.
          format: int32
        max_columns:
          type: integer
          description: >-
            Ceiling on the column count, which may otherwise be lower depending
            on screen size. Defaults to
             unbounded.
          format: int32
        aspect_ratio:
          type: string
          description: >-
            Width:height of each item's container, e.g. `16:9`, `1:1`.
            Determines item height from its width.
             Images inside are fitted with `contain`. Defaults to `1:1`.
    motto.ott.page.v2.SponsorshipCarouselLayout:
      type: object
      properties:
        min_columns:
          type: integer
          description: >-
            Floor on the number of items visible in the viewport, which may
            otherwise be higher depending on
             screen size. Defaults to 1.
          format: int32
        max_columns:
          type: integer
          description: >-
            Ceiling on the number of items visible in the viewport, which may
            otherwise be lower depending on
             screen size. Defaults to unbounded.
          format: int32
        aspect_ratio:
          type: string
          description: >-
            Width:height of each item's container, e.g. `16:9`, `1:1`. Together
            with the visible column count
             this determines the carousel height. Images inside are fitted with `contain`. Defaults to `1:1`.
    motto.ott.page.v2.SponsorshipMarqueeLayout:
      type: object
      properties:
        height:
          type: string
          description: Vertical space the marquee occupies, in pixels, e.g. `200px`.
        aspect_ratio:
          type: string
          description: >-
            Width:height of each item's container, e.g. `16:9`, `1:1`. Together
            with `height` this determines
             item width. Images inside are fitted with `contain`. Defaults to `1:1`.
    motto.ott.page.v2.FaqAnswer:
      type: object
      properties:
        text:
          type: object
          additionalProperties:
            type: string
    motto.ott.page.v2.FaqRedirect:
      type: object
      properties:
        url:
          type: object
          additionalProperties:
            type: string
    motto.ott.page.v2.FooterNavigationLink:
      type: object
      properties:
        title:
          type: string
        url:
          type: string
          description: >-
            Relative paths (e.g. `/privacy`) are prefixed with the current
            locale; absolute URLs open
             externally.
    motto.ott.page.v2.FooterSocialNetwork:
      type: object
      properties:
        platform:
          enum:
            - SOCIAL_NETWORK_PLATFORM_UNSPECIFIED
            - SOCIAL_NETWORK_PLATFORM_TWITTER
            - SOCIAL_NETWORK_PLATFORM_FACEBOOK
            - SOCIAL_NETWORK_PLATFORM_INSTAGRAM
            - SOCIAL_NETWORK_PLATFORM_TIKTOK
            - SOCIAL_NETWORK_PLATFORM_YOUTUBE
          type: string
          description: Determines which icon is rendered.
          format: enum
        url:
          type: string
    motto.ott.page.v2.FooterAppStoreLinks:
      type: object
      properties:
        google_play:
          type: string
        app_store:
          type: string
    motto.ott.page.v2.DefaultCard:
      type: object
      properties:
        show_description:
          type: boolean
        show_date:
          type: boolean
        primary_line:
          type: string
          description: The card's primary (top) line.
        secondary_line:
          type: string
          description: The card's secondary line.
      description: >-
        Card properties are keypaths to fields on the content item, e.g.
        `title`, `name`, or
         `fields.competition.item.name`.
    motto.ott.page.v2.TeamVsTeamCard:
      type: object
      properties:
        home_name:
          type: string
        away_name:
          type: string
        home_score:
          type: string
        away_score:
          type: string
        detail_line_1:
          type: string
          description: First detail line, e.g. season name.
        detail_line_2:
          type: string
          description: Second detail line, e.g. stadium name.
        show_live_scores:
          type: boolean
        fallback_image_url:
          type: string
          description: >-
            Background image behind the team logos, used instead of the team
            colors.
        badges:
          type: array
          items:
            $ref: '#/components/schemas/motto.ott.page.v2.CardBadge'
    motto.ott.page.v2.DetailedCard:
      type: object
      properties:
        primary_line:
          type: string
        secondary_line:
          type: string
        detail_line_1:
          type: string
        detail_line_2:
          type: string
        fallback_image_url:
          type: string
          description: Used when the content item has no thumbnail image URL.
        badges:
          type: array
          items:
            $ref: '#/components/schemas/motto.ott.page.v2.CardBadge'
    motto.ott.page.v2.Detailed2Card:
      type: object
      properties:
        primary_line:
          type: string
        secondary_line:
          type: string
        detail_line_1:
          type: string
        detail_line_2:
          type: string
        fallback_image_url:
          type: string
        badges:
          type: array
          items:
            $ref: '#/components/schemas/motto.ott.page.v2.CardBadge'
    motto.ott.page.v2.TwoByThreeCard:
      type: object
      properties:
        primary_line:
          type: string
        secondary_line:
          type: string
        detail_line_1:
          type: string
        fallback_image_url:
          type: string
    motto.ott.page.v2.CircleCard:
      type: object
      properties:
        primary_line:
          type: string
        secondary_line:
          type: string
        fallback_image_url:
          type: string
    motto.ott.page.v2.Circle2Card:
      type: object
      properties:
        primary_line:
          type: string
        secondary_line:
          type: string
        fallback_image_url:
          type: string
    motto.ott.page.v2.SquareCard:
      type: object
      properties:
        primary_line:
          type: string
        secondary_line:
          type: string
        fallback_image_url:
          type: string
    motto.ott.page.v2.Square2Card:
      type: object
      properties:
        primary_line:
          type: string
          description: Overlaid inside the image.
        secondary_line:
          type: string
          description: >-
            Shown above the primary line, e.g. a discipline or category. Can
            also be a hard-coded string.
        fallback_image_url:
          type: string
    motto.ott.page.v2.FiveBySevenCard:
      type: object
      properties:
        primary_line:
          type: string
        secondary_line:
          type: string
        fallback_image_url:
          type: string
    motto.ott.page.v2.TeamVsTeamThumbnailKeypaths:
      type: object
      properties:
        home_logo:
          type: string
        away_logo:
          type: string
        home_color:
          type: string
        away_color:
          type: string
        overlay:
          type: string
          description: >-
            Layered on top of the team colors, for branding or visual effects
            (16:9, PNG recommended).
    motto.ott.page.v2.TeamVsTeamThumbnailOverride:
      type: object
      properties:
        when:
          type: string
          description: >-
            KQL filter evaluated against the content item. Leave empty to always
            match.
        keypaths:
          $ref: '#/components/schemas/motto.ott.page.v2.TeamVsTeamThumbnailKeypaths'
    motto.ott.page.v2.DetailedVsThumbnailKeypaths:
      type: object
      properties:
        home_logo:
          type: string
        away_logo:
          type: string
        home_color:
          type: string
        away_color:
          type: string
        bg:
          type: string
          description: >-
            Base image for the entire card (16:9). Defaults to the event's
            uploaded thumbnail.
        overlay:
          type: string
          description: >-
            Layered on top of the base image, for branding or visual effects
            (16:9, PNG recommended).
        divider:
          type: string
          description: >-
            Sits between the home and away logos (1:1). Typically 'VS' text or a
            competition logo.
        logo:
          type: string
          description: Branding/competition/promo logo (2:1).
    motto.ott.page.v2.DetailedVsThumbnailOverride:
      type: object
      properties:
        when:
          type: string
          description: >-
            KQL filter evaluated against the content item. Leave empty to always
            match.
        keypaths:
          $ref: '#/components/schemas/motto.ott.page.v2.DetailedVsThumbnailKeypaths'
    motto.ott.page.v2.DetailedThumbnailKeypaths:
      type: object
      properties:
        bg:
          type: string
          description: >-
            Base image for the entire card (16:9). Defaults to the event's
            uploaded thumbnail.
        overlay:
          type: string
          description: >-
            Layered on top of the base image, for branding or visual effects
            (16:9, PNG recommended).
        logo:
          type: string
          description: Branding/competition/promo logo (2:1).
    motto.ott.page.v2.DetailedThumbnailOverride:
      type: object
      properties:
        when:
          type: string
          description: >-
            KQL filter evaluated against the content item. Leave empty to always
            match.
        keypaths:
          $ref: '#/components/schemas/motto.ott.page.v2.DetailedThumbnailKeypaths'
    motto.ott.page.v2.FilterSelectSource:
      type: object
      properties:
        dynamic:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.FilterDynamicSource'
          description: >-
            Fetched from the CMS via `ListEntities`.


            Important: at most one of `dynamic`, `static` may be set per
            request.
        static:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.FilterStaticSource'
          description: >-
            A hard-coded list, for values not backed by CMS entities (e.g. event
            statuses, sort orders).


            Important: at most one of `dynamic`, `static` may be set per
            request.
    motto.ott.page.v2.FilterDateRangeDefault:
      type: object
      properties:
        from:
          type: string
        to:
          type: string
    motto.ott.page.v2.CardBadge:
      type: object
      properties:
        text:
          type: string
          description: >-
            Keypath resolving to the badge text. If it resolves to an array,
            multiple badges are shown.
        bg_color:
          type: string
          description: >-
            Hex color or a predefined color (e.g. `accent`). Defaults to
            `primary`.
        text_color:
          type: string
          description: >-
            Hex color or a predefined color (e.g. `accent-content`). Defaults to
            `primary-content`.
    motto.ott.page.v2.FilterDynamicSource:
      type: object
      properties:
        filter:
          type: string
          description: >-
            KQL filter passed to `ListEntities`. May reference page parameters
            declared in `Page.parameters`
             (resolved by the content delivery API) and/or other controls' session-storage values (resolved
             client-side) using `{key.path}` syntax. The latter is what enables hierarchical filters.
        order:
          type: string
          description: Order-by string passed to `ListEntities`.
        limit:
          type: integer
          description: Maximum number of options to fetch.
          format: int32
    motto.ott.page.v2.FilterStaticSource:
      type: object
      properties:
        options:
          type: array
          items:
            $ref: '#/components/schemas/motto.ott.page.v2.FilterStaticOption'
    motto.ott.page.v2.FilterStaticOption:
      type: object
      properties:
        value:
          type: string
          description: The raw value written to the URL when this option is selected.
        label:
          type: object
          additionalProperties:
            type: string
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer

````