#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RegisterRequest {
#[prost(string, tag = "1")]
pub username: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub email: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub password: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub display_name: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LoginRequest {
#[prost(string, tag = "1")]
pub username_or_email: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub password: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AuthResponse {
#[prost(string, tag = "1")]
pub token: ::prost::alloc::string::String,
#[prost(message, optional, tag = "2")]
pub user: ::core::option::Option<UserProfile>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UserProfile {
#[prost(string, tag = "1")]
pub id: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub username: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub email: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub display_name: ::prost::alloc::string::String,
#[prost(string, tag = "5")]
pub avatar_url: ::prost::alloc::string::String,
#[prost(string, tag = "6")]
pub bio: ::prost::alloc::string::String,
#[prost(bool, tag = "7")]
pub is_admin: bool,
#[prost(int64, tag = "8")]
pub created_at: i64,
#[prost(int64, tag = "9")]
pub updated_at: i64,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateProfileRequest {
#[prost(string, optional, tag = "1")]
pub display_name: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub bio: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "3")]
pub avatar_url: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Repository {
#[prost(string, tag = "1")]
pub id: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub owner_id: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub owner_username: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub name: ::prost::alloc::string::String,
#[prost(string, tag = "5")]
pub full_name: ::prost::alloc::string::String,
#[prost(string, tag = "6")]
pub description: ::prost::alloc::string::String,
#[prost(bool, tag = "7")]
pub is_private: bool,
#[prost(string, tag = "8")]
pub default_branch: ::prost::alloc::string::String,
#[prost(int64, tag = "9")]
pub created_at: i64,
#[prost(int64, tag = "10")]
pub updated_at: i64,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateRepositoryRequest {
#[prost(string, tag = "1")]
pub name: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub description: ::prost::alloc::string::String,
#[prost(bool, tag = "3")]
pub is_private: bool,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GitTreeEntry {
#[prost(string, tag = "1")]
pub name: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub path: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub entry_type: ::prost::alloc::string::String,
#[prost(int64, tag = "4")]
pub size: i64,
#[prost(string, tag = "5")]
pub oid: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GitBlobContent {
#[prost(string, tag = "1")]
pub path: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub content: ::prost::alloc::string::String,
#[prost(int64, tag = "3")]
pub size: i64,
#[prost(string, tag = "4")]
pub encoding: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GitCommitInfo {
#[prost(string, tag = "1")]
pub oid: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub message: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub author_name: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub author_email: ::prost::alloc::string::String,
#[prost(int64, tag = "5")]
pub timestamp: i64,
#[prost(string, repeated, tag = "6")]
pub parent_oids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct BranchProtectionRule {
#[prost(string, tag = "1")]
pub id: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub repository_id: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub branch_pattern: ::prost::alloc::string::String,
#[prost(int32, tag = "4")]
pub require_approvals: i32,
#[prost(bool, tag = "5")]
pub require_ci_pass: bool,
#[prost(bool, tag = "6")]
pub prevent_force_push: bool,
#[prost(int64, tag = "7")]
pub created_at: i64,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateBranchProtectionRequest {
#[prost(string, tag = "1")]
pub branch_pattern: ::prost::alloc::string::String,
#[prost(int32, tag = "2")]
pub require_approvals: i32,
#[prost(bool, tag = "3")]
pub require_ci_pass: bool,
#[prost(bool, tag = "4")]
pub prevent_force_push: bool,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Label {
#[prost(string, tag = "1")]
pub id: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub name: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub color: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub description: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateLabelRequest {
#[prost(string, tag = "1")]
pub name: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub color: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub description: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Issue {
#[prost(string, tag = "1")]
pub id: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub repository_id: ::prost::alloc::string::String,
#[prost(int32, tag = "3")]
pub number: i32,
#[prost(string, tag = "4")]
pub title: ::prost::alloc::string::String,
#[prost(string, tag = "5")]
pub body: ::prost::alloc::string::String,
#[prost(string, tag = "6")]
pub state: ::prost::alloc::string::String,
#[prost(message, optional, tag = "7")]
pub author: ::core::option::Option<UserProfile>,
#[prost(message, optional, tag = "8")]
pub assignee: ::core::option::Option<UserProfile>,
#[prost(message, repeated, tag = "9")]
pub labels: ::prost::alloc::vec::Vec<Label>,
#[prost(int32, tag = "10")]
pub comment_count: i32,
#[prost(int64, tag = "11")]
pub created_at: i64,
#[prost(int64, tag = "12")]
pub updated_at: i64,
#[prost(int64, optional, tag = "13")]
pub closed_at: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateIssueRequest {
#[prost(string, tag = "1")]
pub title: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub body: ::prost::alloc::string::String,
#[prost(string, optional, tag = "3")]
pub assignee_id: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "4")]
pub label_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateIssueRequest {
#[prost(string, optional, tag = "1")]
pub title: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub body: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "3")]
pub state: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "4")]
pub assignee_id: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "5")]
pub label_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListIssuesRequest {
#[prost(string, optional, tag = "1")]
pub state: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub page: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub per_page: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListIssuesResponse {
#[prost(message, repeated, tag = "1")]
pub issues: ::prost::alloc::vec::Vec<Issue>,
#[prost(int32, tag = "2")]
pub total: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct IssueComment {
#[prost(string, tag = "1")]
pub id: ::prost::alloc::string::String,
#[prost(message, optional, tag = "2")]
pub author: ::core::option::Option<UserProfile>,
#[prost(string, tag = "3")]
pub body: ::prost::alloc::string::String,
#[prost(int64, tag = "4")]
pub created_at: i64,
#[prost(int64, tag = "5")]
pub updated_at: i64,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateCommentRequest {
#[prost(string, tag = "1")]
pub body: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListCommentsResponse {
#[prost(message, repeated, tag = "1")]
pub comments: ::prost::alloc::vec::Vec<IssueComment>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MergeRequest {
#[prost(string, tag = "1")]
pub id: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub repository_id: ::prost::alloc::string::String,
#[prost(int32, tag = "3")]
pub number: i32,
#[prost(string, tag = "4")]
pub title: ::prost::alloc::string::String,
#[prost(string, tag = "5")]
pub body: ::prost::alloc::string::String,
#[prost(string, tag = "6")]
pub source_branch: ::prost::alloc::string::String,
#[prost(string, tag = "7")]
pub target_branch: ::prost::alloc::string::String,
#[prost(string, tag = "8")]
pub state: ::prost::alloc::string::String,
#[prost(message, optional, tag = "9")]
pub author: ::core::option::Option<UserProfile>,
#[prost(message, repeated, tag = "10")]
pub reviewers: ::prost::alloc::vec::Vec<UserProfile>,
#[prost(string, tag = "11")]
pub ci_status: ::prost::alloc::string::String,
#[prost(message, repeated, tag = "12")]
pub labels: ::prost::alloc::vec::Vec<Label>,
#[prost(int32, tag = "13")]
pub approval_count: i32,
#[prost(int32, tag = "14")]
pub comment_count: i32,
#[prost(int64, tag = "15")]
pub created_at: i64,
#[prost(int64, tag = "16")]
pub updated_at: i64,
#[prost(int64, optional, tag = "17")]
pub merged_at: ::core::option::Option<i64>,
#[prost(message, optional, tag = "18")]
pub merged_by: ::core::option::Option<UserProfile>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateMergeRequestRequest {
#[prost(string, tag = "1")]
pub title: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub body: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub source_branch: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub target_branch: ::prost::alloc::string::String,
#[prost(string, repeated, tag = "5")]
pub reviewer_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "6")]
pub label_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateMergeRequestRequest {
#[prost(string, optional, tag = "1")]
pub title: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub body: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "3")]
pub state: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "4")]
pub reviewer_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
#[prost(string, repeated, tag = "5")]
pub label_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListMergeRequestsRequest {
#[prost(string, optional, tag = "1")]
pub state: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "2")]
pub page: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "3")]
pub per_page: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListMergeRequestsResponse {
#[prost(message, repeated, tag = "1")]
pub merge_requests: ::prost::alloc::vec::Vec<MergeRequest>,
#[prost(int32, tag = "2")]
pub total: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Review {
#[prost(string, tag = "1")]
pub id: ::prost::alloc::string::String,
#[prost(message, optional, tag = "2")]
pub reviewer: ::core::option::Option<UserProfile>,
#[prost(string, tag = "3")]
pub verdict: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub body: ::prost::alloc::string::String,
#[prost(int64, tag = "5")]
pub created_at: i64,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SubmitReviewRequest {
#[prost(string, tag = "1")]
pub verdict: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub body: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MergeMergeRequestRequest {
#[prost(string, tag = "1")]
pub strategy: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MrComment {
#[prost(string, tag = "1")]
pub id: ::prost::alloc::string::String,
#[prost(message, optional, tag = "2")]
pub author: ::core::option::Option<UserProfile>,
#[prost(string, tag = "3")]
pub body: ::prost::alloc::string::String,
#[prost(string, optional, tag = "4")]
pub file_path: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "5")]
pub line_number: ::core::option::Option<i32>,
#[prost(int64, tag = "6")]
pub created_at: i64,
#[prost(int64, tag = "7")]
pub updated_at: i64,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateMrCommentRequest {
#[prost(string, tag = "1")]
pub body: ::prost::alloc::string::String,
#[prost(string, optional, tag = "2")]
pub file_path: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "3")]
pub line_number: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Pipeline {
#[prost(string, tag = "1")]
pub id: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub repository_id: ::prost::alloc::string::String,
#[prost(string, optional, tag = "3")]
pub merge_request_id: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, tag = "4")]
pub branch: ::prost::alloc::string::String,
#[prost(string, tag = "5")]
pub commit_sha: ::prost::alloc::string::String,
#[prost(string, tag = "6")]
pub commit_message: ::prost::alloc::string::String,
#[prost(string, tag = "7")]
pub triggered_by: ::prost::alloc::string::String,
#[prost(string, tag = "8")]
pub status: ::prost::alloc::string::String,
#[prost(message, repeated, tag = "9")]
pub stages: ::prost::alloc::vec::Vec<PipelineStage>,
#[prost(int32, optional, tag = "10")]
pub duration_secs: ::core::option::Option<i32>,
#[prost(int64, tag = "11")]
pub created_at: i64,
#[prost(int64, optional, tag = "12")]
pub started_at: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "13")]
pub finished_at: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PipelineStage {
#[prost(string, tag = "1")]
pub id: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub name: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub status: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub log_output: ::prost::alloc::string::String,
#[prost(int32, tag = "5")]
pub sort_order: i32,
#[prost(int64, optional, tag = "6")]
pub started_at: ::core::option::Option<i64>,
#[prost(int64, optional, tag = "7")]
pub finished_at: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TriggerPipelineRequest {
#[prost(string, tag = "1")]
pub branch: ::prost::alloc::string::String,
#[prost(string, optional, tag = "2")]
pub merge_request_id: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListPipelinesRequest {
#[prost(string, optional, tag = "1")]
pub status: ::core::option::Option<::prost::alloc::string::String>,
#[prost(string, optional, tag = "2")]
pub branch: ::core::option::Option<::prost::alloc::string::String>,
#[prost(int32, optional, tag = "3")]
pub page: ::core::option::Option<i32>,
#[prost(int32, optional, tag = "4")]
pub per_page: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListPipelinesResponse {
#[prost(message, repeated, tag = "1")]
pub pipelines: ::prost::alloc::vec::Vec<Pipeline>,
#[prost(int32, tag = "2")]
pub total: i32,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RepositoryMember {
#[prost(string, tag = "1")]
pub id: ::prost::alloc::string::String,
#[prost(message, optional, tag = "2")]
pub user: ::core::option::Option<UserProfile>,
#[prost(string, tag = "3")]
pub role: ::prost::alloc::string::String,
#[prost(int64, tag = "4")]
pub joined_at: i64,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AddMemberRequest {
#[prost(string, tag = "1")]
pub user_id: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub role: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UpdateMemberRoleRequest {
#[prost(string, tag = "1")]
pub role: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListMembersResponse {
#[prost(message, repeated, tag = "1")]
pub members: ::prost::alloc::vec::Vec<RepositoryMember>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CollabJoinRequest {
#[prost(string, tag = "1")]
pub repository_id: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub file_path: ::prost::alloc::string::String,
#[prost(string, optional, tag = "3")]
pub token: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CollabJoinResponse {
#[prost(string, tag = "1")]
pub session_id: ::prost::alloc::string::String,
#[prost(bytes = "vec", tag = "2")]
pub initial_state: ::prost::alloc::vec::Vec<u8>,
#[prost(message, repeated, tag = "3")]
pub participants: ::prost::alloc::vec::Vec<CollabParticipant>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CollabParticipant {
#[prost(string, tag = "1")]
pub user_id: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub display_name: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub avatar_url: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CollabUpdate {
#[prost(string, tag = "1")]
pub session_id: ::prost::alloc::string::String,
#[prost(bytes = "vec", tag = "2")]
pub update: ::prost::alloc::vec::Vec<u8>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CollabAwareness {
#[prost(string, tag = "1")]
pub session_id: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub user_id: ::prost::alloc::string::String,
#[prost(bytes = "vec", tag = "3")]
pub awareness_state: ::prost::alloc::vec::Vec<u8>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CollabParticipantJoined {
#[prost(message, optional, tag = "1")]
pub participant: ::core::option::Option<CollabParticipant>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CollabParticipantLeft {
#[prost(string, tag = "1")]
pub user_id: ::prost::alloc::string::String,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CollabSessionInfo {
#[prost(string, tag = "1")]
pub session_id: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub repository_id: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub file_path: ::prost::alloc::string::String,
#[prost(message, repeated, tag = "4")]
pub participants: ::prost::alloc::vec::Vec<CollabParticipant>,
#[prost(int64, tag = "5")]
pub created_at: i64,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListCollabSessionsResponse {
#[prost(message, repeated, tag = "1")]
pub sessions: ::prost::alloc::vec::Vec<CollabSessionInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DashboardStats {
#[prost(int32, tag = "1")]
pub repo_count: i32,
#[prost(int32, tag = "2")]
pub open_issues: i32,
#[prost(int32, tag = "3")]
pub open_merge_requests: i32,
#[prost(float, tag = "4")]
pub pipeline_pass_rate: f32,
#[prost(message, repeated, tag = "5")]
pub recent_activities: ::prost::alloc::vec::Vec<RecentActivity>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RecentActivity {
#[prost(string, tag = "1")]
pub user: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub action: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub target: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub repo: ::prost::alloc::string::String,
#[prost(int64, tag = "5")]
pub timestamp: i64,
}