Roku · JSON Structure

Roku Search Feed Structure

Type: object Properties: 5 Required: 2
StreamingTelevisionMediaEntertainmentConnected TVConsumer Electronics

Roku Search Feed Structure is a JSON Structure definition published by Roku, describing 5 properties, of which 2 are required. It conforms to the https://json-structure.org/meta/core/v0/# meta-schema.

Properties

version defaultLanguage defaultAvailabilityCountries nextPageUrl assets

Meta-schema: https://json-structure.org/meta/core/v0/#

JSON Structure

Raw ↑
{
  "$schema": "https://json-structure.org/meta/core/v0/#",
  "$id": "https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-structure/roku-search-feed-structure.json",
  "type": "object",
  "properties": {
    "version": {
      "type": "string"
    },
    "defaultLanguage": {
      "$ref": "#/definitions/language_type"
    },
    "defaultAvailabilityCountries": {
      "type": "array",
      "items": [
        {
          "$ref": "#/definitions/country_type"
        }
      ]
    },
    "nextPageUrl": {
      "type": "string",
      "pattern": "^http(s)?://.+$"
    },
    "assets": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "$ref": "#/definitions/asset_type"
          },
          "titles": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/title"
            }
          },
          "shortDescriptions": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/short_description"
            }
          },
          "longDescriptions": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/long_description"
            }
          },
          "externalIdSource": {
            "$ref": "#/definitions/external_id_source_type"
          },
          "externalIds": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/external_id"
            }
          },
          "releaseDate": {
            "description": "ISO-8601",
            "type": "string",
            "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$"
          },
          "releaseYear": {
            "type": "int32"
          },
          "genres": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/genre_type"
            }
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "credits": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "name": {
                  "type": "string"
                },
                "role": {
                  "type": "string"
                },
                "birthDate": {
                  "type": "string"
                },
                "deathDate": {
                  "type": "string"
                },
                "imageUrl": {
                  "type": "string"
                }
              }
            }
          },
          "advisoryRatings": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/advisory_rating"
            }
          },
          "images": {
            "type": "array",
            "items": {
              "$ref": "#/definitions/image"
            }
          },
          "durationInMilliseconds": {
            "type": "double"
          },
          "durationInSeconds": {
            "type": "int32"
          },
          "episodeInfo": {
            "type": "object",
            "properties": {
              "seriesId": {
                "type": "string"
              },
              "seasonNumber": {
                "type": "int32"
              },
              "episodeNumber": {
                "type": "int32"
              }
            },
            "required": [
              "seriesId",
              "episodeNumber"
            ]
          },
          "seasonInfo": {
            "type": "object",
            "properties": {
              "seasonNumber": {
                "type": "int32"
              },
              "seriesId": {
                "type": "string"
              }
            },
            "required": [
              "seasonNumber",
              "seriesId"
            ]
          },
          "content": {
            "type": "object",
            "properties": {
              "media": {
                "$ref": "#/definitions/media"
              },
              "linearEvents": {
                "type": "array",
                "items": {
                  "$ref": "#/definitions/linear_event"
                }
              },
              "playOptions": {
                "type": "array",
                "items": {
                  "$ref": "#/definitions/play_option"
                }
              }
            },
            "oneOf": [
              {
                "required": [
                  "media"
                ]
              },
              {
                "required": [
                  "playOptions"
                ]
              }
            ]
          },
          "isOriginal": {
            "type": "boolean"
          }
        },
        "if": {
          "properties": {
            "type": {
              "const": "externalIdOnly"
            }
          },
          "required": [
            "type"
          ]
        },
        "then": {
          "required": [
            "id",
            "type",
            "externalIdSource"
          ]
        },
        "else": {
          "if": {
            "properties": {
              "type": {
                "const": "season"
              }
            },
            "required": [
              "type"
            ]
          },
          "then": {
            "required": [
              "type",
              "seasonInfo"
            ]
          },
          "else": {
            "required": [
              "id",
              "titles",
              "type"
            ]
          }
        }
      }
    }
  },
  "required": [
    "version",
    "assets"
  ],
  "definitions": {
    "image": {
      "type": "object",
      "properties": {
        "type": {
          "$ref": "#/definitions/image_type"
        },
        "url": {
          "type": "string",
          "pattern": "^http(s)?://.+$"
        },
        "languages": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/language_type"
          }
        }
      },
      "required": [
        "type",
        "url"
      ]
    },
    "short_description": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "maxLength": 200
        },
        "languages": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/language_type"
          }
        }
      },
      "required": [
        "value"
      ]
    },
    "long_description": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "maxLength": 500
        },
        "languages": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/language_type"
          }
        }
      },
      "required": [
        "value"
      ]
    },
    "title": {
      "type": "object",
      "properties": {
        "value": {
          "type": "string",
          "maxLength": 200
        },
        "languages": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/language_type"
          }
        }
      },
      "required": [
        "value"
      ]
    },
    "advisory_rating": {
      "type": "object",
      "properties": {
        "source": {
          "$ref": "#/definitions/advisory_ratings_source_type"
        },
        "value": {
          "type": "string"
        },
        "descriptors": {
          "type": "array"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "source": {
                "const": "ACB"
              }
            }
          },
          "then": {
            "properties": {
              "value": {
                "$ref": "#/definitions/ACB_values"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "source": {
                "const": "BBFC"
              }
            }
          },
          "then": {
            "properties": {
              "value": {
                "$ref": "#/definitions/BBFC_values"
              },
              "descriptors": {
                "items": {
                  "$ref": "#/definitions/BBFC_descriptors"
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "source": {
                "const": "CLASSIND"
              }
            }
          },
          "then": {
            "properties": {
              "value": {
                "$ref": "#/definitions/CLASSIND_values"
              },
              "descriptors": {
                "items": {
                  "$ref": "#/definitions/CLASSIND_descriptors"
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "source": {
                "const": "CHVRS"
              }
            }
          },
          "then": {
            "properties": {
              "value": {
                "$ref": "#/definitions/CHVRS_values"
              },
              "descriptors": {
                "items": {
                  "$ref": "#/definitions/CHVRS_descriptors"
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "source": {
                "const": "CPR"
              }
            }
          },
          "then": {
            "properties": {
              "value": {
                "$ref": "#/definitions/CPR_values"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "source": {
                "const": "FSF"
              }
            }
          },
          "then": {
            "properties": {
              "value": {
                "$ref": "#/definitions/FSF_values"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "source": {
                "const": "FSK"
              }
            }
          },
          "then": {
            "properties": {
              "value": {
                "$ref": "#/definitions/FSK_values"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "source": {
                "const": "MPAA"
              }
            }
          },
          "then": {
            "properties": {
              "value": {
                "$ref": "#/definitions/MPAA_values"
              },
              "descriptors": {
                "items": {
                  "$ref": "#/definitions/MPAA_descriptors"
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "source": {
                "const": "RTC"
              }
            }
          },
          "then": {
            "properties": {
              "value": {
                "$ref": "#/definitions/RTC_values"
              },
              "descriptors": {
                "items": {
                  "$ref": "#/definitions/RTC_descriptors"
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "source": {
                "const": "USA_PR"
              }
            }
          },
          "then": {
            "properties": {
              "value": {
                "$ref": "#/definitions/USA_PR_values"
              },
              "descriptors": {
                "items": {
                  "$ref": "#/definitions/USA_PR_descriptors"
                }
              }
            }
          }
        }
      ],
      "required": [
        "source",
        "value"
      ]
    },
    "asset_type": {
      "type": "string",
      "enum": [
        "movie",
        "tvSpecial",
        "series",
        "season",
        "episode",
        "shortForm",
        "externalIdOnly"
      ]
    },
    "external_id_source_type": {
      "type": "string",
      "enum": [
        "tms",
        "ref",
        "gsd",
        "partner_title_id",
        "partner_asset_id",
        "gracenote_station_id"
      ]
    },
    "externalIdRelationTypes": {
      "type": "string",
      "enum": [
        "parent",
        "child",
        "sibling"
      ]
    },
    "image_type": {
      "type": "string",
      "enum": [
        "main",
        "background",
        "keyart",
        "logo",
        "dark_logo",
        "hud_logo"
      ]
    },
    "genre_type": {
      "type": "string",
      "enum": [
        "action",
        "action sports",
        "adventure",
        "aerobics",
        "agriculture",
        "animals",
        "animated",
        "anime",
        "anthology",
        "archery",
        "arm wrestling",
        "art",
        "arts/crafts",
        "artistic gymnastics",
        "artistic swimming",
        "athletics",
        "auction",
        "auto",
        "auto racing",
        "aviation",
        "awards",
        "badminton",
        "ballet",
        "baseball",
        "basketball",
        "3x3 basketball",
        "beach soccer",
        "beach volleyball",
        "biathlon",
        "bicycle",
        "bicycle racing",
        "billiards",
        "biography",
        "blackjack",
        "bmx racing",
        "boat",
        "boat racing",
        "bobsled",
        "bodybuilding",
        "bowling",
        "boxing",
        "bullfighting",
        "bus./financial",
        "canoe",
        "card games",
        "ceremony",
        "cheerleading",
        "children",
        "children-music",
        "children-special",
        "children-talk",
        "collectibles",
        "comedy",
        "comedy drama",
        "community",
        "computers",
        "canoe/kayak",
        "consumer",
        "cooking",
        "cricket",
        "crime",
        "crime drama",
        "curling",
        "cycling",
        "dance",
        "dark comedy",
        "darts",
        "debate",
        "diving",
        "docudrama",
        "documentary",
        "dog racing",
        "dog show",
        "dog sled",
        "drag racing",
        "drama",
        "educational",
        "entertainment",
        "environment",
        "equestrian",
        "erotic",
        "event",
        "exercise",
        "fantasy",
        "faith",
        "fashion",
        "fencing",
        "field hockey",
        "figure skating",
        "fishing",
        "football",
        "food",
        "fundraiser",
        "gaelic football",
        "game show",
        "gaming",
        "gay/lesbian",
        "golf",
        "gymnastics",
        "handball",
        "health",
        "historical drama",
        "history",
        "hockey",
        "holiday",
        "holiday music",
        "holiday music special",
        "holiday special",
        "holiday-children",
        "holiday-children special",
        "home improvement",
        "horror",
        "horse",
        "house/garden",
        "how-to",
        "hunting",
        "hurling",
        "hydroplane racing",
        "indoor soccer",
        "interview",
        "intl soccer",
        "judo",
        "karate",
        "kayaking",
        "lacrosse",
        "law",
        "live",
        "luge",
        "martial arts",
        "medical",
        "military",
        "miniseries",
        "mixed martial arts",
        "modern pentathlon",
        "motorcycle",
        "motorcycle racing",
        "motorsports",
        "mountain biking",
        "music",
        "music special",
        "music talk",
        "musical",
        "musical comedy",
        "mystery",
        "nature",
        "news",
        "newsmagazine",
        "olympics",
        "opera",
        "outdoors",
        "parade",
        "paranormal",
        "parenting",
        "performing arts",
        "playoff sports",
        "poker",
        "politics",
        "polo",
        "pool",
        "pro wrestling",
        "public affairs",
        "racquet",
        "reality",
        "religious",
        "ringuette",
        "road cycling",
        "rodeo",
        "roller derby",
        "romance",
        "romantic comedy",
        "rowing",
        "rugby",
        "running",
        "rhythmic gymnastics",
        "sailing",
        "science",
        "science fiction",
        "self improvement",
        "shooting",
        "shopping",
        "sitcom",
        "skateboarding",
        "skating",
        "skeleton",
        "skiing",
        "snooker",
        "snowboarding",
        "snowmobile",
        "soap",
        "soap special",
        "soap talk",
        "soccer",
        "softball",
        "special",
        "speed skating",
        "sport climbing",
        "sports",
        "sports talk",
        "squash",
        "standup",
        "sumo wrestling",
        "surfing",
        "suspense",
        "swimming",
        "table tennis",
        "taekwondo",
        "talk",
        "technology",
        "tennis",
        "theater",
        "thriller",
        "track/field",
        "track cycling",
        "travel",
        "trampoline",
        "triathlon",
        "variety",
        "volleyball",
        "war",
        "water polo",
        "water skiing",
        "watersports",
        "weather",
        "weightlifting",
        "western",
        "wrestling",
        "yacht racing"
      ]
    },
    "advisory_ratings_source_type": {
      "type": "string",
      "enum": [
        "ACB",
        "BBFC",
        "CLASSIND",
        "CHVRS",
        "CPR",
        "FSF",
        "FSK",
        "MPAA",
        "RTC",
        "USA_PR"
      ]
    },
    "language_type": {
      "type": "string",
      "enum": [
        "af",
        "am",
        "ar",
        "ar-dz",
        "ar-bh",
        "ar-eg",
        "ar-iq",
        "ar-jo",
        "ar-kw",
        "ar-lb",
        "ar-ly",
        "ar-ma",
        "ar-om",
        "ar-qa",
        "ar-sa",
        "ar-sy",
        "ar-tn",
        "ar-ae",
        "ar-ye",
        "as",
        "az",
        "be",
        "bg",
        "bh",
        "bn",
        "bo",
        "bs",
        "ca",
        "cs",
        "cy",
        "da",
        "de",
        "de-at",
        "de-de",
        "de-li",
        "de-lu",
        "de-ch",
        "dv",
        "dz",
        "el",
        "en",
        "en-at",
        "en-au",
        "en-bz",
        "en-ca",
        "en-ie",
        "en-jm",
        "en-nz",
        "en-za",
        "en-tt",
        "en-gb",
        "en-us",
        "es",
        "es-ar",
        "es-bo",
        "es-cl",
        "es-co",
        "es-cr",
        "es-do",
        "es-ec",
        "es-es",
        "es-sv",
        "es-gt",
        "es-hn",
        "es-mx",
        "es-ni",
        "es-pa",
        "es-py",
        "es-pe",
        "es-pr",
        "es-us",
        "es-uy",
        "es-ve",
        "eu",
        "et",
        "fa",
        "ff",
        "fi",
        "fo",
        "fr",
        "fr-be",
        "fr-ca",
        "fr-lu",
        "fr-ch",
        "fy",
        "ga",
        "gd",
        "gl",
        "gn",
        "gu",
        "ha",
        "he",
        "hi",
        "hr",
        "ht",
        "hu",
        "hy",
        "id",
        "ig",
        "ii",
        "ik",
        "is",
        "it",
        "it-ch",
        "iu",
        "ja",
        "ka",
        "kk",
        "km",
        "kn",
        "ko",
        "kr",
        "ks",
        "ku",
        "ky",
        "la",
        "lo",
        "lt",
        "lv",
        "mg",
        "mk",
        "ml",
        "mn",
        "mr",
        "ms",
        "mt",
        "my",
        "nd",
        "ne",
        "nl",
        "nl-be",
        "no",
        "om",
        "or",
        "pa",
        "pl",
        "ps",
        "pt",
        "pt-br",
        "qu",
        "ro",
        "ro-md",
        "rm",
        "rn",
        "ru",
        "ru-md",
        "rw",
        "sa",
        "sd",
        "se",
        "si",
        "sk",
        "sl",
        "sn",
        "so",
        "sq",
        "sr",
        "st",
        "sv",
        "sv-fi",
        "sw",
        "ta",
        "te",
        "tg",
        "th",
        "ti",
        "tk",
        "tn",
        "tr",
        "ts",
        "tt",
        "ty",
        "uk",
        "ur",
        "uz",
        "ve",
        "vi",
        "xh",
        "yi",
        "yo",
        "zh",
        "zh-hk",
        "zh-cn",
        "zh-sg",
        "zh-tw",
        "zu"
      ]
    },
    "country_type": {
      "type": "string",
      "enum": [
        "ar",
        "at",
        "au",
        "bo",
        "br",
        "ca",
        "cl",
        "co",
        "cr",
        "de",
        "ec",
        "es",
        "fr",
        "gb",
        "gt",
        "hn",
        "ie",
        "mx",
        "ni",
        "pa",
        "pe",
        "sv",
        "us"
      ]
    },
    "ACB_values": {
      "type": "string",
      "enum": [
        "NR",
        "E",
        "G",
        "PG",
        "M",
        "MA 15+",
        "R 18+",
        "X 18+",
        "AV 15+",
        "C",
        "NC",
        "RC",
        "P"
      ]
    },
    "BBFC_descriptors": {
      "type": "string",
      "description": "Descriptors for BBFC ratings",
      "enum": [
        "theme",
        "behaviour",
        "horror",
        "nudity",
        "discrimination",
        "language",
        "violence",
        "drugs",
        "sex"
      ]
    },
    "BBFC_values": {
      "type": "string",
      "enum": [
        "NR",
        "U",
        "PG",
        "12A",
        "12-A",
        "12",
        "15",
        "18",
        "R18",
        "R-18"
      ]
    },
    "CHVRS_descriptors": {
      "type": "string",
      "description": "Descriptors for CHVRS ratings",
      "enum": [
        "not recommended for young children",
        "not recommended for children",
        "frightening scenes",
        "mature theme",
        "coarse language",
        "crude content",
        "nudity",
        "sexual content",
        "violence",
        "disturbing content",
        "substance abuse",
        "gory scenes",
        "explicit sexual content",
        "brutal violence",
        "sexual violence",
        "language may offend"
      ]
    },
    "CHVRS_values": {
      "type": "string",
      "enum": [
        "NR",
        "G",
        "PG",
        "14A",
        "14-A",
        "18A",
        "18-A",
        "R",
        "E"
      ]
    },
    "CLASSIND_descriptors": {
      "type": "string",
      "description": "Descriptors for CLASSIND ratings",
      "enum": [
        "viol\u00eancia",
        "viol\u00eancia extrema",
        "conte\u00fado sexual",
        "nudez",
        "sexo",
        "sexo expl\u00edcito",
        "drogas",
        "drogas l\u00edcitas",
        "drogas il\u00edcitas",
        "linguagem impr\u00f3pria",
        "atos criminosos",
        "onte\u00fado impactante"
      ]
    },
    "CLASSIND_values": {
      "type": "string",
      "enum": [
        "NR",
        "L",
        "10",
        "12",
        "14",
        "16",
        "18"
      ]
    },
    "CPR_values": {
      "type": "string",
      "enum": [
        "NR",
        "14+",
        "18+",
        "C",
        "C8",
        "C-8",
        "G",
        "PG",
        "E"
      ]
    },
    "FSF_values": {
      "type": "string",
      "enum": [
        "NR",
        "0",
        "6",
        "12",
        "16",
        "18"
      ]
    },
    "FSK_values": {
      "type": "string",
      "enum": [
        "NR",
        "0",
        "6",
        "12",
        "16",
        "18"
      ]
    },
    "MPAA_descriptors": {
      "type": "string",
      "description": "Descriptors for MPAA ratings",
      "enum": [
        "AC",
        "AL",
        "GL",
        "MV",
        "V",
        "GV",
        "BN",
        "N",
        "SSC",
        "RP"
      ]
    },
    "MPAA_values": {
      "type": "string",
      "enum": [
        "NR",
        "G",
        "PG",
        "PG13",
        "PG-13",
        "R",
        "NC-17",
        "NC17",
        "UR"
      ]
    },
    "RTC_descriptors": {
      "type": "string",
      "description": "Descriptors for RTC ratings",
      "enum": [
        "violence",
        "sex",
        "language",
        "drugs"
      ]
    },
    "RTC_values": {
      "type": "string",
      "enum": [
        "NR",
        "AA",
        "A",
        "B",
        "B-15",
        "B15",
        "C",
        "D"
      ]
    },
    "USA_PR_descriptors": {
      "type": "string",
      "description": "Descriptors used for USA_PR ratings",
      "enum": [
        "D",
        "L",
        "S",
        "V",
        "FV"
      ]
    },
    "USA_PR_values": {
      "type": "string",
      "enum": [
        "NR",
        "TV-Y",
        "TVY",
        "TV-Y7",
        "TVY7",
        "TV-G",
        "TVG",
        "TV-PG",
        "TVPG",
        "TV-14",
        "TV14",
        "TV-MA",
        "TVMA"
      ]
    },
    "media": {
      "type": "object",
      "properties": {
        "originalProductionLanguage": {
          "$ref": "#/definitions/language_type"
        },
        "secondaryAudioLanguages": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/language_type"
          }
        },
        "audioTracks": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "label": {
                "type": "string"
              },
              "type": {
                "enum": [
                  "original",
                  "audio description",
                  "other"
                ]
              },
              "language": {
                "$ref": "#/definitions/language_type"
              }
            },
            "required": [
              "language"
            ]
          }
        },
        "audioFormats": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/audio_format_type"
          }
        },
        "videos": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string"
              },
              "quality": {
                "$ref": "#/definitions/video_type"
              },
              "videoType": {
                "$ref": "#/definitions/video_quality_type"
              },
              "bitRate": {
                "description": "must be greater than or equal to 0",
                "type": "integer"
              },
              "drmAuthentication": {
                "type": "object",
                "properties": {
                  "drmContentProvider": {
                    "type": "string"
                  }
                }
              }
            },
            "required": [
              "url",
              "quality",
              "videoType"
            ]
          }
        },
        "captions": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string"
              },
              "captionType": {
                "enum": [
                  "closed_caption",
                  "subtitle"
                ]
              },
              "language": {
                "$ref": "#/definitions/language_type"
              }
            },
            "required": [
              "url",
              "captionType",
              "language"
            ]
          }
        },
        "trickPlayFiles": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string"
              },
              "quality": {
                "$ref": "#/definitions/video_quality_type"
              }
            },
            "required": [
              "url",
              "quality"
            ]
          }
        },
        "creditCuePoints": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string"
              },
              "creditType": {
                "enum": [
                  "intro",
                  "end",
                  "recap",
                  "behindthescenes"
                ]
              },
              "start": {
                "type": "number"
              },
              "end": {
                "type": "number"
              }
            },
            "required": [
              "creditType"
            ]
          }
        },
        "dateAddedTimeStamp": {
          "duration": "must be before now",
          "type": "number"
        },
        "adBreaks": {
          "type": "array",
          "items": {
            "description": "offset from start, must be less than program duration",
            "type": "number"
          }
        }
      },
      "required": [
        "videos"
      ]
    },
    "play_option": {
      "type": "object",
      "properties": {
        "license": {
          "$ref": "#/definitions/license_type"
        },
        "price": {
          "type": "number"
        },
        "quality": {
          "$ref": "#/definitions/video_quality_type"
        },
        "audioFormats": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/audio_format_type"
          }
        },
        "currency": {
          "type": "string"
        },
        "playId": {
          "type": "string"
        },
        "availabilityStartTimeStamp": {
          "description": "millis since epoch",
          "type": "number"
        },
        "availabilityEndTimeStamp": {
          "description": "millis since epoch",
          "type": "number"
        },
        "availabilityStartTime": {
          "description": "ISO-8601",
          "type": "string"
        },
        "availabilityEndTime": {
          "description": "ISO-8601",
          "type": "string"
        },
        "discreteLiveEvent": {
          "$ref": "#/definitions/live_event"
        },
        "availabilityInfo": {
          "$ref": "#/definitions/availability_info"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "license": {
                "enum": [
                  "rental",
                  "purchase"
                ]
              }
            }
          },
          "then": {
            "required": [
              "price"
            ]
          }
        },
        {
          "if": {
            "properties": {
              "license": {
                "enum": [
                  "free",
                  "subscription"
                ]
              }
            }
          },
          "then": {
            "not": {
              "required": [
                "price"
              ]
            }
          }
        }
      ],
      "required": [
        "license",
        "quality",
        "playId"
      ]
    },
    "license_type": {
      "type": "string",
      "enum": [
        "free",
        "subscription",
        "rental",
        "purchase"
      ]
    },
    "video_type": {
      "type": "string",
      "enum": [
        "hls",
        "smooth",
        "dash",
        "mp4",
        "mov",
        "m4v"
      ]
    },
    "video_quality_type": {
      "type": "string",
      "enum": [
        "sd",
        "hd",
        "hd+",
        "uhd",
        "fhd"
      ]
    },
    "audio_format_type": {
      "type": "string",
      "enum": [
        "mono",
        "stereo",
        "dolby digital",
        "dolby atmos",
        "dolby digital plus"
      ]
    },
    "linear_event": {
      "type": "object",
      "properties": {
        "stationId": {
          "type": "string"
        },
        "referenceId": {
          "type": "string"
        },
        "durationInSeconds": {
          "type": "integer"
        },
        "isLive": {
          "type": "boolean"
        },
        "date": {
          "type": "string"
        },
        "times": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "attributes": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "title": {
          "type": "string"
        },
        "externalId": {
          "$ref": "#/definitions/ext

# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/roku/refs/heads/main/json-structure/roku-search-feed-structure.json