@gitbeaker/core
Version:
Core API implementation of the GitLab API
1,117 lines (1,106 loc) • 484 kB
text/typescript
import { BaseResource, BaseResourceOptions } from '@gitbeaker/requester-utils';
interface UserAgentDetailSchema extends Record<string, unknown> {
user_agent: string;
ip_address: string;
akismet_submitted: boolean;
}
type CamelizeString<T extends PropertyKey> = T extends string ? string extends T ? string : T extends `${infer F}_${infer R}` ? `${F}${Capitalize<CamelizeString<R>>}` : T : T;
type Camelize<T> = {
[K in keyof T as CamelizeString<K>]: Camelize<T[K]>;
};
type Simplify<T> = T extends infer S ? {
[K in keyof S]: S[K];
} : never;
type Never<T> = Simplify<{
[P in keyof T]?: never;
}>;
type SomeOf<T> = {
[K in keyof T]: Pick<Required<T>, K>;
}[keyof T];
type OneOf<T> = {
[K in keyof T]: Simplify<Pick<T, K> & Never<Omit<T, K>>>;
}[keyof T];
type OneOrNoneOf<T> = Never<T> | OneOf<T>;
type AllOrNone<T extends Record<string, any>> = T | Partial<Record<keyof T, never>>;
type MappedOmit<T, K extends keyof T> = {
[P in keyof T as P extends K ? never : P]: T[P];
};
/**
* A special class to mark path segments that should not be URL-encoded.
* Used for paths that already contain special characters like '/' that should be preserved.
* For example, in API paths like 'repository/commits', the slash should not be encoded to '%2F'.
*/
declare class RawPathSegment {
readonly value: string;
constructor(value: string);
toString(): string;
}
interface IsForm {
isForm?: boolean;
}
interface Sudo {
sudo?: string | number;
}
interface AsStream {
asStream?: boolean;
}
interface ShowExpanded<E extends boolean = false> {
showExpanded?: E;
}
interface AsAdmin<A extends boolean = false> {
asAdmin?: A;
}
type BaseRequestOptions<E extends boolean = false> = Sudo & ShowExpanded<E> & {
[Key in string]?: any;
};
type PaginationTypes = 'keyset' | 'offset';
interface KeysetPaginationRequestOptions {
orderBy: string;
sort: 'asc' | 'desc';
}
interface OffsetPaginationRequestOptions {
page?: number | string;
}
interface BasePaginationRequestOptions<P extends PaginationTypes | void> {
pagination?: P;
perPage?: number | string;
maxPages?: number;
}
type PaginationRequestSubOptions<P extends PaginationTypes | void> = P extends 'keyset' ? AllOrNone<KeysetPaginationRequestOptions> : P extends 'offset' ? OffsetPaginationRequestOptions : AllOrNone<KeysetPaginationRequestOptions> & OffsetPaginationRequestOptions;
type PaginationRequestOptions<P extends PaginationTypes | void = void> = BasePaginationRequestOptions<P> & PaginationRequestSubOptions<P>;
type CamelizedResponse<T, C> = C extends true ? Camelize<T> : T;
interface OffsetPagination {
total: number;
next: number | null;
current: number;
previous: number | null;
perPage: number;
totalPages: number;
}
interface KeysetPagination {
idAfter: number;
perPage: number;
orderBy: string;
sort: 'asc' | 'desc';
}
interface ExpandedResponse<T> {
data: T;
headers: Record<string, string>;
status: number;
}
type PaginatedResponse<T, P extends PaginationTypes = PaginationTypes> = {
[U in P]: {
paginationInfo: P extends 'keyset' ? KeysetPagination : OffsetPagination;
data: T;
};
}[P];
type GitlabAPIExpandedResponse<T, E extends boolean | void, P> = E extends true ? P extends PaginationTypes ? PaginatedResponse<T, P> : ExpandedResponse<T> : T;
type GitlabAPISingleResponse<T, C extends boolean | void, E extends boolean | void> = T extends Record<string, unknown> ? GitlabAPIExpandedResponse<CamelizedResponse<T, C>, E, undefined> : GitlabAPIExpandedResponse<T, E, undefined>;
type GitlabAPIMultiResponse<T, C extends boolean | void, E extends boolean | void, P extends PaginationTypes | void> = T extends Record<string, unknown> ? GitlabAPIExpandedResponse<CamelizedResponse<T, C>[], E, P> : GitlabAPIExpandedResponse<T[], E, P>;
type GitlabAPIResponse<T, C extends boolean | void, E extends boolean | void, P extends PaginationTypes | void> = T extends (infer R)[] ? GitlabAPIMultiResponse<R, C, E, P> : GitlabAPISingleResponse<T, C, E>;
interface ProjectRemoteMirrorSchema extends Record<string, unknown> {
enabled: boolean;
id: number;
last_error?: string;
last_successful_update_at: string;
last_update_at: string;
last_update_started_at: string;
only_protected_branches: boolean;
keep_divergent_refs: boolean;
update_status: string;
url: string;
}
declare class ProjectRemoteMirrors<C extends boolean = false> extends BaseResource<C> {
all<E extends boolean = false, P extends PaginationTypes = 'offset'>(projectId: string | number, options?: Sudo & ShowExpanded<E> & PaginationRequestOptions<P>): Promise<GitlabAPIResponse<ProjectRemoteMirrorSchema[], C, E, P>>;
createPullMirror<E extends boolean = false>(projectId: string | number, url: string, mirror: boolean, options?: {
onlyProtectedBranches?: boolean;
} & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<ProjectRemoteMirrorSchema, C, E, void>>;
createPushMirror<E extends boolean = false>(projectId: string | number, url: string, options?: {
enabled?: boolean;
onlyProtectedBranches?: boolean;
keepDivergentRefs?: boolean;
mirrorBranchRegex?: string;
} & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<ProjectRemoteMirrorSchema, C, E, void>>;
edit<E extends boolean = false>(projectId: string | number, mirrorId: number, options?: {
enabled?: boolean;
onlyProtectedBranches?: boolean;
keepDivergentRefs?: boolean;
mirrorBranchRegex?: string;
} & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<ProjectRemoteMirrorSchema, C, E, void>>;
remove<E extends boolean = false>(projectId: string | number, mirrorId: number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
show<E extends boolean = false>(projectId: string | number, mirrorId: number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<ProjectRemoteMirrorSchema, C, E, void>>;
sync<E extends boolean = false>(projectId: string | number, mirrorId: number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
}
type AllEventOptions = {
action?: 'created' | 'updated' | 'closed' | 'reopened' | 'pushed' | 'commented' | 'merged' | 'joined' | 'left' | 'destroyed' | 'expired';
targetType?: 'issue' | 'milestone' | 'merge_request' | 'note' | 'project' | 'snippet' | 'user';
before?: string;
after?: string;
scope?: string;
sort?: 'asc' | 'desc';
};
interface EventSchema extends Record<string, unknown> {
id: number;
title?: string;
project_id: number;
action_name: string;
target_id: number;
target_type: string;
author_id: number;
target_title: string;
created_at: string;
author: MappedOmit<SimpleUserSchema, 'created_at'>;
author_username: string;
}
declare class Events<C extends boolean = false> extends BaseResource<C> {
all<E extends boolean = false, P extends PaginationTypes = 'offset'>({ projectId, userId, ...options }?: OneOrNoneOf<{
projectId?: string | number;
userId: string | number;
}> & AllEventOptions & PaginationRequestOptions<P> & BaseRequestOptions<E>): Promise<GitlabAPIResponse<EventSchema[], C, E, P>>;
}
interface PersonalAccessTokenSchema extends Record<string, unknown> {
id: number;
name: string;
revoked: boolean;
created_at: string;
scopes?: string[];
user_id: number;
last_used_at: string;
active: boolean;
expires_at?: string;
token: string;
}
type PersonalAccessTokenScopes = 'api' | 'read_api' | 'read_user' | 'create_runner' | 'read_repository' | 'write_repository' | 'read_registry' | 'write_registry' | 'sudo' | 'admin_mode';
type AllPersonalAccessTokenOptions = {
userId?: string | number;
state?: 'active' | 'inactive';
search?: string;
revoked?: boolean;
lastUsedBefore?: string;
lastUsedAfter?: string;
createdBefore?: string;
createdAfter?: string;
};
declare class PersonalAccessTokens<C extends boolean = false> extends BaseResource<C> {
all<E extends boolean = false, P extends PaginationTypes = 'offset'>(options?: AllPersonalAccessTokenOptions & Sudo & ShowExpanded<E> & PaginationRequestOptions<P>): Promise<GitlabAPIResponse<PersonalAccessTokenSchema[], C, E, P>>;
create<E extends boolean = false>(userId: number, name: string, scopes: string[], options?: {
expiresAt?: string;
} & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<PersonalAccessTokenSchema, C, E, void>>;
remove<E extends boolean = false>({ tokenId, ...options }?: {
tokenId?: string | number;
} & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
rotate<E extends boolean = false>(tokenId: number | 'self', options?: {
expiresAt?: string;
} & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<PersonalAccessTokenSchema, C, E, void>>;
show<E extends boolean = false>({ tokenId, ...options }?: {
tokenId?: string | number;
} & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<PersonalAccessTokenSchema, C, E, void>>;
}
interface CustomAttributeSchema extends Record<string, unknown> {
key: string;
value: string;
}
declare class ResourceCustomAttributes<C extends boolean = false> extends BaseResource<C> {
constructor(resourceType: string, options: BaseResourceOptions<C>);
all<E extends boolean = false, P extends PaginationTypes = 'offset'>(resourceId: string | number, options?: PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<CustomAttributeSchema[], C, E, P>>;
remove<E extends boolean = false>(resourceId: string | number, customAttributeId: string, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
set<E extends boolean = false>(resourceId: string | number, customAttributeId: string, value: string, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<CustomAttributeSchema, C, E, void>>;
show<E extends boolean = false>(resourceId: string | number, customAttributeId: string, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<CustomAttributeSchema, C, E, void>>;
}
declare enum AccessLevel {
NO_ACCESS = 0,
MINIMAL_ACCESS = 5,
GUEST = 10,
REPORTER = 20,
DEVELOPER = 30,
MAINTAINER = 40,
OWNER = 50,
ADMIN = 60
}
interface SimpleUserSchema extends Record<string, unknown> {
id: number;
name: string;
username: string;
state: string;
avatar_url: string;
web_url: string;
created_at: string;
}
interface UserSchema extends SimpleUserSchema {
locked: boolean | null;
bio: string | null;
bot: boolean | null;
location: string | null;
public_email: string | null;
skype: string | null;
linkedin: string | null;
twitter: string | null;
discord: string | null;
website_url: string | null;
pronouns: string | null;
organization: string | null;
job_title: string | null;
work_information: string | null;
followers: number | null;
following: number | null;
local_time: string | null;
is_followed: boolean | null;
}
interface ExpandedUserSchema extends UserSchema {
is_admin: boolean | null;
bot: boolean;
last_sign_in_at: string;
confirmed_at: string;
last_activity_on: string;
email: string;
theme_id: number;
color_scheme_id: number;
projects_limit: number;
current_sign_in_at: string | null;
note: string | null;
identities: {
provider: string;
extern_uid: string;
saml_provider_id: number;
}[] | null;
can_create_group: boolean;
can_create_project: boolean;
two_factor_enabled: boolean;
external: boolean;
private_profile: string | null;
namespace_id: number | null;
created_by: string | null;
}
interface AdminUserSchema extends ExpandedUserSchema {
current_sign_in_ip: string;
last_sign_in_ip: string;
using_license_seat: boolean | null;
email_reset_offered_at: string | null;
shared_runners_minutes_limit?: number | null;
extra_shared_runners_minutes_limit?: number | null;
is_auditor?: boolean | null;
provisioned_by_group_id?: number | null;
plan?: string;
trial?: boolean;
}
interface UserActivitySchema extends Record<string, unknown> {
username: string;
last_activity_on: string;
last_activity_at: string;
}
interface UserStatusSchema extends Record<string, unknown> {
emoji: string;
availability: string;
message: string;
message_html: string;
clear_status_at: string;
}
interface UserPreferenceSchema extends Record<string, unknown> {
id: number;
user_id: number;
view_diffs_file_by_file: boolean;
show_whitespace_in_diffs: boolean;
}
interface UserCountSchema extends Record<string, unknown> {
merge_requests: number;
assigned_issues: number;
assigned_merge_requests: number;
review_requested_merge_requests: number;
todos: number;
}
interface UserAssociationCountSchema extends Record<string, unknown> {
groups_count: number;
projects_count: number;
issues_count: number;
merge_requests_count: number;
}
interface UserMembershipSchema extends Record<string, unknown> {
source_id: number;
source_name: string;
source_type: 'Project' | 'Namespace';
access_level: Exclude<AccessLevel, AccessLevel.ADMIN>;
}
interface UserRunnerSchema extends Record<string, unknown> {
id: number;
token: string;
token_expires_at: string | null;
}
type AllUsersOptions = {
orderBy?: 'name' | 'username' | 'created_at' | 'updated_at';
createdBy?: string;
sort?: 'asc' | 'desc';
twoFactor?: string;
withoutProjects?: boolean;
admins?: boolean;
samlProviderId?: number;
skipLdap?: boolean;
search?: string;
username?: string;
active?: boolean;
blocked?: boolean;
external?: boolean;
excludeInternal?: boolean;
excludeExternal?: boolean;
withoutProjectBots?: boolean;
createdBefore?: string;
createdAfter?: string;
withCustomAttributes?: boolean;
customAttributes?: Record<string, string>;
} & AllOrNone<{
provider: string;
externUid: string;
}>;
type CreateUserOptions = {
admin?: boolean;
auditor?: boolean;
avatar?: {
content: Blob;
filename?: string;
};
bio?: string;
canCreateGroup?: boolean;
colorSchemeId?: number;
commitEmail?: string;
email?: string;
externUid?: string;
external?: boolean;
extraSharedRunnersMinutesLimit?: number;
forceRandomPassword?: boolean;
groupIdForSaml?: number;
linkedin?: string;
location?: string;
name?: string;
note?: string;
organization?: string;
password?: string;
privateProfile?: string;
projectsLimit?: number;
pronouns?: string;
provider?: string;
publicEmail?: string;
resetPassword?: boolean;
sharedRunnersMinutesLimit?: number;
skipConfirmation?: boolean;
skype?: string;
themeId?: number;
twitter?: string;
discord?: string;
username?: string;
viewDiffsFileByFile?: boolean;
websiteUrl?: string;
};
type EditUserOptions = CreateUserOptions;
type CreateUserCIRunnerOptions = {
groupId?: number;
projectId?: number;
description?: string;
paused?: boolean;
locked?: boolean;
runUntagged?: boolean;
tagList?: string[];
accessLevel?: 'not_protected' | 'ref_protected';
maximumTimeout?: number;
maintenanceNote?: string;
};
type AllUserProjectsOptions = {
archived?: boolean;
idAfter?: number;
idBefore?: number;
membership?: boolean;
minAccessLevel?: Exclude<AccessLevel, AccessLevel.ADMIN>;
orderBy?: 'id' | 'name' | 'path' | 'created_at' | 'updated_at' | 'last_activity_at';
owned?: boolean;
search?: string;
simple?: boolean;
sort?: 'asc' | 'desc';
starred?: boolean;
statistics?: boolean;
visibility?: 'public' | 'internal' | 'private';
withCustomAttributes?: boolean;
withIssuesEnabled?: boolean;
withMergeRequestsEnabled?: boolean;
withProgrammingLanguage?: string;
updatedBefore?: string;
updatedAfter?: string;
};
declare class Users<C extends boolean = false> extends BaseResource<C> {
activate<E extends boolean = false>(userId: number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
all<A extends boolean = false, E extends boolean = false, P extends PaginationTypes = 'offset'>(options?: {
withCustomAttributes: true;
} & AsAdmin<A> & AllUsersOptions & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<((A extends false ? SimpleUserSchema : AdminUserSchema) & {
custom_attributes: CustomAttributeSchema[];
})[], C, E, P>>;
all<A extends boolean = false, E extends boolean = false, P extends PaginationTypes = 'offset'>(options?: AllUsersOptions & AsAdmin<A> & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<(A extends false ? SimpleUserSchema : AdminUserSchema)[], C, E, P>>;
allActivities<E extends boolean = false, P extends PaginationTypes = 'offset'>(options?: {
from?: string;
} & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<UserActivitySchema[], C, E, P>>;
allEvents<E extends boolean = false, P extends PaginationTypes = 'offset'>(userId: number, options?: AllEventOptions & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIExpandedResponse<CamelizedResponse<EventSchema, C>[], E, void>>;
allFollowers<E extends boolean = false, P extends PaginationTypes = 'offset'>(userId: number, options?: PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<SimpleUserSchema[], C, E, P>>;
allFollowing<E extends boolean = false, P extends PaginationTypes = 'offset'>(userId: number, options?: PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<SimpleUserSchema[], C, E, P>>;
allMemberships<E extends boolean = false, P extends PaginationTypes = 'offset'>(userId: number, options?: {
type?: 'Project' | 'Namespace';
} & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<UserMembershipSchema[], C, E, P>>;
allProjects<E extends boolean = false, P extends PaginationTypes = 'keyset'>(userId: string | number, options: PaginationRequestOptions<P> & AllUserProjectsOptions & Sudo & ShowExpanded<E> & {
simple: true;
}): Promise<GitlabAPIResponse<SimpleProjectSchema[], C, E, P>>;
allProjects<E extends boolean = false, P extends PaginationTypes = 'keyset'>(userId: string | number, options: PaginationRequestOptions<P> & AllUserProjectsOptions & Sudo & ShowExpanded<E> & {
statistics: true;
}): Promise<GitlabAPIResponse<(ProjectSchema & {
statistics: ProjectStatisticsSchema;
})[], C, E, P>>;
allProjects<E extends boolean = false, P extends PaginationTypes = 'keyset'>(userId: string | number, options?: PaginationRequestOptions<P> & AllUserProjectsOptions & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<ProjectSchema[], C, E, P>>;
allContributedProjects<E extends boolean = false, P extends PaginationTypes = 'keyset'>(userId: string | number, options: PaginationRequestOptions<P> & AllUserProjectsOptions & Sudo & ShowExpanded<E> & {
simple: true;
}): Promise<GitlabAPIResponse<SimpleProjectSchema[], C, E, P>>;
allContributedProjects<E extends boolean = false, P extends PaginationTypes = 'keyset'>(userId: string | number, options: PaginationRequestOptions<P> & AllUserProjectsOptions & Sudo & ShowExpanded<E> & {
statistics: true;
}): Promise<GitlabAPIResponse<(ProjectSchema & {
statistics: ProjectStatisticsSchema;
})[], C, E, P>>;
allContributedProjects<E extends boolean = false, P extends PaginationTypes = 'keyset'>(userId: string | number, options?: PaginationRequestOptions<P> & AllUserProjectsOptions & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<ProjectSchema[], C, E, P>>;
allStarredProjects<E extends boolean = false, P extends PaginationTypes = 'keyset'>(userId: string | number, options: PaginationRequestOptions<P> & AllUserProjectsOptions & Sudo & ShowExpanded<E> & {
simple: true;
}): Promise<GitlabAPIResponse<SimpleProjectSchema[], C, E, P>>;
allStarredProjects<E extends boolean = false, P extends PaginationTypes = 'keyset'>(userId: string | number, options: PaginationRequestOptions<P> & AllUserProjectsOptions & Sudo & ShowExpanded<E> & {
statistics: true;
}): Promise<GitlabAPIResponse<(ProjectSchema & {
statistics: ProjectStatisticsSchema;
})[], C, E, P>>;
allStarredProjects<E extends boolean = false, P extends PaginationTypes = 'keyset'>(userId: string | number, options?: PaginationRequestOptions<P> & AllUserProjectsOptions & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<ProjectSchema[], C, E, P>>;
approve<E extends boolean = false>(userId: number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<{
message: string;
}, C, E, void>>;
ban<E extends boolean = false>(userId: number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
block<E extends boolean = false>(userId: number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
create<E extends boolean = false>(options?: CreateUserOptions & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<ExpandedUserSchema, C, E, void>>;
createPersonalAccessToken<E extends boolean = false>(userId: number, name: string, scopes: string[], options?: {
expiresAt?: string;
} & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<PersonalAccessTokenSchema, C, E, void>>;
createCIRunner<E extends boolean = false>(runnerType: 'instance_type' | 'group_type' | 'project_type', options?: CreateUserCIRunnerOptions & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<UserRunnerSchema, C, E, void>>;
deactivate<E extends boolean = false>(userId: number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
disableTwoFactor<E extends boolean = false>(userId: number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
edit<E extends boolean = false>(userId: number, { avatar, ...options }?: EditUserOptions & Sudo & ShowExpanded<E>): Promise<CamelizedResponse<ExpandedUserSchema, C>>;
editStatus<E extends boolean = false>(options?: {
emoji?: string;
message?: string;
clearStatusAfter?: '30_minutes' | '3_hours' | '8_hours' | '1_day' | '3_days' | '7_days' | '30_days';
} & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<UserStatusSchema, C, E, void>>;
editCurrentUserPreferences<E extends boolean = false>(viewDiffsFileByFile: boolean, showWhitespaceInDiffs: boolean, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<UserPreferenceSchema, C, E, void>>;
follow<E extends boolean = false>(userId: number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<SimpleUserSchema, C, E, void>>;
reject<E extends boolean = false>(userId: number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<{
message: string;
}, C, E, void>>;
show<A extends boolean = false, E extends boolean = false>(userId: number, options?: AsAdmin<A> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<A extends false ? UserSchema : AdminUserSchema, C, E, void>>;
showCount<E extends boolean = false>(options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<UserCountSchema, C, E, void>>;
showAssociationsCount<E extends boolean = false>(userId: number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<UserAssociationCountSchema, C, E, void>>;
showCurrentUser<A extends boolean = false, E extends boolean = false>(options?: AsAdmin<A> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<A extends false ? ExpandedUserSchema : AdminUserSchema, C, E, void>>;
showCurrentUserPreferences<E extends boolean = false>(options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<UserPreferenceSchema, C, E, void>>;
showStatus<E extends boolean = false>({ iDOrUsername, ...options }?: {
iDOrUsername?: string | number;
} & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<UserStatusSchema, C, E, void>>;
remove<E extends boolean = false>(userId: number, options?: {
hardDelete?: boolean;
} & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
removeAuthenticationIdentity<E extends boolean = false>(userId: number, provider: string, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
unban<E extends boolean = false>(userId: number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
unblock<E extends boolean = false>(userId: number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
unfollow<E extends boolean = false>(userId: number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<UserSchema, C, E, void>>;
}
interface CondensedNamespaceSchema extends Record<string, unknown> {
id: number;
name: string;
path: string;
kind: string;
full_path: string;
parent_id?: number | null;
avatar_url: string | null;
web_url: string;
}
interface NamespaceSchema extends CondensedNamespaceSchema {
members_count_with_descendants: number;
billable_members_count: number;
plan: string;
trial_ends_on?: string;
trial: boolean;
}
interface NamespaceExistsSchema extends Record<string, unknown> {
exists: boolean;
suggests: string[];
}
declare class Namespaces<C extends boolean = false> extends BaseResource<C> {
all<E extends boolean = false, P extends PaginationTypes = 'offset'>(options?: {
search?: string;
ownedOnly?: string;
topLevelOnly?: boolean;
} & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<NamespaceSchema[], C, E, P>>;
exists<E extends boolean = false>(namespace: string, options?: {
parentId?: string;
} & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<NamespaceExistsSchema, C, E, void>>;
show<E extends boolean = false>(namespaceId: string | number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<NamespaceSchema, C, E, void>>;
}
interface GroupStatisticsSchema {
storage_size: number;
repository_size: number;
wiki_size: number;
lfs_objects_size: number;
job_artifacts_size: number;
pipeline_artifacts_size: number;
packages_size: number;
snippets_size: number;
uploads_size: number;
}
interface CondensedGroupSchema extends Record<string, unknown> {
id: number;
web_url: string;
name: string;
}
interface SimpleGroupSchema extends CondensedGroupSchema {
avatar_url: string | null;
full_name: string;
full_path: string;
}
interface GroupSchema extends SimpleGroupSchema {
path: string;
description: string;
visibility: 'public' | 'internal' | 'private';
share_with_group_lock: boolean;
require_two_factor_authentication: boolean;
two_factor_grace_period: number;
project_creation_level: string;
auto_devops_enabled?: boolean;
subgroup_creation_level: string;
emails_enabled?: boolean;
mentions_disabled?: boolean;
lfs_enabled: boolean;
default_branch_protection: number;
request_access_enabled: boolean;
created_at: string;
parent_id: number;
ldap_cn?: string;
ldap_access?: string;
marked_for_deletion_on?: string;
membership_lock?: boolean;
}
interface ExpandedGroupSchema extends GroupSchema {
runners_token: string;
file_template_project_id: number;
shared_with_groups: {
group_id: number;
group_name: string;
group_full_path: string;
group_access_level: number;
}[] | null;
projects?: ProjectSchema[];
shared_projects?: ProjectSchema[];
}
type AllGroupsOptions = {
skipGroups?: number[];
allAvailable?: boolean;
search?: string;
orderBy?: 'name' | 'path' | 'id';
sort?: 'asc' | 'desc';
visibility?: 'public' | 'internal' | 'private';
statistics?: boolean;
withCustomAttributes?: boolean;
owned?: boolean;
minAccessLevel?: Exclude<AccessLevel, AccessLevel.ADMIN>;
topLevelOnly?: boolean;
markedForDeletionOn?: string;
active?: boolean;
archived?: boolean;
};
type AllGroupProjectsOptions = {
visibility?: 'public' | 'internal' | 'private';
orderBy?: 'id' | 'name' | 'path' | 'created_at' | 'updated_at' | 'similarity' | 'last_activity_at';
topic?: string;
sort?: 'asc' | 'desc';
archived?: boolean;
search?: string;
simple?: boolean;
owned?: boolean;
starred?: boolean;
withIssuesEnabled?: boolean;
withMergeRequestsEnabled?: boolean;
withShared?: boolean;
includeSubgroups?: boolean;
minAccessLevel?: Exclude<AccessLevel, AccessLevel.ADMIN>;
withCustomAttributes?: boolean;
withSecurityReports?: boolean;
};
type CreateGroupOptions = {
autoDevopsEnabled?: boolean;
avatar?: {
content: Blob;
filename: string;
};
defaultBranchProtection?: 0 | 1 | 2 | 3;
description?: string;
emailsDisabled?: boolean;
lfsEnabled?: boolean;
mentionsDisabled?: boolean;
parentId?: number;
projectCreationLevel?: 'noone' | 'maintainer' | 'developer';
requestAccessEnabled?: boolean;
requireTwoFactorAuthentication?: boolean;
shareWithGroupLock?: boolean;
subgroupCreationLevel?: string;
twoFactorGracePeriod?: number;
visibility?: 'public' | 'internal' | 'private';
membershipLock?: boolean;
extraSharedRunnersMinutesLimit?: number;
sharedRunnersMinutesLimit?: number;
};
type EditGroupOptions = {
name?: string;
path?: string;
autoDevopsEnabled?: boolean;
avatar?: {
content: Blob;
filename: string;
};
defaultBranchProtection?: 0 | 1 | 2 | 3;
description?: string;
emailsDisabled?: boolean;
lfsEnabled?: boolean;
mentionsDisabled?: boolean;
preventSharingGroupsOutsideHierarchy?: boolean;
projectCreationLevel?: 'noone' | 'maintainer' | 'developer';
requestAccessEnabled?: boolean;
requireTwoFactorAuthentication?: boolean;
sharedRunnersSetting?: 'enabled' | 'disabled_and_overridable' | 'disabled_and_unoverridable' | 'disabled_with_override';
shareWithGroupLock?: boolean;
subgroupCreationLevel?: string;
twoFactorGracePeriod?: number;
visibility?: 'public' | 'internal' | 'private';
extraSharedRunnersMinutesLimit?: number;
fileTemplateProjectId?: number;
membershipLock?: boolean;
preventForkingOutsideGroup?: boolean;
sharedRunnersMinutesLimit?: number;
uniqueProjectDownloadLimit?: number;
uniqueProjectDownloadLimitIntervalInSeconds?: number;
uniqueProjectDownloadLimitAllowlist?: string[];
uniqueProjectDownloadLimitAlertlist?: number[];
autoBanUserOnExcessiveProjectsDownload?: boolean;
ipRestrictionRanges?: string;
};
type AllProvisionedUsersOptions = {
username?: string;
search?: string;
active?: boolean;
blocked?: boolean;
createdAfter?: string;
createdBefore?: string;
};
declare class Groups<C extends boolean = false> extends BaseResource<C> {
all<E extends boolean = false, P extends PaginationTypes = 'keyset'>(options: {
withCustomAttributes: true;
} & AllGroupsOptions & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<(GroupSchema & {
custom_attributes: CustomAttributeSchema[];
})[], C, E, P>>;
all<E extends boolean = false, P extends PaginationTypes = 'keyset'>(options: {
statistics: true;
} & AllGroupsOptions & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<(GroupSchema & {
statistics: GroupStatisticsSchema;
})[], C, E, P>>;
all<E extends boolean = false, P extends PaginationTypes = 'keyset'>(options?: AllGroupsOptions & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<GroupSchema[], C, E, P>>;
allDescendantGroups<E extends boolean = false, P extends PaginationTypes = 'offset'>(groupId: string | number, options: {
statistics: true;
} & AllGroupsOptions & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<(GroupSchema & {
statistics: GroupStatisticsSchema;
})[], C, E, P>>;
allDescendantGroups<E extends boolean = false, P extends PaginationTypes = 'offset'>(groupId: string | number, options: AllGroupsOptions & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<GroupSchema[], C, E, P>>;
allProjects<E extends boolean = false, P extends PaginationTypes = 'offset'>(groupId: string | number, options?: AllGroupProjectsOptions & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<ProjectSchema[], C, E, P>>;
allProjects<E extends boolean = false, P extends PaginationTypes = 'offset'>(groupId: string | number, options?: {
simple: true;
} & AllGroupProjectsOptions & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<CondensedProjectSchema[], C, E, P>>;
allSharedProjects<E extends boolean = false, P extends PaginationTypes = 'offset'>(groupId: string | number, options?: {
simple: true;
} & AllGroupProjectsOptions & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<CondensedProjectSchema[], C, E, P>>;
allSharedProjects<E extends boolean = false, P extends PaginationTypes = 'offset'>(groupId: string | number, options?: AllGroupProjectsOptions & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<ProjectSchema[], C, E, P>>;
allSubgroups<E extends boolean = false, P extends PaginationTypes = 'offset'>(groupId: string | number, options?: {
statistics: true;
} & AllGroupsOptions & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<(GroupSchema & {
statistics: GroupStatisticsSchema;
})[], C, E, P>>;
allSubgroups<E extends boolean = false, P extends PaginationTypes = 'offset'>(groupId: string | number, options?: AllGroupsOptions & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<GroupSchema[], C, E, P>>;
allProvisionedUsers<E extends boolean = false, P extends PaginationTypes = 'offset'>(groupId: string | number, options?: AllProvisionedUsersOptions & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<SimpleUserSchema[], C, E, P>>;
allTransferLocations<E extends boolean = false, P extends PaginationTypes = 'offset'>(groupId: string | number, options?: {
search?: string;
} & PaginationRequestOptions<P> & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<SimpleGroupSchema[], C, E, P>>;
create<E extends boolean = false>(name: string, path: string, { avatar, ...options }?: CreateGroupOptions & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<ExpandedGroupSchema, C, E, void>>;
downloadAvatar<E extends boolean = false>(groupId: string | number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<Blob, void, E, void>>;
edit<E extends boolean = false>(groupId: string | number, { avatar, ...options }?: EditGroupOptions & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<ExpandedGroupSchema, C, E, void>>;
remove<E extends boolean = false>(groupId: string | number, options?: {
permanentlyRemove?: boolean | string;
fullPath?: string;
} & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
removeAvatar<E extends boolean = false>(groupId: string | number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
restore<E extends boolean = false>(groupId: string | number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
search<E extends boolean = false>(nameOrPath: string, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<GroupSchema[], C, E, void>>;
share<E extends boolean = false>(groupId: string | number, sharedGroupId: string | number, groupAccess: number, options: {
expiresAt?: string;
} & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<ExpandedGroupSchema, C, E, void>>;
show<E extends boolean = false>(groupId: string | number, options?: BaseRequestOptions<E>): Promise<GitlabAPIResponse<ExpandedGroupSchema, C, E, void>>;
transfer<E extends boolean = false>(groupId: string | number, options?: {
groupId?: number;
} & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
transferProject<E extends boolean = false>(groupId: string | number, projectId: string | number, options?: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
unshare<E extends boolean = false>(groupId: string | number, sharedGroupId: string | number, options: Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<void, C, E, void>>;
uploadAvatar<E extends boolean = false>(groupId: string | number, content: Blob, { filename, ...options }?: {
filename?: string;
} & Sudo & ShowExpanded<E>): Promise<GitlabAPIResponse<{
avatar_url: string;
}, C, E, void>>;
}
type AccessLevelSettingState = 'disabled' | 'enabled' | 'private';
interface ProjectStarrerSchema extends Record<string, unknown> {
starred_since: string;
user: MappedOmit<SimpleUserSchema, 'created_at'>;
}
interface ProjectStoragePath extends Record<string, unknown> {
project_id: string | number;
disk_path: string;
created_at: string;
repository_storage: string;
}
interface ProjectStatisticsSchema {
commit_count: number;
storage_size: number;
repository_size: number;
wiki_size: number;
lfs_objects_size: number;
job_artifacts_size: number;
pipeline_artifacts_size: number;
packages_size: number;
snippets_size: number;
uploads_size: number;
}
interface ProjectLicenseSchema {
key: string;
name: string;
nickname: string;
html_url: string;
source_url: string;
}
interface CondensedProjectSchema extends Record<string, unknown> {
id: number;
web_url: string;
name: string;
path: string;
}
interface SimpleProjectSchema extends CondensedProjectSchema {
description: string | null;
name_with_namespace: string;
path_with_namespace: string;
created_at: string;
default_branch: string;
topics: string[] | null;
ssh_url_to_repo: string;
http_url_to_repo: string;
readme_url: string | null;
forks_count: number;
avatar_url: string | null;
star_count: number;
last_activity_at: string;
namespace: CondensedNamespaceSchema;
}
interface ProjectSchema extends SimpleProjectSchema {
description_html: string;
visibility: 'public' | 'internal' | 'private';
merge_requests_template?: string;
empty_repo: boolean;
issues_template?: string;
owner: Pick<SimpleUserSchema, 'id' | 'name' | 'created_at'>;
issues_enabled: boolean;
open_issues_count: number;
merge_requests_enabled: boolean;
jobs_enabled: boolean;
wiki_enabled: boolean;
snippets_enabled: boolean;
can_create_merge_request_in: boolean;
resolve_outdated_diff_discussions: boolean;
container_registry_access_level: string;
security_and_compliance_access_level: string;
container_expiration_policy: {
cadence: string;
enabled: boolean;
keep_n: number | null;
older_than: string | null;
name_regex_delete: string | null;
name_regex_keep: string | null;
next_run_at: string;
};
updated_at: string;
creator_id: number;
import_url: string | null;
import_type: string | null;
import_status: string;
import_error: string | null;
permissions: {
project_access: {
access_level: number;
notification_level: number;
};
group_access: {
access_level: number;
notification_level: number;
};
};
archived: boolean;
license_url: string;
license: ProjectLicenseSchema;
shared_runners_enabled: boolean;
group_runners_enabled: boolean;
runners_token: string;
ci_default_git_depth: number;
ci_forward_deployment_enabled: boolean;
ci_forward_deployment_rollback_allowed: boolean;
ci_allow_fork_pipelines_to_run_in_parent_project: boolean;
ci_separated_caches: boolean;
ci_restrict_pipeline_cancellation_role: string;
public_jobs: boolean;
shared_with_groups: {
group_id: number;
group_name: string;
group_full_path: string;
group_access_level: number;
}[] | null;
repository_storage: string;
only_allow_merge_if_pipeline_succeeds: boolean;
allow_merge_on_skipped_pipeline: boolean;
ci_pipeline_variables_minimum_override_role: boolean;
only_allow_merge_if_all_discussions_are_resolved: boolean;
remove_source_branch_after_merge: boolean;
printing_merge_requests_link_enabled: boolean;
request_access_enabled: boolean;
merge_method: string;
squash_option: string;
auto_devops_enabled: boolean;
auto_devops_deploy_strategy: string;
mirror: boolean;
mirror_user_id: number;
mirror_trigger_builds: boolean;
only_mirror_protected_branches: boolean;
mirror_overwrites_diverged_branches: boolean;
external_authorization_classification_label: string | null;
packages_enabled: boolean;
service_desk_enabled: boolean;
service_desk_address: string | null;
autoclose_referenced_issues: boolean;
suggestion_commit_message: string | null;
enforce_auth_checks_on_uploads: boolean;
merge_commit_template: string | null;
squash_commit_template: string | null;
issue_branch_template: string;
marked_for_deletion_on: string;
compliance_frameworks: string[] | null;
warn_about_potentially_unwanted_characters: boolean;
container_registry_image_prefix: string;
_links: {
self: string;
issues: string;
merge_requests: string;
repo_branches: string;
labels: string;
events: string;
members: string;
cluster_agents: string;
};
}
interface ProjectFileUploadSchema extends Record<string, unknown> {
alt: string;
url: string;
full_path: string;
markdown: string;
}
type AllProjectsOptions = {
userId?: string;
archived?: boolean;
idAfter?: number;
idBefore?: number;
imported?: boolean;
includeHidden?: boolean;
includePendingDelete?: boolean;
lastActivityAfter?: string;
lastActivityBefore?: string;
membership?: boolean;
minAccessLevel?: Exclude<AccessLevel, AccessLevel.ADMIN>;
orderBy?: 'id' | 'name' | 'path' | 'created_at' | 'updated_at' | 'last_activity_at' | 'similarity' | 'repository_size' | 'storage_size' | 'packages_size' | 'wiki_size';
owned?: boolean;
repositoryChecksumFailed?: boolean;
repositoryStorage?: string;
searchNamespaces?: boolean;
search?: string;
simple?: boolean;
sort?: 'asc' | 'desc';
starred?: boolean;
statistics?: boolean;
topic?: string;
topicId?: number;
visibility?: 'public' | 'internal' | 'private';
wikiChecksumFailed?: boolean;
withCustomAttributes?: boolean;
withIssuesEnabled?: boolean;
withMergeRequestsEnabled?: boolean;
withProgrammingLanguage?: string;
updatedBefore?: string;
updatedAfter?: string;
markedForDeletionOn?: string;
active?: boolean;
};
type CreateProjectOptions = {
userId?: number;
avatar?: {
content: Blob;
filename: string;
};
allowMergeOnSkippedPipeline?: boolean;
onlyAllowMergeIfAllStatusChecksPassed?: boolean;
analyticsAccessLevel?: AccessLevelSettingState;
approvalsBeforeMerge?: number;
autoCancelPendingPipelines?: string;
autoDevopsDeployStrategy?: 'continuous' | 'manual' | 'timed_incremental';
autoDevopsEnabled?: boolean;
autocloseReferencedIssues?: boolean;
buildGitStrategy?: string;
buildTimeout?: number;
buildsAccessLevel?: AccessLevelSettingState;
ciConfigPath?: string;
ciDeletePipelinesInSeconds?: number;
containerExpirationPolicyAttributes?: Record<string, string>;
containerRegistryAccessLevel?: AccessLevelSettingState;
defaultBranch?: string;
description?: string;
emailsDisabled?: boolean;
externalAuthorizationClassificationLabel?: string;
forkingAccessLevel?: AccessLevelSettingState;
groupWithProjectTemplatesId?: number;
importUrl?: string;
initializeWithReadme?: boolean;
issuesAccessLevel?: AccessLevelSettingState;
lfsEnabled?: boolean;
mergeMethod?: string;
mergePipelinesEnabled?: boolean;
mergeRequestsAccessLevel?: AccessLevelSettingState;
mergeTrainsEnabled?: boolean;
mirrorTriggerBuilds?: boolean;
mirror?: boolean;
namespaceId?: number;
onlyAllowMergeIfAllDiscussionsAreResolved?: boolean;
onlyAllowMergeIfPipelineSucceeds?: boolean;
packagesEnabled?: boolean;
pagesAccessLevel?: AccessLevelSettingState | 'public';
printingMergeRequestLinkEnabled?: boolean;
publicBuilds?: boolean;
releasesAccessLevel?: AccessLevelSettingState;
environmentsAccessLevel?: AccessLevelSettingState;
featureFlagsAccessLevel?: AccessLevelSettingState;
infrastructureAccessLevel?: AccessLevelSettingState;
monitorAccessLevel?: AccessLevelSettingState;
removeSourceBranchAfterMerge?: boolean;
repositoryAccessLevel?: AccessLevelSettingState;
repositoryStorage?: string;
requestAccessEnabled?: boolean;
requirementsAccessLevel?: AccessLevelSettingState;
resolveOutdatedDiffDiscussions?: boolean;
securityAndComplianceAccessLevel?: AccessLevelSettingState;
sharedRunnersEnabled?: boolean;
groupRunnersEnabled?: boolean;
snippetsAccessLevel?: AccessLevelSettingState;
squashOption?: 'never' | 'always' | 'default_on' | 'default_off';
templateName?: string;
templateProjectId?: number;
topics?: string[];
useCustomTemplate?: boolean;
visibility?: 'public' | 'internal' | 'private';
wikiAccessLevel?: AccessLevelSettingState;
};
type EditProjectOptions = {
avatar?: {
content: Blob;
filename: string;
};
allowMergeOnSkippedPipeline?: boolean;
allowPipelineTriggerApproveDeployment?: boolean;
onlyAllowMergeIfAllStatusChecksPassed?: boolean;
analyticsAccessLevel?: AccessLevelSettingState;
approvalsBeforeMerge?: number;
autoCancelPendingPipelines?: string;
autoDevopsDeployStrategy?: 'continuous' | 'manual' | 'timed_incremental';
autoDevopsEnabled?: boolean;
autocloseReferencedIssues?: boolean;
buildGitStrategy?: string;
buildTimeout?: number;
buildsAccessLevel?: AccessLevelSettingState;
ciConfigPath?: string;
ciDefaultGitDepth?: number;
ciForwardDeploymentEnabled?: boolean;
ciAllowForkPipelinesToRunInParentProject?: boolean;
ciSeparatedCaches?: boolean;
ciDeletePipelinesInSeconds?: number;
containerExpirationPolicyAttributes?: Record<string, string>;
containerRegistryAccessLevel?: string;
defaultBranch?: string;
description?: string;
emailsDisabled?: boolean;
enforceAuthChecksOnUploads?: boolean;
externalAuthorizationClassificationLabel?: string;
forkingAccessLevel?: AccessLevelSettingState;
importUrl?: string;
issuesAccessLevel?: AccessLevelSettingState;
issuesTemplate?: string;
keepLatestArtifact?: boolean;
lfsEnabled?: boolean;
mergeCommitTemplate?: string;
mergeMethod?: string;
mergePipelinesEnabled?: boolean;
mergeRequestsAccessLevel?: AccessLevelSettingState;
mergeRequestsTemplate?: string;
mergeTrainsEnabled?: boolean;
mirrorOverwritesDivergedBranches?: boolean;
mirrorTriggerBuilds?: boolean;
mirrorUserId?: number;
mirror?: boolean;
mrDefaultTargetSelf?: boolean;
name?: string;
onlyAllowMergeIfAllDiscussionsAreResolved?: boolean;
onlyAllowMergeIfPipelineSucceeds?: boolean;
onlyMirrorProtectedBranches?: boolean;
packagesEnabled?: boolean;
pagesAccessLevel?: string;
path?: string;
printingMergeRequestLinkEnabled?: boolean;
publicBuilds?: boolean;
releasesAccessLevel?: AccessLevelSettingState;
environmentsAccessLevel?: AccessLevelSettingState;
featureFlagsAccessLevel?: AccessLevelSettingState;
infrastructureAccessLevel?: AccessLevelSettingState;
monitorAccessLevel?: AccessLevelSettingState;
removeSourceBranchAfterMerge?: boolean;
repositoryAccessLevel?: AccessLevelSettingState;
repositoryStorage?: string;
requestAccessEnabled?: boolean;
requirementsAccessLevel?: AccessLevelSettingState;
resolveOutdatedDiffDiscussions?: boolean;
restrictUserDefinedVariables?: boolean;
securityAndComplianceAccessLevel?: AccessLevelSettingState;
serviceDeskEnabled?: boolean;
sharedRunnersEnabled?: boolean;
groupRunnersEnabled?: boolean;
snippetsAccessLevel?: AccessLevelSettingState;
issueBranchTemplate?: string;
squashCommitTemplate?: string;
squashOption?: 'never' | 'always' | 'default_on' | 'default_off';
suggestionCommitMessage?: string;
topics?: string[];
visibility?: 'public' | 'internal' | 'private';
wikiAccessLevel?: AccessLevelSettingState;
};
type ForkProjectOptions = {
branches?: string;
description?: string;
mrDefaultTargetSelf?: boolean;
name?: string;
namespaceId?: number;
namespacePath