openapi: 3.0.0
servers:
  - url: https://ibl.api.bbci.co.uk/ibl/v1
  - url: http://ibl.api.bbci.co.uk/ibl/v1
info:
  contact:
    email: ibl-team@lists.forge.bbc.co.uk
    name: Open iBL Project
    url: http://developer.bbc.co.uk/
  description: The definitive iPlayer API.
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
  title: BBC iPlayer Business Layer
  version: "1.0"
  x-apisguru-categories:
    - media
  x-logo:
    backgroundColor: "#FFFFFF"
    url: https://avatars0.githubusercontent.com/u/828722?s=200&v=4
  x-origin:
    - format: openapi
      url: https://raw.githubusercontent.com/Mermade/bbcparse/master/iblApi/openapi.yaml
      version: "3.0"
  x-providerName: bbci.co.uk
  x-release: 1.0.0-844
  x-schema-id: https://ibl.api.bbci.co.uk/ibl/v1/schema/ibl.json
  x-unofficialSpec: true
externalDocs:
  description: BBC iPlayer documentation
  url: http://smethur.st/posts/176135860
security:
  - api_key: []
paths:
  "/atoz/{letter}/programmes":
    get:
      description: Get the Programmes whose title begins with the given initial character.
      operationId: Get_Programmes AtoZ search_
      parameters:
        - description: Letter to search by, a to z or the string '0-9'
          in: path
          name: letter
          required: true
          schema:
            pattern: "[a-z](0-9)"
            type: string
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/per_page"
        - $ref: "#/components/parameters/initial_child_count"
        - description: The sort order of the results.
          in: query
          name: sort
          required: true
          schema:
            enum:
              - title
            type: string
        - $ref: "#/components/parameters/sort_direction"
        - $ref: "#/components/parameters/availability"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Programmes by initial title character
      tags:
        - A to Z
  /categories:
    get:
      description: Get the list of all the categories in TV & iPlayer.
      operationId: Get_Categories_
      parameters:
        - $ref: "#/components/parameters/lang"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Get categories
      tags:
        - Categories
  "/categories/{category}":
    get:
      description: Get sub-categories
      operationId: Get_Sub-categories_
      parameters:
        - $ref: "#/components/parameters/category"
        - $ref: "#/components/parameters/lang"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Get sub-categories
      tags:
        - Categories
  "/categories/{category}/episodes":
    get:
      description: Get the list of all the episodes for a given category in TV & iPlayer.
      operationId: Get_Episodes by category_
      parameters:
        - $ref: "#/components/parameters/category"
        - $ref: "#/components/parameters/lang"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/per_page"
        - description: The sort order of the results.
          in: query
          name: sort
          required: false
          schema:
            enum:
              - recent
              - popular
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: List all the episodes for a category.
      tags:
        - Episodes
  "/categories/{category}/highlights":
    get:
      description: Get the editorial highlights of a given category in TV & iPlayer.
      operationId: Get_Highlights by category_
      parameters:
        - $ref: "#/components/parameters/category"
        - $ref: "#/components/parameters/lang"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
        - $ref: "#/components/parameters/mixin"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: List the highlights for a category.
      tags:
        - Programmes (TLEOs)
  "/categories/{category}/programmes":
    get:
      description: Get the list of all the Programmes (TLEOs) for a given category in TV & iPlayer.
      operationId: Get_Programmes by category_
      parameters:
        - $ref: "#/components/parameters/category"
        - $ref: "#/components/parameters/lang"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/per_page"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: List all the programmes for a category.
      tags:
        - Programmes (TLEOs)
  /channels:
    get:
      description: Get the list of all the channels TV & iPlayer.
      operationId: Get_Channels_
      parameters:
        - description: The region to get the channels for.
          in: query
          name: region
          required: false
          schema:
            type: string
        - $ref: "#/components/parameters/lang"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: List all the channels.
      tags:
        - Channels
  "/channels/{channel}/broadcasts":
    get:
      description: Get broadcasts by channel
      operationId: Get_Broadcasts by channel_
      parameters:
        - $ref: "#/components/parameters/channel"
        - $ref: "#/components/parameters/lang"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
        - $ref: "#/components/parameters/mixin"
        - $ref: "#/components/parameters/per_page"
        - description: Time to return results from, e.g. -3h
          in: query
          name: from
          required: false
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Get broadcasts by channel
      tags:
        - Programmes (TLEOs)
  "/channels/{channel}/highlights":
    get:
      description: Get the editorial highlights of a given channel in TV & iPlayer.
      operationId: Get_Highlights by channel_
      parameters:
        - $ref: "#/components/parameters/channel"
        - $ref: "#/components/parameters/lang"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
        - description: Whether to include live programmes
          in: query
          name: live
          required: false
          schema:
            type: boolean
        - $ref: "#/components/parameters/mixin"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: List the highlights for a channel.
      tags:
        - Channels
  "/channels/{channel}/programmes":
    get:
      description: Get programmes by channel
      operationId: Get_Programmes by channel_
      parameters:
        - $ref: "#/components/parameters/channel"
        - $ref: "#/components/parameters/lang"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/per_page"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Get programmes by channel
      tags:
        - Programmes (TLEOs)
  "/channels/{channel}/schedule/{date}":
    get:
      description: Get schedule by channel
      operationId: Get_Schedule by channel_
      parameters:
        - $ref: "#/components/parameters/channel"
        - description: The date to return the schedule for, yyyy-mm-dd format
          in: path
          name: date
          required: true
          schema:
            type: string
        - $ref: "#/components/parameters/lang"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Get schedule by channel
      tags:
        - Channels
  "/clips/{pid}":
    get:
      description: Get Clips
      operationId: Get_Clips_
      parameters:
        - $ref: "#/components/parameters/pid"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Get Clips
      tags:
        - Episodes
  "/episodes/{pid}":
    get:
      description: Get the episode for a given episode identifier.
      operationId: Get_Programme by PID_
      parameters:
        - $ref: "#/components/parameters/pid"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
        - $ref: "#/components/parameters/mixin"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Episode for a given pid.
      tags:
        - Episodes
  "/episodes/{pid}/next":
    get:
      description: Get Onward Journey (next programme)
      operationId: Get_Onward_Journey
      parameters:
        - $ref: "#/components/parameters/pid"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Get Onward Journey
      tags:
        - Episodes
  "/episodes/{pid}/postrolls":
    get:
      description: Get Follow-ups (post-rolls)
      operationId: getPostRolls
      parameters:
        - $ref: "#/components/parameters/pid"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Get Follow-ups (post-rolls)
      tags:
        - Episodes
  "/episodes/{pid}/prerolls":
    get:
      description: Get Trailers (pre-rolls)
      operationId: Get_Trailers (pre-rolls)_
      parameters:
        - $ref: "#/components/parameters/pid"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Get Trailers (pre-rolls)
      tags:
        - Episodes
  "/episodes/{pid}/recommendations":
    get:
      description: Get programme recommendations
      operationId: Get_Programme recommendations_
      parameters:
        - $ref: "#/components/parameters/pid"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/per_page"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Get programme recommendations
      tags:
        - Episodes
  /groups/popular/episodes:
    get:
      description: Get programmes popular
      operationId: Get_Programmes popular_
      parameters:
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/per_page"
        - $ref: "#/components/parameters/initial_child_count"
        - $ref: "#/components/parameters/sort"
        - $ref: "#/components/parameters/sort_direction"
        - $ref: "#/components/parameters/availability"
        - $ref: "#/components/parameters/mixin"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Get programmes popular
      tags:
        - Episodes
  "/groups/{pid}/episodes":
    get:
      description: Get episodes by group, brand or series
      operationId: Get_Episodes by group_
      parameters:
        - $ref: "#/components/parameters/pid"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/page"
        - $ref: "#/components/parameters/per_page"
        - $ref: "#/components/parameters/initial_child_count"
        - $ref: "#/components/parameters/sort"
        - $ref: "#/components/parameters/sort_direction"
        - $ref: "#/components/parameters/availability"
        - $ref: "#/components/parameters/mixin"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Get episodes by group, brand or series
      tags:
        - Episodes
  /home/highlights:
    get:
      description: Get programme highlights
      operationId: Get_Programme highlights_
      parameters:
        - $ref: "#/components/parameters/lang"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
        - $ref: "#/components/parameters/mixin"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Get programme highlights
      tags:
        - Programmes (TLEOs)
  "/programmes/{pid}":
    get:
      description: Get the programme for a given programme identifier.
      operationId: Get_Programmes by parent PID_
      parameters:
        - $ref: "#/components/parameters/pid"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
        - $ref: "#/components/parameters/initial_child_count"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Programme for a given pid.
      tags:
        - Programmes (TLEOs)
  "/programmes/{pid}/episodes":
    get:
      description: Get the child episodes belonging to a given programme identifier.
      operationId: Get_Episodes by parent PID_
      parameters:
        - $ref: "#/components/parameters/pid"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
        - $ref: "#/components/parameters/initial_child_count"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Child episodes for a given programme pid.
      tags:
        - Episodes
  /regions:
    get:
      description: Get the list of all the regions TV & iPlayer.
      operationId: Get_Regions_
      parameters:
        - $ref: "#/components/parameters/lang"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: List all regions
      tags:
        - Regions
  /schema/ibl.json:
    get:
      description: Get schema
      operationId: Get_Schema_
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Get schema
      tags:
        - Metadata
  /search:
    get:
      description: Search
      operationId: Search_
      parameters:
        - $ref: "#/components/parameters/q"
        - $ref: "#/components/parameters/lang"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Search
      tags:
        - Search
  /search-suggest:
    get:
      description: Search-suggest
      operationId: Search-suggest_
      parameters:
        - $ref: "#/components/parameters/q"
        - $ref: "#/components/parameters/lang"
        - $ref: "#/components/parameters/rights"
        - $ref: "#/components/parameters/availability"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Search-suggest
      tags:
        - Search
  /status:
    get:
      description: Get the current iPlayer business layer status. This tells the caller the status of the iPlayer data, but not necessarily the overall status of the website. In the future it might include the status of the dependent data services within the BBC.
      operationId: Get_Status_
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Get status
      tags:
        - Metadata
  /user/purchases:
    get:
      description: Get user store purchases
      operationId: Get_User store purchases_
      parameters:
        - $ref: "#/components/parameters/identity_cookie"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security:
        - basic: []
      summary: Get user store purchases
      tags:
        - User
  /user/recommendations:
    get:
      description: Get user store recommendations
      operationId: Get_User store recommendations_
      parameters:
        - $ref: "#/components/parameters/identity_cookie"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Get user store recommendations
      tags:
        - User
  /user/watching:
    get:
      description: Get user watching
      operationId: Get_User watching_
      parameters:
        - $ref: "#/components/parameters/identity_cookie"
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ibl"
          description: Default response
      security: []
      summary: Get user watching
      tags:
        - User
