> ## 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

> UpdatePage

 Updates existing page.



## OpenAPI

````yaml patch /ott/pages/v2/{page_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/pages/v2/{page_id}:
    patch:
      tags:
        - PageService_v2
      description: |-
        UpdatePage

         Updates existing page.
      operationId: PageService_v2_UpdatePage
      parameters:
        - name: page_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/motto.ott.page.v2.UpdatePageRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/motto.ott.page.v2.UpdatePageResponse'
        default:
          description: Default error response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/google.rpc.Status'
components:
  schemas:
    motto.ott.page.v2.UpdatePageRequest:
      required:
        - page_id
        - page_type
        - platform_id
        - page_update
        - update_mask
      type: object
      properties:
        page_id:
          type: string
        page_type:
          enum:
            - PAGE_TYPE_UNSPECIFIED
            - PAGE_TYPE_DEFAULT
            - PAGE_TYPE_HOME
            - PAGE_TYPE_EVENT
            - PAGE_TYPE_CREATIVE_WORK
            - PAGE_TYPE_ENTITY
          type: string
          format: enum
        platform_id:
          type: string
        page_update:
          $ref: '#/components/schemas/motto.ott.page.v2.Page'
        update_mask:
          type: string
          format: field-mask
    motto.ott.page.v2.UpdatePageResponse:
      type: object
      properties:
        page:
          $ref: '#/components/schemas/motto.ott.page.v2.Page'
    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.Page:
      required:
        - id
        - project_id
        - page_type
      type: object
      properties:
        id:
          type: string
          description: >-
            User generated identifier for the page. It is unique in the context
            of a single page_type.
             This id is used to construct the non-slug version URL of this page.
             If this is a page that represents a single content type in the CMS (event/creative_work/entity),
             then this id should be the same as the type_id of that content type (e.g. "team")
        project_id:
          type: string
        name:
          type: string
          description: The name of this page entry. Not shown to end users.
        title:
          type: object
          additionalProperties:
            type: string
          description: >-
            A map of localized titles for this page, for end users to see. The
            key is the language code (ISO 639 - set 1), e.g. "en", "de", "fr",
            etc.
             If you want to localize the text for different regions of the same language, you can add the country code (ISO 3166-1 alpha-2), e.g. "en-US", "en-GB", etc.
             For PAGE_TYPE_EVENT, PAGE_TYPE_CREATIVE_WORK, and PAGE_TYPE_ENTITY, you can include reference properties of the
             resource you are loading dynamically, e.g. `{event.title}`, `{creative_work.description}` or `{entity.name}`.
             Important: this is also used in the page's HTML <metadata> and <title> tags.
             If this map is left empty, a best effort title will be generated (e.g. based on page_type + parameter data).

             Note: this overwrites the platform-level title configuration.
        description:
          type: object
          additionalProperties:
            type: string
          description: >-
            A map of localized descriptions for this page. This description will
            be included in the page metadata and can be
             important for search-engine optimization.
        page_type:
          enum:
            - PAGE_TYPE_UNSPECIFIED
            - PAGE_TYPE_DEFAULT
            - PAGE_TYPE_HOME
            - PAGE_TYPE_EVENT
            - PAGE_TYPE_CREATIVE_WORK
            - PAGE_TYPE_ENTITY
          type: string
          format: enum
        parameters:
          type: array
          items:
            type: string
          description: >-
            The list of parameters that a page instance should collect in order
            to work. For example ["competition_id"].
             The order of this list is important, as it will be used to parse the URL of a page.
             For example, if the page_type is PAGE_TYPE_ENTITY, the id is "competition", and the parameter list is ["id", "year"],
             then this page will listen to e.g. `https://example.com/en-US/entity/competition/HiKTtRZYdyGU/2024`.
             Important: the page will also listen to URLs that do not contain all the parameters. In that case, it will not render
             any component that is dependent on this parameter.
        page_component_ids:
          type: array
          items:
            type: string
          description: >-
            A list of page component IDs that together define the structure of
            the page.
             The order of this list determines the order in which the components are displayed towards end users.
        css:
          type: string
          description: >-
            Web only. CSS rules that should be included in the page. Can be used
            to override default page/component styling.
        platform_id:
          type: string
          description: The platform ID that this page is associated with.
        visibility:
          enum:
            - VISIBILITY_UNSPECIFIED
            - VISIBILITY_PUBLISHED
            - VISIBILITY_UNLISTED
            - VISIBILITY_HIDDEN
          type: string
          format: enum
        metadata_tags:
          type: object
          additionalProperties:
            type: string
          description: >-
            A map of metadata tags that should be included in the page. These
            tags can be used for search-engine optimization.
             Note that some default tags will already be set based on other fields on this object, like title and description.
        overrides:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/motto.ott.page.v2.PageOverride'
          description: >-
            A map of overrides for the page. This is useful for scenarios where
            some subset of Page instantiations should have different properties.
             The key is a filter, which can target any URL parameter or event/entity property.
             It supports AND and OR clauses, but not both at the same time. It does not support negation, or nesting.
             The value is a PageOverride, that will be applied to the page when the filter matches.
             For example:
             - if the regular page is for a "team" entity, but you want a special page for FC Barcelona, the key would
             be `team.id:fc_barca_123` (or whatever the ID of the FC Barcelona entity is).
             - if the regular page is for a "player" entity, but you want a special page for all players in the the national team,
             the key would be `player.fields.team.id:national_team_123` (or whatever the ID of the national team entity is), provided the player entity
             has a `team` field that references the team entity.
             - If the regular page is a "default" page like the "Search results" page, but you want a special page for the "FC Barcelona"
             search query, then you can use the key `q:FC Barcelona` (if "q" is your URL parameter name).

             Note that a hit on a page override will entirely replace the page components and other properties;
             it will not merge with the base page.
        page_components:
          type: array
          items:
            $ref: '#/components/schemas/motto.ott.page.v2.PageComponent'
          description: >-
            A list of page components that together define the structure of the
            page.
             The order of this list determines the order in which the components are displayed towards end users.
             This field can be set during creation for convenience, but for updating, use `page_component_ids` after creating individual components first.
             This field is not populated on List responses.
        is_preview:
          type: boolean
          description: >-
            Indicates that this page is a preview page. Preview pages are not
            shown to end users, but can be used for testing and previewing
            changes.
             When you wish to deploy a preview page to production (your main platform for end users), you should use `ClonePage`.
             When cloning, "dangling" page components that are only used by this page will also be deleted.
        source_page_id:
          type: string
          description: >-
            The page ID of the production page that this preview page is based
            on.
             This field is only relevant when "is_preview" is true. It will be set automatically when using the "ClonePage" API method.
        redirects:
          type: array
          items:
            $ref: '#/components/schemas/motto.ott.page.v2.PageRedirect'
          description: >-
            A configuration for redirecting this page to another page under
            specified conditions. This is useful for scenarios
             like when a user should see a marketing offer on the homepage if they are not yet signed in, or when the user is
             not allowed to access the platform from a certain region.
             There can be more than one redirect configured; in that case, the first matching redirect will be applied (if any).
      description: >-
        Page is a configuration object that defines the structure of a page, of
        which there can be arbitrarily many instances.
    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.PageOverride:
      type: object
      properties:
        name:
          type: string
          description: The name of this page entry. Not shown to end users.
        title:
          type: object
          additionalProperties:
            type: string
          description: >-
            A map of localized titles for this page, for end users to see. The
            key is the language code (ISO 639 - set 1), e.g. "en", "de", "fr",
            etc.
             If you want to localize the text for different regions of the same language, you can add the country code (ISO 3166-1 alpha-2), e.g. "en-US", "en-GB", etc.
             For PAGE_TYPE_EVENT, PAGE_TYPE_CREATIVE_WORK, and PAGE_TYPE_ENTITY, you can include reference properties of the
             resource you are loading dynamically, e.g. `{event.title}`, `{creative_work.description}` or `{entity.name}`.
             Important: this is also used in the page's HTML <metadata> and <title> tags.
             If this map is left empty, a best effort title will be generated (e.g. based on page_type + parameter data).

             Note: this overwrites the platform-level title configuration.
        description:
          type: object
          additionalProperties:
            type: string
          description: >-
            A map of localized descriptions for this page. This description will
            be included in the page metadata and can be
             important for search-engine optimization.
        page_component_ids:
          type: array
          items:
            type: string
          description: >-
            A list of page component IDs that together define the structure of
            the page.
             The order of this list determines the order in which the components are displayed towards end users.
        css:
          type: string
          description: >-
            Web only. CSS rules that should be included in the page. Can be used
            to override default page/component styling.
        metadata_tags:
          type: object
          additionalProperties:
            type: string
          description: >-
            A map of metadata tags that should be included in the page. These
            tags can be used for search-engine optimization.
             Note that some default tags will already be set based on other fields on this object, like title and description.
        page_components:
          type: array
          items:
            $ref: '#/components/schemas/motto.ott.page.v2.PageComponent'
          description: >-
            A list of page components that together define the structure of the
            page.
             The order of this list determines the order in which the components are displayed towards end users.
             This field can be set during creation for convenience, but for updating, use `page_component_ids` after creating individual components first.
      description: >-
        PageOverride is a subset of the Page message. It can be used to modify
        default behavior of a page.
    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.
    motto.ott.page.v2.PageRedirect:
      type: object
      properties:
        url:
          type: string
          description: |-
            The target page ID to which the user should be redirected.
             It is recommended NOT to include the language component in the URL, so the platform can select the appropriate
             language based on user preferences.
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/motto.ott.page.v2.PageRedirect_Condition'
          description: Redirect applies if ALL conditions in this list match (logical AND).
      description: >-
        PageRedirect is a configuration for redirecting this page to another
        page under specified conditions.
    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.PageRedirect_Condition:
      type: object
      properties:
        authentication:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.Condition_Authentication'
          description: Authentication condition
        geolocation:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.Condition_Geolocation'
          description: Geolocation condition
        entitlement:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.Condition_Entitlement'
          description: Entitlement condition
      description: A condition that must be met for the redirect to apply.
    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.Condition_Authentication:
      type: object
      properties:
        state:
          enum:
            - SIGNED_IN_STATE_UNSPECIFIED
            - SIGNED_IN_STATE_SIGNED_OUT
            - SIGNED_IN_STATE_SIGNED_IN
          type: string
          description: The state to match against.
          format: enum
      description: An authentication state condition.
    motto.ott.page.v2.Condition_Geolocation:
      type: object
      properties:
        on_countries:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.Condition_CountryCodes'
          description: Apply redirect if the user is in one of these countries.
        except_countries:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.Condition_CountryCodes'
          description: Apply redirect if the user is NOT in one of these countries.
      description: A geolocation condition.
    motto.ott.page.v2.Condition_Entitlement:
      type: object
      properties:
        entitled_to:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.Condition_OfferIds'
          description: Apply redirect if the user is entitled to any of these offers.
        not_entitled_to:
          allOf:
            - $ref: '#/components/schemas/motto.ott.page.v2.Condition_OfferIds'
          description: Apply redirect if the user is NOT entitled to any of these offers.
      description: An entitlement condition.
    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.Condition_CountryCodes:
      type: object
      properties:
        country_codes:
          type: array
          items:
            type: string
          description: >-
            A country code (ISO 3316-1 alpha-2:
            https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes)
      description: A list of country codes.
    motto.ott.page.v2.Condition_OfferIds:
      type: object
      properties:
        offer_ids:
          type: array
          items:
            type: string
          description: The offer IDs to check against.
      description: A list of offer IDs.
    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

````