mirror of
https://github.com/aleksilassila/reiverr.git
synced 2026-04-26 10:45:12 +02:00
172 lines
4.1 KiB
Protocol Buffer
172 lines
4.1 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package aleksilassila.reiverr.plugin.v1;
|
|
|
|
// Plugin Service - handles plugin metadata and configuration
|
|
service PluginService {
|
|
// Get plugin metadata and version
|
|
rpc GetInfo(Empty) returns (PluginInfo);
|
|
}
|
|
|
|
// Media Source Provider Service - handles user-specific requests
|
|
service PluginMediaService {
|
|
// Get a list of available streamables
|
|
rpc GetStreamables(StreamablesRequest) returns (StreamablesResponse);
|
|
|
|
// Get a link to a streamable - on the plugin side, this can create a transcoding session for example
|
|
rpc GetStream(StreamRequest) returns (StreamResponse);
|
|
}
|
|
|
|
// Catalogue Provider Service - handles library catalogues
|
|
service PluginCatalogueService {
|
|
// Get what catalogues are available
|
|
rpc GetCatalogues(CataloguesRequest) returns (CataloguesResponse);
|
|
|
|
// Get everything in a catalogue - e.g. all movies or all series
|
|
rpc GetCatalogue(CatalogueRequest) returns (CatalogueResponse);
|
|
|
|
// // Get missing items in catalogue
|
|
// rpc GetMissingInCatalogue(MissingCatalogueRequest) returns (MissingCatalogueResponse);
|
|
}
|
|
|
|
// Management Profile Service - NEW for monitoring/management profiles
|
|
// service ManagementProfileService {
|
|
|
|
// }
|
|
|
|
// Common Messages
|
|
|
|
message Empty {}
|
|
|
|
message PluginInfo {
|
|
string name = 1;
|
|
string api_version = 2;
|
|
string description = 3;
|
|
bool streaming_supported = 4;
|
|
bool catalogues_supported = 5;
|
|
}
|
|
|
|
message StreamablesRequest {
|
|
string title = 1;
|
|
optional int32 season = 2;
|
|
optional int32 episode = 3;
|
|
optional double runtime_minutes = 4;
|
|
optional string tmdb_id = 5;
|
|
optional string imdb_id = 6;
|
|
optional string tvdb_id = 7;
|
|
// optional string media_type = 6; // "movie" or "series"
|
|
}
|
|
|
|
message StreamablesResponse {
|
|
repeated StreamableItem items = 1;
|
|
}
|
|
|
|
message StreamableItem {
|
|
string id = 1;
|
|
string label = 2;
|
|
optional string quality = 3;
|
|
optional string source = 8;
|
|
optional string language = 4;
|
|
optional string release_group = 5;
|
|
optional string size = 6;
|
|
optional string bitrate = 7;
|
|
|
|
// string type = 3; // "movie" or "series"
|
|
// string tmdb_id = 4;
|
|
// string media_type = 5; // "movie" or "series"
|
|
}
|
|
|
|
message StreamRequest {
|
|
string id = 1;
|
|
}
|
|
|
|
message StreamResponse {
|
|
repeated VideoTrack videoTracks = 1;
|
|
repeated SubtitleTrack subtitleTracks = 2;
|
|
}
|
|
|
|
message VideoTrack {
|
|
string label = 1;
|
|
string url = 2;
|
|
string type = 3; // "direct", "hls", "dash"
|
|
optional string lang = 5;
|
|
optional bool proxy = 4;
|
|
|
|
// optional string quality = 4;
|
|
// optional string codec = 5;
|
|
// optional int32 bitrate = 6;
|
|
}
|
|
|
|
message SubtitleTrack {
|
|
string label = 1;
|
|
string url = 2;
|
|
string lang = 3;
|
|
string kind = 4; // "subtitles", "captions", "descriptions"
|
|
optional bool proxy = 5;
|
|
}
|
|
|
|
// Catalogue Messages
|
|
|
|
message CataloguesRequest {}
|
|
|
|
message CataloguesResponse {
|
|
repeated CatalogueInfo catalogues = 1;
|
|
}
|
|
|
|
message CatalogueInfo {
|
|
string id = 1;
|
|
string label = 2;
|
|
repeated OrderOption order_options = 3;
|
|
}
|
|
|
|
message OrderOption {
|
|
string label = 1;
|
|
string value = 2;
|
|
optional string direction = 3; // Define for direction grouping
|
|
}
|
|
|
|
message CatalogueRequest {
|
|
string catalogue_id = 1;
|
|
optional string order = 2; // Referes to OrderOption.value
|
|
optional PaginationParams pagination = 3;
|
|
// PaginationParams pagination = 2;
|
|
// optional string order = 3;
|
|
// optional string direction = 4;
|
|
}
|
|
|
|
message CatalogueResponse {
|
|
repeated CatalogueItem items = 1;
|
|
// int32 total = 2;
|
|
// int32 page = 3;
|
|
// int32 items_per_page = 4;
|
|
}
|
|
|
|
message CatalogueItem {
|
|
string id = 1;
|
|
string label = 2;
|
|
string media_type = 3; // "movie" or "series"
|
|
optional string tmdb_id = 4;
|
|
optional string poster_url = 5;
|
|
optional string backdrop_url = 6;
|
|
}
|
|
|
|
message PaginationParams {
|
|
int32 page = 1; // 1-based page number
|
|
int32 items_per_page = 2;
|
|
}
|
|
|
|
// message MissingCatalogueRequest {
|
|
// UserContext user_context = 1;
|
|
// PaginationParams pagination = 2;
|
|
// optional string order = 3;
|
|
// optional string direction = 4;
|
|
// map<string, string> my_list_items_json = 5;
|
|
// }
|
|
|
|
// message MissingCatalogueResponse {
|
|
// repeated string items_json = 1;
|
|
// int32 total = 2;
|
|
// int32 page = 3;
|
|
// int32 items_per_page = 4;
|
|
// }
|