openapi: 3.0.0
servers:
  - url: /api
info:
  description: |
    An Orchestration Layer that takes ISL services and packages them in a more targeted way for front-end applications.
    This in turn makes client integration easier and reduces the complexity and size of front-end applications.

    Rocket is also customisable - allowing UI engineers to ‘remix’ the existing back-end services into something that
    best suits the application they are developing.
  title: Rocket Services
  version: 3.730.300-ref-1-39-0
  x-apisguru-categories:
    - entertainment
  x-origin:
    - format: openapi
      url: https://isl.britbox.co.uk/api/spec
      version: "3.0"
  x-providerName: britbox.co.uk
paths:
  /account:
    get:
      description: Get the details of an account along with the profiles and entitlements under it.
      operationId: getAccount
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Account"
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - account
    patch:
      description: |
        Update the details of an account.

        With the exception of the address, this supports partial updates, so you can send just the
        properties you wish to update.

        When the address is provided any properties which are omitted from the address will be cleared.
      operationId: updateAccount
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AccountUpdateRequest"
        description: Updated account details.
        required: true
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Settings
      tags:
        - account
    x-serviceId: account
  /account/billing/methods:
    get:
      description: Get the available payment methods under an account.
      operationId: getPaymentMethods
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/PaymentMethod"
                type: array
          description: The list of available payment methods.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - account
    post:
      description: Add a new payment method to an account.
      operationId: addPaymentMethod
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AddPaymentMethodRequest"
        description: Registration details for a new payment method.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaymentMethod"
          description: The created payment method.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Commerce
      tags:
        - account
    x-serviceId: billing
  "/account/billing/methods/{id}":
    delete:
      description: Remove a payment method from an account.
      operationId: removePaymentMethod
      parameters:
        - description: The id of the payment method to remove.
          in: path
          name: id
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "204":
          description: Payment method removed.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Commerce
      tags:
        - account
    get:
      description: Get a payment method under an account.
      operationId: getPaymentMethod
      parameters:
        - description: The id of the payment method to get.
          in: path
          name: id
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/PaymentMethod"
          description: The payment method requested.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - account
    x-serviceId: billing
  /account/billing/purchases:
    get:
      description: Get a list of all purchases made under an account.
      operationId: getPurchases
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/Purchase"
                type: array
          description: A list of all purchases made under the account.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Commerce
      tags:
        - account
    post:
      description: |
        Purchase a plan or item offer.
        The result of a successful transaction is a new entitlement.
      operationId: makePurchase
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PurchaseRequest"
        description: Details of a plan or item purchase.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Entitlement"
          description: The entitlement for the purchased plan or item.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Commerce
      tags:
        - account
    x-serviceId: billing
  "/account/billing/subscriptions/{id}":
    delete:
      description: |
        Cancel a plan subscription.

        A cancelled subscription will continue to be valid until the subscription
        expiry date or next renewal date.
      operationId: cancelSubscription
      parameters:
        - description: |
            The identifier of the current active subscription membership of the account.
          in: path
          name: id
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Commerce
      tags:
        - account
    put:
      description: |
        Renew a cancelled subscription or switch subscription to a different plan.

        When renewing a cancelled subscription membership, hit this endpoint with
        the id of subscription to renew.

        To switch plans provide the id of the current active subscription membership
        of the account, and in the query specify the id of the plan to switch to.
      operationId: updateSubscription
      parameters:
        - description: |
            The identifier of the current subscription membership
            associated with the account.
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: The id of the plan to switch to if switching plans.
          in: query
          name: planId
          schema:
            type: string
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Commerce
      tags:
        - account
    x-serviceId: billing
  /account/devices:
    get:
      description: |
        Get all devices registered under this account.

        Also includes information around device registration and deregistration limits.
      operationId: getDevices
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountDevices"
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - account
    post:
      description: |
        Register a playback device under an account.

        If a device with the same id already exists a `409` conflict will be returned.
      operationId: registerDevice
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DeviceRegistrationRequest"
        description: Registration details for a new playback device.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Device"
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "409":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: A device with the provided id already exists.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - account
    x-serviceId: device
  /account/devices/authorization:
    post:
      description: |
        Authorize a device from a generated device authorization code.

        This is the second step in the process of authorizing a device by pin code.

        Firstly the device must request a generated authorization code via the
        `/authorization/device/code` endpoint.

        This endpoint then authorizes the device associated with the code to sign in
        to a user account. Typically this endpoint will be called from a page
        presented in the web app under the account section.

        Once authorized, the device will then be able to sign in to that account
        via the `/authorization/device` endpoint, without needing to provide the 
        credentials of the user.
      operationId: authorizeDevice
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DeviceAuthorizationCode"
        description: The generated device authorization code.
        required: true
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - account
    x-serviceId: itvAuth
  "/account/devices/{id}":
    delete:
      description: Deregister a playback device from an account.
      operationId: deregisterDevice
      parameters:
        - description: The unique identifier for the registered device e.g. serial number.
          in: path
          name: id
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "204":
          description: Device deregistered.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - account
    get:
      description: Get a registered device.
      operationId: getDevice
      parameters:
        - description: The unique identifier for the registered device e.g. serial number.
          in: path
          name: id
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Device"
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - account
    x-serviceId: device
  "/account/devices/{id}/name":
    put:
      description: Rename a device
      operationId: renameDevice
      parameters:
        - description: The unique identifier for this registered device e.g. serial number.
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: The new name for the device.
          in: query
          name: name
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "204":
          description: Device renamed.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - account
    x-serviceId: device
  /account/entitlements:
    get:
      description: |
        Get all entitlements under the account.

        This list is returned under the call to get account information so a call here is
        only required when wishing to refresh a local copy of entitlements.
      operationId: getEntitlements
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/Entitlement"
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - account
    x-serviceId: entitlement
  "/account/items/{id}/videos":
    get:
      description: |
        Get the video files associated with an item given maximum resolution, device type
        and one or more delivery types.

        This endpoint accepts an Account Catalog token, however if when requesting
        playback files you receive an *403 status code with error code 1* then the file
        you're requesting is classification restricted. This means you should switch
        to target the `/account/items/{id}/videos-guarded` endpoint, passing it an Account
        Playback token. If not already obtained, this token can be requested via the
        `/itv/pinauthorization` endpoint with an account level pin.

        For convenience you may also access free / public files through this endpoint
        instead of the /items/{id}/videos endpoint, when authenticated.

        Returns an array of video file objects which each include a url to a video.

        The first entry in the array contains what is predicted to be the best match.
        The remainder of the entries, if any, may contain resolutions below what was
        requests. For example if you request HD-720 the response may also contain
        SD entries.

        If you specify multiple delivery types, then the response array will insert
        types in the order you specify them in the query. For example `stream,progressive`
        would return an array with 0 or more stream files followed by 0 or more progressive files.

        If no files are found a 404 is returned.
      operationId: getItemMediaFiles
      parameters:
        - description: The identifier of the item whose video files to load.
          in: path
          name: id
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/MediaFileDelivery"
        - $ref: "#/components/parameters/MediaFileResolution"
        - $ref: "#/components/parameters/MediaFileFormats"
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/MediaFile"
                type: array
          description: |
            The list of video files available.
            The first entry containing what is predicted to be the best match.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - account
    x-serviceId: media
  "/account/items/{id}/videos-guarded":
    get:
      description: |
        Get the video files associated with an item given maximum resolution, device type
        and one or more delivery types.

        This endpoint is identical to the `/account/items/{id}/videos` however it expects
        an Account Playback token. This token, and in association this endpoint, is specifically
        for use when playback files are classification restricted and require an account
        level pin to access them.

        Returns an array of video file objects which each include a url to a video.

        The first entry in the array contains what is predicted to be the best match.
        The remainder of the entries, if any, may contain resolutions below what was
        requests. For example if you request HD-720 the response may also contain
        SD entries.

        If you specify multiple delivery types, then the response array will insert
        types in the order you specify them in the query. For example `stream,progressive`
        would return an array with 0 or more stream files followed by 0 or more progressive files.

        If no files are found a 404 is returned.
      operationId: getItemMediaFilesGuarded
      parameters:
        - description: The identifier of the item whose video files to load.
          in: path
          name: id
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/MediaFileDelivery"
        - $ref: "#/components/parameters/MediaFileResolution"
        - $ref: "#/components/parameters/MediaFileFormats"
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/MediaFile"
                type: array
          description: |
            The list of video files available.
            The first entry containing what is predicted to be the best match.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Playback
      tags:
        - account
    x-serviceId: media
  /account/nonce:
    get:
      description: |
        Generate a new account nonce.

        A nonce may be required to help sign a response from a third party
        service which will be passed back to these services.

        For example a Facebook single-sign-on request initiated by a client
        application may first get a nonce from here to include in the request.
        Facebook will then include the nonce in the auth token it issues. This
        token can be passed back to our services and the nonce checked for validity.
      operationId: generateNonce
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccountNonce"
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - account
    x-serviceId: account
  /account/password:
    put:
      description: |
        Change the password of an account.

        The expected token scope is Settings.
      operationId: changePassword
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ChangePasswordRequest"
        description: The new account password & ITV profile token.
        required: true
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Settings
      tags:
        - account
    x-serviceId: itvPassword
  /account/pin:
    put:
      description: Change the pin of an account.
      operationId: changePin
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ChangePinRequest"
        description: The new account pin.
        required: true
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Settings
      tags:
        - account
    x-serviceId: itvAccount
  /account/profile:
    get:
      description: Get the details of the active profile, including watched, bookmarked and rated items.
      operationId: getProfile
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProfileDetail"
          description: Details of the active profile.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - profile
    x-serviceId: profile
  /account/profile/bookmarks:
    get:
      description: Get the map of bookmarked item ids (itemId => creationDate) under the active profile.
      operationId: getBookmarks
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                additionalProperties:
                  format: date-time
                  type: string
                type: object
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - profile
    x-serviceId: itvNightwatch
  /account/profile/bookmarks/list:
    get:
      description: Returns the list of bookmarked items under the active profile.
      operationId: getBookmarkList
      parameters:
        - description: The page of items to load. Starts from page 1.
          in: query
          name: page
          schema:
            format: int32
            minimum: 1
            type: integer
        - description: The number of items to return in a page.
          in: query
          name: page_size
          schema:
            format: int32
            maximum: 50
            minimum: 1
            type: integer
        - $ref: "#/components/parameters/ListOrder"
        - $ref: "#/components/parameters/ItemType"
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItemList"
          description: The list of items requested.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - profile
    x-serviceId: itvNightwatch
  "/account/profile/bookmarks/{itemId}":
    delete:
      description: Unbookmark an item under the active profile.
      operationId: deleteItemBookmark
      parameters:
        - description: The identifier of the bookmark to delete.
          in: path
          name: itemId
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "204":
          description: Bookmark deleted.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - profile
    get:
      description: Get the bookmark for an item under the active profile.
      operationId: getItemBookmark
      parameters:
        - description: The id of the item to get the bookmark for.
          in: path
          name: itemId
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Bookmark"
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - profile
    put:
      description: |
        Bookmark an item under the active profile.

        Creates one if it doesn't exist, overwrites one if it does.
      operationId: bookmarkItem
      parameters:
        - description: The id of the item to bookmark.
          in: path
          name: itemId
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Bookmark"
          description: Bookmark created.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - profile
    x-serviceId: itvNightwatch
  /account/profile/continue-watching/list:
    get:
      description: |
        Returns a list of items which have been watched but not completed under the active
        profile.

        Multiple episodes under the same show may be watched or in progress, however only a
        single item belonging to a particular show will be included in the returned list.

        The next episode to continue watching for a particular show will be the most recent
        incompletely watched episode, or the next episode following the most recently
        completely watched episode. Based on the specified `show_item_type` type, either the next
        episode, the season of the next episode, or the show will be included in the list.
      operationId: getContinueWatchingList
      parameters:
        - description: |
            The item type to be returned for continue watching items belonging to a show.

            Multiple episodes under the same show may be watched or in progress, however only a
            single item belonging to a particular show will be included in the returned list.

            The next episode to continue watching for a particular show will be the most recent
            incompletely watched episode, or the next episode following the most recently
            completely watched episode. Based on the specified `show_item_type` type, either the next
            episode, the season of the next episode, or the show will be included in the list.

            If `episode` is specified, then only the next episode to continue watching for a
            show will be returned.

            If `season` is specified, then only the season of the next episode will be returned.

            If `show` is specified, then only the show of the next episode will be returned

            The recommended value of this parameter should reflect the desitination the
            user will be sent to when they select this item in the list. So if a user will
            be sent to the show detail page then this should be `show` and you can use
            the `include` parameter to get metadata about the episode or season if needed
          in: query
          name: show_item_type
          schema:
            default: episode
            enum:
              - episode
              - season
              - show
            type: string
        - description: |
            Include one opr more ancestor/children for items belonging to a show. Extra items
            will be populated in the `listData` property of the list

            If no value is specified no dependencies are included.

            If `episode` is specified, then the next episode will be added for season/show
            items. Has no effect if `show_item_type` is set to `episode`.

            If `season` is specified, then the season of the next episode will be added for
            episode/show items. Has no effect if `show_item_type` is set to `season`.

            If `show` is specified, then the show of the next episode will be added for
            episode/season items. Has no effect if `show_item_type` is set to `show`.
          explode: false
          in: query
          name: include
          schema:
            default: []
            items:
              enum:
                - episode
                - season
                - show
              type: string
            type: array
          style: form
        - description: The page of items to load. Starts from page 1.
          in: query
          name: page
          schema:
            default: 1
            format: int32
            minimum: 1
            type: integer
        - description: The number of items to return in a page.
          in: query
          name: page_size
          schema:
            default: 12
            format: int32
            maximum: 50
            minimum: 1
            type: integer
        - description: The maximum rating (inclusive) of an item returned, e.g. 'auoflc-pg'.
          in: query
          name: max_rating
          schema:
            type: string
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItemList"
          description: The list of items requested.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - profile
    x-serviceId: itvNightwatch
  "/account/profile/items/{itemId}/next":
    get:
      description: |
        Returns the next item to play given a source item id.

        For an unwatched show it returns the first episode available to the account.

        For a watched show it returns the last incompletely watched episode by the profile,
        or the episode that immediately follows the last completely watched episode 
        or nothing.

        For an episode it always returns the immediately following episode, if available to
        the account, or nothing.

        If the response does not contain a `next` property then no item was found.
      operationId: getNextPlaybackItem
      parameters:
        - description: |
            The identifier of the source item to base the next to watch item off.
          in: path
          name: itemId
          required: true
          schema:
            type: string
        - description: The maximum rating (inclusive) of an item returned, e.g. 'auoflc-pg'.
          in: query
          name: max_rating
          schema:
            type: string
        - description: |
            If no value is specified no dependencies are expanded.

            If 'parent' is specified then only the direct parent will be expanded.
            For example if an `Episode` then the `Season` would be included.

            If 'ancestors' is specified then the full parent chain is expanded.
            For example if an `Episode` then both the `Season` and `Show` would be included.
          in: query
          name: expand
          schema:
            enum:
              - parent
              - ancestors
            type: string
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NextPlaybackItem"
          description: The detail of the next item to play.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - profile
    x-serviceId: itvNightwatch
  /account/profile/ratings:
    get:
      description: Get the map of rated item ids (itemId => rating out of 10) under the active profile.
      operationId: getRatings
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                additionalProperties:
                  format: int32
                  type: integer
                type: object
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - profile
    x-serviceId: userRating
  /account/profile/ratings/list:
    get:
      description: Returns the list of rated items under the active profile.
      operationId: getRatingsList
      parameters:
        - description: The page of items to load. Starts from page 1.
          in: query
          name: page
          schema:
            default: 1
            format: int32
            minimum: 1
            type: integer
        - description: The number of items to return in a page.
          in: query
          name: page_size
          schema:
            default: 12
            format: int32
            maximum: 50
            minimum: 1
            type: integer
        - $ref: "#/components/parameters/ListOrder"
        - description: |
            What to order by.

            Ordering by `date-modified` equates to ordering by the last rated date.
          in: query
          name: order_by
          schema:
            default: date-added
            enum:
              - date-added
              - date-modified
            type: string
        - $ref: "#/components/parameters/ItemType"
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItemList"
          description: The list of items requested.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - profile
    x-serviceId: userRating
  "/account/profile/ratings/{itemId}":
    get:
      description: Get the rating info for an item under the active profile.
      operationId: getItemRating
      parameters:
        - description: The id of the item to get the rating info for.
          in: path
          name: itemId
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserRating"
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - profile
    put:
      description: |
        Rate an item under the active profile.

        Creates one if it doesn't exist, overwrites one if it does.
      operationId: rateItem
      parameters:
        - description: The id of the item to rate.
          in: path
          name: itemId
          required: true
          schema:
            type: string
        - description: The item rating between 1 and 10 inclusive.
          in: query
          name: rating
          required: true
          schema:
            format: int32
            maximum: 10
            minimum: 1
            type: integer
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UserRating"
          description: OK.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - profile
    x-serviceId: userRating
  /account/profile/watched:
    delete:
      description: |
        Remove the watched status of items under the active profile. Passing in
        specific `itemId`s to the `item_ids` query parameter will cause only these
        items to be removed. **If this list is missing all watched items will be
        removed**
      operationId: deleteWatched
      parameters:
        - description: |
            List of `itemId`s to delete. Omit this parameter to delete all items
          explode: false
          in: query
          name: item_ids
          schema:
            items:
              description: itemId to delete
              minLength: 1
              type: string
            minItems: 1
            type: array
          style: form
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "204":
          description: Watched statuses deleted.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - profile
    get:
      description: Get the map of watched item ids (itemId => last playhead position) under the active profile.
      operationId: getWatched
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                additionalProperties:
                  $ref: "#/components/schemas/Watched"
                type: object
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - profile
    x-serviceId: itvNightwatch
  /account/profile/watched/list:
    get:
      description: Returns the list of watched items under the active profile.
      operationId: getWatchedList
      parameters:
        - description: The page of items to load. Starts from page 1.
          in: query
          name: page
          schema:
            default: 1
            format: int32
            minimum: 1
            type: integer
        - description: The number of items to return in a page.
          in: query
          name: page_size
          schema:
            default: 12
            format: int32
            maximum: 50
            minimum: 1
            type: integer
        - description: |
            Filter by whether an item has been fully watched (completed) or not.

            If `undefined` then both partially and fully watched items are returned.
          in: query
          name: completed
          schema:
            type: boolean
        - $ref: "#/components/parameters/ListOrder"
        - description: |
            What to order by.

            Ordering by `date-modified` equates to ordering by the last watched date.
          in: query
          name: order_by
          schema:
            default: date-added
            enum:
              - date-added
              - date-modified
            type: string
        - $ref: "#/components/parameters/ItemType"
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItemList"
          description: The list of items requested.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - profile
    x-serviceId: itvNightwatch
  "/account/profile/watched/{itemId}":
    get:
      description: Get the watched status info for an item under the active profile.
      operationId: getItemWatchedStatus
      parameters:
        - description: The id of the item to get the watched status for.
          in: path
          name: itemId
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Watched"
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - profile
    put:
      description: |
        Record the watched playhead position of a video under the active profile.

        Can be used later to resume a video from where it was last watched.

        Creates one if it doesn't exist, overwrites one if it does.
      operationId: setItemWatchedStatus
      parameters:
        - description: The id of the item being watched.
          in: path
          name: itemId
          required: true
          schema:
            type: string
        - description: The playhead position to record.
          in: query
          name: position
          required: true
          schema:
            format: int32
            minimum: 0
            type: integer
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Watched"
          description: OK.
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - profile
    x-serviceId: itvNightwatch
  /account/profiles:
    post:
      description: Create a new profile under the active account.
      operationId: createProfile
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ProfileCreationRequest"
        description: Profile details.
        required: true
      responses:
        "201":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProfileDetail"
          description: Details of the created profile.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - account
    x-serviceId: profile
  "/account/profiles/{id}":
    delete:
      description: |
        Delete a profile with a specific id under the active account.

        Note that you cannot delete the primary profile.
      operationId: deleteProfileWithId
      parameters:
        - description: The identifier of the profile to delete.
          in: path
          name: id
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "204":
          description: Profile deleted.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - account
    get:
      description: Get the summary of a profile with a specific id under the active account.
      operationId: getProfileWithId
      parameters:
        - description: The identifier of the profile to return.
          in: path
          name: id
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProfileSummary"
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - account
    patch:
      description: |
        Update the summary of a profile with a specific id under the active account.

        This supports partial updates so you can send just the properties you wish to update.
      operationId: updateProfileWithId
      parameters:
        - description: The identifier of the profile to update.
          in: path
          name: id
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ProfileUpdateRequest"
        description: Updated profile details.
        required: true
      responses:
        "204":
          description: Profile updated.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - account
    x-serviceId: profile
  /account/request-email-verification:
    post:
      description: |
        Request that the email address tied to an account be verified.

        This will send a verification email to the email address of the primary profile containing
        a link which, once clicked, completes the verification process via the /verify-email endpoint.

        Note that when an account is created this email is sent automatically so there's no need
        to call this directly.

        If the user doesn't click the link before it expires then this endpoint can be called
        to request a new verification email. In the future it may also be used if we add support
        for changing an account email address.
      operationId: requestEmailVerification
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - account
    x-serviceId: account
  /authorization:
    delete:
      description: |
        When a user signs out of an application we need to clear some
        basic cookies we assigned them during token authorization.
      operationId: signOut
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - authorization
    post:
      description: |
        Request one or more `Account` level authorization tokens each with a chosen scope.

        Tokens are used to access restricted service endpoints. These restricted endpoints
        will require a specific token type (e.g Account) with a specific scope (e.g. Catalog)
        before access is granted.

        For convenience, where a Profile level token with the same scope exists it will also be returned.

        Authorization with pin is not supported on this endpoint anymore. Use `/itv/pinauthorization`
        endpoint instead.
      operationId: getAccountToken
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AccountTokenRequest"
        description: The account credentials with requested token scope.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                additionalProperties: false
                items:
                  $ref: "#/components/schemas/AccessToken"
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - authorization
    x-serviceId: itvAuth
  /authorization/device:
    post:
      description: |
        Get Catalog tokens for an account using a device authorization code.
        Where a Profile level token of Catalog scope exists it will also be returned.

        This is the final step in the process of authorizing a device by pin code.

        Firstly the device must request a generated authorization code via the
        `/authorization/device/code` endpoint.

        The code is subsequently used to authorize the device to sign in to a given
        account via the `/account/devices/authorization` endpoint. Typically this
        will be from a page presented in the web app under the account section.

        Once authorized, this endpoint will allow the device to sign in without
        needing to provide the credentials of the user.
      operationId: getAccountTokenByCode
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/AccountTokenByCodeRequest"
        description: The device id e.g. serial number and authorization code.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                additionalProperties: false
                items:
                  $ref: "#/components/schemas/AccessToken"
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - authorization
    x-serviceId: itvAuth
  /authorization/device/code:
    post:
      description: |
        Get a generated device authorization code.

        This is the first step in the process of authorizing a device by pin code.
        The device will make a request to this endpoint providing a unique identifier
        for the device such as a serial number. This endpoint will then return a
        generated code which is tied to the given device.

        The code may subsequently be used to authorize the device to sign in to an
        account via the `/account/devices/authorization` endpoint. Typically this
        will be from a page presented in the web app under the account section.

        Once authorized, the device will then be able to sign in to that account
        via the `/authorization/device` endpoint, without needing to provide the 
        credentials of the user.
      operationId: generateDeviceAuthorizationCode
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/DeviceRegistrationRequest"
        description: Details of the device being authorized.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeviceAuthorizationCode"
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - authorization
    x-serviceId: itvAuth
  /authorization/profile:
    post:
      description: |
        Request one or more `Profile` level authorization tokens each with a chosen scope.

        Tokens are used to access restricted service endpoints. These restriced endpoints
        will require a specific token type (e.g Profile) with a specific scope (e.g. Catalog)
        before access is granted.
      operationId: getProfileToken
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ProfileTokenRequest"
        description: The profile id and optional pin with required token scope.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                additionalProperties: false
                items:
                  $ref: "#/components/schemas/AccessToken"
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - authorization
    x-serviceId: itvAuth
  /authorization/refresh:
    post:
      description: Refresh an account or profile level authorization token which is marked as refreshable.
      operationId: refreshToken
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TokenRefreshRequest"
        description: The token to refresh.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AccessToken"
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - authorization
    x-serviceId: itvAuth
  /authorization/sso:
    post:
      description: Exchange a third party single-sign-on token for our own authorization tokens.
      operationId: singleSignOn
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SingleSignOnRequest"
        description: A single-sign-on request.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                additionalProperties: false
                items:
                  $ref: "#/components/schemas/AccessToken"
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: |
            Unauthorized.

            Error codes:
              - 6000: Unknown or default error code.
              - 6001: An account with the same email already exists but it's not linked to this social identity.
              - 6002: The social provider token provided is invalid.
              - 6003: The account is already linked to a different account with the same provider.
              - 6004: The user data returned from the social provider is missing the email address.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
      tags:
        - authorization
    x-serviceId: auth
  "/bt/plan/{token}":
    get:
      description: Returns all the plans available for BT flow including additional description data.
      operationId: getPlanByToken
      parameters:
        - description: The identifier of the user provided by BT in an initial URL.
          in: path
          name: token
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BtPlanListItem"
          description: Available plan for current user.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - bt
    x-serviceId: itvBt
  /bt/plans:
    get:
      description: Returns all the plans available for BT flow including additional description data.
      operationId: getPlans
      parameters:
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/BtPlans"
          description: List of available plans.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - bt
    x-serviceId: itvBt
  /bt/token/assign:
    post:
      description: Assigns an UserToken to a profile on the ITV side. Currently throws an exception.
      operationId: assignToken
      parameters:
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvAssignBtTokenRequest"
        description: Details of an assign request.
        required: true
      responses:
        "201":
          description: OK
        "401":
          description: User unknown
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Failure
      security:
        - accountAuth:
            - Catalog
      tags:
        - bt
    x-serviceId: itvBt
  /bt/token/validate:
    get:
      description: |
        Checks a provided token for BT eligible user.
      operationId: checkUserToken
      parameters:
        - description: User token provided by BT.
          in: query
          name: id
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          description: The token is eligeble for BT.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - bt
    x-serviceId: itvBt
  "/check-subscription/{id}":
    get:
      description: Returns the details of subscription data for a user with specified id.
      operationId: getSubscriptionData
      parameters:
        - description: |
            The identifier of the user to load.
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SubscriptionDetails"
          description: The data requested
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - support
    x-serviceId: itvSubscription
  /config:
    get:
      description: |
        Get the global configuration for an application. Should be called during app statup.

        This includes things like device and playback rules, classifications,
        sitemap and subscriptions.

        You have the option to select specific configuration objects using the 'include'
        parameter, or if unspecified, getting all configuration.
      operationId: getAppConfig
      parameters:
        - description: |
            A comma delimited list of config objects to return.
            If none specified then all configuration is returned.
          explode: false
          in: query
          name: include
          schema:
            items:
              enum:
                - classification
                - playback
                - sitemap
                - navigation
                - subscription
                - general
                - display
                - i18n
                - linear
              type: string
            type: array
          style: form
        - description: |
            Classification system to load in case include = classification.
          in: query
          name: system
          required: false
          schema:
            type: string
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AppConfig"
          description: The list of available pages
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - app
    x-serviceId: itvConfig
  /ee-bt/eligibility:
    get:
      description: Check whether or not a user is eligible for switching to Bt or EE offers.
      operationId: checkEeBtEligibility
      parameters:
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EeBtEligibility"
          description: Success, returns eligibility data.
        "406":
          description: Customer does not exist.
      security:
        - accountAuth:
            - Catalog
      tags:
        - ee
        - bt
    x-serviceId: itvSubscription
  /ee/msisdn:
    post:
      description: Assigns a msisdn to a profile on ITV side.
      operationId: assignMsisdn
      parameters:
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvAssignMsisdnRequest"
        description: Details of an assign request.
        required: true
      responses:
        "201":
          description: OK
        "401":
          description: User unknown
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Failure
      security:
        - accountAuth:
            - Catalog
      tags:
        - ee
    x-serviceId: itvEe
  /ee/offers:
    post:
      description: |
        Returns eligible partner specific offers for the querying partner for an EE MSISDN.
        This call is supposed to be called after we have MSISDN accired.
        This call should be followed by POST /ee/msisdn.
      operationId: getEligibleOffers
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EeOffersRequest"
        description: Data for getting the eligible offers.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EeOffersResponse"
          description: The list of eligible offers value.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - ee
    x-serviceId: eeOffers
  /ee/pin:
    post:
      description: Validate PIN request created by calling POST /ee/pin This call is to validate MSISDN entered by a user not comming through EE network. This call should be called after PUT /ee/pin. This call should be followed by POST /ee/offers.
      operationId: validatePinRequest
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EeValidatePinRequest"
        description: Data for validating PIN.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EeValidatePinResponse"
          description: The validation status - success.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - ee
    put:
      description: |
        Creates a PIN request that will send an SMS to the given msisdn.
        This call is to validate MSISDN entered by a user not comming through EE network.
        This call should be followed by POST ee/pin.
      operationId: createPinRequest
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/EeCreatePinRequest"
        description: Data for creating the PIN request.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EeCreatePinResponse"
          description: The PIN reference value.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - ee
    x-serviceId: eeCredentials
  /ee/plans:
    get:
      description: Returns all the plans available for EE flow including additional description data.
      parameters:
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EePlans"
          description: List of available plans.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - ee
    x-serviceId: itvEe
  "/ee/plans/{id}":
    get:
      description: Returns the plan description for EE flow including additional description data.
      operationId: getPlan
      parameters:
        - description: The identifier of the plan received from ee/offers.
          in: path
          name: id
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EePlanListItem"
          description: List of available plans.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - ee
    x-serviceId: itvEe
  /ee/token/create:
    get:
      description: Returns a token for later calls to EE API. TTL is one hour. Recommended is FE refreshes this token before each call.
      operationId: createToken
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EeCreateTokenResponse"
          description: The token.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - ee
    x-serviceId: eeAuth
  "/items/{id}":
    get:
      description: Returns the details of an item with the specified id.
      operationId: getItem
      parameters:
        - description: |
            The identifier of the item to load.

            The custom identifier of an item can be used here if the `use_custom_id` parameter is true.
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: The maximum rating (inclusive) of items returned, e.g. 'auoflc-pg'.
          in: query
          name: max_rating
          schema:
            type: string
        - description: |
            If no value is specified no dependencies are expanded.

            If 'children' is specified then the list of any direct children will be expanded. For example
            seasons of a show or episodes of a season.

            If 'all' is specified then the parent chain will be expanded along with any child list at each level.
            For example if an episode is specified then its season will be expanded and that season's episode list.
            The season will have its show expanded and the show will have its season list expanded.

            The 'all' options is useful when you deep link into a show/season/episode for the first time as
            it provides full context for navigating around the show page. Subsequent navigation around
            children of the show should only need to request expand of children.

            If 'ancestors' is specified then only the parent chain is included.

            If 'parent' is specified then only the direct parent is included.

            If an expand is specified which is not relevant to the item type, it will be ignored.
          in: query
          name: expand
          schema:
            enum:
              - all
              - children
              - ancestors
              - parent
            type: string
        - description: |
            Given a provided show id, it can be useful to get the details of a child season. This option
            provides a means to return the `first` or `latest` season of a show given the show id.

            The `expand` parameter also works here so for example you could land on a show page and request the
            latest season along with `expand=all`. This would then return the detail of the latest season with
            its list of child episode summaries, and also expand the detail of the show with its list of seasons summaries.

            Note the `id` parameter must be a show id for this parameter to work correctly.
          in: query
          name: select_season
          schema:
            enum:
              - first
              - latest
            type: string
        - description: Set to true when passing a custom Id as the `id` path parameter.
          in: query
          name: use_custom_id
          schema:
            type: boolean
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItemDetail"
          description: The item requested
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - content
    x-serviceId: item
  "/items/{id}/children":
    get:
      description: |
        Returns the List of child summary items under an item.

        If the item is a Season then the children will be episodes and ordered by episode number.

        If the item is a Show then the children will be Seasons and ordered by season number.

        Returns 404 if no children found.
      operationId: getItemChildrenList
      parameters:
        - description: The identifier of the item whose children to load.
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: The page of items to load. Starts from page 1.
          in: query
          name: page
          schema:
            default: 1
            format: int32
            minimum: 1
            type: integer
        - description: The number of items to return in a page.
          in: query
          name: page_size
          schema:
            default: 12
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: The maximum rating (inclusive) of items returned, e.g. 'auoflc-pg'.
          in: query
          name: max_rating
          schema:
            type: string
        - $ref: "#/components/parameters/ListOrder"
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItemList"
          description: The list of items requested.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - content
    x-serviceId: itemChildList
  "/items/{id}/related":
    get:
      description: |
        Returns the list of items related to the parent item.

        Note for now, due to the size of the list being unknown, only a single page will be returned.
      operationId: getItemRelatedList
      parameters:
        - description: The identifier of the item to based related items off.
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: The page of items to load. Starts from page 1.
          in: query
          name: page
          schema:
            default: 1
            format: int32
            minimum: 1
            type: integer
        - description: The number of items to return in a page.
          in: query
          name: page_size
          schema:
            default: 12
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: The maximum rating (inclusive) of items returned, e.g. 'auoflc-pg'.
          in: query
          name: max_rating
          schema:
            type: string
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItemList"
          description: The list of items requested.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - content
    x-serviceId: itemRelatedList
  "/items/{id}/videos":
    get:
      description: |
        Get the free / public video files associated with an item given maximum resolution,
        device type and one or more delivery types.

        Returns an array of video file objects which each include a url to a video.

        The first entry in the array contains what is predicted to be the best match.
        The remainder of the entries, if any, may contain resolutions below what was
        requests. For example if you request HD-720 the response may also contain
        SD entries.

        If you specify multiple delivery types, then the response array will insert
        types in the order you specify them in the query. For example `stream,progressive`
        would return an array with 0 or more stream files followed by 0 or more progressive files.

        If no files are found a 404 is returned.
      operationId: getPublicItemMediaFiles
      parameters:
        - description: The identifier of the item whose video files to load.
          in: path
          name: id
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/MediaFileDelivery"
        - $ref: "#/components/parameters/MediaFileResolution"
        - $ref: "#/components/parameters/MediaFileFormats"
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/MediaFile"
                type: array
          description: |
            The list of video files available.
            The first entry containing what is predicted to be the best match.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - content
    x-serviceId: media
  "/items/{itemId}/next":
    get:
      description: |
        Identical to GET /account/profile/items/{itemId}/next route but for users
        that are not logged in i.e. this endpoint does not require authorisation
      operationId: getAnonNextPlaybackItem
      parameters:
        - description: |
            The identifier of the source item to base the next to watch item off.
          in: path
          name: itemId
          required: true
          schema:
            type: string
        - description: The maximum rating (inclusive) of an item returned, e.g. 'auoflc-pg'.
          in: query
          name: max_rating
          schema:
            type: string
        - description: |
            If no value is specified no dependencies are expanded.

            If 'parent' is specified then only the direct parent will be expanded.
            For example if an `Episode` then the `Season` would be included.

            If 'ancestors' is specified then the full parent chain is expanded.
            For example if an `Episode` then both the `Season` and `Show` would be included.
          in: query
          name: expand
          schema:
            enum:
              - parent
              - ancestors
            type: string
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/NextPlaybackItem"
          description: The detail of the next item to play.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - content
    x-serviceId: itvNightwatch
  "/itv/billinghistory/{platform}":
    post:
      description: Returns the list of billing records for specified payment platform.
      operationId: getBillingHistory
      parameters:
        - description: The identifier of the payment platform (stripe/itunes).
          in: path
          name: platform
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvBillingHistoryRequest"
        description: Details of a billing history request.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvBillingHistory"
          description: List of billing records.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  "/itv/cards/{platform}":
    post:
      description: Get payment card details.
      operationId: getCardDetails
      parameters:
        - description: The identifier of the payment platform (stripe/itunes).
          in: path
          name: platform
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvGetCardDetailsRequest"
        description: ITV profile token in body.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvCardDetails"
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    put:
      description: Change payment card details.
      operationId: changeCardDetails
      parameters:
        - description: The identifier of the payment platform (stripe/itunes).
          in: path
          name: platform
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvChangeCardDetailsRequest"
        description: Details of change card details request.
        required: true
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  /itv/changeemail:
    post:
      description: |
        Change email address related to account/profile.

        The expected token scope is Settings.
      operationId: changeEmail
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvChangeEmailRequest"
              type: string
        description: New email address & ITV profile token.
        required: true
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Settings
      tags:
        - itv
    x-serviceId: itvProfile
  /itv/changemarketing:
    post:
      description: |
        Change marketing preferences related to account/profile.

        The expected token scope is Settings.
      operationId: changeMarketing
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvChangeMarketingRequest"
              type: string
        description: Updated marketing preferences & ITV profile token.
        required: true
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Settings
      tags:
        - itv
    x-serviceId: itvProfile
  /itv/deleteaccount:
    post:
      description: |
        Delete account in compliance with GDPR.

        The expected token scope is Settings.
      operationId: deleteAccount
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvDeleteAccountRequest"
              type: string
        description: New email address & ITV profile token.
        required: true
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Settings
      tags:
        - itv
    x-serviceId: itvGdpr
  /itv/entitlements/current:
    get:
      description: Returns current entitlement.
      operationId: getCurrentEntitlement
      parameters:
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvEntitlementCurrent"
          description: Current entitlement.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  /itv/entitlements/history:
    get:
      description: Returns the state of subscription for any payment platform.
      operationId: getEntitlementsHistory
      parameters:
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvEntitlementsHistory"
          description: Details of current subscription.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  "/itv/featureFlag/{feature}":
    get:
      description: Gets info whether or not a feature is enabled or disabled using a feature flag. Feature flags are set as a custom field within PM. It also supports custom feature flag data if needed. Such data can be return as well.
      operationId: getFeatureFlag
      parameters:
        - description: The identifier of the feature to check for feature flag.
          in: path
          name: feature
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvFeatureFlag"
          description: Request succeeded.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - itv
    x-serviceId: itvConfig
  /itv/googlepay/subscription:
    post:
      description: Get the list of recommended items under the active profile.
      operationId: googlePaySubscription
      parameters:
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvGooglePaySubscriptionRequest"
        description: Details of googlePay subscription request.
        required: true
      responses:
        "204":
          description: No Content
        "400":
          description: missing purchase token/subscription item in body, or subscription item undefined
        "401":
          description: Invalid or missing grant
        "409":
          description: Purchase token is already attached to a different user
        "415":
          description: wrong content-type
        "500":
          description: something bad has happened
      security:
        - profileAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  /itv/had/entitlements:
    get:
      description: Check whether the user has been previously entitled.
      operationId: checkPreviousEntitlements
      parameters:
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvHadEntitlement"
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  /itv/items/clips:
    post:
      description: |
        Get the media clip files associated with items.
      operationId: getItemsMediaClipFiles
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        $ref: "#/components/requestBodies/ItemDownloadableRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItemClipFilesList"
          description: The item id with clip files
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - content
    x-serviceId: itvItem
  /itv/items/downloadable:
    post:
      description: Returns the details of an item with the specified id.
      operationId: getItemDownloadables
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        $ref: "#/components/requestBodies/ItemDownloadableRequest"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItemDownloadableList"
          description: The item requested
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - content
    x-serviceId: itvItem
  "/itv/itemsummary/{externalId}":
    get:
      description: Redirects to corresponding Axis Item details page.
      parameters:
        - description: The external identifier of the item.
          in: path
          name: externalId
          required: true
          schema:
            type: string
      responses:
        "302":
          content:
            application/json:
              schema:
                type: object
          description: Item found.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - itv
    x-serviceId: itvInfo
  /itv/page:
    get:
      description: |
        Returns a page with the specified id.

        This is a cut down version for low memory devices.123

        If targeting the search page you must url encode the search term as a parameter
        using the `q` key. For example if your browser path looks like `/search?q=the`
        then what you pass to this endpoint would look like `/itv/page?path=/search%3Fq%3Dthe`.
      operationId: getItvPage
      parameters:
        - description: The path of the page to load, e.g. '/movies'.
          in: query
          name: path
          required: true
          schema:
            type: string
        - description: The number of items to load when prefetching and paging each list in the page row.
          in: query
          name: list_page_size
          schema:
            default: 12
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: |
            The number of items to load when prefetching a continuous scroll list entry in a page.

            By default any list page entry with template pattern `/^CS\d+$/` will
            be considered a continuous scroll list.
          in: query
          name: list_page_size_large
          schema:
            default: 50
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: The maximum number of lists to prefetch in the page.
          in: query
          name: max_list_prefetch
          schema:
            default: 2
            format: int32
            maximum: 15
            minimum: 0
            type: integer
        - description: |
            Only relevant when loading item detail pages as these embed a detailed item in the main page entry.

            If no value is specified no item dependencies are expanded.

            If 'children' is specified then the list of any direct children will be expanded. For example
            seasons of a show or episodes of a season.

            If 'all' is specified then the parent chain will be expanded along with any child list at each level.
            For example if an episode is specified then its season will be expanded and that season's episode list.
            The season will have its show expanded and the show will have its season list expanded.

            The 'all' options is useful when you deep link into a show/season/episode for the first time as
            it provides full context for navigating around the show page. Subsequent navigation around
            children of the show should only need to request expand of children.

            If 'ancestors' is specified then only the parent chain is included

            If an expand is specified which is not relevant to the item type, it will be ignored.
          in: query
          name: item_detail_expand
          schema:
            enum:
              - all
              - children
              - ancestors
            type: string
        - description: |
            Only relevant when loading show detail pages as these embed a detailed item in the main page entry.

            Since the introduction of the D1,2,3 templates this parameter is now somewhat redundant, or less
            likely to have any effect. While it may still be useful in some cases, most of the time the season
            selection will be dictated by the configuration of the rows scheduled on the show detail page.
            This parameter will only take effect if there are rows used to schedule episodes of a season, like
            D1,2,3, or if no rows have a value set for their `seasonOrder` custom field.

            Given a targeted show page, it can be useful to get the details of a child season. This option
            provides a means to return the `first` or `latest` season of a show embedded in the page.

            The `expand` parameter also works here so for example you could land on a show page and request the
            `item_detail_select_season=latest` along with `item_detail_expand=all`. This would then return the
            detail of the latest season with its list of child episode summaries, and also expand
            the detail of the show with its list of seasons summaries.
          in: query
          name: item_detail_select_season
          schema:
            enum:
              - first
              - latest
            type: string
        - description: |
            Only relevant to page entries of type `TextEntry`.

            Converts the value of a text page entry to the specified format.
          in: query
          name: text_entry_format
          schema:
            default: markdown
            enum:
              - markdown
              - html
            type: string
        - description: The maximum rating (inclusive) of items returned, e.g. 'auoflc-pg'.
          in: query
          name: max_rating
          schema:
            type: string
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Page"
          description: The page requested.
        "301":
          description: |
            Returned if feature flag `cd` is set and item detail is requested of an item that has
            Custom Destination set to an External URL. The `Location` response header contains the URL.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - app
    x-serviceId: itvPage
  /itv/pinauthorization:
    post:
      description: |
        Provides authorization with parental control pin.

        Returns an array containing account token with Playback scope.

        Requires access token with Catalog scope.

        Pin must be a 4-digit string
      operationId: getAccountTokenWithPin
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvPinAuthRequest"
        description: Details of token request.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                additionalProperties: false
                items:
                  $ref: "#/components/schemas/AccessToken"
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvAuth
  "/itv/plan/{platform}":
    post:
      description: Upgrades the plan for the current user.
      operationId: upgradePlan
      parameters:
        - description: The identifier of the payment platform (stripe/itunes). Only Stripe is supported
          in: path
          name: platform
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvUpgradePlanRequest"
        description: Details of an upgrade request.
        required: true
      responses:
        "200":
          description: Upgrade succeeded.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  "/itv/plans/{platform}":
    get:
      description: Returns the plans available for specified payment platform.
      parameters:
        - description: The identifier of the payment platform (stripe/itunes).
          in: path
          name: platform
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvPlans"
          description: List of available plans.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  /itv/profile:
    get:
      description: Returns the ITV profile object.
      parameters:
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                type: object
          description: The ITV profile object.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    put:
      description: |
        Update ITV profile.

        The expected token scope is Settings.
      operationId: updateProfile
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvUpdateProfileRequest"
              type: string
        description: ITV profile object with updated values & ITV profile token.
        required: true
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Settings
      tags:
        - itv
    x-serviceId: itvProfile
  /itv/profile/recommendation/list:
    get:
      description: Get the list of recommended items under the active profile.
      operationId: getRecommendedList
      parameters:
        - description: List of item types to filter the recommendation list
          example:
            item_types: show,movie
          explode: false
          in: query
          name: item_types
          schema:
            items:
              description: item type name
              minLength: 1
              type: string
            type: array
          style: form
        - description: The page of items to load. Starts from page 1.
          in: query
          name: page
          schema:
            default: 1
            format: int32
            minimum: 1
            type: integer
        - description: The number of items to return in a page.
          in: query
          name: page_size
          schema:
            default: 12
            format: int32
            maximum: 50
            minimum: 1
            type: integer
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItemList"
          description: The list of items requested.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - profileAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvRecommendation
  /itv/profiletoken:
    post:
      description: Returns the ITV profile token.
      operationId: getItvProfileToken
      parameters:
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvProfileTokenRequest"
        description: Details of token request.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvProfileToken"
          description: The ITV profile token.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  "/itv/purchase/{platform}":
    delete:
      description: |
        Cancel a plan subscription.

        A cancelled subscription will continue to be valid until the subscription
        expiry date or next renewal date.
      parameters:
        - description: The identifier of the payment platform (stripe/itunes).
          in: path
          name: platform
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvCancelSubscriptionRequest"
        description: Details of a cancellation request.
        required: true
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    get:
      description: Returns the details of current subscription for specified payment platform.
      operationId: getCurrentSubscription
      parameters:
        - description: The identifier of the payment platform (stripe/itunes).
          in: path
          name: platform
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvCurrentSubscription"
          description: Details of current subscription.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    post:
      description: Confirms purchase and returns the details of purchased subscription for specified payment platform.
      operationId: confirmPurchase
      parameters:
        - description: The identifier of the payment platform (stripe/itunes).
          in: path
          name: platform
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvPurchaseRequest"
        description: Details of a purchase request.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvPurchase"
          description: Details of purchased subscription.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  "/itv/purchase/{platform}/strong":
    post:
      description: Confirms purchase and returns the details of purchased subscription for specified payment platform.
      operationId: confirmPurchaseStrong
      parameters:
        - description: The identifier of the payment platform (stripe/itunes).
          in: path
          name: platform
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvPurchaseStrongRequest"
        description: Details of a purchase request.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvPurchaseStrongResponse"
          description: Details of purchased subscription.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  "/itv/purchase/{platform}/withoffer":
    post:
      description: Confirms purchase and returns the details of purchased subscription for specified payment platform.
      operationId: confirmPurchaseWithOffer
      parameters:
        - description: The identifier of the payment platform (stripe/itunes).
          in: path
          name: platform
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvPurchaseWithOfferRequest"
        description: Details of a purchase request.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvPurchaseWithOfferResponse"
          description: Details of purchased subscription.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  "/itv/resubscribe/{platform}":
    post:
      description: Resubscription for a user.
      operationId: resubscribe
      parameters:
        - description: The id of the plan to renew.
          in: query
          name: planId
          required: true
          schema:
            type: string
        - description: The identifier of the payment platform (stripe/itunes). Only stripe is currently supported.
          in: path
          name: platform
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                type: object
          description: Success. The response body is the updated plan information.
        "401":
          description: Invalid Rocket token.
        "404":
          description: Customer not found or no active subscription.
        "406":
          description: Invalid ITV token.
        "409":
          description: Customer not already set for cancellation.
        "500":
          description: Third party API internal server error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  /itv/roku/plans:
    get:
      description: Gets available Roku plans.
      parameters:
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RokuPlans"
          description: Details of available Roku plans.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - itv
    x-serviceId: itvRoku
  "/itv/roku/transaction/{transactionid}":
    post:
      description: Sends request to execute specified transaction.
      operationId: executeTransaction
      parameters:
        - description: The identifier of the Roku transaction (subscribe/upgrade/downgrade/cancellation).
          in: path
          name: transactionid
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvRokuTransactionRequest"
        description: Details of a transaction request.
        required: true
      responses:
        "200":
          description: OK.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - itv
    x-serviceId: itvRoku
  /itv/save-offer:
    get:
      description: Checks the provided coupon id for a user. Only Stripe platform is currently supported.
      operationId: getSaveOffer
      parameters:
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvGetDiscountResponse"
          description: Avalable save offer plan, if any.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    post:
      description: Activates the discount for a user. Only Stripe platform is currently supported.
      operationId: activateSaveOffer
      parameters:
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              type: string
        description: The coupon id to be checked.
        required: true
      responses:
        "204":
          description: Authentication  passes, the user has an active subscription and the coupon id is valid. The response body is the updated subscription object.
        "401":
          description: Unauthorised. In the case of a token this can happen if the token is missing, invalid, or if the token bearer does not match the user in the path.
        "404":
          description: The customer could not be found.The customer does not have an active subscription. The coupon could not be found.
        "406":
          description: Invalid Token/Customer Not Eligible for Offer.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  /itv/subscription/fullpricerenewal:
    get:
      description: Returns full price renewal state and reason for specific user.
      operationId: getFullPriceRenewal
      parameters:
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvSubscriptionFullPriceRenewal"
          description: full price renewal state and reason for specific user.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
      x-400:
        description: Bad request.
        schema:
          $ref: "#/components/schemas/ServiceError"
      x-404:
        description: Not found.
        schema:
          $ref: "#/components/schemas/ServiceError"
      x-415:
        description: Unsupported Media Type
        schema:
          $ref: "#/components/schemas/ServiceError"
      x-500:
        description: Internal server error.
        schema:
          $ref: "#/components/schemas/ServiceError"
      x-default:
        description: Service error.
        schema:
          $ref: "#/components/schemas/ServiceError"
    x-serviceId: itvSubscription
  "/itv/subscription/status/{platform}":
    get:
      description: Returns status of latest payment intent.
      operationId: getSubscriptionStatus
      parameters:
        - description: The identifier of the payment platform (stripe/itunes).
          in: path
          name: platform
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvSubscriptionStatusResponse"
          description: Status of the latest payment intent
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
      x-400:
        description: Bad request.
        schema:
          $ref: "#/components/schemas/ServiceError"
      x-404:
        description: Not found.
        schema:
          $ref: "#/components/schemas/ServiceError"
      x-415:
        description: Unsupported Media Type
        schema:
          $ref: "#/components/schemas/ServiceError"
      x-500:
        description: Internal server error.
        schema:
          $ref: "#/components/schemas/ServiceError"
      x-default:
        description: Service error.
        schema:
          $ref: "#/components/schemas/ServiceError"
    x-serviceId: itvSubscription
  /itv/subscriptionstate:
    get:
      description: Returns the state of subscription for any payment platform.
      operationId: getSubscriptionState
      parameters:
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvSubscriptionState"
          description: Details of current subscription.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  /itv/upcominginvoice:
    get:
      description: Returns an upcoming invoice
      operationId: getUpcomingInvoice
      parameters:
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvGetDiscountResponse"
          description: Avalable save offer plan, if any.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  "/itv/updateIntent/strong/{platform}":
    put:
      description: Change payment method details.
      operationId: updatePaymentIntentStrong
      parameters:
        - description: The identifier of the payment platform (stripe only is currently supported).
          in: path
          name: platform
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvUpdateIntentStrongRequest"
        description: Details of change card details request.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvUpdateIntentStrongResponse"
          description: ""
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  "/itv/updatePayment/strong/{platform}":
    put:
      description: Change payment method details.
      operationId: updatePaymentMethodStrong
      parameters:
        - description: The identifier of the payment platform (stripe only is currently supported).
          in: path
          name: platform
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvUpdatePaymentStrongRequest"
        description: Details of change card details request.
        required: true
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  "/itv/voucher/{planId}/{voucherId}":
    get:
      description: Checks the provided coupon id for a user. Only Stripe platform is currently supported.
      operationId: getVoucherById
      parameters:
        - description: The identifier of the voucher.
          in: path
          name: voucherId
          required: true
          schema:
            type: string
        - description: The identifier of the plan.
          in: path
          name: planId
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvVoucher"
          description: Avalable voucher, if any.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  "/itv/voucher/{platform}":
    post:
      description: Validates the coupon/voucher for specified payment platform.
      operationId: checkVoucher
      parameters:
        - description: The identifier of the payment platform (stripe/itunes).
          in: path
          name: platform
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ItvVoucherRequest"
        description: Coupon/voucher.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItvVoucher"
          description: Details of requested coupon/voucher.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - accountAuth:
            - Catalog
      tags:
        - itv
    x-serviceId: itvSubscription
  /lists:
    get:
      description: Returns an array of item lists with their first page of content resolved.
      operationId: getLists
      parameters:
        - description: |
            A comma delimited list of item list identifiers.

            These can be list ids e.g. `14354,65473,3234`

            Or more complex sort/filter queries using pipes e.g.

            `14354|max_rating=AUOFLC-E|order=asc|order_by=year-added,65473|page_size=30,3234`

            _Note the id must always come first for each encoded list query_

            List parameters may be provide without the `param=` prefix e.g. `14354|genre:action`

            Only the following options can be present.
              - `order`
              - `order_by`
              - `max_rating`
              - `page_size`
              - `item_type`
              - `param`
          explode: false
          in: query
          name: ids
          required: true
          schema:
            items:
              type: string
            type: array
          style: form
        - description: The number of items to return in a page.
          in: query
          name: page_size
          schema:
            default: 12
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: The maximum rating (inclusive) of items returned, e.g. 'auoflc-pg'.
          in: query
          name: max_rating
          schema:
            type: string
        - $ref: "#/components/parameters/ListOrder"
        - $ref: "#/components/parameters/ListOrderBy"
        - $ref: "#/components/parameters/ItemType"
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/ItemList"
                type: array
          description: The array of item lists requested.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - content
    x-serviceId: list
  "/lists/{id}":
    get:
      description: Returns a list of items under the specified item list
      operationId: getList
      parameters:
        - description: The identifier of the list to load.
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: The page of items to load. Starts from page 1.
          in: query
          name: page
          schema:
            default: 1
            format: int32
            minimum: 1
            type: integer
        - description: The number of items to return in a page.
          in: query
          name: page_size
          schema:
            default: 12
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: The maximum rating (inclusive) of items returned, e.g. 'auoflc-pg'.
          in: query
          name: max_rating
          schema:
            type: string
        - $ref: "#/components/parameters/ListOrder"
        - $ref: "#/components/parameters/ListOrderBy"
        - description: The list parameter in format 'key:value', e.g. 'genre:action'.
          in: query
          name: param
          schema:
            type: string
        - $ref: "#/components/parameters/ItemType"
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ItemList"
          description: The list of items requested.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - content
    x-serviceId: list
  /page:
    get:
      description: |
        Returns a page with the specified id.

        If targeting the search page you must url encode the search term as a parameter
        using the `q` key. For example if your browser path looks like `/search?q=the`
        then what you pass to this endpoint would look like `/page?path=/search%3Fq%3Dthe`.
      operationId: getPage
      parameters:
        - description: The path of the page to load, e.g. '/movies'.
          in: query
          name: path
          required: true
          schema:
            type: string
        - description: The number of items to load when prefetching and paging each list in the page row.
          in: query
          name: list_page_size
          schema:
            default: 12
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: |
            The number of items to load when prefetching a continuous scroll list entry in a page.

            By default any list page entry with template pattern `/^CS\d+$/` will
            be considered a continuous scroll list.
          in: query
          name: list_page_size_large
          schema:
            default: 50
            format: int32
            maximum: 100
            minimum: 1
            type: integer
        - description: The maximum number of lists to prefetch in the page.
          in: query
          name: max_list_prefetch
          schema:
            default: 2
            format: int32
            maximum: 15
            minimum: 0
            type: integer
        - description: |
            Only relevant when loading item detail pages as these embed a detailed item in the main page entry.

            If no value is specified no item dependencies are expanded.

            If 'children' is specified then the list of any direct children will be expanded. For example
            seasons of a show or episodes of a season.

            If 'all' is specified then the parent chain will be expanded along with any child list at each level.
            For example if an episode is specified then its season will be expanded and that season's episode list.
            The season will have its show expanded and the show will have its season list expanded.

            The 'all' options is useful when you deep link into a show/season/episode for the first time as
            it provides full context for navigating around the show page. Subsequent navigation around
            children of the show should only need to request expand of children.

            If 'ancestors' is specified then only the parent chain is included

            If an expand is specified which is not relevant to the item type, it will be ignored.
          in: query
          name: item_detail_expand
          schema:
            enum:
              - all
              - children
              - ancestors
            type: string
        - description: |
            Only relevant when loading show detail pages as these embed a detailed item in the main page entry.

            Since the introduction of the D1,2,3 templates this parameter is now somewhat redundant, or less
            likely to have any effect. While it may still be useful in some cases, most of the time the season
            selection will be dictated by the configuration of the rows scheduled on the show detail page.
            This parameter will only take effect if there are rows used to schedule episodes of a season, like
            D1,2,3, or if no rows have a value set for their `seasonOrder` custom field.

            Given a targeted show page, it can be useful to get the details of a child season. This option
            provides a means to return the `first` or `latest` season of a show embedded in the page.

            The `expand` parameter also works here so for example you could land on a show page and request the
            `item_detail_select_season=latest` along with `item_detail_expand=all`. This would then return the
            detail of the latest season with its list of child episode summaries, and also expand
            the detail of the show with its list of seasons summaries.
          in: query
          name: item_detail_select_season
          schema:
            enum:
              - first
              - latest
            type: string
        - description: |
            Only relevant to page entries of type `TextEntry`.

            Converts the value of a text page entry to the specified format.
          in: query
          name: text_entry_format
          schema:
            default: markdown
            enum:
              - markdown
              - html
            type: string
        - description: The maximum rating (inclusive) of items returned, e.g. 'auoflc-pg'.
          in: query
          name: max_rating
          schema:
            type: string
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Page"
          description: The page requested.
        "301":
          description: |
            Returned if feature flag `cd` is set and item detail is requested of an item that has
            Custom Destination set to an External URL. The `Location` response header contains the URL.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - app
    x-serviceId: page
  "/plans/{id}":
    get:
      description: Returns the details of a Plan with the specified id.
      parameters:
        - description: The identifier of the Plan to load.
          in: path
          name: id
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Plan"
          description: The Plan requested.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - content
    x-serviceId: subscription
  /register:
    post:
      description: |
        Register a new user, creating them an account.

        Registration, when successful, will return an array of access tokens so the user is
        immediately signed in.

        It returns Catalog and Commerce scoped tokens for both Account and Profile.
        The Commerce ones are intended to allow the purchase of a subscription plan
        in the step after registration, without the user being prompted to enter
        their username and password again.

        An email will also be sent with a link they need to click to confirm their
        email address. This confirmation is done via the /verify-email endpoint.
      operationId: register
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/RegistrationRequest"
        description: Registration details.
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                additionalProperties: false
                items:
                  $ref: "#/components/schemas/AccessToken"
                type: array
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - registration
    x-serviceId: itvRegistration
  /request-password-reset:
    post:
      description: |
        Request the password of an account's primary profile be reset.

        Should be called when a user has forgotten their password.

        This will send an email with a password reset link to the email address of the
        primary profile of an account.

        The link, once clicked, should take the user to the "reset-password" page of the
        website. Here they will enter their new password and submit to the /reset-password
        endpoint here, along with the password reset token provided in the original link.
      operationId: forgotPassword
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PasswordResetEmailRequest"
        description: Email address of account to request a password reset on.
        required: true
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - support
    x-serviceId: itvPassword
  /reset-password:
    post:
      description: |
        When a user requests to reset their password via the /request-password-reset endpoint, an
        email is sent to the email address of the primary profile of the account. This email contains a link
        with a reset token as query parameter. The link should take the user to the "reset-password"
        page of the website.

        From the reset-password page a user should enter the new password they wish to use. 
        It should then be submitted to this endpoint,
        along with the reset token from the email link. 
        The token should be provided in the body as resetToken property.
      operationId: resetPassword
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PasswordResetRequest"
        description: ITV reset token from email link and a new password.
        required: true
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - support
    x-serviceId: itvPassword
  /samsung-preview:
    get:
      description: |
        Returns public preview for Samsung based on the page '/samsung-preview' configured in PresentationManager.
        There is a hard limit of max 40 items to be returned. It splits evenly items count into the page rows, remaining items are added into the first row.
      operationId: getPublicPreview
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SamsungPreview"
          description: The samsung public preview requested.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - itv
    x-serviceId: itvSamsung
  /schedules:
    get:
      description: |
        Returns schedules for a defined set of channels over a requested period.

        Schedules are requested in hour blocks and returned grouped by the channel
        they belong to.

        For example, to load 12 hours of schedules for channels `4343` and `5234`,
        on 21/2/2017 starting from 08:00.

        ```
        channels=4343,5234
        date=2017-02-21
        hour=8
        duration=12
        ```

        Please remember that `date` and `hour` combined represent a normal datetime, 
        so they should be converted to UTC on the client - this will help to avoid 
        issues with EPG schedules near midnight.

        If a channel id is passed which doesn't exist then this endpoint will
        return an empty schedule list for it. If instead we returned 404,
        this would invalidate all other channel schedules in the same request
        which would be unfriendly for clients presenting these channel schedules.
      operationId: getSchedules
      parameters:
        - description: The list of channel ids to get schedules for.
          explode: false
          in: query
          name: channels
          required: true
          schema:
            items:
              type: string
            type: array
          style: form
        - description: |
            The date to target in ISO format, e.g. `2017-05-23` (converted to UTC - see main description).

            The base hour requested will belong to this date.
          in: query
          name: date
          required: true
          schema:
            format: date
            type: string
        - description: |
            The base hour in the day, defined by the `date` parameter, you wish to load schedules for 
            (converted to UTC - see main description).

            From 0 to 23, where 0 is midnight.
          in: query
          name: hour
          required: true
          schema:
            format: int32
            maximum: 23
            minimum: 0
            type: integer
        - description: |
            The number of hours of schedules to load from the base `hour` parameter.

            This may be negative or positive depending on whether you want to load past or future schedules.

            Minimum value is -24, maximum is 24. A value of zero is invalid.
          in: query
          name: duration
          required: true
          schema:
            format: int32
            maximum: 24
            minimum: -24
            type: integer
        - description: |
            Flag indicating whether schedules should intersect or be contained in the
            provided interval.

            If set to `true`, the result will contain all schedules where either
            schedule start time or end time touches the provided interval.

            If set to `false`, only schedules fully contained in the given period
            will be returned.
          in: query
          name: intersect
          schema:
            default: false
            type: boolean
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/ItemScheduleList"
                type: array
          description: |
            An array of schedule lists for each channel requested.

            The order of the channels will match the order of channel ids passed during the request.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - content
    x-serviceId: schedule
  /search:
    get:
      description: Search the catalog of items and people.
      operationId: search
      parameters:
        - description: The search term to query.
          in: query
          name: term
          required: true
          schema:
            type: string
        - description: |
            By default people, movies and tv (shows + programs) will be included
            in the search results.

            If the `cas` feature flag is set, "other" items (`customAsset`s) will
            also be included by default

            If you don't want all of these types you can specifiy the specific
            includes you care about.
          explode: false
          in: query
          name: include
          schema:
            items:
              enum:
                - tv
                - movies
                - people
                - other
              type: string
            type: array
          style: form
        - description: |
            When this option is set, instead of all search result items being returned
            in a single list, they will instead be returned under two lists. One for
            movies and another for tv (shows + programs).

            if the `cas` feature flag is set, a third `other` list will be
            included containing `customAsset` results

            Default is undefined meaning items will be returned in a single list.

            The array of `people` results will always be separate from items.
          in: query
          name: group
          schema:
            type: boolean
        - description: The maximum number of results to return.
          in: query
          name: max_results
          schema:
            default: 20
            format: int32
            maximum: 50
            minimum: 1
            type: integer
        - description: The maximum rating (inclusive) of items returned, e.g. 'auoflc-pg'.
          in: query
          name: max_rating
          schema:
            type: string
        - $ref: "#/components/parameters/Device"
        - $ref: "#/components/parameters/Subscription"
        - $ref: "#/components/parameters/Segments"
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchResults"
          description: OK.
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      tags:
        - content
    x-serviceId: search
  /verify-email:
    post:
      description: |
        When an account is created an email is sent to the email address of the new account.
        This contains a link, which once clicked, verifies the email address of the account is correct.

        The link contains a token as a query parameter which should be passed as the authorization
        bearer token to this endpoint to complete email verification.

        The token has en expiry, so if the link is not clicked before it expires, the account holder
        may need to request a new verification email be sent. This can be done via the endpoint
        /account/request-email-verification.
      operationId: verifyEmail
      parameters:
        - $ref: "#/components/parameters/FeatureFlags"
        - $ref: "#/components/parameters/Language"
      responses:
        "204":
          description: OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Bad request.
        "401":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Invalid access token.
        "403":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Forbidden.
        "404":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Not found.
        "415":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Unsupported Media Type
        "500":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Internal server error.
        default:
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ServiceError"
          description: Service error.
      security:
        - verifyEmailAuth: []
      tags:
        - support
    x-serviceId: support
