| // BEX Combined FlatBuffer Schema β all types in one file to avoid namespace issues |
|
|
| namespace bex.wire; |
|
|
| // ββ Common types ββββββββββββββββββββββββββββββββββββββββββββββββββ |
|
|
| table Image { |
| url:string; |
| layout:string; |
| width:uint; |
| height:uint; |
| blurhash:string; |
| } |
|
|
| table ImageSet { |
| low:Image; |
| medium:Image; |
| high:Image; |
| backdrop:Image; |
| logo:Image; |
| } |
|
|
| table LinkedId { |
| source:string; |
| id:string; |
| } |
|
|
| table Attr { |
| key:string; |
| value:string; |
| } |
|
|
| enum MediaKind:byte { |
| Movie = 0, Series = 1, Anime = 2, Short = 3, Special = 4, |
| Documentary = 5, Music = 6, Podcast = 7, Book = 8, Live = 9, Unknown = 10 |
| } |
| |
| enum Status:byte { |
| Unknown = 0, Upcoming = 1, Ongoing = 2, Completed = 3, Cancelled = 4, Paused = 5 |
| } |
|
|
| enum StreamFormat:byte { |
| Hls = 0, Dash = 1, Progressive = 2, Unknown = 3 |
| } |
|
|
| // ββ Media types βββββββββββββββββββββββββββββββββββββββββββββββββββ |
|
|
| table MediaCard { |
| id:string; |
| title:string; |
| kind:MediaKind; |
| images:ImageSet; |
| original_title:string; |
| tagline:string; |
| year:string; |
| score:uint; |
| genres:[string]; |
| status:Status; |
| content_rating:string; |
| url:string; |
| ids:[LinkedId]; |
| extra:[Attr]; |
| } |
|
|
| table CategoryLink { |
| id:string; |
| title:string; |
| subtitle:string; |
| image:Image; |
| } |
|
|
| table HomeSection { |
| id:string; |
| title:string; |
| subtitle:string; |
| items:[MediaCard]; |
| next_page:string; |
| layout:string; |
| show_rank:bool; |
| categories:[CategoryLink]; |
| extra:[Attr]; |
| } |
|
|
| table PagedResult { |
| items:[MediaCard]; |
| categories:[CategoryLink]; |
| next_page:string; |
| } |
|
|
| table Episode { |
| id:string; |
| title:string; |
| number:double; |
| season:double; |
| images:ImageSet; |
| description:string; |
| released:string; |
| score:uint; |
| url:string; |
| tags:[string]; |
| extra:[Attr]; |
| } |
|
|
| table Season { |
| id:string; |
| title:string; |
| number:double; |
| year:uint; |
| episodes:[Episode]; |
| } |
|
|
| table Person { |
| id:string; |
| name:string; |
| image:ImageSet; |
| role:string; |
| url:string; |
| } |
|
|
| table MediaInfo { |
| id:string; |
| title:string; |
| kind:MediaKind; |
| images:ImageSet; |
| original_title:string; |
| description:string; |
| score:uint; |
| scored_by:ulong; |
| year:string; |
| release_date:string; |
| genres:[string]; |
| tags:[string]; |
| status:Status; |
| content_rating:string; |
| seasons:[Season]; |
| cast:[Person]; |
| crew:[Person]; |
| runtime_minutes:uint; |
| trailer_url:string; |
| ids:[LinkedId]; |
| studio:string; |
| country:string; |
| language:string; |
| url:string; |
| extra:[Attr]; |
| } |
|
|
| // ββ Stream types ββββββββββββββββββββββββββββββββββββββββββββββββββ |
|
|
| table VideoResolution { |
| width:uint; |
| height:uint; |
| hdr:bool; |
| label:string; |
| } |
|
|
| table VideoTrack { |
| resolution:VideoResolution; |
| url:string; |
| mime_type:string; |
| bitrate:ulong; |
| codecs:string; |
| } |
|
|
| table SubtitleTrack { |
| label:string; |
| url:string; |
| language:string; |
| format:string; |
| } |
|
|
| table Server { |
| id:string; |
| label:string; |
| url:string; |
| priority:ubyte; |
| extra:[Attr]; |
| } |
|
|
| table StreamSource { |
| id:string; |
| label:string; |
| format:StreamFormat; |
| manifest_url:string; |
| videos:[VideoTrack]; |
| subtitles:[SubtitleTrack]; |
| headers:[Attr]; |
| extra:[Attr]; |
| } |
|
|
| // ββ Event payload types ββββββββββββββββββββββββββββββββββββββββββ |
|
|
| table HomeResult { |
| sections:[HomeSection]; |
| } |
|
|
| table CategoryResult { |
| result:PagedResult; |
| } |
|
|
| table SearchResult { |
| result:PagedResult; |
| } |
|
|
| table InfoResult { |
| info:MediaInfo; |
| } |
|
|
| table ServersResult { |
| servers:[Server]; |
| } |
|
|
| table StreamResult { |
| source:StreamSource; |
| } |
|
|
| table ErrorInfo { |
| code:string; |
| message:string; |
| plugin_id:string; |
| request_id:ulong; |
| } |
|
|
| root_type HomeResult; |
|
|