syntax = "proto2";

import "steammessages_base.proto";
import "steammessages_unified_base.steamclient.proto";

option cc_generic_services = true;

message CVideo_ClientGetVideoURL_Request {
  optional uint64 video_id = 1;
  optional uint32 client_cellid = 2;
}

message CVideo_ClientGetVideoURL_Response {
  optional uint64 video_id = 1;
  optional string video_url = 2;
}

message VideoBookmark {
  optional uint32 app_id = 1;
  optional uint32 playback_position_in_seconds = 2;
  optional uint64 video_track_id = 3;
  optional uint64 audio_track_id = 4;
  optional uint64 timedtext_track_id = 5;
  optional uint32 last_modified = 6;
  optional bool hide_from_watch_history = 7 [default = false];
  optional bool hide_from_library = 8 [default = false];
}

message CVideo_SetVideoBookmark_Notification {
  repeated VideoBookmark bookmarks = 1;
}

message CVideo_GetVideoBookmarks_Request {
  repeated uint32 appids = 1;
  optional uint32 updated_since = 2;
}

message CVideo_GetVideoBookmarks_Response {
  repeated VideoBookmark bookmarks = 1;
}

message CVideo_UnlockedH264_Notification {
  optional bytes encryption_key = 1;
}

message CFovasVideo_ClientGetOPFSettings_Request {
  optional uint32 app_id = 1;
  optional uint32 client_cellid = 2;
}

message CFovasVideo_ClientGetOPFSettings_Response {
  optional uint32 app_id = 1;
  optional string opf_settings = 2;
}

service Video {
  rpc ClientGetVideoURL (.CVideo_ClientGetVideoURL_Request) returns (.CVideo_ClientGetVideoURL_Response) {
  }
  rpc SetVideoBookmark (.CVideo_SetVideoBookmark_Notification) returns (.NoResponse) {
  }
  rpc GetVideoBookmarks (.CVideo_GetVideoBookmarks_Request) returns (.CVideo_GetVideoBookmarks_Response) {
  }
}

service VideoClient {
  rpc NotifyUnlockedH264 (.CVideo_UnlockedH264_Notification) returns (.NoResponse);
}

service FovasVideo {
  rpc ClientGetOPFSettings (.CFovasVideo_ClientGetOPFSettings_Request) returns (.CFovasVideo_ClientGetOPFSettings_Response) {
  }
}

