# Generated with protoc-gen-openapi
# https://github.com/google/gnostic/tree/master/cmd/protoc-gen-openapi

openapi: 3.0.3
info:
    title: Studio API - Motto
    version: 0.0.0
servers:
    - url: https://api.mottostreaming.com
      description: Production server
paths:
    /accounting/usage/v1:
        get:
            tags:
                - UsageService
            description: |-
                ListUsages.

                 This method returns a list of usages, each representing the amount of
                 consumption for specific SKU, along with the associated units (e.g. GB,
                 minutes). The results can be filtered based on time periods using the
                 optional filter parameter.
            operationId: UsageService_ListUsages
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Optional KQL filter to apply to the list.
                     Filtering is only supported on the `start_time` and `end_time` fields.
                     For example, `filter: start_time:2024-09-01T00:00:00Z AND
                     end_time:2024-10-01T00:00:00Z`. If filter is empty, list returns usage for
                     current month.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.accounting.usage.v1.ListUsagesResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /analytics/activities/v1:
        get:
            tags:
                - ActivityService
            operationId: ActivityService_ListActivities
            parameters:
                - name: page_size
                  in: query
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Optional KQL filter to apply to the list of activities.
                     Filtering is only supported on the `dimensions` field and the supported operator is `=`.
                     If multiple filters are provided, they are combined using the `OR` operator.
                     For example, `filter: dimensions.video_id:123 OR dimensions.ingest_id:456`.
                  schema:
                    type: string
                - name: page_token
                  in: query
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.analytics.activity.v1.ListActivitiesResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /analytics/activities/v1/{activity_id}:
        get:
            tags:
                - ActivityService
            operationId: ActivityService_GetActivity
            parameters:
                - name: activity_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.analytics.activity.v1.GetActivityResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /annotations/action_secrets/v1:
        get:
            tags:
                - ActionSecretService
            description: |-
                ListActionSecrets

                 Returns list of action types
            operationId: ActionSecretService_ListActionSecrets
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-secret by properties using a subset of the Kibana Query Language.
                     Reserved only: there are no filterable fields.
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.action_secret.v1.ListActionSecretsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - ActionSecretService
            description: |-
                CreateActionSecret

                 Creates new annotation.
            operationId: ActionSecretService_CreateActionSecret
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.annotations.action_secret.v1.ActionSecret'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.action_secret.v1.CreateActionSecretResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /annotations/action_secrets/v1/{secret_id}:
        get:
            tags:
                - ActionSecretService
            description: |-
                GetActionSecret

                 Returns an action type
            operationId: ActionSecretService_GetActionSecret
            parameters:
                - name: secret_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.action_secret.v1.GetActionSecretResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - ActionSecretService
            description: |-
                DeleteActionSecret

                 Deletes an existing annotation.
            operationId: ActionSecretService_DeleteActionSecret
            parameters:
                - name: secret_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.action_secret.v1.DeleteActionSecretResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - ActionSecretService
            description: |-
                UpdateActionSecret

                 Updates an existing annotation.
            operationId: ActionSecretService_UpdateActionSecret
            parameters:
                - name: secret_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.annotations.action_secret.v1.UpdateActionSecretRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.action_secret.v1.UpdateActionSecretResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /annotations/action_types/v1:
        get:
            tags:
                - ActionTypeService
            description: |-
                ListActionTypes

                 Returns list of action types
            operationId: ActionTypeService_ListActionTypes
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: filter
                  in: query
                  description: |-
                    Filter the result-action_type by properties using a subset of the Kibana Query Language.
                     Currently supported fields: `disabled`
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.action_type.v1.ListActionTypesResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /annotations/action_types/v1/{action_type_id}:
        get:
            tags:
                - ActionTypeService
            description: |-
                GetActionType

                 Returns an action type
            operationId: ActionTypeService_GetActionType
            parameters:
                - name: action_type_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.action_type.v1.GetActionTypeResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /annotations/actions/v1/resume:
        post:
            tags:
                - ActionService
            description: |-
                ResumeAction

                 Instructs an action invocation to continue where it left off, after it was waiting for some async process to complete.
                 This is typically only invoked by the system, not by users.
            operationId: ActionService_ResumeAction
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.annotations.action.v1.ResumeActionRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.action.v1.ResumeActionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /annotations/annotations/v1:
        get:
            tags:
                - AnnotationService
            description: |-
                ListAnnotations

                 Returns list of annotations.
            operationId: AnnotationService_ListAnnotations
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language. Only AND statements are supported.
                     E.g. `video_id:49fjdSRE3ma9 and type_id:goal`
                     Important: When providing a filter, the `video_id` property is required.
                  schema:
                    type: string
                - name: order_by
                  in: query
                  description: |-
                    Specifies the result ordering for List requests.
                     Supported values are:
                      * "offset asc|desc"
                      * "order asc|desc"
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.annotation.v1.ListAnnotationsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - AnnotationService
            description: |-
                CreateAnnotation

                 Creates new annotation.
            operationId: AnnotationService_CreateAnnotation
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.annotations.annotation.v1.Annotation'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.annotation.v1.CreateAnnotationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /annotations/annotations/v1/{annotation_id}:
        get:
            tags:
                - AnnotationService
            description: |-
                GetAnnotation

                 Returns annotation information by annotation ID.
            operationId: AnnotationService_GetAnnotation
            parameters:
                - name: annotation_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.annotation.v1.GetAnnotationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - AnnotationService
            description: |-
                DeleteAnnotation

                 Deletes an existing annotation.
            operationId: AnnotationService_DeleteAnnotation
            parameters:
                - name: annotation_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.annotation.v1.DeleteAnnotationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - AnnotationService
            description: |-
                UpdateAnnotation

                 Updates an existing annotation.
            operationId: AnnotationService_UpdateAnnotation
            parameters:
                - name: annotation_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.annotations.annotation.v1.UpdateAnnotationRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.annotation.v1.UpdateAnnotationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /annotations/sets/v1:
        get:
            tags:
                - AnnotationSetService
            description: |-
                ListAnnotations

                 Returns list of groups of annotation sets.
            operationId: AnnotationSetService_ListAnnotationSets
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language. Only AND statements are supported.
                     E.g. `content_base_type:event and content_type_id:football_match and disabled:false`

                     Note: `content_base_type` and `content_type_id` are mandatory. These values should match content types as they
                     have been defined in the CMS service.
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.set.v1.ListAnnotationSetsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - AnnotationSetService
            description: |-
                CreateAnnotationSet

                 Creates a new type.
            operationId: AnnotationSetService_CreateAnnotationSet
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.annotations.set.v1.AnnotationSet'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.set.v1.CreateAnnotationSetResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /annotations/sets/v1/{set_id}:
        get:
            tags:
                - AnnotationSetService
            description: Returns an annotation type
            operationId: AnnotationSetService_GetAnnotationSet
            parameters:
                - name: set_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.set.v1.GetAnnotationSetResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - AnnotationSetService
            description: |-
                DeleteAnnotationSet

                 Updates type
            operationId: AnnotationSetService_DeleteAnnotationSet
            parameters:
                - name: set_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.set.v1.DeleteAnnotationSetResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - AnnotationSetService
            description: |-
                UpdateAnnotationSet

                 Updates type
            operationId: AnnotationSetService_UpdateAnnotationSet
            parameters:
                - name: set_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.annotations.set.v1.UpdateAnnotationSetRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.set.v1.UpdateAnnotationSetResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /annotations/sets/v1/{set_id}/attach:
        post:
            tags:
                - AnnotationSetService
            description: |-
                AttachContentType

                 Attaches an annotation set to a CMS content type. Any previously assigned annotation set will be replaced.
                 `content_base_type` should be either `event` or `creative_work`.
                 `content_type_id` should be the ID of the content type as defined in the CMS service.
            operationId: AnnotationSetService_AttachContentType
            parameters:
                - name: set_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: content_base_type
                  in: query
                  description: Should be either `event` or `creative_work`.
                  required: true
                  schema:
                    type: string
                - name: content_type_id
                  in: query
                  description: Should be the ID of the content type as defined in the CMS service.
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.set.v1.AttachContentTypeResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /annotations/sets/v1/{set_id}/detach:
        post:
            tags:
                - AnnotationSetService
            description: |-
                DetachContentType

                 Detaches (removes) the currently attached set_id from a CMS content type.
            operationId: AnnotationSetService_DetachContentType
            parameters:
                - name: set_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: content_base_type
                  in: query
                  description: Should be either `event` or `creative_work`.
                  required: true
                  schema:
                    type: string
                - name: content_type_id
                  in: query
                  description: Should be the ID of the content type as defined in the CMS service.
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.set.v1.DetachContentTypeResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /annotations/types/v1:
        get:
            tags:
                - AnnotationTypeService
            description: |-
                ListAnnotations

                 Returns list of groups of annotation types.
            operationId: AnnotationTypeService_ListAnnotationTypes
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language. Only AND statements are supported.
                     E.g. `set_id:football and disabled:false`

                     Note: `set_id` is mandatory.
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.type.v1.ListAnnotationTypesResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - AnnotationTypeService
            description: |-
                CreateAnnotationType

                 Creates a new type.
            operationId: AnnotationTypeService_CreateAnnotationType
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.annotations.type.v1.AnnotationType'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.type.v1.CreateAnnotationTypeResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /annotations/types/v1/{annotation_type_id}/action_configuration:
        get:
            tags:
                - ActionConfigurationService
            description: |-
                GetActionConfiguration

                 Associates a number of action types with an annotation type. This means that when an annotation is created, it will
                 trigger the associated actions to be executed.
            operationId: ActionConfigurationService_GetActionConfiguration
            parameters:
                - name: annotation_type_id
                  in: path
                  description: The id of the annotation type to attach action types to
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.action_configuration.v1.GetActionConfigurationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - ActionConfigurationService
            description: |-
                SetActionConfiguration

                 Associates a number of action types with an annotation type. This means that when an annotation is created, it will
                 trigger the associated actions to be executed.

                 Note: To update action types on an annotation type, all action type IDs and the configuration must be re-submitted.
                 To help with this, you can retrieve the current action type IDs and configuration via the GET call.
            operationId: ActionConfigurationService_SetActionConfiguration
            parameters:
                - name: annotation_type_id
                  in: path
                  description: The id of the annotation type to attach action types to
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.annotations.action_configuration.v1.SetActionConfigurationRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.action_configuration.v1.SetActionConfigurationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /annotations/types/v1/{type_id}:
        get:
            tags:
                - AnnotationTypeService
            description: |-
                GetAnnotationType

                 Returns an annotation type
            operationId: AnnotationTypeService_GetAnnotationType
            parameters:
                - name: type_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.type.v1.GetAnnotationTypeResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - AnnotationTypeService
            description: |-
                DeleteAnnotationType

                 Updates type
            operationId: AnnotationTypeService_DeleteAnnotationType
            parameters:
                - name: type_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.type.v1.DeleteAnnotationTypeResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - AnnotationTypeService
            description: |-
                UpdateAnnotationType

                 Updates type
            operationId: AnnotationTypeService_UpdateAnnotationType
            parameters:
                - name: type_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.annotations.type.v1.UpdateAnnotationTypeRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.annotations.type.v1.UpdateAnnotationTypeResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banner_collections/v1:
        get:
            tags:
                - BannerService
            description: |-
                ListBannerCollections

                 Returns list of banner collections.
            operationId: BannerService_ListBannerCollections
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     Currently filter can be applied to `name`, optionally with a `*` suffix for prefix matching. It does not support suffix or infix matching.
                     E.g. `name:Real Mad*`
                  schema:
                    type: string
                - name: order_by
                  in: query
                  description: Reserved for future use
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v1.ListBannerCollectionsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - BannerService
            description: |-
                CreateBannerCollection

                 Creates a new banner collection.
            operationId: BannerService_CreateBannerCollection
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v1.BannerCollection'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v1.CreateBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banner_collections/v1/{banner_collection_id}:
        get:
            tags:
                - BannerService
            description: |-
                GetBannerCollection

                 Returns banner collection information by collection ID.
            operationId: BannerService_GetBannerCollection
            parameters:
                - name: banner_collection_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v1.GetBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - BannerService
            description: |-
                DeleteBannerCollection

                 Deletes an existing banner collection.
            operationId: BannerService_DeleteBannerCollection
            parameters:
                - name: banner_collection_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v1.DeleteBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - BannerService
            description: |-
                UpdateBannerCollection

                 Updates an existing banner collection.
            operationId: BannerService_UpdateBannerCollection
            parameters:
                - name: banner_collection_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v1.UpdateBannerCollectionRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v1.UpdateBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banner_collections/v2:
        get:
            tags:
                - BannerV2Service_v2
            description: |-
                ListBannerCollections

                 Returns list of banner collections.
            operationId: BannerV2Service_v2_ListBannerCollections
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     Currently filter can be applied to `name`, optionally with a `*` suffix for prefix matching. It does not support suffix or infix matching.
                     E.g. `name:Real Mad*`
                  schema:
                    type: string
                - name: order_by
                  in: query
                  description: Reserved for future use
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.ListBannerCollectionsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - BannerV2Service_v2
            description: |-
                CreateBannerCollection

                 Creates a new banner collection.
            operationId: BannerV2Service_v2_CreateBannerCollection
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v2.BannerCollection'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.CreateBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banner_collections/v2/{banner_collection_id}:
        get:
            tags:
                - BannerV2Service_v2
            description: |-
                GetBannerCollection

                 Returns banner collection information by collection ID.
            operationId: BannerV2Service_v2_GetBannerCollection
            parameters:
                - name: banner_collection_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.GetBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - BannerV2Service_v2
            description: |-
                DeleteBannerCollection

                 Deletes an existing banner collection.
            operationId: BannerV2Service_v2_DeleteBannerCollection
            parameters:
                - name: banner_collection_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.DeleteBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - BannerV2Service_v2
            description: |-
                UpdateBannerCollection

                 Updates an existing banner collection.
            operationId: BannerV2Service_v2_UpdateBannerCollection
            parameters:
                - name: banner_collection_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v2.UpdateBannerCollectionRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.UpdateBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banner_collections/v2/{banner_collection_id}/clone:
        post:
            tags:
                - BannerV2Service_v2
            operationId: BannerV2Service_v2_CloneBannerCollection
            parameters:
                - name: banner_collection_id
                  in: path
                  description: The banner collection ID to clone from.
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v2.CloneBannerCollectionRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.CloneBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banner_collections/v2/{banner_collection_id}/compare:
        get:
            tags:
                - BannerV2Service_v2
            description: |-
                CompareBannerCollection

                 Returns a JSON representation of the production and preview versions of this banner collection. The client can then use that
                 to display a diff to the user.
                 Important: this only works on banner collections that have both a production and a preview version, i.e. banner collections that have been
                 cloned but not yet deployed.
            operationId: BannerV2Service_v2_CompareBannerCollection
            parameters:
                - name: banner_collection_id
                  in: path
                  description: The banner collection ID to diff.
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.CompareBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banner_collections/v2/{banner_collection_id}/deploy:
        post:
            tags:
                - BannerV2Service_v2
            operationId: BannerV2Service_v2_DeployBannerCollection
            parameters:
                - name: banner_collection_id
                  in: path
                  description: The banner collection ID to deploy.
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v2.DeployBannerCollectionRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.DeployBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banner_collections/v3:
        get:
            tags:
                - BannerV3Service_v3
            description: |-
                ListBannerCollections

                 Returns list of banner collections.
            operationId: BannerV3Service_v3_ListBannerCollections
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     Currently filter can be applied to `name`, optionally with a `*` suffix for prefix matching. It does not support suffix or infix matching.
                     E.g. `name:Real Mad*`
                  schema:
                    type: string
                - name: order_by
                  in: query
                  description: Reserved for future use
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.ListBannerCollectionsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - BannerV3Service_v3
            description: |-
                CreateBannerCollection

                 Creates a new banner collection.
            operationId: BannerV3Service_v3_CreateBannerCollection
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v3.BannerCollection'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.CreateBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banner_collections/v3/{banner_collection_id}:
        get:
            tags:
                - BannerV3Service_v3
            description: |-
                GetBannerCollection

                 Returns banner collection information by collection ID.
            operationId: BannerV3Service_v3_GetBannerCollection
            parameters:
                - name: banner_collection_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.GetBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - BannerV3Service_v3
            description: |-
                DeleteBannerCollection

                 Deletes an existing banner collection.
            operationId: BannerV3Service_v3_DeleteBannerCollection
            parameters:
                - name: banner_collection_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.DeleteBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - BannerV3Service_v3
            description: |-
                UpdateBannerCollection

                 Updates an existing banner collection.
            operationId: BannerV3Service_v3_UpdateBannerCollection
            parameters:
                - name: banner_collection_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v3.UpdateBannerCollectionRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.UpdateBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banner_collections/v3/{banner_collection_id}/clone:
        post:
            tags:
                - BannerV3Service_v3
            operationId: BannerV3Service_v3_CloneBannerCollection
            parameters:
                - name: banner_collection_id
                  in: path
                  description: The banner collection ID to clone from.
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v3.CloneBannerCollectionRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.CloneBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banner_collections/v3/{banner_collection_id}/compare:
        get:
            tags:
                - BannerV3Service_v3
            description: |-
                CompareBannerCollection

                 Returns a JSON representation of the production and preview versions of this banner collection. The client can then use that
                 to display a diff to the user.
                 Important: this only works on banner collections that have both a production and a preview version, i.e. banner collections that have been
                 cloned but not yet deployed.
            operationId: BannerV3Service_v3_CompareBannerCollection
            parameters:
                - name: banner_collection_id
                  in: path
                  description: The banner collection ID to diff.
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.CompareBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banner_collections/v3/{banner_collection_id}/deploy:
        post:
            tags:
                - BannerV3Service_v3
            operationId: BannerV3Service_v3_DeployBannerCollection
            parameters:
                - name: banner_collection_id
                  in: path
                  description: The banner collection ID to deploy.
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v3.DeployBannerCollectionRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.DeployBannerCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banners/v1:
        get:
            tags:
                - BannerService
            description: |-
                ListBanners

                 Returns list of banners.
            operationId: BannerService_ListBanners
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: order_by
                  in: query
                  description: |-
                    Specifies the result ordering for List requests.
                     Supported values are:
                      * "name asc|desc"
                  required: true
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v1.ListBannersResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - BannerService
            description: |-
                CreateBanner

                 Creates new banner.
            operationId: BannerService_CreateBanner
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v1.Banner'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v1.CreateBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banners/v1/batch:
        get:
            tags:
                - BannerService
            description: |-
                BatchGetBanners

                 Returns banner information by banner IDs.
            operationId: BannerService_BatchGetBanners
            parameters:
                - name: banner_ids
                  in: query
                  required: true
                  schema:
                    type: array
                    items:
                        type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v1.BatchGetBannersResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banners/v1/{banner_id}:
        get:
            tags:
                - BannerService
            description: |-
                GetBanner

                 Returns banner information by banner ID.
            operationId: BannerService_GetBanner
            parameters:
                - name: banner_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v1.GetBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - BannerService
            description: |-
                DeleteBanner

                 Deletes an existing banner.
            operationId: BannerService_DeleteBanner
            parameters:
                - name: banner_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v1.DeleteBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - BannerService
            description: |-
                UpdateBanner

                 Updates an existing banner.
            operationId: BannerService_UpdateBanner
            parameters:
                - name: banner_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v1.UpdateBannerRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v1.UpdateBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banners/v2:
        get:
            tags:
                - BannerV2Service_v2
            description: |-
                ListBanners

                 Returns list of banners.
            operationId: BannerV2Service_v2_ListBanners
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: order_by
                  in: query
                  description: |-
                    Specifies the result ordering for List requests.
                     Supported values are:
                      * "name asc|desc"
                  required: true
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.ListBannersResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - BannerV2Service_v2
            description: |-
                CreateBanner

                 Creates new banner.
            operationId: BannerV2Service_v2_CreateBanner
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v2.Banner'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.CreateBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banners/v2/batch:
        get:
            tags:
                - BannerV2Service_v2
            description: |-
                BatchGetBanners

                 Returns banner information by banner IDs.
            operationId: BannerV2Service_v2_BatchGetBanners
            parameters:
                - name: banner_ids
                  in: query
                  required: true
                  schema:
                    type: array
                    items:
                        type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.BatchGetBannersResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banners/v2/template_data:
        get:
            tags:
                - BannerV2Service_v2
            description: |-
                GetSimilarBannerTemplateData

                 Looks for existing banners that are similar to the one being created, and if one exists, extracts template data
                 from an existing banner. This can be used to help create new banners with the same template, without having to
                 manually provide all template data again.
            operationId: BannerV2Service_v2_GetSimilarBannerTemplateData
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: banner_type
                  in: query
                  required: true
                  schema:
                    enum:
                        - BANNER_TYPE_UNSPECIFIED
                        - BANNER_TYPE_DEFAULT
                        - BANNER_TYPE_EVENT
                        - BANNER_TYPE_CREATIVE_WORK
                        - BANNER_TYPE_ENTITY
                    type: string
                    format: enum
                - name: content_id
                  in: query
                  description: Single banner - it is connected to a single content item (either an event, entity, or creative work).
                  schema:
                    type: string
                - name: dynamic_target.filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     This will make a List API call to retrieve the relevant resource for this banner.
                     For BANNER_TYPE_EVENT, this would be a ListEvents call.
                     For BANNER_TYPE_CREATIVE_WORK, this would be a ListCreativeWorks call.
                     For BANNER_TYPE_ENTITY, this would be a ListEntities call,

                     For example, let's say a BANNER_TYPE_EVENT banner is shown on a competition page, and the goal is to show the
                     first upcoming event from that competition in the banner.
                     The filter could be: `status:EVENT_STATUS_SCHEDULED and fields.competition.id:{id}`
                     in combination with the `order_by` value of `start_time asc` to get the next upcoming event.
                  schema:
                    type: string
                - name: dynamic_target.order_by
                  in: query
                  description: To be used in combination with `filter`. See documentation there for more details.
                  schema:
                    type: string
                - name: dynamic_target.offset
                  in: query
                  description: |-
                    The number of items to offset the result-set by. This is useful when multiple banners exist with the same filter/order_by,
                     and you want to show different items in each banner.
                  schema:
                    type: string
                - name: template_type
                  in: query
                  description: The type of template for which to retrieve similar data.
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.GetSimilarBannerTemplateDataResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banners/v2/{banner_id}:
        get:
            tags:
                - BannerV2Service_v2
            description: |-
                GetBanner

                 Returns banner information by banner ID.
            operationId: BannerV2Service_v2_GetBanner
            parameters:
                - name: banner_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.GetBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - BannerV2Service_v2
            description: |-
                DeleteBanner

                 Deletes an existing banner.
            operationId: BannerV2Service_v2_DeleteBanner
            parameters:
                - name: banner_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.DeleteBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - BannerV2Service_v2
            description: |-
                UpdateBanner

                 Updates an existing banner.
            operationId: BannerV2Service_v2_UpdateBanner
            parameters:
                - name: banner_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v2.UpdateBannerRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.UpdateBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banners/v2/{banner_id}/clone:
        post:
            tags:
                - BannerV2Service_v2
            operationId: BannerV2Service_v2_CloneBanner
            parameters:
                - name: banner_id
                  in: path
                  description: The banner ID to clone from.
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v2.CloneBannerRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.CloneBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banners/v2/{banner_id}/compare:
        get:
            tags:
                - BannerV2Service_v2
            description: |-
                CompareBanner

                 Returns a JSON representation of the production and preview versions of this banner. The client can then use that
                 to display a diff to the user.
                 Important: this only works on banners that have both a production and a preview version, i.e. banners that have been
                 cloned but not yet deployed.
            operationId: BannerV2Service_v2_CompareBanner
            parameters:
                - name: banner_id
                  in: path
                  description: The banner ID to diff.
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.CompareBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banners/v2/{banner_id}/deploy:
        post:
            tags:
                - BannerV2Service_v2
            operationId: BannerV2Service_v2_DeployBanner
            parameters:
                - name: banner_id
                  in: path
                  description: The banner ID to deploy.
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v2.DeployBannerRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v2.DeployBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banners/v3:
        get:
            tags:
                - BannerV3Service_v3
            description: |-
                ListBanners

                 Returns list of banners.
            operationId: BannerV3Service_v3_ListBanners
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: order_by
                  in: query
                  description: |-
                    Specifies the result ordering for List requests.
                     Supported values are:
                      * "name asc|desc"
                  required: true
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.ListBannersResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - BannerV3Service_v3
            description: |-
                CreateBanner

                 Creates new banner.
            operationId: BannerV3Service_v3_CreateBanner
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v3.Banner'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.CreateBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banners/v3/batch:
        get:
            tags:
                - BannerV3Service_v3
            description: |-
                BatchGetBanners

                 Returns banner information by banner IDs.
            operationId: BannerV3Service_v3_BatchGetBanners
            parameters:
                - name: banner_ids
                  in: query
                  required: true
                  schema:
                    type: array
                    items:
                        type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.BatchGetBannersResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banners/v3/template:
        get:
            tags:
                - BannerV3Service_v3
            description: |-
                GetSimilarBannerTemplate

                 Looks for existing banners that are similar to the one being created, and if one exists, extracts the template
                 content from that banner. This can be used to help create new banners with the same template, without having to
                 manually provide all template content again.
            operationId: BannerV3Service_v3_GetSimilarBannerTemplate
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: banner_type
                  in: query
                  required: true
                  schema:
                    enum:
                        - BANNER_TYPE_UNSPECIFIED
                        - BANNER_TYPE_DEFAULT
                        - BANNER_TYPE_EVENT
                        - BANNER_TYPE_CREATIVE_WORK
                        - BANNER_TYPE_ENTITY
                    type: string
                    format: enum
                - name: content_id
                  in: query
                  description: Single banner - it is connected to a single content item (either an event, entity, or creative work).
                  schema:
                    type: string
                - name: dynamic_target.filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     This will make a List API call to retrieve the relevant resource for this banner.
                     For BANNER_TYPE_EVENT, this would be a ListEvents call.
                     For BANNER_TYPE_CREATIVE_WORK, this would be a ListCreativeWorks call.
                     For BANNER_TYPE_ENTITY, this would be a ListEntities call,

                     For example, let's say a BANNER_TYPE_EVENT banner is shown on a competition page, and the goal is to show the
                     first upcoming event from that competition in the banner.
                     The filter could be: `status:EVENT_STATUS_SCHEDULED and fields.competition.id:{id}`
                     in combination with the `order_by` value of `start_time asc` to get the next upcoming event.
                  schema:
                    type: string
                - name: dynamic_target.order_by
                  in: query
                  description: To be used in combination with `filter`. See documentation there for more details.
                  schema:
                    type: string
                - name: dynamic_target.offset
                  in: query
                  description: |-
                    The number of items to offset the result-set by. This is useful when multiple banners exist with the same filter/order_by,
                     and you want to show different items in each banner.
                  schema:
                    type: string
                - name: template_type
                  in: query
                  description: The type of template for which to retrieve similar content.
                  required: true
                  schema:
                    enum:
                        - BANNER_TEMPLATE_TYPE_UNSPECIFIED
                        - BANNER_TEMPLATE_TYPE_DEFAULT
                        - BANNER_TEMPLATE_TYPE_DEFAULT_ENTITY
                        - BANNER_TEMPLATE_TYPE_ENTITY_1
                        - BANNER_TEMPLATE_TYPE_FEATURE_BANNER
                        - BANNER_TEMPLATE_TYPE_SINGLE_EVENT
                        - BANNER_TEMPLATE_TYPE_TEAM_VS_TEAM_HERO
                        - BANNER_TEMPLATE_TYPE_TEAM_VS_TEAM_MIDPAGE
                        - BANNER_TEMPLATE_TYPE_CUSTOM
                    type: string
                    format: enum
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.GetSimilarBannerTemplateResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banners/v3/{banner_id}:
        get:
            tags:
                - BannerV3Service_v3
            description: |-
                GetBanner

                 Returns banner information by banner ID.
            operationId: BannerV3Service_v3_GetBanner
            parameters:
                - name: banner_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.GetBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - BannerV3Service_v3
            description: |-
                DeleteBanner

                 Deletes an existing banner.
            operationId: BannerV3Service_v3_DeleteBanner
            parameters:
                - name: banner_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.DeleteBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - BannerV3Service_v3
            description: |-
                UpdateBanner

                 Updates an existing banner.
            operationId: BannerV3Service_v3_UpdateBanner
            parameters:
                - name: banner_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v3.UpdateBannerRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.UpdateBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banners/v3/{banner_id}/clone:
        post:
            tags:
                - BannerV3Service_v3
            operationId: BannerV3Service_v3_CloneBanner
            parameters:
                - name: banner_id
                  in: path
                  description: The banner ID to clone from.
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v3.CloneBannerRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.CloneBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banners/v3/{banner_id}/compare:
        get:
            tags:
                - BannerV3Service_v3
            description: |-
                CompareBanner

                 Returns a JSON representation of the production and preview versions of this banner. The client can then use that
                 to display a diff to the user.
                 Important: this only works on banners that have both a production and a preview version, i.e. banners that have been
                 cloned but not yet deployed.
            operationId: BannerV3Service_v3_CompareBanner
            parameters:
                - name: banner_id
                  in: path
                  description: The banner ID to diff.
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.CompareBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/banners/v3/{banner_id}/deploy:
        post:
            tags:
                - BannerV3Service_v3
            operationId: BannerV3Service_v3_DeployBanner
            parameters:
                - name: banner_id
                  in: path
                  description: The banner ID to deploy.
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.banner.v3.DeployBannerRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.banner.v3.DeployBannerResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/creative_works/v1:
        get:
            tags:
                - CreativeWorkService
            description: |-
                ListCreativeWorks

                 Returns list of creative works based on specified parameters.
            operationId: CreativeWorkService_ListCreativeWorks
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language. Only AND statements are supported.
                     E.g. `status:CREATIVE_WORK_STATUS_RELEASED and type_id:documentary`
                     For filtering on creative works without a type_id, use `type_id:default`.
                  schema:
                    type: string
                - name: order_by
                  in: query
                  description: |-
                    Specifies the result ordering for List requests.
                     Supported values are:
                      * "title asc|desc"
                      * "release_time asc|desc"
                     This order is not applied when combined with `search` or `pinned` parameters.
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
                - name: search
                  in: query
                  description: |-
                    Any user-provided search query (as a plain string). This works in tandem with the filter parameter.
                     Using `search` will automatically order all results by relevance instead of the supplied `order_by` value.
                  schema:
                    type: string
                - name: pinned
                  in: query
                  description: |-
                    One or more creative work IDs that you want to receive at the top of the results (if it is available).
                     Pinned items will not be included in the results if it does not match the filter. It will, however, ignore the
                     `search` parameter.
                     Using `pinned` will automatically order all results by relevance instead of the supplied `order_by` value.
                  schema:
                    type: array
                    items:
                        type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.creative_work.v1.ListCreativeWorksResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - CreativeWorkService
            description: |-
                CreateCreativeWork

                 Creates new creative work.
            operationId: CreativeWorkService_CreateCreativeWork
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.creative_work.v1.CreativeWork'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.creative_work.v1.CreateCreativeWorkResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/creative_works/v1/export:
        post:
            tags:
                - CreativeWorkService
            operationId: CreativeWorkService_BatchExportCreativeWorks
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.creative_work.v1.BatchExportCreativeWorksRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.creative_work.v1.BatchExportCreativeWorksResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/creative_works/v1/import:
        post:
            tags:
                - CreativeWorkService
            operationId: CreativeWorkService_BatchImportCreativeWorks
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.creative_work.v1.BatchImportCreativeWorksRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.creative_work.v1.BatchImportCreativeWorksResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/creative_works/v1/import_template:
        get:
            tags:
                - CreativeWorkService
            operationId: CreativeWorkService_GetImportTemplate
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: type_id
                  in: query
                  description: The type of creative works that should be created with this template.
                  required: true
                  schema:
                    type: string
                - name: locales
                  in: query
                  description: The locales that some of the fields in the template file should be provided in.
                  schema:
                    type: array
                    items:
                        type: string
                - name: timezone
                  in: query
                  description: IANA timezone identifier (e.g., "America/New_York", "Europe/London")
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.creative_work.v1.GetImportTemplateResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/creative_works/v1/{creative_work_id}:
        get:
            tags:
                - CreativeWorkService
            description: |-
                GetCreativeWork

                 Returns creative work information by creative work ID.
            operationId: CreativeWorkService_GetCreativeWork
            parameters:
                - name: creative_work_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.creative_work.v1.GetCreativeWorkResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - CreativeWorkService
            description: |-
                DeleteCreativeWork

                 Deletes existing creative work.
            operationId: CreativeWorkService_DeleteCreativeWork
            parameters:
                - name: creative_work_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.creative_work.v1.DeleteCreativeWorkResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - CreativeWorkService
            description: |-
                UpdateCreativeWork

                 Updates existing creative work.
            operationId: CreativeWorkService_UpdateCreativeWork
            parameters:
                - name: creative_work_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.creative_work.v1.UpdateCreativeWorkRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.creative_work.v1.UpdateCreativeWorkResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/entities/v1:
        get:
            tags:
                - EntityService
            description: |-
                ListEntities

                 Returns list of entities based on specified parameters.
            operationId: EntityService_ListEntities
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language. Only AND statements are supported.
                     E.g. `disabled:false and type_id:competition`
                     For filtering on entities without a type_id, use `type_id:default`.
                  schema:
                    type: string
                - name: order_by
                  in: query
                  description: |-
                    Specifies the result ordering for List requests.
                     Supported values are:
                      * "name asc|desc"
                     This order is not applied when combined with `search` or `pinned` parameters.
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
                - name: search
                  in: query
                  description: |-
                    Any user-provided search query (as a plain string). This works in tandem with the filter parameter.
                     Using `search` will automatically order all results by relevance instead of the supplied `order_by` value.
                  schema:
                    type: string
                - name: pinned
                  in: query
                  description: |-
                    One or more entity IDs that you want to receive at the top of the results (if it is available).
                     Pinned items will not be included in the results if it does not match the filter. It will, however, ignore the
                     `search` parameter.
                     Using `pinned` will automatically order all results by relevance instead of the supplied `order_by` value.
                  schema:
                    type: array
                    items:
                        type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.entity.v1.ListEntitiesResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - EntityService
            description: |-
                CreateEntity

                 Creates new entity.
            operationId: EntityService_CreateEntity
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.entity.v1.Entity'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.entity.v1.CreateEntityResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/entities/v1/export:
        post:
            tags:
                - EntityService
            operationId: EntityService_BatchExportEntities
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.entity.v1.BatchExportEntitiesRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.entity.v1.BatchExportEntitiesResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/entities/v1/import:
        post:
            tags:
                - EntityService
            operationId: EntityService_BatchImportEntities
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.entity.v1.BatchImportEntitiesRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.entity.v1.BatchImportEntitiesResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/entities/v1/import_template:
        get:
            tags:
                - EntityService
            operationId: EntityService_GetImportTemplate
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: type_id
                  in: query
                  description: The type of entities that should be created with this template.
                  required: true
                  schema:
                    type: string
                - name: locales
                  in: query
                  description: The locales that some of the fields in the template file should be provided in.
                  schema:
                    type: array
                    items:
                        type: string
                - name: timezone
                  in: query
                  description: IANA timezone identifier (e.g., "America/New_York", "Europe/London")
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.entity.v1.GetImportTemplateResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/entities/v1/{entity_id}:
        get:
            tags:
                - EntityService
            description: |-
                GetEntity

                 Returns entity information by entity ID.
            operationId: EntityService_GetEntity
            parameters:
                - name: entity_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.entity.v1.GetEntityResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - EntityService
            description: |-
                DeleteEntity

                 Deletes existing entity.
            operationId: EntityService_DeleteEntity
            parameters:
                - name: entity_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.entity.v1.DeleteEntityResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - EntityService
            description: |-
                UpdateEntity

                 Updates existing entity.
            operationId: EntityService_UpdateEntity
            parameters:
                - name: entity_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.entity.v1.UpdateEntityRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.entity.v1.UpdateEntityResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/events/v1:
        get:
            tags:
                - EventService
            description: |-
                ListEvents

                 Returns list of events based on specified parameters.
            operationId: EventService_ListEvents
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language. Only AND statements are supported.
                     E.g. `status:EVENT_STATUS_FINISHED and type_id:football_match`
                     For filtering on events without a type_id, use `type_id:default`.
                  schema:
                    type: string
                - name: order_by
                  in: query
                  description: |-
                    Specifies the result ordering for List requests.
                     Supported values are:
                      * "title asc|desc"
                      * "start_time asc|desc"
                     This order is not applied when combined with `search` or `pinned` parameters.
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
                - name: search
                  in: query
                  description: |-
                    Any user-provided search query (as a plain string). This works in tandem with the filter parameter.
                     Using `search` will automatically order all results by relevance instead of the supplied `order_by` value.
                  schema:
                    type: string
                - name: pinned
                  in: query
                  description: |-
                    One or more event IDs that you want to receive at the top of the results (if it is available).
                     Pinned items will not be included in the results if it does not match the filter. It will, however, ignore the
                     `search` parameter.
                     Using `pinned` will automatically order all results by relevance instead of the supplied `order_by` value.
                  schema:
                    type: array
                    items:
                        type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.event.v1.ListEventsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - EventService
            description: |-
                CreateEvent

                 Creates new event.
            operationId: EventService_CreateEvent
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.event.v1.Event'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.event.v1.CreateEventResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/events/v1/export:
        post:
            tags:
                - EventService
            operationId: EventService_BatchExportEvents
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.event.v1.BatchExportEventsRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.event.v1.BatchExportEventsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/events/v1/import:
        post:
            tags:
                - EventService
            operationId: EventService_BatchImportEvents
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.event.v1.BatchImportEventsRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.event.v1.BatchImportEventsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/events/v1/import_template:
        get:
            tags:
                - EventService
            operationId: EventService_GetImportTemplate
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: type_id
                  in: query
                  description: The type of events that should be created with this template.
                  required: true
                  schema:
                    type: string
                - name: locales
                  in: query
                  description: The locales that some of the fields in the template file should be provided in.
                  schema:
                    type: array
                    items:
                        type: string
                - name: timezone
                  in: query
                  description: IANA timezone identifier (e.g., "America/New_York", "Europe/London")
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.event.v1.GetImportTemplateResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/events/v1/{event_id}:
        get:
            tags:
                - EventService
            description: |-
                GetEvent

                 Returns event information by event ID.
            operationId: EventService_GetEvent
            parameters:
                - name: event_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.event.v1.GetEventResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - EventService
            description: |-
                DeleteEvent

                 Deletes existing event.
            operationId: EventService_DeleteEvent
            parameters:
                - name: event_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.event.v1.DeleteEventResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - EventService
            description: |-
                UpdateEvent

                 Updates existing event.
            operationId: EventService_UpdateEvent
            parameters:
                - name: event_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.event.v1.UpdateEventRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.event.v1.UpdateEventResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/events/v1/{event_id}/duplicate:
        post:
            tags:
                - EventService
            description: |-
                DuplicateEvent

                 Duplicates an existing event, optionally with modifications. By providing an `event` in the request body, you can
                 indicate which fields should be updated in the duplicated event. For those fields that should be modified,
                 also provide a field mask.

                 For any string field, if you want to include the original value in the duplicate but with some modifications, you may use `%@` as a placeholder.
                 For example, if the original event title is `FC Barcelona vs Real Madrid`, and you want to duplicate that event for
                 the purpose of highlights, you may provide a new title like `Highlights of %@` which will result in `Highlights of FC Barcelona vs Real Madrid`.
            operationId: EventService_DuplicateEvent
            parameters:
                - name: event_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.event.v1.DuplicateEventRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.event.v1.DuplicateEventResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/standing_phases/v1:
        post:
            tags:
                - StandingService
            description: |-
                CreateStandingPhase

                 Creates new standing phase.
            operationId: StandingService_CreateStandingPhase
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.standing.v1.StandingPhase'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.standing.v1.CreateStandingPhaseResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/standing_phases/v1/batch:
        get:
            tags:
                - StandingService
            description: |-
                BatchGetStandingPhases

                 Returns standing phases information by standing phase IDs.
            operationId: StandingService_BatchGetStandingPhases
            parameters:
                - name: standing_phase_ids
                  in: query
                  required: true
                  schema:
                    type: array
                    items:
                        type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.standing.v1.BatchGetStandingPhasesResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/standing_phases/v1/{standing_phase_id}:
        get:
            tags:
                - StandingService
            description: |-
                GetStandingPhase

                 Returns standing phase information by standing phase ID.
            operationId: StandingService_GetStandingPhase
            parameters:
                - name: standing_phase_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.standing.v1.GetStandingPhaseResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - StandingService
            description: |-
                DeleteStandingPhase

                 Deletes existing standing phase.
            operationId: StandingService_DeleteStandingPhase
            parameters:
                - name: standing_phase_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.standing.v1.DeleteStandingPhaseResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - StandingService
            description: |-
                UpdateStandingPhase

                 Updates existing standing phase.
            operationId: StandingService_UpdateStandingPhase
            parameters:
                - name: standing_phase_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.standing.v1.UpdateStandingPhaseRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.standing.v1.UpdateStandingPhaseResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/standings/v1:
        get:
            tags:
                - StandingService
            description: |-
                ListStandings

                 Returns list of standings based on specified parameters.
            operationId: StandingService_ListStandings
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     Currently not supported; will be implemented in the future.
                  schema:
                    type: string
                - name: order_by
                  in: query
                  description: |-
                    Specifies the result ordering for List requests.
                     Currently not supported; will be implemented in the future.
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.standing.v1.ListStandingsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - StandingService
            description: |-
                CreateStanding

                 Creates new standing.
            operationId: StandingService_CreateStanding
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.standing.v1.Standing'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.standing.v1.CreateStandingResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/standings/v1/{standing_id}:
        get:
            tags:
                - StandingService
            description: |-
                GetStanding

                 Returns standing information by standing ID.
            operationId: StandingService_GetStanding
            parameters:
                - name: standing_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.standing.v1.GetStandingResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - StandingService
            description: |-
                DeleteStanding

                 Deletes existing standing.
            operationId: StandingService_DeleteStanding
            parameters:
                - name: standing_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.standing.v1.DeleteStandingResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - StandingService
            description: |-
                UpdateStanding

                 Updates existing standing.
            operationId: StandingService_UpdateStanding
            parameters:
                - name: standing_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.standing.v1.UpdateStandingRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.standing.v1.UpdateStandingResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/types/v1:
        get:
            tags:
                - ContentTypeService
            operationId: ContentTypeService_ListTypes
            parameters:
                - name: page_size
                  in: query
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: base_type
                  in: query
                  required: true
                  schema:
                    enum:
                        - BASE_TYPE_UNSPECIFIED
                        - BASE_TYPE_EVENT
                        - BASE_TYPE_CREATIVE_WORK
                        - BASE_TYPE_ENTITY
                    type: string
                    format: enum
                - name: filter
                  in: query
                  schema:
                    type: string
                - name: page_token
                  in: query
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.content.v1.ListTypesResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - ContentTypeService
            operationId: ContentTypeService_CreateType
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.content.v1.ContentType'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.content.v1.CreateTypeResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - ContentTypeService
            operationId: ContentTypeService_UpdateType
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.cms.content.v1.UpdateTypeRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.content.v1.UpdateTypeResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /cms/types/v1/{type_id}:
        get:
            tags:
                - ContentTypeService
            operationId: ContentTypeService_GetType
            parameters:
                - name: type_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: base_type
                  in: query
                  required: true
                  schema:
                    enum:
                        - BASE_TYPE_UNSPECIFIED
                        - BASE_TYPE_EVENT
                        - BASE_TYPE_CREATIVE_WORK
                        - BASE_TYPE_ENTITY
                    type: string
                    format: enum
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.content.v1.GetTypeResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - ContentTypeService
            operationId: ContentTypeService_DeleteType
            parameters:
                - name: type_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: base_type
                  in: query
                  required: true
                  schema:
                    enum:
                        - BASE_TYPE_UNSPECIFIED
                        - BASE_TYPE_EVENT
                        - BASE_TYPE_CREATIVE_WORK
                        - BASE_TYPE_ENTITY
                    type: string
                    format: enum
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.cms.content.v1.DeleteTypeResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/accounts/v1:
        get:
            tags:
                - AccountService
            description: |-
                ListAccounts

                 Returns a list of accounts.
            operationId: AccountService_ListAccounts
            parameters:
                - name: page_token
                  in: query
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     Supported filter fields:
                     * `resource_key` - The resource key of the resource for which to list accounts. This is a required field.
                       For organizations, this key consists of two components: the organization ID and string "organization", joined by a forward slash.
                       For all other resources, this key consists of three components: the resource ID, the project ID, and the resource type (e.g. "event" or project"),
                       joined by forward slashes (for projects specifically, this contains the same resource ID twice).
                     * `nested` - A boolean. Defaults to false. If true, the endpoint will return accounts that have any level
                     of explicitly granted access to any resource below the given resource path. No roles will be provided for these
                     accounts, as they are not attributable to the given resource. Accounts with inherited access will not be included.
                     Examples:
                     - To list accounts that have explicit or inherited access to the organization "example" , use `resource_key:"example/organization"`
                     - To list accounts that have explicit access to any resource below the project "demo", use `resource_key:"demo/demo/project" nested:true`
                     - To list accounts that have explicit or inherited access to the event "r8efdFD9sMSaa93" inside the project "demo" , use `resource_key:"r8efdFD9sMSaa93/demo/event"`
                  required: true
                  schema:
                    type: string
                - name: page_size
                  in: query
                  schema:
                    type: integer
                    format: int32
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.account.v1.ListAccountsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - AccountService
            description: |-
                CreateAccount

                 Creates an account in Motto platform.
            operationId: AccountService_CreateAccount
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.account.v1.CreateAccountRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.account.v1.CreateAccountResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
            security:
                - NONE: []
    /iam/accounts/v1/batch:
        get:
            tags:
                - AccountService
            description: |-
                BatchGetAccounts

                 Returns account information by account IDs or by email addresses
            operationId: AccountService_BatchGetAccounts
            parameters:
                - name: account_ids
                  in: query
                  schema:
                    type: array
                    items:
                        type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.account.v1.BatchGetAccountsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/accounts/v1/invite:
        post:
            tags:
                - AccountService
            description: |-
                BatchInviteAccounts

                 Invites one or more new or existing accounts to the Motto platform for a particular resource.
                 Important: this does not grant the provided accounts any permissions to that resource; please use
                 iam.auth.v1.SetIamPolicy for that.
            operationId: AccountService_BatchInviteAccounts
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.account.v1.BatchInviteAccountsRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.account.v1.BatchInviteAccountsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/accounts/v1/me:
        get:
            tags:
                - AccountService
            description: |-
                GetMyAccount

                 Returns account information for currently authenticated account.
            operationId: AccountService_GetMyAccount
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.account.v1.GetMyAccountResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/accounts/v1/me:securityWidgetToken:
        post:
            tags:
                - AccountService
            description: |-
                CreateSecurityWidgetToken

                 Returns a short-lived token for the WorkOS UserSecurity widget, with which the authenticated account manages its
                 password and multi-factor authentication. Fails with FAILED_PRECONDITION when the account is not linked to WorkOS.
            operationId: AccountService_CreateSecurityWidgetToken
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.account.v1.CreateSecurityWidgetTokenRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.account.v1.CreateSecurityWidgetTokenResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/accounts/v1/password_change:
        post:
            tags:
                - AccountService
            description: |-
                ChangePassword

                 Changes account password using old password and new password.
            operationId: AccountService_ChangePassword
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.account.v1.ChangePasswordRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.account.v1.ChangePasswordResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/accounts/v1/password_reset:
        post:
            tags:
                - AccountService
            description: |-
                ResetPassword

                 Changes account password without old password from forgot your password page UI.
            operationId: AccountService_ResetPassword
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.account.v1.ResetPasswordRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.account.v1.ResetPasswordResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
            security:
                - NONE: []
    /iam/accounts/v1/password_reset/check/{reset_code}:
        get:
            tags:
                - AccountService
            description: |-
                CheckPasswordReset

                 It will check that reset code is still valid and we can proceed with changing password.
            operationId: AccountService_CheckPasswordReset
            parameters:
                - name: reset_code
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.account.v1.CheckPasswordResetResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
            security:
                - NONE: []
    /iam/accounts/v1/password_reset/send:
        post:
            tags:
                - AccountService
            description: |-
                SendPasswordReset

                 Requests password change. It sends an email with a special link if associated account exists.
            operationId: AccountService_SendPasswordReset
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.account.v1.SendPasswordResetRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.account.v1.SendPasswordResetResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
            security:
                - NONE: []
    /iam/accounts/v1/verify:
        post:
            tags:
                - AccountService
            description: |-
                VerifyAccount

                 Verifies the account's email with the provided token.
            operationId: AccountService_VerifyAccount
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.account.v1.VerifyAccountRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.account.v1.VerifyAccountResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
            security:
                - NONE: []
    /iam/accounts/v1/verify/send:
        post:
            tags:
                - AccountService
            description: |-
                ResendVerificationEmail

                 Resends the verification email to the email address associated with the account from the authentication token.
            operationId: AccountService_ResendVerificationEmail
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.account.v1.ResendVerificationEmailResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/accounts/v1/{account_id}:
        get:
            tags:
                - AccountService
            description: |-
                GetAccount

                 Returns account information by account ID.
            operationId: AccountService_GetAccount
            parameters:
                - name: account_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.account.v1.GetAccountResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - AccountService
            description: |-
                UpdateAccount

                 Updates the account profile data.
            operationId: AccountService_UpdateAccount
            parameters:
                - name: account_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.account.v1.UpdateAccountRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.account.v1.UpdateAccountResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/auth/v1/login:
        post:
            tags:
                - AuthService
            description: |-
                Login

                 This method performs login into platform account.
            operationId: AuthService_Login
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.auth.v1.LoginRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.auth.v1.LoginResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
            security:
                - NONE: []
    /iam/auth/v1/login:complete:
        post:
            tags:
                - AuthService
            description: |-
                CompleteLogin

                 Completes a sign-in through the hosted login page. Exchanges the authorization code that the login page
                 redirected back with for a session: a short-lived access token (used as Bearer token) and a refresh token.
                 A platform account is created or linked on the first sign-in.
            operationId: AuthService_CompleteLogin
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.auth.v1.CompleteLoginRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.auth.v1.CompleteLoginResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
            security:
                - NONE: []
    /iam/auth/v1/logout:
        post:
            tags:
                - AuthService
            description: |-
                Logout

                 Ends the session that the refresh token belongs to. Access tokens that were already issued for the session
                 remain valid until they expire.
            operationId: AuthService_Logout
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.auth.v1.LogoutRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.auth.v1.LogoutResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
            security:
                - NONE: []
    /iam/auth/v1/policies/{resource_key}:
        get:
            tags:
                - AuthService
            description: |-
                GetIamPolicy

                 Returns current IAM policy for the resource.
                 Use returned policy and etag to update policy.
            operationId: AuthService_GetIamPolicy
            parameters:
                - name: resource_key
                  in: path
                  description: |-
                    A resource key for which policy is being requested.

                     For organizations, this key consists of two components: the organization ID and string "organization", joined by a forward slash.
                     For all other resources, this key consists of three components: the resource ID, the project ID, and the resource type (e.g. "event" or project"),
                     joined by forward slashes (for projects specifically, this contains the same resource ID twice).

                     Examples:
                     For organization "example", use `example/organization`
                     For project "demo", use `demo/demo/project`
                     For event "r8efdFD9sMSaa93" inside the project "demo", use `r8efdFD9sMSaa93/demo/event`
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.auth.v1.GetIamPolicyResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        put:
            tags:
                - AuthService
            description: |-
                SetIamPolicy

                 Set IAM policy for a resource.
                 This method replaces all existing policy bindings for the resource.
                 To prevent overwriting existing policy bindings that were written concurrently, use the etag field
                 to perform a read-modify-write operation.
                 For example: Making a new account to become a resource owner would require reading IAM Policy
                 for the resource, add new binding or update existing binding with role_id: owner,
                 and then set the new policy with etag returned by GetIamPolicy.
            operationId: AuthService_SetIamPolicy
            parameters:
                - name: resource_key
                  in: path
                  description: |-
                    A resource key for which policy is being set.

                     For organizations, this key consists of two components: the organization ID and string "organization", joined by a forward slash.
                     For all other resources, this key consists of three components: the resource ID, the project ID, and the resource type (e.g. "event" or project"),
                     joined by forward slashes (for projects specifically, this contains the same resource ID twice).

                     Examples:
                     For organization "example", use `example/organization`
                     For project "demo", use `demo/demo/project`
                     For event "r8efdFD9sMSaa93" inside the project "demo", use `r8efdFD9sMSaa93/demo/event`
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.auth.v1.SetIamPolicyRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.auth.v1.SetIamPolicyResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/auth/v1/policies/{resource_key}/test_permissions:
        get:
            tags:
                - AuthService
            description: |-
                TestResourceIamPermissions

                 Test the access of the authenticated account on a specific combination of resource and a set of permissions.
                 This method will return a subset of the permissions passed into the method, indicating the ones the account
                 has access to. If the account has no access to any of the permissions, an empty list will be returned.
            operationId: AuthService_TestResourceIamPermissions
            parameters:
                - name: resource_key
                  in: path
                  description: |-
                    A resource key for which the account's permissions are being checked.

                     For organizations, this key consists of two components: the organization ID and string "organization", joined by a forward slash.
                     For all other resources, this key consists of three components: the resource ID, the project ID, and the resource type (e.g. "event" or project"),
                     joined by forward slashes (for projects specifically, this contains the same resource ID twice).

                     Examples:
                     For organization "example", use `example/organization`
                     For project "demo", use `demo/demo/project`
                     For event "r8efdFD9sMSaa93" inside the project "demo", use `r8efdFD9sMSaa93/demo/event`
                  required: true
                  schema:
                    type: string
                - name: permissions
                  in: query
                  description: |-
                    List of permissions we want to check if the account has access to.
                     Example: [`event.event.get`, `event.event.update`]
                  required: true
                  schema:
                    type: array
                    items:
                        type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.auth.v1.TestResourceIamPermissionsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/auth/v1/roles/{role_id}:
        get:
            tags:
                - AuthService
            description: |-
                GetRole

                 Returns a Role with permissions assigned to that role.
            operationId: AuthService_GetRole
            parameters:
                - name: role_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: view
                  in: query
                  description: |-
                    Defines fields returned for the role.
                     Defaults to ROLE_VIEW_FULL.
                  schema:
                    enum:
                        - ROLE_VIEW_UNSPECIFIED
                        - ROLE_VIEW_BASIC
                        - ROLE_VIEW_FULL
                    type: string
                    format: enum
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.auth.v1.GetRoleResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/auth/v1/session:refresh:
        post:
            tags:
                - AuthService
            description: |-
                RefreshSession

                 Exchanges a refresh token for a new access token. The returned refresh token replaces the one that was sent.
            operationId: AuthService_RefreshSession
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.auth.v1.RefreshSessionRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.auth.v1.RefreshSessionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
            security:
                - NONE: []
    /iam/auth/v1/tokens:
        post:
            tags:
                - AuthService
            description: |-
                CreateToken

                 Creates a new token for the authenticated account. This can be used in various scenarios:
                 1. Creating short-lived tokens with an existing long-lived token for improved security.
                 2. Creating a token that is scoped to a subset of resources that are normally accessible to the account. This is
                    useful for temporary tokens that are used in specific contexts (e.g. CI/CD systems or AI tooling).
            operationId: AuthService_CreateToken
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.auth.v1.CreateTokenRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.auth.v1.CreateTokenResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/organizations/v1:
        get:
            tags:
                - OrganizationService
            description: |-
                ListOrganizations

                 Return list of organizations that the authenticated account has access to.
            operationId: OrganizationService_ListOrganizations
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  description: |-
                    If this field is not empty then it must contain the `next_page_token` value
                     returned by a previous call to this method.  Using this field causes the
                     method to return additional results from the previous method call.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.organization.v1.ListOrganizationsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/organizations/v1/{org_id}:
        get:
            tags:
                - OrganizationService
            description: |-
                GetOrganization

                 Will return information about the organization.
            operationId: OrganizationService_GetOrganization
            parameters:
                - name: org_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.organization.v1.GetOrganizationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/projects/v1:
        get:
            tags:
                - ProjectService
            description: |-
                ListProjects

                 Return list of projects that the authenticated account has access to.
            operationId: ProjectService_ListProjects
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  description: |-
                    If this field is not empty then it must contain the `next_page_token` value
                     returned by a previous call to this method.  Using this field causes the
                     method to return additional results from the previous method call.
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    You can filter list of projects by org_id.
                     Example: `org_id:motto`
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.project.v1.ListProjectsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/projects/v1/{project_id}:
        get:
            tags:
                - ProjectService
            description: |-
                GetProject

                 Returns information about the project.
            operationId: ProjectService_GetProject
            parameters:
                - name: project_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.project.v1.GetProjectResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - ProjectService
            description: |-
                UpdateProject

                 Updates project's basic fields (i.e. name)
            operationId: ProjectService_UpdateProject
            parameters:
                - name: project_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: update_mask
                  in: query
                  schema:
                    type: string
                    format: field-mask
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.project.v1.Project'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.project.v1.UpdateProjectResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/users/v1:
        get:
            tags:
                - UserService
            description: |-
                ListUsers

                 Returns a list of users.
            operationId: UserService_ListUsers
            parameters:
                - name: page_token
                  in: query
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: Filter the result-set by properties using a subset of the Kibana Query Language.
                  schema:
                    type: string
                - name: order_by
                  in: query
                  description: |-
                    Specifies the result ordering for List requests.
                     Supported values are:
                      * "email asc|desc" (only applicable if the user is registered via Motto)
                      * "" (default, which orders by user_id asc)
                  schema:
                    type: string
                - name: page_size
                  in: query
                  schema:
                    type: integer
                    format: int32
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.user.v1.ListUsersResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/users/v1/apple:
        post:
            tags:
                - UserService
            description: Apple Sign In related methods
            operationId: UserService_CreateAppleSignInIntegration
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.user.v1.AppleSignInIntegration'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.user.v1.CreateAppleSignInIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/users/v1/apple/{project_id}:
        get:
            tags:
                - UserService
            operationId: UserService_GetAppleSignInIntegration
            parameters:
                - name: project_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.user.v1.GetAppleSignInIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - UserService
            operationId: UserService_DeleteAppleSignInIntegration
            parameters:
                - name: project_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.user.v1.DeleteAppleSignInIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - UserService
            operationId: UserService_UpdateAppleSignInIntegration
            parameters:
                - name: project_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: update_mask
                  in: query
                  schema:
                    type: string
                    format: field-mask
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.user.v1.AppleSignInIntegration'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.user.v1.UpdateAppleSignInIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/users/v1/google:
        post:
            tags:
                - UserService
            description: |-
                CreateGoogleSignInIntegration

                 Creates new integration.
            operationId: UserService_CreateGoogleSignInIntegration
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.user.v1.GoogleSignInIntegration'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.user.v1.CreateGoogleSignInIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/users/v1/google/{project_id}:
        get:
            tags:
                - UserService
            description: |-
                GetGoogleSignInIntegration

                 Returns integration information by integration ID.
            operationId: UserService_GetGoogleSignInIntegration
            parameters:
                - name: project_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.user.v1.GetGoogleSignInIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - UserService
            description: |-
                DeleteGoogleSignInIntegration

                 Deletes existing google sign in integration.
            operationId: UserService_DeleteGoogleSignInIntegration
            parameters:
                - name: project_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.user.v1.DeleteGoogleSignInIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - UserService
            description: |-
                UpdateGoogleSignInIntegration

                 Updates existing google sign in integration.
            operationId: UserService_UpdateGoogleSignInIntegration
            parameters:
                - name: project_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: update_mask
                  in: query
                  schema:
                    type: string
                    format: field-mask
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.user.v1.GoogleSignInIntegration'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.user.v1.UpdateGoogleSignInIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/users/v1/oidc:
        post:
            tags:
                - UserService
            description: |-
                CreateOIDCIntegration

                 Creates new integration.
            operationId: UserService_CreateOIDCIntegration
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.user.v1.OIDCIntegration'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.user.v1.CreateOIDCIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/users/v1/oidc/{project_id}:
        get:
            tags:
                - UserService
            description: |-
                GetOIDCIntegration

                 Returns integration information by integration ID.
            operationId: UserService_GetOIDCIntegration
            parameters:
                - name: project_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.user.v1.GetOIDCIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - UserService
            description: |-
                DeleteOIDCIntegration

                 Deletes existing oidc sign in integration.
            operationId: UserService_DeleteOIDCIntegration
            parameters:
                - name: project_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.user.v1.DeleteOIDCIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - UserService
            description: |-
                UpdateOIDCIntegration

                 Updates existing oidc sign in integration.
            operationId: UserService_UpdateOIDCIntegration
            parameters:
                - name: project_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: update_mask
                  in: query
                  schema:
                    type: string
                    format: field-mask
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.user.v1.OIDCIntegration'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.user.v1.UpdateOIDCIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/users/v1/{user_id}:
        get:
            tags:
                - UserService
            description: |-
                GetUser

                 Returns user information by user ID.
            operationId: UserService_GetUser
            parameters:
                - name: user_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.user.v1.GetUserResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - UserService
            description: |-
                DeleteUser

                 Deletes an existing user. This will also cancel active subscriptions for the user (asynchronously, not immediately).

                 Important: if the user is registered via OIDC, this does NOT delete the user in the identity provider.
            operationId: UserService_DeleteUser
            parameters:
                - name: user_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.user.v1.DeleteUserResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - UserService
            description: |-
                UpdateUser

                 Updates the user object.

                 Important: if the user is registered via OIDC, this can only be used to update the role.
            operationId: UserService_UpdateUser
            parameters:
                - name: user_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: update_mask
                  in: query
                  schema:
                    type: string
                    format: field-mask
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.iam.user.v1.User'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.user.v1.UpdateUserResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /iam/users/v1/{user_id}/token:
        post:
            tags:
                - UserService
            description: |-
                CreateUserToken

                 Returns a Motto-signed JWT for the user. This token can be used to authenticate the user in the Motto content-delivery API.

                 Note: this endpoint can be used even without a configured identity platform, nor does CreateUser need to be called.
                 Passing a user_id that is not known to Motto will work just as well. This is useful in situations where an external
                 identity platform is used, and you only wish to use the user_id in combination with e.g. Motto's entitlement service.
            operationId: UserService_CreateUserToken
            parameters:
                - name: user_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: role
                  in: query
                  required: true
                  schema:
                    enum:
                        - ROLE_UNSPECIFIED
                        - ROLE_DEFAULT
                        - ROLE_TESTER
                        - ROLE_VIP
                    type: string
                    format: enum
                - name: ttl
                  in: query
                  description: The duration after which the token expires. If not provided, the token expires after one week.
                  schema:
                    pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$
                    type: string
                    description: Represents a a duration between -315,576,000,000s and 315,576,000,000s (around 10000 years). Precision is in nanoseconds. 1 nanosecond is represented as 0.000000001s
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.iam.user.v1.CreateUserTokenResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /integration/spiideo/v1/entity_mappings:
        get:
            tags:
                - SpiideoService
            description: Lists all entity mappings for a project.
            operationId: SpiideoService_ListSpiideoEntityMappings
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: page_size
                  in: query
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     Currently, `motto_entity_type` is the only supported filter.
                     E.g. `motto_entity_type:stadium`.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.ListSpiideoEntityMappingsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - SpiideoService
            description: Creates a new entity mapping.
            operationId: SpiideoService_CreateSpiideoEntityMapping
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoEntityMapping'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.CreateSpiideoEntityMappingResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /integration/spiideo/v1/entity_mappings/{entity_id}:
        delete:
            tags:
                - SpiideoService
            description: Deletes a specific entity mapping.
            operationId: SpiideoService_DeleteSpiideoEntityMapping
            parameters:
                - name: entity_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.DeleteSpiideoEntityMappingResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /integration/spiideo/v1/event_mappings/batch:
        get:
            tags:
                - SpiideoService
            description: |-
                BatchGetSpiideoEventMappings

                 Returns the Spiideo game IDs for the given event IDs or the event IDs for the given Spiideo game IDs.
            operationId: SpiideoService_BatchGetSpiideoEventMappings
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: event_ids.values
                  in: query
                  schema:
                    type: array
                    items:
                        type: string
                - name: spiideo_game_ids.values
                  in: query
                  schema:
                    type: array
                    items:
                        type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.BatchGetSpiideoEventMappingsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /integration/spiideo/v1/event_type_mappings:
        get:
            tags:
                - SpiideoService
            description: Lists all event type mappings for a project.
            operationId: SpiideoService_ListSpiideoEventTypeMappings
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: page_size
                  in: query
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.ListSpiideoEventTypeMappingsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - SpiideoService
            description: Creates a new event type mapping.
            operationId: SpiideoService_CreateSpiideoEventTypeMapping
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoEventTypeMapping'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.CreateSpiideoEventTypeMappingResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /integration/spiideo/v1/event_type_mappings/{event_type}:
        delete:
            tags:
                - SpiideoService
            description: Deletes a specific event type mapping.
            operationId: SpiideoService_DeleteSpiideoEventTypeMapping
            parameters:
                - name: event_type
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.DeleteSpiideoEventTypeMappingResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /integration/spiideo/v1/integrations:
        post:
            tags:
                - SpiideoService
            description: |-
                CreateSpiideoIntegration

                 Creates new integration.
            operationId: SpiideoService_CreateSpiideoIntegration
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoIntegration'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.CreateSpiideoIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /integration/spiideo/v1/integrations/{project_id}:
        get:
            tags:
                - SpiideoService
            description: |-
                GetSpiideoIntegration

                 Returns integration information by integration ID.
            operationId: SpiideoService_GetSpiideoIntegration
            parameters:
                - name: project_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.GetSpiideoIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - SpiideoService
            description: |-
                DeleteSpiideoIntegration

                 Deletes existing spiideo integration.
            operationId: SpiideoService_DeleteSpiideoIntegration
            parameters:
                - name: project_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.DeleteSpiideoIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - SpiideoService
            description: |-
                UpdateSpiideoIntegration

                 Updates existing spiideo integration.
            operationId: SpiideoService_UpdateSpiideoIntegration
            parameters:
                - name: project_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: update_mask
                  in: query
                  schema:
                    type: string
                    format: field-mask
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoIntegration'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.UpdateSpiideoIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /integration/spiideo/v1/player_type_mappings:
        get:
            tags:
                - SpiideoService
            description: Lists all player type mappings for a project.
            operationId: SpiideoService_ListSpiideoPlayerTypeMappings
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: page_size
                  in: query
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.ListSpiideoPlayerTypeMappingsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - SpiideoService
            description: Creates a new player type mapping.
            operationId: SpiideoService_CreateSpiideoPlayerTypeMapping
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoPlayerTypeMapping'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.CreateSpiideoPlayerTypeMappingResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /integration/spiideo/v1/player_type_mappings/{motto_entity_type}:
        delete:
            tags:
                - SpiideoService
            description: Deletes a specific player type mapping.
            operationId: SpiideoService_DeleteSpiideoPlayerTypeMapping
            parameters:
                - name: motto_entity_type
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.DeleteSpiideoPlayerTypeMappingResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /integration/spiideo/v1/sport_configurations:
        get:
            tags:
                - SpiideoService
            description: Lists all sport configurations for a project.
            operationId: SpiideoService_ListSpiideoSportConfigurations
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: page_size
                  in: query
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.ListSpiideoSportConfigurationsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - SpiideoService
            description: Creates a new sport configuration.
            operationId: SpiideoService_CreateSpiideoSportConfiguration
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoSportConfiguration'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.CreateSpiideoSportConfigurationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /integration/spiideo/v1/sport_configurations/{spiideo_sport}:
        delete:
            tags:
                - SpiideoService
            description: Deletes a specific sport configuration.
            operationId: SpiideoService_DeleteSpiideoSportConfiguration
            parameters:
                - name: spiideo_sport
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.DeleteSpiideoSportConfigurationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /integration/spiideo/v1/team_type_mappings:
        get:
            tags:
                - SpiideoService
            description: Lists all team type mappings for a project.
            operationId: SpiideoService_ListSpiideoTeamTypeMappings
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: page_size
                  in: query
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.ListSpiideoTeamTypeMappingsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - SpiideoService
            description: Creates a new team type mapping.
            operationId: SpiideoService_CreateSpiideoTeamTypeMapping
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoTeamTypeMapping'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.CreateSpiideoTeamTypeMappingResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /integration/spiideo/v1/team_type_mappings/{motto_entity_type}:
        delete:
            tags:
                - SpiideoService
            description: Deletes a specific team type mapping.
            operationId: SpiideoService_DeleteSpiideoTeamTypeMapping
            parameters:
                - name: motto_entity_type
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.spiideo.v1.DeleteSpiideoTeamTypeMappingResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /integration/subscriptions/v1:
        get:
            tags:
                - SubscriptionService
            description: |-
                ListSubscriptions

                 Returns list of subscriptions based on specified parameters.
            operationId: SubscriptionService_ListSubscriptions
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     This currently supports queries based on topic, e.g. `topic:CMS_Events`
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.subscription.v1.ListSubscriptionsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - SubscriptionService
            description: |-
                CreateSubscription

                 Creates new subscription.
            operationId: SubscriptionService_CreateSubscription
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.integration.subscription.v1.Subscription'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.subscription.v1.CreateSubscriptionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /integration/subscriptions/v1/{subscription_id}:
        get:
            tags:
                - SubscriptionService
            description: |-
                GetSubscription

                 Returns subscription information by subscription ID.
            operationId: SubscriptionService_GetSubscription
            parameters:
                - name: subscription_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.subscription.v1.GetSubscriptionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - SubscriptionService
            description: |-
                DeleteSubscription

                 Deletes existing subscription.
            operationId: SubscriptionService_DeleteSubscription
            parameters:
                - name: subscription_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.subscription.v1.DeleteSubscriptionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - SubscriptionService
            description: |-
                UpdateSubscription

                 Updates existing subscription.
            operationId: SubscriptionService_UpdateSubscription
            parameters:
                - name: subscription_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.integration.subscription.v1.UpdateSubscriptionRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.subscription.v1.UpdateSubscriptionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /integration/topics/v1:
        get:
            tags:
                - SubscriptionService
            description: |-
                ListTopics

                 Returns list of topics that are available to subscribe to.
            operationId: SubscriptionService_ListTopics
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     This is currently a reserved field only; there are no filters supported at this time.
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.integration.subscription.v1.ListTopicsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /monetization/ads/v1/sponsorship_collections:
        get:
            tags:
                - AdService
            description: |-
                ListSponsorshipCollections

                 Return list of sponsorship_collections.
            operationId: AdService_ListSponsorshipCollections
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  description: |-
                    If this field is not empty then it must contain the `next_page_token` value
                     returned by a previous call to this method.  Using this field causes the
                     method to return additional results from the previous method call.
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: Reserved for future use
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.ads.v1.ListSponsorshipCollectionsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - AdService
            description: |-
                CreateSponsorshipCollection

                 Creates new sponsorship_collection.
            operationId: AdService_CreateSponsorshipCollection
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.monetization.ads.v1.SponsorshipCollection'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.ads.v1.CreateSponsorshipCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /monetization/ads/v1/sponsorship_collections/{sponsorship_collection_id}:
        get:
            tags:
                - AdService
            description: |-
                GetSponsorshipCollection

                 Returns information about the sponsorship_collection.
            operationId: AdService_GetSponsorshipCollection
            parameters:
                - name: sponsorship_collection_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.ads.v1.GetSponsorshipCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - AdService
            description: |-
                DeleteSponsorshipCollection

                 Deletes existing sponsorship_collection.
            operationId: AdService_DeleteSponsorshipCollection
            parameters:
                - name: sponsorship_collection_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.ads.v1.DeleteSponsorshipCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - AdService
            description: |-
                UpdateSponsorshipCollection

                 Updates a sponsorship_collection.
            operationId: AdService_UpdateSponsorshipCollection
            parameters:
                - name: sponsorship_collection_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.monetization.ads.v1.UpdateSponsorshipCollectionRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.ads.v1.UpdateSponsorshipCollectionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /monetization/ads/v1/video_ads:
        get:
            tags:
                - AdService
            description: |-
                ListVideoAds

                 Return list of video_ads.
            operationId: AdService_ListVideoAds
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  description: |-
                    If this field is not empty then it must contain the `next_page_token` value
                     returned by a previous call to this method.  Using this field causes the
                     method to return additional results from the previous method call.
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    You can filter the list of video_ads by the following fields:
                     - `disabled`: Whether the video_ad is disabled or not.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.ads.v1.ListVideoAdsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - AdService
            description: |-
                CreateVideoAd

                 Creates new video_ad.
            operationId: AdService_CreateVideoAd
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.monetization.ads.v1.VideoAd'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.ads.v1.CreateVideoAdResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /monetization/ads/v1/video_ads/{video_ad_id}:
        get:
            tags:
                - AdService
            description: |-
                GetVideoAd

                 Returns information about the video_ad.
            operationId: AdService_GetVideoAd
            parameters:
                - name: video_ad_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.ads.v1.GetVideoAdResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - AdService
            description: |-
                DeleteVideoAd

                 Deletes existing video_ad. Can only be done when there are no more videos attached to it.
            operationId: AdService_DeleteVideoAd
            parameters:
                - name: video_ad_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.ads.v1.DeleteVideoAdResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - AdService
            description: |-
                UpdateVideoAd

                 Updates a video_ad. When updating a video_ad that is already attached to one or more videos, this
                 change will apply to all of those videos (including past ones).

                 These changes apply asynchronously and may take a bit of time to propagate.
            operationId: AdService_UpdateVideoAd
            parameters:
                - name: video_ad_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.monetization.ads.v1.UpdateVideoAdRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.ads.v1.UpdateVideoAdResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /monetization/entitlements/v1:
        get:
            tags:
                - EntitlementService
            description: |-
                ListEntitlements

                 Returns list of entitlements based on specified parameters.
            operationId: EntitlementService_ListEntitlements
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     This currently supports queries based on `user_id` and `offer_id`
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.entitlement.v1.ListEntitlementsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - EntitlementService
            description: |-
                UpsertEntitlement

                 Upserts a new entitlement or updates an existing entitlement.

                 Note: If you wish to invalidate an existing entitlement, set the `expires_at` field to any moment in the past.
            operationId: EntitlementService_UpsertEntitlement
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.monetization.entitlement.v1.Entitlement'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.entitlement.v1.UpsertEntitlementResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /monetization/integrations/v1/cleeng:
        get:
            tags:
                - CleengService
            description: |-
                ListCleengIntegrations

                 Returns list of cleeng integrations based on specified parameters.
            operationId: CleengService_ListCleengIntegrations
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language. Only AND statements are supported.
                     Only here for forwards-compatibility currently.
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.cleeng.v1.ListCleengIntegrationsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - CleengService
            description: |-
                CreateCleengIntegration

                 Creates new integration.
            operationId: CleengService_CreateCleengIntegration
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.monetization.cleeng.v1.CleengIntegration'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.cleeng.v1.CreateCleengIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /monetization/integrations/v1/cleeng/{integration_id}:
        get:
            tags:
                - CleengService
            description: |-
                GetCleengIntegration

                 Returns integration information by integration ID.
            operationId: CleengService_GetCleengIntegration
            parameters:
                - name: integration_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.cleeng.v1.GetCleengIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - CleengService
            description: |-
                DeleteCleengIntegration

                 Deletes existing cleeng integration.
            operationId: CleengService_DeleteCleengIntegration
            parameters:
                - name: integration_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.cleeng.v1.DeleteCleengIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /monetization/integrations/v1/stripe:
        post:
            tags:
                - StripeService
            description: |-
                CreateStripeIntegration

                 Creates new integration.
            operationId: StripeService_CreateStripeIntegration
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.monetization.stripe.v1.StripeIntegration'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.stripe.v1.CreateStripeIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /monetization/integrations/v1/stripe/{project_id}:
        get:
            tags:
                - StripeService
            description: |-
                GetStripeIntegration

                 Returns integration information by integration ID.
            operationId: StripeService_GetStripeIntegration
            parameters:
                - name: project_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.stripe.v1.GetStripeIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - StripeService
            description: |-
                DeleteStripeIntegration

                 Deletes existing stripe integration.
            operationId: StripeService_DeleteStripeIntegration
            parameters:
                - name: project_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.stripe.v1.DeleteStripeIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - StripeService
            description: |-
                UpdateStripeIntegration

                 Updates existing stripe integration.
            operationId: StripeService_UpdateStripeIntegration
            parameters:
                - name: project_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: update_mask
                  in: query
                  schema:
                    type: string
                    format: field-mask
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.monetization.stripe.v1.StripeIntegration'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.stripe.v1.UpdateStripeIntegrationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /monetization/offers/v1:
        get:
            tags:
                - OfferService
            description: |-
                ListOffers

                 Returns list of offers based on specified parameters.
            operationId: OfferService_ListOffers
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language. Only AND statements are supported.
                     Currently supports filtering on:
                     * `cleeng_offer_id` (string)
                     * `is_subscription` (boolean) - is true when at least one of the attached offer prices has a billing period other than ONE_TIME
                     * `is_template` (boolean) - is true when there is no content targeting at all

                     To find the offers associated with a single content item / video, use ListOffersForVideoContent
                  schema:
                    type: string
                - name: order_by
                  in: query
                  description: |-
                    Specifies the result ordering for List requests.
                     Supported values are:
                      * "last_update_time desc" - default
                      * "applicability_type asc, last_update_time desc" - shows rulesets targeting all content first, then entities, then events. Sorted by last_update_time within the same applicability type.
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.offer.v1.ListOffersResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - OfferService
            description: |-
                CreateOffer

                 Creates new offer.
            operationId: OfferService_CreateOffer
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.monetization.offer.v1.Offer'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.offer.v1.CreateOfferResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /monetization/offers/v1/{offer_id}:
        get:
            tags:
                - OfferService
            description: |-
                GetOffer

                 Returns offer information by offer ID.
            operationId: OfferService_GetOffer
            parameters:
                - name: offer_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.offer.v1.GetOfferResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - OfferService
            description: |-
                DeleteOffer

                 Deletes existing offer.
            operationId: OfferService_DeleteOffer
            parameters:
                - name: offer_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.offer.v1.DeleteOfferResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - OfferService
            description: |-
                UpdateOffer

                 Updates existing offer.
            operationId: OfferService_UpdateOffer
            parameters:
                - name: offer_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.monetization.offer.v1.UpdateOfferRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.offer.v1.UpdateOfferResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /monetization/payment_methods/v1/batch:
        get:
            tags:
                - TransactionService
            description: |-
                BatchGetPaymentMethods

                 Returns a list of payment methods by payment method IDs.
            operationId: TransactionService_BatchGetPaymentMethods
            parameters:
                - name: payment_method_ids
                  in: query
                  required: true
                  schema:
                    type: array
                    items:
                        type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.transaction.v1.BatchGetPaymentMethodsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /monetization/transactions/v1:
        get:
            tags:
                - TransactionService
            description: |-
                ListTransactions

                 Returns list of transactions based on specified parameters.
            operationId: TransactionService_ListTransactions
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language. Only AND statements are supported.
                     Currently supports filtering on `cleeng_transaction_id` field.
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
                - name: include_summary
                  in: query
                  description: Whether to include summary information in the response.
                  schema:
                    type: boolean
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.transaction.v1.ListTransactionsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /monetization/transactions/v1/{transaction_id}:
        get:
            tags:
                - TransactionService
            description: |-
                GetTransaction

                 Returns transaction information by transaction ID.
            operationId: TransactionService_GetTransaction
            parameters:
                - name: transaction_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.monetization.transaction.v1.GetTransactionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/file_kinds/v1:
        get:
            tags:
                - FileService
            description: |-
                ListFileKinds

                 Returns list of kinds of files that can be uploaded.
            operationId: FileService_ListFileKinds
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     This currently supports queries based on environment, e.g. `environment:ios`
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.file.v1.ListFileKindsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/file_kinds/v1/batch:
        get:
            tags:
                - FileService
            description: |-
                BatchGetFileKinds

                 Returns kinds of files by file_kind IDs.
            operationId: FileService_BatchGetFileKinds
            parameters:
                - name: file_kind_ids
                  in: query
                  required: true
                  schema:
                    type: array
                    items:
                        type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.file.v1.BatchGetFileKindsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/files/v1:
        get:
            tags:
                - FileService
            description: |-
                ListFiles

                 Returns list of files based on specified parameters.
            operationId: FileService_ListFiles
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     This currently supports queries based on platform_id and environment, e.g. `platform_id:Zidfx48am194 AND environment:web`
                     Important: the filter requires `environment` to be specified.
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.file.v1.ListFilesResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - FileService
            description: |-
                CreateFile

                 Creates new file.
            operationId: FileService_CreateFile
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.ott.file.v1.File'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.file.v1.CreateFileResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/files/v1/{file_id}:
        get:
            tags:
                - FileService
            description: |-
                GetFile

                 Returns file information by file ID.
            operationId: FileService_GetFile
            parameters:
                - name: file_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.file.v1.GetFileResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - FileService
            description: |-
                DeleteFile

                 Deletes existing file.
            operationId: FileService_DeleteFile
            parameters:
                - name: file_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.file.v1.DeleteFileResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/page_components/v1:
        post:
            tags:
                - PageService
            description: |-
                CreatePageComponent

                 Creates new page_component.
            operationId: PageService_CreatePageComponent
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.ott.page.v1.PageComponent'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v1.CreatePageComponentResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/page_components/v1/batch:
        get:
            tags:
                - PageService
            description: |-
                BatchGetPageComponents

                 Returns page_component information by page_component IDs.
            operationId: PageService_BatchGetPageComponents
            parameters:
                - name: page_component_ids
                  in: query
                  required: true
                  schema:
                    type: array
                    items:
                        type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v1.BatchGetPageComponentsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/page_components/v1/{page_component_id}:
        get:
            tags:
                - PageService
            description: |-
                GetPageComponent

                 Returns page_component information by page_component ID.
            operationId: PageService_GetPageComponent
            parameters:
                - name: page_component_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v1.GetPageComponentResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - PageService
            description: |-
                DeletePageComponent

                 Deletes an existing page_component.
            operationId: PageService_DeletePageComponent
            parameters:
                - name: page_component_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v1.DeletePageComponentResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - PageService
            description: |-
                UpdatePageComponent

                 Updates an existing page_component.
            operationId: PageService_UpdatePageComponent
            parameters:
                - name: page_component_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.ott.page.v1.UpdatePageComponentRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v1.UpdatePageComponentResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/page_components/v2:
        post:
            tags:
                - PageService_v2
            description: |-
                CreatePageComponent

                 Creates new page_component.
            operationId: PageService_v2_CreatePageComponent
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.ott.page.v2.PageComponent'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v2.CreatePageComponentResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/page_components/v2/batch:
        get:
            tags:
                - PageService_v2
            description: |-
                BatchGetPageComponents

                 Returns page_component information by page_component IDs.
            operationId: PageService_v2_BatchGetPageComponents
            parameters:
                - name: page_component_ids
                  in: query
                  required: true
                  schema:
                    type: array
                    items:
                        type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v2.BatchGetPageComponentsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/page_components/v2/{page_component_id}:
        get:
            tags:
                - PageService_v2
            description: |-
                GetPageComponent

                 Returns page_component information by page_component ID.
            operationId: PageService_v2_GetPageComponent
            parameters:
                - name: page_component_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v2.GetPageComponentResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - PageService_v2
            description: |-
                DeletePageComponent

                 Deletes an existing page_component.
            operationId: PageService_v2_DeletePageComponent
            parameters:
                - name: page_component_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v2.DeletePageComponentResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - PageService_v2
            description: |-
                UpdatePageComponent

                 Updates an existing page_component.
            operationId: PageService_v2_UpdatePageComponent
            parameters:
                - name: page_component_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.ott.page.v2.UpdatePageComponentRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v2.UpdatePageComponentResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/pages/v1:
        get:
            tags:
                - PageService
            description: |-
                ListPages

                 Returns list of pages based on specified parameters.
            operationId: PageService_ListPages
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     This currently supports queries based on:
                     - `platform_id`, e.g. `platform_id:Zidfx48am194`
                     - `page_type`, e.g. `page_type:event`
                     - `has_banner_collection_id`, e.g. `has_banner_collection_id:homepage` -> this query would return all pages that have
                       a page component that links to the banner collection with ID `homepage`.
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v1.ListPagesResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - PageService
            description: |-
                CreatePage

                 Creates new page.
            operationId: PageService_CreatePage
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.ott.page.v1.Page'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v1.CreatePageResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/pages/v1/{page_id}:
        get:
            tags:
                - PageService
            description: |-
                GetPage

                 Returns page information by page ID.
            operationId: PageService_GetPage
            parameters:
                - name: page_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: page_type
                  in: query
                  required: true
                  schema:
                    enum:
                        - PAGE_TYPE_UNSPECIFIED
                        - PAGE_TYPE_DEFAULT
                        - PAGE_TYPE_HOME
                        - PAGE_TYPE_EVENT
                        - PAGE_TYPE_CREATIVE_WORK
                        - PAGE_TYPE_ENTITY
                    type: string
                    format: enum
                - name: platform_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v1.GetPageResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - PageService
            description: |-
                DeletePage

                 Deletes existing page.
            operationId: PageService_DeletePage
            parameters:
                - name: page_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: page_type
                  in: query
                  required: true
                  schema:
                    enum:
                        - PAGE_TYPE_UNSPECIFIED
                        - PAGE_TYPE_DEFAULT
                        - PAGE_TYPE_HOME
                        - PAGE_TYPE_EVENT
                        - PAGE_TYPE_CREATIVE_WORK
                        - PAGE_TYPE_ENTITY
                    type: string
                    format: enum
                - name: platform_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v1.DeletePageResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - PageService
            description: |-
                UpdatePage

                 Updates existing page.
            operationId: PageService_UpdatePage
            parameters:
                - name: page_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.ott.page.v1.UpdatePageRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v1.UpdatePageResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/pages/v1/{page_id}/clone:
        post:
            tags:
                - PageService
            operationId: PageService_ClonePage
            parameters:
                - name: page_id
                  in: path
                  description: The page ID to clone from.
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.ott.page.v1.ClonePageRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v1.ClonePageResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/pages/v1/{page_id}/compare:
        get:
            tags:
                - PageService
            description: |-
                ComparePage

                 Returns a JSON representation of the production and preview versions of this page. The client can then use that
                 to display a diff to the user.
                 Important: this only works on pages that have both a production and a preview version, i.e. pages that have been
                 cloned but not yet deployed.
            operationId: PageService_ComparePage
            parameters:
                - name: page_id
                  in: path
                  description: The page ID to diff.
                  required: true
                  schema:
                    type: string
                - name: page_type
                  in: query
                  required: true
                  schema:
                    enum:
                        - PAGE_TYPE_UNSPECIFIED
                        - PAGE_TYPE_DEFAULT
                        - PAGE_TYPE_HOME
                        - PAGE_TYPE_EVENT
                        - PAGE_TYPE_CREATIVE_WORK
                        - PAGE_TYPE_ENTITY
                    type: string
                    format: enum
                - name: platform_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v1.ComparePageResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/pages/v1/{page_id}/deploy:
        post:
            tags:
                - PageService
            operationId: PageService_DeployPage
            parameters:
                - name: page_id
                  in: path
                  description: The page ID to deploy.
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.ott.page.v1.DeployPageRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v1.DeployPageResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/pages/v2:
        get:
            tags:
                - PageService_v2
            description: |-
                ListPages

                 Returns list of pages based on specified parameters.
            operationId: PageService_v2_ListPages
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     This currently supports queries based on:
                     - `platform_id`, e.g. `platform_id:Zidfx48am194`
                     - `page_type`, e.g. `page_type:event`
                     - `has_banner_collection_id`, e.g. `has_banner_collection_id:homepage` -> this query would return all pages that have
                       a page component that links to the banner collection with ID `homepage`.
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v2.ListPagesResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - PageService_v2
            description: |-
                CreatePage

                 Creates new page.
            operationId: PageService_v2_CreatePage
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.ott.page.v2.Page'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v2.CreatePageResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/pages/v2/{page_id}:
        get:
            tags:
                - PageService_v2
            description: |-
                GetPage

                 Returns page information by page ID.
            operationId: PageService_v2_GetPage
            parameters:
                - name: page_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: page_type
                  in: query
                  required: true
                  schema:
                    enum:
                        - PAGE_TYPE_UNSPECIFIED
                        - PAGE_TYPE_DEFAULT
                        - PAGE_TYPE_HOME
                        - PAGE_TYPE_EVENT
                        - PAGE_TYPE_CREATIVE_WORK
                        - PAGE_TYPE_ENTITY
                    type: string
                    format: enum
                - name: platform_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v2.GetPageResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - PageService_v2
            description: |-
                DeletePage

                 Deletes existing page.
            operationId: PageService_v2_DeletePage
            parameters:
                - name: page_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: page_type
                  in: query
                  required: true
                  schema:
                    enum:
                        - PAGE_TYPE_UNSPECIFIED
                        - PAGE_TYPE_DEFAULT
                        - PAGE_TYPE_HOME
                        - PAGE_TYPE_EVENT
                        - PAGE_TYPE_CREATIVE_WORK
                        - PAGE_TYPE_ENTITY
                    type: string
                    format: enum
                - name: platform_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v2.DeletePageResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        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'
    /ott/pages/v2/{page_id}/clone:
        post:
            tags:
                - PageService_v2
            operationId: PageService_v2_ClonePage
            parameters:
                - name: page_id
                  in: path
                  description: The page ID to clone from.
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.ott.page.v2.ClonePageRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v2.ClonePageResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/pages/v2/{page_id}/compare:
        get:
            tags:
                - PageService_v2
            description: |-
                ComparePage

                 Returns a JSON representation of the production and preview versions of this page. The client can then use that
                 to display a diff to the user.
                 Important: this only works on pages that have both a production and a preview version, i.e. pages that have been
                 cloned but not yet deployed.
            operationId: PageService_v2_ComparePage
            parameters:
                - name: page_id
                  in: path
                  description: The page ID to diff.
                  required: true
                  schema:
                    type: string
                - name: page_type
                  in: query
                  required: true
                  schema:
                    enum:
                        - PAGE_TYPE_UNSPECIFIED
                        - PAGE_TYPE_DEFAULT
                        - PAGE_TYPE_HOME
                        - PAGE_TYPE_EVENT
                        - PAGE_TYPE_CREATIVE_WORK
                        - PAGE_TYPE_ENTITY
                    type: string
                    format: enum
                - name: platform_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v2.ComparePageResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/pages/v2/{page_id}/deploy:
        post:
            tags:
                - PageService_v2
            operationId: PageService_v2_DeployPage
            parameters:
                - name: page_id
                  in: path
                  description: The page ID to deploy.
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.ott.page.v2.DeployPageRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.page.v2.DeployPageResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/platforms/v1:
        get:
            tags:
                - PlatformService
            description: |-
                ListPlatforms

                 Returns list of platforms based on specified parameters.
            operationId: PlatformService_ListPlatforms
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     This currently supports queries based on host, e.g. `host:example.com`
                     To filter on platforms that are configured across all hosts, use `host:*`
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.platform.v1.ListPlatformsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - PlatformService
            description: |-
                CreatePlatform

                 Creates new platform.
            operationId: PlatformService_CreatePlatform
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.ott.platform.v1.Platform'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.platform.v1.CreatePlatformResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/platforms/v1/{platform_id}:
        get:
            tags:
                - PlatformService
            description: |-
                GetPlatform

                 Returns platform information by platform ID.
            operationId: PlatformService_GetPlatform
            parameters:
                - name: platform_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.platform.v1.GetPlatformResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - PlatformService
            description: |-
                DeletePlatform

                 Deletes existing platform.
            operationId: PlatformService_DeletePlatform
            parameters:
                - name: platform_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.platform.v1.DeletePlatformResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - PlatformService
            description: |-
                UpdatePlatform

                 Updates existing platform.
            operationId: PlatformService_UpdatePlatform
            parameters:
                - name: platform_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.ott.platform.v1.UpdatePlatformRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.platform.v1.UpdatePlatformResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/platforms/v1/{platform_id}/compare-deployments:
        get:
            tags:
                - PlatformService
            description: |-
                CompareDeployments

                 Compares preview and production deployments for a platform.
            operationId: PlatformService_CompareDeployments
            parameters:
                - name: platform_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: environment
                  in: query
                  required: true
                  schema:
                    enum:
                        - DEPLOYMENT_ENVIRONMENT_UNSPECIFIED
                        - DEPLOYMENT_ENVIRONMENT_WEB
                    type: string
                    format: enum
                - name: comparison
                  in: query
                  required: true
                  schema:
                    enum:
                        - DEPLOYMENT_COMPARISON_UNSPECIFIED
                        - DEPLOYMENT_COMPARISON_PREVIEW_TO_PRODUCTION
                        - DEPLOYMENT_COMPARISON_PREVIEW_TO_MAIN
                        - DEPLOYMENT_COMPARISON_PRODUCTION_TO_MAIN
                    type: string
                    format: enum
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.platform.v1.CompareDeploymentsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/platforms/v1/{platform_id}/deploy:
        post:
            tags:
                - PlatformService
            operationId: PlatformService_DeployPlatform
            parameters:
                - name: platform_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: environment
                  in: query
                  required: true
                  schema:
                    enum:
                        - DEPLOYMENT_ENVIRONMENT_UNSPECIFIED
                        - DEPLOYMENT_ENVIRONMENT_WEB
                    type: string
                    format: enum
                - name: kind
                  in: query
                  required: true
                  schema:
                    enum:
                        - DEPLOYMENT_KIND_UNSPECIFIED
                        - DEPLOYMENT_KIND_PREVIEW_TO_PRODUCTION
                        - DEPLOYMENT_KIND_PREVIEW_TO_PRODUCTION_FORCED
                        - DEPLOYMENT_KIND_PRODUCTION_TO_PREVIEW
                        - DEPLOYMENT_KIND_UPGRADE_PREVIEW
                        - DEPLOYMENT_KIND_UPGRADE_PRODUCTION
                        - DEPLOYMENT_KIND_REINSTALL_PREVIEW
                        - DEPLOYMENT_KIND_REINSTALL_PRODUCTION
                        - DEPLOYMENT_KIND_SYNC_FILES_PREVIEW
                        - DEPLOYMENT_KIND_SYNC_FILES_PRODUCTION
                    type: string
                    format: enum
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.platform.v1.DeployPlatformResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/slugs/v1:
        get:
            tags:
                - SlugService
            description: |-
                ListSlugs

                 Returns list of slugs based on specified parameters.
            operationId: SlugService_ListSlugs
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     This currently supports queries based on platform_id, path and is_canonical, e.g. `path:"/entity/team/123" AND is_canonical:true AND platform_id:Zidfx48am194`
                  schema:
                    type: string
                - name: page_token
                  in: query
                  description: The pagination token in the List request.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.slug.v1.ListSlugsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - SlugService
            description: |-
                CreateSlug

                 Creates new slug.
            operationId: SlugService_CreateSlug
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.ott.slug.v1.Slug'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.slug.v1.CreateSlugResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /ott/slugs/v1/{slug}:
        get:
            tags:
                - SlugService
            description: |-
                GetSlug

                 Returns slug information by slug ID.
            operationId: SlugService_GetSlug
            parameters:
                - name: slug
                  in: path
                  required: true
                  schema:
                    type: string
                - name: platform_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.slug.v1.GetSlugResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - SlugService
            description: |-
                DeleteSlug

                 Deletes existing slug.
            operationId: SlugService_DeleteSlug
            parameters:
                - name: slug
                  in: path
                  required: true
                  schema:
                    type: string
                - name: platform_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.ott.slug.v1.DeleteSlugResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/assets/v1:
        get:
            tags:
                - AssetService
            description: |-
                ListAssets

                 Returns a list of assets.
            operationId: AssetService_ListAssets
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  description: |-
                    If this field is not empty then it must contain the `next_page_token` value
                     returned by a previous call to this method.  Using this field causes the
                     method to return additional results from the previous method call.
                  schema:
                    type: string
                - name: project_id
                  in: query
                  description: ID of the project from which assets are returned.
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    You can filter list of assets.
                     Example: `labels.event_id:123`
                  schema:
                    type: string
                - name: order_by
                  in: query
                  description: |-
                    Specifies the result ordering for List requests.
                     Supported values are:
                      * "create_time asc|desc"
                      * "size_bytes asc|desc"
                      * "labels.<key> asc|desc"
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.asset.v1.ListAssetsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/assets/v1/{asset_id}:
        get:
            tags:
                - AssetService
            description: |-
                GetAsset

                 Returns information about the asset.
            operationId: AssetService_GetAsset
            parameters:
                - name: asset_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.asset.v1.GetAssetResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - AssetService
            description: |-
                DeleteAsset

                 Deletes the asset.
            operationId: AssetService_DeleteAsset
            parameters:
                - name: asset_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.asset.v1.DeleteAssetResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/assets/v1/{asset_id}/labels:
        post:
            tags:
                - AssetService
            description: |-
                SetLabels

                 Sets labels on the asset.
            operationId: AssetService_SetLabels
            parameters:
                - name: asset_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.asset.v1.Label'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.asset.v1.SetLabelsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/assets/v1/{asset_id}/url:
        get:
            tags:
                - AssetService
            description: |-
                GetAssetURL

                 Returns a signed or public URL for downloading or reading an asset.
            operationId: AssetService_GetAssetURL
            parameters:
                - name: asset_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: sign
                  in: query
                  description: |-
                    It indicates to create a signed URL for downloading or reading an asset.
                     When the asset access control is `ACCESS_CONTROL_MODE_SIGNEDREAD`, this field is required.
                  schema:
                    type: boolean
                - name: sign_option.ttl
                  in: query
                  schema:
                    pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$
                    type: string
                    description: Represents a a duration between -315,576,000,000s and 315,576,000,000s (around 10000 years). Precision is in nanoseconds. 1 nanosecond is represented as 0.000000001s
                - name: sign_option.inline
                  in: query
                  description: |-
                    If inline is true, the URL will be configured such that its response will contain a `content-disposition` header
                     set to `inline`.
                  schema:
                    type: boolean
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.asset.v1.GetAssetURLResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/clips/v1:
        post:
            tags:
                - ClipService
            description: |-
                CreateClip

                 Creates a new clip from the provided input. The clip will be
                 available for downloading once the process is complete.

                 The clip will be stored in the project's storage and the length
                 of the clip will be determined by the `trim_in` and `trim_out` fields.
                 The length of the clip cannot be neither longer than the source nor
                 longer than 2 minutes.

                 The request happens asynchronously and the response will contain
                 the clip's ID. The client can use the ID to query the clip's status
                 by calling the GetClip method.
            operationId: ClipService_CreateClip
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.clip.v1.CreateClipRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.clip.v1.CreateClipResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/clips/v1/{clip_id}:
        get:
            tags:
                - ClipService
            description: |-
                GetClip

                 Returns information about the requested clip.
            operationId: ClipService_GetClip
            parameters:
                - name: clip_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.clip.v1.GetClipResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/configurations/v1:
        get:
            tags:
                - ConfigurationService
            description: |-
                ListConfigurations

                 Return list of configurations.
            operationId: ConfigurationService_ListConfigurations
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  description: |-
                    If this field is not empty then it must contain the `next_page_token` value
                     returned by a previous call to this method.  Using this field causes the
                     method to return additional results from the previous method call.
                  schema:
                    type: string
                - name: project_id
                  in: query
                  description: ID of the project for which configurations are returned.
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language. Only AND statements are supported.
                     Can be used to find the configurations attached to a workflow using `workflow_id:xyz`
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.configuration.v1.ListConfigurationsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - ConfigurationService
            description: |-
                CreateConfiguration

                 Creates a new configuration.
            operationId: ConfigurationService_CreateConfiguration
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.configuration.v1.Configuration'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.configuration.v1.CreateConfigurationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/configurations/v1/{configuration_id}:
        get:
            tags:
                - ConfigurationService
            description: |-
                GetConfiguration

                 Returns information about the configuration.
            operationId: ConfigurationService_GetConfiguration
            parameters:
                - name: configuration_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.configuration.v1.GetConfigurationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - ConfigurationService
            description: |-
                DeleteConfiguration

                 Deletes the configuration. This will detach the configuration from all workflows.
            operationId: ConfigurationService_DeleteConfiguration
            parameters:
                - name: configuration_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.configuration.v1.DeleteConfigurationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - ConfigurationService
            description: |-
                UpdateConfiguration

                 Updates a configuration.
            operationId: ConfigurationService_UpdateConfiguration
            parameters:
                - name: configuration_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.configuration.v1.UpdateConfigurationRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.configuration.v1.UpdateConfigurationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/configurations/v1/{configuration_id}/attach/{workflow_id}:
        post:
            tags:
                - ConfigurationService
            description: |-
                AttachConfiguration

                 Attaches a configuration to a workflow. Multiple configurations can be attached to a workflow, but only one of each
                 kind.
            operationId: ConfigurationService_AttachConfiguration
            parameters:
                - name: configuration_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: workflow_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.configuration.v1.AttachConfigurationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/configurations/v1/{configuration_id}/detach/{workflow_id}:
        post:
            tags:
                - ConfigurationService
            description: |-
                DetachConfiguration

                 Detaches (removes) a configuration from a workflow.
            operationId: ConfigurationService_DetachConfiguration
            parameters:
                - name: configuration_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: workflow_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.configuration.v1.DetachConfigurationResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/ingest_servers/v1:
        get:
            tags:
                - IngestService
            description: |-
                ListServers

                 Returns a list of ingest servers.
            operationId: IngestService_ListServers
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  description: |-
                    If this field is not empty then it must contain the `next_page_token` value
                     returned by a previous call to this method.  Using this field causes the
                     method to return additional results from the previous method call.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.ingest.v1.ListServersResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/ingest_servers/v2:
        get:
            tags:
                - IngestService_v2
            description: |-
                ListServers

                 Returns a list of ingest servers.
            operationId: IngestService_v2_ListServers
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  description: |-
                    If this field is not empty then it must contain the `next_page_token` value
                     returned by a previous call to this method.  Using this field causes the
                     method to return additional results from the previous method call.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.ingest.v2.ListServersResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/ingests/v2:
        get:
            tags:
                - IngestService_v2
            operationId: IngestService_v2_ListIngests
            parameters:
                - name: page_size
                  in: query
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: page_token
                  in: query
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language. Only AND statements are supported.
                     E.g. `not name:""` or `connected:true`.
                     On the name field, prefix and suffix matching is supported to simulate searching, e.g. `name:*foo*`
                  schema:
                    type: string
                - name: order_by
                  in: query
                  description: |-
                    Specifies the result ordering for List requests. If this is not provided, the default order is by ID.
                     Supported values are:
                      * "name asc|desc"
                      * "connected asc|desc"
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.ingest.v2.ListIngestsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - IngestService_v2
            operationId: IngestService_v2_CreateIngest
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.ingest.v2.Ingest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.ingest.v2.CreateIngestResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/ingests/v2/{ingest_id}:
        get:
            tags:
                - IngestService_v2
            operationId: IngestService_v2_GetIngest
            parameters:
                - name: ingest_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.ingest.v2.GetIngestResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - IngestService_v2
            operationId: IngestService_v2_DeleteIngest
            parameters:
                - name: ingest_id
                  in: path
                  description: The ID of the ingest to delete.
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.ingest.v2.DeleteIngestResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - IngestService_v2
            operationId: IngestService_v2_UpdateIngest
            parameters:
                - name: ingest_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.ingest.v2.UpdateIngestRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.ingest.v2.UpdateIngestResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/ingests/v2/{ingest_id}/disconnect:
        post:
            tags:
                - IngestService_v2
            operationId: IngestService_v2_DisconnectIngest
            parameters:
                - name: ingest_id
                  in: path
                  description: The ID of the ingest to disconnect.
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.ingest.v2.DisconnectIngestRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.ingest.v2.DisconnectIngestResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/ingests/v2/{ingest_id}/pull:
        post:
            tags:
                - IngestService_v2
            operationId: IngestService_v2_PullIngest
            parameters:
                - name: ingest_id
                  in: path
                  description: The ID of the ingest to start pulling.
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.ingest.v2.PullIngestRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.ingest.v2.PullIngestResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/live_streams/v1:
        get:
            tags:
                - LiveStreamService
            description: |-
                ListLiveStreams

                 Return list of live streams.
            operationId: LiveStreamService_ListLiveStreams
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  description: |-
                    If this field is not empty then it must contain the `next_page_token` value
                     returned by a previous call to this method.  Using this field causes the
                     method to return additional results from the previous method call.
                  schema:
                    type: string
                - name: project_id
                  in: query
                  description: ID of the project from which live streams are returned.
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    You can filter list of live streams by video_id.
                     Example: `video_id:123`
                  schema:
                    type: string
                - name: include_simulcasts
                  in: query
                  description: If true, the response will include simulcasts information. Defaults to false.
                  schema:
                    type: boolean
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.live_stream.v1.ListLiveStreamsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - LiveStreamService
            description: |-
                CreateLiveStream

                 Creates a new live stream.
            operationId: LiveStreamService_CreateLiveStream
            parameters:
                - name: proxy_ingest
                  in: query
                  description: If true, the live stream's ingest URL will be proxied through an alternative ingest server.
                  schema:
                    type: boolean
                - name: secondary_output
                  in: query
                  description: |-
                    If true, the live stream will have a secondary output (and separate transcoding pipeline).
                     This comes at an additional cost.
                  schema:
                    type: boolean
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.live_stream.v1.LiveStream'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.live_stream.v1.CreateLiveStreamResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/live_streams/v1/{live_stream_id}:
        get:
            tags:
                - LiveStreamService
            description: |-
                GetLiveStream

                 Returns information about the live stream.
            operationId: LiveStreamService_GetLiveStream
            parameters:
                - name: live_stream_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.live_stream.v1.GetLiveStreamResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - LiveStreamService
            description: |-
                DeleteLiveStream

                 Deletes the live stream and all resources within that live stream.
            operationId: LiveStreamService_DeleteLiveStream
            parameters:
                - name: live_stream_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.live_stream.v1.DeleteLiveStreamResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - LiveStreamService
            description: |-
                UpdateLiveStream

                 Updates live stream's basic fields (i.e. name)
            operationId: LiveStreamService_UpdateLiveStream
            parameters:
                - name: live_stream_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.live_stream.v1.UpdateLiveStreamRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.live_stream.v1.UpdateLiveStreamResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/live_streams/v2:
        get:
            tags:
                - LiveStreamService_v2
            description: |-
                ListLiveStreams

                 Return list of live streams.
            operationId: LiveStreamService_v2_ListLiveStreams
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  description: |-
                    If this field is not empty then it must contain the `next_page_token` value
                     returned by a previous call to this method.  Using this field causes the
                     method to return additional results from the previous method call.
                  schema:
                    type: string
                - name: project_id
                  in: query
                  description: ID of the project from which live streams are returned.
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    You can filter list of live streams by video_id.
                     Example: `video_id:123`
                  schema:
                    type: string
                - name: include_simulcasts
                  in: query
                  description: If true, the response will include simulcasts information. Defaults to false.
                  schema:
                    type: boolean
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.live_stream.v2.ListLiveStreamsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - LiveStreamService_v2
            description: |-
                CreateLiveStream

                 Creates a new live stream.
            operationId: LiveStreamService_v2_CreateLiveStream
            parameters:
                - name: proxy_ingest
                  in: query
                  description: If true, the live stream's ingest URL will be proxied through an alternative ingest server.
                  schema:
                    type: boolean
                - name: secondary_output
                  in: query
                  description: |-
                    If true, the live stream will have a secondary output (and separate transcoding pipeline).
                     This comes at an additional cost.
                  schema:
                    type: boolean
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.live_stream.v2.LiveStream'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.live_stream.v2.CreateLiveStreamResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/live_streams/v2/{live_stream_id}:
        get:
            tags:
                - LiveStreamService_v2
            description: |-
                GetLiveStream

                 Returns information about the live stream.
            operationId: LiveStreamService_v2_GetLiveStream
            parameters:
                - name: live_stream_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.live_stream.v2.GetLiveStreamResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - LiveStreamService_v2
            description: |-
                DeleteLiveStream

                 Deletes the live stream and all resources within that live stream.
            operationId: LiveStreamService_v2_DeleteLiveStream
            parameters:
                - name: live_stream_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.live_stream.v2.DeleteLiveStreamResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - LiveStreamService_v2
            description: |-
                UpdateLiveStream

                 Updates live stream's basic fields (i.e. name)
            operationId: LiveStreamService_v2_UpdateLiveStream
            parameters:
                - name: live_stream_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.live_stream.v2.UpdateLiveStreamRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.live_stream.v2.UpdateLiveStreamResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/playlists/v1/{playlist_id}:
        get:
            tags:
                - PlaylistService
            description: |-
                GetPlaylist

                 Returns playlist object.
            operationId: PlaylistService_GetPlaylist
            parameters:
                - name: playlist_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.playlist.v1.GetPlaylistResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - PlaylistService
            description: |-
                UpdatePlaylist

                 Updates playlist.
            operationId: PlaylistService_UpdatePlaylist
            parameters:
                - name: playlist_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: update_mask
                  in: query
                  schema:
                    type: string
                    format: field-mask
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.playlist.v1.Playlist'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.playlist.v1.UpdatePlaylistResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/playlists/v1/{playlist_id}/statistics:
        get:
            tags:
                - PlaylistService
            description: |-
                GetPlaylistStatistics

                 Returns the statistics of an associated video variant of a playlist.
                 This assumes all video variants are of the same length.
            operationId: PlaylistService_GetPlaylistStatistics
            parameters:
                - name: playlist_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.playlist.v1.GetPlaylistStatisticsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/rtmp_ingests/v1:
        get:
            tags:
                - IngestService
            operationId: IngestService_ListRTMPIngests
            parameters:
                - name: page_size
                  in: query
                  required: true
                  schema:
                    type: integer
                    format: int32
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: page_token
                  in: query
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language. Only AND statements are supported.
                     E.g. `not name:""` or `connected:true`.
                     On the name field, prefix and suffix matching is supported to simulate searching, e.g. `name:*foo*`
                  schema:
                    type: string
                - name: order_by
                  in: query
                  description: |-
                    Specifies the result ordering for List requests. If this is not provided, the default order is by ID.
                     Supported values are:
                      * "name asc|desc"
                      * "connected asc|desc"
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.ingest.v1.ListRTMPIngestsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - IngestService
            operationId: IngestService_CreateRTMPIngest
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.ingest.v1.RTMPIngest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.ingest.v1.CreateRTMPIngestResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/rtmp_ingests/v1/{rtmp_ingest_id}:
        get:
            tags:
                - IngestService
            operationId: IngestService_GetRTMPIngest
            parameters:
                - name: rtmp_ingest_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.ingest.v1.GetRTMPIngestResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - IngestService
            operationId: IngestService_DeleteRTMPIngest
            parameters:
                - name: rtmp_ingest_id
                  in: path
                  description: The ID of the RTMP ingest to delete.
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.ingest.v1.DeleteRTMPIngestResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - IngestService
            operationId: IngestService_UpdateRTMPIngest
            parameters:
                - name: rtmp_ingest_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.ingest.v1.UpdateRTMPIngestRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.ingest.v1.UpdateRTMPIngestResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/rtmp_ingests/v1/{rtmp_ingest_id}/disconnect:
        post:
            tags:
                - IngestService
            operationId: IngestService_DisconnectRTMPIngest
            parameters:
                - name: rtmp_ingest_id
                  in: path
                  description: The ID of the RTMP ingest to disconnect.
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.ingest.v1.DisconnectRTMPIngestRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.ingest.v1.DisconnectRTMPIngestResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/rtmp_ingests/v1/{rtmp_ingest_id}/pull:
        post:
            tags:
                - IngestService
            operationId: IngestService_PullRTMPIngest
            parameters:
                - name: rtmp_ingest_id
                  in: path
                  description: The ID of the RTMP ingest to start pulling.
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.ingest.v1.PullRTMPIngestRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.ingest.v1.PullRTMPIngestResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/simulcasts/v1:
        post:
            tags:
                - SimulcastService
            description: |-
                CreateSimulcast

                 Creates a new simulcast.
            operationId: SimulcastService_CreateSimulcast
            parameters:
                - name: live_stream_id
                  in: query
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.simulcast.v1.Simulcast'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.simulcast.v1.CreateSimulcastResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/simulcasts/v1/{simulcast_id}:
        get:
            tags:
                - SimulcastService
            description: |-
                GetSimulcast

                 Returns information about the simulcast.
            operationId: SimulcastService_GetSimulcast
            parameters:
                - name: simulcast_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: live_stream_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.simulcast.v1.GetSimulcastResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - SimulcastService
            description: |-
                DeleteSimulcast

                 Deletes the simulcast.
            operationId: SimulcastService_DeleteSimulcast
            parameters:
                - name: simulcast_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: live_stream_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.simulcast.v1.DeleteSimulcastResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - SimulcastService
            description: |-
                UpdateSimulcast

                 Updates simulcast's name and/or target. It's only available for simulcast with IDLE status.
            operationId: SimulcastService_UpdateSimulcast
            parameters:
                - name: simulcast_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.simulcast.v1.UpdateSimulcastRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.simulcast.v1.UpdateSimulcastResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/simulcasts/v1/{simulcast_id}/start:
        post:
            tags:
                - SimulcastService
            description: |-
                StartSimulcast

                 Simulcast starts automatically. This method should be used when it was manually stopped or
                 simulcast has FAILED status and connection should be retried.
            operationId: SimulcastService_StartSimulcast
            parameters:
                - name: simulcast_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: live_stream_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.simulcast.v1.StartSimulcastResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/simulcasts/v1/{simulcast_id}/stop:
        post:
            tags:
                - SimulcastService
            description: |-
                StopSimulcast

                 Use this method to stop active simulcasting.
            operationId: SimulcastService_StopSimulcast
            parameters:
                - name: simulcast_id
                  in: path
                  required: true
                  schema:
                    type: string
                - name: live_stream_id
                  in: query
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.simulcast.v1.StopSimulcastResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/stitchers/v1:
        post:
            tags:
                - StitcherService
            description: |-
                CreateStitcher

                 Creates a new stitcher instance. The stitcher instance is used
                 to stitch inputs into a single output.
            operationId: StitcherService_CreateStitcher
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.stitcher.v1.CreateStitcherRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.stitcher.v1.CreateStitcherResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/stitchers/v1/{stitcher_id}:
        get:
            tags:
                - StitcherService
            description: |-
                GetStitcher

                 Returns information about the requested stitcher instance.
            operationId: StitcherService_GetStitcher
            parameters:
                - name: stitcher_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.stitcher.v1.GetStitcherResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/subtitle_tracks/v1:
        get:
            tags:
                - SubtitleService
            description: |-
                ListTracks

                 Return list of tracks. This should always be filtered by `playlist_id`, and will return all results (unpaginated).
            operationId: SubtitleService_ListTracks
            parameters:
                - name: project_id
                  in: query
                  description: ID of the project for which tracks are returned.
                  required: true
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    You can filter list of tracks by playlist ID (required).
                     Example: `playlist_id:123`
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.subtitle.v1.ListTracksResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - SubtitleService
            description: |-
                CreateTrack

                 Creates a new track and starts asynchronously segmenting it for inclusion in the video (playlist).
                 The track will be available for streaming once the process is complete.
            operationId: SubtitleService_CreateTrack
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.subtitle.v1.Track'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.subtitle.v1.CreateTrackResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/subtitle_tracks/v1/{track_id}:
        delete:
            tags:
                - SubtitleService
            description: |-
                DeleteTrack

                 Deletes the track and all resources within that track.
            operationId: SubtitleService_DeleteTrack
            parameters:
                - name: track_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.subtitle.v1.DeleteTrackResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/uploads/v1:
        post:
            tags:
                - UploadService
            description: |-
                CreateUploadSession

                 Creates a new upload session.
            operationId: UploadService_CreateUploadSession
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.upload.v1.CreateUploadSessionRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.upload.v1.CreateUploadSessionResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/video_protection/v1/rulesets:
        get:
            tags:
                - VideoProtectionService
            description: |-
                ListVideoProtectionRulesets

                 Return list of video_protections.
            operationId: VideoProtectionService_ListVideoProtectionRulesets
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  description: |-
                    If this field is not empty then it must contain the `next_page_token` value
                     returned by a previous call to this method.  Using this field causes the
                     method to return additional results from the previous method call.
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    You can filter the list of video_protections by the following fields:
                     * `disabled` (boolean): Whether the ruleset is disabled or not.
                     * `is_template` (boolean) - is true when there is no content targeting at all
                     * `applies_to_all_content` (boolean) - is true when the offer applies to all content, false if it applies to specific content.
                     * `entity_ids` (array of strings) - matches offers that apply to at least one of the specified entity IDs. You MUST use the `>@` operator for this field, e.g. `entity_ids>@(entityID1 OR entityID2)`
                     * `event_ids` (array of strings) - matches offers that apply to at least one of the specified event IDs. You MUST use the `>@` operator for this field, e.g. `event_ids>@(eventID1 OR eventID2)`
                     * `creative_work_ids` (array of strings) - matches offers that apply to at least one of the specified creative work IDs. You MUST use the `>@` operator for this field, e.g. `creative_work_ids>@(creativeWorkID1 OR creativeWorkID2)`
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.video_protection.v1.ListVideoProtectionRulesetsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - VideoProtectionService
            description: |-
                CreateVideoProtectionRuleset

                 Creates new ruleset.
            operationId: VideoProtectionService_CreateVideoProtectionRuleset
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.video_protection.v1.VideoProtectionRuleset'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.video_protection.v1.CreateVideoProtectionRulesetResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/video_protection/v1/rulesets/{video_protection_ruleset_id}:
        get:
            tags:
                - VideoProtectionService
            description: |-
                GetVideoProtection

                 Returns information about the video_protection.
            operationId: VideoProtectionService_GetVideoProtectionRuleset
            parameters:
                - name: video_protection_ruleset_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.video_protection.v1.GetVideoProtectionRulesetResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - VideoProtectionService
            description: |-
                DeleteVideoProtectionRuleset

                 Deletes existing ruleset. Can only be done when there are no more videos attached to it.
            operationId: VideoProtectionService_DeleteVideoProtectionRuleset
            parameters:
                - name: video_protection_ruleset_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.video_protection.v1.DeleteVideoProtectionRulesetResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - VideoProtectionService
            description: |-
                UpdateVideoProtectionRuleset

                 Updates a video_protection_ruleset. When updating a ruleset that is already attached to one or more videos, this
                 change will apply to all of those videos (including past ones).

                 These changes apply asynchronously and may take a bit of time to propagate.
            operationId: VideoProtectionService_UpdateVideoProtectionRuleset
            parameters:
                - name: video_protection_ruleset_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.video_protection.v1.UpdateVideoProtectionRulesetRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.video_protection.v1.UpdateVideoProtectionRulesetResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/video_protection/v2/rulesets:
        get:
            tags:
                - VideoProtectionService_v2
            description: |-
                ListVideoProtectionRulesets

                 Return list of video_protections.
            operationId: VideoProtectionService_v2_ListVideoProtectionRulesets
            parameters:
                - name: project_id
                  in: query
                  required: true
                  schema:
                    type: string
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  description: |-
                    If this field is not empty then it must contain the `next_page_token` value
                     returned by a previous call to this method.  Using this field causes the
                     method to return additional results from the previous method call.
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    You can filter the list of video_protections by the following fields:
                     * `disabled` (boolean): Whether the ruleset is disabled or not.
                     * `is_template` (boolean) - is true when there is no content targeting at all

                     To find the rulesets associated with a single content item / video, use ListVideoProtectionRulesetsForContentItem
                  schema:
                    type: string
                - name: order_by
                  in: query
                  description: |-
                    Specifies the result ordering for List requests.
                     Supported values are:
                      * "priority desc" - default
                      * "applicability_type asc, priority desc" - shows rulesets targeting all content first, then entities, then events. Sorted by priority within the same applicability type.
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.video_protection.v2.ListVideoProtectionRulesetsResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - VideoProtectionService_v2
            description: |-
                CreateVideoProtectionRuleset

                 Creates new ruleset.
            operationId: VideoProtectionService_v2_CreateVideoProtectionRuleset
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.video_protection.v2.VideoProtectionRuleset'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.video_protection.v2.CreateVideoProtectionRulesetResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/video_protection/v2/rulesets/{video_protection_ruleset_id}:
        get:
            tags:
                - VideoProtectionService_v2
            description: |-
                GetVideoProtection

                 Returns information about the video_protection.
            operationId: VideoProtectionService_v2_GetVideoProtectionRuleset
            parameters:
                - name: video_protection_ruleset_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.video_protection.v2.GetVideoProtectionRulesetResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - VideoProtectionService_v2
            description: |-
                DeleteVideoProtectionRuleset

                 Deletes existing ruleset. Can only be done when there are no more videos attached to it.
            operationId: VideoProtectionService_v2_DeleteVideoProtectionRuleset
            parameters:
                - name: video_protection_ruleset_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.video_protection.v2.DeleteVideoProtectionRulesetResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - VideoProtectionService_v2
            description: |-
                UpdateVideoProtectionRuleset

                 Updates a video_protection_ruleset. When updating a ruleset that is already attached to one or more videos, this
                 change will apply to all of those videos (including past ones).

                 These changes apply asynchronously and may take a bit of time to propagate.
            operationId: VideoProtectionService_v2_UpdateVideoProtectionRuleset
            parameters:
                - name: video_protection_ruleset_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.video_protection.v2.UpdateVideoProtectionRulesetRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.video_protection.v2.UpdateVideoProtectionRulesetResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/videos/v1:
        get:
            tags:
                - VideoService
            description: |-
                ListVideos

                 Return list of videos.
            operationId: VideoService_ListVideos
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  description: |-
                    If this field is not empty then it must contain the `next_page_token` value
                     returned by a previous call to this method.  Using this field causes the
                     method to return additional results from the previous method call.
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    Filter the result-set by properties using a subset of the Kibana Query Language.
                     Supported keys to filter on are:
                     - name: The name of the videos. Supports prefix and suffix wildcards, e.g. `name:*barca*`
                  schema:
                    type: string
                - name: project_id
                  in: query
                  description: The ID of the project that the videos belongs to.
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.video.v1.ListVideosResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/videos/v1/{video_id}:
        get:
            tags:
                - VideoService
            description: |-
                GetVideo

                 Returns information about the video.
            operationId: VideoService_GetVideo
            parameters:
                - name: video_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.video.v1.GetVideoResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - VideoService
            description: |-
                DeleteVideo

                 Deletes the video (including the associated playlists and segment files in storage).
            operationId: VideoService_DeleteVideo
            parameters:
                - name: video_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.video.v1.DeleteVideoResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - VideoService
            description: |-
                UpdateVideo

                 Updates video settings.
            operationId: VideoService_UpdateVideo
            parameters:
                - name: video_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.video.v1.UpdateVideoRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.video.v1.UpdateVideoResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/vods/v1:
        get:
            tags:
                - VODService
            description: |-
                ListVideos

                 Return list of videos.
            operationId: VODService_ListVideos
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  description: |-
                    If this field is not empty then it must contain the `next_page_token` value
                     returned by a previous call to this method.  Using this field causes the
                     method to return additional results from the previous method call.
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    You can filter list of vods by video_id.
                     Example: `video_id:123`
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.vod.v1.ListVideosResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - VODService
            description: |-
                CreateVideo

                 Creates a new video and starts the process. The video will be
                 available for streaming once the process is complete.
            operationId: VODService_CreateVideo
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.vod.v1.VOD'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.vod.v1.CreateVideoResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/vods/v1/{vod_id}:
        get:
            tags:
                - VODService
            description: |-
                GetVideo

                 Returns information about the video.
            operationId: VODService_GetVideo
            parameters:
                - name: vod_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.vod.v1.GetVideoResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - VODService
            description: |-
                DeleteVideo

                 Deletes the video and all resources within that video.
            operationId: VODService_DeleteVideo
            parameters:
                - name: vod_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.vod.v1.DeleteVideoResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - VODService
            description: |-
                UpdateVideo

                 Updates video's basic fields (i.e. name)
            operationId: VODService_UpdateVideo
            parameters:
                - name: vod_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.vod.v1.UpdateVideoRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.vod.v1.UpdateVideoResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/vods/v1/{vod_id}/start_processing:
        post:
            tags:
                - VODService
            description: |-
                StartVideoProcess

                 Starts the video process. The video will be available for streaming once the process is complete.
            operationId: VODService_StartVideoProcess
            parameters:
                - name: vod_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.vod.v1.StartVideoProcessResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/vods/v2:
        get:
            tags:
                - VODService_v2
            description: |-
                ListVideos

                 Return list of videos.
            operationId: VODService_v2_ListVideos
            parameters:
                - name: page_size
                  in: query
                  description: Maximum number of records to return
                  schema:
                    type: integer
                    format: int32
                - name: page_token
                  in: query
                  description: |-
                    If this field is not empty then it must contain the `next_page_token` value
                     returned by a previous call to this method.  Using this field causes the
                     method to return additional results from the previous method call.
                  schema:
                    type: string
                - name: filter
                  in: query
                  description: |-
                    You can filter list of vods by video_id.
                     Example: `video_id:123`
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.vod.v2.ListVideosResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        post:
            tags:
                - VODService_v2
            description: |-
                CreateVideo

                 Creates a new video and starts the process. The video will be
                 available for streaming once the process is complete.
            operationId: VODService_v2_CreateVideo
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.vod.v2.VOD'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.vod.v2.CreateVideoResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/vods/v2/{vod_id}:
        get:
            tags:
                - VODService_v2
            description: |-
                GetVideo

                 Returns information about the video.
            operationId: VODService_v2_GetVideo
            parameters:
                - name: vod_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.vod.v2.GetVideoResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        delete:
            tags:
                - VODService_v2
            description: |-
                DeleteVideo

                 Deletes the video and all resources within that video.
            operationId: VODService_v2_DeleteVideo
            parameters:
                - name: vod_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.vod.v2.DeleteVideoResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
        patch:
            tags:
                - VODService_v2
            description: |-
                UpdateVideo

                 Updates video's basic fields (i.e. name)
            operationId: VODService_v2_UpdateVideo
            parameters:
                - name: vod_id
                  in: path
                  required: true
                  schema:
                    type: string
            requestBody:
                content:
                    application/json:
                        schema:
                            $ref: '#/components/schemas/motto.streaming.vod.v2.UpdateVideoRequest'
                required: true
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.vod.v2.UpdateVideoResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
    /streaming/vods/v2/{vod_id}/start_processing:
        post:
            tags:
                - VODService_v2
            description: |-
                StartVideoProcess

                 Starts the video process. The video will be available for streaming once the process is complete.
            operationId: VODService_v2_StartVideoProcess
            parameters:
                - name: vod_id
                  in: path
                  required: true
                  schema:
                    type: string
            responses:
                "200":
                    description: OK
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/motto.streaming.vod.v2.StartVideoProcessResponse'
                default:
                    description: Default error response
                    content:
                        application/json:
                            schema:
                                $ref: '#/components/schemas/google.rpc.Status'
components:
    schemas:
        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.
        google.protobuf.Value:
            description: Represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values.
        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).'
        google.type.LatLng:
            type: object
            properties:
                latitude:
                    type: number
                    description: The latitude in degrees. It must be in the range [-90.0, +90.0].
                    format: double
                longitude:
                    type: number
                    description: The longitude in degrees. It must be in the range [-180.0, +180.0].
                    format: double
            description: |-
                An object that represents a latitude/longitude pair. This is expressed as a
                 pair of doubles to represent degrees latitude and degrees longitude. Unless
                 specified otherwise, this must conform to the
                 <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
                 standard</a>. Values must be within normalized ranges.
        google.type.Money:
            type: object
            properties:
                currency_code:
                    type: string
                    description: The three-letter currency code defined in ISO 4217.
                units:
                    type: string
                    description: |-
                        The whole units of the amount.
                         For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar.
                nanos:
                    type: integer
                    description: |-
                        Number of nano (10^-9) units of the amount.
                         The value must be between -999,999,999 and +999,999,999 inclusive.
                         If `units` is positive, `nanos` must be positive or zero.
                         If `units` is zero, `nanos` can be positive, zero, or negative.
                         If `units` is negative, `nanos` must be negative or zero.
                         For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
                    format: int32
            description: Represents an amount of money with its currency type.
        motto.accounting.usage.v1.ListUsagesResponse:
            type: object
            properties:
                project_id:
                    type: string
                    description: The unique identifier of the project.
                usages:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.accounting.usage.v1.Usage'
                    description: |-
                        The list of usage records, each detailing the usage amount and the
                         corresponding SKU.
                start_time:
                    type: string
                    description: The start time of the cycle for the listed usages.
                    format: date-time
                end_time:
                    type: string
                    description: The end time of the cycle for the listed usages.
                    format: date-time
        motto.accounting.usage.v1.Usage:
            type: object
            properties:
                type:
                    type: string
                    description: |-
                        The type of the usage, identifying the SKU or feature being consumed (e.g.
                         transcoding, OTT platform).
                amount:
                    allOf:
                        - $ref: '#/components/schemas/motto.accounting.usage.v1.Usage_Amount'
                    description: The amount of usage for this specific type.
                unit:
                    type: string
                    description: The unit of measurement for the usage (e.g. GB, minutes).
            description: Represents a specific usage of a SKU.
        motto.accounting.usage.v1.Usage_Amount:
            type: object
            properties:
                units:
                    type: string
                    description: The number of whole units consumed.
                nanos:
                    type: integer
                    description: |-
                        The fractional part of the units consumed, represented in nanos (1
                         billionth of a unit).
                    format: int32
            description: The total amount of this usage type consumed during the cycle.
        motto.analytics.activity.v1.Activity:
            type: object
            properties:
                id:
                    type: string
                    description: Unique identifier for this activity.
                project_id:
                    type: string
                    description: Project ID.
                domain:
                    type: string
                    description: |-
                        Domain of the activity.
                         For example: Streaming
                service_id:
                    type: string
                    description: |-
                        Service identifier for the producer of this activity.
                         For example: "transcoder"
                message:
                    type: string
                    description: Human-readable message of the activity.
                code:
                    type: string
                    description: |-
                        Code of the activity.
                         For example: "streaming.transcode.failed", "streaming.ingest.started"
                record_time:
                    type: string
                    description: Time when the activity was recorded.
                    format: date-time
                dimensions:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        Key-value map for dimensions. Dimensions are used to filter activity logs.
                         Dimensions are generated by the producer of this data point, based on available data.
                         For example: {"video_id": "123", "workflow_id": "456"}
            description: Activity is a data point that represents an action or event in the system.
        motto.analytics.activity.v1.GetActivityResponse:
            type: object
            properties:
                activity:
                    $ref: '#/components/schemas/motto.analytics.activity.v1.Activity'
        motto.analytics.activity.v1.ListActivitiesResponse:
            type: object
            properties:
                activities:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.analytics.activity.v1.Activity'
                next_page_token:
                    type: string
        motto.annotations.action.v1.ResumeActionRequest:
            required:
                - url
            type: object
            properties:
                url:
                    type: string
                    description: URL to resume the action at.
        motto.annotations.action.v1.ResumeActionResponse:
            type: object
            properties: {}
        motto.annotations.action_configuration.v1.ActionConfigurationCondition:
            type: object
            properties:
                confidence_threshold:
                    type: number
                    description: |-
                        Only execute the actions if the confidence field on an annotation is greater than or equal to (>=) this value.

                        Important: at most one of `confidence_threshold`, `source_types` may be set per request.
                    format: float
                source_types:
                    allOf:
                        - $ref: '#/components/schemas/motto.annotations.action_configuration.v1.ActionConfigurationConditionSourceTypes'
                    description: |-
                        Only execute the actions if the source type is one of the provided types.

                        Important: at most one of `confidence_threshold`, `source_types` may be set per request.
        motto.annotations.action_configuration.v1.ActionConfigurationConditionSourceTypes:
            type: object
            properties:
                types:
                    type: array
                    items:
                        type: string
        motto.annotations.action_configuration.v1.GetActionConfigurationResponse:
            type: object
            properties:
                configuration:
                    type: object
                conditions:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.annotations.action_configuration.v1.ActionConfigurationCondition'
                    description: |-
                        The conditions under which the actions should be executed. If not provided, the actions will always be executed.
                         If more than one condition is provided, all conditions must be met for the actions to be executed.
        motto.annotations.action_configuration.v1.SetActionConfigurationRequest:
            required:
                - annotation_type_id
                - configuration
            type: object
            properties:
                annotation_type_id:
                    type: string
                    description: The id of the annotation type to attach action types to
                configuration:
                    type: object
                    description: |-
                        A map of `action_type_id` to a set of key-value pairs containing all input fields for that action type, and their values.

                         For example, if there are two action types configured, `create_clip` and `share_to_instagram`, this map would look like:
                         ```
                         {
                           "create_clip": {
                             "name": "Goal",
                             "relative_end_offset": 10000,
                             "relative_start_offset": -10000
                           },
                           "share_to_instagram": {
                             "clip_asset_id": "$create_clip.reserved_asset_id"
                             "social_media_post": "Have a look at this great goal! #soccer #goal #sports"
                           }
                         }
                         ```

                         A few things to note:
                         1. The values you specify in this payload must match the types as defined in the action type's `input_fields` field.
                         2. If you do not provide a value on an input field, the action type input field's default value will be used.
                         3. If you want to pass the output of an action type as input to a following action type, you can use the `$` notation.
                         The required format is `$action_type_id.output_field`. The field name must be a field in the output of a previous action type.
                         In the example above, the `clip_asset_id` field in the `share_to_instagram` action type is populated with the `reserved_asset_id` field from the `create_clip` action type.

                         These actions are executed in parallel where possible, unless there is a dependency between actions, in which case the dependent action will wait for the dependency to complete.
                conditions:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.annotations.action_configuration.v1.ActionConfigurationCondition'
                    description: |-
                        The conditions under which the actions should be executed. If not provided, the actions will always be executed.
                         If more than one condition is provided, all conditions must be met for the actions to be executed.
        motto.annotations.action_configuration.v1.SetActionConfigurationResponse:
            type: object
            properties: {}
        motto.annotations.action_secret.v1.ActionSecret:
            required:
                - id
                - project_id
            type: object
            properties:
                id:
                    type: string
                    description: User generated identifier for this secret. E.g. `motto_jwt`
                project_id:
                    type: string
                    description: The project ID that this secret belongs to.
                description:
                    type: string
                    description: The description of the action secret. E.g. `API token for a Motto account with Editor access`.
                value:
                    writeOnly: true
                    type: string
                    description: The secret to store. This will not be returned in the response.
            description: ActionSecret is a single action type definition that gets invoked when an annotation is created.
        motto.annotations.action_secret.v1.CreateActionSecretResponse:
            type: object
            properties:
                secret:
                    $ref: '#/components/schemas/motto.annotations.action_secret.v1.ActionSecret'
        motto.annotations.action_secret.v1.DeleteActionSecretResponse:
            type: object
            properties: {}
        motto.annotations.action_secret.v1.GetActionSecretResponse:
            type: object
            properties:
                secret:
                    $ref: '#/components/schemas/motto.annotations.action_secret.v1.ActionSecret'
        motto.annotations.action_secret.v1.ListActionSecretsResponse:
            type: object
            properties:
                secrets:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.annotations.action_secret.v1.ActionSecret'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.annotations.action_secret.v1.UpdateActionSecretRequest:
            required:
                - secret_id
                - secret
                - update_mask
            type: object
            properties:
                secret_id:
                    type: string
                secret:
                    $ref: '#/components/schemas/motto.annotations.action_secret.v1.ActionSecret'
                update_mask:
                    type: string
                    format: field-mask
        motto.annotations.action_secret.v1.UpdateActionSecretResponse:
            type: object
            properties:
                secret:
                    $ref: '#/components/schemas/motto.annotations.action_secret.v1.ActionSecret'
        motto.annotations.action_type.v1.ActionType:
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: System generated unique identifier for the action type. E.g. `create_clip`
                name:
                    readOnly: true
                    type: string
                    description: The name of the action type. E.g. `Create Clip`
                description:
                    readOnly: true
                    type: string
                    description: The description of the action type.
                image_url:
                    type: string
                    description: (Optional) An image url that represents the action type. This is used in the UI to show the action type.
                category:
                    type: string
                    description: A category of the action type. This is meant to group action types together in the UI.
                input_fields:
                    readOnly: true
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.annotations.action_type.v1.ActionTypeInputField'
                    description: The input fields for the action type.
                output_fields:
                    readOnly: true
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.annotations.action_type.v1.ActionTypeOutputField'
                    description: The output fields for the action type.
                disabled:
                    readOnly: true
                    type: boolean
                    description: |-
                        If the action type is disabled. The default value is `false`. When set to `true`, this action type can no longer
                         be selected to be executed on a newly created annotation type (but it may still be executed on existing annotation type invocations).
            description: ActionType is a single action type definition that gets invoked when an annotation is created.
        motto.annotations.action_type.v1.ActionTypeInputField:
            type: object
            properties:
                field:
                    readOnly: true
                    type: string
                    description: The input field. E.g. `clip_name` or `asset_id`.
                description:
                    readOnly: true
                    type: string
                    description: The description of the input field.
                type:
                    readOnly: true
                    type: string
                    description: The type of the input field. The value can be either `string`, `number`, `bool` or 'object'.
                default_value:
                    readOnly: true
                    allOf:
                        - $ref: '#/components/schemas/google.protobuf.Value'
                    description: The default value of the input field.
                secret:
                    readOnly: true
                    type: boolean
                    description: |-
                        If the input field is a secret. The default value is `false`. When set to `true`, the UI will recommend using the
                         action secrets system to store the value of this field.
        motto.annotations.action_type.v1.ActionTypeOutputField:
            type: object
            properties:
                field:
                    readOnly: true
                    type: string
                    description: The input field (variable) name.
                description:
                    readOnly: true
                    type: string
                    description: The description of the input field.
                type:
                    readOnly: true
                    type: string
                    description: The type of the input field. The value can be either `string`, `number` or `bool`.
        motto.annotations.action_type.v1.GetActionTypeResponse:
            type: object
            properties:
                action_type:
                    $ref: '#/components/schemas/motto.annotations.action_type.v1.ActionType'
        motto.annotations.action_type.v1.ListActionTypesResponse:
            type: object
            properties:
                action_types:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.annotations.action_type.v1.ActionType'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.annotations.annotation.v1.Annotation:
            required:
                - project_id
                - type_id
                - video_id
                - offset
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: System generated unique identifier for the annotation.
                project_id:
                    type: string
                type_id:
                    type: string
                    description: The type of annotation. This corresponds to a set of previously defined types.
                video_id:
                    type: string
                    description: The video in which this annotation occurs.
                offset:
                    type: string
                    description: |-
                        The time at which this annotation occurs in the video. This is defined in milliseconds, relative to the start of
                         the video. For example, if a goal happens after 5 minutes of the video, this would be 300000.

                         If the offset is not know, you can provide a negative value, e.g. -1.
                         Note: if you provide a negative offset, the annotation may be ignored by some systems that require a known offset,
                         like annotation actions (e.g. clipping a video).

                         See also: `start_offset` and `end_offset`.
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    description: |-
                        The visibility of the annotation. If the annotation is hidden, then it will not be shown to the user.
                         Note: depending on the configuration of the annotation type, some of the actions associated with this annotation
                         may still have publicly visible consequences (e.g. a generated clip may be visible to the public, if so configured).

                         This may be left to unspecified, in which case the visibility will be inherited from the annotation type.
                    format: enum
                event_id:
                    type: string
                    description: |-
                        Optional.
                         When provided, this should be an event ID that is associated with this annotation. This information
                         can be provided by downstream services that need more context, or to perform associated actions (e.g. updating event metadata).
                creative_work_id:
                    type: string
                    description: |-
                        Optional.
                         When provided, this should be an creative work ID that is associated with this annotation. This information
                         can be provided by downstream services that need more context, or to perform associated actions (e.g. updating creative work metadata).
                entity_ids:
                    type: array
                    items:
                        type: string
                    description: |-
                        Optional.
                         When provided, this should be a list of entity IDs that are associated with this annotation. This information
                         can be provided by downstream services that need more context, or to perform associated actions.
                         The kinds of entities that should be associated with an annotation are defined by the annotation type.
                action_overrides:
                    type: object
                    description: |-
                        A map that can be used to override action configurations for this specific annotation.

                         For example, let's assume there are two action types configured on the associated annotation type, `create_clip` and `share_to_instagram`.
                         The existing action configuration for `create_clip` may look like this:
                         ```
                         {
                           "create_clip": {
                             "name": "Goal",
                             "relative_end_offset": 10000,
                             "relative_start_offset": -10000
                           }
                         }
                         ```

                         This would result in a clip with a 20 second duration, starting 10 seconds before the annotation and ending 10 seconds after.
                         However, if you are creating an annotation for a goal that you know took more (or less) time to fully capture,
                         you can override the action configuration for this specific annotation:
                         ```
                         {
                           "create_clip": {
                             "relative_end_offset": 13000,
                             "relative_start_offset": -15000
                           }
                         }
                         ```

                         You can also override multiple action configurations at once:
                         ```
                         {
                           "create_clip": {
                             "relative_end_offset": 13000,
                             "relative_start_offset": -15000
                           },
                           "share_to_instagram": {
                             "social_media_post": "What a beauty! #goal #soccer"
                           }
                         }
                         ```

                         The structure of this object should match the structure of the `action_configuration`'s `configuration` property, but you do not have to provide all values.
                         Any values you do not provide will be taken from the existing action configuration.
                start_offset:
                    type: string
                    description: |-
                        The time at which the relevant portion of the annotation occurs in the video. This is defined in milliseconds,
                         relative to the start of the video.
                         For example, if a goal happens after 5 minutes of the video, but the action starts at 4 minutes and 50 seconds,
                         this would be 290000.

                         Providing this can be useful for annotation actions that work with ranges, e.g. creating a clip that starts before the annotation.
                         This is an optional value, and when not provided, the `start_offset` will be derived from `offset` based on
                         the action configuration.
                end_offset:
                    type: string
                    description: |-
                        The time at which the relevant portion of the annotation ends in the video. This is defined in milliseconds,
                         relative to the start of the video.
                         For example, if a goal happens after 5 minutes of the video, but the action ends at 5 minutes and 10 seconds,
                         this would be 310000.

                         Providing this can be useful for annotation actions that work with ranges, e.g. creating a clip that ends after the annotation.
                         This is an optional value, and when not provided, the `end_offset` will be derived from `offset` based on
                         the action configuration.
                source_type:
                    enum:
                        - SOURCE_TYPE_UNSPECIFIED
                        - SOURCE_TYPE_MANUAL
                        - SOURCE_TYPE_AI
                        - SOURCE_TYPE_EXTERNAL
                        - SOURCE_TYPE_CROWD
                    type: string
                    description: The source of the annotation. This can be used to track where the annotation came from.
                    format: enum
                source_id:
                    type: string
                    description: |-
                        A unique identifier for the source of the annotation. This can be used to track where the annotation came from.
                         Optional.
                confidence:
                    type: number
                    description: |-
                        The confidence score of the annotation, meaning how certain it is that this annotation is accurate.
                         This is a floating point number between 0 and 1, where 0 means no confidence and 1 means full confidence.
                    format: float
                timer_label:
                    type: string
                    description: |-
                        A textual representation of the scoreboard's time value at the time of the annotation. This can be any representation
                         that you choose, and may be used to display the time of the annotation to end users in a more human-readable format.
                         This differs from the `offset` field, which is a time value relative to the start of the video.
                         This is an optional field.
                         Example's for soccer: 46' (46th minute), 90+3' (90th minute, 3 minutes of added time).
                order:
                    type: string
                    description: |-
                        An integer that can be used to order annotations of the same type within a video. It is advised to space this
                         out in large increments (e.g. 1000) to allow for future insertions and re-orderings. If this field is not set,
                         it will take the value of the `offset` field.
            description: |-
                Annotation is an invocation of an annotation type and represents a single moment in a video that represents
                 an occurrence of that annotation type. For example, if you have an annotation type "goal", then an Annotation could
                 created when a goal occurs in the video.
        motto.annotations.annotation.v1.CreateAnnotationResponse:
            type: object
            properties:
                annotation:
                    $ref: '#/components/schemas/motto.annotations.annotation.v1.Annotation'
        motto.annotations.annotation.v1.DeleteAnnotationResponse:
            type: object
            properties: {}
        motto.annotations.annotation.v1.GetAnnotationResponse:
            type: object
            properties:
                annotation:
                    $ref: '#/components/schemas/motto.annotations.annotation.v1.Annotation'
        motto.annotations.annotation.v1.ListAnnotationsResponse:
            type: object
            properties:
                annotations:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.annotations.annotation.v1.Annotation'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.annotations.annotation.v1.UpdateAnnotationRequest:
            required:
                - annotation_id
                - annotation
                - update_mask
            type: object
            properties:
                annotation_id:
                    type: string
                annotation:
                    $ref: '#/components/schemas/motto.annotations.annotation.v1.Annotation'
                update_mask:
                    type: string
                    format: field-mask
        motto.annotations.annotation.v1.UpdateAnnotationResponse:
            type: object
            properties:
                annotation:
                    $ref: '#/components/schemas/motto.annotations.annotation.v1.Annotation'
        motto.annotations.set.v1.AnnotationSet:
            required:
                - project_id
                - name
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: System generated unique identifier for the annotation set.
                project_id:
                    type: string
                name:
                    type: string
                    description: The name of the annotation set.
                icon_asset_id:
                    type: string
                    description: The asset ID of the icon. Can be left empty to show no icon.
                priority:
                    type: string
                    description: |-
                        The priority determines the order in which the annotation sets are shown in the UI. A higher value means it shows
                         up earlier in the list.
                         Note: this also determines the order of the groups in the list response.
                         The groups are ordered by the highest priority of the first element in each group.
                disabled:
                    type: boolean
                    description: Whether the annotation set should be shown in the management UI or not.
                custom_data:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        Data that can be used to store additional information about the annotation set. This can be useful
                         to communicate additional information to downstream systems that want to act on annotations of this set
                         (e.g. to render overlays in a video).
                sport:
                    enum:
                        - SPORT_UNSPECIFIED
                        - SPORT_SOCCER
                        - SPORT_AMERICAN_FOOTBALL
                        - SPORT_FUTSAL
                        - SPORT_HANDBALL
                        - SPORT_BASKETBALL
                        - SPORT_VOLLEYBALL
                        - SPORT_RUGBY
                        - SPORT_CRICKET
                        - SPORT_BASEBALL
                        - SPORT_SOFTBALL
                        - SPORT_FIELD_HOCKEY
                        - SPORT_ICE_HOCKEY
                        - SPORT_BEACH_SOCCER
                        - SPORT_BEACH_VOLLEYBALL
                        - SPORT_BEACH_HANDBALL
                    type: string
                    description: |-
                        The sport that this set relates to.
                         Optional.
                    format: enum
                visibility:
                    type: object
                    additionalProperties:
                        enum:
                            - VISIBILITY_UNSPECIFIED
                            - VISIBILITY_PUBLISHED
                            - VISIBILITY_UNLISTED
                            - VISIBILITY_HIDDEN
                        type: string
                        format: enum
                    description: |-
                        The default visibility of annotations in this set towards end users.
                         This is a map, where the key is the `annotation.v1.SourceType` enum's integer representation.
                         If the map is not set, or keys are missing, `published` will be used as the default visibility for that source type.
                         This visibility will be overridden by the visibility on the annotation type or on the annotation itself, if both are set
                         to a non-unspecified value.
            description: AnnotationSet bundles together annotation types that are related, e.g. football annotation types (goal, corner kick, red card, etc).
        motto.annotations.set.v1.AttachContentTypeResponse:
            type: object
            properties: {}
        motto.annotations.set.v1.CreateAnnotationSetResponse:
            type: object
            properties:
                set:
                    $ref: '#/components/schemas/motto.annotations.set.v1.AnnotationSet'
        motto.annotations.set.v1.DeleteAnnotationSetResponse:
            type: object
            properties: {}
        motto.annotations.set.v1.DetachContentTypeResponse:
            type: object
            properties: {}
        motto.annotations.set.v1.GetAnnotationSetResponse:
            type: object
            properties:
                set:
                    $ref: '#/components/schemas/motto.annotations.set.v1.AnnotationSet'
        motto.annotations.set.v1.ListAnnotationSetsResponse:
            type: object
            properties:
                sets:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.annotations.set.v1.AnnotationSet'
        motto.annotations.set.v1.UpdateAnnotationSetRequest:
            required:
                - set_id
            type: object
            properties:
                set_id:
                    type: string
                set:
                    $ref: '#/components/schemas/motto.annotations.set.v1.AnnotationSet'
                update_mask:
                    type: string
                    format: field-mask
        motto.annotations.set.v1.UpdateAnnotationSetResponse:
            type: object
            properties:
                set:
                    $ref: '#/components/schemas/motto.annotations.set.v1.AnnotationSet'
        motto.annotations.type.v1.AnnotationType:
            required:
                - project_id
                - set_id
                - name
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: System generated unique identifier for the annotation type.
                project_id:
                    type: string
                set_id:
                    type: string
                    description: |-
                        The ID of the set this annotation type belongs to. This is used to group annotation types together.
                         For example, if the `id` field is set to `goal`, the set ID might be set to `football`. Another annotation type
                         `corner_kick` might belong to the same set.
                         This should not be confused with the `group_name` field, which is used to group annotation types in the UI
                         (within a single set).
                name:
                    type: string
                    description: The name of the annotation type.
                icon_asset_id:
                    type: string
                    description: The asset ID of the icon. Can be left empty to show no icon.
                priority:
                    type: string
                    description: |-
                        The priority determines the order in which the annotation types are shown in the UI. A higher value means it shows
                         up earlier in the list.
                         Note: this also determines the order of the groups in the list response.
                         The groups are ordered by the highest priority of the first element in each group.
                group_name:
                    type: string
                    description: |-
                        The group name is used to group annotation types in the UI. For example, all annotation types related to
                         time-keeping (like `kickoff`, `half_time` or `full_time`) might be grouped under the group name "Time". This
                         can be any name you'd like to assign to it.
                disabled:
                    type: boolean
                    description: Whether the annotation type should be shown in the tagging UI of the Studio.
                visibility:
                    type: object
                    additionalProperties:
                        enum:
                            - VISIBILITY_UNSPECIFIED
                            - VISIBILITY_PUBLISHED
                            - VISIBILITY_UNLISTED
                            - VISIBILITY_HIDDEN
                        type: string
                        format: enum
                    description: |-
                        The default visibility of annotations of this type towards end users.
                         This is a map, where the key is the `annotation.v1.SourceType` enum's integer representation.
                         If the map is not set, or keys are missing, `published` will be used as the default visibility for that source type.
                         This visibility will be overridden by the visibility on the annotation type or on the annotation itself, if both are set
                         to a non-unspecified value.
                         This visibility takes precedence over the default_visibility as defined on the annotation set, if both are set
                         to a non-unspecified value.
                delay:
                    type: string
                    description: |-
                        Optional.
                         The number of milliseconds to wait before an annotation of this type starts triggering associated actions.
                         It is recommended to set this to a value that is high enough to allow for Studio operators to delete the annotation
                         in case of a mistaken click on an annotation.
                         Important: this is only a hint to the UI client (the client is responsible for handling the delay).
                custom_data:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        Optional.
                         Data that can be used to store additional information about the annotation type. This can be useful
                         to communicate additional information to downstream systems that want to act on annotations of this type
                         (e.g. to render overlays in a video).
                entity_types:
                    type: array
                    items:
                        type: string
                    description: |-
                        Optional.
                         The CMS entity types that are associated with annotations of this type. For example, if your annotation type is
                         "goal", you might want to associate it with the entity type "team".
                         The Motto Studio (or another custom-built client) will use this information to show a dialog to the tagger
                         to provide this information when the annotation is created. This information can then be used in downstream
                         services.

                         Important: Make sure that such an entity type exists in the CMS, first.
                kind:
                    enum:
                        - KIND_UNSPECIFIED
                        - KIND_SOCCER_GOAL
                        - KIND_SOCCER_CORNER_KICK
                        - KIND_SOCCER_FREE_KICK
                        - KIND_SOCCER_PENALTY_KICK
                        - KIND_SOCCER_THROW_IN
                        - KIND_SOCCER_FOUL
                        - KIND_SOCCER_YELLOW_CARD
                        - KIND_SOCCER_RED_CARD
                        - KIND_SOCCER_SUBSTITUTION
                        - KIND_SOCCER_KICKOFF
                        - KIND_SOCCER_HALF_TIME
                        - KIND_SOCCER_FULL_TIME
                        - KIND_SOCCER_EXTRA_TIME
                        - KIND_SOCCER_OVER_TIME
                        - KIND_SOCCER_PENALTY_SHOOTOUT
                        - KIND_SOCCER_MATCH_END
                        - KIND_AMERICAN_FOOTBALL_TOUCHDOWN
                        - KIND_AMERICAN_FOOTBALL_FIELD_GOAL
                        - KIND_AMERICAN_FOOTBALL_SAFETY
                        - KIND_AMERICAN_FOOTBALL_KICKOFF
                        - KIND_AMERICAN_FOOTBALL_PUNT
                        - KIND_AMERICAN_FOOTBALL_FUMBLE
                        - KIND_AMERICAN_FOOTBALL_INTERCEPTION
                        - KIND_AMERICAN_FOOTBALL_FIRST_DOWN
                        - KIND_AMERICAN_FOOTBALL_TIMEOUT
                        - KIND_AMERICAN_FOOTBALL_END_OF_QUARTER
                        - KIND_AMERICAN_FOOTBALL_END_OF_HALF
                        - KIND_AMERICAN_FOOTBALL_END_OF_GAME
                        - KIND_FUTSAL_GOAL
                        - KIND_FUTSAL_CORNER_KICK
                        - KIND_FUTSAL_FREE_KICK
                        - KIND_FUTSAL_PENALTY_KICK
                        - KIND_FUTSAL_THROW_IN
                        - KIND_FUTSAL_FOUL
                        - KIND_FUTSAL_YELLOW_CARD
                        - KIND_FUTSAL_RED_CARD
                        - KIND_FUTSAL_SUBSTITUTION
                        - KIND_FUTSAL_KICKOFF
                        - KIND_FUTSAL_HALF_TIME
                        - KIND_FUTSAL_FULL_TIME
                        - KIND_FUTSAL_EXTRA_TIME
                        - KIND_FUTSAL_OVER_TIME
                        - KIND_FUTSAL_PENALTY_SHOOTOUT
                        - KIND_FUTSAL_MATCH_END
                        - KIND_HANDBALL_GOAL
                        - KIND_HANDBALL_FREE_THROW
                        - KIND_HANDBALL_PENALTY_THROW
                        - KIND_HANDBALL_THROW_IN
                        - KIND_HANDBALL_FOUL
                        - KIND_HANDBALL_YELLOW_CARD
                        - KIND_HANDBALL_RED_CARD
                        - KIND_HANDBALL_SUBSTITUTION
                        - KIND_HANDBALL_KICKOFF
                        - KIND_HANDBALL_HALF_TIME
                        - KIND_HANDBALL_FULL_TIME
                        - KIND_HANDBALL_EXTRA_TIME
                        - KIND_HANDBALL_OVER_TIME
                        - KIND_HANDBALL_PENALTY_SHOOTOUT
                        - KIND_HANDBALL_MATCH_END
                        - KIND_BASKETBALL_FIELD_GOAL
                        - KIND_BASKETBALL_FREE_THROW
                        - KIND_BASKETBALL_THREE_POINTER
                        - KIND_BASKETBALL_FOUL
                        - KIND_BASKETBALL_TIMEOUT
                        - KIND_BASKETBALL_SUBSTITUTION
                        - KIND_BASKETBALL_END_OF_QUARTER
                        - KIND_BASKETBALL_END_OF_HALF
                        - KIND_BASKETBALL_END_OF_GAME
                        - KIND_VOLLEYBALL_POINT
                        - KIND_VOLLEYBALL_SERVE
                        - KIND_VOLLEYBALL_BLOCK
                        - KIND_VOLLEYBALL_SPIKE
                        - KIND_VOLLEYBALL_TIMEOUT
                        - KIND_VOLLEYBALL_SUBSTITUTION
                        - KIND_VOLLEYBALL_END_OF_SET
                        - KIND_VOLLEYBALL_END_OF_MATCH
                        - KIND_RUGBY_TRY
                        - KIND_RUGBY_CONVERSION
                        - KIND_RUGBY_PENALTY_GOAL
                        - KIND_RUGBY_DROP_GOAL
                        - KIND_RUGBY_FOUL
                        - KIND_RUGBY_YELLOW_CARD
                        - KIND_RUGBY_RED_CARD
                        - KIND_RUGBY_SUBSTITUTION
                        - KIND_RUGBY_KICKOFF
                        - KIND_RUGBY_HALF_TIME
                        - KIND_RUGBY_FULL_TIME
                        - KIND_RUGBY_EXTRA_TIME
                        - KIND_RUGBY_OVER_TIME
                        - KIND_RUGBY_MATCH_END
                        - KIND_RUGBY_SCRUM
                        - KIND_RUGBY_LINEOUT
                        - KIND_RUGBY_TURNOVER
                        - KIND_CRICKET_RUN
                        - KIND_CRICKET_WICKET
                        - KIND_CRICKET_NO_BALL
                        - KIND_CRICKET_WIDE_BALL
                        - KIND_CRICKET_FOUR
                        - KIND_CRICKET_SIX
                        - KIND_CRICKET_OVER
                        - KIND_CRICKET_INNINGS_BREAK
                        - KIND_CRICKET_MATCH_END
                        - KIND_BASEBALL_RUN
                        - KIND_BASEBALL_HIT
                        - KIND_BASEBALL_HOME_RUN
                        - KIND_BASEBALL_STRIKE
                        - KIND_BASEBALL_BALL
                        - KIND_BASEBALL_OUT
                        - KIND_BASEBALL_INNING_END
                        - KIND_BASEBALL_MATCH_END
                        - KIND_SOFTBALL_RUN
                        - KIND_SOFTBALL_HIT
                        - KIND_SOFTBALL_HOME_RUN
                        - KIND_SOFTBALL_STRIKE
                        - KIND_SOFTBALL_BALL
                        - KIND_SOFTBALL_OUT
                        - KIND_SOFTBALL_INNING_END
                        - KIND_SOFTBALL_MATCH_END
                        - KIND_FIELD_HOCKEY_GOAL
                        - KIND_FIELD_HOCKEY_PENALTY_CORNER
                        - KIND_FIELD_HOCKEY_FREE_HIT
                        - KIND_FIELD_HOCKEY_FOUL
                        - KIND_FIELD_HOCKEY_YELLOW_CARD
                        - KIND_FIELD_HOCKEY_RED_CARD
                        - KIND_FIELD_HOCKEY_SUBSTITUTION
                        - KIND_FIELD_HOCKEY_KICKOFF
                        - KIND_FIELD_HOCKEY_HALF_TIME
                        - KIND_FIELD_HOCKEY_FULL_TIME
                        - KIND_FIELD_HOCKEY_EXTRA_TIME
                        - KIND_FIELD_HOCKEY_OVER_TIME
                        - KIND_FIELD_HOCKEY_PENALTY_SHOOTOUT
                        - KIND_FIELD_HOCKEY_MATCH_END
                        - KIND_ICE_HOCKEY_GOAL
                        - KIND_ICE_HOCKEY_PENALTY
                        - KIND_ICE_HOCKEY_POWER_PLAY
                        - KIND_ICE_HOCKEY_FOUL
                        - KIND_ICE_HOCKEY_YELLOW_CARD
                        - KIND_ICE_HOCKEY_RED_CARD
                        - KIND_ICE_HOCKEY_SUBSTITUTION
                        - KIND_ICE_HOCKEY_KICKOFF
                        - KIND_ICE_HOCKEY_HALF_TIME
                        - KIND_ICE_HOCKEY_FULL_TIME
                        - KIND_ICE_HOCKEY_EXTRA_TIME
                        - KIND_ICE_HOCKEY_OVER_TIME
                        - KIND_ICE_HOCKEY_PENALTY_SHOOTOUT
                        - KIND_ICE_HOCKEY_MATCH_END
                        - KIND_BEACH_SOCCER_GOAL
                        - KIND_BEACH_SOCCER_CORNER_KICK
                        - KIND_BEACH_SOCCER_FREE_KICK
                        - KIND_BEACH_SOCCER_PENALTY_KICK
                        - KIND_BEACH_SOCCER_THROW_IN
                        - KIND_BEACH_SOCCER_FOUL
                        - KIND_BEACH_SOCCER_YELLOW_CARD
                        - KIND_BEACH_SOCCER_RED_CARD
                        - KIND_BEACH_SOCCER_SUBSTITUTION
                        - KIND_BEACH_SOCCER_KICKOFF
                        - KIND_BEACH_SOCCER_HALF_TIME
                        - KIND_BEACH_SOCCER_FULL_TIME
                        - KIND_BEACH_SOCCER_EXTRA_TIME
                        - KIND_BEACH_SOCCER_OVER_TIME
                        - KIND_BEACH_SOCCER_PENALTY_SHOOTOUT
                        - KIND_BEACH_SOCCER_MATCH_END
                        - KIND_BEACH_VOLLEYBALL_POINT
                        - KIND_BEACH_VOLLEYBALL_SERVE
                        - KIND_BEACH_VOLLEYBALL_BLOCK
                        - KIND_BEACH_VOLLEYBALL_SPIKE
                        - KIND_BEACH_VOLLEYBALL_TIMEOUT
                        - KIND_BEACH_VOLLEYBALL_SUBSTITUTION
                        - KIND_BEACH_VOLLEYBALL_END_OF_SET
                        - KIND_BEACH_VOLLEYBALL_END_OF_MATCH
                        - KIND_BEACH_HANDBALL_GOAL
                        - KIND_BEACH_HANDBALL_FREE_THROW
                        - KIND_BEACH_HANDBALL_PENALTY_THROW
                        - KIND_BEACH_HANDBALL_THROW_IN
                        - KIND_BEACH_HANDBALL_FOUL
                        - KIND_BEACH_HANDBALL_YELLOW_CARD
                        - KIND_BEACH_HANDBALL_RED_CARD
                        - KIND_BEACH_HANDBALL_SUBSTITUTION
                        - KIND_BEACH_HANDBALL_KICKOFF
                        - KIND_BEACH_HANDBALL_HALF_TIME
                        - KIND_BEACH_HANDBALL_FULL_TIME
                        - KIND_BEACH_HANDBALL_EXTRA_TIME
                        - KIND_BEACH_HANDBALL_OVER_TIME
                        - KIND_BEACH_HANDBALL_PENALTY_SHOOTOUT
                        - KIND_BEACH_HANDBALL_MATCH_END
                    type: string
                    description: |-
                        An indicator of what kind of annotation this is. This is mainly useful so that the system can reason better about
                         what this annotation represents. However, this is not a required field, and not all annotation types need to have a
                         kind. When possible, it is recommended to provide it.

                         This should match the sport as it is configured on the annotation set.
                    format: enum
                localized_name:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized names for this annotation type, 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.

                         Leaving this field empty will default to the `name` field.
            description: |-
                Annotation is an invocation of an annotation type and represents a single moment in a video that represents
                 an occurrence of that annotation type. For example, if you have an annotation type "goal", then an Annotation could
                 created when a goal occurs in the video.
        motto.annotations.type.v1.CreateAnnotationTypeResponse:
            type: object
            properties:
                type:
                    $ref: '#/components/schemas/motto.annotations.type.v1.AnnotationType'
        motto.annotations.type.v1.DeleteAnnotationTypeResponse:
            type: object
            properties: {}
        motto.annotations.type.v1.GetAnnotationTypeResponse:
            type: object
            properties:
                type:
                    $ref: '#/components/schemas/motto.annotations.type.v1.AnnotationType'
        motto.annotations.type.v1.ListAnnotationTypesResponse:
            type: object
            properties:
                types:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.annotations.type.v1.AnnotationType'
        motto.annotations.type.v1.UpdateAnnotationTypeRequest:
            required:
                - type_id
            type: object
            properties:
                type_id:
                    type: string
                type:
                    $ref: '#/components/schemas/motto.annotations.type.v1.AnnotationType'
                update_mask:
                    type: string
                    format: field-mask
        motto.annotations.type.v1.UpdateAnnotationTypeResponse:
            type: object
            properties:
                type:
                    $ref: '#/components/schemas/motto.annotations.type.v1.AnnotationType'
        motto.cms.banner.v1.Banner:
            required:
                - project_id
                - name
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: System generated unique identifier for the  banner.
                project_id:
                    type: string
                name:
                    type: string
                    description: A name for visual identification within the management UI. Does not appear towards end users.
                destination_url:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized destination URLs. The key is the language code (ISO 639 - set 1), e.g. "en", "de", "fr", etc.
                         If you want to localize the URL 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.
                texts:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v1.BannerText'
                    description: |-
                        A list of textual elements that should show on top of the banner, ordered vertically from top to bottom. The first
                         element will be considered the "primary" and will appear more prominently.
                background_assets:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v1.BannerAsset'
                    description: |-
                        A list of assets to be shown in the background (as the main banner image).
                         Each asset is meant for a different screen size, determined by its `breakpoint_width` property.
                         E.g. if you only want a single asset for this banner, you can set `breakpoint_width` to 0.
                         E.g. if you want to show a different asset for mobile vs desktop, you can set `breakpoint_width` to 0 for the
                         mobile asset and 1024 for the desktop asset.
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    format: enum
            description: Banner represents a single banner that can be displayed on an end-user facing web/app page.
        motto.cms.banner.v1.BannerAsset:
            type: object
            properties:
                asset_id:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of either an image or video assets. The key is the language code (ISO 639 - set 1), e.g. "en", "de", "fr", etc.
                         If you want to localize the assets 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.
                loop:
                    type: boolean
                    description: If this is a video asset, indicate whether to loop the video endlessly.
                breakpoint_width:
                    type: integer
                    description: The `min-width` at which this image/video should be shown (unless another asset is closer to the min-width).
                    format: int32
        motto.cms.banner.v1.BannerCollection:
            required:
                - project_id
                - name
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: A unique identifier for the banner collection. This can be set manually, or auto-generated if left empty.
                project_id:
                    type: string
                name:
                    type: string
                    description: A name for visual identification within the management UI. Does not appear towards end users.
                banner_ids:
                    type: array
                    items:
                        type: string
                    description: |-
                        A list of banner ids that should be included in this banner collection.
                         The order of this list determines the order in which the banners are displayed towards end users.
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    format: enum
            description: BannerCollection represents a collection of banners that can be displayed in a carousel on an end-user facing web/app page.
        motto.cms.banner.v1.BannerText:
            type: object
            properties:
                text:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized text. 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.
                color:
                    type: string
                    description: Will be used to populate the CSS `color` property. Leave empty if the default should be used.
                background_color:
                    type: string
                    description: Will be used to populate the CSS `background-color` property. Leave empty if the default should be used.
                font_family:
                    type: string
                    description: Will be used to populate the CSS `font-family` property. Leave empty if the default should be used.
                is_button:
                    type: boolean
                    description: |-
                        Indicates whether this is a button or not. If true, this button will be clickable/tappable, and the banner's
                         `destination_url` will be used. The banner will then no longer be clickable/tappable.
        motto.cms.banner.v1.BatchGetBannersResponse:
            type: object
            properties:
                banners:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v1.Banner'
        motto.cms.banner.v1.CreateBannerCollectionResponse:
            type: object
            properties:
                banner_collection:
                    $ref: '#/components/schemas/motto.cms.banner.v1.BannerCollection'
        motto.cms.banner.v1.CreateBannerResponse:
            type: object
            properties:
                banner:
                    $ref: '#/components/schemas/motto.cms.banner.v1.Banner'
        motto.cms.banner.v1.DeleteBannerCollectionResponse:
            type: object
            properties: {}
        motto.cms.banner.v1.DeleteBannerResponse:
            type: object
            properties: {}
        motto.cms.banner.v1.GetBannerCollectionResponse:
            type: object
            properties:
                banner_collection:
                    $ref: '#/components/schemas/motto.cms.banner.v1.BannerCollection'
        motto.cms.banner.v1.GetBannerResponse:
            type: object
            properties:
                banner:
                    $ref: '#/components/schemas/motto.cms.banner.v1.Banner'
        motto.cms.banner.v1.ListBannerCollectionsResponse:
            type: object
            properties:
                banner_collections:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v1.BannerCollection'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.cms.banner.v1.ListBannersResponse:
            type: object
            properties:
                banners:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v1.Banner'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.cms.banner.v1.UpdateBannerCollectionRequest:
            required:
                - banner_collection_id
                - project_id
                - banner_collection_update
                - update_mask
            type: object
            properties:
                banner_collection_id:
                    type: string
                project_id:
                    type: string
                banner_collection_update:
                    $ref: '#/components/schemas/motto.cms.banner.v1.BannerCollection'
                update_mask:
                    type: string
                    format: field-mask
        motto.cms.banner.v1.UpdateBannerCollectionResponse:
            type: object
            properties:
                banner_collection:
                    $ref: '#/components/schemas/motto.cms.banner.v1.BannerCollection'
        motto.cms.banner.v1.UpdateBannerRequest:
            required:
                - banner_id
                - banner_update
                - update_mask
            type: object
            properties:
                banner_id:
                    type: string
                banner_update:
                    $ref: '#/components/schemas/motto.cms.banner.v1.Banner'
                update_mask:
                    type: string
                    format: field-mask
        motto.cms.banner.v1.UpdateBannerResponse:
            type: object
            properties:
                banner:
                    $ref: '#/components/schemas/motto.cms.banner.v1.Banner'
        motto.cms.banner.v2.Banner:
            required:
                - project_id
                - name
                - banner_type
                - template_type
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: System generated unique identifier for the banner.
                project_id:
                    type: string
                name:
                    type: string
                    description: A name for visual identification within the management UI. Does not appear towards end users.
                banner_type:
                    enum:
                        - BANNER_TYPE_UNSPECIFIED
                        - BANNER_TYPE_DEFAULT
                        - BANNER_TYPE_EVENT
                        - BANNER_TYPE_CREATIVE_WORK
                        - BANNER_TYPE_ENTITY
                    type: string
                    description: The type of banner that determines how content is sourced.
                    format: enum
                content_id:
                    type: string
                    description: |-
                        Single banner - it is connected to a single content item (either an event, entity, or creative work).

                        Important: at most one of `content_id`, `dynamic_target` may be set per request.
                dynamic_target:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v2.DynamicBannerTarget'
                    description: |-
                        Dynamic banner - it is not connected to a single content item, but derives its content from a set of filters.

                        Important: at most one of `content_id`, `dynamic_target` may be set per request.
                template_type:
                    type: string
                    description: |-
                        The type of template that should be rendered.
                         Refer to the documentation to find the available types.
                         Examples: "team-vs-team-hero", "simple", "video-bg", "highlighted-event", etc.
                background_assets:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v2.BannerAsset'
                    description: |-
                        A list of assets to be shown in the background (as the main banner image).
                         Each asset is meant for a different screen size, determined by its `breakpoint_width` property.
                         E.g. if you only want a single asset for this banner, you can set `breakpoint_width` to 0.
                         E.g. if you want to show a different asset for mobile vs desktop, you can set `breakpoint_width` to 0 for the
                         mobile asset and 1024 for the desktop asset.
                data:
                    type: object
                    description: |-
                        Data needed by individual templates. Each template can have its own data structure.
                         Refer to the documentation for the specific template to see what data is needed.
                         To reference properties of the connected content item, use variable keypaths like `{event.title}`, `{entity.name}`,
                         `{event.fields.competition.item.banner}` etc.
                environments:
                    type: array
                    items:
                        type: string
                    description: |-
                        The environments in which this banner should be rendered. The available options are:
                         "web", "ios", "android", "tvos", "lg", "samsung", "androidtv"

                         Important: this should always be a subset of the environments configured at the page-component level for the
                         associated banner collection.
                         For example, if a page component is configured to be "ios" only, but a banner inside that component has "web" only,
                         that banner will never be shown.
                css_classes:
                    type: array
                    items:
                        type: string
                    description: |-
                        Web only. A list of CSS classes that should be added to the banner's container element.
                         This can be used to apply custom styling to the banner.
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    format: enum
                overrides:
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/motto.cms.banner.v2.BannerOverride'
                    description: |-
                        A map of overrides for the banner. This is useful for scenarios where some subset of Banner instantiations should have different properties.
                         The key is a `content_id` (either event ID, entity ID, or creative work ID), the value is the override to apply when that content is in context.

                         Note that a hit on a banner override will entirely replace the banner template and data;
                         it will not merge with the base banner.
                geo_applicability_exempt:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v2.CountryCodes'
                    description: |-
                        Viewers from these countries will not have this video ad shown.

                        Important: at most one of `geo_applicability_exempt`, `geo_applicability_apply` may be set per request.
                geo_applicability_apply:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v2.CountryCodes'
                    description: |-
                        Viewers from these countries will have this video ad shown.

                        Important: at most one of `geo_applicability_exempt`, `geo_applicability_apply` may be set per request.
                destination_url:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        Optional. A map of localized destination URLs. The key is the language code (ISO 639 - set 1), e.g. "en", "de", "fr", etc.
                         If you want to localize the URL 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.
                         Note that this is not necessary for banners of type BANNER_TYPE_EVENT, BANNER_TYPE_CREATIVE_WORK, or BANNER_TYPE_ENTITY,
                         as the destination URL will be derived from the connected content item in those cases.
                is_preview:
                    type: boolean
                    description: |-
                        Indicates that this banner is a preview banner. Preview banner are not shown to end users, but can be used for testing and previewing changes.
                         When you wish to deploy a preview banner to production (your main platform for end users), you should use `CloneBanner`.
                source_banner_id:
                    type: string
                    description: |-
                        The banner ID of the production page that this preview banner is based on.
                         This field is only relevant when "is_preview" is true. It will be set automatically when using the "CloneBanner" API method.
                is_fallback:
                    type: boolean
                    description: |-
                        Indicates that this banner is a fallback banner. Fallback banners are shown only when there are no other banners
                         that can be shown based on their targeting criteria in `connected_content`.
                         If multiple fallback banners exist in a banner collection, only the first one in a banner collection will be used.
            description: |-
                Banner represents a single banner that can be displayed on an end-user facing web/app page.
                 Banners can be either static (with fixed content) or dynamic (content derived from parameters).
        motto.cms.banner.v2.BannerAsset:
            type: object
            properties:
                options:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v2.BannerAsset_Option'
                    description: |-
                        Multiple options to choose from for this asset. The first option that resolves to a valid asset URL will be used.
                         This is typically useful when there are several keypaths that may contain a usable asset, in which case the first
                         one that resolves to a valid URL will be selected. Typically it is recommended to put the `asset_id` option last, so that
                         it acts as a fallback if none of the keypaths resolve to a valid asset.
                         However, for static banners it may make sense to only provide a single `asset_id` option.
                breakpoint_width:
                    type: integer
                    description: The `min-width` at which this image/video should be shown (unless another asset is closer to the min-width).
                    format: int32
        motto.cms.banner.v2.BannerAssetIDs:
            type: object
            properties:
                asset_id:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of either an image or video assets. The key is the language code (ISO 639 - set 1), e.g. "en", "de", "fr", etc.
                         If you want to localize the assets 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.
        motto.cms.banner.v2.BannerAsset_Option:
            type: object
            properties:
                asset_id:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v2.BannerAssetIDs'
                    description: |-
                        A map of either an image or video assets. The key is the language code (ISO 639 - set 1), e.g. "en", "de", "fr", etc.
                         If you want to localize the assets 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.
                keypath:
                    type: string
                    description: |-
                        A keypath on the associated content resource. This should resolve to a Motto-hosted asset URL.
                         Unlike the `asset_id` field, this will already be localized based on the end user's language preference.
                         E.g.: `event.fields.competition.item.banner`
        motto.cms.banner.v2.BannerCollection:
            required:
                - id
                - project_id
                - name
            type: object
            properties:
                id:
                    type: string
                    description: A unique identifier for the banner collection. The system will generate this value.
                project_id:
                    type: string
                name:
                    type: string
                    description: A name for visual identification within the management UI. Does not appear towards end users.
                banner_ids:
                    type: array
                    items:
                        type: string
                    description: |-
                        A list of banner ids that should be included in this banner collection.
                         The order of this list determines the order in which the banners are displayed towards end users.
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    format: enum
                is_preview:
                    type: boolean
                    description: |-
                        Indicates that this banner collection is a preview banner collection. Preview banner collections are not shown to end users, but can be used for testing and previewing changes.
                         When you wish to deploy a preview banner collection to production (your main platform for end users), you should use `CloneBannerCollection`.
                source_banner_collection_id:
                    type: string
                    description: |-
                        The banner collection ID of the production page that this preview banner collection is based on.
                         This field is only relevant when "is_preview" is true. It will be set automatically when using the "CloneBannerCollection" API method.
            description: BannerCollection represents a collection of banners that can be displayed in a carousel on an end-user facing web/app page.
        motto.cms.banner.v2.BannerOverride:
            type: object
            properties:
                template_type:
                    type: string
                    description: |-
                        The type of template that should be rendered.
                         Refer to the documentation to find the available types.
                         Examples: "team-vs-team-hero", "simple", "video-bg", "highlighted-event", etc.
                background_assets:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v2.BannerAsset'
                    description: |-
                        A list of assets to be shown in the background (as the main banner image).
                         Each asset is meant for a different screen size, determined by its `breakpoint_width` property.
                         E.g. if you only want a single asset for this banner, you can set `breakpoint_width` to 0.
                         E.g. if you want to show a different asset for mobile vs desktop, you can set `breakpoint_width` to 0 for the
                         mobile asset and 1024 for the desktop asset.
                data:
                    type: object
                    description: |-
                        Data needed by individual templates. Each template can have its own data structure.
                         Refer to the documentation for the specific template to see what data is needed.
                         For static banners, this would contain the fixed content (texts, assets, destination_url).
                         For dynamic banners, this can contain template references like `{event.title}`, `{entity.name}`, etc.
                environments:
                    type: array
                    items:
                        type: string
                    description: |-
                        The environments in which this banner should be rendered. The available options are:
                         "web", "ios", "android", "tvos", "lg", "samsung", "androidtv"
                         If left empty, the banner will be rendered in all environments (when possible).
                css_classes:
                    type: array
                    items:
                        type: string
                    description: |-
                        Web only. A list of CSS classes that should be added to the banner's container element.
                         This can be used to apply custom styling to the banner.
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    format: enum
                geo_applicability_exempt:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v2.CountryCodes'
                    description: |-
                        Viewers from these countries will not have this video ad shown.

                        Important: at most one of `geo_applicability_exempt`, `geo_applicability_apply` may be set per request.
                geo_applicability_apply:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v2.CountryCodes'
                    description: |-
                        Viewers from these countries will have this video ad shown.

                        Important: at most one of `geo_applicability_exempt`, `geo_applicability_apply` may be set per request.
                destination_url:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        Optional. A map of localized destination URLs. The key is the language code (ISO 639 - set 1), e.g. "en", "de", "fr", etc.
                         If you want to localize the URL 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.
                         Note that this is not necessary for banners of type BANNER_TYPE_EVENT, BANNER_TYPE_CREATIVE_WORK, or BANNER_TYPE_ENTITY,
                         as the destination URL will be derived from the connected content item in those cases.
            description: BannerOverride is a subset of the Banner message. It can be used to modify default behavior of a banner.
        motto.cms.banner.v2.BatchGetBannersResponse:
            type: object
            properties:
                banners:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v2.Banner'
        motto.cms.banner.v2.CloneBannerCollectionRequest:
            required:
                - banner_collection_id
                - project_id
            type: object
            properties:
                banner_collection_id:
                    type: string
                    description: The banner collection ID to clone from.
                project_id:
                    type: string
        motto.cms.banner.v2.CloneBannerCollectionResponse:
            type: object
            properties:
                banner_collection:
                    $ref: '#/components/schemas/motto.cms.banner.v2.BannerCollection'
        motto.cms.banner.v2.CloneBannerRequest:
            required:
                - banner_id
            type: object
            properties:
                banner_id:
                    type: string
                    description: The banner ID to clone from.
        motto.cms.banner.v2.CloneBannerResponse:
            type: object
            properties:
                banner:
                    $ref: '#/components/schemas/motto.cms.banner.v2.Banner'
        motto.cms.banner.v2.CompareBannerCollectionResponse:
            type: object
            properties:
                prod:
                    type: string
                    description: The representation of the production version of the banner collection.
                preview:
                    type: string
                    description: The representation of the preview version of the banner collection.
        motto.cms.banner.v2.CompareBannerResponse:
            type: object
            properties:
                prod:
                    type: string
                    description: The representation of the production version of the banner.
                preview:
                    type: string
                    description: The representation of the preview version of the banner.
        motto.cms.banner.v2.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.cms.banner.v2.CreateBannerCollectionResponse:
            type: object
            properties:
                banner_collection:
                    $ref: '#/components/schemas/motto.cms.banner.v2.BannerCollection'
        motto.cms.banner.v2.CreateBannerResponse:
            type: object
            properties:
                banner:
                    $ref: '#/components/schemas/motto.cms.banner.v2.Banner'
        motto.cms.banner.v2.DeleteBannerCollectionResponse:
            type: object
            properties: {}
        motto.cms.banner.v2.DeleteBannerResponse:
            type: object
            properties: {}
        motto.cms.banner.v2.DeployBannerCollectionRequest:
            required:
                - banner_collection_id
                - project_id
            type: object
            properties:
                banner_collection_id:
                    type: string
                    description: The banner collection ID to deploy.
                project_id:
                    type: string
        motto.cms.banner.v2.DeployBannerCollectionResponse:
            type: object
            properties:
                banner_collection:
                    $ref: '#/components/schemas/motto.cms.banner.v2.BannerCollection'
        motto.cms.banner.v2.DeployBannerRequest:
            required:
                - banner_id
            type: object
            properties:
                banner_id:
                    type: string
                    description: The banner ID to deploy.
        motto.cms.banner.v2.DeployBannerResponse:
            type: object
            properties:
                banner:
                    $ref: '#/components/schemas/motto.cms.banner.v2.Banner'
        motto.cms.banner.v2.DynamicBannerTarget:
            type: object
            properties:
                filter:
                    type: string
                    description: |-
                        Filter the result-set by properties using a subset of the Kibana Query Language.
                         This will make a List API call to retrieve the relevant resource for this banner.
                         For BANNER_TYPE_EVENT, this would be a ListEvents call.
                         For BANNER_TYPE_CREATIVE_WORK, this would be a ListCreativeWorks call.
                         For BANNER_TYPE_ENTITY, this would be a ListEntities call,

                         For example, let's say a BANNER_TYPE_EVENT banner is shown on a competition page, and the goal is to show the
                         first upcoming event from that competition in the banner.
                         The filter could be: `status:EVENT_STATUS_SCHEDULED and fields.competition.id:{id}`
                         in combination with the `order_by` value of `start_time asc` to get the next upcoming event.
                order_by:
                    type: string
                    description: To be used in combination with `filter`. See documentation there for more details.
                offset:
                    type: string
                    description: |-
                        The number of items to offset the result-set by. This is useful when multiple banners exist with the same filter/order_by,
                         and you want to show different items in each banner.
        motto.cms.banner.v2.GetBannerCollectionResponse:
            type: object
            properties:
                banner_collection:
                    $ref: '#/components/schemas/motto.cms.banner.v2.BannerCollection'
        motto.cms.banner.v2.GetBannerResponse:
            type: object
            properties:
                banner:
                    $ref: '#/components/schemas/motto.cms.banner.v2.Banner'
        motto.cms.banner.v2.GetSimilarBannerTemplateDataResponse:
            type: object
            properties:
                data:
                    type: object
                    description: |-
                        This will contain the template data specific to the banner type in combination with the connected content.
                         If no template data is available, this will be an empty struct.
        motto.cms.banner.v2.ListBannerCollectionsResponse:
            type: object
            properties:
                banner_collections:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v2.BannerCollection'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.cms.banner.v2.ListBannersResponse:
            type: object
            properties:
                banners:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v2.Banner'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.cms.banner.v2.UpdateBannerCollectionRequest:
            required:
                - banner_collection_id
                - project_id
                - banner_collection_update
                - update_mask
            type: object
            properties:
                banner_collection_id:
                    type: string
                project_id:
                    type: string
                banner_collection_update:
                    $ref: '#/components/schemas/motto.cms.banner.v2.BannerCollection'
                update_mask:
                    type: string
                    format: field-mask
        motto.cms.banner.v2.UpdateBannerCollectionResponse:
            type: object
            properties:
                banner_collection:
                    $ref: '#/components/schemas/motto.cms.banner.v2.BannerCollection'
        motto.cms.banner.v2.UpdateBannerRequest:
            required:
                - banner_id
                - banner_update
                - update_mask
            type: object
            properties:
                banner_id:
                    type: string
                banner_update:
                    $ref: '#/components/schemas/motto.cms.banner.v2.Banner'
                update_mask:
                    type: string
                    format: field-mask
        motto.cms.banner.v2.UpdateBannerResponse:
            type: object
            properties:
                banner:
                    $ref: '#/components/schemas/motto.cms.banner.v2.Banner'
        motto.cms.banner.v3.Banner:
            required:
                - project_id
                - name
                - banner_type
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: System generated unique identifier for the banner.
                project_id:
                    type: string
                name:
                    type: string
                    description: A name for visual identification within the management UI. Does not appear towards end users.
                banner_type:
                    enum:
                        - BANNER_TYPE_UNSPECIFIED
                        - BANNER_TYPE_DEFAULT
                        - BANNER_TYPE_EVENT
                        - BANNER_TYPE_CREATIVE_WORK
                        - BANNER_TYPE_ENTITY
                    type: string
                    description: The type of banner that determines how content is sourced.
                    format: enum
                content_id:
                    type: string
                    description: |-
                        Single banner - it is connected to a single content item (either an event, entity, or creative work).

                        Important: at most one of `content_id`, `dynamic_target` may be set per request.
                dynamic_target:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.DynamicBannerTarget'
                    description: |-
                        Dynamic banner - it is not connected to a single content item, but derives its content from a set of filters.

                        Important: at most one of `content_id`, `dynamic_target` may be set per request.
                template_type:
                    readOnly: true
                    enum:
                        - BANNER_TEMPLATE_TYPE_UNSPECIFIED
                        - BANNER_TEMPLATE_TYPE_DEFAULT
                        - BANNER_TEMPLATE_TYPE_DEFAULT_ENTITY
                        - BANNER_TEMPLATE_TYPE_ENTITY_1
                        - BANNER_TEMPLATE_TYPE_FEATURE_BANNER
                        - BANNER_TEMPLATE_TYPE_SINGLE_EVENT
                        - BANNER_TEMPLATE_TYPE_TEAM_VS_TEAM_HERO
                        - BANNER_TEMPLATE_TYPE_TEAM_VS_TEAM_MIDPAGE
                        - BANNER_TEMPLATE_TYPE_CUSTOM
                    type: string
                    description: |-
                        The type of template that should be rendered. This is derived from the field that is set in `template`, so it does
                         not have to be provided when creating or updating a banner.
                    format: enum
                background_assets:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v3.BannerAsset'
                    description: |-
                        A list of assets to be shown in the background (as the main banner image).
                         Each asset is meant for a different screen size, determined by its `breakpoint_width` property.
                         E.g. if you only want a single asset for this banner, you can set `breakpoint_width` to 0.
                         E.g. if you want to show a different asset for mobile vs desktop, you can set `breakpoint_width` to 0 for the
                         mobile asset and 1024 for the desktop asset.
                template:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerTemplate'
                    description: The content needed by the template that should be rendered.
                environments:
                    type: array
                    items:
                        type: string
                    description: |-
                        The environments in which this banner should be rendered. The available options are:
                         "web", "ios", "android", "tvos", "lg", "samsung", "androidtv"

                         Important: this should always be a subset of the environments configured at the page-component level for the
                         associated banner collection.
                         For example, if a page component is configured to be "ios" only, but a banner inside that component has "web" only,
                         that banner will never be shown.
                css_classes:
                    type: array
                    items:
                        type: string
                    description: |-
                        Web only. A list of CSS classes that should be added to the banner's container element.
                         This can be used to apply custom styling to the banner.
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    format: enum
                overrides:
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/motto.cms.banner.v3.BannerOverride'
                    description: |-
                        A map of overrides for the banner. This is useful for scenarios where some subset of Banner instantiations should have different properties.
                         The key is a `content_id` (either event ID, entity ID, or creative work ID), the value is the override to apply when that content is in context.

                         Note that a hit on a banner override will entirely replace the banner template and its content;
                         it will not merge with the base banner.
                geo_applicability_exempt:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.CountryCodes'
                    description: |-
                        Viewers from these countries will not have this video ad shown.

                        Important: at most one of `geo_applicability_exempt`, `geo_applicability_apply` may be set per request.
                geo_applicability_apply:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.CountryCodes'
                    description: |-
                        Viewers from these countries will have this video ad shown.

                        Important: at most one of `geo_applicability_exempt`, `geo_applicability_apply` may be set per request.
                destination_url:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        Optional. A map of localized destination URLs. The key is the language code (ISO 639 - set 1), e.g. "en", "de", "fr", etc.
                         If you want to localize the URL 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.
                         Note that this is not necessary for banners of type BANNER_TYPE_EVENT, BANNER_TYPE_CREATIVE_WORK, or BANNER_TYPE_ENTITY,
                         as the destination URL will be derived from the connected content item in those cases.
                is_preview:
                    type: boolean
                    description: |-
                        Indicates that this banner is a preview banner. Preview banner are not shown to end users, but can be used for testing and previewing changes.
                         When you wish to deploy a preview banner to production (your main platform for end users), you should use `CloneBanner`.
                source_banner_id:
                    type: string
                    description: |-
                        The banner ID of the production page that this preview banner is based on.
                         This field is only relevant when "is_preview" is true. It will be set automatically when using the "CloneBanner" API method.
                is_fallback:
                    type: boolean
                    description: |-
                        Indicates that this banner is a fallback banner. Fallback banners are shown only when there are no other banners
                         that can be shown based on their targeting criteria in `connected_content`.
                         If multiple fallback banners exist in a banner collection, only the first one in a banner collection will be used.
            description: |-
                Banner represents a single banner that can be displayed on an end-user facing web/app page.
                 Banners can be either static (with fixed content) or dynamic (content derived from parameters).
        motto.cms.banner.v3.BannerAsset:
            type: object
            properties:
                options:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v3.BannerAsset_Option'
                    description: |-
                        Multiple options to choose from for this asset. The first option that resolves to a valid asset URL will be used.
                         This is typically useful when there are several keypaths that may contain a usable asset, in which case the first
                         one that resolves to a valid URL will be selected. Typically it is recommended to put the `asset_id` option last, so that
                         it acts as a fallback if none of the keypaths resolve to a valid asset.
                         However, for static banners it may make sense to only provide a single `asset_id` option.
                breakpoint_width:
                    type: integer
                    description: The `min-width` at which this image/video should be shown (unless another asset is closer to the min-width).
                    format: int32
        motto.cms.banner.v3.BannerAssetIDs:
            type: object
            properties:
                asset_id:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of either an image or video assets. The key is the language code (ISO 639 - set 1), e.g. "en", "de", "fr", etc.
                         If you want to localize the assets 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.
        motto.cms.banner.v3.BannerAsset_Option:
            type: object
            properties:
                asset_id:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerAssetIDs'
                    description: |-
                        A map of either an image or video assets. The key is the language code (ISO 639 - set 1), e.g. "en", "de", "fr", etc.
                         If you want to localize the assets 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.
                keypath:
                    type: string
                    description: |-
                        A keypath on the associated content resource. This should resolve to a Motto-hosted asset URL.
                         Unlike the `asset_id` field, this will already be localized based on the end user's language preference.
                         E.g.: `event.fields.competition.item.banner`
        motto.cms.banner.v3.BannerCollection:
            required:
                - id
                - project_id
                - name
            type: object
            properties:
                id:
                    type: string
                    description: A unique identifier for the banner collection. The system will generate this value.
                project_id:
                    type: string
                name:
                    type: string
                    description: A name for visual identification within the management UI. Does not appear towards end users.
                banner_ids:
                    type: array
                    items:
                        type: string
                    description: |-
                        A list of banner ids that should be included in this banner collection.
                         The order of this list determines the order in which the banners are displayed towards end users.
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    format: enum
                is_preview:
                    type: boolean
                    description: |-
                        Indicates that this banner collection is a preview banner collection. Preview banner collections are not shown to end users, but can be used for testing and previewing changes.
                         When you wish to deploy a preview banner collection to production (your main platform for end users), you should use `CloneBannerCollection`.
                source_banner_collection_id:
                    type: string
                    description: |-
                        The banner collection ID of the production page that this preview banner collection is based on.
                         This field is only relevant when "is_preview" is true. It will be set automatically when using the "CloneBannerCollection" API method.
            description: BannerCollection represents a collection of banners that can be displayed in a carousel on an end-user facing web/app page.
        motto.cms.banner.v3.BannerColors:
            type: object
            properties:
                color1:
                    type: string
                    description: The solid color, or the gradient start color.
                color2:
                    type: string
                    description: The gradient end color. If provided along with `color1`, this creates a gradient.
            description: |-
                A pair of colors that form a gradient when both are provided, and a solid color when only `color1` is provided.
                 Each color is a hex color code (e.g. `#FF5733`), a named color (e.g. `primary`), or a keypath.
        motto.cms.banner.v3.BannerCustom:
            type: object
            properties:
                custom_type:
                    type: string
                    description: Identifies which custom banner the platform implementation should render.
                props:
                    type: object
                    description: |-
                        Arbitrary JSON object passed to the implementation. Must be an object. The conventions of `BannerTemplate`
                         apply to every string in it, however deeply nested: locale maps collapse to one string and keypaths such as
                         `{event.fields.stadium.item.name}` are interpolated.
            description: |-
                Content for the `custom` template: a banner without fixed properties, for custom platform implementations (e.g.
                 built on the agentic SDK). Native Motto apps ignore it.
        motto.cms.banner.v3.BannerDefault:
            type: object
            properties:
                main_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Main text to display in the banner. This is the only field the template requires.
                main_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main text.
                    format: enum
                description:
                    type: object
                    additionalProperties:
                        type: string
                    description: Secondary description text to display in the banner.
                logo:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerImage'
                    description: The banner's logo image.
                slot_one_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Text for the first metadata slot (e.g., category or label name). Rendered as a pill badge above the main text.
                slot_one_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the slot one text.
                    format: enum
                show_main_button:
                    type: boolean
                    description: Whether to display the main button on the banner. Defaults to true when not set.
                main_button_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Text for the main button. If not provided, defaults to 'Learn more'.
                main_button_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main button text.
                    format: enum
                main_button_colors:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerColors'
                    description: Colors to use for the main button background. This will create a gradient if both colors are provided.
                main_button_text_color:
                    type: string
                    description: Color to use for the main button text. This can be a hex color code or a named color.
                show_share:
                    type: boolean
                    description: Whether to display a share button on the banner. Defaults to false.
                share_button_colors:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerColors'
                    description: Colors to use for the share button background. This will create a gradient if both colors are provided.
                share_button_text_color:
                    type: string
                    description: Color to use for the share button text/icon. This can be a hex color code or a named color.
                gradients:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerGradients'
                    description: Optional gradient overlays to apply on top of the banner background image.
            description: 'Content for the `default` template: a basic banner that displays a single text field.'
        motto.cms.banner.v3.BannerDefaultEntity:
            type: object
            properties:
                main_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Main heading text, typically containing the entity name. This is the only field the template requires.
                main_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main text.
                    format: enum
                description:
                    type: object
                    additionalProperties:
                        type: string
                    description: Description text displayed below the main heading, typically providing additional context about the entity.
                logo:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerImage'
                    description: The entity's logo image.
                show_main_button:
                    type: boolean
                    description: Whether to display the main button on the banner. Defaults to true when not set.
                main_button_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Text for the main button. If not provided, defaults to 'Learn more'.
                main_button_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main button text.
                    format: enum
                main_button_colors:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerColors'
                    description: |-
                        Colors to use for the main button background. This will create a gradient if both colors are provided.
                         If not provided, defaults to `base-content`.
                main_button_text_color:
                    type: string
                    description: |-
                        Color to use for the main button text. This can be a hex color code or a named color (e.g. `primary`).
                         If not provided, defaults to `base-100`.
                show_share:
                    type: boolean
                    description: Whether to display a share button on the banner. Defaults to false.
                share_button_colors:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerColors'
                    description: |-
                        Colors to use for the share button background. This will create a gradient if both colors are provided.
                         If not provided, defaults to `base-content`.
                share_button_text_color:
                    type: string
                    description: |-
                        Color to use for the share button text/icon. This can be a hex color code or a named color (e.g. `primary`).
                         If not provided, defaults to `base-100`.
                gradients:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerGradients'
                    description: Optional gradient overlays to apply on top of the banner background image.
            description: |-
                Content for the `default-entity` template: a hero banner for entities (such as clubs, federations, or competitions),
                 displaying a single logo and main text.
        motto.cms.banner.v3.BannerEntity1:
            type: object
            properties:
                main_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Main heading text, typically containing the entity name. This is the only field the template requires.
                main_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main text.
                    format: enum
                description:
                    type: object
                    additionalProperties:
                        type: string
                    description: Description text displayed below the main heading, typically providing additional context about the entity.
                logo:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerImage'
                    description: The entity's logo image.
                show_main_button:
                    type: boolean
                    description: Whether to display the main button on the banner. Defaults to true when not set.
                main_button_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Text for the main button. If not provided, defaults to 'Learn more'.
                main_button_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main button text.
                    format: enum
                main_button_colors:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerColors'
                    description: |-
                        Colors to use for the main button background. This will create a gradient if both colors are provided.
                         If not provided, defaults to `base-content`.
                main_button_text_color:
                    type: string
                    description: |-
                        Color to use for the main button text. This can be a hex color code or a named color (e.g. `primary`).
                         If not provided, defaults to `base-100`.
                show_share:
                    type: boolean
                    description: Whether to display a share button on the banner. Defaults to false.
                share_button_colors:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerColors'
                    description: |-
                        Colors to use for the share button background. This will create a gradient if both colors are provided.
                         If not provided, defaults to `base-content`.
                share_button_text_color:
                    type: string
                    description: |-
                        Color to use for the share button text/icon. This can be a hex color code or a named color (e.g. `primary`).
                         If not provided, defaults to `base-100`.
                gradients:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerGradients'
                    description: Optional gradient overlays to apply on top of the banner background image.
            description: |-
                Content for the `entity-1` template: a hero banner for entities (such as clubs, federations, or competitions),
                 displaying a single logo and main text. It carries the same content as `default-entity`, but renders the logo and
                 main text larger, and centers all content horizontally.
        motto.cms.banner.v3.BannerFeature:
            type: object
            properties:
                main_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        Main heading text (the title). Limited to two lines; longer text is truncated with an ellipsis.
                         This is the only field the template requires.
                main_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main text.
                    format: enum
                description:
                    type: object
                    additionalProperties:
                        type: string
                    description: Description text displayed below the title. Limited to two lines; longer text is truncated with an ellipsis.
                description_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the description.
                    format: enum
                top_logo:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerImage'
                    description: Optional logo image displayed above the title in the text column.
                side_logo:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerImage'
                    description: Optional large logo image displayed on the end side (right for LTR, left for RTL) of the banner.
                show_main_button:
                    type: boolean
                    description: Whether to display the main button on the banner. Defaults to true when not set.
                main_button_show_play_icon:
                    type: boolean
                    description: Whether to display the circular play icon inside the main button. Defaults to true when not set.
                main_button_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        Text for the main button. Used on static (`default`) and `entity` banners, and as the fallback for the
                         status-aware labels below. If none are provided, defaults to 'Learn more'.
                main_button_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main button text.
                    format: enum
                main_button_watch_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        Text for the main button when event / creative-work content is live or available on demand.
                         Falls back to `main_button_text`, then to 'Watch now'.
                main_button_watch_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main button watch text.
                    format: enum
                main_button_default_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        Text for the main button when event / creative-work content is scheduled (not yet started).
                         Falls back to `main_button_text`, then to 'Learn more'.
                main_button_default_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main button default text.
                    format: enum
                main_button_colors:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerColors'
                    description: |-
                        Colors to use for the main button background. This will create a gradient if both colors are provided.
                         If not provided, the button uses a solid white background.
                main_button_text_color:
                    type: string
                    description: |-
                        Color to use for the main button text. This can be a hex color code or a named color (e.g. `primary`).
                         If not provided, the button text uses a dark navy color.
            description: |-
                Content for the `feature-banner` template: a promotional hero banner with a split layout, pairing a text column on
                 the start side with a large logo on the end side.
                 This template works with the `default` (static), `entity`, `event`, and `creative_work` banner types. For `event` and
                 `creative_work` banners, the call-to-action button label adapts to the status of the connected content. `entity`
                 banners have no content status, so (like static banners) they use the single `main_button_text` label.
        motto.cms.banner.v3.BannerGradient:
            type: object
            properties:
                position:
                    enum:
                        - BANNER_GRADIENT_POSITION_UNSPECIFIED
                        - BANNER_GRADIENT_POSITION_BOTTOM
                        - BANNER_GRADIENT_POSITION_TOP
                        - BANNER_GRADIENT_POSITION_START
                        - BANNER_GRADIENT_POSITION_END
                    type: string
                    description: The edge from which the gradient originates.
                    format: enum
                size:
                    enum:
                        - BANNER_GRADIENT_SIZE_UNSPECIFIED
                        - BANNER_GRADIENT_SIZE_SM
                        - BANNER_GRADIENT_SIZE_MD
                        - BANNER_GRADIENT_SIZE_LG
                        - BANNER_GRADIENT_SIZE_FULL
                    type: string
                    description: How far the gradient extends into the banner.
                    format: enum
            description: |-
                A gradient overlay applied on top of the banner background image. It fades from the platform's `base-100` color to
                 transparent.
        motto.cms.banner.v3.BannerGradients:
            type: object
            properties:
                items:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v3.BannerGradient'
                    description: The gradients to apply, in the order they should be applied.
            description: |-
                The gradient overlays to apply on top of the banner background image.
                 This is wrapped in a message so that "no gradients configured" (the message is absent, meaning the template renders
                 its own default gradients) can be distinguished from "gradients explicitly disabled" (the message is present with an
                 empty `items` list, meaning no gradients are displayed).
        motto.cms.banner.v3.BannerImage:
            type: object
            properties:
                keypath:
                    type: string
                    description: |-
                        A keypath on the associated content resource. This should resolve to a Motto-hosted asset URL.
                         Unlike the `asset_id` field, this will already be localized based on the end user's language preference.
                         Several keypaths can be chained with `??`, in which case the first one that resolves is used.
                         E.g.: `{event.fields.home_team.item.thumbnail_url ?? event.fields.home_club.item.thumbnail_url}`

                        Important: at most one of `keypath`, `asset_id` may be set per request.
                asset_id:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerAssetIDs'
                    description: |-
                        Hard-coded asset IDs, one per locale.

                        Important: at most one of `keypath`, `asset_id` may be set per request.
            description: An image displayed by a banner template.
        motto.cms.banner.v3.BannerOverride:
            type: object
            properties:
                template:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerTemplate'
                    description: |-
                        The content needed by the template that should be rendered. The template that is set here replaces the one on the
                         base banner entirely; the two are not merged.
                background_assets:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v3.BannerAsset'
                    description: |-
                        A list of assets to be shown in the background (as the main banner image).
                         Each asset is meant for a different screen size, determined by its `breakpoint_width` property.
                         E.g. if you only want a single asset for this banner, you can set `breakpoint_width` to 0.
                         E.g. if you want to show a different asset for mobile vs desktop, you can set `breakpoint_width` to 0 for the
                         mobile asset and 1024 for the desktop asset.
                environments:
                    type: array
                    items:
                        type: string
                    description: |-
                        The environments in which this banner should be rendered. The available options are:
                         "web", "ios", "android", "tvos", "lg", "samsung", "androidtv"
                         If left empty, the banner will be rendered in all environments (when possible).
                css_classes:
                    type: array
                    items:
                        type: string
                    description: |-
                        Web only. A list of CSS classes that should be added to the banner's container element.
                         This can be used to apply custom styling to the banner.
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    format: enum
                geo_applicability_exempt:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.CountryCodes'
                    description: |-
                        Viewers from these countries will not have this video ad shown.

                        Important: at most one of `geo_applicability_exempt`, `geo_applicability_apply` may be set per request.
                geo_applicability_apply:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.CountryCodes'
                    description: |-
                        Viewers from these countries will have this video ad shown.

                        Important: at most one of `geo_applicability_exempt`, `geo_applicability_apply` may be set per request.
                destination_url:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        Optional. A map of localized destination URLs. The key is the language code (ISO 639 - set 1), e.g. "en", "de", "fr", etc.
                         If you want to localize the URL 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.
                         Note that this is not necessary for banners of type BANNER_TYPE_EVENT, BANNER_TYPE_CREATIVE_WORK, or BANNER_TYPE_ENTITY,
                         as the destination URL will be derived from the connected content item in those cases.
            description: BannerOverride is a subset of the Banner message. It can be used to modify default behavior of a banner.
        motto.cms.banner.v3.BannerSingleEvent:
            type: object
            properties:
                main_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Main heading text, typically containing the event title. This field is required by the template.
                main_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main text.
                    format: enum
                slot_one_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Text for the first metadata slot (e.g., league/season name).
                slot_one_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the slot one text.
                    format: enum
                venue_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Text for the venue/stadium information.
                venue_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the venue text.
                    format: enum
                logo:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerImage'
                    description: The event's logo image. This field is required by the template.
                main_button_watch_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Text for the main button when the event is started, paused, or finished. If not provided, defaults to 'Watch now'.
                main_button_watch_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main button watch text.
                    format: enum
                main_button_default_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Text for the main button when the event is not yet started. If not provided, defaults to 'Learn more'.
                main_button_default_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main button default text.
                    format: enum
                main_button_colors:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerColors'
                    description: |-
                        Colors to use for the main button background. This will create a gradient if both colors are provided.
                         If not provided, defaults to `base-content`.
                main_button_text_color:
                    type: string
                    description: |-
                        Color to use for the main button text. This can be a hex color code or a named color (e.g. `primary`).
                         If not provided, defaults to `base-100`.
                show_share:
                    type: boolean
                    description: Whether to display a share button on the banner. Defaults to false.
                share_button_colors:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerColors'
                    description: |-
                        Colors to use for the share button background. This will create a gradient if both colors are provided.
                         If not provided, defaults to `base-content`.
                share_button_text_color:
                    type: string
                    description: |-
                        Color to use for the share button text/icon. This can be a hex color code or a named color (e.g. `primary`).
                         If not provided, defaults to `base-100`.
                gradients:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerGradients'
                    description: Optional gradient overlays to apply on top of the banner background image.
            description: |-
                Content for the `single-event` template: a hero banner for sports events, displaying an event logo, event
                 information, and venue details.
                 This template only works when `banner_type` is `BANNER_TYPE_EVENT`.
        motto.cms.banner.v3.BannerTeamVsTeamHero:
            type: object
            properties:
                main_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Main heading text, typically containing the event title. This field is required by the template.
                main_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main text.
                    format: enum
                slot_one_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Text for the first metadata slot (e.g., league/season name).
                slot_one_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the slot one text.
                    format: enum
                venue_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Text for the venue/stadium information.
                venue_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the venue text.
                    format: enum
                home_logo:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerImage'
                    description: The home team's logo image. This field is required by the template.
                away_logo:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerImage'
                    description: The away team's logo image. This field is required by the template.
                main_button_watch_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Text for the main button when the event is started, paused, or finished. If not provided, defaults to 'Watch now'.
                main_button_watch_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main button watch text.
                    format: enum
                main_button_default_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Text for the main button when the event is not yet started. If not provided, defaults to 'Learn more'.
                main_button_default_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main button default text.
                    format: enum
                main_button_colors:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerColors'
                    description: |-
                        Colors to use for the main button background. This will create a gradient if both colors are provided.
                         If not provided, defaults to `base-content`.
                main_button_text_color:
                    type: string
                    description: |-
                        Color to use for the main button text. This can be a hex color code or a named color (e.g. `primary`).
                         If not provided, defaults to `base-100`.
                show_share:
                    type: boolean
                    description: Whether to display a share button on the banner. Defaults to false.
                share_button_colors:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerColors'
                    description: |-
                        Colors to use for the share button background. This will create a gradient if both colors are provided.
                         If not provided, defaults to `base-content`.
                share_button_text_color:
                    type: string
                    description: |-
                        Color to use for the share button text/icon. This can be a hex color code or a named color (e.g. `primary`).
                         If not provided, defaults to `base-100`.
                gradients:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerGradients'
                    description: Optional gradient overlays to apply on top of the banner background image.
            description: |-
                Content for the `team-vs-team-hero` template: a hero banner for sports events, displaying two competing teams with
                 their logos, event information, and venue details.
                 This template only works when `banner_type` is `BANNER_TYPE_EVENT`.
        motto.cms.banner.v3.BannerTeamVsTeamMidpage:
            type: object
            properties:
                main_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Main heading text. This field is required by the template.
                main_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main text.
                    format: enum
                description:
                    type: object
                    additionalProperties:
                        type: string
                    description: Description text.
                description_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the description.
                    format: enum
                tagline:
                    type: object
                    additionalProperties:
                        type: string
                    description: Tagline text.
                tagline_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the tagline.
                    format: enum
                tagline_colors:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerColors'
                    description: Colors to use for the tagline text gradient. If only `color1` is provided, use a solid color.
                home_logo:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerImage'
                    description: The home team's logo image. This field is required by the template.
                away_logo:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerImage'
                    description: The away team's logo image. This field is required by the template.
                vs_divider:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerImage'
                    description: The image to use as a divider between the teams.
                home_color:
                    type: string
                    description: Background color for the home team logo area. This can be a hex color code or a named color (e.g. `primary`).
                away_color:
                    type: string
                    description: Background color for the away team logo area. This can be a hex color code or a named color (e.g. `primary`).
                show_main_button:
                    type: boolean
                    description: Whether to display the main button on the banner. Defaults to true when not set.
                main_button_watch_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Text for the main button when the event is started, paused, or finished. If not provided, defaults to 'Watch now'.
                main_button_watch_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main button watch text.
                    format: enum
                main_button_default_text:
                    type: object
                    additionalProperties:
                        type: string
                    description: Text for the main button when the event is not yet started. If not provided, defaults to 'Learn more'.
                main_button_default_text_font:
                    enum:
                        - BANNER_FONT_UNSPECIFIED
                        - BANNER_FONT_MAIN
                        - BANNER_FONT_BRAND
                    type: string
                    description: Font family to use for the main button default text.
                    format: enum
                main_button_colors:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerColors'
                    description: |-
                        Colors to use for the main button background. This will create a gradient if both colors are provided.
                         If not provided, defaults to `base-content`.
                main_button_text_color:
                    type: string
                    description: |-
                        Color to use for the main button text. This can be a hex color code or a named color (e.g. `primary`).
                         If not provided, defaults to `base-100`.
                gradients:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerGradients'
                    description: Optional gradient overlays to apply on top of the banner background image.
            description: |-
                Content for the `team-vs-team-midpage` template: a mid-page banner for sports events, displaying two competing teams
                 with their logos against colored backgrounds, a tagline, description, and action button.
                 This template only works when `banner_type` is `BANNER_TYPE_EVENT`.
        motto.cms.banner.v3.BannerTemplate:
            type: object
            properties:
                default_banner:
                    $ref: '#/components/schemas/motto.cms.banner.v3.BannerDefault'
                    description: 'Important: at most one of `default_banner`, `default_entity`, `entity_1`, `feature_banner`, `single_event`, `team_vs_team_hero`, `team_vs_team_midpage`, `custom` may be set per request.'
                default_entity:
                    $ref: '#/components/schemas/motto.cms.banner.v3.BannerDefaultEntity'
                    description: 'Important: at most one of `default_banner`, `default_entity`, `entity_1`, `feature_banner`, `single_event`, `team_vs_team_hero`, `team_vs_team_midpage`, `custom` may be set per request.'
                entity_1:
                    $ref: '#/components/schemas/motto.cms.banner.v3.BannerEntity1'
                    description: 'Important: at most one of `default_banner`, `default_entity`, `entity_1`, `feature_banner`, `single_event`, `team_vs_team_hero`, `team_vs_team_midpage`, `custom` may be set per request.'
                feature_banner:
                    $ref: '#/components/schemas/motto.cms.banner.v3.BannerFeature'
                    description: 'Important: at most one of `default_banner`, `default_entity`, `entity_1`, `feature_banner`, `single_event`, `team_vs_team_hero`, `team_vs_team_midpage`, `custom` may be set per request.'
                single_event:
                    $ref: '#/components/schemas/motto.cms.banner.v3.BannerSingleEvent'
                    description: 'Important: at most one of `default_banner`, `default_entity`, `entity_1`, `feature_banner`, `single_event`, `team_vs_team_hero`, `team_vs_team_midpage`, `custom` may be set per request.'
                team_vs_team_hero:
                    $ref: '#/components/schemas/motto.cms.banner.v3.BannerTeamVsTeamHero'
                    description: 'Important: at most one of `default_banner`, `default_entity`, `entity_1`, `feature_banner`, `single_event`, `team_vs_team_hero`, `team_vs_team_midpage`, `custom` may be set per request.'
                team_vs_team_midpage:
                    $ref: '#/components/schemas/motto.cms.banner.v3.BannerTeamVsTeamMidpage'
                    description: 'Important: at most one of `default_banner`, `default_entity`, `entity_1`, `feature_banner`, `single_event`, `team_vs_team_hero`, `team_vs_team_midpage`, `custom` may be set per request.'
                custom:
                    $ref: '#/components/schemas/motto.cms.banner.v3.BannerCustom'
                    description: 'Important: at most one of `default_banner`, `default_entity`, `entity_1`, `feature_banner`, `single_event`, `team_vs_team_hero`, `team_vs_team_midpage`, `custom` may be set per request.'
            description: |-
                BannerTemplate holds the content for the template that renders the banner. Each template has its own data structure.
                 Exactly one field should be set; the one that is set determines which template is rendered, and is reflected in the
                 banner's `template_type`.

                 Two conventions apply to all template messages below:

                   - Text fields are maps keyed by language code (ISO 639 - set 1), e.g. "en", "de", "fr". To localize for different
                     regions of the same language, add the country code (ISO 3166-1 alpha-2), e.g. "en-US", "en-GB". The content
                     delivery API collapses these into a single string for the locale the end user requested.
                   - Text and color values can reference properties of the connected content item using variable keypaths, e.g.
                     `{event.title}`, `{entity.name}`, or `{event.fields.home_team.item.color}`. The content delivery API interpolates
                     these with their actual values.
        motto.cms.banner.v3.BatchGetBannersResponse:
            type: object
            properties:
                banners:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v3.Banner'
        motto.cms.banner.v3.CloneBannerCollectionRequest:
            required:
                - banner_collection_id
                - project_id
            type: object
            properties:
                banner_collection_id:
                    type: string
                    description: The banner collection ID to clone from.
                project_id:
                    type: string
        motto.cms.banner.v3.CloneBannerCollectionResponse:
            type: object
            properties:
                banner_collection:
                    $ref: '#/components/schemas/motto.cms.banner.v3.BannerCollection'
        motto.cms.banner.v3.CloneBannerRequest:
            required:
                - banner_id
            type: object
            properties:
                banner_id:
                    type: string
                    description: The banner ID to clone from.
        motto.cms.banner.v3.CloneBannerResponse:
            type: object
            properties:
                banner:
                    $ref: '#/components/schemas/motto.cms.banner.v3.Banner'
        motto.cms.banner.v3.CompareBannerCollectionResponse:
            type: object
            properties:
                prod:
                    type: string
                    description: The representation of the production version of the banner collection.
                preview:
                    type: string
                    description: The representation of the preview version of the banner collection.
        motto.cms.banner.v3.CompareBannerResponse:
            type: object
            properties:
                prod:
                    type: string
                    description: The representation of the production version of the banner.
                preview:
                    type: string
                    description: The representation of the preview version of the banner.
        motto.cms.banner.v3.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.cms.banner.v3.CreateBannerCollectionResponse:
            type: object
            properties:
                banner_collection:
                    $ref: '#/components/schemas/motto.cms.banner.v3.BannerCollection'
        motto.cms.banner.v3.CreateBannerResponse:
            type: object
            properties:
                banner:
                    $ref: '#/components/schemas/motto.cms.banner.v3.Banner'
        motto.cms.banner.v3.DeleteBannerCollectionResponse:
            type: object
            properties: {}
        motto.cms.banner.v3.DeleteBannerResponse:
            type: object
            properties: {}
        motto.cms.banner.v3.DeployBannerCollectionRequest:
            required:
                - banner_collection_id
                - project_id
            type: object
            properties:
                banner_collection_id:
                    type: string
                    description: The banner collection ID to deploy.
                project_id:
                    type: string
        motto.cms.banner.v3.DeployBannerCollectionResponse:
            type: object
            properties:
                banner_collection:
                    $ref: '#/components/schemas/motto.cms.banner.v3.BannerCollection'
        motto.cms.banner.v3.DeployBannerRequest:
            required:
                - banner_id
            type: object
            properties:
                banner_id:
                    type: string
                    description: The banner ID to deploy.
        motto.cms.banner.v3.DeployBannerResponse:
            type: object
            properties:
                banner:
                    $ref: '#/components/schemas/motto.cms.banner.v3.Banner'
        motto.cms.banner.v3.DynamicBannerTarget:
            type: object
            properties:
                filter:
                    type: string
                    description: |-
                        Filter the result-set by properties using a subset of the Kibana Query Language.
                         This will make a List API call to retrieve the relevant resource for this banner.
                         For BANNER_TYPE_EVENT, this would be a ListEvents call.
                         For BANNER_TYPE_CREATIVE_WORK, this would be a ListCreativeWorks call.
                         For BANNER_TYPE_ENTITY, this would be a ListEntities call,

                         For example, let's say a BANNER_TYPE_EVENT banner is shown on a competition page, and the goal is to show the
                         first upcoming event from that competition in the banner.
                         The filter could be: `status:EVENT_STATUS_SCHEDULED and fields.competition.id:{id}`
                         in combination with the `order_by` value of `start_time asc` to get the next upcoming event.
                order_by:
                    type: string
                    description: To be used in combination with `filter`. See documentation there for more details.
                offset:
                    type: string
                    description: |-
                        The number of items to offset the result-set by. This is useful when multiple banners exist with the same filter/order_by,
                         and you want to show different items in each banner.
        motto.cms.banner.v3.GetBannerCollectionResponse:
            type: object
            properties:
                banner_collection:
                    $ref: '#/components/schemas/motto.cms.banner.v3.BannerCollection'
        motto.cms.banner.v3.GetBannerResponse:
            type: object
            properties:
                banner:
                    $ref: '#/components/schemas/motto.cms.banner.v3.Banner'
        motto.cms.banner.v3.GetSimilarBannerTemplateResponse:
            type: object
            properties:
                template:
                    allOf:
                        - $ref: '#/components/schemas/motto.cms.banner.v3.BannerTemplate'
                    description: |-
                        The template content of the similar banner, with the template that matches the requested `template_type` set.
                         If no similar banner is available, this is empty.
        motto.cms.banner.v3.ListBannerCollectionsResponse:
            type: object
            properties:
                banner_collections:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v3.BannerCollection'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.cms.banner.v3.ListBannersResponse:
            type: object
            properties:
                banners:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.banner.v3.Banner'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.cms.banner.v3.UpdateBannerCollectionRequest:
            required:
                - banner_collection_id
                - project_id
                - banner_collection_update
                - update_mask
            type: object
            properties:
                banner_collection_id:
                    type: string
                project_id:
                    type: string
                banner_collection_update:
                    $ref: '#/components/schemas/motto.cms.banner.v3.BannerCollection'
                update_mask:
                    type: string
                    format: field-mask
        motto.cms.banner.v3.UpdateBannerCollectionResponse:
            type: object
            properties:
                banner_collection:
                    $ref: '#/components/schemas/motto.cms.banner.v3.BannerCollection'
        motto.cms.banner.v3.UpdateBannerRequest:
            required:
                - banner_id
                - banner_update
                - update_mask
            type: object
            properties:
                banner_id:
                    type: string
                banner_update:
                    $ref: '#/components/schemas/motto.cms.banner.v3.Banner'
                update_mask:
                    type: string
                    description: |-
                        Note that `template` can only be updated as a whole: masking a path inside it (e.g. `template.single_event`)
                         replaces the entire template, and switching to another template requires the `template` path itself.
                    format: field-mask
        motto.cms.banner.v3.UpdateBannerResponse:
            type: object
            properties:
                banner:
                    $ref: '#/components/schemas/motto.cms.banner.v3.Banner'
        motto.cms.content.v1.AssetValidation:
            type: object
            properties:
                types:
                    type: array
                    items:
                        type: string
        motto.cms.content.v1.ContentType:
            required:
                - project_id
                - base_type
                - name
            type: object
            properties:
                id:
                    type: string
                project_id:
                    type: string
                base_type:
                    enum:
                        - BASE_TYPE_UNSPECIFIED
                        - BASE_TYPE_EVENT
                        - BASE_TYPE_CREATIVE_WORK
                        - BASE_TYPE_ENTITY
                    type: string
                    format: enum
                name:
                    type: string
                description:
                    type: string
                field_groups:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.content.v1.FieldGroup'
                disabled:
                    type: boolean
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    format: enum
                settings:
                    $ref: '#/components/schemas/motto.cms.content.v1.ContentTypeSettings'
        motto.cms.content.v1.ContentTypeSettings:
            type: object
            properties:
                allow_following:
                    type: boolean
                    description: |-
                        Whether the content type is able to be followed by users.
                         Defaults to false.
                allow_push_notifications:
                    type: boolean
                    description: |-
                        Whether the content type can be be the source of push notifications.
                         When the messaging service detects related activity that would invoke a push notification, it will check this field
                         to determine if it should send a push notification.
                         For example, if a user follows a competition entity, this may be too broad a category to trigger notifications on,
                         as it may then cause a push notification for every match within that competition.
                         Defaults to false.
        motto.cms.content.v1.CountValidation:
            type: object
            properties:
                min:
                    type: string
                max:
                    type: string
        motto.cms.content.v1.CreateTypeResponse:
            type: object
            properties:
                type:
                    $ref: '#/components/schemas/motto.cms.content.v1.ContentType'
        motto.cms.content.v1.DeleteTypeResponse:
            type: object
            properties: {}
        motto.cms.content.v1.Field:
            type: object
            properties:
                id:
                    type: string
                name:
                    type: string
                description:
                    type: string
                type:
                    enum:
                        - FIELD_TYPE_UNSPECIFIED
                        - FIELD_TYPE_STRING
                        - FIELD_TYPE_INTEGER
                        - FIELD_TYPE_DOUBLE
                        - FIELD_TYPE_DATETIME
                        - FIELD_TYPE_BOOLEAN
                        - FIELD_TYPE_LINK
                        - FIELD_TYPE_ASSET
                        - FIELD_TYPE_OBJECT
                    type: string
                    format: enum
                input_type:
                    enum:
                        - INPUT_TYPE_UNSPECIFIED
                        - INPUT_TYPE_COLOR_PICKER
                        - INPUT_TYPE_TEXTAREA
                    type: string
                    format: enum
                validations:
                    $ref: '#/components/schemas/motto.cms.content.v1.FieldValidations'
                default_value:
                    $ref: '#/components/schemas/google.protobuf.Value'
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    format: enum
        motto.cms.content.v1.FieldGroup:
            type: object
            properties:
                title:
                    type: string
                fields:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.content.v1.Field'
        motto.cms.content.v1.FieldValidations:
            type: object
            properties:
                count:
                    $ref: '#/components/schemas/motto.cms.content.v1.CountValidation'
                length:
                    $ref: '#/components/schemas/motto.cms.content.v1.LengthValidation'
                range:
                    $ref: '#/components/schemas/motto.cms.content.v1.RangeValidation'
                in:
                    $ref: '#/components/schemas/motto.cms.content.v1.InValidation'
                link_type:
                    $ref: '#/components/schemas/motto.cms.content.v1.LinkTypeValidation'
                asset:
                    $ref: '#/components/schemas/motto.cms.content.v1.AssetValidation'
        motto.cms.content.v1.GetTypeResponse:
            type: object
            properties:
                type:
                    $ref: '#/components/schemas/motto.cms.content.v1.ContentType'
        motto.cms.content.v1.InValidation:
            type: object
            properties:
                values:
                    type: array
                    items:
                        $ref: '#/components/schemas/google.protobuf.Value'
        motto.cms.content.v1.LengthValidation:
            type: object
            properties:
                min:
                    type: string
                max:
                    type: string
        motto.cms.content.v1.LinkTypeValidation:
            type: object
            properties:
                type_ids:
                    type: array
                    items:
                        type: string
                base_type:
                    enum:
                        - BASE_TYPE_UNSPECIFIED
                        - BASE_TYPE_EVENT
                        - BASE_TYPE_CREATIVE_WORK
                        - BASE_TYPE_ENTITY
                    type: string
                    format: enum
                additional_fields:
                    type: array
                    items:
                        type: string
                    description: |-
                        Additional fields that can be collected along with the link. The entries in this array are the keys of the
                         dictionary in which these fields are stored. The values in that dictionary are untyped fields, and can be any JSON.
                         E.g. `shirt_number` and `position` are additional fields for a link to a player.
                editor_filter:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        This is a special field to assist the Studio UI in filtering selectable links while managing content items.
                         There should be a key for each element in the type_ids array (e.g. `season`).
                         The value is a KQL filter query with a dynamic component (e.g. `fields.competition.id:{competition.id}`).
                         In this example, {competition.id} is a placeholder that will be replaced with the `id` property of the object
                         referenced by the property on this type called `competition`.
                         Important: do not confuse `competition` in the example above with a type_id. It is a field name of the type that
                         is defined in the key.
        motto.cms.content.v1.ListTypesResponse:
            type: object
            properties:
                types:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.content.v1.ContentType'
                next_page_token:
                    type: string
        motto.cms.content.v1.RangeValidation:
            type: object
            properties:
                start:
                    $ref: '#/components/schemas/google.protobuf.Value'
                exclude_start:
                    type: boolean
                end:
                    $ref: '#/components/schemas/google.protobuf.Value'
                exclude_end:
                    type: boolean
        motto.cms.content.v1.UpdateTypeRequest:
            required:
                - base_type
                - type
                - update_mask
            type: object
            properties:
                base_type:
                    enum:
                        - BASE_TYPE_UNSPECIFIED
                        - BASE_TYPE_EVENT
                        - BASE_TYPE_CREATIVE_WORK
                        - BASE_TYPE_ENTITY
                    type: string
                    format: enum
                type:
                    $ref: '#/components/schemas/motto.cms.content.v1.ContentType'
                update_mask:
                    type: string
                    format: field-mask
        motto.cms.content.v1.UpdateTypeResponse:
            type: object
            properties:
                type:
                    $ref: '#/components/schemas/motto.cms.content.v1.ContentType'
        motto.cms.creative_work.v1.BatchExportCreativeWorksRequest:
            required:
                - project_id
                - filter
                - timezone
            type: object
            properties:
                project_id:
                    type: string
                filter:
                    type: string
                    description: The filter that should be applied to the creative works export.
                locales:
                    type: array
                    items:
                        type: string
                    description: The locales that some of the fields in the export file should be provided in.
                timezone:
                    type: string
                    description: IANA timezone identifier (e.g., "America/New_York", "Europe/London")
        motto.cms.creative_work.v1.BatchExportCreativeWorksResponse:
            type: object
            properties:
                export_id:
                    type: string
                reserved_asset_id:
                    type: string
                    description: The asset ID that the exported file will be written to, once the export is completed.
        motto.cms.creative_work.v1.BatchImportCreativeWorksRequest:
            required:
                - project_id
                - asset_id
                - timezone
            type: object
            properties:
                project_id:
                    type: string
                asset_id:
                    type: string
                    description: The template file containing the creative works to create.
                timezone:
                    type: string
                    description: IANA timezone identifier (e.g., "America/New_York", "Europe/London")
                conflict_strategy:
                    enum:
                        - IMPORT_CONFLICT_STRATEGY_UNSPECIFIED
                        - IMPORT_CONFLICT_STRATEGY_SKIP
                        - IMPORT_CONFLICT_STRATEGY_UPDATE
                        - IMPORT_CONFLICT_STRATEGY_CREATE
                        - IMPORT_CONFLICT_STRATEGY_ABORT
                    type: string
                    description: |-
                        How to treat records that appear to already exist based on similar key characteristics.
                         Note that this strategy only applies on newly created items. It does not apply when you provide an `id` field in
                         the import file, because then the item is always uniquely identified and no conflicts will arise.

                         Important: only conflicts with items in the database will be resolved using this strategy. New items with similar
                         key characteristics in the same import batch will always be created.
                    format: enum
        motto.cms.creative_work.v1.BatchImportCreativeWorksResponse:
            type: object
            properties:
                import_id:
                    type: string
        motto.cms.creative_work.v1.CreateCreativeWorkResponse:
            type: object
            properties:
                creative_work:
                    $ref: '#/components/schemas/motto.cms.creative_work.v1.CreativeWork'
        motto.cms.creative_work.v1.CreativeWork:
            required:
                - project_id
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: System generated unique identifier for the creative work.
                project_id:
                    type: string
                type_id:
                    type: string
                    description: The type id of the creative work. For example `documentary`. May be set to `default` when no custom fields are present.
                title:
                    type: string
                description:
                    type: string
                status:
                    enum:
                        - CREATIVE_WORK_STATUS_UNSPECIFIED
                        - CREATIVE_WORK_STATUS_SCHEDULED
                        - CREATIVE_WORK_STATUS_RELEASED
                    type: string
                    description: Current status of the creative work
                    format: enum
                release_time:
                    type: string
                    description: The time at which this creative work was/will be released. This does not affect the visibility of the associated video(s), but can be displayed in the UI
                    format: date-time
                thumbnail_asset_id:
                    type: string
                poster_asset_id:
                    type: string
                video_ids:
                    type: array
                    items:
                        type: string
                fields:
                    type: object
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    format: enum
                create_time:
                    readOnly: true
                    type: string
                    format: date-time
                localized_title:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized titles for this creative work, 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.

                         Leaving this field empty will default to the `title` field.
                localized_description:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized descriptions for this creative work.
                         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.

                         Leaving this field empty will default to the `description` field.
                localized_thumbnail_asset_id:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized thumbnail asset IDs for this creative work.
                         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.

                         Leaving this field empty will default to the `thumbnail_asset_id` field.
                localized_poster_asset_id:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized poster asset IDs for this creative work.
                         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.

                         Leaving this field empty will default to the `poster_asset_id` field.
                banner_asset_id:
                    $ref: '#/components/schemas/motto.cms.creative_work.v1.CreativeWork_BannerMap'
                localized_banner_asset_id:
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/motto.cms.creative_work.v1.CreativeWork_BannerMap'
                    description: |-
                        A map of localized banner asset IDs for this creative work.
                         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.

                         Leaving this field empty will default to the `banner_asset_id` field.
            description: A creative work describes any kind of creative video content that does not have a start/end time (unlike an event).
        motto.cms.creative_work.v1.CreativeWork_BannerMap:
            type: object
            properties:
                banner_asset_id:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of banner asset IDs for this creative work.
                         The key is the breakpoint min-width (in pixels) at which this banner should be shown.
                         If you want a default banner for all screen sizes, you can use 0 as the key.
        motto.cms.creative_work.v1.DeleteCreativeWorkResponse:
            type: object
            properties: {}
        motto.cms.creative_work.v1.GetCreativeWorkResponse:
            type: object
            properties:
                creative_work:
                    $ref: '#/components/schemas/motto.cms.creative_work.v1.CreativeWork'
        motto.cms.creative_work.v1.GetImportTemplateResponse:
            type: object
            properties:
                asset_id:
                    type: string
        motto.cms.creative_work.v1.ListCreativeWorksResponse:
            type: object
            properties:
                creative_works:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.creative_work.v1.CreativeWork'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.cms.creative_work.v1.UpdateCreativeWorkRequest:
            required:
                - creative_work_id
                - creative_work_update
            type: object
            properties:
                creative_work_id:
                    type: string
                creative_work_update:
                    $ref: '#/components/schemas/motto.cms.creative_work.v1.CreativeWork'
                update_mask:
                    type: string
                    format: field-mask
        motto.cms.creative_work.v1.UpdateCreativeWorkResponse:
            type: object
            properties:
                creative_work:
                    $ref: '#/components/schemas/motto.cms.creative_work.v1.CreativeWork'
        motto.cms.entity.v1.BatchExportEntitiesRequest:
            required:
                - project_id
                - filter
                - timezone
            type: object
            properties:
                project_id:
                    type: string
                filter:
                    type: string
                    description: The filter that should be applied to the entities export.
                locales:
                    type: array
                    items:
                        type: string
                    description: The locales that some of the fields in the export file should be provided in.
                timezone:
                    type: string
                    description: IANA timezone identifier (e.g., "America/New_York", "Europe/London")
        motto.cms.entity.v1.BatchExportEntitiesResponse:
            type: object
            properties:
                export_id:
                    type: string
                reserved_asset_id:
                    type: string
                    description: The asset ID that the exported file will be written to, once the export is completed.
        motto.cms.entity.v1.BatchImportEntitiesRequest:
            required:
                - project_id
                - asset_id
                - timezone
            type: object
            properties:
                project_id:
                    type: string
                asset_id:
                    type: string
                    description: The template file containing the entities to create.
                timezone:
                    type: string
                    description: IANA timezone identifier (e.g., "America/New_York", "Europe/London")
                conflict_strategy:
                    enum:
                        - IMPORT_CONFLICT_STRATEGY_UNSPECIFIED
                        - IMPORT_CONFLICT_STRATEGY_SKIP
                        - IMPORT_CONFLICT_STRATEGY_UPDATE
                        - IMPORT_CONFLICT_STRATEGY_CREATE
                        - IMPORT_CONFLICT_STRATEGY_ABORT
                    type: string
                    description: |-
                        How to treat records that appear to already exist based on similar key characteristics.
                         Note that this strategy only applies on newly created items. It does not apply when you provide an `id` field in
                         the import file, because then the item is always uniquely identified and no conflicts will arise.

                         Important: only conflicts with items in the database will be resolved using this strategy. New items with similar
                         key characteristics in the same import batch will always be created.
                    format: enum
        motto.cms.entity.v1.BatchImportEntitiesResponse:
            type: object
            properties:
                import_id:
                    type: string
        motto.cms.entity.v1.CreateEntityResponse:
            type: object
            properties:
                entity:
                    $ref: '#/components/schemas/motto.cms.entity.v1.Entity'
        motto.cms.entity.v1.DeleteEntityResponse:
            type: object
            properties: {}
        motto.cms.entity.v1.Entity:
            required:
                - project_id
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: System generated unique identifier for the entity.
                project_id:
                    type: string
                type_id:
                    type: string
                    description: The type id of the entity. For example `competition`. May be set to `default` when no custom fields are present.
                name:
                    type: string
                description:
                    type: string
                thumbnail_asset_id:
                    type: string
                disabled:
                    type: boolean
                fields:
                    type: object
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    format: enum
                create_time:
                    readOnly: true
                    type: string
                    format: date-time
                localized_name:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized names for this entity, for end users to see. The key is the language code (ISO 639 - set 1) (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.

                         Leaving this field empty will default to the `name` field.
                localized_description:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized descriptions for this entity.
                         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.

                         Leaving this field empty will default to the `description` field.
                localized_thumbnail_asset_id:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized thumbnail asset IDs for this entity.
                         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.

                         Leaving this field empty will default to the `thumbnail_asset_id` field.
                logo_asset_id:
                    type: string
                localized_logo_asset_id:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized logo asset IDs for this entity.
                         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.

                         Leaving this field empty will default to the `logo_asset_id` field.
                banner_asset_id:
                    $ref: '#/components/schemas/motto.cms.entity.v1.Entity_BannerMap'
                localized_banner_asset_id:
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/motto.cms.entity.v1.Entity_BannerMap'
                    description: |-
                        A map of localized banner asset IDs for this entity.
                         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.

                         Leaving this field empty will default to the `banner_asset_id` field.
            description: Entity represents some object, such as competition, conference, team or person.
        motto.cms.entity.v1.Entity_BannerMap:
            type: object
            properties:
                banner_asset_id:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of banner asset IDs for this entity.
                         The key is the breakpoint min-width (in pixels) at which this banner should be shown.
                         If you want a default banner for all screen sizes, you can use 0 as the key.
        motto.cms.entity.v1.GetEntityResponse:
            type: object
            properties:
                entity:
                    $ref: '#/components/schemas/motto.cms.entity.v1.Entity'
        motto.cms.entity.v1.GetImportTemplateResponse:
            type: object
            properties:
                asset_id:
                    type: string
        motto.cms.entity.v1.ListEntitiesResponse:
            type: object
            properties:
                entities:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.entity.v1.Entity'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.cms.entity.v1.UpdateEntityRequest:
            required:
                - entity_id
                - entity_update
            type: object
            properties:
                entity_id:
                    type: string
                entity_update:
                    $ref: '#/components/schemas/motto.cms.entity.v1.Entity'
                update_mask:
                    type: string
                    format: field-mask
        motto.cms.entity.v1.UpdateEntityResponse:
            type: object
            properties:
                entity:
                    $ref: '#/components/schemas/motto.cms.entity.v1.Entity'
        motto.cms.event.v1.BatchExportEventsRequest:
            required:
                - project_id
                - filter
                - timezone
            type: object
            properties:
                project_id:
                    type: string
                filter:
                    type: string
                    description: The filter that should be applied to the events export.
                locales:
                    type: array
                    items:
                        type: string
                    description: The locales that some of the fields in the export file should be provided in.
                timezone:
                    type: string
                    description: IANA timezone identifier (e.g., "America/New_York", "Europe/London")
        motto.cms.event.v1.BatchExportEventsResponse:
            type: object
            properties:
                export_id:
                    type: string
                reserved_asset_id:
                    type: string
                    description: The asset ID that the exported file will be written to, once the export is completed.
        motto.cms.event.v1.BatchImportEventsRequest:
            required:
                - project_id
                - asset_id
                - timezone
            type: object
            properties:
                project_id:
                    type: string
                asset_id:
                    type: string
                    description: The template file containing the events to create.
                timezone:
                    type: string
                    description: IANA timezone identifier (e.g., "America/New_York", "Europe/London")
                conflict_strategy:
                    enum:
                        - IMPORT_CONFLICT_STRATEGY_UNSPECIFIED
                        - IMPORT_CONFLICT_STRATEGY_SKIP
                        - IMPORT_CONFLICT_STRATEGY_UPDATE
                        - IMPORT_CONFLICT_STRATEGY_CREATE
                        - IMPORT_CONFLICT_STRATEGY_ABORT
                    type: string
                    description: |-
                        How to treat records that appear to already exist based on similar key characteristics.
                         Note that this strategy only applies on newly created items. It does not apply when you provide an `id` field in
                         the import file, because then the item is always uniquely identified and no conflicts will arise.

                         Important: only conflicts with items in the database will be resolved using this strategy. New items with similar
                         key characteristics in the same import batch will always be created.
                    format: enum
        motto.cms.event.v1.BatchImportEventsResponse:
            type: object
            properties:
                import_id:
                    type: string
        motto.cms.event.v1.CreateEventResponse:
            type: object
            properties:
                event:
                    $ref: '#/components/schemas/motto.cms.event.v1.Event'
        motto.cms.event.v1.DeleteEventResponse:
            type: object
            properties: {}
        motto.cms.event.v1.DuplicateEventRequest:
            required:
                - event_id
            type: object
            properties:
                event_id:
                    type: string
                event:
                    $ref: '#/components/schemas/motto.cms.event.v1.Event'
                update_mask:
                    type: string
                    format: field-mask
        motto.cms.event.v1.DuplicateEventResponse:
            type: object
            properties:
                event:
                    $ref: '#/components/schemas/motto.cms.event.v1.Event'
        motto.cms.event.v1.Event:
            required:
                - project_id
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: System generated unique identifier for the event.
                project_id:
                    type: string
                type_id:
                    type: string
                    description: The type id of the event. For example `football_match`. May be set to `default` when no custom fields are present.
                title:
                    type: string
                description:
                    type: string
                status:
                    enum:
                        - EVENT_STATUS_UNSPECIFIED
                        - EVENT_STATUS_SCHEDULED
                        - EVENT_STATUS_RESCHEDULED
                        - EVENT_STATUS_CANCELLED
                        - EVENT_STATUS_POSTPONED
                        - EVENT_STATUS_MOVED_ONLINE
                        - EVENT_STATUS_DELAYED
                        - EVENT_STATUS_STARTED
                        - EVENT_STATUS_PAUSED
                        - EVENT_STATUS_SUSPENDED
                        - EVENT_STATUS_FINISHED
                        - EVENT_STATUS_PRESCHEDULED
                    type: string
                    description: Current status of the event
                    format: enum
                start_time:
                    type: string
                    format: date-time
                online_url:
                    type: string
                    description: 'Important: at most one of `online_url`, `physical_location` may be set per request.'
                physical_location:
                    $ref: '#/components/schemas/motto.cms.event.v1.PhysicalLocation'
                    description: 'Important: at most one of `online_url`, `physical_location` may be set per request.'
                thumbnail_asset_id:
                    type: string
                poster_asset_id:
                    type: string
                video_ids:
                    type: array
                    items:
                        type: string
                fields:
                    type: object
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    format: enum
                create_time:
                    readOnly: true
                    type: string
                    format: date-time
                localized_title:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized titles for this event, 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.

                         Leaving this field empty will default to the `title` field.
                localized_description:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized descriptions for this event.
                         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.

                         Leaving this field empty will default to the `description` field.
                localized_thumbnail_asset_id:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized thumbnail asset IDs for this event.
                         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.

                         Leaving this field empty will default to the `thumbnail_asset_id` field.
                localized_poster_asset_id:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized poster asset IDs for this event.
                         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.

                         Leaving this field empty will default to the `poster_asset_id` field.
                banner_asset_id:
                    $ref: '#/components/schemas/motto.cms.event.v1.Event_BannerMap'
                localized_banner_asset_id:
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/motto.cms.event.v1.Event_BannerMap'
                    description: |-
                        A map of localized banner asset IDs for this event.
                         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.

                         Leaving this field empty will default to the `banner_asset_id` field.
            description: An event happening at a certain time and location, such as a sports game, concert, lecture, or festival.
        motto.cms.event.v1.Event_BannerMap:
            type: object
            properties:
                banner_asset_id:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of banner asset IDs for this event.
                         The key is the breakpoint min-width (in pixels) at which this banner should be shown.
                         If you want a default banner for all screen sizes, you can use 0 as the key.
        motto.cms.event.v1.GetEventResponse:
            type: object
            properties:
                event:
                    $ref: '#/components/schemas/motto.cms.event.v1.Event'
        motto.cms.event.v1.GetImportTemplateResponse:
            type: object
            properties:
                asset_id:
                    type: string
        motto.cms.event.v1.ListEventsResponse:
            type: object
            properties:
                events:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.event.v1.Event'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.cms.event.v1.PhysicalLocation:
            type: object
            properties:
                venue:
                    type: string
                city:
                    type: string
                country_code:
                    type: string
                    description: Country code complaint with ISO 3166-1 alpha-2
                continent_code:
                    type: string
                    description: Continent code, one of AF, AN, AS, EU, NA, OC, SA
                coordinates:
                    $ref: '#/components/schemas/google.type.LatLng'
        motto.cms.event.v1.UpdateEventRequest:
            required:
                - event_id
                - event_update
            type: object
            properties:
                event_id:
                    type: string
                event_update:
                    $ref: '#/components/schemas/motto.cms.event.v1.Event'
                update_mask:
                    type: string
                    format: field-mask
        motto.cms.event.v1.UpdateEventResponse:
            type: object
            properties:
                event:
                    $ref: '#/components/schemas/motto.cms.event.v1.Event'
        motto.cms.standing.v1.BatchGetStandingPhasesResponse:
            type: object
            properties:
                standing_phases:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.standing.v1.StandingPhase'
        motto.cms.standing.v1.CreateStandingPhaseResponse:
            type: object
            properties:
                standing_phase:
                    $ref: '#/components/schemas/motto.cms.standing.v1.StandingPhase'
        motto.cms.standing.v1.CreateStandingResponse:
            type: object
            properties:
                standing:
                    $ref: '#/components/schemas/motto.cms.standing.v1.Standing'
        motto.cms.standing.v1.DeleteStandingPhaseResponse:
            type: object
            properties: {}
        motto.cms.standing.v1.DeleteStandingResponse:
            type: object
            properties: {}
        motto.cms.standing.v1.GetStandingPhaseResponse:
            type: object
            properties:
                standing_phase:
                    $ref: '#/components/schemas/motto.cms.standing.v1.StandingPhase'
        motto.cms.standing.v1.GetStandingResponse:
            type: object
            properties:
                standing:
                    $ref: '#/components/schemas/motto.cms.standing.v1.Standing'
        motto.cms.standing.v1.ListStandingsResponse:
            type: object
            properties:
                standings:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.standing.v1.Standing'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.cms.standing.v1.Standing:
            required:
                - project_id
                - entity_id
                - entity_type
                - mode
                - standing_phase_ids
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: System generated unique identifier for the standings object.
                project_id:
                    type: string
                entity_id:
                    type: string
                    description: The CMS entity that is primarily associated with this standing. This is typically an entity of type competition or season.
                entity_type:
                    type: string
                    description: |-
                        The CMS entity type that is primarily associated with this standing. This is typically something like a competition or
                         season.
                mode:
                    enum:
                        - MODE_UNSPECIFIED
                        - MODE_MANUAL
                        - MODE_COMPUTED
                    type: string
                    format: enum
                applies_through:
                    type: string
                    description: |-
                        The date and time until which this standing is valid. After this time, the standing may be considered outdated.
                         Can be left empty, in which case it is not displayed to end users.
                    format: date-time
                standing_phase_ids:
                    type: array
                    items:
                        type: string
                    description: The standing phases that are part of this standing.
            description: An event happening at a certain time and location, such as a sports game, concert, lecture, or festival.
        motto.cms.standing.v1.StandingClassification:
            required:
                - id
                - localized_name
            type: object
            properties:
                id:
                    type: string
                    description: An identifier for this classification (column in the standings table). For example "points", "wins", "losses", etc.
                localized_name:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized names for this classification, 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.
                localized_short_name:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized short names for this classification, 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.
                priority:
                    type: string
                    description: The priority of this classification in the standings. Higher priority classifications are prioritized over lower ones in a table when the screen is limited in horizontal space.
            description: |-
                A classification is a description of a specific metric or statistic that is used to rank entities in the standings.
                 For example, "points", "wins", "losses", etc.
        motto.cms.standing.v1.StandingEntry:
            required:
                - entity_id
                - entity_type
                - stats
            type: object
            properties:
                entity_id:
                    type: string
                    description: The ID of the entity that this entry represents.
                entity_type:
                    type: string
                    description: The type of the entity that this entry represents. For example, "team".
                stats:
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/motto.cms.standing.v1.StandingValue'
                    description: |-
                        The values for each classification in this entry. The key is the classification ID, and the value is the value for that classification.
                         E.g. "points": "9", "wins": "3", "losses": "1".
        motto.cms.standing.v1.StandingGroup:
            required:
                - entries
            type: object
            properties:
                localized_name:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized names for this group, 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.

                         This can be left empty, e.g. when this is the only group in the standings.
                entries:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.standing.v1.StandingEntry'
        motto.cms.standing.v1.StandingPhase:
            required:
                - project_id
                - classifications
                - groups
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: System generated unique identifier for the standing phase object.
                project_id:
                    type: string
                localized_name:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized names for this phase, 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.

                         This can be left empty, e.g. when this is the only phase in the standings.
                classifications:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.standing.v1.StandingClassification'
                    description: |-
                        A list of classifications that are used to rank entities in the standings.
                         A classification is a description of a specific metric or statistic that is used to rank entities in the standings.
                         For example, "points", "wins", "losses", etc.
                groups:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.cms.standing.v1.StandingGroup'
        motto.cms.standing.v1.StandingValue:
            type: object
            properties:
                value:
                    type: string
                    description: The canonical value for this standing value, e.g. "3" for a classification that represents points.
                localized_value:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized values for this standing value, 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.

                         This can be left empty in many cases, except when the value is a number that should be localized (e.g. "3" in English vs "3,0" in German).
        motto.cms.standing.v1.UpdateStandingPhaseRequest:
            required:
                - standing_phase_id
                - standing_phase
            type: object
            properties:
                standing_phase_id:
                    type: string
                standing_phase:
                    $ref: '#/components/schemas/motto.cms.standing.v1.StandingPhase'
                update_mask:
                    type: string
                    format: field-mask
        motto.cms.standing.v1.UpdateStandingPhaseResponse:
            type: object
            properties:
                standing_phase:
                    $ref: '#/components/schemas/motto.cms.standing.v1.StandingPhase'
        motto.cms.standing.v1.UpdateStandingRequest:
            required:
                - standing_id
                - standing
            type: object
            properties:
                standing_id:
                    type: string
                standing:
                    $ref: '#/components/schemas/motto.cms.standing.v1.Standing'
                update_mask:
                    type: string
                    format: field-mask
        motto.cms.standing.v1.UpdateStandingResponse:
            type: object
            properties:
                standing:
                    $ref: '#/components/schemas/motto.cms.standing.v1.Standing'
        motto.iam.account.v1.Account:
            required:
                - email
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: System generated unique identifier for the account.
                first_name:
                    type: string
                    description: First name.
                last_name:
                    type: string
                    description: Last name.
                email:
                    type: string
                    description: Email address.
                verified:
                    readOnly: true
                    type: boolean
                    description: Whether account has verified email or not.
                survey:
                    readOnly: true
                    enum:
                        - SURVEY_STATUS_UNSPECIFIED
                        - SURVEY_STATUS_COMPLETED
                        - SURVEY_STATUS_SKIPPED
                    type: string
                    description: Status of account's survey completion.
                    format: enum
            description: |-
                An account that can be used to identify someone within the Motto Studio API.
                 Important: not to be confused with `User` which is a user of the Motto Content Delivery API.
        motto.iam.account.v1.AccountUpdate:
            type: object
            properties:
                first_name:
                    type: string
                    description: First name to update.
                last_name:
                    type: string
                    description: Last name to update.
        motto.iam.account.v1.BatchGetAccountsResponse:
            type: object
            properties:
                accounts:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.iam.account.v1.Account'
        motto.iam.account.v1.BatchInviteAccountsRequest:
            required:
                - accounts
                - resource_key
            type: object
            properties:
                accounts:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.iam.account.v1.Account'
                    description: The accounts you would like to invite.
                resource_key:
                    type: string
                    description: The resource key of the resource to which you are inviting someone.
        motto.iam.account.v1.BatchInviteAccountsResponse:
            type: object
            properties:
                accounts:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.iam.account.v1.Account'
        motto.iam.account.v1.ChangePasswordRequest:
            required:
                - old_password
                - new_password
            type: object
            properties:
                old_password:
                    type: string
                new_password:
                    type: string
                    description: |-
                        New password must not be less than 8 characters long,
                         must contain at least one letter, must contain at least one number or special character
                         and have not more than 3 repeating characters
        motto.iam.account.v1.ChangePasswordResponse:
            type: object
            properties: {}
        motto.iam.account.v1.CheckPasswordResetResponse:
            type: object
            properties:
                account:
                    $ref: '#/components/schemas/motto.iam.account.v1.Account'
        motto.iam.account.v1.CreateAccountRequest:
            required:
                - email
                - password
            type: object
            properties:
                email:
                    type: string
                password:
                    type: string
                    description: |-
                        Password must not be less than 8 characters long,
                         must contain at least one letter, must contain at least one number or special character
                         and have not more than 3 repeating characters
                first_name:
                    type: string
                last_name:
                    type: string
        motto.iam.account.v1.CreateAccountResponse:
            type: object
            properties:
                account:
                    $ref: '#/components/schemas/motto.iam.account.v1.Account'
                token:
                    type: string
        motto.iam.account.v1.CreateSecurityWidgetTokenRequest:
            type: object
            properties: {}
        motto.iam.account.v1.CreateSecurityWidgetTokenResponse:
            type: object
            properties:
                token:
                    type: string
                    description: Token to pass to the widget as its auth token.
        motto.iam.account.v1.GetAccountResponse:
            type: object
            properties:
                account:
                    $ref: '#/components/schemas/motto.iam.account.v1.Account'
        motto.iam.account.v1.GetMyAccountResponse:
            type: object
            properties:
                account:
                    $ref: '#/components/schemas/motto.iam.account.v1.Account'
        motto.iam.account.v1.ListAccountsResponse:
            type: object
            properties:
                items:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.iam.account.v1.ListAccountsResponse_Item'
                next_page_token:
                    type: string
        motto.iam.account.v1.ListAccountsResponse_Item:
            type: object
            properties:
                account:
                    $ref: '#/components/schemas/motto.iam.account.v1.Account'
                roles:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.iam.auth.v1.Role'
        motto.iam.account.v1.ResendVerificationEmailResponse:
            type: object
            properties: {}
        motto.iam.account.v1.ResetPasswordRequest:
            required:
                - reset_code
                - new_password
            type: object
            properties:
                reset_code:
                    type: string
                new_password:
                    type: string
        motto.iam.account.v1.ResetPasswordResponse:
            type: object
            properties: {}
        motto.iam.account.v1.SendPasswordResetRequest:
            required:
                - email
            type: object
            properties:
                email:
                    type: string
        motto.iam.account.v1.SendPasswordResetResponse:
            type: object
            properties: {}
        motto.iam.account.v1.UpdateAccountRequest:
            required:
                - account_id
                - account_update
            type: object
            properties:
                account_id:
                    type: string
                account_update:
                    $ref: '#/components/schemas/motto.iam.account.v1.AccountUpdate'
                update_mask:
                    type: string
                    format: field-mask
        motto.iam.account.v1.UpdateAccountResponse:
            type: object
            properties:
                account:
                    $ref: '#/components/schemas/motto.iam.account.v1.Account'
        motto.iam.account.v1.VerifyAccountRequest:
            required:
                - verification_token
            type: object
            properties:
                verification_token:
                    type: string
        motto.iam.account.v1.VerifyAccountResponse:
            type: object
            properties: {}
        motto.iam.auth.v1.Binding:
            type: object
            properties:
                role_id:
                    type: string
                    description: Role ID - it can be either a predefined role ID (`owner`, `projects.admin`) or custom role ID (`projects:PROJECT_ID:role:ROLE_ID`)
                account_ids:
                    type: array
                    items:
                        type: string
                    description: List of account identifiers (referencing `motto.iam.account.v1.Account`) that have the role.
                all_organization_accounts:
                    type: boolean
                    description: If true, the role is granted to any account that has at least one binding to the organization or its descendant resources.
            description: Associates `account_ids` with a `role`.
        motto.iam.auth.v1.CompleteLoginRequest:
            required:
                - code
            type: object
            properties:
                code:
                    type: string
                    description: Authorization code from the hosted login page redirect.
                code_verifier:
                    type: string
                    description: PKCE code verifier, required when the login was started with a code challenge.
        motto.iam.auth.v1.CompleteLoginResponse:
            type: object
            properties:
                access_token:
                    type: string
                    description: Access token to use as Bearer token. It is short-lived; use RefreshSession to obtain a new one.
                refresh_token:
                    type: string
                    description: Refresh token. Store it securely (e.g. in an HttpOnly cookie); it is valid for the lifetime of the session.
                account_id:
                    type: string
                    description: ID of the signed-in account.
        motto.iam.auth.v1.CreateTokenRequest:
            type: object
            properties:
                expiration_seconds:
                    type: string
                    description: |-
                        Token expiration in seconds. Minimum is 300 seconds (5 minutes), maximum is 86400*365 seconds (1 year).
                         To create a non-expiring token, set the value to 0.
                resource_scope_keys:
                    type: array
                    items:
                        type: string
                    description: |-
                        This property restricts the created token's access only to resources that sit within the hierarchy/hierarchies
                         defined by `resource_scope_keys`.
                         Important: this does not give access to the resources by itself; it is a filter that is applied on top of the existing access
                         rights of the account for which the token is being created.
                role_scopes:
                    type: array
                    items:
                        type: string
                    description: |-
                        This property restricts the created token to the permissions granted by the given roles, identified by their
                         role ID (e.g. `viewer` or `spiideo_viewer`). The roles are treated purely as sets of permissions: the account does
                         not need to hold these roles itself, and the token can never do more than the account can.
                         Important: like `resource_scope_keys`, this is a filter on top of the account's existing access; it does not grant
                         access by itself. At most 5 roles can be given.
                permission_scopes:
                    type: array
                    items:
                        type: string
                    description: |-
                        This property restricts the created token to the given permissions (e.g. `event.event.get`). A scoped wildcard
                         such as `event.*` is allowed. When combined with `role_scopes`, the token is restricted to the intersection of
                         both; the most restrictive interpretation always wins.
                         Important: like `resource_scope_keys`, this is a filter on top of the account's existing access; it does not grant
                         access by itself. At most 10 permissions can be given.
        motto.iam.auth.v1.CreateTokenResponse:
            type: object
            properties:
                token:
                    type: string
                    description: Created token
        motto.iam.auth.v1.GetIamPolicyResponse:
            type: object
            properties:
                policy:
                    $ref: '#/components/schemas/motto.iam.auth.v1.Policy'
                etag:
                    type: string
                    description: Hash of the stored policy that must be sent by the client when updating the policy.
                    format: bytes
        motto.iam.auth.v1.GetRoleResponse:
            type: object
            properties:
                role:
                    $ref: '#/components/schemas/motto.iam.auth.v1.Role'
        motto.iam.auth.v1.LoginRequest:
            required:
                - email
                - password
            type: object
            properties:
                email:
                    type: string
                password:
                    type: string
        motto.iam.auth.v1.LoginResponse:
            type: object
            properties:
                token:
                    type: string
                    description: Account token
        motto.iam.auth.v1.LogoutRequest:
            required:
                - refresh_token
            type: object
            properties:
                refresh_token:
                    type: string
        motto.iam.auth.v1.LogoutResponse:
            type: object
            properties: {}
        motto.iam.auth.v1.Policy:
            type: object
            properties:
                bindings:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.iam.auth.v1.Binding'
                    description: |-
                        List of bindings to the policy. If empty, the policy will not have any effect.
                         Total number of accounts referenced in the bindings should be up to 1500.
                         If same account has multiple roles - it is counted multiple times.
            description: Authorization policy.
        motto.iam.auth.v1.RefreshSessionRequest:
            required:
                - refresh_token
            type: object
            properties:
                refresh_token:
                    type: string
        motto.iam.auth.v1.RefreshSessionResponse:
            type: object
            properties:
                access_token:
                    type: string
                refresh_token:
                    type: string
        motto.iam.auth.v1.Role:
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: |-
                        The unique identifier of the role.
                         Can be either system role like `owner` or custom role ID like `project:PROJECT_ID:role:ROLE_ID`.
                name:
                    type: string
                    description: Name of the role.
                description:
                    type: string
                    description: Optional description of the role.
                permissions:
                    type: array
                    items:
                        type: string
                    description: List of permissions that are granted to the role.
        motto.iam.auth.v1.SetIamPolicyRequest:
            required:
                - resource_key
                - policy
            type: object
            properties:
                resource_key:
                    type: string
                    description: |-
                        A resource key for which policy is being set.

                         For organizations, this key consists of two components: the organization ID and string "organization", joined by a forward slash.
                         For all other resources, this key consists of three components: the resource ID, the project ID, and the resource type (e.g. "event" or project"),
                         joined by forward slashes (for projects specifically, this contains the same resource ID twice).

                         Examples:
                         For organization "example", use `example/organization`
                         For project "demo", use `demo/demo/project`
                         For event "r8efdFD9sMSaa93" inside the project "demo", use `r8efdFD9sMSaa93/demo/event`
                policy:
                    allOf:
                        - $ref: '#/components/schemas/motto.iam.auth.v1.Policy'
                    description: New policy value to set for the resource
                etag:
                    type: string
                    description: If not empty, the request succeeds only if value matches the currently stored IAM policy
                    format: bytes
        motto.iam.auth.v1.SetIamPolicyResponse:
            type: object
            properties: {}
            description: When there is no error result is empty
        motto.iam.auth.v1.TestResourceIamPermissionsResponse:
            type: object
            properties:
                permissions:
                    type: array
                    items:
                        type: string
                    description: List of permissions that the account has access to on a given resource or its ancestor resources.
        motto.iam.organization.v1.GetOrganizationResponse:
            type: object
            properties:
                organization:
                    $ref: '#/components/schemas/motto.iam.organization.v1.Organization'
        motto.iam.organization.v1.ListOrganizationsResponse:
            type: object
            properties:
                organizations:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.iam.organization.v1.Organization'
                next_page_token:
                    type: string
                    description: |-
                        If there are more results than have been returned, then this field is set
                         to a non-empty value.  To see the additional results,
                         use that value as `page_token` in the next call to this method.
        motto.iam.organization.v1.Organization:
            required:
                - id
            type: object
            properties:
                id:
                    type: string
                    description: |-
                        Human readable, URL-compatible short identifier, like "motto" or "rtt-show".
                         Must be unique.
                name:
                    type: string
                    description: Name of the organization, e.g. "Motto"
                disabled:
                    readOnly: true
                    type: boolean
                    description: Is this organization disabled? If true, it's not possible to create/manage content.
        motto.iam.project.v1.GetProjectResponse:
            type: object
            properties:
                project:
                    $ref: '#/components/schemas/motto.iam.project.v1.Project'
        motto.iam.project.v1.ListProjectsResponse:
            type: object
            properties:
                projects:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.iam.project.v1.Project'
                next_page_token:
                    type: string
                    description: |-
                        If there are more results than have been returned, then this field is set
                         to a non-empty value.  To see the additional results,
                         use that value as `page_token` in the next call to this method.
        motto.iam.project.v1.Project:
            required:
                - id
                - org_id
            type: object
            properties:
                id:
                    type: string
                    description: |-
                        Human readable, URL-compatible short identifier, like "motto" or "rtt-show".
                         Must be unique.
                org_id:
                    type: string
                    description: Organization ID this project belongs to.
                name:
                    type: string
                    description: Name of the project, e.g. "Motto".
                disabled:
                    readOnly: true
                    type: boolean
                    description: Is the project disabled? If true, it will not be returned in any list requests.
                content_delivery_settings:
                    $ref: '#/components/schemas/motto.iam.project.v1.Project_ContentDeliverySettings'
                preferred_regions:
                    type: array
                    items:
                        enum:
                            - REGION_UNSPECIFIED
                            - REGION_AF
                            - REGION_AS
                            - REGION_EU
                            - REGION_NA
                            - REGION_OC
                            - REGION_SA
                        type: string
                        format: enum
                    description: |-
                        The region(s) that this project prefers to operate in. This is used to help the Studio frontend make decisions on
                         how to create and display region-based resources.
        motto.iam.project.v1.Project_ContentDeliverySettings:
            type: object
            properties:
                public_keys:
                    type: array
                    items:
                        type: string
                    description: |-
                        Keys that can be used from clients to retrieve information from public endpoints (e.g. list events).
                         They are supposed to be stable and public because some of them would be compiled into clients.
                embed_domains:
                    type: array
                    items:
                        type: string
                    description: List of allowed domains for the web embed.
                content_visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    description: |-
                        Content visibility settings.
                         It overrides content visibility settings of content within this project.
                         For example, if event is published, but project is hidden, the event will be available only through direct link.
                    format: enum
            description: Settings relevant for the content delivery API
        motto.iam.project.v1.UpdateProjectResponse:
            type: object
            properties:
                project:
                    $ref: '#/components/schemas/motto.iam.project.v1.Project'
        motto.iam.user.v1.AppleSignInIntegration:
            required:
                - project_id
                - audiences
            type: object
            properties:
                project_id:
                    type: string
                    description: The Motto project to which this integration belongs
                audiences:
                    type: array
                    items:
                        type: string
                    description: The audience strings that are allowed on the signed JWT token. For iOS, this is typically the bundle ID.
            description: AppleSignInIntegration
        motto.iam.user.v1.CreateAppleSignInIntegrationResponse:
            type: object
            properties:
                integration:
                    $ref: '#/components/schemas/motto.iam.user.v1.AppleSignInIntegration'
        motto.iam.user.v1.CreateGoogleSignInIntegrationResponse:
            type: object
            properties:
                integration:
                    $ref: '#/components/schemas/motto.iam.user.v1.GoogleSignInIntegration'
        motto.iam.user.v1.CreateOIDCIntegrationResponse:
            type: object
            properties:
                integration:
                    $ref: '#/components/schemas/motto.iam.user.v1.OIDCIntegration'
        motto.iam.user.v1.CreateUserTokenResponse:
            type: object
            properties:
                token:
                    type: string
                    description: A token that can be used to authenticate the user within Motto's Content Delivery API.
                refresh_token:
                    type: string
                    description: A refresh token that can be used to obtain a new authentication token when the original expires.
        motto.iam.user.v1.DeleteAppleSignInIntegrationResponse:
            type: object
            properties: {}
        motto.iam.user.v1.DeleteGoogleSignInIntegrationResponse:
            type: object
            properties: {}
        motto.iam.user.v1.DeleteOIDCIntegrationResponse:
            type: object
            properties: {}
        motto.iam.user.v1.DeleteUserResponse:
            type: object
            properties: {}
        motto.iam.user.v1.GetAppleSignInIntegrationResponse:
            type: object
            properties:
                integration:
                    $ref: '#/components/schemas/motto.iam.user.v1.AppleSignInIntegration'
        motto.iam.user.v1.GetGoogleSignInIntegrationResponse:
            type: object
            properties:
                integration:
                    $ref: '#/components/schemas/motto.iam.user.v1.GoogleSignInIntegration'
        motto.iam.user.v1.GetOIDCIntegrationResponse:
            type: object
            properties:
                integration:
                    $ref: '#/components/schemas/motto.iam.user.v1.OIDCIntegration'
        motto.iam.user.v1.GetUserResponse:
            type: object
            properties:
                user:
                    $ref: '#/components/schemas/motto.iam.user.v1.User'
        motto.iam.user.v1.GoogleSignInIntegration:
            required:
                - project_id
                - oauth_client_ids
            type: object
            properties:
                project_id:
                    type: string
                    description: The Motto project to which this integration belongs
                oauth_client_ids:
                    type: array
                    items:
                        type: string
                    description: |-
                        The OAuth client IDs as defined in Google Cloud Console.
                         There can be multiple client IDs if the integration is used across multiple platforms (e.g., web, iOS, Android).
                         There must be at least one client ID.
            description: GoogleSignInIntegration
        motto.iam.user.v1.ListUsersResponse:
            type: object
            properties:
                users:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.iam.user.v1.User'
                next_page_token:
                    type: string
                summary:
                    allOf:
                        - $ref: '#/components/schemas/motto.iam.user.v1.ListUsersResponse_Summary'
                    description: Summary about the response. This always matches the filter criteria of the request, but ignores pagination.
        motto.iam.user.v1.ListUsersResponse_Summary:
            type: object
            properties:
                total_count:
                    type: integer
                    description: Total number of users matching the request.
                    format: int32
        motto.iam.user.v1.OIDCIntegration:
            required:
                - project_id
                - provider_name
                - issuer_url
                - client_id
                - client_secret
            type: object
            properties:
                project_id:
                    type: string
                    description: The Motto project to which this integration belongs.
                provider_name:
                    type: string
                    description: Human-readable name for this provider (e.g., "Corporate SSO").
                issuer_url:
                    type: string
                    description: The OIDC issuer URL (e.g., "https://login.example.com").
                client_id:
                    type: string
                    description: The OAuth 2.0 client ID.
                client_secret:
                    type: string
                    description: The OAuth 2.0 client secret. Should only be set when the response type is `OIDC_RESPONSE_TYPE_CODE`.
                scopes:
                    type: array
                    items:
                        type: string
                    description: |-
                        The scopes to request from the provider (e.g., ["openid", "profile", "email"]). Defaults to ["openid", "profile", "email"] if not set.
                         This must include "openid" to function correctly.
                response_type:
                    enum:
                        - OIDC_RESPONSE_TYPE_UNSPECIFIED
                        - OIDC_RESPONSE_TYPE_ID_TOKEN
                        - OIDC_RESPONSE_TYPE_CODE
                    type: string
                    description: The OAuth 2.0 response type. Defaults to `OIDC_RESPONSE_TYPE_TOKEN` if not set.
                    format: enum
                user_id_claim:
                    type: string
                    description: The claim from the ID token to use as the user ID (e.g., "sub"). If not set, defaults to "sub".
                email_claim:
                    type: string
                    description: The claim from the ID token to use as the user's email (e.g., "email"). If not set, defaults to "email".
                name_claim:
                    type: string
                    description: The claim from the ID token to use as the user's name (e.g., "name"). If not set, defaults to "name".
                additional_claims:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        Additional claims to extract. Currently, these claims are supported as keys in this map:
                         - `picture`: URL to the user's profile picture.

                         Provide the claim name as the value in the map. For example, if your OIDC provider uses `profile_image_url`
                         as the claim for the user's profile picture, set the map entry to `{"picture": "profile_image_url"}`
                role_claims:
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/motto.iam.user.v1.OIDCRoleConfig'
                    description: |-
                        The mapping of Motto roles to OIDC role claims. Each key is a Motto role name, and the value is a OIDCRoleConfig
                         that specifies which claim to check and what values correspond to that role.

                         Currently, these Motto roles are supported:
                         `user`: Regular user role. This is the default and you do not have to set a configuration for it.
                         `tester`: Tester role (useful for entering payment flows in a sandbox environment rather than the production one).
                         `vip`: VIP role (useful for bypassing content restrictions).
                is_enabled:
                    type: boolean
                    description: Whether this OIDC integration is enabled.
                provider:
                    enum:
                        - OIDC_PROVIDER_UNSPECIFIED
                        - OIDC_PROVIDER_AWS_COGNITO
                        - OIDC_PROVIDER_AUTH0
                        - OIDC_PROVIDER_GOOGLE_IDENTITY
                        - OIDC_PROVIDER_AZURE_AD
                        - OIDC_PROVIDER_KINDE
                        - OIDC_PROVIDER_KEYCLOAK
                        - OIDC_PROVIDER_CUSTOM
                    type: string
                    description: The predefined OIDC provider type. This is used to apply provider-specific defaults and optimizations where possible.
                    format: enum
                manage_account_url:
                    type: string
                    description: |-
                        The URL where users can manage their account with the OIDC provider (e.g., to change their password).
                         To include the user's locale in the URL, use the placeholder `{locale}` which will be replaced with the user's locale code.
                         All other parameters that should be included must be already present in the URL you provide (Motto will not add any).
            description: OIDCIntegration represents an OpenID Connect identity provider configuration.
        motto.iam.user.v1.OIDCRoleConfig:
            type: object
            properties:
                name_claim:
                    type: string
                    description: The claim name to check for role assignment.
                values:
                    type: array
                    items:
                        type: string
                    description: The values in the claim that correspond to this role.
        motto.iam.user.v1.UpdateAppleSignInIntegrationResponse:
            type: object
            properties:
                integration:
                    $ref: '#/components/schemas/motto.iam.user.v1.AppleSignInIntegration'
        motto.iam.user.v1.UpdateGoogleSignInIntegrationResponse:
            type: object
            properties:
                integration:
                    $ref: '#/components/schemas/motto.iam.user.v1.GoogleSignInIntegration'
        motto.iam.user.v1.UpdateOIDCIntegrationResponse:
            type: object
            properties:
                integration:
                    $ref: '#/components/schemas/motto.iam.user.v1.OIDCIntegration'
        motto.iam.user.v1.UpdateUserResponse:
            type: object
            properties:
                user:
                    $ref: '#/components/schemas/motto.iam.user.v1.User'
        motto.iam.user.v1.User:
            required:
                - project_id
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: Unique identifier of this user.
                project_id:
                    type: string
                    description: The project to which this user belongs.
                given_name:
                    type: string
                    description: Given name
                family_name:
                    type: string
                    description: Family name
                email:
                    type: string
                    description: Email address.
                phone_number:
                    type: string
                    description: Phone number.
                profile_image_url:
                    type: string
                    description: Profile picture URL.
                role:
                    enum:
                        - ROLE_UNSPECIFIED
                        - ROLE_DEFAULT
                        - ROLE_TESTER
                        - ROLE_VIP
                    type: string
                    description: Role of the user.
                    format: enum
                oidc_user_id:
                    readOnly: true
                    type: string
                    description: If the user was created via OIDC, this will contain the OIDC user ID.
            description: |-
                A user represents someone that wants to identify themselves within the Motto Content Delivery API.
                 Important: not to be confused with `Account` which is an account of the Motto Studio API.

                 Important: this will be a partial object if the User was registered via OIDC, since such PII is not stored in Motto.
        motto.integration.spiideo.v1.BatchGetSpiideoEventMappingsResponse:
            type: object
            properties:
                event_mappings:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoEventMapping'
        motto.integration.spiideo.v1.CreateSpiideoEntityMappingResponse:
            type: object
            properties:
                entity_mapping:
                    $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoEntityMapping'
        motto.integration.spiideo.v1.CreateSpiideoEventTypeMappingResponse:
            type: object
            properties:
                event_type_mapping:
                    $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoEventTypeMapping'
        motto.integration.spiideo.v1.CreateSpiideoIntegrationResponse:
            type: object
            properties:
                integration:
                    $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoIntegration'
        motto.integration.spiideo.v1.CreateSpiideoPlayerTypeMappingResponse:
            type: object
            properties:
                player_type_mapping:
                    $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoPlayerTypeMapping'
        motto.integration.spiideo.v1.CreateSpiideoSportConfigurationResponse:
            type: object
            properties:
                sport_configuration:
                    $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoSportConfiguration'
        motto.integration.spiideo.v1.CreateSpiideoTeamTypeMappingResponse:
            type: object
            properties:
                team_type_mapping:
                    $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoTeamTypeMapping'
        motto.integration.spiideo.v1.DeleteSpiideoEntityMappingResponse:
            type: object
            properties: {}
        motto.integration.spiideo.v1.DeleteSpiideoEventTypeMappingResponse:
            type: object
            properties: {}
        motto.integration.spiideo.v1.DeleteSpiideoIntegrationResponse:
            type: object
            properties: {}
        motto.integration.spiideo.v1.DeleteSpiideoPlayerTypeMappingResponse:
            type: object
            properties: {}
        motto.integration.spiideo.v1.DeleteSpiideoSportConfigurationResponse:
            type: object
            properties: {}
        motto.integration.spiideo.v1.DeleteSpiideoTeamTypeMappingResponse:
            type: object
            properties: {}
        motto.integration.spiideo.v1.GetSpiideoIntegrationResponse:
            type: object
            properties:
                integration:
                    $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoIntegration'
        motto.integration.spiideo.v1.ListSpiideoEntityMappingsResponse:
            type: object
            properties:
                entity_mappings:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoEntityMapping'
                next_page_token:
                    type: string
        motto.integration.spiideo.v1.ListSpiideoEventTypeMappingsResponse:
            type: object
            properties:
                event_type_mappings:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoEventTypeMapping'
                next_page_token:
                    type: string
        motto.integration.spiideo.v1.ListSpiideoPlayerTypeMappingsResponse:
            type: object
            properties:
                player_type_mappings:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoPlayerTypeMapping'
                next_page_token:
                    type: string
        motto.integration.spiideo.v1.ListSpiideoSportConfigurationsResponse:
            type: object
            properties:
                sport_configurations:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoSportConfiguration'
                next_page_token:
                    type: string
        motto.integration.spiideo.v1.ListSpiideoTeamTypeMappingsResponse:
            type: object
            properties:
                team_type_mappings:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoTeamTypeMapping'
                next_page_token:
                    type: string
        motto.integration.spiideo.v1.SpiideoEntityMapping:
            required:
                - motto_entity_id
                - motto_entity_type
                - spiideo_object_id
                - spiideo_object_type
            type: object
            properties:
                motto_entity_id:
                    type: string
                    description: The ID of the Motto entity.
                motto_entity_type:
                    type: string
                    description: The type of the Motto entity.
                spiideo_object_id:
                    type: string
                    description: |-
                        The ID of the Spiideo object.
                         In the case of sports, this is the enum value of the sport in Spiideo, e.g. "football" or "basketball".
                spiideo_object_type:
                    enum:
                        - SPIIDEO_OBJECT_TYPE_UNSPECIFIED
                        - SPIIDEO_OBJECT_TYPE_TEAM
                        - SPIIDEO_OBJECT_TYPE_SPORT
                        - SPIIDEO_OBJECT_TYPE_PLAYER
                        - SPIIDEO_OBJECT_TYPE_SCENE
                        - SPIIDEO_OBJECT_TYPE_COMPETITION_SERIES
                        - SPIIDEO_OBJECT_TYPE_COMPETITION
                    type: string
                    description: The type of the Spiideo object.
                    format: enum
                description:
                    type: string
                    description: |-
                        A description of the mapping. This is for informational purposes only and does not affect the functionality.
                         This can be the name of the team or player in Motto, or any other relevant information that helps identify the mapping.
            description: |-
                Maps a Motto entity to a Spiideo object. Such a mapping must exist for any entity that is to be used in Spiideo-related operations,
                 otherwise no automatic API integration can be performed when creating Spiideo games.
        motto.integration.spiideo.v1.SpiideoEventMapping:
            type: object
            properties:
                motto_event_id:
                    type: string
                    description: The ID of the Motto event.
                spiideo_game_id:
                    type: string
                    description: The ID of the Spiideo game.
                spiideo_event_id:
                    type: string
                    description: The ID of the Spiideo event fixture. This is only present when `sync_fixtures` is enabled.
            description: Defines the relationship between a Motto event and a Spiideo game.
        motto.integration.spiideo.v1.SpiideoEventTypeMapping:
            required:
                - motto_event_type
                - home_team_field
                - away_team_field
                - scene_field
                - home_color_field
                - away_color_field
                - description_field
            type: object
            properties:
                motto_event_type:
                    type: string
                    description: The Motto event type this mapping applies to.
                home_team_field:
                    type: string
                    description: |-
                        Field name on the Motto event type that maps to the home team.
                         This has to be an entity reference.
                         E.g. `fields.home_team`
                away_team_field:
                    type: string
                    description: |-
                        Field name on the Motto event type that maps to the away team.
                         This has to be an entity reference.
                         E.g. `fields.away_team`
                scene_field:
                    type: string
                    description: |-
                        Field name on the Motto event type that maps to the scene/venue.
                         This has to be an entity reference.
                         E.g. `fields.stadium` or `fields.venue`
                sport_field:
                    type: string
                    description: |-
                        Field name on the Motto event type that maps to the sport.
                         This has to be an entity reference OR if it matches exactly the Spiideo sport enum values, a string field,
                         E.g. `fields.sport` (which may be an entity reference)
                         E.g. `fields.sport_type` (which may be resolve to a string field with values like "football", "basketball", etc.)
                         E.g. `football` (a hard-coded string field, instead of a resolvable field keypath).

                         If not set, there are two alternative ways to indicate which sport should be used when an event of this type is created:
                         1. The Spiideo sport configured on the TeamTypeMapping. This means the sport will be taken from the home team on the event.
                         2. The Spiideo sport configured on the SpiideoIntegration. This is a last resort, if no other sport can be determined.
                home_color_field:
                    type: string
                    description: |-
                        Field name on the Motto event type that maps to the home team color.
                         This has to be a string field that contains a color value, e.g. "#FF0000" for red.
                        E.g. `fields.home_color`
                away_color_field:
                    type: string
                    description: |-
                        Field name on the Motto event type that maps to the away team color.
                         This has to be a string field that contains a color value, e.g. "#0000FF" for blue.
                         E.g. `fields.away_color`
                description_field:
                    type: string
                    description: |-
                        Field name on the Motto event that maps to the Spiideo game description, which shows above the scoreboard in the Spiideo streams.
                         This must be an entity reference OR a string field.
                         E.g. `fields.competition` (in which case the name of the referenced competition will be the description)
                         E.g. `description` or `fields.some_custom_description` (in which case the value of the field will be the description)
                spiideo_graphic_package_id:
                    type: string
                    description: |-
                        The Spiideo graphic package ID to use for any Spiideo game object created for this event type.
                         Required, unless using the production recipe ID.
                spiideo_storyboard_id:
                    type: string
                    description: |-
                        The Spiideo storyboard ID to use for any Spiideo game object created for this event type.
                         Required, unless using the production recipe ID.
                spiideo_production_recipe_id:
                    type: string
                    description: |-
                        The Spiideo production recipe ID to use for any Spiideo game object created for this event type.
                         Required, unless using the graphic package ID and storyboard ID.
                home_starting_lineup_field:
                    type: string
                    description: |-
                        Field name on the Motto event type that maps to the starting lineup of the home team.
                         This has to be a repeated entity reference to player entities.
                         E.g. `fields.home_starting_players`

                         If not set, no Spiideo participants will be created for the home team of games of this event type.
                home_bench_lineup_field:
                    type: string
                    description: |-
                        Field name on the Motto event type that maps to the bench (substitute) players of the home team.
                         This has to be a repeated entity reference to player entities.
                         E.g. `fields.home_bench_players`
                away_starting_lineup_field:
                    type: string
                    description: |-
                        Field name on the Motto event type that maps to the starting lineup of the away team.
                         This has to be a repeated entity reference to player entities.
                         E.g. `fields.away_starting_players`

                         If not set, no Spiideo participants will be created for the away team of games of this event type.
                away_bench_lineup_field:
                    type: string
                    description: |-
                        Field name on the Motto event type that maps to the bench (substitute) players of the away team.
                         This has to be a repeated entity reference to player entities.
                         E.g. `fields.away_bench_players`
                lineup_number_field:
                    type: string
                    description: |-
                        The name of the additional field within each lineup entity reference that holds the player's jersey number.
                         E.g. `jersey_number`, in which case each entry of a lineup field is expected to look like
                         `{"base_type":"entity","id":"<player entity id>","jersey_number":"8","type_id":"player"}`.

                         If not set, no jersey numbers will be set on the Spiideo participants.
                competition_field:
                    type: string
                    description: |-
                        Field name on the Motto event type that maps to the competition (one season of a competition series) the event belongs to.
                         This has to be an entity reference to an entity that is mapped to a Spiideo competition.
                         E.g. `fields.season` or `fields.competition`

                         If not set, no Spiideo event (fixture) will be created for games of this event type, even when `sync_fixtures` is enabled
                         on the SpiideoIntegration.
            description: SpiideoEventTypeMapping maps a Motto event type to Spiideo event properties.
        motto.integration.spiideo.v1.SpiideoIntegration:
            required:
                - project_id
                - account_id
                - user_id
                - client_id
                - client_secret
            type: object
            properties:
                project_id:
                    type: string
                    description: The Motto project to which this integration belongs
                account_id:
                    type: string
                    description: The Spiideo account ID in which Spiideo game objects are created.
                metadata_account_id:
                    type: string
                    description: |-
                        The Spiideo account ID in which metadata objects (teams, players, competition series, competitions and event
                         fixtures) are created. If not set, `account_id` is used for these as well.
                user_id:
                    type: string
                    description: The Spiideo user ID.
                client_id:
                    type: string
                    description: The Spiideo client ID.
                client_secret:
                    type: string
                    description: The Spiideo client secret.
                default_minutes_before_start:
                    type: string
                    description: The default number of minutes before the start of a game to turn on the camera. If not set, a default value will be used.
                default_duration_minutes:
                    type: string
                    description: The default duration in minutes for which the camera should be on. If not set, a default value will be used.
                default_spiideo_sport:
                    type: string
                    description: |-
                        The default Spiideo sport to use when creating games. This should match the enum values in Spiideo, e.g. "football", "basketball", etc.
                         This is used when the sport cannot be determined from the event type (via the event type mapping).
                sync_teams:
                    type: boolean
                    description: |-
                        Whether to create teams in Spiideo based on Motto teams if they do not exist, or update them if they do.
                         If false, you must manually provide the mapping between Motto teams and Spiideo teams, and keep it up to date. In this case,
                         when trying to create a Spiideo game and there is no mapping for a team, the operation will fail.
                         Defaults to false.
                sync_players:
                    type: boolean
                    description: |-
                        Whether to create players in Spiideo based on Motto players if they do not exist, or update them if they do.
                         If false, you must manually provide the mapping between Motto players and Spiideo players, and keep it up to date. In this case,
                         when trying to create a Spiideo game and there is no mapping for a player, the player will not be used as a
                         TeamMember in the Spiideo game.
                sync_fixtures:
                    type: boolean
                    description: |-
                        Whether to create competition series, competitions and event fixtures in Spiideo based.
                         This is not needed for a functional Spiideo Play integration, but is needed for additional Spiideo services to work.
                locale:
                    type: string
                    description: |-
                        The locale you would like to use for the objects being created in Spiideo. You must make sure this locale is also
                         supported within your existing Motto project (on events, teams and players). If it does not, it will fallback to
                         non-localized values.

                         The format should be the language code, e.g. "en", "de", "fr", etc, optionally followed by a region code, e.g. "en-US", "en-GB", etc.
                enabled:
                    type: boolean
                    description: |-
                        Whether the integration is enabled. If false, no Spiideo-related operations will be performed. You can still
                         create entity mappings and update event type mappings, but they will not be used until the integration is enabled.
                share_with_account_ids:
                    type: array
                    items:
                        type: string
                    description: |-
                        When a game is created, it can be shared with other accounts in Spiideo automatically.
                         This field contains the list of account IDs
                         with which the game should be shared.
                stream_unlisted_events:
                    type: boolean
                    description: |-
                        Whether to stream unlisted events in Spiideo. If false, unlisted events will be not be connected to Spiideo, and
                         events that were previously published will be deleted from Spiideo once they become unlisted.
                         Defaults to false.
                schedule_ahead_days:
                    type: string
                    description: |-
                        The number of days to look forwards in time to schedule games in Spiideo.
                         For example, if this is set to 7, the integration will only schedule Motto events in Spiideo that are happening within the next 7 days.
                         If it's further out, the integration will not schedule them until they are within the next 7 days.
                         If not set, a reasonable default amount of days will be used.
            description: SpiideoIntegration
        motto.integration.spiideo.v1.SpiideoPlayerTypeMapping:
            required:
                - motto_entity_type
                - position_field
            type: object
            properties:
                motto_entity_type:
                    type: string
                    description: The Motto entity type this mapping applies to.
                position_field:
                    type: string
                    description: |-
                        Field name on the Motto entity type that maps to the position(s) of the player.
                         This has to be an entity reference OR a string. It may contain multiple values.
                         E.g. `fields.positions`.
                position_field_gk_values:
                    type: array
                    items:
                        type: string
                    description: |-
                        The values that the `position_field` may resolve to that indicate that this player is a goalkeeper.
                         E.g. if `fields.positions` is a string field on the Motto entity type, this may be `["gk","goalkeeper"]`.
                         E.g. if `fields.positions` is an entity reference on the Motto entity type, this may be `["f843fladfj94alfda9"]`,
                         where the id is of an entity of some Motto entity type that represents player positions (with this one representing
                         the goalkeeper entity).
                birth_date_field:
                    type: string
                    description: |-
                        Field name on the Motto entity type that maps to the birth date of the player.
                         This has to be a string field holding either a date (`yyyy-mm-dd`) or a full timestamp
                         (e.g. `2007-08-13T00:00:00Z`), of which only the date part is used.
                         E.g. `fields.birth_date`

                         If not set, no birth date will be set on the Spiideo player.
                nationality_field:
                    type: string
                    description: |-
                        Field name on the Motto entity type that maps to the nationality of the player.
                         This has to be a string field holding an ISO 3166-1 country code, either alpha-2 (e.g. `SE`) or
                         alpha-3 (e.g. `SWE`).
                         E.g. `fields.nationality`

                         If not set, no nationality will be set on the Spiideo player.
            description: SpiideoPlayerTypeMapping maps a Motto entity type to Spiideo player properties.
        motto.integration.spiideo.v1.SpiideoSportConfiguration:
            required:
                - spiideo_sport
                - minutes_before_start
                - duration_minutes
            type: object
            properties:
                spiideo_sport:
                    type: string
                    description: |-
                        The Spiideo sport this configuration applies to.
                         This should match the enum values in Spiideo, e.g. "football", "basketball", etc.
                minutes_before_start:
                    type: string
                    description: |-
                        The number of minutes before the start of a game to turn on the camera for this sport.
                         This will override the default minutes before start configured on the SpiideoIntegration.
                duration_minutes:
                    type: string
                    description: |-
                        The duration in minutes for which the camera should be on for this sport.
                         This will override the default duration configured on the SpiideoIntegration.
            description: SpiideoSportConfiguration defines sport-specific configuration for Spiideo integrations.
        motto.integration.spiideo.v1.SpiideoTeamTypeMapping:
            required:
                - motto_entity_type
            type: object
            properties:
                motto_entity_type:
                    type: string
                    description: The Motto entity type this mapping applies to.
                sport_field:
                    type: string
                    description: |-
                        Field name on the Motto entity type that maps to the sport.
                         This has to be an entity reference OR if it matches exactly the Spiideo sport enum values, a string field,
                         E.g. `fields.sport` (which may be an entity reference)
                         E.g. `fields.sport_type` (which may be resolve to a string field with values like "football", "basketball", etc.)
                         E.g. `football` (a hard-coded string field, instead of a resolvable field keypath).

                         If not set, the default Spiideo sport will be used, as it's configured on the SpiideoIntegration.
                abbreviation_field:
                    type: string
                    description: |-
                        Field name on the Motto entity type that maps to the abbreviation.
                         This has to be a string field that contains the abbreviated name.
                         E.g. `fields.abbreviation` or `fields.short_name`

                         If not set, an abbreviation will be generated based on the name of the team.
            description: SpiideoTeamTypeMapping maps a Motto entity type to Spiideo team properties.
        motto.integration.spiideo.v1.UpdateSpiideoIntegrationResponse:
            type: object
            properties:
                integration:
                    $ref: '#/components/schemas/motto.integration.spiideo.v1.SpiideoIntegration'
        motto.integration.subscription.v1.CreateSubscriptionResponse:
            type: object
            properties:
                subscription:
                    $ref: '#/components/schemas/motto.integration.subscription.v1.Subscription'
        motto.integration.subscription.v1.DeleteSubscriptionResponse:
            type: object
            properties: {}
        motto.integration.subscription.v1.GetSubscriptionResponse:
            type: object
            properties:
                subscription:
                    $ref: '#/components/schemas/motto.integration.subscription.v1.Subscription'
        motto.integration.subscription.v1.ListSubscriptionsResponse:
            type: object
            properties:
                subscriptions:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.integration.subscription.v1.Subscription'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next subscription results.
                         An empty value means no more results
        motto.integration.subscription.v1.ListTopicsResponse:
            type: object
            properties:
                topics:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.integration.subscription.v1.Topic'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next subscription results.
                         An empty value means no more results
        motto.integration.subscription.v1.Subscription:
            required:
                - project_id
                - name
                - topic_id
                - https_url
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: System generated identifier for the platform.
                project_id:
                    type: string
                name:
                    type: string
                    description: Name of the subscription. This is used for easy, human readable identification of the subscription.
                topic_id:
                    type: string
                    description: The topic that updates should be sent for.
                filter:
                    type: string
                    description: |-
                        Filter the updates using a subset of the Kibana Query Language.
                         The field names that you use in your filter must exactly match the field names on the object that you are filtering.
                         There are some limitations to the filters that you can use:
                         1. Filters can only be on top-level fields that are included in the `filterable_fields` property of the topic.
                         2. Filters cannot be on fields that are an array or dictionary.
                         3. Filters only support `AND` clauses (not `OR`).

                         If you do not provide any filter, all updates on the topic will be sent to the target.

                         Some examples:
                         - If you are interested in all updates on an asset with `id` of `1234`, you can use `id:1234`.
                         - If you are interested in all updates on an asset with `id` of `1234` and `type` of `ASSET_TYPE_VIDEO` (which is an enum),
                           you can use `id:1234 AND type:ASSET_TYPE_VIDEO`.
                         - If you are interested in all updates on an entity with type `team` and `name` of `Barcelona`, you can use
                           `type:team AND name:Barcelona`.
                         - If you are interested in all updates where a field value is after a certain date or time, you can use `field_name>"2006-01-02 15:04:05"` (in that specific format, specified in UTC).

                         If a filter cannot be parsed or is invalid, the subscription may still pass initial validation but will then be ignored at run-time, meaning you will not receive any updates as they come through.
                         Be sure to test your filters before relying on them in a production environment.
                https_url:
                    type: string
                    description: URL to which the events should be sent.
                delete_after_use:
                    type: boolean
                    description: |-
                        If true, the subscription will be deleted after the first use. This is useful for cases where the the callback
                         is meant to update the state change of a single resource, e.g. to continue a workflow when a dependent resource is
                         ready.
            description: |-
                Subscription is used to define which events of the relevant topics should be sent to the callback URL.
                 Limitations:
                 1. This is only forward-looking, meaning that only events that occur after the subscription is created will be sent to the target.
                 2. There may only be two (2) subscriptions per topic, unless the subscription filter specifies a specific `id` field OR `delete_after_use` is set to true.
                 3. Delivery is not guaranteed; message delivery will be retried when encountering a non-2xx response, but if there are multiple subscriptions for the same topic and one subscription successfully received the message, it will not be redelivered to the others.
        motto.integration.subscription.v1.Topic:
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: Human-readable, unique identifier for this topic.
                filterable_fields:
                    readOnly: true
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.integration.subscription.v1.TopicField'
                    description: |-
                        The field names that are allowed to be included in the filter parameter on a subscription.

                         Note: subscriptions are always in the context of a `project_id`, so `project_id` does not have to be included here.
        motto.integration.subscription.v1.TopicField:
            type: object
            properties:
                field:
                    type: string
                    description: The name of this field, e.g. `id`, `name` or `start_time`
                primary_key:
                    type: boolean
                    description: Whether this is the primary index field of this topic. This is typically the `id` field.
                field_type:
                    enum:
                        - TOPIC_FIELD_TYPE_UNSPECIFIED
                        - TOPIC_FIELD_TYPE_STRING
                        - TOPIC_FIELD_TYPE_NUMBER
                        - TOPIC_FIELD_TYPE_BOOLEAN
                        - TOPIC_FIELD_TYPE_DATETIME
                    type: string
                    description: The type of this field. This is used to determine how to filter on this field when applying range operators.
                    format: enum
        motto.integration.subscription.v1.UpdateSubscriptionRequest:
            required:
                - subscription_id
                - subscription
                - update_mask
            type: object
            properties:
                subscription_id:
                    type: string
                subscription:
                    $ref: '#/components/schemas/motto.integration.subscription.v1.Subscription'
                update_mask:
                    type: string
                    format: field-mask
        motto.integration.subscription.v1.UpdateSubscriptionResponse:
            type: object
            properties:
                subscription:
                    $ref: '#/components/schemas/motto.integration.subscription.v1.Subscription'
        motto.monetization.ads.v1.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.monetization.ads.v1.CreateSponsorshipCollectionResponse:
            type: object
            properties:
                sponsorship_collection:
                    $ref: '#/components/schemas/motto.monetization.ads.v1.SponsorshipCollection'
        motto.monetization.ads.v1.CreateVideoAdResponse:
            type: object
            properties:
                video_ad:
                    $ref: '#/components/schemas/motto.monetization.ads.v1.VideoAd'
        motto.monetization.ads.v1.DeleteSponsorshipCollectionResponse:
            type: object
            properties: {}
        motto.monetization.ads.v1.DeleteVideoAdResponse:
            type: object
            properties: {}
        motto.monetization.ads.v1.FilterTarget:
            type: object
            properties:
                filter_events:
                    type: string
                    description: |-
                        The filter to apply to the events that should be targeted. To test your filter, you can use the `ListEvents` API
                         on the CMS to see which results it includes.

                         Important: an empty string means NO events are included (unlike in `ListEvents` API, where it includes all events).
                         To target all events, pass the string `true`.
                filter_creative_works:
                    type: string
                    description: |-
                        The filter to apply to the creative works that should be targeted. To test your filter, you can use the `ListCreativeWorks` API
                         on the CMS to see which results it includes.

                         Important: an empty string means NO creative works are included (unlike in `ListCreativeWorks` API, where it includes all events).
                         To target all creative works, pass the string `true`.
        motto.monetization.ads.v1.GetSponsorshipCollectionResponse:
            type: object
            properties:
                sponsorship_collection:
                    $ref: '#/components/schemas/motto.monetization.ads.v1.SponsorshipCollection'
        motto.monetization.ads.v1.GetVideoAdResponse:
            type: object
            properties:
                video_ad:
                    $ref: '#/components/schemas/motto.monetization.ads.v1.VideoAd'
        motto.monetization.ads.v1.ListSponsorshipCollectionsResponse:
            type: object
            properties:
                sponsorship_collections:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.monetization.ads.v1.SponsorshipCollection'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.monetization.ads.v1.ListVideoAdsResponse:
            type: object
            properties:
                video_ads:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.monetization.ads.v1.VideoAd'
                next_page_token:
                    type: string
                    description: |-
                        If there are more results than have been returned, then this field is set
                         to a non-empty value.  To see the additional results,
                         use that value as `page_token` in the next call to this method.
        motto.monetization.ads.v1.SponsorshipCollection:
            required:
                - id
                - project_id
                - name
            type: object
            properties:
                id:
                    type: string
                    description: A unique identifier for the sponsorship collection. This can be set manually, or auto-generated if left empty.
                project_id:
                    type: string
                name:
                    type: string
                    description: A name for visual identification within the management UI. Does not appear towards end users.
                slots:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.monetization.ads.v1.SponsorshipSlot'
                    description: |-
                        A list of sponsorship slots that should be included in this sponsorship collection.
                         The order of this list determines the order in which the sponsorship slots are displayed towards end users.
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    format: enum
            description: SponsorshipCollection represents a collection of sponsorship slots that can be displayed in one of various layouts on an end-user facing web/app page.
        motto.monetization.ads.v1.SponsorshipSlot:
            type: object
            properties:
                asset_id:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of either an image assets. The key is the language code (ISO 639 - set 1), e.g. "en", "de", "fr", etc.
                         If you want to localize the assets 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.
                destination_url:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized destination URLs. The key is the language code (ISO 639 - set 1), e.g. "en", "de", "fr", etc.
                         If you want to localize the URL 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.
            description: Sponsorship slot represents a single sponsorship image that can be displayed on an end-user facing web/app page.
        motto.monetization.ads.v1.Target:
            type: object
            properties:
                entity_ids:
                    type: array
                    items:
                        type: string
                    description: The entities with which this video ad is associated. If provided, all videos that are associated with these entities will be included in the video ad.
                event_ids:
                    type: array
                    items:
                        type: string
                    description: The events with which this video ad is associated. If provided, all videos that are associated with these events will be included in the video ad.
                creative_work_ids:
                    type: array
                    items:
                        type: string
                    description: The creative works with which this video ad is associated. If provided, all videos that are associated with these creative works will be included in the video ad.
                content_start_time:
                    type: string
                    description: |-
                        Any content defined by `entity_ids`, `event_ids` and `creative_work_ids` after `content_start_time` will be considered as part of the video ad (as long as it is before `content_end_time`).
                         If not provided, there is no lower time bound on the content.
                    format: date-time
                content_end_time:
                    type: string
                    description: |-
                        Any content defined by `entity_ids`, `event_ids` and `creative_work_ids` before `content_end_time` will be considered as part of the video ad (as long as it is after `content_start_time`).
                         If not provided, there is no upper time bound on the content.
                    format: date-time
                video_ids:
                    type: array
                    items:
                        type: string
                    description: |-
                        The video IDs of the videos that are associated with this video ad.
                         It is recommended to only use this when the videos are not associated with an event/creative work, or the event/creative work it is associated with
                         has other videos with deviating configurations.
        motto.monetization.ads.v1.UpdateSponsorshipCollectionRequest:
            required:
                - sponsorship_collection_id
                - project_id
            type: object
            properties:
                sponsorship_collection_id:
                    type: string
                project_id:
                    type: string
                sponsorship_collection:
                    $ref: '#/components/schemas/motto.monetization.ads.v1.SponsorshipCollection'
                update_mask:
                    type: string
                    format: field-mask
        motto.monetization.ads.v1.UpdateSponsorshipCollectionResponse:
            type: object
            properties:
                sponsorship_collection:
                    $ref: '#/components/schemas/motto.monetization.ads.v1.SponsorshipCollection'
        motto.monetization.ads.v1.UpdateVideoAdRequest:
            required:
                - video_ad_id
            type: object
            properties:
                video_ad_id:
                    type: string
                video_ad:
                    $ref: '#/components/schemas/motto.monetization.ads.v1.VideoAd'
                update_mask:
                    type: string
                    format: field-mask
        motto.monetization.ads.v1.UpdateVideoAdResponse:
            type: object
            properties:
                video_ad:
                    $ref: '#/components/schemas/motto.monetization.ads.v1.VideoAd'
        motto.monetization.ads.v1.VideoAd:
            required:
                - project_id
                - name
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                project_id:
                    type: string
                    description: The ID of the project that the ad belongs to.
                name:
                    type: string
                    description: Name of the video ad
                ad_manifest:
                    allOf:
                        - $ref: '#/components/schemas/motto.monetization.ads.v1.VideoAdManifest'
                    description: |-
                        The necessary parameters to generate a manifest (for a VAST or VMAP) to be used for this video ad.

                        Important: at most one of `ad_manifest`, `ad_tag_url` may be set per request.
                ad_tag_url:
                    type: string
                    description: |-
                        A third-party hosted ad tag URL to be used for this video ad. This is typically a VAST or VMAP tag in
                         Google Ad Manager or similar.

                        Important: at most one of `ad_manifest`, `ad_tag_url` may be set per request.
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    description: Visibility settings for the video ad. When not set to published, the ad will not be shown to end users.
                    format: enum
                geo_applicability_exempt:
                    allOf:
                        - $ref: '#/components/schemas/motto.monetization.ads.v1.CountryCodes'
                    description: |-
                        Viewers from these countries will not have this video ad shown.

                        Important: at most one of `geo_applicability_exempt`, `geo_applicability_apply` may be set per request.
                geo_applicability_apply:
                    allOf:
                        - $ref: '#/components/schemas/motto.monetization.ads.v1.CountryCodes'
                    description: |-
                        Viewers from these countries will have this video ad shown.

                        Important: at most one of `geo_applicability_exempt`, `geo_applicability_apply` may be set per request.
                applies_to_all:
                    type: boolean
                    description: |-
                        This video ad applies to all videos in the project.

                        Important: at most one of `applies_to_all`, `target`, `filter` may be set per request.
                target:
                    allOf:
                        - $ref: '#/components/schemas/motto.monetization.ads.v1.Target'
                    description: |-
                        This video ad applies to a specific set of videos, as defined by the target.

                        Important: at most one of `applies_to_all`, `target`, `filter` may be set per request.
                filter:
                    allOf:
                        - $ref: '#/components/schemas/motto.monetization.ads.v1.FilterTarget'
                    description: |-
                        This video ad applies to a complex set of events and creative works, as defined by the filter target.

                        Important: at most one of `applies_to_all`, `target`, `filter` may be set per request.
                priority:
                    type: string
                    description: The priority of the ad. If multiple ads apply to a video, the ad with the highest priority will be used.
        motto.monetization.ads.v1.VideoAdManifest:
            type: object
            properties:
                title:
                    type: string
                    description: The title of the video ad
                video_files:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.monetization.ads.v1.VideoAdManifest_VideoFile'
                    description: The media files for the video ad. At least one media file is required.
                aspect_ratio:
                    type: string
                    description: The aspect ratio of the video ad, e.g. "16:9". Defaults to "16:9" if not provided.
                duration_seconds:
                    type: integer
                    description: The total duration in seconds of the video ad
                    format: int32
                allow_skip_after_seconds:
                    type: integer
                    description: The number of seconds after which the ad can be skipped. Use 0 for non-skippable ads.
                    format: int32
                clickthrough_url:
                    type: string
                    description: The destination URL when the ad is clicked. Leave empty for no clickability.
                impression_tracking_url:
                    type: string
                    description: The URL to be pinged for impression tracking. Leave empty for no tracking.
                error_tracking_url:
                    type: string
                    description: The URL to be pinged for error tracking. Leave empty for no tracking.
            description: Complete VAST video ad manifest configuration
        motto.monetization.ads.v1.VideoAdManifest_VideoFile:
            type: object
            properties:
                quality:
                    enum:
                        - VIDEO_QUALITY_UNSPECIFIED
                        - VIDEO_QUALITY_240P
                        - VIDEO_QUALITY_480P
                        - VIDEO_QUALITY_720P
                        - VIDEO_QUALITY_1080P
                    type: string
                    format: enum
                config:
                    $ref: '#/components/schemas/motto.monetization.ads.v1.VideoAdManifest_VideoFileConfig'
        motto.monetization.ads.v1.VideoAdManifest_VideoFileConfig:
            type: object
            properties:
                asset_id:
                    type: string
                    description: A Motto-hosted asset ID for the video file (mp4)
        motto.monetization.cleeng.v1.CleengIntegration:
            required:
                - project_id
                - broadcaster_id
                - api_key
                - is_production
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: System generated identifier for the Cleeng integration.
                project_id:
                    type: string
                    description: The Motto project to which this integration belongs
                broadcaster_id:
                    type: string
                    description: The Cleeng broadcaster ID (sometimes called the Cleeng publisher ID)
                api_key:
                    type: string
                    description: The Cleeng API key (sometimes called the Cleeng publisher token)
                is_production:
                    type: boolean
                    description: Whether the integration is in production (true) or sandbox (false)
            description: CleengIntegration
        motto.monetization.cleeng.v1.CreateCleengIntegrationResponse:
            type: object
            properties:
                integration:
                    $ref: '#/components/schemas/motto.monetization.cleeng.v1.CleengIntegration'
        motto.monetization.cleeng.v1.DeleteCleengIntegrationResponse:
            type: object
            properties: {}
        motto.monetization.cleeng.v1.GetCleengIntegrationResponse:
            type: object
            properties:
                integration:
                    $ref: '#/components/schemas/motto.monetization.cleeng.v1.CleengIntegration'
        motto.monetization.cleeng.v1.ListCleengIntegrationsResponse:
            type: object
            properties:
                integrations:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.monetization.cleeng.v1.CleengIntegration'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.monetization.entitlement.v1.Entitlement:
            required:
                - user_id
                - project_id
                - offer_id
            type: object
            properties:
                user_id:
                    type: string
                    description: |-
                        The ID of the user who is entitled to access the content.
                         The user ID must be contained in the JWT token that the user authenticates with on the content-delivery API.
                project_id:
                    type: string
                offer_id:
                    type: string
                    description: The offer that the user is entitled to access. For more information, see `Offer`.
                expiration_time:
                    type: string
                    description: |-
                        The time at which the entitlement is no longer valid.
                         If not provided, the entitlement will not expire.
                    format: date-time
                source_type:
                    type: string
                    description: A string representing the type of the source of the entitlement. For example, `cleeng` or `motto`.
                source_id:
                    type: string
                    description: An identifier of the source of the entitlement. For example, the Cleeng transaction ID or the Motto transaction ID.
                concurrency_limit:
                    type: string
                    description: |-
                        The amount of devices that can concurrently view the content associated with this entitlement from a single account.
                         If not provided, there is no limit.
                         This typically refers to the number of devices that can concurrently view the content associated with the offer,
                         but may deviate in certain conditions (e.g. when the entitlement is created via this API and should have a different limit,
                         or when the offer's concurrency limit has changed since the original entitlement was created).
                origin_country_code:
                    type: string
                    description: |-
                        The two-character ISO 3166-1 alpha-2 country code of the country where the user obtained the entitlement.
                         This may be used to bypass geo-restrictions in certain conditions, e.g. when the user is traveling and is protected
                         by EU regulations (https://europa.eu/youreurope/citizens/consumers/internet-telecoms/access-online-content-abroad/index_en.htm).
                         If not provided, the entitlement will not be able to bypass geo-restrictions.
            description: Entitlements represent an end-users permission to access event or creative work content.
        motto.monetization.entitlement.v1.ListEntitlementsResponse:
            type: object
            properties:
                entitlements:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.monetization.entitlement.v1.Entitlement'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next entitlement results.
                         An empty value means no more results
        motto.monetization.entitlement.v1.UpsertEntitlementResponse:
            type: object
            properties:
                entitlement:
                    $ref: '#/components/schemas/motto.monetization.entitlement.v1.Entitlement'
        motto.monetization.offer.v1.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.monetization.offer.v1.CreateOfferResponse:
            type: object
            properties:
                offer:
                    $ref: '#/components/schemas/motto.monetization.offer.v1.Offer'
        motto.monetization.offer.v1.DeleteOfferResponse:
            type: object
            properties: {}
        motto.monetization.offer.v1.FilterTarget:
            type: object
            properties:
                filter_events:
                    type: string
                    description: |-
                        The filter to apply to the events that should be targeted. To test your filter, you can use the `ListEvents` API
                         on the CMS to see which results it includes.

                         Important: an empty string means NO events are included (unlike in `ListEvents` API, where it includes all events).
                         To target all events, pass the string `true`.
                filter_creative_works:
                    type: string
                    description: |-
                        The filter to apply to the creative works that should be targeted. To test your filter, you can use the `ListCreativeWorks` API
                         on the CMS to see which results it includes.

                         Important: an empty string means NO creative works are included (unlike in `ListCreativeWorks` API, where it includes all events).
                         To target all creative works, pass the string `true`.
        motto.monetization.offer.v1.GetOfferResponse:
            type: object
            properties:
                offer:
                    $ref: '#/components/schemas/motto.monetization.offer.v1.Offer'
        motto.monetization.offer.v1.ListOffersResponse:
            type: object
            properties:
                offers:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.monetization.offer.v1.Offer'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.monetization.offer.v1.Offer:
            required:
                - project_id
                - name
                - localized_title
                - localized_description
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: System generated identifier for the offer.
                project_id:
                    type: string
                name:
                    type: string
                    description: Name of the offer. This is an internal identifier and is not exposed to end users.
                cleeng_offer_id:
                    type: string
                applies_to_all:
                    type: boolean
                    description: |-
                        This offer applies to all videos in the project.

                        Important: at most one of `applies_to_all`, `target`, `filter` may be set per request.
                target:
                    allOf:
                        - $ref: '#/components/schemas/motto.monetization.offer.v1.Target'
                    description: |-
                        This offer applies to a specific set of videos, as defined by the target.

                        Important: at most one of `applies_to_all`, `target`, `filter` may be set per request.
                filter:
                    allOf:
                        - $ref: '#/components/schemas/motto.monetization.offer.v1.FilterTarget'
                    description: |-
                        This offer applies to a complex set of events and creative works, as defined by the filter target.

                        Important: at most one of `applies_to_all`, `target`, `filter` may be set per request.
                localized_title:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized titles for this offer.
                         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.
                localized_description:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized descriptions for this offer.
                         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.
                localized_logo_asset_id:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized logos for this offer. These should be small images with a transparent background.
                         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.
                         If not all languages are provided, the default language will be used.
                localized_image_asset_id:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized images for this offer. These should be large, visually attractive images.
                         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.
                         If not all languages are provided, the default language will be used.
                offer_prices:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.monetization.offer.v1.OfferPrice'
                    description: |-
                        An array of PriceOffers. When external_id is provided, pricing details are managed
                         through a third-party system and this field should be empty.
                priority:
                    type: string
                    description: The priority of the offer. Offers with higher priority will be shown first to the end user.
                concurrency_limit:
                    type: string
                    description: |-
                        The amount of devices that can concurrently view the content associated with this offer from a single account.
                         If not provided, there is no limit.
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    description: The visibility of the offer to end-users.
                    format: enum
                video_protection_ruleset_id:
                    type: string
                    description: |-
                        Optional. If there is a video protection ruleset that should be kept in sync with this offer, the ID of that ruleset can be provided here.
                         This can be used to update the applicability of the ruleset when the `applies_to` field of the offer is updated.
                         This is primarily useful to ensure that authentication and entitlement rules are enforced for content that sits in this offer.

                         Note: the backend will NOT automatically apply these changes to the video protection ruleset.
                         It is up to the client to apply the appropriate changes, using this field as a reference.
            description: Offer represents a collection of video content that end users can purchase. This can be used e.g. to define `Entitlement`s against.
        motto.monetization.offer.v1.OfferPrice:
            required:
                - id
                - msrp_price
                - price
                - billing_period
                - access_period
            type: object
            properties:
                id:
                    type: string
                    description: System generated identifier for the offer.
                msrp_price:
                    allOf:
                        - $ref: '#/components/schemas/google.type.Money'
                    description: The MSRP price of the offer
                price:
                    allOf:
                        - $ref: '#/components/schemas/google.type.Money'
                    description: |-
                        The price of the offer.
                         If the user is purchasing the Offer with this OfferPrice through a managed subscription, the final price is
                         determined by the managed product price. However, you must still set the price here for display purposes, and
                         because the currency may be used to resolve the correct managed product.
                geo_restrictions_disallow:
                    allOf:
                        - $ref: '#/components/schemas/motto.monetization.offer.v1.CountryCodes'
                    description: |-
                        Users are disallowed to purchase the video from these countries (and allowed from all others)

                        Important: at most one of `geo_restrictions_disallow`, `geo_restrictions_allow` may be set per request.
                geo_restrictions_allow:
                    allOf:
                        - $ref: '#/components/schemas/motto.monetization.offer.v1.CountryCodes'
                    description: |-
                        Users are allowed to purchase the video from these countries (and disallowed from all others)

                        Important: at most one of `geo_restrictions_disallow`, `geo_restrictions_allow` may be set per request.
                billing_period:
                    enum:
                        - BILLING_PERIOD_UNSPECIFIED
                        - BILLING_PERIOD_ONE_TIME
                        - BILLING_PERIOD_WEEKLY
                        - BILLING_PERIOD_MONTHLY
                        - BILLING_PERIOD_QUARTERLY
                        - BILLING_PERIOD_YEARLY
                    type: string
                    description: |-
                        Billing period
                         If the user is purchasing the Offer with this OfferPrice through a managed subscription, this field may be overwritten
                         by the managed product price. It is still important to be accurate, as it will be used to determine which API
                         calls to make to the managed product. It will also be used for display purposes to the end user.
                    format: enum
                access_period:
                    enum:
                        - ACCESS_PERIOD_UNSPECIFIED
                        - ACCESS_PERIOD_FOREVER
                        - ACCESS_PERIOD_24_HOURS
                        - ACCESS_PERIOD_48_HOURS
                        - ACCESS_PERIOD_7_DAYS
                        - ACCESS_PERIOD_30_DAYS
                        - ACCESS_PERIOD_90_DAYS
                        - ACCESS_PERIOD_365_DAYS
                    type: string
                    description: |-
                        Access period.
                         If the user is purchasing the Offer with this OfferPrice through a managed subscription, this field may be overwritten
                         by the managed product price. However, you must still set the access period here for display purposes to the end user.
                    format: enum
                priority:
                    type: string
                    description: |-
                        Priority of the offer. This determines the order in which prices are shown to the user (when more than one price is available).
                         A higher number means the price is shown earlier.
                stripe_product_id:
                    type: string
                    description: |-
                        A Stripe product ID. This is used to identify the product in Stripe, if one exists. This is only required if
                         you want to use Stripe for recurring billing (i.e. using the Stripe subscriptions API).
                stripe_price_id:
                    type: string
                    description: |-
                        Optional. A stripe price ID. If there are multiple prices for the `stripe_product_id` in the same currency, use
                         this to disambiguate.
                app_store_product_id:
                    type: string
                    description: |-
                        An Apple App Store product ID. This is used to identify the product in the App Store, if one exists.
                         This is typically a "consumable" product for pay-per-view content (single purchases of which there can be many),
                         and "non-consumable" for season passes or subscriptions (purchases of which there can be only one of that type).
                         Not needed if you do not want to offer in-app purchases on iOS/tvOS.
                play_store_sku:
                    type: string
                    description: |-
                        A Google Play Store product ID. This is used to identify the product in the Play Store, if one exists.
                         Not needed if you do not want to offer in-app purchases on Android or Android TV.
                commitment_periods:
                    type: integer
                    description: |-
                        Optional. The minimum number of billing periods the user commits to when purchasing this price.
                         The term is `commitment_periods` × `billing_period`, so a monthly price set to 12 commits the user
                         to a year, billed in 12 monthly instalments. The subscription ends when the term does; it does not
                         renew afterwards. Access is granted up front for the whole term, and giving notice during it takes
                         effect at the end of the term rather than immediately.

                         Only valid with a recurring billing period and a managed Stripe product (`stripe_product_id`), and
                         must be greater than 1. Leave unset for no commitment.
                    format: int32
            description: OfferPrice represents the pricing information for an offer.
        motto.monetization.offer.v1.Target:
            type: object
            properties:
                entity_ids:
                    type: array
                    items:
                        type: string
                    description: The entities with which this offer is associated. If provided, all videos that are associated with these entities will be included in the offer.
                event_ids:
                    type: array
                    items:
                        type: string
                    description: The events with which this offer is associated. If provided, all videos that are associated with these events will be included in the offer.
                creative_work_ids:
                    type: array
                    items:
                        type: string
                    description: The creative works with which this offer is associated. If provided, all videos that are associated with these creative works will be included in the offer.
                video_ids:
                    type: array
                    items:
                        type: string
                    description: |-
                        The video IDs of the videos that are associated with this offer.
                         It is recommended to only use this when the videos are not associated with an event/creative work, or the event/creative work it is associated with
                         has other videos with deviating configurations.
                content_start_time:
                    type: string
                    description: |-
                        Any content defined by `entity_ids`, `event_ids` and `creative_work_ids` after `content_start_time` will be considered as part of the offer (as long as it is before `content_end_time`).
                         If not provided, there is no lower time bound on the content.
                    format: date-time
                content_end_time:
                    type: string
                    description: |-
                        Any content defined by `entity_ids`, `event_ids` and `creative_work_ids` before `content_end_time` will be considered as part of the offer (as long as it is after `content_start_time`).
                         If not provided, there is no upper time bound on the content.
                    format: date-time
        motto.monetization.offer.v1.UpdateOfferRequest:
            required:
                - offer_id
                - offer
            type: object
            properties:
                offer_id:
                    type: string
                offer:
                    $ref: '#/components/schemas/motto.monetization.offer.v1.Offer'
                update_mask:
                    type: string
                    format: field-mask
        motto.monetization.offer.v1.UpdateOfferResponse:
            type: object
            properties:
                offer:
                    $ref: '#/components/schemas/motto.monetization.offer.v1.Offer'
        motto.monetization.stripe.v1.CreateStripeIntegrationResponse:
            type: object
            properties:
                integration:
                    $ref: '#/components/schemas/motto.monetization.stripe.v1.StripeIntegration'
        motto.monetization.stripe.v1.DeleteStripeIntegrationResponse:
            type: object
            properties: {}
        motto.monetization.stripe.v1.GetStripeIntegrationResponse:
            type: object
            properties:
                integration:
                    $ref: '#/components/schemas/motto.monetization.stripe.v1.StripeIntegration'
        motto.monetization.stripe.v1.StripeIntegration:
            required:
                - project_id
                - secret_key
                - test_secret_key
            type: object
            properties:
                project_id:
                    type: string
                    description: The Motto project to which this integration belongs
                secret_key:
                    type: string
                    description: The Stripe secret key connected to the "live" environment in Stripe.
                test_secret_key:
                    type: string
                    description: The Stripe secret key connected to the "test" environment in Stripe.
                allow_promotion_codes:
                    type: boolean
                    description: Whether users can enter promotion codes during Stripe checkout.
            description: StripeIntegration
        motto.monetization.stripe.v1.UpdateStripeIntegrationResponse:
            type: object
            properties:
                integration:
                    $ref: '#/components/schemas/motto.monetization.stripe.v1.StripeIntegration'
        motto.monetization.transaction.v1.BatchGetPaymentMethodsResponse:
            type: object
            properties:
                payment_methods:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.monetization.transaction.v1.PaymentMethod'
        motto.monetization.transaction.v1.GetTransactionResponse:
            type: object
            properties:
                transaction:
                    $ref: '#/components/schemas/motto.monetization.transaction.v1.Transaction'
        motto.monetization.transaction.v1.ListTransactionsResponse:
            type: object
            properties:
                transactions:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.monetization.transaction.v1.Transaction'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
                summary:
                    allOf:
                        - $ref: '#/components/schemas/motto.monetization.transaction.v1.ListTransactionsResponse_Summary'
                    description: Summary about the response. This always matches the filter criteria of the request, but ignores pagination.
        motto.monetization.transaction.v1.ListTransactionsResponse_Summary:
            type: object
            properties:
                total_count:
                    type: integer
                    description: Total number of transactions matching the request.
                    format: int32
                total_revenue_by_currency:
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/google.type.Money'
                    description: Total revenue grouped by currency.
        motto.monetization.transaction.v1.PaymentMethod:
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: The payment method ID
                project_id:
                    readOnly: true
                    type: string
                    description: The project ID that is associated with the payment method.
                user_id:
                    readOnly: true
                    type: string
                    description: The user ID that is associated with the payment method.
                provider:
                    readOnly: true
                    enum:
                        - PROVIDER_UNSPECIFIED
                        - PROVIDER_STRIPE
                        - PROVIDER_APPLE_APP_STORE
                        - PROVIDER_GOOGLE_PLAY_STORE
                    type: string
                    description: The provider of the payment method.
                    format: enum
                sub_provider:
                    readOnly: true
                    type: string
                    description: |-
                        The service of the payment method. This is mostly applicable when the provider is a payment orchestrator
                         (like Gr4vy) that can liaise with multiple payment providers (like Stripe or Adyen)
                type:
                    readOnly: true
                    type: string
                    description: The type of the payment method. This can be a credit card, a bank account, or a payment service like PayPal.
                last_four:
                    readOnly: true
                    type: string
                    description: The last four digits of the payment method. Only applicable for credit card payments.
                expiration_month:
                    readOnly: true
                    type: integer
                    description: The expiration month of the payment method. Only applicable for credit card payments.
                    format: int32
                expiration_year:
                    readOnly: true
                    type: integer
                    description: The expiration year of the payment method. Only applicable for credit card payments.
                    format: int32
                card_brand:
                    readOnly: true
                    type: string
                    description: The card brand of the payment method. Only applicable for credit card payments.
        motto.monetization.transaction.v1.Transaction:
            required:
                - offer_id
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: The transaction ID
                project_id:
                    readOnly: true
                    type: string
                    description: The project ID that is associated with the transaction.
                user_id:
                    readOnly: true
                    type: string
                    description: The user ID that is associated with the purchase.
                offer_id:
                    type: string
                    description: The offer ID that is being purchased.
                offer_title:
                    readOnly: true
                    type: string
                    description: The title of the offer. This is dematerialized from the offer at the time of creating the transaction.
                offer_description:
                    readOnly: true
                    type: string
                    description: The description of the offer. This is dematerialized from the offer at the time of creating the transaction.
                status:
                    readOnly: true
                    enum:
                        - TRANSACTION_STATUS_UNSPECIFIED
                        - TRANSACTION_STATUS_IN_PROGRESS
                        - TRANSACTION_STATUS_COMPLETED
                        - TRANSACTION_STATUS_FAILED
                        - TRANSACTION_STATUS_EXPIRED
                        - TRANSACTION_STATUS_CANCELLED
                        - TRANSACTION_STATUS_REFUNDED
                    type: string
                    description: The status of the transaction.
                    format: enum
                msrp:
                    readOnly: true
                    allOf:
                        - $ref: '#/components/schemas/google.type.Money'
                    description: The MSRP of the offer at the time of creating the transaction.
                subtotal_amount:
                    readOnly: true
                    allOf:
                        - $ref: '#/components/schemas/google.type.Money'
                    description: |-
                        The price that the user is paying for the offer (after any discounts or promotions, but before taxes).

                         Warning: wile transactions are incomplete, this field is only indicative.
                total_amount:
                    readOnly: true
                    allOf:
                        - $ref: '#/components/schemas/google.type.Money'
                    description: |-
                        The price that the user is paying for the offer, after taxes have been applied. Depending on the region, this may
                         be the same as the `price` field (because VAT is included in the price), while in other regions, VAT is added
                         on top of the price.
                vat_amount:
                    readOnly: true
                    allOf:
                        - $ref: '#/components/schemas/google.type.Money'
                    description: The VAT amount that was applied to the transaction.
                discount_code:
                    readOnly: true
                    type: string
                    description: A discount code applied to the transaction.
                discount_amount:
                    readOnly: true
                    allOf:
                        - $ref: '#/components/schemas/google.type.Money'
                    description: |-
                        The discount amount applied to the transaction.

                        Important: at most one of `discount_amount`, `discount_percentage` may be set per request.
                discount_percentage:
                    readOnly: true
                    type: number
                    description: |-
                        The discount percentage applied to the transaction, which is a value between 0 and 100.

                        Important: at most one of `discount_amount`, `discount_percentage` may be set per request.
                    format: float
                billing_period:
                    readOnly: true
                    enum:
                        - BILLING_PERIOD_UNSPECIFIED
                        - BILLING_PERIOD_ONE_TIME
                        - BILLING_PERIOD_WEEKLY
                        - BILLING_PERIOD_MONTHLY
                        - BILLING_PERIOD_QUARTERLY
                        - BILLING_PERIOD_YEARLY
                    type: string
                    format: enum
                access_period:
                    readOnly: true
                    enum:
                        - ACCESS_PERIOD_UNSPECIFIED
                        - ACCESS_PERIOD_FOREVER
                        - ACCESS_PERIOD_24_HOURS
                        - ACCESS_PERIOD_48_HOURS
                        - ACCESS_PERIOD_7_DAYS
                        - ACCESS_PERIOD_30_DAYS
                        - ACCESS_PERIOD_90_DAYS
                        - ACCESS_PERIOD_365_DAYS
                    type: string
                    format: enum
                payment_method_id:
                    readOnly: true
                    type: string
                    description: |-
                        The payment method that was used to (attempt to) pay for the transaction. If multiple payment attempts were made,
                         this will be the last payment method used, or it may be empty if the attempt failed.
                subscription_id:
                    readOnly: true
                    type: string
                    description: A subscription ID that is associated with the transaction. This is only applicable for subscription-based offers.
                create_time:
                    readOnly: true
                    type: string
                    description: The time at which this Transaction was created.
                    format: date-time
                capture_time:
                    readOnly: true
                    type: string
                    description: The time at which the Transaction amount was captured.
                    format: date-time
                is_test:
                    readOnly: true
                    type: boolean
                    description: Indicates whether this is a test transaction made in a sandbox environment.
                offer_name:
                    readOnly: true
                    type: string
                    description: The name of the offer that was purchased. This is dematerialized from the offer at read-time.
                offer_price_id:
                    readOnly: true
                    type: string
                    description: |-
                        The ID of the offer price that the offer was purchased at. Empty for transactions created before
                         this field was introduced.
        motto.ott.file.v1.BatchGetFileKindsResponse:
            type: object
            properties:
                file_kinds:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.file.v1.FileKind'
        motto.ott.file.v1.CreateFileResponse:
            type: object
            properties:
                file:
                    $ref: '#/components/schemas/motto.ott.file.v1.File'
        motto.ott.file.v1.DeleteFileResponse:
            type: object
            properties: {}
        motto.ott.file.v1.File:
            required:
                - project_id
                - platform_id
                - file_kind_id
                - asset_id
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: System generated unique identifier for the file.
                project_id:
                    type: string
                platform_id:
                    type: string
                file_kind_id:
                    type: string
                asset_id:
                    type: string
            description: File is a representation of a file that was uploaded by the customer.
        motto.ott.file.v1.FileKind:
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: The id of the file kind.
                name:
                    readOnly: true
                    type: string
                    description: |-
                        The name of the file kind.
                         For example, "Info.plist", "brandFont.ttf", "secondaryFont.ttf", "splashScreen.png", etc. This is the name
                         the file will be given when used in the environment project / build pipeline.
                environment:
                    readOnly: true
                    type: string
                    description: |-
                        The environment to which this filetype belongs. The available options are:
                         "web", "ios", "android", "tvos", "lg", "samsung", "androidtv"
                description:
                    readOnly: true
                    type: string
                    description: The description of the file kind.
                content_types:
                    readOnly: true
                    type: array
                    items:
                        type: string
                    description: |-
                        The expected content type(s) of the file.
                         For example, "image/jpeg", "video/mp4", "application/pdf".
                min_count:
                    readOnly: true
                    type: integer
                    description: The minimum number of files required of this kind. Default to 0.
                    format: int32
                max_count:
                    readOnly: true
                    type: integer
                    description: |-
                        The maximum number of files allowed of this kind. Default to 1.
                         If more than 1 file of this kind is provided, it is up to the build pipeline to decide how to handle multiple files.
                    format: int32
                max_size:
                    type: string
                    description: The maximum number of bytes allowed for a single file of this kind. Default to 5 Mb (1024 * 1024 * 5).
                template:
                    type: string
                    description: |-
                        A template that can be used to understand what the file should look like. Depending on the content_type, this
                         may be more or less useful.
                category:
                    type: string
                    description: The category of the file kind.
                priority:
                    type: string
                    description: |-
                        The priority of the file kind. A higher priority means that the file kind is more important, and will appear
                         earlier in the list.
        motto.ott.file.v1.GetFileResponse:
            type: object
            properties:
                file:
                    $ref: '#/components/schemas/motto.ott.file.v1.File'
        motto.ott.file.v1.ListFileKindsResponse:
            type: object
            properties:
                file_kinds:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.file.v1.FileKind'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next file results.
                         An empty value means no more results
        motto.ott.file.v1.ListFilesResponse:
            type: object
            properties:
                files:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.file.v1.File'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next file results.
                         An empty value means no more results
        motto.ott.page.v1.BatchGetPageComponentsResponse:
            type: object
            properties:
                page_components:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.page.v1.PageComponent'
        motto.ott.page.v1.ClonePageRequest:
            required:
                - page_id
                - page_type
                - platform_id
            type: object
            properties:
                page_id:
                    type: string
                    description: The page ID to clone from.
                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
        motto.ott.page.v1.ClonePageResponse:
            type: object
            properties:
                page:
                    $ref: '#/components/schemas/motto.ott.page.v1.Page'
        motto.ott.page.v1.ComparePageResponse:
            type: object
            properties:
                prod:
                    type: string
                    description: The representation of the production version of the page.
                preview:
                    type: string
                    description: The representation of the preview version of the page.
        motto.ott.page.v1.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.v1.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.v1.Condition_Entitlement:
            type: object
            properties:
                entitled_to:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v1.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.v1.Condition_OfferIds'
                    description: Apply redirect if the user is NOT entitled to any of these offers.
            description: An entitlement condition.
        motto.ott.page.v1.Condition_Geolocation:
            type: object
            properties:
                on_countries:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v1.Condition_CountryCodes'
                    description: Apply redirect if the user is in one of these countries.
                except_countries:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v1.Condition_CountryCodes'
                    description: Apply redirect if the user is NOT in one of these countries.
            description: A geolocation condition.
        motto.ott.page.v1.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.v1.CreatePageComponentResponse:
            type: object
            properties:
                page_component:
                    $ref: '#/components/schemas/motto.ott.page.v1.PageComponent'
        motto.ott.page.v1.CreatePageResponse:
            type: object
            properties:
                page:
                    $ref: '#/components/schemas/motto.ott.page.v1.Page'
        motto.ott.page.v1.DeletePageComponentResponse:
            type: object
            properties: {}
        motto.ott.page.v1.DeletePageResponse:
            type: object
            properties: {}
        motto.ott.page.v1.DeployPageRequest:
            required:
                - page_id
                - page_type
                - platform_id
            type: object
            properties:
                page_id:
                    type: string
                    description: The page ID to deploy.
                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
        motto.ott.page.v1.DeployPageResponse:
            type: object
            properties:
                page:
                    $ref: '#/components/schemas/motto.ott.page.v1.Page'
        motto.ott.page.v1.GetPageComponentResponse:
            type: object
            properties:
                page_component:
                    $ref: '#/components/schemas/motto.ott.page.v1.PageComponent'
        motto.ott.page.v1.GetPageResponse:
            type: object
            properties:
                page:
                    $ref: '#/components/schemas/motto.ott.page.v1.Page'
        motto.ott.page.v1.ListPagesResponse:
            type: object
            properties:
                pages:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.page.v1.Page'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.ott.page.v1.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.v1.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.v1.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.v1.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.
        motto.ott.page.v1.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.
                         Refer to the documentation to find the available types.
                data:
                    type: object
                    description: |-
                        Data needed by individual components. Each component can have its own data structure.
                         Refer to the documentation for the specific component to see what data is needed.
                props:
                    type: object
                    description: |-
                        Additional properties that can be used to customize the rendering of this component.
                         This can be used in two ways:
                         1) If you are using the Motto OTT platform, you can find the available keys and values in our OTT documentation.
                         2) If you are rendering the component yourself, you can use this map to pass arbitrary data to your rendering engine.
                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.
        motto.ott.page.v1.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.v1.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.v1.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.v1.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.v1.PageRedirect_Condition:
            type: object
            properties:
                authentication:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v1.Condition_Authentication'
                    description: Authentication condition
                geolocation:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v1.Condition_Geolocation'
                    description: Geolocation condition
                entitlement:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v1.Condition_Entitlement'
                    description: Entitlement condition
            description: A condition that must be met for the redirect to apply.
        motto.ott.page.v1.UpdatePageComponentRequest:
            required:
                - page_component_id
                - page_component_update
                - update_mask
            type: object
            properties:
                page_component_id:
                    type: string
                page_component_update:
                    $ref: '#/components/schemas/motto.ott.page.v1.PageComponent'
                update_mask:
                    type: string
                    description: |-
                        A comma-separated list of fields to be updated. Only fields specified in this mask will be updated.
                         Note: to update the configuration of any of the non-standard fields on this component,
                         use `type` in the field mask instead of their field name. For example, if this component is for the video player,
                         do not include `video_player` in the field mask. Instead, include `type`.
                    format: field-mask
        motto.ott.page.v1.UpdatePageComponentResponse:
            type: object
            properties:
                page_component:
                    $ref: '#/components/schemas/motto.ott.page.v1.PageComponent'
        motto.ott.page.v1.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.v1.Page'
                update_mask:
                    type: string
                    format: field-mask
        motto.ott.page.v1.UpdatePageResponse:
            type: object
            properties:
                page:
                    $ref: '#/components/schemas/motto.ott.page.v1.Page'
        motto.ott.page.v2.AthleteProfileAttribute:
            type: object
            properties:
                key:
                    type: string
                    description: |-
                        Identifies the row for custom client implementations, e.g. `country` on a row whose value is a
                         country code that the implementation renders as a flag. Lower-case, not localized, delivered as
                         is. Motto's own clients ignore it.
                label:
                    $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileValue'
                value:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileValue'
                    description: |-
                        A value that resolves to an array is joined with a locale-aware separator. A row whose value
                         resolves to nothing is not delivered.
                text:
                    $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileTextDisplay'
                    description: 'Important: at most one of `text`, `image`, `link`, `date`, `number` may be set per request.'
                image:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileImageDisplay'
                    description: |-
                        `value` resolves to an asset ID or an image URL.

                        Important: at most one of `text`, `image`, `link`, `date`, `number` may be set per request.
                link:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileLinkDisplay'
                    description: |-
                        `value` resolves to a URL.

                        Important: at most one of `text`, `image`, `link`, `date`, `number` may be set per request.
                date:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileDateDisplay'
                    description: |-
                        `value` resolves to an RFC 3339 date or datetime. Delivered as ISO 8601 for the client to
                         format in the user's locale.

                        Important: at most one of `text`, `image`, `link`, `date`, `number` may be set per request.
                number:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileNumberDisplay'
                    description: |-
                        `value` resolves to a number. Delivered as a number for the client to format in the user's
                         locale.

                        Important: at most one of `text`, `image`, `link`, `date`, `number` may be set per request.
                when:
                    type: string
                    description: KQL filter evaluated against the entity. Leave empty to always show.
        motto.ott.page.v2.AthleteProfileAttributes:
            type: object
            properties:
                rows:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileAttribute'
            description: Rows of label and value.
        motto.ott.page.v2.AthleteProfileCustomValue:
            type: object
            properties:
                custom_type:
                    type: string
                props:
                    type: object
            description: |-
                Follows the `custom` page component: `custom_type` names the logic a custom platform
                 implementation runs and `props` is arbitrary JSON passed to it.
        motto.ott.page.v2.AthleteProfileData:
            type: object
            properties:
                header:
                    $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileHeader'
                sections:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileSection'
                    description: Rendered in order below the header. A section that resolves to nothing is not delivered.
            description: |-
                Data for the "athlete_profile" page component type.
                 The profile of an athlete in any sport. The customer decides which properties appear, what they
                 are called and how each value is derived from the entity. The content delivery API resolves every
                 value server-side and clients only render the result. Supersedes `player_profile`.

                 Keypaths are written in braces and resolved against the entity as the content delivery API
                 delivers it, e.g. `{fields.birthday}` or `{fields.country.item.name}`. They support coalescing,
                 e.g. `{fields.photo ?? thumbnail_url}`. Besides `fields.*`, the root properties are `id`,
                 `type_id`, `name`, `description`, `thumbnail_url`, `logo_url` and `banner_urls`. Text outside
                 braces is literal.
        motto.ott.page.v2.AthleteProfileDateDisplay:
            type: object
            properties: {}
        motto.ott.page.v2.AthleteProfileHeader:
            type: object
            properties:
                id:
                    type: string
                    description: |-
                        The entity to show. May contain a variable such as `{id}` (a URL parameter). Required. This is
                         the only field in which page variables are replaced; braces anywhere else are keypaths.
                title:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileValue'
                    description: Defaults to the entity name.
                description:
                    $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileValue'
                profile_image_asset_id:
                    type: string
                    description: |-
                        Portrait photo of the athlete, shown beside the title. A keypath to an image URL on the entity,
                         e.g. `{thumbnail_url}`, or a literal asset ID. May be combined with a banner or used alone.
                fallback_profile_image_asset_id:
                    type: string
                    description: Asset ID of a placeholder, used when `profile_image_asset_id` resolves to nothing.
                banner_asset_id:
                    type: string
                    description: |-
                        Wide image behind the header, edge to edge. A keypath to the entity's banner URLs per
                         breakpoint, e.g. `{banner_urls}`, or to a single image URL, or a literal asset ID. The header
                         is shown full-bleed when this or its fallback resolves to an image. May be combined with a
                         profile image or used alone.
                fallback_banner_asset_id:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        Placeholder asset ID per min-width breakpoint in pixels, used for breakpoints the banner lacks.
                         Key 0 is the default for all screen sizes.
                colors:
                    type: array
                    items:
                        type: string
                    description: |-
                        Gradient stops for the header background, in order. A single value is a solid color. Each is a
                         keypath, a hex color code or a named color (e.g. `primary`).
        motto.ott.page.v2.AthleteProfileImageDisplay:
            type: object
            properties: {}
        motto.ott.page.v2.AthleteProfileLinkDisplay:
            type: object
            properties:
                text:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileValue'
                    description: The link text. Required.
        motto.ott.page.v2.AthleteProfileList:
            type: object
            properties:
                items:
                    type: string
                    description: |-
                        Keypath to an array of linked entities, e.g. `{fields.teams}`. A single item is treated as a
                         one-item array.
                item:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileListItem'
                    description: |-
                        Applied to each item. Keypaths are relative to the array entry: `{id}` and `{type_id}` are the
                         linked entity's, `{item.*}` its delivered properties, other keys the entry's own fields.
            description: |-
                One row per item of an array on the entity, e.g. teams, clubs or disciplines. Each row links to
                 the linked entity's page.
        motto.ott.page.v2.AthleteProfileListItem:
            type: object
            properties:
                image_asset:
                    type: string
                    description: |-
                        Keypath to an image URL on the linked entity, e.g. `{item.thumbnail_url}`, or a literal asset
                         ID.
                primary:
                    $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileValue'
                secondary:
                    $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileValue'
        motto.ott.page.v2.AthleteProfileMappedValue:
            type: object
            properties:
                keypath:
                    type: string
                    description: E.g. `{fields.positions[*].item.fields.code}`.
                mapping:
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/motto.ott.page.v2.MappingValue'
                    description: Maps a key to the raw values, or linked entity IDs, that resolve to it.
                labels:
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/motto.ott.page.v2.LocalizedString'
                    description: Maps a key to its display text. A raw value matching no key is shown as is.
            description: |-
                Maps the raw values at `keypath` to customer-defined keys, and each key to a localized label.
                 Keys are arbitrary, e.g. "GOALKEEPER" or "PROP".
        motto.ott.page.v2.AthleteProfileNumberDisplay:
            type: object
            properties: {}
        motto.ott.page.v2.AthleteProfilePills:
            type: object
            properties:
                items:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileValue'
            description: A row of values without labels. A value that resolves to an array renders one pill per item.
        motto.ott.page.v2.AthleteProfileSection:
            type: object
            properties:
                title:
                    $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileValue'
                when:
                    type: string
                    description: KQL filter evaluated against the entity, e.g. `type_id:player`. Leave empty to always show.
                pills:
                    $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfilePills'
                    description: 'Important: at most one of `pills`, `attributes`, `list` may be set per request.'
                attributes:
                    $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileAttributes'
                    description: 'Important: at most one of `pills`, `attributes`, `list` may be set per request.'
                list:
                    $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileList'
                    description: 'Important: at most one of `pills`, `attributes`, `list` may be set per request.'
        motto.ott.page.v2.AthleteProfileTextDisplay:
            type: object
            properties: {}
        motto.ott.page.v2.AthleteProfileValue:
            type: object
            properties:
                text:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v2.LocalizedString'
                    description: |-
                        Localized text in which keypaths in braces are resolved against the entity, e.g.
                         `{fields.country.item.name}` or `{fields.birthday} years`.

                        Important: at most one of `text`, `mapped`, `custom` may be set per request.
                mapped:
                    $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileMappedValue'
                    description: 'Important: at most one of `text`, `mapped`, `custom` may be set per request.'
                custom:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileCustomValue'
                    description: |-
                        Resolved by a custom platform implementation, not by Motto. Native Motto apps hide the value.

                        Important: at most one of `text`, `mapped`, `custom` may be set per request.
                transform:
                    enum:
                        - ATHLETE_PROFILE_TRANSFORM_UNSPECIFIED
                        - ATHLETE_PROFILE_TRANSFORM_AGE_FROM_DATE
                        - ATHLETE_PROFILE_TRANSFORM_COUNTRY_NAME
                        - ATHLETE_PROFILE_TRANSFORM_COUNTRY_CODE
                        - ATHLETE_PROFILE_TRANSFORM_COUNT
                    type: string
                    description: Only applies to `text`. Applied to each resolved keypath, per item when it resolves to an array.
                    format: enum
            description: |-
                A displayable value: text with keypaths, an enum with labels, or a value resolved by a custom
                 platform implementation.
        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.BatchGetPageComponentsResponse:
            type: object
            properties:
                page_components:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.page.v2.PageComponent'
        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.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:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v2.Card'
                    description: |-
                        Card configuration applied to every event, shared with `rail` and `content_grid`. Use its
                         `overrides` to render events of a given content type as a different card type.
                card_styling:
                    $ref: '#/components/schemas/motto.ott.page.v2.CardStyling'
                card_thumbnail:
                    $ref: '#/components/schemas/motto.ott.page.v2.CardThumbnail'
                show_day_count:
                    type: boolean
                    description: |-
                        Shows how many events fall on each visible day. Where the count appears (day header, date
                         picker, or both) is up to the client.
            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.CalendarV2DayGridLayout:
            type: object
            properties: {}
        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.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.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.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.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`, `custom` 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`, `custom` 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`, `custom` 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`, `custom` 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`, `custom` 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`, `custom` 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`, `custom` 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`, `custom` 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`, `custom` 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`, `custom` may be set per request.
                custom:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v2.CustomCard'
                    description: |-
                        A card that Motto does not render out of the box, for custom platform implementations.

                        Important: at most one of `default`, `team_vs_team`, `detailed`, `detailed_2`, `two_by_three`, `circle`, `circle_2`, `square`, `square_2`, `five_by_seven`, `custom` 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.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.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: |-
                        The uploaded asset shown when no thumbnail could be composed and the content item has no
                         thumbnail of its own. Applies to every thumbnail type.
            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.Circle2Card:
            type: object
            properties:
                primary_line:
                    type: string
                secondary_line:
                    type: string
        motto.ott.page.v2.CircleCard:
            type: object
            properties:
                primary_line:
                    type: string
                secondary_line:
                    type: string
        motto.ott.page.v2.ClonePageRequest:
            required:
                - page_id
                - page_type
                - platform_id
            type: object
            properties:
                page_id:
                    type: string
                    description: The page ID to clone from.
                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
        motto.ott.page.v2.ClonePageResponse:
            type: object
            properties:
                page:
                    $ref: '#/components/schemas/motto.ott.page.v2.Page'
        motto.ott.page.v2.ComparePageResponse:
            type: object
            properties:
                prod:
                    type: string
                    description: The representation of the production version of the page.
                preview:
                    type: string
                    description: The representation of the preview version of the page.
        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_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_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.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_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.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.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.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.CreatePageComponentResponse:
            type: object
            properties:
                page_component:
                    $ref: '#/components/schemas/motto.ott.page.v2.PageComponent'
        motto.ott.page.v2.CreatePageResponse:
            type: object
            properties:
                page:
                    $ref: '#/components/schemas/motto.ott.page.v2.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'
                allow_ad_blockers:
                    type: boolean
                    description: |-
                        Continues playback when an ad fails to load because of an ad blocker. When false, the player shows
                         an error instead.
            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.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.CustomCard:
            type: object
            properties:
                custom_type:
                    type: string
                    description: Identifies which custom card the platform implementation should render.
                props:
                    type: object
                    description: |-
                        Arbitrary JSON object passed to the implementation. Must be an object. Every string in it,
                         however deeply nested, is resolved as a keypath on the content item (e.g. `name` or
                         `event.fields.stadium.item.name`); strings that do not resolve are passed through as-is.
                         Localized text is a nested object keyed by locale, resolved to the requested locale.
            description: |-
                Card without fixed properties, for custom platform implementations (e.g. built on the agentic
                 SDK). Native Motto apps ignore it.
        motto.ott.page.v2.CustomData:
            type: object
            properties:
                custom_type:
                    type: string
                    description: Identifies which custom component the platform implementation should render.
                props:
                    type: object
                    description: |-
                        Arbitrary JSON object passed to the implementation. Must be an object. The content delivery API
                         resolves locale maps and variables like `{id}` or `{event.title}` inside it, as on other components.
            description: |-
                Data for the "custom" page component type.
                 Carries a component that Motto does not support out of the box. Native Motto apps ignore it;
                 custom platform implementations (e.g. built on the agentic SDK) render it, for instance as a
                 social media embed or a man-of-the-match poll.
        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.DeletePageComponentResponse:
            type: object
            properties: {}
        motto.ott.page.v2.DeletePageResponse:
            type: object
            properties: {}
        motto.ott.page.v2.DeployPageRequest:
            required:
                - page_id
                - page_type
                - platform_id
            type: object
            properties:
                page_id:
                    type: string
                    description: The page ID to deploy.
                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
        motto.ott.page.v2.DeployPageResponse:
            type: object
            properties:
                page:
                    $ref: '#/components/schemas/motto.ott.page.v2.Page'
        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
                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
                badges:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.page.v2.CardBadge'
        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.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.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.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.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'
                allow_ad_blockers:
                    type: boolean
                    description: |-
                        Continues playback when an ad fails to load because of an ad blocker. When false, the player shows
                         an error instead.
            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.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.FaqAnswer:
            type: object
            properties:
                text:
                    type: object
                    additionalProperties:
                        type: string
        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.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.FaqRedirect:
            type: object
            properties:
                url:
                    type: object
                    additionalProperties:
                        type: string
        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.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.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.FilterDateRangeDefault:
            type: object
            properties:
                from:
                    type: string
                to:
                    type: string
        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
                pinned:
                    type: array
                    items:
                        type: string
                    description: |-
                        Entity IDs shown at the top of the options, if they match `filter`. Setting it sorts the
                         remaining options by relevance instead of `order`.
        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.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.FilterRailLayout:
            type: object
            properties: {}
        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.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.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.FilterSidebarLayout:
            type: object
            properties: {}
        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
        motto.ott.page.v2.FilterStaticSource:
            type: object
            properties:
                options:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.page.v2.FilterStaticOption'
        motto.ott.page.v2.FiveBySevenCard:
            type: object
            properties:
                primary_line:
                    type: string
                secondary_line:
                    type: string
        motto.ott.page.v2.FooterAppStoreLinks:
            type: object
            properties:
                google_play:
                    type: string
                app_store:
                    type: string
        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.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.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.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.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.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.GetPageComponentResponse:
            type: object
            properties:
                page_component:
                    $ref: '#/components/schemas/motto.ott.page.v2.PageComponent'
        motto.ott.page.v2.GetPageResponse:
            type: object
            properties:
                page:
                    $ref: '#/components/schemas/motto.ott.page.v2.Page'
        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.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.ImageData:
            type: object
            properties:
                external_image_url:
                    type: string
            description: Data for the "image" page component type.
        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.ListPagesResponse:
            type: object
            properties:
                pages:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.page.v2.Page'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        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.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.MappingValue:
            type: object
            properties:
                options:
                    type: array
                    items:
                        type: string
        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.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.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.
        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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` may be set per request.'
                athlete_profile:
                    $ref: '#/components/schemas/motto.ott.page.v2.AthleteProfileData'
                    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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` 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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` may be set per request.'
                custom:
                    $ref: '#/components/schemas/motto.ott.page.v2.CustomData'
                    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`, `athlete_profile`, `promotional_content`, `sponsorship_collection`, `standings`, `faq`, `footer`, `text`, `image`, `html`, `custom` may be set per request.'
        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.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.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.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.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.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.
                 Deprecated: superseded by `athlete_profile`, which lets the customer configure the properties.
                 The profile of a person who plays sports. Most properties are optional; the set is meant to be
                 extensible.
        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.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.PromotionalContentData:
            type: object
            properties:
                image_asset_id:
                    allOf:
                        - $ref: '#/components/schemas/motto.ott.page.v2.LocalizedString'
                    description: |-
                        Rendered as a static image.

                        Important: at most one of `image_asset_id`, `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_asset_id`, `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.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.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.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.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'
            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.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.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.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.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.SponsorshipDecorator:
            type: object
            properties:
                color:
                    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.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.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.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.
        motto.ott.page.v2.SquareCard:
            type: object
            properties:
                primary_line:
                    type: string
                secondary_line:
                    type: string
        motto.ott.page.v2.StandingsBackground:
            type: object
            properties:
                color:
                    type: string
                    description: Hex color code, e.g. `#ffffff`.
        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.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.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
                badges:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.page.v2.CardBadge'
        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.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.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.TwoByThreeCard:
            type: object
            properties:
                primary_line:
                    type: string
                secondary_line:
                    type: string
                detail_line_1:
                    type: string
        motto.ott.page.v2.UpdatePageComponentRequest:
            required:
                - page_component_id
                - page_component_update
                - update_mask
            type: object
            properties:
                page_component_id:
                    type: string
                page_component_update:
                    $ref: '#/components/schemas/motto.ott.page.v2.PageComponent'
                update_mask:
                    type: string
                    description: |-
                        A comma-separated list of fields to be updated. Only fields specified in this mask will be updated.
                         The mask accepts root-level properties only. Use `data` to replace the component's configuration;
                         since the mask cannot reach inside it, send the complete `data` object even to change one property.
                    format: field-mask
        motto.ott.page.v2.UpdatePageComponentResponse:
            type: object
            properties:
                page_component:
                    $ref: '#/components/schemas/motto.ott.page.v2.PageComponent'
        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'
        motto.ott.platform.v1.CompareDeploymentsResponse:
            type: object
            properties:
                is_equal:
                    type: boolean
                    description: This will be true if the two deployments match. Which deployments are being compared is determined by the `comparison` field in the CompareDeploymentsRequest.
        motto.ott.platform.v1.CreatePlatformResponse:
            type: object
            properties:
                platform:
                    $ref: '#/components/schemas/motto.ott.platform.v1.Platform'
        motto.ott.platform.v1.DeletePlatformResponse:
            type: object
            properties: {}
        motto.ott.platform.v1.DeployPlatformResponse:
            type: object
            properties: {}
        motto.ott.platform.v1.FooterEntry:
            type: object
            properties:
                title:
                    type: object
                    additionalProperties:
                        type: string
                    description: The title of the footer entry.
                url:
                    type: string
                    description: The URL that the footer entry should link to. Can be a relative URL.
        motto.ott.platform.v1.GetPlatformResponse:
            type: object
            properties:
                platform:
                    $ref: '#/components/schemas/motto.ott.platform.v1.Platform'
        motto.ott.platform.v1.ListPlatformsResponse:
            type: object
            properties:
                platforms:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.platform.v1.Platform'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next page results.
                         An empty value means no more results
        motto.ott.platform.v1.NavigationBarEntry:
            type: object
            properties:
                title:
                    type: object
                    additionalProperties:
                        type: string
                    description: The title of the navigation bar entry.
                url:
                    type: string
                    description: The URL that the navigation bar entry should link to. Can be a relative URL.
        motto.ott.platform.v1.Platform:
            required:
                - id
                - project_id
            type: object
            properties:
                id:
                    type: string
                    description: System generated identifier for the platform.
                project_id:
                    type: string
                name:
                    type: string
                    description: The name of this platform. Not shown to end users.
                hosts:
                    type: array
                    items:
                        type: string
                    description: |-
                        The hosts that this platform should be served on. Should follow the format of `example.com` or `ott.example.com`.
                         Should not include `https://`, `www.` or any path components.
                         This should be left empty if the page is not specific to any specific host, but should cover all hosts that may
                         serve the OTT platform.
                         Should not be confused with `primary_domain`.
                locales:
                    type: array
                    items:
                        type: string
                    description: |-
                        The locales you would like to support on this platform.
                         The format should be the language code, e.g. "en", "de", "fr", etc, optionally followed by a region code, e.g. "en-US", "en-GB", etc.

                         Note: The platform itself may not support all locales. When it does not, it will default to `default_locale`.
                default_locale:
                    type: string
                    description: |-
                        The default locale for this platform. This is used to determine the default language for the platform.

                         Note: The platform itself may not support all languages. It will reject the default_locale if it references an unsupported language.
                title:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized titles for this platform, for end users to see. The key is the locale.
                         Important: this is also used in the page's HTML <metadata> and <title> tags. Can be overwritten by individual pages.
                logo_asset_id:
                    type: string
                    description: The logo asset ID that should be used as the logo for this platform.
                favicon_asset_id:
                    type: string
                    description: The favicon asset ID that should be used as the favicon for this platform.
                colors:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A set of colors that should be used in the platform. The available keys are currently:
                         - `primary`: The primary color of the platform (in light mode). This is used to highlight important elements.
                         - `primary_dark`: The primary color of the platform (in dark mode). This is used to highlight important elements.
                         - `background`: The background color of the platform (in light mode).
                         - `background_dark`: The background color of the platform (in dark mode).
                         - `button_from` and `button_to`: The gradient colors for buttons.

                         The values should be hex color codes, e.g. `#FFFFFF`.
                navbar_entries:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.platform.v1.NavigationBarEntry'
                    description: A set of navigation bar entries that should be shown on the platform.
                footer_entries:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.platform.v1.FooterEntry'
                    description: A set of footer entries that should be shown on the platform.
                feature_configuration:
                    type: object
                    description: |-
                        The features that should be enabled on this platform.
                         Any feature not included in this list will be disabled by default  (unless it is a required, non-configurable feature).

                         The keys in this map represent features that should be enabled, and the values represent the configuration for that feature.
                         For a full overview of the available features and their configuration options, please refer to the Motto documentation.
                scripts:
                    type: string
                    description: |-
                        Web only. Scripts that should be included in the pages of the platform. Primarily useful for such things as
                         Google Analytics scripts.
                css:
                    type: string
                    description: |-
                        Web only. Global CSS rules that should be included in all pages of the platform.
                         This is useful in two scenarios:
                         1. Affecting default styling across all pages of the platform
                         2. Affecting page-specific styling for static pages that do not have a Page object to represent them (e.g. a sign in/up page).
                         In all other scenarios, it is recommended to apply CSS rules to the Page object itself.
                integrations:
                    type: object
                    description: |-
                        The third-party integrations that should be configured on this platform.

                         The keys in this map represent third-parties that should be configured, and the values represent the necessary API keys, tokens, etc.
                         For a full overview of the available integrations and their configuration options, please refer to the Motto documentation.
                colors_preview:
                    type: object
                    additionalProperties:
                        type: string
                    description: The same as `colors`, but for the preview stage. If not provided, the preview stage will use `colors`.
                feature_configuration_preview:
                    type: object
                    description: The same as `feature_configuration`, but for the preview stage. If not provided, the preview stage will use `feature_configuration`.
                scripts_preview:
                    type: string
                    description: The same as `scripts`, but for the preview stage. If not provided, the preview stage will use `scripts`.
                css_preview:
                    type: string
                    description: The same as `css`, but for the preview stage. If not provided, the preview stage will use `css`.
                integrations_preview:
                    type: object
                    description: The same as `integrations`, but for the preview stage. If not provided, the preview stage will use `integrations`.
                navbar_entries_preview:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.platform.v1.NavigationBarEntry'
                    description: The same as `navbar_entries`, but for the preview stage. If not provided, the preview stage will use `navbar_entries`.
                footer_entries_preview:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.platform.v1.FooterEntry'
                    description: The same as `footer_entries`, but for the preview stage. If not provided, the preview stage will use `footer_entries`.
                breakpoints:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of breakpoints that should be supported on this platform. This is used within the Studio environment to determine
                         which kinds of assets must be provided, e.g. for banners.
                         The key is the breakpoint min-width (in pixels), and the value is a human-readable name for the breakpoint.
                         If you want to define a default breakpoint for all screen sizes, you can use 0 as the key.
                         E.g.:
                         {
                           0:    "Mobile",
                           1024: "Desktop"
                         }
                primary_domain:
                    type: string
                    description: |-
                        The primary domain for this platform. This should be the domain that the Studio uses when generating links to the platform,
                         and should be the domain that is used in the platform's canonical URLs.
                         Should not include `https://`, but can include `www.` if the primary domain includes it. Should not include any path components.

                         Should not be confused with `hosts`.
                versioning:
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/motto.ott.platform.v1.PlatformVersion'
                    description: |-
                        A map of platform version information. The keys are environments (web, ios, android)
                         and the values are the version information for that environment. This will be used to track which version of the
                         Motto OTT platform is running in each environment, and can be used to determine which features are (not) available.
                         This is a read-only field, as it will be updated by the system when using the DeployPlatform API.
                versioning_preview:
                    type: object
                    additionalProperties:
                        $ref: '#/components/schemas/motto.ott.platform.v1.PlatformVersion'
                    description: |-
                        A map of platform version information for the preview stage. The keys are environments (web, ios, android)
                         and the values are the version information for that environment. This will be used to track which version of the
                         Motto OTT platform is running in each environment, and can be used to determine which features are (not) available.
                         This is a read-only field, as it will be updated by the system when using the DeployPlatform API.
                exclude_sitemap:
                    type: boolean
                    description: When set to true, no sitemap files will be served on the web frontend.
                mode:
                    readOnly: true
                    enum:
                        - PLATFORM_MODE_UNSPECIFIED
                        - PLATFORM_MODE_MOTTO_DEFAULT
                        - PLATFORM_MODE_MOTTO_MANAGED
                        - PLATFORM_MODE_MOTTO_DEPLOYED
                        - PLATFORM_MODE_CUSTOMER_MANAGED
                    type: string
                    description: |-
                        The mode in which the platform operates. This setting changes what kinds of operations are available in the
                         Motto Studio, the API, and the agentic SDK.
                         This field can only be updated by the Motto support team.
                    format: enum
            description: Platform is a configuration object that defines the structure of a Motto OTT platform instance.
        motto.ott.platform.v1.PlatformVersion:
            type: object
            properties:
                version:
                    type: string
                    description: |-
                        The version of the Motto OTT platform that is running in this environment. This should follow semantic versioning,
                         e.g. "1.0.0", and should align with the versioning used in the Motto OTT documentation.
                deploying_version:
                    type: string
                    description: |-
                        The version of the Motto OTT platform that is currently being deployed to this environment. This should follow semantic versioning,
                         e.g. "1.2.0", and should align with the versioning used in the Motto OTT documentation.
                         This is used to track deployments in progress, and will be set when a deployment is initiated using the DeployPlatform API.
                         When a deployment is done (either successful or failed), this field will be unset by the system.
                deployment_failed:
                    type: boolean
                    description: Will be set to true when the latest deployment failed.
                deployment_started_at:
                    type: string
                    description: The time at which the latest deployment started
                    format: date-time
                deployment_ended_at:
                    type: string
                    description: The time at which the latest deployment ended
                    format: date-time
        motto.ott.platform.v1.UpdatePlatformRequest:
            required:
                - platform_id
                - platform
                - update_mask
            type: object
            properties:
                platform_id:
                    type: string
                platform:
                    $ref: '#/components/schemas/motto.ott.platform.v1.Platform'
                update_mask:
                    type: string
                    format: field-mask
        motto.ott.platform.v1.UpdatePlatformResponse:
            type: object
            properties:
                platform:
                    $ref: '#/components/schemas/motto.ott.platform.v1.Platform'
        motto.ott.slug.v1.CreateSlugResponse:
            type: object
            properties:
                slug:
                    $ref: '#/components/schemas/motto.ott.slug.v1.Slug'
        motto.ott.slug.v1.DeleteSlugResponse:
            type: object
            properties: {}
        motto.ott.slug.v1.GetSlugResponse:
            type: object
            properties:
                slug:
                    $ref: '#/components/schemas/motto.ott.slug.v1.Slug'
        motto.ott.slug.v1.ListSlugsResponse:
            type: object
            properties:
                slugs:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.ott.slug.v1.Slug'
                next_page_token:
                    type: string
                    description: |-
                        The pagination token that should be used to get next slug results.
                         An empty value means no more results
        motto.ott.slug.v1.Slug:
            required:
                - slug
                - project_id
                - path
            type: object
            properties:
                slug:
                    type: string
                    description: The slug for a page. This cannot contain any `/` characters, other than as the first character.
                project_id:
                    type: string
                platform_id:
                    type: string
                    description: The platform ID that this slug belongs to.
                path:
                    type: string
                    description: |-
                        The path to the page that this slug is for. This includes all segments except the language segment.
                         An example path might be `/entity/competition/HiKTtRZYdyGU/2024`
                is_canonical:
                    type: boolean
                    description: |-
                        If set to true, all other slugs for this path will 301 redirect to this slug.
                         There can only be one canonical slug per path.
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    format: enum
            description: |-
                Slugs can be created to generate a better looking URL for your pages, leading to better SEO and user experience.
                 For example, for an entity page that requires two variables,
                 instead of using https://example.com/en-US/entity/competition/HiKTtRZYdyGU/2024 you can define a slug for https://example.com/en-US/la-liga-2024.
                 The slug would be `/la-liga-2024` and the path would be `/entity/competition/HiKTtRZYdyGU/2024`
                 (excluding the language segment, including the leading slash).
        motto.streaming.asset.v1.Asset:
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: The ID of the asset.
                name:
                    type: string
                    description: |-
                        The name of the asset.
                         It typically is the filename of the asset.
                project_id:
                    readOnly: true
                    type: string
                    description: The ID of the project that owns the asset.
                type:
                    readOnly: true
                    enum:
                        - ASSET_TYPE_UNSPECIFIED
                        - ASSET_TYPE_IMAGE
                        - ASSET_TYPE_VIDEO
                        - ASSET_TYPE_AUDIO
                        - ASSET_TYPE_FONT
                        - ASSET_TYPE_TEXT
                    type: string
                    description: The type of the asset.
                    format: enum
                content_type:
                    readOnly: true
                    type: string
                    description: |-
                        The content type of the asset.
                         For example, `image/png`, `image/jpeg`, `video/mp4`, etc.
                size_bytes:
                    readOnly: true
                    type: string
                    description: The size of the asset in bytes.
                access_control_mode:
                    enum:
                        - ACCESS_CONTROL_MODE_UNSPECIFIED
                        - ACCESS_CONTROL_MODE_PUBLICREAD
                        - ACCESS_CONTROL_MODE_SIGNEDREAD
                    type: string
                    description: |-
                        The access control mode of the asset.
                         If not specified, the default is `ACCESS_CONTROL_MODE_PUBLICREAD`.
                         It indicates whether the asset is publicly accessible via
                         a URL or it's accessible only via a signed URL.
                    format: enum
                create_time:
                    readOnly: true
                    type: string
                    description: The time when the asset was created.
                    format: date-time
                labels:
                    readOnly: true
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.asset.v1.Label'
                    description: Labels of the asset. It can be used to filter assets.
        motto.streaming.asset.v1.DeleteAssetResponse:
            type: object
            properties: {}
        motto.streaming.asset.v1.GetAssetResponse:
            type: object
            properties:
                asset:
                    $ref: '#/components/schemas/motto.streaming.asset.v1.Asset'
        motto.streaming.asset.v1.GetAssetURLResponse:
            type: object
            properties:
                url:
                    type: string
                    description: The signed or public URL for downloading or reading an asset.
        motto.streaming.asset.v1.Label:
            type: object
            properties:
                key:
                    type: string
                    description: The key of the label.
                value:
                    type: string
                    description: The value of the label.
        motto.streaming.asset.v1.ListAssetsResponse:
            type: object
            properties:
                assets:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.asset.v1.Asset'
                    description: List of assets.
                next_page_token:
                    type: string
                    description: |-
                        If there are more results than have been returned, then this field is set
                         to a non-empty value.  To see the additional results,
                         use that value as `page_token` in the next call to this method.
        motto.streaming.asset.v1.SetLabelsResponse:
            type: object
            properties: {}
        motto.streaming.clip.v1.Clip:
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: id of the clip
                project_id:
                    readOnly: true
                    type: string
                    description: project id of the clip
                name:
                    readOnly: true
                    type: string
                    description: The name of the clip. It's set to the generated output's name.
                playlist_url:
                    readOnly: true
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.clip.v1.PlaylistUrl'
                    description: |-
                        playlist url of the media to be clipped.
                         Currently only supports HLS(m3u8) playlist.
                asset_id:
                    readOnly: true
                    type: string
                    description: |-
                        asset id of the clip

                        Important: at most one of `asset_id`, `reserved_asset_id` may be set per request.
                reserved_asset_id:
                    readOnly: true
                    type: string
                    description: |-
                        reserved asset id of the clip.
                         while the clip is being created, the asset id is reserved.

                        Important: at most one of `asset_id`, `reserved_asset_id` may be set per request.
                trim_in:
                    readOnly: true
                    pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$
                    type: string
                    description: |-
                        the moment in the source to start the clip
                         based on the source's timeline.

                         The unit of the value is`second` and also the value cannot be negative.
                         for example: 10s, 3s, and so on.
                trim_out:
                    readOnly: true
                    pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$
                    type: string
                    description: |-
                        the moment in the source to end the clip
                         based on the source's timeline.

                         The unit of the value is`second` and also the value cannot be negative.
                         for example: 10s, 3s, and so on.
                state:
                    readOnly: true
                    enum:
                        - STATE_UNSPECIFIED
                        - STATE_PROCESSING
                        - STATE_FAILED
                        - STATE_READY
                    type: string
                    description: state of the clip
                    format: enum
                labels:
                    readOnly: true
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.clip.v1.Label'
                    description: |-
                        labels of the clip.
                         labels will be assigned to the output asset.
        motto.streaming.clip.v1.CreateClipRequest:
            required:
                - project_id
                - name
            type: object
            properties:
                project_id:
                    type: string
                    description: The ID of the project that owns the clip and the output will be stored.
                name:
                    type: string
                    description: The name of the clip. It's set to the generated output's name.
                playlist_url:
                    readOnly: true
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.clip.v1.PlaylistUrl'
                    description: |-
                        playlist url of the media to be clipped.
                         Currently only supports HLS(m3u8) playlist.
                trim_in:
                    pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$
                    type: string
                    description: |-
                        the moment in the source to start the clip
                         based on the source's timeline.
                         if not set, the clip will start at the beginning of the source.

                         For example if the source is 10 minutes long and `trim_in` is set to 5 minutes,
                         the clip will start at 5 minutes into the source.

                         The unit of the value is`second` and also the value cannot be negative.
                         for example: 10s, 3s, and so on.
                trim_out:
                    pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$
                    type: string
                    description: |-
                        the moment in the source to end the clip
                         based on the source's timeline.
                         if not set, the clip will end at the end of the source.

                         For example, if the source is 10 minutes long and `trim_out` is set to 7 minutes,
                         the clip ends at the 7th minute of the source.


                         The unit of the value is`second` and also the value cannot be negative.
                         for example: 10s, 3s, and so on.
                labels:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.clip.v1.Label'
                    description: |-
                        labels of the clip.
                         labels will be assigned to the output asset.
            description: CreateClipRequest is the request message for CreateClip.
        motto.streaming.clip.v1.CreateClipResponse:
            type: object
            properties:
                clip:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.clip.v1.Clip'
                    description: The created clip.
            description: CreateClipResponse is the response message for CreateClip.
        motto.streaming.clip.v1.GetClipResponse:
            type: object
            properties:
                clip:
                    $ref: '#/components/schemas/motto.streaming.clip.v1.Clip'
        motto.streaming.clip.v1.Label:
            type: object
            properties:
                key:
                    type: string
                    description: The key of the label.
                value:
                    type: string
                    description: The value of the label.
        motto.streaming.clip.v1.PlaylistUrl:
            type: object
            properties:
                playlist_url:
                    type: string
                    description: |-
                        playlist url of the media to be clipped.
                         Currently only supports HLS(m3u8) playlist.
                bearer_token:
                    type: string
                    description: |-
                        The Bearer token to include in the authorization header to access the playlist.
                         Can be left empty if the playlist is publicly accessible.

                         For security reasons, this will not appear in the response.
        motto.streaming.configuration.v1.AttachConfigurationResponse:
            type: object
            properties: {}
        motto.streaming.configuration.v1.AutomatedTaggingConfiguration:
            type: object
            properties:
                enabled:
                    type: boolean
                    description: Whether automated annotation tagging should be enabled for the workflow. Defaults to false, as it comes with additional costs.
            description: The configuration is for automated annotation tagging (AI).
        motto.streaming.configuration.v1.Configuration:
            required:
                - project_id
                - name
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                project_id:
                    type: string
                name:
                    type: string
                    description: The name of the configuration.
                description:
                    type: string
                    description: The description of the configuration.
                default:
                    type: boolean
                    description: |-
                        Indicates whether this configuration should be applied by default when no configuration is attached to a workflow or simulcast.
                         There can only be one default configuration per type.
                disabled:
                    type: boolean
                    description: |-
                        Indicates that the configuration should not appear as a selectable option in the UI. This configuration will still be usable
                         by any object it is connected to.
                type:
                    enum:
                        - CONFIGURATION_TYPE_UNSPECIFIED
                        - CONFIGURATION_TYPE_TRANSCODER_STREAMS
                        - CONFIGURATION_TYPE_TRANSCODER_OVERLAYS
                        - CONFIGURATION_TYPE_AUTOMATED_TAGGING
                    type: string
                    description: The type of the configuration. This is used to determine which configuration options are available.
                    format: enum
                data:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.configuration.v1.ConfigurationData'
                    description: The data for the configuration based on the type.
        motto.streaming.configuration.v1.ConfigurationData:
            type: object
            properties:
                transcoder_streams:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.configuration.v1.TranscoderStreamsConfiguration'
                    description: |-
                        The configuration is for transcoder streams.

                        Important: at most one of `transcoder_streams`, `transcoder_overlays`, `automated_tagging` may be set per request.
                transcoder_overlays:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.configuration.v1.TranscoderOverlaysConfiguration'
                    description: |-
                        The configuration is for transcoder overlays (e.g. logos, watermarks).

                        Important: at most one of `transcoder_streams`, `transcoder_overlays`, `automated_tagging` may be set per request.
                automated_tagging:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.configuration.v1.AutomatedTaggingConfiguration'
                    description: |-
                        The configuration is for automated annotation tagging (AI).

                        Important: at most one of `transcoder_streams`, `transcoder_overlays`, `automated_tagging` may be set per request.
            description: The data for the configuration. This should match the ConfigurationType.
        motto.streaming.configuration.v1.CreateConfigurationResponse:
            type: object
            properties:
                configuration:
                    $ref: '#/components/schemas/motto.streaming.configuration.v1.Configuration'
        motto.streaming.configuration.v1.DeleteConfigurationResponse:
            type: object
            properties: {}
        motto.streaming.configuration.v1.DetachConfigurationResponse:
            type: object
            properties: {}
        motto.streaming.configuration.v1.GetConfigurationResponse:
            type: object
            properties:
                configuration:
                    $ref: '#/components/schemas/motto.streaming.configuration.v1.Configuration'
        motto.streaming.configuration.v1.ListConfigurationsResponse:
            type: object
            properties:
                configurations:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.configuration.v1.Configuration'
                next_page_token:
                    type: string
                    description: |-
                        If there are more results than have been returned, then this field is set
                         to a non-empty value.  To see the additional results,
                         use that value as `page_token` in the next call to this method.
        motto.streaming.configuration.v1.StaticOverlay:
            type: object
            properties:
                asset_id:
                    type: string
                    description: The Motto asset ID of the overlay image.
                x:
                    type: number
                    description: |-
                        The horizontal position of the overlay as a fraction between 0 and 1, where 0 indicates the left edge of the video,
                         and 1 the right edge.
                    format: float
                y:
                    type: number
                    description: |-
                        The vertical position of the overlay as a fraction between 0 and 1, where 0 indicates the top edge of the video,
                         and 1 the bottom edge.
                    format: float
                width:
                    type: number
                    description: A value between 0 and 1 that indicates the width of the overlay image as a percentage of the video width.
                    format: float
                height:
                    type: number
                    description: |-
                        A value between 0 and 1 that indicates the height of the overlay image as a percentage of the video height.
                         If not set while width is known, the aspect ratio of the image will be preserved.
                    format: float
            description: The static overlay configuration
        motto.streaming.configuration.v1.TranscoderOverlaysConfiguration:
            type: object
            properties:
                static_overlays:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.configuration.v1.StaticOverlay'
                    description: |-
                        A list of static image overlays that should be applied to the transcoded video.
                         For dynamic overlays (e.g. scoreboards or moving sponsorship graphics), please consult the documentation or
                         contact Motto support.
            description: The configuration is for transcoder overlays (e.g. logos, watermarks).
        motto.streaming.configuration.v1.TranscoderStream:
            type: object
            properties:
                video_quality:
                    enum:
                        - VIDEO_QUALITY_UNSPECIFIED
                        - VIDEO_QUALITY_240P
                        - VIDEO_QUALITY_360P
                        - VIDEO_QUALITY_480P
                        - VIDEO_QUALITY_720P
                        - VIDEO_QUALITY_1080P
                        - VIDEO_QUALITY_1440P
                        - VIDEO_QUALITY_2160P
                    type: string
                    description: The quality of the video stream. Together with the aspect ratio, this will determine the resolution of the transcoded video.
                    format: enum
                video_aspect_ratio:
                    enum:
                        - VIDEO_ASPECT_RATIO_UNSPECIFIED
                        - VIDEO_ASPECT_RATIO_16_9
                        - VIDEO_ASPECT_RATIO_9_16
                    type: string
                    description: The aspect ratio of the video stream. Together with the quality, this will determine the resolution of the transcoded video.
                    format: enum
                video_bitrate:
                    type: integer
                    description: |-
                        The bitrate of the video stream in bits per second for the transcoded output. This is the target bitrate, the actual
                         bitrate may vary slightly.
                    format: int32
                video_framerate:
                    type: integer
                    description: |-
                        The framerate of the video stream in frames per second for the transcoded output. This is the target framerate, the
                         actual framerate may vary slightly.
                    format: int32
                video_keyframe_interval:
                    type: number
                    description: |-
                        The interval between key frames in seconds for the transcoded output.
                         It must not be longer than segment duration. Is it recommended to set this to a divisor of the segment duration
                         (e.g. 2 seconds for a 6-second segment duration).
                    format: float
                segment_duration:
                    type: number
                    description: |-
                        The output segment size in seconds. Motto currently supports values between 4 and 10 seconds. For low-latency
                         streaming (e.g. LL-HLS), please consult the documentation or contact Motto support.
                    format: float
            description: The transcoder stream configuration
        motto.streaming.configuration.v1.TranscoderStreamsConfiguration:
            type: object
            properties:
                streams:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.configuration.v1.TranscoderStream'
                    description: A transcoder can have multiple streams. Each stream will be transcoded separately.
            description: The configuration is for transcoder streams.
        motto.streaming.configuration.v1.UpdateConfigurationRequest:
            required:
                - configuration_id
            type: object
            properties:
                configuration_id:
                    type: string
                configuration:
                    $ref: '#/components/schemas/motto.streaming.configuration.v1.Configuration'
                update_mask:
                    type: string
                    format: field-mask
        motto.streaming.configuration.v1.UpdateConfigurationResponse:
            type: object
            properties:
                configuration:
                    $ref: '#/components/schemas/motto.streaming.configuration.v1.Configuration'
        motto.streaming.ingest.v1.CreateRTMPIngestResponse:
            type: object
            properties:
                rtmp_ingest:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.ingest.v1.RTMPIngest'
                    description: The created RTMP ingest.
            description: Response message for CreateRTMPIngest.
        motto.streaming.ingest.v1.DeleteRTMPIngestResponse:
            type: object
            properties: {}
            description: Response message for DeleteRTMPIngest.
        motto.streaming.ingest.v1.DisconnectRTMPIngestRequest:
            type: object
            properties:
                rtmp_ingest_id:
                    type: string
                    description: The ID of the RTMP ingest to disconnect.
            description: Request message for DisconnectRTMPIngestRequest.
        motto.streaming.ingest.v1.DisconnectRTMPIngestResponse:
            type: object
            properties: {}
            description: Response message for DisconnectRTMPIngestRequest.
        motto.streaming.ingest.v1.GetRTMPIngestResponse:
            type: object
            properties:
                rtmp_ingest:
                    $ref: '#/components/schemas/motto.streaming.ingest.v1.RTMPIngest'
        motto.streaming.ingest.v1.ListRTMPIngestsResponse:
            type: object
            properties:
                rtmp_ingests:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.ingest.v1.RTMPIngest'
                next_page_token:
                    type: string
        motto.streaming.ingest.v1.ListServersResponse:
            type: object
            properties:
                servers:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.ingest.v1.Server'
                next_page_token:
                    type: string
                    description: |-
                        If there are more results than have been returned, then this field is set
                         to a non-empty value.  To see the additional results,
                         use that value as `page_token` in the next call to this method.
        motto.streaming.ingest.v1.PullRTMPIngestRequest:
            type: object
            properties:
                rtmp_ingest_id:
                    type: string
                    description: The ID of the RTMP ingest to start pulling.
            description: Request message for PullRTMPIngestRequest.
        motto.streaming.ingest.v1.PullRTMPIngestResponse:
            type: object
            properties: {}
            description: Response message for PullRTMPIngestRequest.
        motto.streaming.ingest.v1.RTMPIngest:
            required:
                - region
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                project_id:
                    readOnly: true
                    type: string
                region:
                    enum:
                        - REGION_UNSPECIFIED
                        - REGION_AF
                        - REGION_AS
                        - REGION_EU
                        - REGION_NA
                        - REGION_OC
                        - REGION_SA
                    type: string
                    format: enum
                key:
                    readOnly: true
                    type: string
                connected:
                    readOnly: true
                    type: boolean
                disabled:
                    type: boolean
                name:
                    type: string
                description:
                    type: string
                pull_url:
                    type: string
                last_update_time:
                    readOnly: true
                    type: string
                    description: This field indicates when the RTMP ingest was last updated, including when it was last connected/disconnected to.
                    format: date-time
        motto.streaming.ingest.v1.Server:
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                endpoint_url:
                    readOnly: true
                    type: string
                region:
                    readOnly: true
                    enum:
                        - REGION_UNSPECIFIED
                        - REGION_AF
                        - REGION_AS
                        - REGION_EU
                        - REGION_NA
                        - REGION_OC
                        - REGION_SA
                    type: string
                    format: enum
                server_protocol:
                    readOnly: true
                    enum:
                        - SERVER_PROTOCOL_UNSPECIFIED
                        - SERVER_PROTOCOL_RTMP
                        - SERVER_PROTOCOL_SRT
                    type: string
                    format: enum
                available:
                    readOnly: true
                    type: boolean
        motto.streaming.ingest.v1.UpdateRTMPIngestRequest:
            type: object
            properties:
                rtmp_ingest_id:
                    type: string
                rtmp_ingest:
                    $ref: '#/components/schemas/motto.streaming.ingest.v1.RTMPIngest'
                update_mask:
                    type: string
                    format: field-mask
        motto.streaming.ingest.v1.UpdateRTMPIngestResponse:
            type: object
            properties:
                rtmp_ingest:
                    $ref: '#/components/schemas/motto.streaming.ingest.v1.RTMPIngest'
        motto.streaming.ingest.v2.CreateIngestResponse:
            type: object
            properties:
                ingest:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.ingest.v2.Ingest'
                    description: The created ingest.
            description: Response message for CreateIngest.
        motto.streaming.ingest.v2.DeleteIngestResponse:
            type: object
            properties: {}
            description: Response message for DeleteIngest.
        motto.streaming.ingest.v2.DisconnectIngestRequest:
            type: object
            properties:
                ingest_id:
                    type: string
                    description: The ID of the ingest to disconnect.
            description: Request message for DisconnectIngestRequest.
        motto.streaming.ingest.v2.DisconnectIngestResponse:
            type: object
            properties: {}
            description: Response message for DisconnectIngestRequest.
        motto.streaming.ingest.v2.GetIngestResponse:
            type: object
            properties:
                ingest:
                    $ref: '#/components/schemas/motto.streaming.ingest.v2.Ingest'
        motto.streaming.ingest.v2.Ingest:
            required:
                - region
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                project_id:
                    readOnly: true
                    type: string
                region:
                    enum:
                        - REGION_UNSPECIFIED
                        - REGION_AF
                        - REGION_AS
                        - REGION_EU
                        - REGION_NA
                        - REGION_OC
                        - REGION_SA
                    type: string
                    format: enum
                key:
                    readOnly: true
                    type: string
                    description: For RTMP, this is the stream key. For SRT, this is the `streamid` parameter in the URL.
                passphrase:
                    type: string
                    description: For SRT only, this is the `passphrase` parameter in the URL.
                connected:
                    readOnly: true
                    type: boolean
                disabled:
                    type: boolean
                name:
                    type: string
                description:
                    type: string
                pull_url:
                    type: string
                last_update_time:
                    readOnly: true
                    type: string
                    description: This field indicates when the ingest was last updated, including when it was last connected/disconnected to.
                    format: date-time
        motto.streaming.ingest.v2.ListIngestsResponse:
            type: object
            properties:
                ingests:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.ingest.v2.Ingest'
                next_page_token:
                    type: string
        motto.streaming.ingest.v2.ListServersResponse:
            type: object
            properties:
                servers:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.ingest.v2.Server'
                next_page_token:
                    type: string
                    description: |-
                        If there are more results than have been returned, then this field is set
                         to a non-empty value.  To see the additional results,
                         use that value as `page_token` in the next call to this method.
        motto.streaming.ingest.v2.PullIngestRequest:
            type: object
            properties:
                ingest_id:
                    type: string
                    description: The ID of the ingest to start pulling.
            description: Request message for PullIngestRequest.
        motto.streaming.ingest.v2.PullIngestResponse:
            type: object
            properties: {}
            description: Response message for PullIngestRequest.
        motto.streaming.ingest.v2.Server:
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                endpoint_url:
                    readOnly: true
                    type: string
                region:
                    readOnly: true
                    enum:
                        - REGION_UNSPECIFIED
                        - REGION_AF
                        - REGION_AS
                        - REGION_EU
                        - REGION_NA
                        - REGION_OC
                        - REGION_SA
                    type: string
                    format: enum
                server_protocol:
                    readOnly: true
                    enum:
                        - SERVER_PROTOCOL_UNSPECIFIED
                        - SERVER_PROTOCOL_RTMP
                        - SERVER_PROTOCOL_SRT
                    type: string
                    format: enum
                available:
                    readOnly: true
                    type: boolean
        motto.streaming.ingest.v2.UpdateIngestRequest:
            type: object
            properties:
                ingest_id:
                    type: string
                ingest:
                    $ref: '#/components/schemas/motto.streaming.ingest.v2.Ingest'
                update_mask:
                    type: string
                    format: field-mask
        motto.streaming.ingest.v2.UpdateIngestResponse:
            type: object
            properties:
                ingest:
                    $ref: '#/components/schemas/motto.streaming.ingest.v2.Ingest'
        motto.streaming.live_stream.v1.CreateLiveStreamResponse:
            type: object
            properties:
                live_stream:
                    $ref: '#/components/schemas/motto.streaming.live_stream.v1.LiveStream'
        motto.streaming.live_stream.v1.DeleteLiveStreamResponse:
            type: object
            properties: {}
        motto.streaming.live_stream.v1.GetLiveStreamResponse:
            type: object
            properties:
                live_stream:
                    $ref: '#/components/schemas/motto.streaming.live_stream.v1.LiveStream'
        motto.streaming.live_stream.v1.ListLiveStreamsResponse:
            type: object
            properties:
                live_streams:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.live_stream.v1.LiveStream'
                next_page_token:
                    type: string
                    description: |-
                        If there are more results than have been returned, then this field is set
                         to a non-empty value.  To see the additional results,
                         use that value as `page_token` in the next call to this method.
        motto.streaming.live_stream.v1.LiveStream:
            required:
                - project_id
                - name
                - region
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                project_id:
                    type: string
                name:
                    type: string
                region:
                    enum:
                        - REGION_UNSPECIFIED
                        - REGION_AF
                        - REGION_AS
                        - REGION_EU
                        - REGION_NA
                        - REGION_OC
                        - REGION_SA
                    type: string
                    format: enum
                rtmp_ingest_id:
                    type: string
                video_id:
                    readOnly: true
                    type: string
                simulcasts:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.simulcast.v1.Simulcast'
                accept_input:
                    type: boolean
                    description: |-
                        Accept input from the input source.
                         If set to false, the live stream will not accept input from the input source
                         regardless of the input source's state (e.g., the input source is live).
                         If set to true, the live stream will accept input from the input source
                         if the input source is live.
                         By default, it is set to `true`.
                priority:
                    type: string
                    description: |-
                        Priority of the live stream. This is used to sort the live streams and to discover the next live stream to run when
                         multiple streams are connected to a shared ingest.
                rtmp_ingest_url:
                    readOnly: true
                    type: string
                    description: |-
                        An RTMP ingest URL that can be used to stream to this live stream.
                         When this is provided, this should be used instead of the the streaming details associated with the `ingest_id` field(s).
                srt_ingest_url:
                    readOnly: true
                    type: string
                    description: |-
                        An SRT ingest URL that can be used to stream to this live stream.
                         When this is provided, this should be used instead of the the streaming details associated with the `ingest_id` field(s).
        motto.streaming.live_stream.v1.UpdateLiveStreamRequest:
            required:
                - live_stream_id
            type: object
            properties:
                live_stream_id:
                    type: string
                live_stream:
                    $ref: '#/components/schemas/motto.streaming.live_stream.v1.LiveStream'
                update_mask:
                    type: string
                    format: field-mask
        motto.streaming.live_stream.v1.UpdateLiveStreamResponse:
            type: object
            properties:
                live_stream:
                    $ref: '#/components/schemas/motto.streaming.live_stream.v1.LiveStream'
        motto.streaming.live_stream.v2.CreateLiveStreamResponse:
            type: object
            properties:
                live_stream:
                    $ref: '#/components/schemas/motto.streaming.live_stream.v2.LiveStream'
        motto.streaming.live_stream.v2.DeleteLiveStreamResponse:
            type: object
            properties: {}
        motto.streaming.live_stream.v2.GetLiveStreamResponse:
            type: object
            properties:
                live_stream:
                    $ref: '#/components/schemas/motto.streaming.live_stream.v2.LiveStream'
        motto.streaming.live_stream.v2.ListLiveStreamsResponse:
            type: object
            properties:
                live_streams:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.live_stream.v2.LiveStream'
                next_page_token:
                    type: string
                    description: |-
                        If there are more results than have been returned, then this field is set
                         to a non-empty value.  To see the additional results,
                         use that value as `page_token` in the next call to this method.
        motto.streaming.live_stream.v2.LiveStream:
            required:
                - project_id
                - name
                - region
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                project_id:
                    type: string
                name:
                    type: string
                    description: |-
                        The name of the video. This is a canonical name that is independent of locales, and is primarily meant for internal
                         purposes (e.g. a name for tracking in analytics). For end-user facing purposes, use `localized_title`.
                region:
                    enum:
                        - REGION_UNSPECIFIED
                        - REGION_AF
                        - REGION_AS
                        - REGION_EU
                        - REGION_NA
                        - REGION_OC
                        - REGION_SA
                    type: string
                    format: enum
                localized_title:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized titles for this stream, 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.

                         If this is not provided, fallback to `name`.
                ingest_id:
                    type: string
                video_id:
                    readOnly: true
                    type: string
                simulcasts:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.simulcast.v1.Simulcast'
                accept_input:
                    type: boolean
                    description: |-
                        Accept input from the input source.
                         If set to false, the live stream will not accept input from the input source
                         regardless of the input source's state (e.g., the input source is live).
                         If set to true, the live stream will accept input from the input source
                         if the input source is live.
                         By default, it is set to `true`.
                priority:
                    type: string
                    description: |-
                        Priority of the live stream. This is used to sort the live streams and to discover the next live stream to run when
                         multiple streams are connected to a shared ingest.
                external_rtmp_ingest_url:
                    readOnly: true
                    type: string
                    description: |-
                        When this livestream was created with an external platform (e.g. Cloudflare as a fallback solution), this RTMP ingest URL
                         can be used to stream to this live stream.
                         When this is provided, this should be used instead of the the streaming details associated with the `ingest_id` field(s).
                external_srt_ingest_url:
                    readOnly: true
                    type: string
                    description: |-
                        When this livestream was created with an external platform (e.g. Cloudflare as a fallback solution), this SRT ingest URL
                         can be used to stream to this live stream.
                         When this is provided, this should be used instead of the the streaming details associated with the `ingest_id` field(s).
        motto.streaming.live_stream.v2.UpdateLiveStreamRequest:
            required:
                - live_stream_id
            type: object
            properties:
                live_stream_id:
                    type: string
                live_stream:
                    $ref: '#/components/schemas/motto.streaming.live_stream.v2.LiveStream'
                update_mask:
                    type: string
                    format: field-mask
        motto.streaming.live_stream.v2.UpdateLiveStreamResponse:
            type: object
            properties:
                live_stream:
                    $ref: '#/components/schemas/motto.streaming.live_stream.v2.LiveStream'
        motto.streaming.playlist.v1.DVRSettings:
            type: object
            properties:
                window_size_seconds:
                    type: integer
                    format: int32
        motto.streaming.playlist.v1.GetPlaylistResponse:
            type: object
            properties:
                playlist:
                    $ref: '#/components/schemas/motto.streaming.playlist.v1.Playlist'
        motto.streaming.playlist.v1.GetPlaylistStatisticsResponse:
            type: object
            properties:
                duration_seconds:
                    type: number
                    format: float
                video_variant_count:
                    type: integer
                    format: int32
                audio_variant_count:
                    type: integer
                    format: int32
                subtitle_variant_count:
                    type: integer
                    format: int32
                has_discontinuities:
                    type: boolean
                    description: |-
                        If the playlist has discontinuities, meaning it has multiple segment collections with a break inbetween,
                         this will be set to true.
                target_segment_duration:
                    type: number
                    description: The duration of each individual segment.
                    format: float
        motto.streaming.playlist.v1.Playlist:
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: |-
                        The ID of the playlist.
                         For example: "p2YzNCA-0PTigkfN8xN3L"
                name:
                    type: string
                    description: |-
                        The name of the playlist.
                         For example: "Raw" or "playlist 1"
                format:
                    readOnly: true
                    enum:
                        - PLAYLIST_FORMAT_UNSPECIFIED
                        - PLAYLIST_FORMAT_HLS
                    type: string
                    format: enum
                private_url:
                    readOnly: true
                    type: string
                public_url:
                    readOnly: true
                    type: string
                dvr_settings:
                    $ref: '#/components/schemas/motto.streaming.playlist.v1.DVRSettings'
                visibility:
                    enum:
                        - VISIBILITY_UNSPECIFIED
                        - VISIBILITY_PUBLISHED
                        - VISIBILITY_UNLISTED
                        - VISIBILITY_HIDDEN
                    type: string
                    description: |-
                        The visibility of the playlist. This affects the entire playlist.
                         Individual segments can still be made invisible using VisibilityMarkers.
                    format: enum
                org_id:
                    readOnly: true
                    type: string
                project_id:
                    readOnly: true
                    type: string
                video_id:
                    readOnly: true
                    type: string
                visibility_markers:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.playlist.v1.VisibilityMarker'
                    description: |-
                        Optional. A list of visibility markers that define which parts of the playlist are visible to end users.
                         If no markers are defined, all segments are considered visible (as long as the overall playlist visibility allows it).
                         Example:
                         Assume your playlist has a total duration of 600 seconds, and you define the following markers:
                           1. Start Publish, offset 120
                           2. End Publish, offset 480
                         This would mean that segments from 0 to 120 seconds are not visible, segments from 120 to 480 seconds are visible,
                         and segments from 480 to 600 seconds are not visible.

                         Note: The offset is relative to the start of the playlist, not the absolute time.
                         Note 2: Offsets that do not align with segment boundaries will be floored to the last segment end time. In the above example,
                         if segments are 6 seconds long, and you set a Start Publish marker at offset 123, it will be treated as offset 120.
        motto.streaming.playlist.v1.UpdatePlaylistResponse:
            type: object
            properties:
                playlist:
                    $ref: '#/components/schemas/motto.streaming.playlist.v1.Playlist'
        motto.streaming.playlist.v1.VisibilityMarker:
            type: object
            properties:
                type:
                    enum:
                        - VISIBILITY_MARKER_TYPE_UNSPECIFIED
                        - VISIBILITY_MARKER_TYPE_START_PUBLISH
                        - VISIBILITY_MARKER_TYPE_END_PUBLISH
                    type: string
                    format: enum
                offset:
                    type: string
                    description: |-
                        The number of seconds into the playlist at which this marker occurs.
                         Important: this is relative to the private playlist, meaning the offset is counted from the first available segment,
                         not the first visible segment as seen by the end user.
                priority:
                    type: string
                    description: |-
                        Optional. The priority of this marker. Markers with higher priority invalidate ALL markers with a lower priority.
                         For example, assume you have a stream of 300 seconds, and you apply these markers:
                           1. Start Publish, offset 120, priority 1
                           2. Start Publish, offset 180, priority 2
                           3. End Publish, offset 240, priority 1
                         This would mean all segments before offset 180 are not visible, but all segments from 180 to 300 are visible.
                         The End Publish marker at offset 240 is ignored because its priority (1) is lower than the Start Publish marker at
                         offset 180 (2).

                         Use priorities to implement an initial live experience where everything is visible from the first moment of publishing,
                         and then a VOD experience where more is trimmed by higher priority markers. This could improve the user experience,
                         for example as it would prevent having to seek to the kickoff point manually in VOD.
            description: A point in time that indicates whether the following segments should be visible or not.
        motto.streaming.simulcast.v1.CreateSimulcastResponse:
            type: object
            properties:
                simulcast:
                    $ref: '#/components/schemas/motto.streaming.simulcast.v1.Simulcast'
        motto.streaming.simulcast.v1.DeleteSimulcastResponse:
            type: object
            properties: {}
        motto.streaming.simulcast.v1.GetSimulcastResponse:
            type: object
            properties:
                simulcast:
                    $ref: '#/components/schemas/motto.streaming.simulcast.v1.Simulcast'
        motto.streaming.simulcast.v1.RTMPTarget:
            required:
                - url
            type: object
            properties:
                url:
                    type: string
                    description: RTMP target. The stream_key may be included in the url.
                stream_key:
                    type: string
                    description: RTMP stream key. This may be left empty if the stream_key is in the url.
        motto.streaming.simulcast.v1.SRTTarget:
            required:
                - url
            type: object
            properties:
                url:
                    type: string
                    description: SRT target. This should be the full SRT url to simulcast to, including any parameters that may be included (e.g. `streamid`, `passphrase` and `latency`).
        motto.streaming.simulcast.v1.Simulcast:
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: Id of the simulcast
                name:
                    type: string
                    description: Name of the simulcast
                status:
                    readOnly: true
                    enum:
                        - SIMULCAST_STATUS_UNSPECIFIED
                        - SIMULCAST_STATUS_IDLE
                        - SIMULCAST_STATUS_STARTING
                        - SIMULCAST_STATUS_ACTIVE
                        - SIMULCAST_STATUS_STOPPED
                        - SIMULCAST_STATUS_FAILED
                    type: string
                    format: enum
                rtmp_target:
                    $ref: '#/components/schemas/motto.streaming.simulcast.v1.RTMPTarget'
                    description: 'Important: at most one of `rtmp_target`, `srt_target` may be set per request.'
                srt_target:
                    $ref: '#/components/schemas/motto.streaming.simulcast.v1.SRTTarget'
                    description: 'Important: at most one of `rtmp_target`, `srt_target` may be set per request.'
                is_external:
                    readOnly: true
                    type: boolean
                    description: |-
                        If true, this indicates the simulcast is configured to operate in a third-party environment like Cloudflare.
                         This means that some features may not be available.
        motto.streaming.simulcast.v1.StartSimulcastResponse:
            type: object
            properties: {}
        motto.streaming.simulcast.v1.StopSimulcastResponse:
            type: object
            properties: {}
        motto.streaming.simulcast.v1.UpdateSimulcastRequest:
            required:
                - simulcast_id
                - live_stream_id
            type: object
            properties:
                simulcast_id:
                    type: string
                simulcast:
                    $ref: '#/components/schemas/motto.streaming.simulcast.v1.Simulcast'
                update_mask:
                    type: string
                    format: field-mask
                live_stream_id:
                    type: string
        motto.streaming.simulcast.v1.UpdateSimulcastResponse:
            type: object
            properties:
                simulcast:
                    $ref: '#/components/schemas/motto.streaming.simulcast.v1.Simulcast'
        motto.streaming.stitcher.v1.CreateStitcherRequest:
            required:
                - project_id
                - name
                - assets
            type: object
            properties:
                project_id:
                    type: string
                    description: The ID of the project that owns the stitcher and the output will be stored.
                name:
                    type: string
                    description: The name of the stitcher. It's set to the generated output's name.
                assets:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.stitcher.v1.InputAssets'
                    description: The input assets to be stitched.
                labels:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.stitcher.v1.Label'
                    description: |-
                        labels of the stitcher.
                         labels will be assigned to the output.
                delete_inputs_after_stitching:
                    type: boolean
                    description: Whether to delete input assets after stitching is complete.
            description: CreateStitcherRequest is the request message for CreateStitcher.
        motto.streaming.stitcher.v1.CreateStitcherResponse:
            type: object
            properties:
                stitcher:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.stitcher.v1.Stitcher'
                    description: The created stitcher.
            description: CreateStitcherResponse is the response message for CreateStitcher.
        motto.streaming.stitcher.v1.GetStitcherResponse:
            type: object
            properties:
                stitcher:
                    $ref: '#/components/schemas/motto.streaming.stitcher.v1.Stitcher'
        motto.streaming.stitcher.v1.InputAsset:
            type: object
            properties:
                asset_id:
                    type: string
                    description: asset id of the input asset
                config:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.stitcher.v1.InputConfig'
                    description: input config of the input asset
            description: |-
                InputAsset represents an input asset of the stitcher.
                 Assets must be in the same project as the stitcher and
                 must be a `video` asset with the same encoding settings.
        motto.streaming.stitcher.v1.InputAssets:
            type: object
            properties:
                assets:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.stitcher.v1.InputAsset'
                    description: The input assets to be stitched.
            description: InputAssets represents the input assets of the stitcher.
        motto.streaming.stitcher.v1.InputConfig:
            type: object
            properties:
                order_index:
                    type: integer
                    description: |-
                        The order index of the input.
                         Same index means the same order one after another.
                         Indices are not
                    format: uint32
        motto.streaming.stitcher.v1.Label:
            type: object
            properties:
                key:
                    type: string
                    description: The key of the label.
                value:
                    type: string
                    description: The value of the label.
        motto.streaming.stitcher.v1.Stitcher:
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: id of the stitcher
                project_id:
                    readOnly: true
                    type: string
                    description: project id of the stitcher
                name:
                    readOnly: true
                    type: string
                    description: The name of the stitcher. It's set to the generated output's name.
                assets:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.stitcher.v1.InputAssets'
                    description: The input assets to be stitched.
                asset_id:
                    readOnly: true
                    type: string
                    description: |-
                        asset id of the stitcher

                        Important: at most one of `asset_id`, `reserved_asset_id` may be set per request.
                reserved_asset_id:
                    readOnly: true
                    type: string
                    description: |-
                        reserved asset id of the stitcher.
                         while the output is being created, the asset id is reserved.

                        Important: at most one of `asset_id`, `reserved_asset_id` may be set per request.
                state:
                    readOnly: true
                    enum:
                        - STATE_UNSPECIFIED
                        - STATE_PROCESSING
                        - STATE_FAILED
                        - STATE_READY
                    type: string
                    description: state of the stitcher
                    format: enum
                labels:
                    readOnly: true
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.stitcher.v1.Label'
                    description: |-
                        labels of the stitcher.
                         labels will be assigned to the output.
                delete_inputs_after_stitching:
                    type: boolean
                    description: Whether to delete input assets after stitching is complete.
        motto.streaming.subtitle.v1.CreateTrackResponse:
            type: object
            properties:
                track:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.subtitle.v1.Track'
                    description: The created track.
            description: CreateTrackResponse is the response message for CreateTrack.
        motto.streaming.subtitle.v1.DeleteTrackResponse:
            type: object
            properties: {}
        motto.streaming.subtitle.v1.ListTracksResponse:
            type: object
            properties:
                tracks:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.subtitle.v1.Track'
                    description: List of tracks.
            description: ListTracksResponse is the response message for ListTracks.
        motto.streaming.subtitle.v1.Track:
            required:
                - project_id
                - locale
                - name
                - asset_id
                - playlist_id
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                project_id:
                    type: string
                locale:
                    type: string
                    description: The locale in which the subtitle track is defined.
                name:
                    type: string
                    description: The name of the track.
                asset_id:
                    type: string
                    description: The asset ID of the input file. This has to be a `.vtt` file for now.
                playlist_id:
                    type: string
                    description: |-
                        The playlist to which this track is associated. The duration of the playlist should equal the duration of the
                         subtitle track.
                state:
                    readOnly: true
                    enum:
                        - STATE_UNSPECIFIED
                        - STATE_CREATING
                        - STATE_RUNNING
                        - STATE_FAILED
                        - STATE_SUCCEEDED
                    type: string
                    format: enum
        motto.streaming.upload.v1.CreateUploadSessionRequest:
            required:
                - project_id
                - region
                - object_name
                - content_type
                - ttl
                - size_bytes
                - access_control_mode
            type: object
            properties:
                project_id:
                    type: string
                    description: |-
                        The ID of the project to create the upload session for.
                         It must be a valid project ID. The final destination of the file will be
                         determined by the project's region.
                region:
                    enum:
                        - REGION_UNSPECIFIED
                        - REGION_AF
                        - REGION_AS
                        - REGION_EU
                        - REGION_NA
                        - REGION_OC
                        - REGION_SA
                    type: string
                    description: |-
                        The region to create the upload session for.
                         It's recommended to use the region closest to the who will be reading the
                         file. The final destination of the file will be determined by the project's
                         region and will be stored in the region specified here.
                    format: enum
                object_name:
                    type: string
                    description: |-
                        The name of the object to create the upload session for.
                         It's recommended to use the name of the file being uploaded.
                content_type:
                    type: string
                    description: |-
                        The content type of the file being uploaded.
                         For example, "image/png".
                ttl:
                    pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$
                    type: string
                    description: |-
                        The duration of the upload session.
                         The upload session will expire after this duration. It's recommended to
                         keep this duration as short as possible and no longer than 24 hours.
                         It's useful when the session signed URL is shared with the client.
                size_bytes:
                    type: string
                    description: |-
                        The size of the file being uploaded.
                         It's useful when the session signed URL is shared with the client,
                         so the client won't be able to upload a file larger than the size specified
                         here.
                access_control_mode:
                    enum:
                        - ACCESS_CONTROL_MODE_UNSPECIFIED
                        - ACCESS_CONTROL_MODE_PUBLICREAD
                        - ACCESS_CONTROL_MODE_SIGNEDREAD
                    type: string
                    description: |-
                        The access control mode of the file being uploaded.
                         It's useful when the session signed URL is shared with the client,
                         so the client won't be able to download the file after it's uploaded.
                    format: enum
                resumable:
                    type: boolean
                    description: |-
                        Whether the upload session is resumable.
                         If set to true, the client can resume the upload session if it's interrupted.
                         It's useful when the client is uploading a large file and the upload session
                         is interrupted.
        motto.streaming.upload.v1.CreateUploadSessionResponse:
            type: object
            properties:
                upload_session:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.upload.v1.UploadSession'
                    description: Provides information about the upload session.
                signed_url:
                    type: string
                    description: |-
                        The signed URL to upload the file to.

                         The client should use this URL to upload the file via `PUT` request.
                         `Content-Type` header should be set to the value specified when creating
                         the upload session. The being uploaded `Content-Length` should be equal or
                         less than the size specified when creating the upload session.

                         The client should use `Blob` or `Binary` payload type for the request body and
                         only send the file content. For example, formData is not supported because it
                         will add additional metadata to the request body and increase the size of the
                         request body which will cause the upload to fail because the size of the
                         body will be larger than the size specified when creating the upload session.

                         Chunked uploads are supported for large files.
        motto.streaming.upload.v1.UploadSession:
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                    description: A unique identifier for the upload session.
                project_id:
                    readOnly: true
                    type: string
                    description: The project ID of the upload session.
                reserved_asset_id:
                    readOnly: true
                    type: string
                    description: |-
                        The reserved asset ID of the upload session.
                         This is the asset ID that will be assigned to the asset once the upload
                         session is completed.
                object_name:
                    readOnly: true
                    type: string
                    description: |-
                        Object name of the upload session.
                         This is the object name that will be assigned to the asset once the upload
                         session is completed. It's typically the name of the file.
                content_type:
                    readOnly: true
                    type: string
                    description: |-
                        The content type of the upload session.
                         For example, "image/jpeg".
                size_bytes:
                    readOnly: true
                    type: string
                    description: The size of the upload session in bytes.
                access_control_mode:
                    readOnly: true
                    enum:
                        - ACCESS_CONTROL_MODE_UNSPECIFIED
                        - ACCESS_CONTROL_MODE_PUBLICREAD
                        - ACCESS_CONTROL_MODE_SIGNEDREAD
                    type: string
                    description: |-
                        The access control mode of the file being uploaded.
                         It's useful when the session signed URL is shared with the client,
                         so the client won't be able to download the file after it's uploaded.
                    format: enum
                expire_time:
                    readOnly: true
                    type: string
                    description: The expiration time of the upload session.
                    format: date-time
                create_time:
                    readOnly: true
                    type: string
                    description: The creation time of the upload session.
                    format: date-time
        motto.streaming.video.v1.DeleteVideoResponse:
            type: object
            properties: {}
        motto.streaming.video.v1.GetVideoResponse:
            type: object
            properties:
                video:
                    $ref: '#/components/schemas/motto.streaming.video.v1.Video'
        motto.streaming.video.v1.ListVideosResponse:
            type: object
            properties:
                videos:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.video.v1.Video'
                next_page_token:
                    type: string
                    description: |-
                        If there are more results than have been returned, then this field is set
                         to a non-empty value.  To see the additional results,
                         use that value as `page_token` in the next call to this method.
        motto.streaming.video.v1.UpdateVideoRequest:
            required:
                - video_id
            type: object
            properties:
                video_id:
                    type: string
                video:
                    $ref: '#/components/schemas/motto.streaming.video.v1.Video'
                update_mask:
                    type: string
                    format: field-mask
        motto.streaming.video.v1.UpdateVideoResponse:
            type: object
            properties:
                video:
                    $ref: '#/components/schemas/motto.streaming.video.v1.Video'
        motto.streaming.video.v1.Video:
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                name:
                    type: string
                    description: |-
                        The name of the video. This is a canonical name that is independent of locales, and is primarily meant for internal
                         purposes (e.g. a name for tracking in analytics). For end-user facing purposes, use `localized_title`.
                localized_title:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized titles for this video, 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.

                         If this is not provided, fallback to `name`.
                project_id:
                    readOnly: true
                    type: string
                playlists:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.playlist.v1.Playlist'
        motto.streaming.video_protection.v1.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.streaming.video_protection.v1.CreateVideoProtectionRulesetResponse:
            type: object
            properties:
                video_protection_ruleset:
                    $ref: '#/components/schemas/motto.streaming.video_protection.v1.VideoProtectionRuleset'
        motto.streaming.video_protection.v1.DRM:
            required:
                - enabled
            type: object
            properties:
                enabled:
                    type: boolean
                    description: |-
                        Whether to enable DRM for the video. This will not affect any content that has already been streamed or uploaded
                         (for such content, the settings that were in place at the time of processing will still apply).
                hws_minimum_quality:
                    type: integer
                    description: |-
                        Optional. If you want to enforce hardware secure (HWS) decryption for stream variant qualities, this value should
                         be used to define the lower bound of the quality that should be protected with HWS.
                         For example, if you set this to `720`, then all qualities >= 720p will require the Widevine L1 security level
                         (which is the strictest level of security).
                         Setting this to 0 will allow both HWS and SWS (decryption in software) for all qualities.
                         Setting this to 1 will effectively disable SWS entirely, meaning that all qualities will require HWS decryption.

                         Note: updating this will have no effect on content that has already been streamed or uploaded.
                    format: int32
                split_keys:
                    type: boolean
                    description: |-
                        Optional. When true, separate keys will be provisioned for video and audio tracks.
                         If `false`, the audio track will be encrypted with the same key as the video track.
                         If `false` in combination with `hws_minimum_quality` > 0, this will result in two keys: one for software secured video + audio, one for hardware-secured video.
                         If `true` in combination with `hws_minimum_quality` > 0, this will result in three keys: one for software secured video, one for hardware-secured video, and one for audio.
                         Defaults to false.
        motto.streaming.video_protection.v1.DeleteVideoProtectionRulesetResponse:
            type: object
            properties: {}
        motto.streaming.video_protection.v1.GetVideoProtectionRulesetResponse:
            type: object
            properties:
                video_protection_ruleset:
                    $ref: '#/components/schemas/motto.streaming.video_protection.v1.VideoProtectionRuleset'
        motto.streaming.video_protection.v1.ListVideoProtectionRulesetsResponse:
            type: object
            properties:
                video_protection_rulesets:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.video_protection.v1.VideoProtectionRuleset'
                next_page_token:
                    type: string
                    description: |-
                        If there are more results than have been returned, then this field is set
                         to a non-empty value.  To see the additional results,
                         use that value as `page_token` in the next call to this method.
        motto.streaming.video_protection.v1.Target:
            type: object
            properties:
                entity_ids:
                    type: array
                    items:
                        type: string
                    description: The entities with which this ruleset is associated. If provided, all videos that are associated with these entities will be included in the ruleset.
                event_ids:
                    type: array
                    items:
                        type: string
                    description: The events with which this ruleset is associated. If provided, all videos that are associated with these events will be included in the ruleset.
                creative_work_ids:
                    type: array
                    items:
                        type: string
                    description: The creative works with which this ruleset is associated. If provided, all videos that are associated with these creative works will be included in the ruleset.
                content_start_time:
                    type: string
                    description: |-
                        Any content defined by `entity_ids`, `event_ids` and `creative_work_ids` after `content_start_time` will be considered as part of the ruleset (as long as it is before `content_end_time`).
                         If not provided, there is no lower time bound on the content.
                    format: date-time
                content_end_time:
                    type: string
                    description: |-
                        Any content defined by `entity_ids`, `event_ids` and `creative_work_ids` before `content_end_time` will be considered as part of the ruleset (as long as it is after `content_start_time`).
                         If not provided, there is no upper time bound on the content.
                    format: date-time
        motto.streaming.video_protection.v1.UpdateVideoProtectionRulesetRequest:
            required:
                - video_protection_ruleset_id
            type: object
            properties:
                video_protection_ruleset_id:
                    type: string
                video_protection_ruleset:
                    $ref: '#/components/schemas/motto.streaming.video_protection.v1.VideoProtectionRuleset'
                update_mask:
                    type: string
                    format: field-mask
        motto.streaming.video_protection.v1.UpdateVideoProtectionRulesetResponse:
            type: object
            properties:
                video_protection_ruleset:
                    $ref: '#/components/schemas/motto.streaming.video_protection.v1.VideoProtectionRuleset'
        motto.streaming.video_protection.v1.VideoProtectionRuleset:
            required:
                - project_id
                - name
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                project_id:
                    type: string
                    description: The ID of the project that the VideoProtectionRuleset belongs to.
                name:
                    type: string
                    description: Name of the Ruleset
                geo_restrictions_disallow:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.video_protection.v1.CountryCodes'
                    description: |-
                        Viewers are disallowed to consume the video from these countries (and allowed from all others)

                        Important: at most one of `geo_restrictions_disallow`, `geo_restrictions_allow` may be set per request.
                geo_restrictions_allow:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.video_protection.v1.CountryCodes'
                    description: |-
                        Viewers are allowed to consume the video from these countries (and disallowed from all others)

                        Important: at most one of `geo_restrictions_disallow`, `geo_restrictions_allow` may be set per request.
                disallow_vpn_usage:
                    type: boolean
                    description: Disallow viewers from using a VPN to consume the video
                disallow_hotlinking:
                    type: boolean
                    description: |-
                        Disallow viewers from sharing a playlist URL with others (i.e. hotlink protection). This is done by binding the
                         viewer's IP address to the playlist URL.
                allowed_domains:
                    type: array
                    items:
                        type: string
                    description: |-
                        A list of domains that are allowed to playback the video. An empty list implies all domains are valid.
                         This uses the HTTP referrer, which can be spoofed and as such is not a strong protection mechanism.

                         Note: this uses the HTTP referrer. As native apps do not send any HTTP referrer, any client that does not send a
                         referrer will be allowed.
                require_authentication:
                    type: boolean
                    description: |-
                        Require viewers to be signed in. This requires the viewer to have a valid JWT, signed by the Motto identity service.
                         The JWT should be passed either via the Authorization header or as a Cookie.
                disabled:
                    type: boolean
                    description: |-
                        Disables the ruleset. This is useful for ensuring the ruleset no longer shows up as an option in the UI.
                         It will continue to apply to any videos that already have this ruleseet applied (unlike a deleted ruleset).
                require_entitlement:
                    type: boolean
                    description: |-
                        Instruct the Motto content-delivery API to do an entitlement lookup for the user ID that the viewer is providing in
                         a JWT when trying to access the content.
                         This works in tandem with the `Entitlement` and `Offer` types in Motto's `monetization` section.

                         Note: This requires `require_authentication` to be set to `true`.
                geo_applicability_exempt:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.video_protection.v1.CountryCodes'
                    description: |-
                        Viewers from these countries will not have this ruleset applied.

                        Important: at most one of `geo_applicability_exempt`, `geo_applicability_apply` may be set per request.
                geo_applicability_apply:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.video_protection.v1.CountryCodes'
                    description: |-
                        Viewers from these countries will have this ruleset applied.

                        Important: at most one of `geo_applicability_exempt`, `geo_applicability_apply` may be set per request.
                applies_to_all:
                    type: boolean
                    description: |-
                        This ruleset applies to all videos in the project.

                        Important: at most one of `applies_to_all`, `target` may be set per request.
                target:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.video_protection.v1.Target'
                    description: |-
                        This ruleset applies to a specific set of videos, as defined by the target.

                        Important: at most one of `applies_to_all`, `target` may be set per request.
                drm:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.video_protection.v1.DRM'
                    description: The DRM settings for the video. If not provided, the video will not have any DRM applied.
                enforce_concurrency_limits:
                    type: boolean
                    description: |-
                        If true, Motto's streaming platform will enforce concurrency limits for this video.
                         This only works in combination with `require_authentication` and `require_entitlement` being set to `true`.
                priority:
                    type: string
                    description: The priority of the ruleset. If multiple rulesets apply to a video, the ruleset with the highest priority will be used.
        motto.streaming.video_protection.v2.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.streaming.video_protection.v2.CreateVideoProtectionRulesetResponse:
            type: object
            properties:
                video_protection_ruleset:
                    $ref: '#/components/schemas/motto.streaming.video_protection.v2.VideoProtectionRuleset'
        motto.streaming.video_protection.v2.DRM:
            required:
                - enabled
            type: object
            properties:
                enabled:
                    type: boolean
                    description: |-
                        Whether to enable DRM for the video. This will not affect any content that has already been streamed or uploaded
                         (for such content, the settings that were in place at the time of processing will still apply).
                hws_minimum_quality:
                    type: integer
                    description: |-
                        Optional. If you want to enforce hardware secure (HWS) decryption for stream variant qualities, this value should
                         be used to define the lower bound of the quality that should be protected with HWS.
                         For example, if you set this to `720`, then all qualities >= 720p will require the Widevine L1 security level
                         (which is the strictest level of security).
                         Setting this to 0 will allow both HWS and SWS (decryption in software) for all qualities.
                         Setting this to 1 will effectively disable SWS entirely, meaning that all qualities will require HWS decryption.

                         Note: updating this will have no effect on content that has already been streamed or uploaded.
                    format: int32
                split_keys:
                    type: boolean
                    description: |-
                        Optional. When true, separate keys will be provisioned for video and audio tracks.
                         If `false`, the audio track will be encrypted with the same key as the video track.
                         If `false` in combination with `hws_minimum_quality` > 0, this will result in two keys: one for software secured video + audio, one for hardware-secured video.
                         If `true` in combination with `hws_minimum_quality` > 0, this will result in three keys: one for software secured video, one for hardware-secured video, and one for audio.
                         Defaults to false.
        motto.streaming.video_protection.v2.DeleteVideoProtectionRulesetResponse:
            type: object
            properties: {}
        motto.streaming.video_protection.v2.Domains:
            type: object
            properties:
                domains:
                    type: array
                    items:
                        type: string
                    description: A list of domains
            description: A list of domains
        motto.streaming.video_protection.v2.FilterTarget:
            type: object
            properties:
                filter_events:
                    type: string
                    description: |-
                        The filter to apply to the events that should be targeted. To test your filter, you can use the `ListEvents` API
                         on the CMS to see which results it includes.

                         Important: an empty string means NO events are included (unlike in `ListEvents` API, where it includes all events).
                         To target all events, pass the string `true`.
                filter_creative_works:
                    type: string
                    description: |-
                        The filter to apply to the creative works that should be targeted. To test your filter, you can use the `ListCreativeWorks` API
                         on the CMS to see which results it includes.

                         Important: an empty string means NO creative works are included (unlike in `ListCreativeWorks` API, where it includes all events).
                         To target all creative works, pass the string `true`.
        motto.streaming.video_protection.v2.GetVideoProtectionRulesetResponse:
            type: object
            properties:
                video_protection_ruleset:
                    $ref: '#/components/schemas/motto.streaming.video_protection.v2.VideoProtectionRuleset'
        motto.streaming.video_protection.v2.ListVideoProtectionRulesetsResponse:
            type: object
            properties:
                video_protection_rulesets:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.video_protection.v2.VideoProtectionRuleset'
                next_page_token:
                    type: string
                    description: |-
                        If there are more results than have been returned, then this field is set
                         to a non-empty value.  To see the additional results,
                         use that value as `page_token` in the next call to this method.
        motto.streaming.video_protection.v2.Target:
            type: object
            properties:
                entity_ids:
                    type: array
                    items:
                        type: string
                    description: The entities with which this ruleset is associated. If provided, all videos that are associated with these entities will be included in the ruleset.
                event_ids:
                    type: array
                    items:
                        type: string
                    description: The events with which this ruleset is associated. If provided, all videos that are associated with these events will be included in the ruleset.
                creative_work_ids:
                    type: array
                    items:
                        type: string
                    description: The creative works with which this ruleset is associated. If provided, all videos that are associated with these creative works will be included in the ruleset.
                content_start_time:
                    type: string
                    description: |-
                        Any content defined by `entity_ids`, `event_ids` and `creative_work_ids` after `content_start_time` will be considered as part of the ruleset (as long as it is before `content_end_time`).
                         If not provided, there is no lower time bound on the content.
                    format: date-time
                content_end_time:
                    type: string
                    description: |-
                        Any content defined by `entity_ids`, `event_ids` and `creative_work_ids` before `content_end_time` will be considered as part of the ruleset (as long as it is after `content_start_time`).
                         If not provided, there is no upper time bound on the content.
                    format: date-time
                video_ids:
                    type: array
                    items:
                        type: string
                    description: |-
                        The video IDs of the videos that are associated with this ruleset.
                         It is recommended to only use this when the videos are not associated with an event/creative work, or the event/creative work it is associated with
                         has other videos with deviating configurations.
        motto.streaming.video_protection.v2.UpdateVideoProtectionRulesetRequest:
            required:
                - video_protection_ruleset_id
            type: object
            properties:
                video_protection_ruleset_id:
                    type: string
                video_protection_ruleset:
                    $ref: '#/components/schemas/motto.streaming.video_protection.v2.VideoProtectionRuleset'
                update_mask:
                    type: string
                    format: field-mask
        motto.streaming.video_protection.v2.UpdateVideoProtectionRulesetResponse:
            type: object
            properties:
                video_protection_ruleset:
                    $ref: '#/components/schemas/motto.streaming.video_protection.v2.VideoProtectionRuleset'
        motto.streaming.video_protection.v2.VideoProtectionRuleset:
            required:
                - project_id
                - name
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                project_id:
                    type: string
                    description: The ID of the project that the VideoProtectionRuleset belongs to.
                name:
                    type: string
                    description: Name of the Ruleset
                geo_restrictions_disallow:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.video_protection.v2.CountryCodes'
                    description: |-
                        Viewers are disallowed to consume the video from these countries (and allowed from all others)

                        Important: at most one of `geo_restrictions_disallow`, `geo_restrictions_allow`, `allow_all_geographies` may be set per request.
                geo_restrictions_allow:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.video_protection.v2.CountryCodes'
                    description: |-
                        Viewers are allowed to consume the video from these countries (and disallowed from all others)

                        Important: at most one of `geo_restrictions_disallow`, `geo_restrictions_allow`, `allow_all_geographies` may be set per request.
                allow_all_geographies:
                    type: boolean
                    description: |-
                        Viewers from everywhere are allowed to watch. Set this to true explicitly (false will be treated as empty, i.e. neutral)

                        Important: at most one of `geo_restrictions_disallow`, `geo_restrictions_allow`, `allow_all_geographies` may be set per request.
                disallow_vpn_usage:
                    type: boolean
                    description: |-
                        Disallow viewers from using a VPN to consume the video

                         To leave this to neutral, leave the `disallow_vpn_usage` field empty. To explicitly allow VPN usage, set `disallow_vpn_usage` to `false`.
                disallow_hotlinking:
                    type: boolean
                    description: |-
                        Disallow viewers from sharing a playlist URL with others (i.e. hotlink protection). This is done by binding the
                         viewer's IP address to the playlist URL.

                         To leave this to neutral, leave the `disallow_hotlinking` field empty. To explicitly allow hotlinking, set `disallow_hotlinking` to `false`.
                domains:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.video_protection.v2.Domains'
                    description: |-
                        A list of domains that are allowed to playback the video. An empty list implies all domains are valid.
                         This uses the HTTP referrer, which can be spoofed and as such is not a strong protection mechanism.

                         Note: this uses the HTTP referrer. As native apps do not send any HTTP referrer, any client that does not send a
                         referrer will be allowed.

                         To leave this to neutral, leave the `allowed_domains` field empty. To explicitly allow all domains, pass `allow_all_domains` as true.

                        Important: at most one of `domains`, `allow_all_domains` may be set per request.
                allow_all_domains:
                    type: boolean
                    description: |-
                        All domains are treated as allowed. Set this to true explicitly (false will be treated as empty, i.e. neutral)

                        Important: at most one of `domains`, `allow_all_domains` may be set per request.
                require_authentication:
                    type: boolean
                    description: |-
                        Require viewers to be signed in. This requires the viewer to have a valid JWT, signed by the Motto identity service.
                         The JWT should be passed either via the Authorization header or as a Cookie.

                         To leave this to neutral, leave the `require_authentication` field empty. To explicitly allow unauthenticated access, set `require_authentication` to `false`.
                disabled:
                    type: boolean
                    description: |-
                        Disables the ruleset. This is useful for ensuring the ruleset no longer shows up as an option in the UI.
                         It will continue to apply to any videos that already have this ruleseet applied (unlike a deleted ruleset).
                require_entitlement:
                    type: boolean
                    description: |-
                        Instruct the Motto content-delivery API to do an entitlement lookup for the user ID that the viewer is providing in
                         a JWT when trying to access the content.
                         This works in tandem with the `Entitlement` and `Offer` types in Motto's `monetization` section.

                         Note: This requires `require_authentication` to be set to `true`.

                         To leave this to neutral, leave the `require_entitlement` field empty. To explicitly not require entitlement, set `require_entitlement` to `false`.
                geo_applicability_exempt:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.video_protection.v2.CountryCodes'
                    description: |-
                        Viewers from these countries will not have this ruleset applied.

                        Important: at most one of `geo_applicability_exempt`, `geo_applicability_apply` may be set per request.
                geo_applicability_apply:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.video_protection.v2.CountryCodes'
                    description: |-
                        Viewers from these countries will have this ruleset applied.

                        Important: at most one of `geo_applicability_exempt`, `geo_applicability_apply` may be set per request.
                applies_to_all:
                    type: boolean
                    description: |-
                        This ruleset applies to all videos in the project.

                        Important: at most one of `applies_to_all`, `target`, `filter` may be set per request.
                target:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.video_protection.v2.Target'
                    description: |-
                        This ruleset applies to a specific set of videos, as defined by the target.

                        Important: at most one of `applies_to_all`, `target`, `filter` may be set per request.
                filter:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.video_protection.v2.FilterTarget'
                    description: |-
                        This ruleset applies to a complex set of events and creative works, as defined by the filter target.

                        Important: at most one of `applies_to_all`, `target`, `filter` may be set per request.
                drm:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.video_protection.v2.DRM'
                    description: |-
                        The DRM settings for the video. If not provided, the video will not have any DRM applied.

                         To leave this to neutral, leave the `drm` field empty. To explicitly not apply any DRM, set `drm.enabled` to `false`.
                enforce_concurrency_limits:
                    type: boolean
                    description: |-
                        If true, Motto's streaming platform will enforce concurrency limits for this video.
                         This only works in combination with `require_authentication` and `require_entitlement` being set to `true`.

                         To leave this to neutral, leave the `enforce_concurrency_limits` field empty.
                         To explicitly not enforce concurrency limits, set `enforce_concurrency_limits` to `false`.
                priority:
                    type: string
                    description: The priority of the ruleset. If multiple rulesets apply to a video, the ruleset with the highest priority will be used.
        motto.streaming.vod.v1.CreateVideoResponse:
            type: object
            properties:
                vod:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.vod.v1.VOD'
                    description: The created video.
            description: CreateVideoResponse is the response message for CreateVideo.
        motto.streaming.vod.v1.DeleteVideoResponse:
            type: object
            properties: {}
        motto.streaming.vod.v1.GetVideoResponse:
            type: object
            properties:
                vod:
                    $ref: '#/components/schemas/motto.streaming.vod.v1.VOD'
        motto.streaming.vod.v1.ListVideosResponse:
            type: object
            properties:
                vods:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.vod.v1.VOD'
                    description: List of videos.
                next_page_token:
                    type: string
                    description: |-
                        If there are more results than have been returned, then this field is set
                         to a non-empty value.  To see the additional results,
                         use that value as `page_token` in the next call to this method.
            description: ListVideosResponse is the response message for ListVideos.
        motto.streaming.vod.v1.StartVideoProcessResponse:
            type: object
            properties: {}
        motto.streaming.vod.v1.UpdateVideoRequest:
            required:
                - vod_id
            type: object
            properties:
                vod_id:
                    type: string
                vod:
                    $ref: '#/components/schemas/motto.streaming.vod.v1.VOD'
                update_mask:
                    type: string
                    format: field-mask
        motto.streaming.vod.v1.UpdateVideoResponse:
            type: object
            properties:
                vod:
                    $ref: '#/components/schemas/motto.streaming.vod.v1.VOD'
        motto.streaming.vod.v1.VOD:
            required:
                - name
                - asset_id
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                project_id:
                    readOnly: true
                    type: string
                name:
                    type: string
                region:
                    readOnly: true
                    enum:
                        - REGION_UNSPECIFIED
                        - REGION_AF
                        - REGION_AS
                        - REGION_EU
                        - REGION_NA
                        - REGION_OC
                        - REGION_SA
                    type: string
                    format: enum
                asset_id:
                    type: string
                video_id:
                    readOnly: true
                    type: string
                state:
                    readOnly: true
                    enum:
                        - STATE_UNSPECIFIED
                        - STATE_CREATING
                        - STATE_RUNNING
                        - STATE_FAILED
                        - STATE_SUCCEEDED
                    type: string
                    format: enum
        motto.streaming.vod.v2.CreateVideoResponse:
            type: object
            properties:
                vod:
                    allOf:
                        - $ref: '#/components/schemas/motto.streaming.vod.v2.VOD'
                    description: The created video.
            description: CreateVideoResponse is the response message for CreateVideo.
        motto.streaming.vod.v2.DeleteVideoResponse:
            type: object
            properties: {}
        motto.streaming.vod.v2.GetVideoResponse:
            type: object
            properties:
                vod:
                    $ref: '#/components/schemas/motto.streaming.vod.v2.VOD'
        motto.streaming.vod.v2.ListVideosResponse:
            type: object
            properties:
                vods:
                    type: array
                    items:
                        $ref: '#/components/schemas/motto.streaming.vod.v2.VOD'
                    description: List of videos.
                next_page_token:
                    type: string
                    description: |-
                        If there are more results than have been returned, then this field is set
                         to a non-empty value.  To see the additional results,
                         use that value as `page_token` in the next call to this method.
            description: ListVideosResponse is the response message for ListVideos.
        motto.streaming.vod.v2.StartVideoProcessResponse:
            type: object
            properties: {}
        motto.streaming.vod.v2.UpdateVideoRequest:
            required:
                - vod_id
            type: object
            properties:
                vod_id:
                    type: string
                vod:
                    $ref: '#/components/schemas/motto.streaming.vod.v2.VOD'
                update_mask:
                    type: string
                    format: field-mask
        motto.streaming.vod.v2.UpdateVideoResponse:
            type: object
            properties:
                vod:
                    $ref: '#/components/schemas/motto.streaming.vod.v2.VOD'
        motto.streaming.vod.v2.VOD:
            required:
                - name
            type: object
            properties:
                id:
                    readOnly: true
                    type: string
                project_id:
                    type: string
                    description: Required if providing `external_asset_url` as input
                name:
                    type: string
                    description: |-
                        The name of the video. This is a canonical name that is independent of locales, and is primarily meant for internal
                         purposes (e.g. a name for tracking in analytics). For end-user facing purposes, use `localized_title`.
                localized_title:
                    type: object
                    additionalProperties:
                        type: string
                    description: |-
                        A map of localized titles for this stream, 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.

                         If this is not provided, fallback to `name`.
                region:
                    enum:
                        - REGION_UNSPECIFIED
                        - REGION_AF
                        - REGION_AS
                        - REGION_EU
                        - REGION_NA
                        - REGION_OC
                        - REGION_SA
                    type: string
                    description: Required if providing `external_asset_url` as input
                    format: enum
                video_id:
                    readOnly: true
                    type: string
                state:
                    readOnly: true
                    enum:
                        - STATE_UNSPECIFIED
                        - STATE_CREATING
                        - STATE_RUNNING
                        - STATE_FAILED
                        - STATE_SUCCEEDED
                    type: string
                    format: enum
                asset_id:
                    type: string
                    description: |-
                        Recommended. A Motto asset ID of an uploaded file (e.g. mp4).

                        Important: at most one of `asset_id`, `external_asset_url` may be set per request.
                external_asset_url:
                    type: string
                    description: |-
                        BETA FEATURE, NOT GENERALLY AVAILABLE YET.

                         If you are not able to upload a static asset to Motto, you can provide a URL to an external video resource (e.g.
                         HLS or DASH). Motto will then attempt to retrieve this resource directly from the public internet.

                        Important: at most one of `asset_id`, `external_asset_url` may be set per request.
    securitySchemes:
        BearerAuth:
            type: http
            scheme: bearer
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.
