jo3t / app /types /GitLab.ts
samifalouti1
Fresh start without binaries
55d48a7
// GitLab API Response Types
export interface GitLabUserResponse {
id: number;
username: string;
name: string;
avatar_url: string;
web_url: string;
created_at: string;
bio: string;
public_repos: number;
followers: number;
following: number;
}
export interface GitLabProjectInfo {
id: number;
name: string;
path_with_namespace: string;
description: string;
http_url_to_repo: string;
star_count: number;
forks_count: number;
updated_at: string;
default_branch: string;
visibility: string;
}
export interface GitLabGroupInfo {
id: number;
name: string;
web_url: string;
avatar_url: string;
}
export interface GitLabEvent {
id: number;
action_name: string;
project_id: number;
project: {
name: string;
path_with_namespace: string;
};
created_at: string;
}
export interface GitLabStats {
projects: GitLabProjectInfo[];
recentActivity: GitLabEvent[];
totalSnippets: number;
publicProjects: number;
privateProjects: number;
stars: number;
forks: number;
followers: number;
snippets: number;
groups: GitLabGroupInfo[];
lastUpdated: string;
}
export interface GitLabConnection {
user: GitLabUserResponse | null;
token: string;
tokenType: 'personal-access-token' | 'oauth';
stats?: GitLabStats;
rateLimit?: {
limit: number;
remaining: number;
reset: number;
};
gitlabUrl?: string;
}
export interface GitLabProjectResponse {
id: number;
name: string;
path_with_namespace: string;
description: string;
web_url: string;
http_url_to_repo: string;
star_count: number;
forks_count: number;
updated_at: string;
default_branch: string;
visibility: string;
owner: {
id: number;
username: string;
name: string;
};
}
export interface GitLabCommitAction {
action: 'create' | 'update' | 'delete';
file_path: string;
content?: string;
encoding?: 'text' | 'base64';
}
export interface GitLabCommitRequest {
branch: string;
commit_message: string;
actions: GitLabCommitAction[];
}