components:
  parameters:
    Device:
      description: The type of device the content is targeting.
      in: query
      name: device
      schema:
        default: web_browser
        type: string
    FeatureFlags:
      description: |
        The set of opt in feature flags which cause breaking changes to responses.

        While Rocket APIs look to avoid breaking changes under the active major version, the formats of responses
        may need to evolve over this time.

        These feature flags allow clients to select which response formats they expect and avoid breaking
        clients as these formats evolve under the current major version.

        ### Flags

        - `all` - Enable all flags. Useful for testing. _Don't use in production_.
        - `idp` - Dynamic item detail pages with schedulable rows.
        - `ldp` - Dynamic list detail pages with schedulable rows.
        - `hb` - Hubble formatted image urls.
        - `rpt` - Updated resume point threshold logic.
        - `cas` - "Custom Asset Search", inlcude `customAssets` in search results.
        - `lrl` - Do not pre-populate related list if more than `max_list_prefetch` down the page.
        - `cd` - Custom Destination support.

        See the `feature-flags.md` for available flag details.
      explode: false
      in: query
      name: ff
      schema:
        items:
          enum:
            - all
            - idp
            - ldp
            - hb
            - rpt
            - cas
            - lrl
            - cd
          type: string
        type: array
      style: form
    ItemType:
      description: The item type to filter by. Defaults to unspecified.
      in: query
      name: item_type
      schema:
        enum:
          - movie
          - show
          - season
          - episode
          - program
          - link
          - trailer
          - channel
          - customAsset
        type: string
      x-enumEmoji:
        channel: 📺
        episode: 📺
        link: 🔗
        movie: 🎬
        program: 🎟
        season: 📺
        show: 📺
        trailer: 🖥
    Language:
      description: |
        Language code for the preferred language to be returned in the response.

        Parameter value is case-insensitive and should be
          - a valid 2 letter language code without region such as en, de
          - or with region such as en_us, en_au

        If undefined then defaults to 'en', unless the server has been configured
        with a custom default.

        See https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
      in: query
      name: lang
      schema:
        type: string
    ListOrder:
      description: The list sort order, either 'asc' or 'desc'.
      in: query
      name: order
      schema:
        default: desc
        enum:
          - asc
          - desc
        type: string
    ListOrderBy:
      description: What to order by.
      in: query
      name: order_by
      schema:
        enum:
          - a-z
          - release-year
          - date-added
        type: string
    MediaFileDelivery:
      description: The video delivery type you require.
      explode: false
      in: query
      name: delivery
      required: true
      schema:
        items:
          enum:
            - stream
            - progressive
            - download
          type: string
        type: array
      style: form
    MediaFileFormats:
      description: |
        The set of media file formats that the device supports, in the order of preference.

        When provided, Rocket API returns only media files in formats specified in this parameter. For each resolution, only the first media file of matching supported format is returned. Files of different resolutions may be of different supported media file formats.

        `external` value is reserved for project customizations where the real MIME type of the file on the specified URL is unknown at the time of ingestion.

        When not provided, Rocket API uses the legacy `User-Agent` header-based logic to find matching media files.
      explode: false
      in: query
      name: formats
      schema:
        items:
          enum:
            - mp4
            - mpd
            - hls
            - external
          type: string
        type: array
      style: form
    MediaFileResolution:
      description: The maximum resolution the device to playback the media can present.
      in: query
      name: resolution
      required: true
      schema:
        enum:
          - HD-4K
          - HD-1080
          - HD-720
          - SD
          - External
        type: string
    Segments:
      description: The list of segments to filter the response by.
      explode: false
      in: query
      name: segments
      schema:
        items:
          type: string
        type: array
      style: form
    Subscription:
      description: The active subscription code.
      in: query
      name: sub
      schema:
        type: string
  requestBodies:
    ItemDownloadableRequest:
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/ItemDownloadableRequest"
      description: The item Axis ids joined string with comma.
      required: true
  schemas:
    AccessToken:
      additionalProperties: false
      properties:
        accountCreated:
          description: |
            When a `UserAccount` token is issued during a single-sign-on flow
            a user may have been automatically registered if they didn't
            have an account already. If this occurs then `accountCreated`
            will be `true`.
          type: boolean
        expirationDate:
          description: The timestamp this token expires.
          format: date-time
          type: string
        refreshable:
          description: True if this token can be refreshed, false if not.
          type: boolean
        type:
          description: The type of the token.
          enum:
            - UserAccount
            - UserProfile
          type: string
        value:
          description: The token value used for authenticated requests.
          type: string
      required:
        - value
        - refreshable
        - expirationDate
        - type
      type: object
      x-emoji: 🔑
    Account:
      additionalProperties: true
      properties:
        address:
          $ref: "#/components/schemas/Address"
        defaultPaymentInstrumentId:
          description: |
            The id of the payment instrument to use by default for account transactions.

             **DEPRECATED** The property `defaultPaymentMethodId` is now preferred.
          type: string
          x-deprecated: Replaced with defaultPaymentMethodId
        defaultPaymentMethodId:
          description: The id of the payment method to use by default for account transactions.
          type: string
        emailVerified:
          description: |
            Whether the email address has been verified.

            Users who receive an emailed verification url click the link to verify their email address.
          type: boolean
        entitlements:
          description: The list of entitlements to playback specific items.
          items:
            $ref: "#/components/schemas/Entitlement"
          type: array
        firstName:
          description: The first name of the account holder.
          type: string
        id:
          description: The id of the account.
          type: string
        isFirstTimeSubscriber:
          description: Whether the account has the very first subscription.
          type: boolean
        lastName:
          description: The last name of the account holder.
          type: string
        marketingEnabled:
          description: Whether the account has opted in or out of marketing material.
          type: boolean
        minRatingPlaybackGuard:
          description: |
            The classification rating defining the minimum rating level a user should be
            forced to enter the account pin code for playback. Anything at this rating
            level or above will require the pin for playback.

            e.g. AUOFLC-MA15+

            If you want to disable this guard pass an empty string or `null`.
          type: string
        pinEnabled:
          description: When an account level pin is defined this will be true.
          type: boolean
        primaryProfileId:
          description: The id of the primary profile.
          type: string
        profiles:
          description: The list of profiles under this account.
          items:
            $ref: "#/components/schemas/ProfileSummary"
          type: array
        segments:
          description: The segments an account has been placed under
          items:
            type: string
          type: array
        subscriptionCode:
          description: |
            The active subscription code for an account.

            The value of this should be passed to any endpoints accepting a `sub` query parameter.
          type: string
        subscriptions:
          description: The list of subscriptions, if any, the account has signed up to.
          items:
            $ref: "#/components/schemas/Subscription"
          type: array
        trackingEnabled:
          description: Whether usage tracking is associated with the account or anonymous.
          type: boolean
        usedFreeTrial:
          description: Whether the account has used up their free trial period of a plan.
          type: boolean
      required:
        - id
        - email
        - trackingEnabled
        - pinEnabled
        - marketingEnabled
        - primaryProfileId
        - subscriptionCode
        - profiles
      type: object
      x-emoji: 👤
    AccountDevices:
      additionalProperties: false
      properties:
        deregistrationWindow:
          $ref: "#/components/schemas/DeviceRegistrationWindow"
        devices:
          description: The array of registered playack devices.
          items:
            $ref: "#/components/schemas/Device"
          type: array
        maxRegistered:
          description: |
            The maximum number of playback devices that can be registered
            under an account at a single time.

            If there is no maximum defined this value will be `-1`.
          format: int32
          type: integer
        registrationWindow:
          $ref: "#/components/schemas/DeviceRegistrationWindow"
      required:
        - devices
        - maxRegistered
      type: object
    AccountNonce:
      additionalProperties: false
      properties:
        value:
          description: The nonce value.
          type: string
      required:
        - value
      type: object
    AccountTokenByCodeRequest:
      additionalProperties: false
      properties:
        code:
          description: The generated device authorization code.
          type: string
        id:
          description: The unique identifier for the device e.g. serial number.
          type: string
        scopes:
          description: The scope(s) of the token(s) required.
          items:
            enum:
              - Catalog
              - Commerce
              - Settings
              - Playback
            type: string
          type: array
      required:
        - id
        - code
        - scopes
      type: object
    AccountTokenRequest:
      additionalProperties: false
      example:
        email: ""
        password: ""
        scopes:
          - Catalog
      properties:
        cookieType:
          description: |
            If you specify a cookie type then a content filter cookie will be returned
            along with the token(s). This is only intended for web based clients which
            need to pass the cookies to a server to render a page based on the user's
            content filters e.g subscription code.

            If type `Session` the cookie will be session based.
            If type `Persistent` the cookie will have a medium term lifespan.
            If undefined no cookies will be set.
          enum:
            - Session
            - Persistent
          type: string
        email:
          description: The email associated with the account.
          type: string
        password:
          description: The password associated with the account.
          type: string
        scopes:
          description: |
            The scope(s) of the tokens required.
            For each scope listed an Account and Profile token of that scope will be returned
          items:
            enum:
              - Catalog
              - Commerce
              - Settings
              - Playback
            type: string
          type: array
      required:
        - email
        - password
        - scopes
      type: object
    AccountUpdateRequest:
      additionalProperties: false
      properties:
        address:
          $ref: "#/components/schemas/Address"
        defaultPaymentInstrumentId:
          description: |
            The id of the payment instrument to use by default for account transactions.

            **DEPRECATED** The property `defaultPaymentMethodId` is now preferred.
          type: string
          x-deprecated: Replaced with defaultPaymentMethodId
        defaultPaymentMethodId:
          description: The id of the payment method to use by default for account transactions.
          type: string
        firstName:
          description: The first name of the account holder.
          type: string
        lastName:
          description: The last name of the account holder.
          type: string
        minRatingPlaybackGuard:
          description: |
            The classification rating defining the minimum rating level a user should be
            forced to enter the account pin code for playback. Anything at this rating
            level or above will require the pin for playback.

            e.g. AUOFLC-MA15+

            If you want to disable this guard pass an empty string or `null`.
          type: string
        segments:
          description: The segments an account should be placed under
          items:
            type: string
          type: array
        trackingEnabled:
          description: Whether usage tracking is associated with an account or anonymous.
          type: boolean
      type: object
    AddPaymentMethodRequest:
      additionalProperties: false
      properties:
        makeDefault:
          description: |
            Whether this payment method should become the account default when 
            making purchases.

            Note that if this is the first payment method of type Card being added to an
            account then it will become the default whether this property is true or false.
          type: boolean
        token:
          description: |
            The payment provider token representing a payment method, obtained by
            submitting payment method details to your third party provider.
          type: string
        type:
          description: The type of payment method.
          enum:
            - Card
          type: string
      required:
        - token
        - type
      type: object
    Address:
      additionalProperties: false
      properties:
        addressLine1:
          description: The first line of the street address.
          type: string
        addressLine2:
          description: The second line of the street address.
          type: string
        city:
          description: The city name.
          type: string
        country:
          description: The country name or code.
          type: string
        postcode:
          description: The postal or zip code.
          type: string
        state:
          description: The state name or abbreviation.
          type: string
      type: object
      x-emoji: 🏠
    AppConfig:
      additionalProperties: false
      properties:
        classification:
          additionalProperties:
            $ref: "#/components/schemas/Classification"
          description: The map of classification ratings.
          type: object
        display:
          $ref: "#/components/schemas/AppConfigDisplay"
        general:
          $ref: "#/components/schemas/AppConfigGeneral"
        i18n:
          $ref: "#/components/schemas/AppConfigI18n"
        linear:
          $ref: "#/components/schemas/AppConfigLinear"
        navigation:
          $ref: "#/components/schemas/Navigation"
        playback:
          $ref: "#/components/schemas/AppConfigPlayback"
        sitemap:
          items:
            $ref: "#/components/schemas/PageSummary"
          type: array
        subscription:
          $ref: "#/components/schemas/AppConfigSubscription"
      type: object
      x-emoji: ⚙️
    AppConfigDisplay:
      additionalProperties: false
      properties:
        themes:
          description: An array of globally configured themes.
          items:
            $ref: "#/components/schemas/Theme"
          type: array
      required:
        - themes
      type: object
    AppConfigGeneral:
      additionalProperties: false
      properties:
        currencyCode:
          description: The currency code to target.
          type: string
        customFields:
          additionalProperties: true
          description: A map of custom configuration fields.
          type: object
        defaultTimeZone:
          description: The default time zone of the site. e.g. "Etc/GMT"
          type: string
        facebookAppId:
          description: The Facebook application id associated with an environment.
          type: string
        gaToken:
          description: A Google Analytics token to track applicaton user events.
          type: string
        itemImageTypes:
          additionalProperties:
            type: string
          description: A map of default item image types where the key is the item types.
          type: object
        mandatorySignIn:
          description: Whether to require sign in for customers to access content.
          type: boolean
        maxUserRating:
          description: The maximum value allowed for user ratings.
          format: int32
          type: integer
        stripeKey:
          description: The public Stripe key to use for payment transactions.
          type: string
        websiteUrl:
          description: The url of the primary website.
          format: uri
          type: string
      type: object
    AppConfigI18n:
      additionalProperties: false
      properties:
        languages:
          description: An array of available languages.
          items:
            $ref: "#/components/schemas/Language"
          type: array
      required:
        - languages
      type: object
    AppConfigLinear:
      additionalProperties: false
      properties:
        scheduleCacheMaxAgeMinutes:
          description: The maximum minutes of schedule cache time.
          format: int32
          type: integer
        viewingWindowDaysAfter:
          description: Number of available upcoming day schedules.
          format: int32
          type: integer
        viewingWindowDaysBefore:
          description: Number of available day schedules in the past.
          format: int32
          type: integer
      type: object
    AppConfigPlayback:
      additionalProperties: false
      properties:
        chainPlayCountdown:
          description: |
            The number of seconds before autoplay of next video.

            If set to 0 there will be no autoplay.
          format: int32
          type: integer
        chainPlaySqueezeback:
          description: |
            The number of seconds before the end of playback when the current video
            should be minimized and user options are presented within the video player.

            If set to 0 there will be no squeezeback.
          format: int32
          type: integer
        chainPlayTimeout:
          description: |
            The number of minutes of user inactivity before autoplay is paused.

            If set to 0 there will be no autoplay timeout.
          format: int32
          type: integer
        heartbeatFrequency:
          description: How often a heartbeat should be renewed during playback.
          format: int32
          type: integer
        viewEventPoints:
          description: |
            An array of percentage points in which to fire off plabyack view events.
            For example a value of 0.5 would indicate that an event should be
            fired when the user is half way through the video.
            Often known as quartiles when four equaly spread event points.
          items:
            maximum: 1
            minimum: 0
            type: number
          type: array
      required:
        - heartbeatFrequency
        - viewEventPoints
        - chainPlaySqueezeback
        - chainPlayTimeout
        - chainPlayCountdown
      type: object
    AppConfigSubscription:
      additionalProperties: false
      properties:
        plans:
          description: The available public plans a user can subscribe to.
          items:
            $ref: "#/components/schemas/Plan"
          type: array
      type: object
    Bookmark:
      additionalProperties: false
      properties:
        creationDate:
          description: The date the bookmark was created.
          format: date-time
          type: string
        itemId:
          description: The id of the item bookmarked.
          type: string
      required:
        - itemId
        - creationDate
      type: object
      x-emoji: 🔖
    BtPlanListItem:
      additionalProperties: false
      properties:
        amount:
          description: The price of a plan. If a free plan then undefined.
          format: float
          type: number
        ctaText:
          description: The textual description.
          type: string
        currency:
          description: The currency a plan is offered in.
          type: string
        description:
          description: The textual description.
          type: string
        ees07PlanDescription:
          type: string
        ees07PlanTitle:
          type: string
        ees07Title:
          type: string
        headerText:
          description: The textual description.
          type: string
        heroText:
          description: The textual description.
          type: string
        id:
          description: The identifier of a plan.
          type: string
        interval:
          description: The type of billing period used.
          enum:
            - day
            - week
            - month
            - year
            - none
          type: string
        intervalCount:
          description: Given the `interval` this is how frequently it will run. e.g. every 2 weeks.
          format: int32
          type: integer
        longText:
          description: The textual description.
          type: string
        nickname:
          description: The title of a plan.
          type: string
        noThanksText:
          type: string
        product:
          description: The product of a plan.
          type: string
        switchingText:
          type: string
        termsAndConditionsItunes:
          type: string
        termsAndConditionsStripe:
          type: string
        trialPeriodDays:
          description: How many days a trial period runs for a plan. Only valid if `hasTrialPeriod` is true.
          format: int32
          type: integer
      required:
        - id
        - nickname
        - product
        - currency
        - trialPeriodDays
        - description
        - heroText
        - ctaText
        - headerText
        - longText
      type: object
      x-emoji: 💳
    BtPlans:
      additionalProperties: false
      properties:
        plans:
          description: The list of available plans.
          items:
            $ref: "#/components/schemas/BtPlanListItem"
          type: array
      required:
        - plans
      type: object
    BtValidateTokenResponse:
      type: object
    ChangePasswordRequest:
      additionalProperties: false
      properties:
        password:
          description: The new password for the account.
          type: string
        profileToken:
          description: The ITV profile token.
          type: string
      required:
        - password
        - profileToken
      type: object
    ChangePinRequest:
      additionalProperties: false
      properties:
        pin:
          description: The new pin to set.
          type: string
      required:
        - pin
      type: object
    Classification:
      allOf:
        - $ref: "#/components/schemas/ClassificationSummary"
        - properties:
            advisoryText:
              description: Parental advisort text.
              type: string
            images:
              additionalProperties:
                format: uri
                type: string
              type: object
            level:
              description: |
                The level of this classification when compared with its siblings.
                A higher level means a greater restriction.
                Each classification in a system should have a unique level.
              format: int32
              type: integer
            system:
              description: The parent system code of the classification.
              type: string
          required:
            - level
            - system
            - images
          type: object
    ClassificationSummary:
      properties:
        code:
          description: The unique code for a classification.
          type: string
        name:
          description: The name of the classification for display.
          type: string
      required:
        - code
        - name
      type: object
      x-emoji: 🔞
    ContinueWatchingListData:
      additionalProperties: false
      description: List data for ContinueWatching List
      properties:
        itemInclusions:
          additionalProperties:
            $ref: "#/components/schemas/ContinueWatchingListDataExpansion"
          description: |
            Object where keys are itemIds for the items in the list and values are objects
            containing additional items (either episode/season/show) that were requested
            in the "include" query option.

            For example if you request the ContinueWatching list with "season" items in
            the list, you can specify `include=episode` and then the specific next episode
            will be returned in this object.
          type: object
      type: object
    ContinueWatchingListDataExpansion:
      additionalProperties: false
      properties:
        episode:
          $ref: "#/components/schemas/ItemSummary"
        season:
          $ref: "#/components/schemas/ItemSummary"
        show:
          $ref: "#/components/schemas/ItemSummary"
      type: object
    Credit:
      allOf:
        - $ref: "#/components/schemas/Person"
        - properties:
            character:
              description: The name of the character.
              type: string
            role:
              description: The type of role the credit performed, e.g. actor.
              enum:
                - actor
                - associateproducer
                - coactor
                - director
                - executiveproducer
                - filminglocation
                - guest
                - narrator
                - other
                - presenter
                - producer
                - productmanager
                - thememusicby
                - voice
                - writer
              type: string
          required:
            - role
          type: object
    Device:
      additionalProperties: false
      properties:
        id:
          description: The unique identifier for this device e.g. serial number.
          type: string
        name:
          description: The human recognisable name for this device.
          type: string
        registrationDate:
          description: The date this device was registered.
          format: date-time
          type: string
        type:
          description: The device type e.g. web_browser.
          type: string
      required:
        - id
        - name
        - registrationDate
        - type
      type: object
      x-emoji: 📱
    DeviceAuthorizationCode:
      additionalProperties: false
      properties:
        code:
          description: The generated device authorization code.
          type: string
      required:
        - code
      type: object
    DeviceRegistrationRequest:
      additionalProperties: false
      properties:
        id:
          description: The unique identifier for this device e.g. serial number.
          type: string
        name:
          description: A human recognisable name for this device.
          type: string
        type:
          description: The device type e.g. web_browser.
          type: string
      required:
        - id
        - name
        - type
      type: object
    DeviceRegistrationWindow:
      additionalProperties: false
      properties:
        endDate:
          description: |
            The end date of the current period.

            This is based on the value of `startDate` plus the number of days defined by  `periodDays`.
          format: date-time
          type: string
        limit:
          description: The maximum de/registrations that can be made in a period.
          format: int32
          type: integer
        periodDays:
          description: The number of days a de/registration period runs for.
          format: int32
          type: integer
        remaining:
          description: The remaining de/registrations that can be made in the current period.
          format: int32
          type: integer
        startDate:
          description: |
            The start date of the current period.

            This is based on the earliest device de/registrations in the past N days, where
            N is defined by `periodDays`.

            If no device has been de/registered then start date will be from the current date.
          format: date-time
          type: string
      required:
        - periodDays
        - limit
        - remaining
        - startDate
        - endDate
      type: object
    EeBtEligibility:
      additionalProperties: false
      properties:
        eligible:
          description: Whether or not user is eligible
          type: boolean
        plan:
          description: The identifier of a plan.
          type: string
        source:
          description: Stripe etc.
          type: string
      required:
        - eligible
      type: object
    EeCreatePinRequest:
      additionalProperties: false
      example:
        accessToken: wxg0fG4GQjBQVjAT0AhKxSkrxFbs
        msisdn: "447931234567"
        trackingHeader: 1234E682-2C74-46A4-B8B3-5BBD3B3E165D
      properties:
        accessToken:
          description: EE API authorization Token received from GET /ee/token/create.
          type: string
        msisdn:
          description: The msisdn.
          type: string
        trackingHeader:
          description: trackingHeader
          type: string
      required:
        - msisdn
        - accessToken
      type: object
    EeCreatePinResponse:
      additionalProperties: false
      properties:
        pinReference:
          description: The pinReference.
          type: string
        trackingHeader:
          description: trackingHeader
          type: string
      required:
        - pinReference
        - trackingHeader
      type: object
    EeCreateTokenResponse:
      additionalProperties: false
      properties:
        accessToken:
          description: The authentication token for later use to call EE endpoints.
          type: string
        expiresIn:
          type: number
        tokenType:
          type: string
      required:
        - token
      type: object
    EeIdentityRequest:
      additionalProperties: false
      example:
        accessToken: wxg0fG4GQjBQVjAT0AhKxSkrxFbs
        sessionId: 7897E682-2C74-46A4-B8B3-5BBD3B3E165D
      properties:
        accessToken:
          description: EE API authorization Token received from GET /ee/token/create.
          type: string
        sessionId:
          description: The sessionId returned in the ee/session response.
          type: string
      required:
        - sessionId
        - accessToken
      type: object
    EeIdentityResponse:
      additionalProperties: false
      properties:
        brand:
          description: The operator brand.
          type: string
        brandCode:
          description: The brand code.
          type: string
        msisdn:
          description: The msisdn.
          type: string
        trackingHeader:
          description: trackingHeader
          type: string
      required:
        - msisdn
        - trackingHeader
      type: object
    EeOfferItem:
      additionalProperties: false
      properties:
        name:
          description: The identifier of an offer.
          type: string
      required:
        - name
      type: object
      x-emoji: 💳
    EeOffersRequest:
      additionalProperties: false
      example:
        accessToken: wxg0fG4GQjBQVjAT0AhKxSkrxFbs
        msisdn: "447931234567"
        trackingHeader: 1234E682-2C74-46A4-B8B3-5BBD3B3E165D
      properties:
        accessToken:
          description: EE API authorization Token received from GET /ee/token/create.
          type: string
        msisdn:
          description: The msisdn.
          type: string
        trackingHeader:
          description: trackingHeader.
          type: string
      required:
        - msisdn
        - accessToken
      type: object
    EeOffersResponse:
      additionalProperties: false
      properties:
        eligibleOffers:
          description: The list of eligible offers.
          items:
            $ref: "#/components/schemas/EeOfferItem"
          type: array
      required:
        - eligibleOffers
      type: object
    EePlanListItem:
      additionalProperties: false
      properties:
        amount:
          description: The price of a plan. If a free plan then undefined.
          format: float
          type: number
        ctaText:
          description: The textual description.
          type: string
        currency:
          description: The currency a plan is offered in.
          type: string
        description:
          description: The textual description.
          type: string
        headerText:
          description: The textual description.
          type: string
        heroText:
          description: The textual description.
          type: string
        id:
          description: The identifier of a plan.
          type: string
        interval:
          description: The type of billing period used.
          enum:
            - day
            - week
            - month
            - year
            - none
          type: string
        intervalCount:
          description: Given the `interval` this is how frequently it will run. e.g. every 2 weeks.
          format: int32
          type: integer
        longText:
          description: The textual description.
          type: string
        nickname:
          description: The title of a plan.
          type: string
        product:
          description: The product of a plan.
          type: string
        trialPeriodDays:
          description: How many days a trial period runs for a plan. Only valid if `hasTrialPeriod` is true.
          format: int32
          type: integer
      required:
        - id
        - nickname
        - product
        - currency
        - trialPeriodDays
        - description
        - heroText
        - ctaText
        - headerText
        - longText
      type: object
      x-emoji: 💳
    EePlans:
      additionalProperties: false
      properties:
        plans:
          description: The list of available plans.
          items:
            $ref: "#/components/schemas/EePlanListItem"
          type: array
      required:
        - plans
      type: object
    EeSessionIdRequest:
      additionalProperties: false
      example:
        accessToken: xxxDDxBoHnNG1qYWutsRqE0dHxxx
        clientIP: 123.456.789
      properties:
        accessToken:
          description: EE API authorization Token received from GET /ee/token/create.
          type: string
        clientIP:
          description: The IP address of the requesting device.
          type: string
      required:
        - clientIP
        - accessToken
      type: object
    EeSessionIdResponse:
      additionalProperties: false
      properties:
        sessionId:
          description: The assigned SessionId.
          type: string
      required:
        - sessionId
      type: object
    EeValidatePinRequest:
      additionalProperties: false
      example:
        accessToken: wxg0fG4GQjBQVjAT0AhKxSkrxFbs
        pin: "123456"
        pinReference: "9897222307534"
        trackingHeader: 1234E682-2C74-46A4-B8B3-5BBD3B3E165D
      properties:
        accessToken:
          description: EE API authorization Token received from GET /ee/token/create.
          type: string
        pin:
          description: The pin entered by a user. 6 digits
          type: string
        pinReference:
          description: The pinReference.
          type: string
        trackingHeader:
          description: Tracking header to be able to search logs for a specific user requests. If not provided it will be generated. FE should store it for later user.
          type: string
      required:
        - pinReference
        - pin
        - accessToken
      type: object
    EeValidatePinResponse:
      additionalProperties: false
      properties:
        pinValid:
          description: The validation status.
          type: string
        trackingHeader:
          description: trackingHeader
          type: string
      required:
        - validationStatus
        - trackingHeader
      type: object
    Entitlement:
      allOf:
        - $ref: "#/components/schemas/OfferRights"
        - properties:
            activationDate:
              description: The date of activation. If no date is defined the entitlement has not be activated.
              format: date-time
              type: string
            classification:
              $ref: "#/components/schemas/ClassificationSummary"
            creationDate:
              description: The date the entitlement was created.
              format: date-time
              type: string
            expirationDate:
              description: The date the entitlement expires.
              format: date-time
              type: string
            itemId:
              description: The id of the item this entitlement is for.
              type: string
            itemType:
              description: The type of item this entitlement is for.
              enum:
                - movie
                - show
                - season
                - episode
                - program
                - link
                - trailer
                - channel
                - customAsset
              type: string
              x-enumEmoji:
                channel: 📺
                episode: 📺
                link: 🔗
                movie: 🎬
                program: 🎟
                season: 📺
                show: 📺
                trailer: 🖥
            mediaDuration:
              description: The duration of the entitled media.
              format: int32
              type: integer
            planId:
              description: The id of the plan this entitlement is for.
              type: string
            playCount:
              description: How many times the media has been played.
              format: int32
              type: integer
            remainingDownloads:
              description: How many more downloads of this media are available.
              format: int32
              type: integer
          type: object
          x-emoji: 🎟
    ExclusionRule:
      additionalProperties: false
      description: Defines playback exclusion rules for an Offer or Entitlement.
      properties:
        description:
          type: string
        device:
          description: The device type that the exclusion rules apply to.
          type: string
        excludeAirplay:
          description: Prevent airplay from an apple device.
          type: boolean
        excludeChromecast:
          description: Prevent chromecasting.
          type: boolean
        excludeDelivery:
          enum:
            - Stream
            - Download
            - StreamOrDownload
            - ProgressiveDownload
            - None
          type: string
        excludeMinResolution:
          enum:
            - SD
            - HD-720
            - HD-1080
            - HD-4K
            - External
            - Unknown
          type: string
      type: object
      x-emoji: ⛔️
    ItemClipFile:
      additionalProperties: true
      properties:
        channels:
          description: The number of audio channels.
          format: int32
          type: integer
        deliveryType:
          description: The way in which the media file is delivered.
          enum:
            - Stream
            - Progressive
            - Download
          type: string
        drm:
          description: The type of drm used to encrypt the media. 'None' if unencrypted.
          type: string
        format:
          description: The format the media was encoded in.
          type: string
        height:
          description: The height of the video media.
          format: int32
          type: integer
        language:
          description: The language code for the media, e.g. 'en'.
          type: string
        name:
          description: The name of the media file.
          type: string
        resolution:
          description: The resolution of the video media.
          enum:
            - SD
            - HD-720
            - HD-1080
            - HD-4K
            - External
            - Unknown
          type: string
        url:
          description: The url to access the media file.
          format: uri
          type: string
        width:
          description: The width of the video media.
          format: int32
          type: integer
      required:
        - name
        - deliveryType
        - url
        - drm
        - format
        - resolution
        - width
        - height
        - language
      type: object
      x-emoji: 📀
    ItemClipFiles:
      properties:
        clips:
          description: Array of item clip file.
          items:
            $ref: "#/components/schemas/ItemClipFile"
          type: array
        id:
          description: Unique identifier for an Item
          type: string
      required:
        - id
        - clips
      type: object
    ItemClipFilesList:
      additionalProperties: false
      description: A list of items with its clip files.
      properties:
        items:
          description: A list of items
          items:
            $ref: "#/components/schemas/ItemClipFiles"
          type: array
      required:
        - items
      type: object
      x-emoji: 📚
    ItemCustomMetadata:
      description: Custom metadata associated with an item.
      properties:
        name:
          description: The name of the custom metadata.
          type: string
        value:
          description: The value of the custom metadata.
          type: string
      required:
        - name
        - value
      type: object
    ItemDetail:
      allOf:
        - $ref: "#/components/schemas/ItemSummary"
        - properties:
            copyright:
              description: Copyright information about this item
              type: string
            credits:
              description: A list of credits associated with this item.
              items:
                $ref: "#/components/schemas/Credit"
              type: array
            customMetadata:
              description: |
                An ordered list of custom name-value-pair item metadata.

                Usually displayed on an item detail page.
              items:
                $ref: "#/components/schemas/ItemCustomMetadata"
              type: array
            description:
              description: The description of this item.
              type: string
            distributor:
              description: The distributor of this item.
              type: string
            episodes:
              $ref: "#/components/schemas/ItemList"
            eventDate:
              description: |
                The optional date of an event.
                Specific to a Program item type.
              format: date-time
              type: string
            genrePaths:
              description: |
                An array of genre paths mapping to the values within the `genres` array from ItemSummary.
              items:
                type: string
              type: array
            location:
              description: |
                The optional location (e.g. city) of an event.
                Specific to a Program item type.
              type: string
            season:
              $ref: "#/components/schemas/ItemDetail"
            seasons:
              $ref: "#/components/schemas/ItemList"
            show:
              $ref: "#/components/schemas/ItemDetail"
            totalUserRatings:
              description: The total number of users who have rated this item.
              format: int32
              minimum: 0
              type: integer
            trailers:
              description: A list of trailers associated with this item.
              items:
                $ref: "#/components/schemas/ItemSummary"
              type: array
            venue:
              description: |
                The optional venue of an event.
                Specific to a Program item type.
              type: string
          type: object
    ItemDownloadable:
      discriminator:
        propertyName: type
      properties:
        downloadable:
          description: is the item downloadable?
          type: boolean
        id:
          description: Unique identifier for an Item
          type: string
      required:
        - id
        - downloadable
      type: object
      x-emoji: 📘
    ItemDownloadableList:
      additionalProperties: false
      description: A list of items downloadable data.
      properties:
        items:
          description: A list of items
          items:
            $ref: "#/components/schemas/ItemDownloadable"
          type: array
      required:
        - items
      type: object
      x-emoji: 📚
    ItemDownloadableRequest:
      additionalProperties: false
      example:
        ids: 1234,2345,3456
      properties:
        ids:
          description: Comma-separated list of AXIS item ids.
          type: string
      required:
        - ids
      type: object
    ItemList:
      additionalProperties: false
      description: A pageable list of items.
      properties:
        customFields:
          additionalProperties: true
          description: A map of custom fields defined by a curator for a list.
          type: object
        description:
          description: A full description of this list.
          type: string
        id:
          description: The id of this list
          type: string
        images:
          additionalProperties:
            format: uri
            type: string
          type: object
        itemTypes:
          description: The types of items in the list
          items:
            enum:
              - movie
              - show
              - season
              - episode
              - program
              - link
              - trailer
              - channel
              - customAsset
            type: string
            x-enumEmoji:
              channel: 📺
              episode: 📺
              link: 🔗
              movie: 🎬
              program: 🎟
              season: 📺
              show: 📺
              trailer: 🖥
          type: array
        items:
          description: A list of items
          items:
            $ref: "#/components/schemas/ItemSummary"
          type: array
        listData:
          $ref: "#/components/schemas/ListData"
        paging:
          $ref: "#/components/schemas/Pagination"
        parameter:
          description: |-
            If this list is parameterized, then this contains the parameter of the list in the format `name:value`.
            For example the Movies Genre list will take a parameter `genre` with a given value. e.g. `genre:action` or `genre:drama`.
          type: string
        path:
          description: The path of this list
          type: string
        shortDescription:
          description: A short description of this list.
          type: string
        size:
          description: The total size of the list
          format: int32
          type: integer
        tagline:
          description: The tagline of the item.
          type: string
        themes:
          items:
            $ref: "#/components/schemas/Theme"
          type: array
        title:
          description: The title of this list
          type: string
      required:
        - id
        - size
        - items
        - paging
        - path
      type: object
      x-emoji: 📚
    ItemPurchase:
      additionalProperties: false
      properties:
        id:
          description: The identifier of the purchased item.
          type: string
        ownership:
          description: The ownership of the purchased item.
          enum:
            - Subscription
            - Free
            - Rent
            - Own
            - None
          type: string
        resolution:
          description: The resolution of the purchased item.
          enum:
            - SD
            - HD-720
            - HD-1080
            - HD-4K
            - External
            - Unknown
          type: string
        title:
          description: The title of the purchased item.
          type: string
        type:
          description: The type of item purchased.
          enum:
            - movie
            - show
            - season
            - episode
            - program
            - link
            - trailer
            - channel
            - customAsset
          type: string
          x-enumEmoji:
            channel: 📺
            episode: 📺
            link: 🔗
            movie: 🎬
            program: 🎟
            season: 📺
            show: 📺
            trailer: 🖥
      required:
        - id
        - ownership
        - resolution
        - title
        - type
      type: object
      x-emoji: 💰
    ItemSchedule:
      additionalProperties: true
      properties:
        blackout:
          description: True if this schedule represents time when the channel is completely off air.
          type: boolean
        channelId:
          description: The id of the channel item this schedule belongs to.
          type: string
        endDate:
          description: The date and time this schedule ends.
          format: date-time
          type: string
        featured:
          description: True if this is a featured item schedule.
          type: boolean
        id:
          type: string
        live:
          description: True if this is a live event.
          type: boolean
        repeat:
          description: True if this has been aired previously on the same channel.
          type: boolean
        startDate:
          description: The date and time this schedule starts.
          format: date-time
          type: string
      required:
        - id
        - channelId
        - startDate
        - endDate
      type: object
      x-emoji: ⏳
    ItemScheduleList:
      additionalProperties: false
      properties:
        channelId:
          description: The id of the channel the schedules belong to.
          type: string
        endDate:
          description: The date and time this list of schedules ends.
          format: date-time
          type: string
        schedules:
          description: The list of item schedules.
          items:
            $ref: "#/components/schemas/ItemSchedule"
          type: array
        startDate:
          description: The date and time this list of schedules starts.
          format: date-time
          type: string
      required:
        - channelId
        - startDate
        - endDate
        - schedules
      type: object
    ItemSummary:
      discriminator:
        propertyName: type
      properties:
        advisoryText:
          description: Advisory text about this item, related to the classification
          type: string
        availableEpisodeCount:
          description: The number of available episodes in the season, if the item is a season.
          format: int32
          type: integer
        availableSeasonCount:
          description: The number of available seasons in the show, if the item is a show.
          format: int32
          type: integer
        averageUserRating:
          description: |
            The average user rating.
            When based on user ratings from our system this will be out of 10.
          format: int32
          minimum: 0
          type: number
        badge:
          description: The badge this item has.
          type: string
        channelShortCode:
          description: The channel short code, if the item is a channel.
          type: string
        classification:
          $ref: "#/components/schemas/ClassificationSummary"
        contextualTitle:
          description: |
            A contextually relative title to display after a parent title.
            Mostly applicable to Season, Episode and Trailer.
          type: string
        customFields:
          additionalProperties: true
          description: A map of custom fields defined by a curator for an item.
          type: object
        customId:
          description: |
            A custom identifier for this item.
            For example the id for this item under a different content system.
          type: string
        duration:
          description: The duration of the media in seconds.
          format: int32
          minimum: 0
          type: integer
        episodeCount:
          description: The number of episodes in the season, if the item is a season.
          format: int32
          type: integer
        episodeName:
          description: The full name of an episode.
          type: string
        episodeNumber:
          description: The number of an episode, if the item is an episode.
          format: int32
          type: integer
        genres:
          description: The array of genres this item belongs to.
          items:
            type: string
          type: array
        hasClosedCaptions:
          description: Whether closed captioning is available.
          type: boolean
        id:
          description: Unique identifier for an Item
          type: string
        images:
          additionalProperties:
            format: uri
            type: string
          type: object
        offers:
          description: The array of available offers for this item.
          items:
            $ref: "#/components/schemas/Offer"
          type: array
        path:
          description: The path to the detail page of this item. Can be used to load the item detail page via the /page endpoint.
          type: string
        releaseYear:
          description: The year this item was released
          format: int32
          type: integer
        scopes:
          description: The scopes for this item
          items:
            type: string
          type: array
        seasonId:
          description: The identifier of the season this item belongs to, if the item is an episode.
          type: string
        seasonNumber:
          description: The number of a season, if the item is a season.
          format: int32
          type: integer
        shortDescription:
          description: A truncated description of the item
          type: string
        showId:
          description: The identifier of the show this item belongs to, if the item is a season or episode.
          type: string
        showTitle:
          type: string
          x-descritpion: The title of the show this item belongs to, if the item is a season or episode.
        subtype:
          description: |
            Subtype of the item. Mainly used to identify different types when `type`
            is `customAsset`
          type: string
        tagline:
          description: The tagline of the item
          type: string
        themes:
          description: Gets themes associated with the item
          items:
            $ref: "#/components/schemas/Theme"
          type: array
        title:
          description: The display title of the item.
          type: string
        type:
          description: The type of item
          enum:
            - movie
            - show
            - season
            - episode
            - program
            - link
            - trailer
            - channel
            - customAsset
          type: string
          x-enumEmoji:
            channel: 📺
            episode: 📺
            link: 🔗
            movie: 🎬
            program: 🎟
            season: 📺
            show: 📺
            trailer: 🖥
        watchPath:
          description: The path to watch this item, if the item is a watchable type, e.g. a `movie`, `program` and `episode`.
          type: string
      required:
        - id
        - type
        - path
        - title
      type: object
      x-emoji: 📘
    ItvAssignBtTokenRequest:
      additionalProperties: false
      properties:
        profileToken:
          description: The ITV profile token
          type: string
        token:
          description: The validated userToken.
          type: string
      required:
        - token
        - profileToken
      type: object
    ItvAssignMsisdnRequest:
      additionalProperties: false
      properties:
        eeProductId:
          description: Product id from /ee/offers
          type: string
        msisdn:
          description: The validated msisdn.
          type: string
        profileToken:
          description: The ITV profile token
          type: string
        trackingHeader:
          description: trackingHeader
          type: string
      required:
        - msisdn
        - profileToken
        - trackingHeader
        - eeProductId
      type: object
    ItvBillingHistory:
      additionalProperties: false
      properties:
        payment_history:
          description: The array of objects with subscription payment details.
          items:
            $ref: "#/components/schemas/ItvBillingHistoryRecord"
          type: array
      required:
        - payment_history
      type: object
      x-emoji: 💳
    ItvBillingHistoryRecord:
      additionalProperties: false
      properties:
        card:
          description: The card info.
          type: object
        charge:
          description: The amount charged.
          type: object
        invoice:
          description: The object with invoice details.
          type: object
        subscription:
          description: The object with subscription payment details.
          type: object
      required:
        - card
        - subscription
        - invoice
        - charge
      type: object
      x-emoji: 💳
    ItvBillingHistoryRequest:
      additionalProperties: false
      properties:
        profileToken:
          description: The ITV profile token.
          type: string
      required:
        - profileToken
      type: object
    ItvCancelSubscriptionRequest:
      additionalProperties: false
      properties:
        profileToken:
          description: The ITV profile token.
          type: string
      required:
        - profileToken
      type: object
    ItvCardDetails:
      additionalProperties: false
      properties:
        card_type:
          description: The payment card type (Visa/Mastercard/etc).
          type: string
        exp_month:
          description: Expiry date month.
          format: int32
          type: integer
        exp_year:
          description: Expiry date year.
          format: int32
          type: integer
        last4:
          description: The last 4 digit of card number.
          type: string
      required:
        - card_type
        - last4
        - exp_month
        - exp_year
      type: object
      x-emoji: 💳
    ItvChangeCardDetailsRequest:
      additionalProperties: false
      properties:
        cardToken:
          description: The credit card token.
          type: string
        profileToken:
          description: The ITV profile token.
          type: string
      required:
        - profileToken
        - cardToken
      type: object
    ItvChangeEmailRequest:
      additionalProperties: false
      properties:
        email:
          description: New email address for account/profile.
          type: string
        profileToken:
          description: The ITV profile token.
          type: string
      required:
        - email
        - profileToken
      type: object
    ItvChangeMarketingRequest:
      additionalProperties: false
      properties:
        emailOptIn:
          description: Updated marketing preferences for account/profile.
          type: boolean
        profileToken:
          description: The ITV profile token.
          type: string
      required:
        - emailOptIn
        - profileToken
      type: object
    ItvCurrentSubscription:
      additionalProperties: false
      properties:
        cancelAtPeriodEnd:
          description: The cancellation period end flag.
          type: boolean
        collectionMethod:
          description: The description of payment collection method.
          type: string
        created:
          description: The creation timestamp.
          format: int32
          type: integer
        currentPeriodEnd:
          description: The end of period timestamp.
          format: int32
          type: integer
        currentPeriodStart:
          description: The start of period timestamp.
          format: int32
          type: integer
        plan:
          description: The plan used during subsribing.
          type: object
        status:
          description: The status of subscription.
          type: string
      required:
        - collectionMethod
        - cancelAtPeriodEnd
        - created
        - currentPeriodEnd
        - currentPeriodStart
        - plan
        - status
      type: object
      x-emoji: 💰
    ItvDeleteAccountRequest:
      additionalProperties: false
      properties:
        profileToken:
          description: The ITV profile token.
          type: string
      required:
        - profileToken
      type: object
    ItvEntitlement:
      additionalProperties: false
      properties:
        card_type:
          description: Start of subscription.
          format: date-time
          type: string
        expiry:
          description: Expiry of subscription.
          format: date-time
          type: string
        plan:
          description: Purchased plan data.
          type: object
        source:
          description: Source platform of purchase.
          type: string
        subscriptionId:
          description: Id of subscription.
          type: string
      required:
        - start
        - expiry
        - source
        - subscriptionId
        - plan
      type: object
      x-emoji: 💳
    ItvEntitlementCancelation:
      additionalProperties: false
      properties:
        cancelled_at:
          description: Cancelation datetime.
          format: date-time
          type: string
        itvId:
          description: Itv internal id.
          type: string
        source:
          description: Source platform of cancelation.
          type: string
        subscriptionId:
          description: Id of subscription.
          type: string
      required:
        - itvId
        - source
        - cancelled_at
        - subscriptionId
      type: object
      x-emoji: 💳
    ItvEntitlementCurrent:
      additionalProperties: false
      properties:
        source:
          description: one of “itunes”, “stripe”, “amazon”, “google”
          type: string
      required:
        - source
      type: object
    ItvEntitlementPlan:
      additionalProperties: false
      properties:
        cost:
          description: Source platform of purchase.
          format: int32
          type: integer
        interval:
          description: The type of billing period used.
          enum:
            - day
            - week
            - month
            - year
            - none
          type: string
        trialLength:
          description: Given the `interval` this is how frequently it will run. e.g. every 2 weeks.
          format: int32
          type: integer
        type:
          description: Type of the plan.
          type: string
      required:
        - type
        - interval
        - cost
        - trialLength
      type: object
      x-emoji: 💳
    ItvEntitlementsHistory:
      additionalProperties: false
      properties:
        cancellations:
          description: The results of availability checks.
          items:
            $ref: "#/components/schemas/ItvEntitlementCancelation"
          type: array
        entitlements:
          description: The results of availability checks.
          items:
            $ref: "#/components/schemas/ItvEntitlement"
          type: array
      required:
        - entitlements
        - cancellations
      type: object
      x-emoji: 💳
    ItvFeatureFlag:
      additionalProperties: false
      properties:
        enabled:
          description: Is the feature enabled?
          type: boolean
        flag:
          description: Feature flag data.
          type: string
      required:
        - enabled
      type: object
      x-emoji: 💳
    ItvGetCardDetailsRequest:
      additionalProperties: false
      properties:
        profileToken:
          description: The ITV profile token.
          type: string
      required:
        - profileToken
      type: object
    ItvGetDiscountResponse:
      additionalProperties: false
      properties:
        currency:
          description: Payment currency.
          type: string
        description:
          description: Description
          type: string
        headline:
          description: Headline
          type: string
        id:
          description: The if of a discount for a user.
          type: string
        initialCost:
          description: The initial cost.
          type: number
        longDescription:
          description: Long description
          type: string
        nickname:
          description: Discount nickname.
          type: string
        offerdurationperiod:
          description: How long the descount will be valid for.
          type: string
        shortDescription:
          description: Short description
          type: string
      required:
        - id
      type: object
      x-emoji: 💳
    ItvGooglePaySubscriptionRequest:
      additionalProperties: false
      properties:
        purchaseToken:
          description: the unique identifier for this purchase
          type: string
        subscriptionItem:
          description: the SKU of the item from the play console
          type: string
      required:
        - purchaseToken
        - subscriptionItem
      type: object
    ItvHadEntitlement:
      additionalProperties: false
      properties:
        hasHadEntitlements:
          description: whether the user has been previously entitlement
          type: boolean
      required:
        - hasHadEntitlements
      type: object
    ItvPinAuthRequest:
      additionalProperties: false
      properties:
        cookieType:
          description: |
            If you specify a cookie type then a content filter cookie will be returned
            along with the token(s). This is only intended for web based clients which
            need to pass the cookies to a server to render a page based on the user's
            content filters e.g subscription code.

            If type `Session` the cookie will be session based.
            If type `Persistent` the cookie will have a medium term lifespan.
            If undefined no cookies will be set.
          enum:
            - Session
            - Persistent
          type: string
        pin:
          description: The 4-digit parental control pin.
          type: string
        scopes:
          description: The scope(s) of the token(s) required.
          items:
            enum:
              - Catalog
              - Commerce
              - Settings
              - Playback
            type: string
          type: array
      required:
        - pin
      type: object
    ItvPlanListItem:
      additionalProperties: false
      properties:
        amount:
          description: The price of a plan. If a free plan then undefined.
          format: float
          type: number
        currency:
          description: The currency a plan is offered in.
          type: string
        description:
          description: The textual description.
          type: string
        id:
          description: The identifier of a plan.
          type: string
        interval:
          description: The type of billing period used.
          enum:
            - day
            - week
            - month
            - year
            - none
          type: string
        intervalCount:
          description: Given the `interval` this is how frequently it will run. e.g. every 2 weeks.
          format: int32
          type: integer
        nickname:
          description: The title of a plan.
          type: string
        product:
          description: The product description.
          type: string
        savingLabel:
          description: The saving label.
          type: string
        switchingText:
          description: The text to switch for.
          type: string
        trialPeriodDays:
          description: How many days a trial period runs for a plan. Only valid if `hasTrialPeriod` is true.
          format: int32
          type: integer
      required:
        - id
        - nickname
        - amount
        - currency
        - interval
        - intervalCount
        - product
        - description
      type: object
      x-emoji: 💳
    ItvPlans:
      additionalProperties: false
      properties:
        plans:
          description: The list of available plans.
          items:
            $ref: "#/components/schemas/ItvPlanListItem"
          type: array
      required:
        - plans
      type: object
    ItvProfileToken:
      additionalProperties: false
      properties:
        profileToken:
          description: The ITV profile token.
          type: string
      required:
        - profileToken
      type: object
      x-emoji: 🔑
    ItvProfileTokenRequest:
      additionalProperties: false
      properties:
        password:
          description: The password.
          type: string
      required:
        - password
      type: object
    ItvPurchase:
      additionalProperties: false
      properties:
        customerId:
          description: The identifier of user in payment system.
          type: string
        planId:
          description: The identifier of subscription plan.
          type: string
        subscriptionId:
          description: The identifier of subscription in payment system.
          type: string
      required:
        - planId
      type: object
      x-emoji: 💰
    ItvPurchaseRequest:
      additionalProperties: false
      properties:
        cardToken:
          description: The credit card token.
          type: string
        planId:
          description: The identifier of the plan to purchase.
          type: string
        profileToken:
          description: The ITV profile token.
          type: string
        voucher:
          description: A coupon/voucher for a discount.
          type: string
      required:
        - planId
        - profileToken
        - cardToken
      type: object
    ItvPurchaseStrongRequest:
      additionalProperties: false
      properties:
        paymentMethodFromToken:
          description: A paymentMethodFromToken.
          type: string
        paymentMethodId:
          description: A paymentMethodId from Stripe.
          type: string
        planId:
          description: The identifier of the plan to purchase.
          type: string
        profileToken:
          description: The ITV profile token.
          type: string
        voucher:
          description: A coupon/voucher for a discount.
          type: string
      required:
        - planId
        - profileToken
      type: object
    ItvPurchaseStrongResponse:
      additionalProperties: false
      properties:
        clientSecret:
          description: clientSecret.
          type: string
        customerId:
          description: The identifier of user in payment system.
          type: string
        intentId:
          description: IntentId.
          type: string
        intentType:
          description: intentType.
          type: string
        planId:
          description: The identifier of subscription plan.
          type: string
        status:
          description: Status.
          type: string
        subscriptionId:
          description: The identifier of subscription in payment system.
          type: string
      type: object
      x-emoji: 💰
    ItvPurchaseWithOfferRequest:
      additionalProperties: false
      properties:
        couponId:
          description: A coupon/voucher for a discount. Can be retrieved from GET itv/voucher/{platform} endpoint
          type: string
        paymentMethodFromToken:
          description: A paymentMethodFromToken.
          type: string
        paymentMethodId:
          description: A paymentMethodId from Stripe.
          type: string
        planId:
          description: The identifier of the plan to purchase.
          type: string
        profileToken:
          description: The ITV profile token.
          type: string
      required:
        - planId
        - profileToken
        - couponId
      type: object
    ItvPurchaseWithOfferResponse:
      additionalProperties: false
      properties:
        clientSecret:
          description: clientSecret.
          type: string
        customerId:
          description: The identifier of user in payment system.
          type: string
        intentId:
          description: IntentId.
          type: string
        intentType:
          description: intentType.
          type: string
        paymentMethodId:
          description: Payment Method ID
          type: string
        status:
          description: Status.
          type: string
        subscriptionId:
          description: The identifier of subscription in payment system.
          type: string
      type: object
      x-emoji: 💰
    ItvRokuTransactionRequest:
      additionalProperties: false
      properties:
        profileToken:
          description: The ITV profile token.
          type: string
      required:
        - profileToken
      type: object
    ItvSubscriptionFullPriceRenewal:
      additionalProperties: false
      properties:
        fullPriceRenewal:
          description: full price renewal state.
          type: boolean
        reason:
          description: reason of full price renewal state.
          type: string
      required:
        - fullPriceRenewal
        - reason
      type: object
    ItvSubscriptionState:
      additionalProperties: false
      properties:
        effective_entitlements:
          description: The array of entitlement objects.
          items:
            $ref: "#/components/schemas/ItvEntitlement"
          type: array
        failed_availability_checks:
          description: The results of availability checks.
          items:
            type: string
          type: array
        purchased:
          description: The array of entitlement names.
          items:
            type: string
          type: array
        source:
          description: The payment provider (stripe/itunes)
          type: string
      required:
        - failed_availability_checks
        - effective_entitlements
        - source
        - purchased
      type: object
      x-emoji: 💳
    ItvSubscriptionStatusResponse:
      additionalProperties: false
      properties:
        is_active:
          description: Defines whether last payment intent was successful or not.
          type: boolean
      required:
        - is_active
      type: object
    ItvUpdateIntentStrongRequest:
      additionalProperties: false
      properties:
        paymentMethodFromToken:
          description: A paymentMethodFromToken.
          type: string
        paymentMethodId:
          description: The paymentMethodId from Stripe.
          type: string
        profileToken:
          description: The ITV profile token.
          type: string
      required:
        - profileToken
      type: object
    ItvUpdateIntentStrongResponse:
      additionalProperties: false
      properties:
        clientSecret:
          description: ClientSecret.
          type: string
        intentId:
          description: IntentId.
          type: string
        intentType:
          description: IntentType.
          type: string
        status:
          description: Status.
          type: string
      type: object
      x-emoji: 💰
    ItvUpdatePaymentStrongRequest:
      additionalProperties: false
      properties:
        paymentMethodFromToken:
          description: A paymentMethodFromToken.
          type: string
        paymentMethodId:
          description: The paymentMethodId from Stripe.
          type: string
        profileToken:
          description: The ITV profile token.
          type: string
      required:
        - profileToken
      type: object
    ItvUpdateProfileRequest:
      additionalProperties: false
      properties:
        dateOfBirth:
          description: The date of birth.
          type: string
        email:
          description: The email address.
          type: string
        firstName:
          description: Last name.
          type: string
        lastName:
          description: First name.
          type: string
        postcode:
          description: The postal code.
          type: string
        profileToken:
          description: The ITV profile token.
          type: string
        title:
          description: The title.
          type: string
      required:
        - profileToken
      type: object
    ItvUpgradePlanRequest:
      additionalProperties: false
      properties:
        planId:
          description: The identifier of the plan to purchase.
          type: string
      required:
        - planId
      type: object
    ItvVoucher:
      additionalProperties: false
      properties:
        display:
          $ref: "#/components/schemas/ItvVoucherDisplay"
        id:
          description: The coupon/voucher.
          type: string
        links:
          $ref: "#/components/schemas/ItvVoucherLinks"
        offerType:
          description: The voucher offer type.
          enum:
            - stripe
            - talon one
          type: string
      required:
        - id
        - offerType
        - display
        - links
      type: object
      x-emoji: 💰
    ItvVoucherDisplay:
      additionalProperties: true
      properties:
        currency:
          description: Currency.
          type: string
        discountPrice:
          description: Discount price.
          type: string
        duration:
          description: Duration.
          type: string
        durationInMonths:
          description: Duration in months.
          format: integer
          type: number
        headlineLabel:
          description: Headline label.
          type: string
        initialCost:
          description: InitialCost.
          format: float
          type: number
        longDescription:
          description: Long description.
          type: string
        percentOff:
          description: Percent off.
          format: float
          type: number
        savingLabel:
          description: SavingLabel.
          type: string
        shortDescription:
          description: Short description.
          type: string
      required:
        - type
      type: object
    ItvVoucherLinks:
      additionalProperties: true
      properties:
        redeem:
          $ref: "#/components/schemas/ItvVoucherLinksHref"
        self:
          $ref: "#/components/schemas/ItvVoucherLinksHref"
      required:
        - self
        - redeem
      type: object
    ItvVoucherLinksHref:
      additionalProperties: true
      properties:
        href:
          description: The voucher link.
          type: string
      required:
        - href
      type: object
    ItvVoucherRequest:
      additionalProperties: false
      properties:
        voucher:
          description: The voucher.
          type: string
      required:
        - voucher
      type: object
    Language:
      additionalProperties: false
      properties:
        code:
          description: |
            The ISO language code of the language e.g. "en-US".
            See https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
          type: string
        label:
          description: Display label for the language.
          type: string
        title:
          description: Display title for the language.
          type: string
      required:
        - code
        - label
        - title
      type: object
      x-emoji: 🌎
    ListData:
      additionalProperties: false
      description: |
        Extra data to accompany ItemList content. The (single) key in the object is
        the list name and the data changes depending on the list
      properties:
        ContinueWatching:
          $ref: "#/components/schemas/ContinueWatchingListData"
      type: object
    MediaFile:
      additionalProperties: false
      properties:
        channels:
          description: The number of audio channels.
          format: int32
          type: integer
        deliveryType:
          description: The way in which the media file is delivered.
          enum:
            - Stream
            - Progressive
            - Download
          type: string
        drm:
          description: The type of drm used to encrypt the media. 'None' if unencrypted.
          type: string
        format:
          description: The format the media was encoded in.
          type: string
        height:
          description: The height of the video media.
          format: int32
          type: integer
        language:
          description: The language code for the media, e.g. 'en'.
          type: string
        name:
          description: The name of the media file.
          type: string
        resolution:
          description: The resolution of the video media.
          enum:
            - SD
            - HD-720
            - HD-1080
            - HD-4K
            - External
            - Unknown
          type: string
        url:
          description: The url to access the media file.
          format: uri
          type: string
        width:
          description: The width of the video media.
          format: int32
          type: integer
      required:
        - name
        - deliveryType
        - url
        - drm
        - format
        - resolution
        - width
        - height
        - language
      type: object
      x-emoji: 📀
    NavContent:
      properties:
        imageType:
          description: |
            The image type to target when rendering items of the list.

            e.g wallpaper, poster, hero3x1, logo.
          type: string
        list:
          $ref: "#/components/schemas/ItemList"
        title:
          description: The title of the embedded navigation content.
          type: string
      type: object
    NavEntry:
      additionalProperties: false
      properties:
        children:
          description: Child nav entries.
          items:
            $ref: "#/components/schemas/NavEntry"
          type: array
        content:
          $ref: "#/components/schemas/NavContent"
        customFields:
          additionalProperties: true
          description: A map of custom fields defined by a curator for a nav entry.
          type: object
        depth:
          description: The depth of the NavEntry (top level is 0)
          format: int32
          minimum: 0
          type: integer
        featured:
          description: |
            True if this is a featured menu item.

            Featured menu items may have a more prominent presentation than others in the navigation.
          type: boolean
        icon:
          description: The icon for this nav entry.
          type: string
        label:
          description: The text label for this nav entry.
          type: string
        path:
          description: |
            The path this nav entry links to.
            May be undefined if the nav entry is not clickable e.g. a nav heading.
            If the value begins with `http` then it's an external url.
          type: string
      required:
        - depth
      type: object
    Navigation:
      additionalProperties: false
      properties:
        account:
          $ref: "#/components/schemas/NavEntry"
        copyright:
          description: Copyright information.
          type: string
        customFields:
          additionalProperties: true
          description: A map of custom fields defined by a curator for navigation.
          type: object
        footer:
          $ref: "#/components/schemas/NavEntry"
        header:
          description: The header navigation.
          items:
            $ref: "#/components/schemas/NavEntry"
          type: array
        mobile:
          $ref: "#/components/schemas/NavEntry"
      required:
        - header
      type: object
    NextPlaybackItem:
      additionalProperties: false
      properties:
        firstWatchedDate:
          description: |
            Time when the item corresponding to the itemId passed in by the client was
            first watched by the user. Will be `undefined` if the user has never
            watched the item.

            It can be used to identify the scenario where the user has never watched a
            show and we are suggesting they watch the first episode (i.e. it is
            missing in this scenario)

            **This will only be populated when a `showId` is passed in**
          format: date-time
          type: string
        lastWatchedDate:
          description: |
            Time when the item corresponding to the itemId passed in by the client was
            last watched by the user. Will be `undefined` if the user has never
            watched the item.

            It can be used to identify the scenario where the user has never watched a
            show and we are suggesting they watch the first episode (i.e. it is
            missing in this scenario)

            **This will only be populated when a `showId` is passed in**
          format: date-time
          type: string
        next:
          $ref: "#/components/schemas/ItemDetail"
        sourceItemId:
          description: The id of the item used to determine the next item to play.
          type: string
        suggestionType:
          description: |
            Field indicating the type or reason behind the suggestion.

            Id Type   | Show Watched Status| Value            | Description
            ----------|--------------------|------------------|---------------------------------
            showId    | Unwatched          | StartWatching    |
            showId    | Completely watched | RestartWatching  |
            showId    | Partly watched     | ContinueWatching | Suggested episode partly watched
            showId    | Partly watched     | Sequential       | Suggested episode unwatched
            episodeId | Any                | Sequential       | Next episode in show
          enum:
            - StartWatching
            - ContinueWatching
            - RestartWatching
            - Sequential
            - None
          type: string
      required:
        - sourceItemId
      type: object
    Offer:
      allOf:
        - $ref: "#/components/schemas/OfferRights"
        - properties:
            availability:
              enum:
                - Available
                - ComingSoon
              type: string
            customFields:
              additionalProperties: true
              description: A map of custom fields defined by a curator for an offer.
              type: object
            endDate:
              format: date-time
              type: string
            id:
              type: string
            name:
              type: string
            price:
              format: float
              type: number
            startDate:
              format: date-time
              type: string
            subscriptionCode:
              description: The code of the subscription this offer is offered under, if any.
              type: string
          required:
            - price
            - availability
          type: object
          x-emoji: 💰
    OfferRights:
      description: The base type for both Offer and Entitlement.
      properties:
        deliveryType:
          enum:
            - Stream
            - Download
            - StreamOrDownload
            - ProgressiveDownload
            - None
          type: string
        exclusionRules:
          description: Any specific playback exclusion rules.
          items:
            $ref: "#/components/schemas/ExclusionRule"
          type: array
        maxDownloads:
          description: The maximum number of allowed downloads.
          format: int32
          type: integer
        maxPlays:
          description: The maximum number of allowed plays.
          format: int32
          type: integer
        ownership:
          enum:
            - Subscription
            - Free
            - Rent
            - Own
            - None
          type: string
        playPeriod:
          description: The length of time in minutes which the rental will last once played for the first time.
          format: int32
          type: integer
        rentalPeriod:
          description: The length of time in minutes which the rental will last once purchased.
          format: int32
          type: integer
        resolution:
          enum:
            - SD
            - HD-720
            - HD-1080
            - HD-4K
            - External
            - Unknown
          type: string
        scopes:
          items:
            type: string
          type: array
      required:
        - deliveryType
        - scopes
        - resolution
        - ownership
      type: object
      x-emoji: 🎟
    Page:
      allOf:
        - $ref: "#/components/schemas/PageSummary"
        - properties:
            customFields:
              additionalProperties: true
              description: A map of custom fields defined by a curator for a page.
              type: object
            entries:
              description: Entries of a page
              items:
                $ref: "#/components/schemas/PageEntry"
              type: array
            item:
              $ref: "#/components/schemas/ItemDetail"
            list:
              $ref: "#/components/schemas/ItemList"
            metadata:
              $ref: "#/components/schemas/PageMetadata"
            themes:
              items:
                $ref: "#/components/schemas/Theme"
              type: array
          required:
            - entries
          type: object
    PageEntry:
      additionalProperties: false
      description: |
        Represents an entry of a Page.
        Defines what specific piece of content should be presented e.g. an Item or ItemList.
        Also defines what visual template should be used to render that content.
      properties:
        customFields:
          additionalProperties: true
          description: A map of custom fields defined by a curator for a page entry.
          type: object
        id:
          description: The unique identifier for a page entry.
          type: string
        images:
          additionalProperties:
            format: uri
            type: string
          description: |
            The images for the page entry if any.

            For example the images of an `ImageEntry`.
          type: object
        item:
          $ref: "#/components/schemas/ItemSummary"
        list:
          $ref: "#/components/schemas/ItemList"
        people:
          description: If 'type' is 'PeopleEntry' then this is the array of people to present.
          items:
            $ref: "#/components/schemas/Person"
          type: array
        template:
          description: Template type used to present the content of the PageEntry.
          type: string
        text:
          description: If 'type' is 'TextEntry' then this is the text to be represented.
          type: string
        title:
          description: The name of the Page Entry.
          type: string
        type:
          description: The type of PageEntry. Used to help identify what type of content will be presented.
          enum:
            - ItemEntry
            - ItemDetailEntry
            - ListEntry
            - ListDetailEntry
            - UserEntry
            - TextEntry
            - ImageEntry
            - CustomEntry
            - PeopleEntry
          type: string
          x-enumEmoji:
            CustomEntry: ⚙️
            ImageEntry: 🌅
            ItemDetailEntry: 📘
            ItemEntry: 📘
            ListDetailEntry: 📚
            ListEntry: 📚
            PeopleEntry: 👱
            TextEntry: 📝
            UserEntry: 👤
      required:
        - id
        - type
        - title
        - template
      type: object
      x-emoji: 📑
    PageMetadata:
      additionalProperties: false
      description: Metadata associated with a page. Primarily intended for SEO usage.
      properties:
        description:
          type: string
        keywords:
          items:
            type: string
          type: array
        segments:
          items:
            type: string
          type: array
      type: object
    PageSummary:
      properties:
        id:
          description: Unique identifier for the page.
          type: string
        isStatic:
          description: |
            True if this page is static and doesn't have any dynamic content to load.

            Static pages don't need to go back to the page endpoint to load page content
            instead the page summary loaded with the sitemap should be enough to determine
            the page template type and render based on this.
          type: boolean
        isSystemPage:
          description: |
            True if this page is a system page type.

            **DEPRECATED** This property doesn't have any real use in client applications
            anymore so shouldn't be used. It especially shouldn't be used to determine if
            a page is static or not. Use the `isStatic` property instead.
          type: boolean
          x-deprecated: Replaced with isStatic
        key:
          description: Key used to lookup a known page.
          type: string
        path:
          description: Unique path for the page.
          type: string
        template:
          description: Identifier for of the page template to render this page.
          type: string
        title:
          description: Title of the page.
          type: string
      required:
        - id
        - path
        - title
        - template
        - isStatic
        - isSystemPage
      type: object
      x-emoji: 📃
    Pagination:
      additionalProperties: false
      properties:
        authorization:
          $ref: "#/components/schemas/PaginationAuth"
        next:
          description: Path to load next page of data, or null if not available
          type: string
        options:
          $ref: "#/components/schemas/PaginationOptions"
        page:
          description: |
            The current page number.

            A value of 0 indicates that the fist page has not yet been loaded. This is
            useful when wanting to return the paging metadata to indicate how to
            load in the first page.
          format: int32
          minimum: 0
          type: integer
        previous:
          description: Path to load previous page of data, or null if not available.
          type: string
        size:
          description: |
            The current page size.

            A value of -1 indicates that the size has not yet been determined. This may
            arise when embedding secure list pagination info in a page which must be cached
            by a CDN. For example a Bookmarks list.
          format: int32
          minimum: -1
          type: integer
        total:
          description: |
            The total number of pages available given the current page size.

            A value of -1 indicates that the total has not yet been determined. This may
            arise when embedding secure list pagination info in a page which must be cached
            by a CDN. For example a Bookmarks list.
          format: int32
          minimum: -1
          type: integer
      required:
        - total
        - page
      type: object
    PaginationAuth:
      properties:
        scope:
          description: The token scope required.
          enum:
            - Catalog
            - Commerce
            - Settings
          type: string
        type:
          description: The token type required to load the list.
          enum:
            - UserAccount
            - UserProfile
          type: string
      required:
        - type
        - scope
      type: object
    PaginationOptions:
      additionalProperties: false
      properties:
        completed:
          description: |
            Items filtered by whether they've been fully watched or not.

            Only available on the `/account/profile/watched/list` endpoint currently.
          type: boolean
        itemType:
          description: Specific item type filter.
          enum:
            - movie
            - show
            - season
            - episode
            - program
            - link
            - trailer
            - channel
            - customAsset
          type: string
          x-enumEmoji:
            channel: 📺
            episode: 📺
            link: 🔗
            movie: 🎬
            program: 🎟
            season: 📺
            show: 📺
            trailer: 🖥
        maxRating:
          description: The maximum rating (inclusive) of items returned, e.g. 'AUOFLC-PG'.
          type: string
        order:
          description: The applied sort order if any.
          enum:
            - asc
            - desc
          type: string
        orderBy:
          description: The applied sort ordering property if any.
          enum:
            - a-z
            - release-year
            - date-added
          type: string
        pageSize:
          description: The number of items to return in a list page.
          format: int32
          type: integer
      type: object
    PasswordResetEmailRequest:
      additionalProperties: false
      properties:
        email:
          description: The email address of the primary account profile to reset the password for.
          type: string
      required:
        - email
      type: object
    PasswordResetRequest:
      additionalProperties: false
      properties:
        password:
          description: The new password for the account.
          type: string
        resetToken:
          description: The ITV reset token.
          type: string
      required:
        - resetToken
        - password
      type: object
    PaymentMethod:
      additionalProperties: false
      properties:
        balance:
          description: The balance of the wallet if the payment method is a wallet.
          format: float
          type: number
        brand:
          description: The brand of the card if the payment method is a card.
          enum:
            - Visa
            - MasterCard
            - AmericanExpress
            - Other
          type: string
        currency:
          description: The currency code of the wallet if the payment method is a wallet.
          type: string
        description:
          description: |
            A short description of a payment method.

            If the payment method is of type `Wallet` this will be "My Wallet"

            For `Card` type payment methods the format of this description may differ
            depending on the payment gateway in use. In the case of Stripe, this will
            be in the format "Visa (**** 4242, exp 08/19)"
          type: string
        expiryMonth:
          description: The expiry month of the card if the payment method is a card.
          format: int32
          type: number
        expiryYear:
          description: The expiry year of the card if the payment method is a card.
          format: int32
          type: number
        id:
          description: The unique identifier of a payment method.
          type: string
        lastDigits:
          description: |
            The last digits of the card if the payment method is a card.
            Depending on the payment gateway in use this value may be undefined.
          format: int32
          type: number
        type:
          description: The type of payment method.
          enum:
            - Card
            - Wallet
          type: string
      required:
        - id
        - description
        - type
      type: object
      x-emoji: 💳
    Person:
      properties:
        name:
          description: The name of the person.
          type: string
        path:
          description: The path to the person
          type: string
      required:
        - name
        - path
      type: object
      x-emoji: 👱
    Plan:
      additionalProperties: false
      properties:
        alias:
          description: An alias for a plan.
          type: string
        benefits:
          description: The list of benefits to display for a plan.
          items:
            type: string
          type: array
        billingPeriodFrequency:
          description: Given the `billingPeriodType` this is how frequently it will run. e.g. every 2 weeks.
          format: int32
          type: integer
        billingPeriodType:
          description: The type of billing period used.
          enum:
            - day
            - week
            - month
            - year
            - none
          type: string
        currency:
          description: The currency a plan is offered in.
          type: string
        customFields:
          additionalProperties: true
          description: A map of custom fields defined by a curator for a plan.
          type: object
        hasTrialPeriod:
          description: True if a plan has a trial period, false if not.
          type: boolean
        id:
          description: The identifier of a plan.
          type: string
        isActive:
          description: True if a plan is active, false if its retired.
          type: boolean
        isFeatured:
          description: True if a plan should be highlighted as featured, false if not.
          type: boolean
        isPrivate:
          description: True if a plan should not be presented in the primary plan options, false if not.
          type: boolean
        price:
          description: The price of a plan. If a free plan then undefined.
          format: float
          type: number
        revenueType:
          description: The revenue type a plan targets.
          enum:
            - TVOD
            - SVOD
          type: string
        subscriptionCode:
          description: The subscription code a plan targets.
          type: string
        tagline:
          description: The short tagline for a plan.
          type: string
        termsAndConditions:
          description: The terms and conditions for a plan.
          type: string
        title:
          description: The title of a plan.
          type: string
        trialPeriodDays:
          description: How many days a trial period runs for a plan. Only valid if `hasTrialPeriod` is true.
          format: int32
          type: integer
        type:
          description: The type of plan.
          enum:
            - Free
            - Subscription
          type: string
      required:
        - id
        - title
        - tagline
        - type
        - isFeatured
        - isActive
        - isPrivate
        - revenueType
        - subscriptionCode
        - alias
        - benefits
        - billingPeriodType
        - billingPeriodFrequency
        - hasTrialPeriod
        - trialPeriodDays
        - termsAndConditions
        - currency
      type: object
      x-emoji: 💳
    PlanPurchase:
      additionalProperties: false
      properties:
        id:
          description: The identifier of the purchased plan.
          type: string
        price:
          description: The price of the purchased plan.
          format: float
          type: number
        subscriptionId:
          description: The identifier of the subscription membership to the plan.
          type: string
        title:
          description: The title of the purchased plan.
          type: string
        type:
          description: The type of plan purchased.
          enum:
            - Free
            - Subscription
          type: string
      required:
        - title
        - type
      type: object
      x-emoji: 💰
    ProfileCreationRequest:
      additionalProperties: false
      properties:
        languageCode:
          description: |
            The code of the preferred language for the profile.
            Must be a valid ISO language code e.g. "en-US" and must match the code of
            one of the languages specified in the app config.
            See https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
          type: string
        name:
          description: The unique name of the profile.
          minLength: 1
          type: string
        pinEnabled:
          default: false
          description: |
            Whether an account pin is required to enter the profile.

            If no account pin is defined this has no impact.
          type: boolean
        purchaseEnabled:
          default: true
          description: Whether the profile can make purchases with the account payment options.
          type: boolean
        segments:
          description: The segments a profile should be placed under
          items:
            type: string
          type: array
      required:
        - name
      type: object
    ProfileDetail:
      allOf:
        - $ref: "#/components/schemas/ProfileSummary"
        - properties:
            bookmarked:
              additionalProperties:
                format: date-time
                type: string
              description: A map of bookmarked itemIds => created date
              type: object
            rated:
              additionalProperties:
                format: int32
                type: integer
              description: A map of rated itemIds => rating out of 10
              type: object
            watched:
              additionalProperties:
                $ref: "#/components/schemas/Watched"
              description: A map of watched itemIds => last watched position
              type: object
          required:
            - watched
            - rated
            - bookmarked
          type: object
    ProfileSummary:
      properties:
        color:
          description: Hex color value assigned to the profile.
          type: string
        heroAutoplay:
          description: Gets the Hero row clip auto playback enabled
          type: boolean
        heroWithAudio:
          description: Gets the Hero row clip auto playback audio enabled
          type: boolean
        id:
          description: The id of the profile.
          type: string
        isActive:
          description: |
            Whether the profile is active or not.

            **DEPRECATED** - Always true. Inactive profiles are no longer returned.
          type: boolean
          x-deprecated: Inactive profiles are no longer returned
        languageCode:
          description: |
            The code of the preferred language for the profile.
            Must be a valid ISO language code e.g. "en-US" and must match the code of
            one of the languages specified in the app config.
            See https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
          type: string
        marketingEnabled:
          description: |
            Whether the profile has opted in or out of marketing material.

            **DEPRECATED** - Marketing material is no longer tied to profiles, only account. See `Account.marketingEnabled`.
          type: boolean
          x-deprecated: Has moved to Account.marketingEnabled
        maxRatingContentFilter:
          $ref: "#/components/schemas/ClassificationSummary"
        minRatingPlaybackGuard:
          $ref: "#/components/schemas/ClassificationSummary"
        name:
          description: The unique name of the profile.
          type: string
        pinEnabled:
          description: Whether a pin is required to enter the profile.
          type: boolean
        purchaseEnabled:
          description: Whether the profile can make purchases with the account payment options.
          type: boolean
        segments:
          description: The segments a profile has been placed under
          items:
            type: string
          type: array
      required:
        - id
        - name
        - isActive
        - pinEnabled
        - purchaseEnabled
        - marketingEnabled
        - segments
      type: object
      x-emoji: 👥
    ProfileTokenRequest:
      additionalProperties: false
      properties:
        cookieType:
          description: |
            If you specify a cookie type then a content filter cookie will be returned
            along with the token(s). This is only intended for web based clients which
            need to pass the cookies to a server to render a page based on the user's
            content filters e.g subscription code.

            If type `Session` the cookie will be session based.
            If type `Persistent` the cookie will have a medium term lifespan.
            If undefined no cookies will be set.
          enum:
            - Session
            - Persistent
          type: string
        pin:
          description: The pin associated with this profile, if any.
          type: string
        profileId:
          description: The id of the profile the token should grant access rights to.
          type: string
        scopes:
          description: The scope(s) of the token(s) required.
          items:
            enum:
              - Catalog
              - Commerce
              - Settings
            type: string
          type: array
      required:
        - profileId
        - scopes
      type: object
    ProfileUpdateRequest:
      additionalProperties: false
      properties:
        heroAutoplay:
          description: Sets the Hero row clip auto playback enabled
          type: boolean
        heroWithAudio:
          description: Sets the Hero row clip auto playback audio enabled
          type: boolean
        languageCode:
          description: |
            The code of the preferred language for the profile.
            Must be a valid ISO language code e.g. "en-US" and must match the code of
            one of the languages specified in the app config.
            See https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
          type: string
        name:
          description: The unique name of the profile.
          minLength: 1
          type: string
        pinEnabled:
          description: |
            Whether an account pin is required to enter the profile.

            If no account pin is defined this has no impact.
          type: boolean
        purchaseEnabled:
          description: Whether the profile can make purchases with the account payment options.
          type: boolean
        segments:
          description: The segments a profile should be placed under
          items:
            type: string
          type: array
      type: object
    Purchase:
      additionalProperties: false
      properties:
        authorizationDate:
          description: The date the purchase was authorized.
          format: date-time
          type: string
        creationDate:
          description: The date the purchase was created.
          format: date-time
          type: string
        currency:
          description: The currency code used to make the purchase.
          type: string
        id:
          description: The identifier of the purchase.
          type: string
        item:
          $ref: "#/components/schemas/ItemPurchase"
        paymentMethodId:
          description: The identifier of the payment method used to make the purchase.
          type: string
        plan:
          $ref: "#/components/schemas/PlanPurchase"
        total:
          description: The total cost of the purchase.
          format: float
          type: number
      required:
        - creationDate
        - currency
        - id
        - total
      type: object
      x-emoji: 💰
    PurchaseRequest:
      additionalProperties: false
      properties:
        itemId:
          description: |
            The identifier of the item to purchase.
            Both `itemId` and `offerId` are required for item purchases.
          type: string
        offerId:
          description: |
            The identifier of the item offer to purchase.
            Both `itemId` and `offerId` are required for item purchases.
          type: string
        paymentMethodId:
          description: |
            The identifier of the payment method to use.
            If omitted, or if purchasing a plan, the default payment method will be used.
          type: string
        planId:
          description: The identifier of the plan to purchase.
          type: string
      type: object
    RegistrationRequest:
      additionalProperties: false
      properties:
        email:
          type: string
        firstName:
          type: string
        languageCode:
          description: |
            The code of the preferred language for the primary profile.
            Must be a valid ISO language code e.g. "en-US" and must match the code of
            one of the languages specified in the app config.
            See https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
          type: string
        lastName:
          type: string
        marketing:
          default: true
          description: Whether to receive marketing material or not. Default to true.
          type: boolean
        password:
          type: string
        pin:
          description: The primary account pin.
          type: string
        segments:
          description: The segments to apply to the primary profile.
          items:
            type: string
          type: array
      required:
        - email
        - password
      type: object
    RokuPlanListItem:
      additionalProperties: false
      properties:
        amount:
          description: The price of a plan. If a free plan then undefined.
          format: float
          type: number
        currency:
          description: The currency a plan is offered in.
          type: string
        description:
          description: The textual description.
          type: string
        interval:
          description: The type of billing period used.
          enum:
            - day
            - week
            - month
            - year
            - none
          type: string
        intervalCount:
          description: Given the `interval` this is how frequently it will run. e.g. every 2 weeks.
          format: int32
          type: integer
        nickname:
          description: The title of a plan.
          type: string
        product:
          description: The product of a plan.
          type: string
        productCode:
          description: The identifier of a plan.
          type: string
        savingLabel:
          description: NA.
          type: string
        trialPeriodDays:
          description: How many days a trial period runs for a plan. Only valid if `hasTrialPeriod` is true.
          format: int32
          type: integer
      required:
        - productCode
        - nickname
        - product
        - currency
        - amount
        - interval
        - intervalCount
        - trialPeriodDays
        - description
        - savingLabel
      type: object
    RokuPlans:
      additionalProperties: false
      properties:
        plans:
          description: The list of available plans.
          items:
            $ref: "#/components/schemas/RokuPlanListItem"
          type: array
        termsAndConditions:
          description: Details of terms and conditions of the plan.
          type: string
      required:
        - plans
        - termsAndConditions
      type: object
    SamsungPreview:
      additionalProperties: false
      properties:
        expires:
          description: |
            For public preview only
            If specified, the time at which the preview content is updated.
            The time is at most 1 week into the future. By default, the preview
            content is updated every 10 minutes, whenever the TV is switched on,
            or the JSON file changes.
          format: int64
          type: integer
        expires_only:
          default: false
          description: |
            For public preview only
            If this value is "true", the preview content is updated only at
            the time specified by the "expires" parameter.
          type: boolean
        sections:
          description: Preview sections
          items:
            $ref: "#/components/schemas/SamsungPreviewSection"
          type: array
      required:
        - sections
      type: object
    SamsungPreviewSection:
      additionalProperties: false
      properties:
        position:
          description: Section position. If specified, sections are shown in ascending position order.
          format: int32
          type: integer
        tiles:
          description: Tiles within the section
          items:
            $ref: "#/components/schemas/SamsungPreviewSectionTile"
          type: array
        title:
          description: Section title
          type: string
      required:
        - tiles
      type: object
    SamsungPreviewSectionTile:
      additionalProperties: false
      properties:
        action_data:
          description: Data to send to the application when the tile is clicked
          type: string
        display_from:
          description: Time to begin showing the tile
          format: date-time
          type: string
        display_until:
          description: Time to stop showing the tile
          format: date-time
          type: string
        image_ratio:
          description: |
            Thumbnail image aspect ratio
              "16:9"
              "4:3"
              "1:1" (default)
              "2:3"
              The thumbnail height is fixed at 250 px on presentation.
          type: string
        image_url:
          description: Thumbnail image URL
          format: uri
          type: string
        is_playable:
          description: If "true", a "Play" icon is shown over the thumbnail image
          type: boolean
        position:
          description: Section position. If specified, sections are shown in ascending position order
          format: int32
          type: integer
        subtitle:
          description: Tile subtitle
          type: string
        title:
          description: Tile title
          type: string
      required:
        - image_url
        - image_ratio
        - action_data
        - is_playable
      type: object
    SearchResults:
      additionalProperties: false
      properties:
        items:
          $ref: "#/components/schemas/ItemList"
        movies:
          $ref: "#/components/schemas/ItemList"
        other:
          $ref: "#/components/schemas/ItemList"
        people:
          description: The list of people relevant to the search term.
          items:
            $ref: "#/components/schemas/Person"
          type: array
        term:
          description: The search term.
          type: string
        total:
          description: The total number of results.
          format: int32
          minimum: 0
          type: integer
        tv:
          $ref: "#/components/schemas/ItemList"
      required:
        - term
        - total
      type: object
      x-emoji: 🔍
    ServiceError:
      additionalProperties: false
      properties:
        code:
          description: An optional code classifying the error. Should be taken in the context of the http status code.
          format: int32
          type: integer
        message:
          description: A description of the error.
          type: string
      required:
        - message
      type: object
      x-emoji: 🔴
    SingleSignOnRequest:
      additionalProperties: false
      properties:
        cookieType:
          description: |
            If you specify a cookie type then a content filter cookie will be returned
            along with the token(s). This is only intended for web based clients which
            need to pass the cookies to a server to render a page based on the user's
            content filters e.g subscription code.

            If type `Session` the cookie will be session based.
            If type `Persistent` the cookie will have a medium term lifespan.
            If undefined no cookies will be set.
          enum:
            - Session
            - Persistent
          type: string
        linkAccounts:
          description: |
            When a user attempts to sign in using single-sign-on, we may find an account created
            previously through the manual sign up flow with the same email. If this is the
            case then an option to link the two accounts can be made available.

            If this flag is set to true then accounts will be linked automatically.

            If this flag is not set or set to false and an existing account is found 
            then an http 401 with subcode `6001` will be returned. Client apps can then present the
            option to link the accounts. If the user decides to accept, then the same call
            can be repeated with this flag set to true.
          type: boolean
        provider:
          description: The third party single-sign-on provider.
          enum:
            - Facebook
          type: string
        scopes:
          description: |
            The scope(s) of the tokens required.
            For each scope listed an Account and Profile token of that scope will be returned.
          items:
            enum:
              - Catalog
              - Commerce
              - Settings
              - Playback
            type: string
          type: array
        token:
          description: A token from the third party single-sign-on provider e.g. an identity token from Facebook.
          type: string
      required:
        - provider
        - token
      type: object
    Subscription:
      additionalProperties: false
      properties:
        code:
          description: The unique subscription code.
          type: string
        endDate:
          description: |
            The end date of a subscription.

            After this date the subscription will become expired. If this is a recurring
            subscription which has not been cancelled then the account holder will be
            automatically charged and a new subscription will be activated.

            Some subscriptions may not have an end date, in which case this
            property will not exist.
          format: date-time
          type: string
        id:
          description: Unique identifier for the subscription.
          type: string
        isTrialPeriod:
          description: True if a subscription is in its trial period, false if not.
          type: boolean
        planId:
          description: The plan a subscription belongs to.
          type: string
        startDate:
          description: The start date of a subscription.
          format: date-time
          type: string
        status:
          description: The status of a subscription.
          enum:
            - Active
            - Cancelled
            - Lapsed
            - Expired
            - None
          type: string
      required:
        - code
        - startDate
        - isTrialPeriod
        - planId
        - status
      type: object
      x-emoji: 💳
    SubscriptionDetails:
      additionalProperties: false
      properties:
        itvData_purchased:
          description: The ITV purchased subscription data.
          type: object
      required:
        - itvData_purchased
      type: object
      x-emoji: 🔑
    Theme:
      additionalProperties: false
      properties:
        colors:
          description: The list of colors defined for the theme.
          items:
            $ref: "#/components/schemas/ThemeColor"
          type: array
        type:
          description: The type of theme.
          enum:
            - Background
            - Text
            - Custom
          type: string
      required:
        - colors
        - type
      type: object
      x-emoji: 🎨
    ThemeColor:
      additionalProperties: false
      properties:
        name:
          description: The name of the theme color.
          type: string
        opacity:
          description: |
            The opacity of the theme color from 0 to 1.

            When omitted, no opacity level is to be applied to the color, or in other words we
            assume the color has an opacity of 1
          format: float
          maximum: 1
          minimum: 0
          type: number
        value:
          description: The hex value of the theme color.
          type: string
      required:
        - name
        - value
      type: object
      x-emoji: 🎨
    TokenRefreshRequest:
      additionalProperties: false
      properties:
        cookieType:
          description: |
            If you specify a cookie type then a content filter cookie will be returned
            along with the token(s). This is only intended for web based clients which
            need to pass the cookies to a server to render a page based on the user's
            content filters e.g subscription code.

            If type `Session` the cookie will be session based.
            If type `Persistent` the cookie will have a medium term lifespan.
            If undefined no cookies will be set.
          enum:
            - Session
            - Persistent
          type: string
        token:
          description: The token to refresh.
          type: string
      required:
        - token
      type: object
    UserRating:
      additionalProperties: false
      properties:
        itemId:
          description: The id of the item rated.
          type: string
        rating:
          description: The rating out of 10
          format: int32
          maximum: 10
          minimum: 1
          type: integer
      required:
        - itemId
        - rating
      type: object
      x-emoji: ⭐️
    Watched:
      additionalProperties: false
      properties:
        firstWatchedDate:
          format: date-time
          type: string
        isFullyWatched:
          default: false
          description: True - if the item is fully watched, False - otherwise.
          type: boolean
        itemId:
          description: The id of the item watched.
          type: string
        lastWatchedDate:
          format: date-time
          type: string
        position:
          description: The last playhead position watched for the item.
          format: int32
          type: integer
      required:
        - position
        - firstWatchedDate
        - lastWatchedDate
      type: object
      x-emoji: 👀
  securitySchemes:
    accountAuth:
      description: Account JWT token
      flows:
        password:
          scopes:
            Catalog: Access all read only content
            Commerce: Perform account level transactions
            Playback: Allow playback of restricted content
            Settings: Modify account settings
          tokenUrl: /account/authorization
      type: oauth2
    profileAuth:
      description: Profile JWT token
      flows:
        password:
          scopes:
            Catalog: Modify profile preferences and activity (bookmarks, watch list)
          tokenUrl: /account/profile/authorization
      type: oauth2
    resetPasswordAuth:
      in: header
      name: authorization
      type: apiKey
    verifyEmailAuth:
      in: header
      name: authorization
      type: apiKey