components:
  parameters:
    availability:
      description: Whether to return all, or available programmes
      in: query
      name: availability
      required: true
      schema:
        default: available
        enum:
          - all
          - available
        type: string
    category:
      description: The category identifier to return results from.
      in: path
      name: category
      required: true
      schema:
        type: string
    channel:
      description: The channel identifier to limit results to.
      in: path
      name: channel
      required: true
      schema:
        type: string
    identity_cookie:
      description: The BBC-id cookie value
      in: query
      name: identity_cookie
      required: true
      schema:
        format: double
        type: number
    initial_child_count:
      description: The depth to return child entities.
      in: query
      name: initial_child_count
      required: true
      schema:
        default: 4
        maximum: 4
        minimum: 1
        type: integer
    lang:
      description: The language for any applicable localised strings.
      in: query
      name: lang
      required: true
      schema:
        enum:
          - en
          - cy
          - ga
          - gd
          - pi
        type: string
    mixin:
      description: Request additional data in the output
      explode: true
      in: query
      name: mixin
      required: false
      schema:
        enum:
          - live
          - promotions
        items:
          type: string
        type: array
    page:
      description: The page index.
      in: query
      name: page
      required: true
      schema:
        format: int64
        type: integer
    per_page:
      description: The number of results to return.
      in: query
      name: per_page
      required: true
      schema:
        format: int64
        type: integer
    pid:
      description: The programme identifier.
      in: path
      name: pid
      required: true
      schema:
        minLength: 8
        pattern: ^([0-9,a-d,f-h,j-n,p-t,v-z]){8,}$
        type: string
    q:
      description: The term to search for.
      in: query
      name: q
      required: true
      schema:
        type: string
    rights:
      description: The rights group to limit results to.
      in: query
      name: rights
      required: true
      schema:
        default: web
        enum:
          - mobile
          - tv
          - web
        type: string
    sort:
      description: The sort order of the results.
      in: query
      name: sort
      required: true
      schema:
        type: string
    sort_direction:
      description: Whether to sort ascending or descending
      in: query
      name: sort_direction
      required: true
      schema:
        enum:
          - asc
          - desc
        type: string
  schemas:
    added:
      additionalProperties: false
      properties:
        programme:
          $ref: "#/components/schemas/programme"
        type:
          enum:
            - added
        urn:
          type: string
      required:
        - urn
        - type
        - programme
      type: object
    broadcast:
      additionalProperties: false
      properties:
        available_on_hd_service:
          nullable: true
          type: string
        blanked:
          type: boolean
        channel_title:
          type: string
        duration:
          additionalProperties: false
          properties:
            text:
              type: string
            value:
              type: string
          required:
            - value
            - text
          type: object
        episode:
          $ref: "#/components/schemas/episode"
        episode_id:
          type: string
        events:
          items:
            additionalProperties: false
            properties:
              name:
                type: string
              system:
                type: string
              time:
                type: string
            required:
              - name
              - system
              - time
            type: object
          type: array
        id:
          type: string
        repeat:
          type: boolean
        scheduled_end:
          type: string
        scheduled_start:
          type: string
        service_id:
          type: string
        transmission_end:
          type: string
        transmission_start:
          type: string
        type:
          enum:
            - broadcast
        version_id:
          type: string
      required:
        - id
        - type
        - scheduled_start
        - scheduled_end
        - repeat
        - blanked
        - episode
        - episode_id
        - version_id
        - service_id
      type: object
    category:
      additionalProperties: false
      properties:
        child_episode_count:
          type: number
        child_programme_count:
          type: number
        contextual_title:
          type: string
        id:
          type: string
        kind:
          enum:
            - genre
            - accessibility
            - national
            - childrens
        parent_category:
          type: string
        sub_categories:
          items:
            $ref: "#/components/schemas/category"
          type: array
        title:
          type: string
        type:
          enum:
            - category
      required:
        - id
        - title
        - type
        - kind
      type: object
    channel:
      additionalProperties: false
      properties:
        has_schedule:
          type: boolean
        id:
          type: string
        master_brand_id:
          type: string
        master_brand_title:
          type: string
        on_air:
          type: boolean
        title:
          type: string
        type:
          enum:
            - channel
      required:
        - id
        - title
        - type
        - has_schedule
        - master_brand_id
        - master_brand_title
      type: object
    clip:
      additionalProperties: false
      properties:
        id:
          type: string
        images:
          additionalProperties: false
          properties:
            inherited_from:
              type: string
            standard:
              type: string
            type:
              enum:
                - image
          required:
            - type
            - standard
          type: object
        labels:
          additionalProperties: false
          properties:
            category:
              type: string
            editorial:
              type: string
          type: object
        master_brand:
          $ref: "#/components/schemas/master_brand"
        onward_journey:
          additionalProperties: false
          properties:
            id:
              type: string
            type:
              enum:
                - episode
          type: object
        promotion_type:
          enum:
            - available_now
            - coming_soon
        synopses:
          additionalProperties: false
          properties:
            editorial:
              type: string
            large:
              type: string
            medium:
              type: string
            small:
              type: string
          type: object
        title:
          type: string
        tleo_id:
          type: string
        tleo_type:
          enum:
            - episode
            - brand
            - series
        type:
          enum:
            - clip
        versions:
          items:
            additionalProperties: false
            properties:
              availability:
                additionalProperties: false
                properties:
                  accurate_start:
                    type: string
                  end:
                    type: string
                  remaining:
                    additionalProperties: false
                    properties:
                      text:
                        type: string
                    required:
                      - text
                    type: object
                  start:
                    type: string
                required:
                  - start
                type: object
              credits_start:
                type: number
              download:
                type: boolean
              duration:
                additionalProperties: false
                properties:
                  text:
                    type: string
                  value:
                    type: string
                required:
                  - text
                  - value
                type: object
              events:
                items:
                  oneOf:
                    - additionalProperties: false
                      properties:
                        name:
                          type: string
                        offset:
                          type: integer
                        system:
                          type: string
                      required:
                        - name
                        - system
                        - offset
                      type: object
                    - additionalProperties: false
                      properties:
                        name:
                          type: string
                        system:
                          type: string
                        time:
                          type: string
                      required:
                        - name
                        - system
                        - time
                      type: object
                type: array
              first_broadcast:
                type: string
              first_broadcast_date_time:
                type: string
              guidance:
                additionalProperties: false
                properties:
                  id:
                    type: string
                  text:
                    additionalProperties: false
                    properties:
                      large:
                        type: string
                      medium:
                        type: string
                      small:
                        type: string
                    type: object
                required:
                  - id
                type: object
              hd:
                type: boolean
              id:
                type: string
              interactions:
                items:
                  $ref: "#/components/schemas/interaction"
                type: array
              kind:
                enum:
                  - legal
                  - editorial
                  - technical-replacement
                  - original
                  - iplayer-version
                  - lengthened
                  - shortened
                  - pre-watershed
                  - post-watershed
                  - warnings-higher
                  - warnings-lower
                  - warnings-none
                  - duplication
                  - open-subtitled
                  - other
                  - audio-described
                  - signed
                  - webcast
                  - simulcast
              rrc:
                additionalProperties: false
                properties:
                  description:
                    additionalProperties: false
                    properties:
                      large:
                        type: string
                      small:
                        type: string
                    required:
                      - small
                      - large
                    type: object
                  url:
                    type: string
                required:
                  - description
                type: object
              service_id:
                type: string
              type:
                enum:
                  - version
                  - version_large
              uhd:
                type: boolean
            required:
              - id
              - type
              - hd
              - uhd
              - download
              - duration
              - kind
              - availability
            type: object
          type: array
      required:
        - id
        - type
        - title
        - images
        - tleo_id
        - synopses
        - versions
        - master_brand
      type: object
    episode:
      additionalProperties: false
      properties:
        audio_described:
          type: boolean
        categories:
          items:
            type: string
          type: array
        childrens:
          type: boolean
        editorial_subtitle:
          type: string
        editorial_title:
          type: string
        event_group_id:
          type: string
        guidance:
          type: boolean
        has_credits:
          type: boolean
        id:
          type: string
        images:
          additionalProperties: false
          properties:
            character_image:
              type: string
            inherited_from:
              type: string
            live:
              type: string
            portrait:
              type: string
            promotional:
              type: string
            promotional_with_logo:
              type: string
            standard:
              type: string
            type:
              enum:
                - image
          required:
            - type
            - standard
          type: object
        labels:
          additionalProperties: false
          properties:
            category:
              type: string
            editorial:
              type: string
            editorial_category:
              type: string
            time:
              type: string
          type: object
        lexical_sort_letter:
          type: string
        live:
          type: boolean
        live_subtitle:
          type: string
        live_title:
          type: string
        master_brand:
          $ref: "#/components/schemas/master_brand"
        next_broadcast:
          additionalProperties: false
          properties:
            channel_title:
              type: string
            scheduled_start:
              type: string
          required:
            - channel_title
            - scheduled_start
          type: object
        numeric_tleo_position:
          type: number
        original_title:
          type: string
        parent_id:
          type: string
        parent_position:
          type: number
        preview_id:
          type: string
        programme_type:
          enum:
            - narrative
            - sequential
            - self-contained
            - strand
            - unclassified
            - one-off
        promoted:
          type: boolean
        related_links:
          items:
            additionalProperties: false
            properties:
              id:
                type: string
              kind:
                type: string
              title:
                type: string
              type:
                enum:
                  - link
              url:
                type: string
            required:
              - id
              - url
              - type
              - kind
              - title
            type: object
          type: array
        release_date:
          type: string
        release_date_time:
          type: string
        requires_ab:
          items:
            enum:
              - u13
              - u16
              - u18
              - o18
            type: string
          minItems: 1
          type: array
          uniqueItems: true
        requires_sign_in:
          type: boolean
        requires_tv_licence:
          type: boolean
        signed:
          type: boolean
        slice_id:
          type: string
        slice_subtitle:
          type: string
        status:
          enum:
            - available
            - unavailable
        subtitle:
          type: string
        synopses:
          additionalProperties: false
          properties:
            editorial:
              type: string
            large:
              type: string
            live:
              type: string
            medium:
              type: string
            preview:
              type: string
            programme_small:
              type: string
            small:
              type: string
          type: object
        tests:
          items:
            properties:
              id:
                type: string
              status:
                enum:
                  - active
                type: string
              variants:
                items:
                  properties:
                    data:
                      properties:
                        images:
                          properties:
                            standard:
                              type: string
                            type:
                              enum:
                                - episode
                                - episode_large
                          required:
                            - type
                            - standard
                          type: object
                      required:
                        - images
                      type: object
                    id:
                      type: string
                  required:
                    - id
                    - data
                  type: object
                type: array
            required:
              - id
              - variants
              - status
            type: object
          type: array
        title:
          type: string
        tleo_id:
          type: string
        tleo_type:
          enum:
            - episode
            - brand
            - series
        type:
          enum:
            - episode
            - episode_large
        versions:
          items:
            anyOf:
              - additionalProperties: false
                properties:
                  availability:
                    additionalProperties: false
                    properties:
                      accurate_start:
                        type: string
                      end:
                        type: string
                      remaining:
                        additionalProperties: false
                        properties:
                          text:
                            type: string
                        required:
                          - text
                        type: object
                      start:
                        type: string
                    required:
                      - start
                    type: object
                  credits_start:
                    type: number
                  download:
                    type: boolean
                  duration:
                    additionalProperties: false
                    properties:
                      text:
                        type: string
                      value:
                        type: string
                    required:
                      - text
                      - value
                    type: object
                  events:
                    items:
                      oneOf:
                        - additionalProperties: false
                          properties:
                            name:
                              type: string
                            offset:
                              type: integer
                            system:
                              type: string
                          required:
                            - name
                            - system
                            - offset
                          type: object
                        - additionalProperties: false
                          properties:
                            name:
                              type: string
                            system:
                              type: string
                            time:
                              type: string
                          required:
                            - name
                            - system
                            - time
                          type: object
                    type: array
                  first_broadcast:
                    type: string
                  first_broadcast_date_time:
                    type: string
                  guidance:
                    additionalProperties: false
                    properties:
                      id:
                        type: string
                      text:
                        additionalProperties: false
                        properties:
                          large:
                            type: string
                          medium:
                            type: string
                          small:
                            type: string
                        type: object
                    required:
                      - id
                    type: object
                  hd:
                    type: boolean
                  id:
                    type: string
                  interactions:
                    items:
                      $ref: "#/components/schemas/interaction"
                    type: array
                  kind:
                    enum:
                      - legal
                      - editorial
                      - technical-replacement
                      - original
                      - iplayer-version
                      - lengthened
                      - shortened
                      - pre-watershed
                      - post-watershed
                      - warnings-higher
                      - warnings-lower
                      - warnings-none
                      - duplication
                      - open-subtitled
                      - other
                      - audio-described
                      - signed
                      - webcast
                      - simulcast
                  rrc:
                    additionalProperties: false
                    properties:
                      description:
                        additionalProperties: false
                        properties:
                          large:
                            type: string
                          small:
                            type: string
                        required:
                          - small
                          - large
                        type: object
                      url:
                        type: string
                    required:
                      - description
                    type: object
                  service_id:
                    type: string
                  type:
                    enum:
                      - version
                      - version_large
                  uhd:
                    type: boolean
                required:
                  - id
                  - type
                  - hd
                  - uhd
                  - download
                  - duration
                  - kind
                  - availability
                type: object
              - additionalProperties: false
                properties:
                  download:
                    type: boolean
                  duration:
                    additionalProperties: false
                    properties:
                      text:
                        type: string
                      value:
                        type: string
                    required:
                      - text
                      - value
                    type: object
                  guidance:
                    additionalProperties: false
                    properties:
                      id:
                        type: string
                      text:
                        additionalProperties: false
                        properties:
                          large:
                            type: string
                          medium:
                            type: string
                          small:
                            type: string
                        type: object
                    required:
                      - id
                    type: object
                  hd:
                    type: boolean
                  id:
                    type: string
                  kind:
                    type: string
                  store_id:
                    type: string
                  store_profile:
                    type: string
                  store_session:
                    additionalProperties: false
                    properties:
                      ceiling:
                        type: number
                      stats:
                        properties:
                          assetName:
                            type: string
                          contentType:
                            type: string
                          contentVariant:
                            type: string
                          episodeName:
                            type: string
                          parentPID:
                            type: string
                          parentPIDType:
                            type: string
                          productVariant:
                            type: string
                          viewerId:
                            type: string
                        type: object
                      token:
                        type: string
                    required:
                      - token
                      - stats
                    type: object
                  type:
                    enum:
                      - store_version
                required:
                  - id
                  - type
                  - store_id
                  - store_profile
                  - hd
                  - download
                  - duration
                  - kind
                type: object
          type: array
      required:
        - id
        - type
        - title
        - images
        - signed
        - audio_described
        - status
        - tleo_id
        - guidance
        - synopses
        - versions
        - tleo_type
        - categories
        - master_brand
        - lexical_sort_letter
        - requires_sign_in
      type: object
    group:
      additionalProperties: false
      properties:
        count:
          type: number
        episode_sort_direction:
          type: string
        group_type:
          enum:
            - tleo
            - curated
            - automated
            - event
        id:
          type: string
        images:
          additionalProperties: false
          properties:
            standard:
              type: string
            type:
              enum:
                - image
            vertical:
              type: string
          required:
            - type
            - standard
            - vertical
          type: object
        initial_children:
          items:
            anyOf:
              - $ref: "#/components/schemas/episode"
              - $ref: "#/components/schemas/broadcast"
          type: array
        master_brand:
          $ref: "#/components/schemas/master_brand"
        related_links:
          items:
            additionalProperties: false
            properties:
              kind:
                type: string
              title:
                type: string
              url:
                type: string
            required:
              - kind
              - url
              - title
            type: object
          type: array
        short_title:
          type: string
        stacked:
          type: boolean
        synopses:
          additionalProperties: false
          properties:
            large:
              type: string
            medium:
              type: string
            small:
              type: string
          type: object
        title:
          type: string
        type:
          enum:
            - group
            - group_large
      required:
        - id
        - type
      type: object
    ibl: {}
    interaction:
      additionalProperties: false
      properties:
        interaction_points:
          additionalProperties: false
          properties:
            show_from:
              type: number
            skip_to:
              type: number
          required:
            - show_from
            - skip_to
          type: object
        subtype:
          anyOf:
            - type: string
            - enum:
                - intro
                - recap
                - this-episode-preview
                - next-episode-teaser
        title:
          additionalProperties: false
          properties:
            long:
              anyOf:
                - type: string
                - enum:
                    - Skip intro
                    - Skip recap
                    - Skip preview
            short:
              anyOf:
                - type: string
                - enum:
                    - Skip
          required:
            - short
            - long
          type: object
        type:
          anyOf:
            - type: string
            - enum:
                - skip
      required:
        - title
        - type
        - subtype
        - interaction_points
      type: object
    master_brand:
      additionalProperties: false
      properties:
        attribution:
          type: string
        id:
          type: string
        ident_id:
          type: string
        titles:
          additionalProperties: false
          properties:
            large:
              type: string
            medium:
              type: string
            small:
              type: string
          required:
            - small
            - medium
            - large
          type: object
      required:
        - id
        - titles
        - attribution
      type: object
    programme:
      additionalProperties: false
      properties:
        categories:
          items:
            type: string
          type: array
        count:
          type: number
        id:
          type: string
        images:
          additionalProperties: false
          properties:
            inherited_from:
              type: string
            standard:
              type: string
            type:
              enum:
                - image
          required:
            - type
            - standard
          type: object
        initial_children:
          items:
            $ref: "#/components/schemas/episode"
          type: array
        labels:
          additionalProperties: false
          properties:
            category:
              type: string
          type: object
        lexical_sort_letter:
          type: string
        master_brand:
          $ref: "#/components/schemas/master_brand"
        programme_type:
          enum:
            - narrative
            - sequential
            - self-contained
            - strand
            - unclassified
            - one-off
        status:
          enum:
            - available
            - unavailable
        synopses:
          additionalProperties: false
          properties:
            large:
              type: string
            medium:
              type: string
            small:
              type: string
          type: object
        title:
          type: string
        tleo_type:
          enum:
            - brand
            - series
            - episode
        type:
          enum:
            - programme
            - programme_large
      required:
        - id
        - type
        - title
        - synopses
        - lexical_sort_letter
        - images
        - master_brand
        - categories
        - status
        - count
        - initial_children
      type: object
    promotion:
      additionalProperties: false
      properties:
        id:
          type: string
        images:
          additionalProperties: false
          properties:
            inherited_from:
              type: string
            standard:
              type: string
            type:
              enum:
                - image
          required:
            - type
            - standard
          type: object
        labels:
          additionalProperties: false
          properties:
            promotion:
              type: string
          required:
            - promotion
          type: object
        subtitle:
          type: string
        synopses:
          additionalProperties: false
          properties:
            large:
              type: string
            medium:
              type: string
            small:
              type: string
          type: object
        title:
          type: string
        type:
          enum:
            - promotion
        url:
          type: string
      required:
        - id
        - type
      type: object
    region:
      additionalProperties: false
      properties:
        id:
          type: string
        kind:
          enum:
            - regional
            - national
        short_id:
          type: string
        title:
          type: string
        type:
          enum:
            - region
      required:
        - id
        - short_id
        - type
        - title
        - kind
      type: object
    search_group:
      additionalProperties: false
      properties:
        episode:
          $ref: "#/components/schemas/episode"
        id:
          type: string
        type:
          enum:
            - search_group
      required:
        - id
        - type
        - episode
      type: object
    store_version:
      additionalProperties: false
      properties:
        download:
          type: boolean
        duration:
          additionalProperties: false
          properties:
            text:
              type: string
            value:
              type: string
          required:
            - text
            - value
          type: object
        guidance:
          additionalProperties: false
          properties:
            id:
              type: string
            text:
              additionalProperties: false
              properties:
                large:
                  type: string
                medium:
                  type: string
                small:
                  type: string
              type: object
          required:
            - id
          type: object
        hd:
          type: boolean
        id:
          type: string
        kind:
          type: string
        store_id:
          type: string
        store_profile:
          type: string
        store_session:
          additionalProperties: false
          properties:
            ceiling:
              type: number
            stats:
              properties:
                assetName:
                  type: string
                contentType:
                  type: string
                contentVariant:
                  type: string
                episodeName:
                  type: string
                parentPID:
                  type: string
                parentPIDType:
                  type: string
                productVariant:
                  type: string
                viewerId:
                  type: string
              type: object
            token:
              type: string
          required:
            - token
            - stats
          type: object
        type:
          enum:
            - store_version
      required:
        - id
        - type
        - store_id
        - store_profile
        - hd
        - download
        - duration
        - kind
      type: object
    trailer:
      additionalProperties: false
      properties:
        id:
          type: string
        kind:
          enum:
            - available_now
            - watch_now
            - coming_soon
            - streaming_now_sounds
            - other
        message:
          type: string
        title:
          type: string
        type:
          enum:
            - trailer
        version_id:
          type: string
      required:
        - id
        - type
        - title
        - kind
        - version_id
        - message
      type: object
    user_recommendation:
      additionalProperties: false
      properties:
        algorithm:
          type: string
        episode:
          $ref: "#/components/schemas/episode"
        type:
          enum:
            - user_recommendation
      required:
        - algorithm
        - type
        - episode
      type: object
    version:
      additionalProperties: false
      properties:
        availability:
          additionalProperties: false
          properties:
            accurate_start:
              type: string
            end:
              type: string
            remaining:
              additionalProperties: false
              properties:
                text:
                  type: string
              required:
                - text
              type: object
            start:
              type: string
          required:
            - start
          type: object
        credits_start:
          type: number
        download:
          type: boolean
        duration:
          additionalProperties: false
          properties:
            text:
              type: string
            value:
              type: string
          required:
            - text
            - value
          type: object
        events:
          items:
            oneOf:
              - additionalProperties: false
                properties:
                  name:
                    type: string
                  offset:
                    type: integer
                  system:
                    type: string
                required:
                  - name
                  - system
                  - offset
                type: object
              - additionalProperties: false
                properties:
                  name:
                    type: string
                  system:
                    type: string
                  time:
                    type: string
                required:
                  - name
                  - system
                  - time
                type: object
          type: array
        first_broadcast:
          type: string
        first_broadcast_date_time:
          type: string
        guidance:
          additionalProperties: false
          properties:
            id:
              type: string
            text:
              additionalProperties: false
              properties:
                large:
                  type: string
                medium:
                  type: string
                small:
                  type: string
              type: object
          required:
            - id
          type: object
        hd:
          type: boolean
        id:
          type: string
        interactions:
          items:
            $ref: "#/components/schemas/interaction"
          type: array
        kind:
          enum:
            - legal
            - editorial
            - technical-replacement
            - original
            - iplayer-version
            - lengthened
            - shortened
            - pre-watershed
            - post-watershed
            - warnings-higher
            - warnings-lower
            - warnings-none
            - duplication
            - open-subtitled
            - other
            - audio-described
            - signed
            - webcast
            - simulcast
        rrc:
          additionalProperties: false
          properties:
            description:
              additionalProperties: false
              properties:
                large:
                  type: string
                small:
                  type: string
              required:
                - small
                - large
              type: object
            url:
              type: string
          required:
            - description
          type: object
        service_id:
          type: string
        type:
          enum:
            - version
            - version_large
        uhd:
          type: boolean
      required:
        - id
        - type
        - hd
        - uhd
        - download
        - duration
        - kind
        - availability
      type: object
    watching:
      additionalProperties: false
      properties:
        episode:
          $ref: "#/components/schemas/episode"
        has_next:
          type: boolean
        offset:
          type: number
        programme:
          $ref: "#/components/schemas/programme"
        progress:
          type: number
        remaining:
          type: number
        status:
          enum:
            - current
            - next
            - ended
        type:
          enum:
            - watching
        urn:
          type: string
        version:
          $ref: "#/components/schemas/version"
      required:
        - type
        - urn
        - episode
        - programme
        - version
        - has_next
      type: object
  securitySchemes:
    api_key:
      in: query
      name: api_key
      type: apiKey
    basic:
      description: Used only by store purchases.
      scheme: basic
      type: http
