// This file is auto-generated by @hey-api/openapi-ts

export type ClientOptions = {
    baseURL: `${string}://${string}` | (string & {});
};

export type AccessKeyListResponse = {
    access_keys: Array<AccessKeyResponse>;
    total: number;
};

export type AccessKeyResponse = {
    id: number;
    name: string;
    access_key?: string | null;
    scopes: Array<string>;
    expires_at?: string | null;
    is_revoked: boolean;
    created_at: string;
};

export type ActivityLogListResponse = {
    logs: Array<ActivityLogResponse>;
    total: number;
    page: number;
    per_page: number;
    user_role?: null | MemberRole;
};

export type ActivityLogParams = {
    event_type: string;
    title: string;
    repo_id?: string | null;
    content?: string | null;
    event_id?: string | null;
    event_sub_id?: number | null;
    metadata?: unknown;
    is_private: boolean;
};

export type ActivityLogResponse = {
    id: number;
    project_uid: string;
    repo_uid?: string;
    actor_uid: string;
    event_type: string;
    title: string;
    content?: string;
    is_private: boolean;
    visibility: string;
    created_at: string;
};

export type AddSshKeyParams = {
    title: string;
    public_key: string;
};

export type AnswerRequest = {
    question: string;
    answer: string;
};

export type ApiError = {
    /**
     * Error numeric code
     */
    code: number;
    /**
     * Error slug identifier
     */
    error: string;
    /**
     * Human-readable error message
     */
    message: string;
};

export type ApiResponseAccessKeyListResponse = {
    code: number;
    message: string;
    data?: {
        access_keys: Array<AccessKeyResponse>;
        total: number;
    };
};

export type ApiResponseAccessKeyResponse = {
    code: number;
    message: string;
    data?: {
        id: number;
        name: string;
        access_key?: string | null;
        scopes: Array<string>;
        expires_at?: string | null;
        is_revoked: boolean;
        created_at: string;
    };
};

export type ApiResponseActivityLogListResponse = {
    code: number;
    message: string;
    data?: {
        logs: Array<ActivityLogResponse>;
        total: number;
        page: number;
        per_page: number;
        user_role?: null | MemberRole;
    };
};

export type ApiResponseActivityLogResponse = {
    code: number;
    message: string;
    data?: {
        id: number;
        project_uid: string;
        repo_uid?: string;
        actor_uid: string;
        event_type: string;
        title: string;
        content?: string;
        is_private: boolean;
        visibility: string;
        created_at: string;
    };
};

export type ApiResponseApiError = {
    code: number;
    message: string;
    data?: {
        /**
         * Error numeric code
         */
        code: number;
        /**
         * Error slug identifier
         */
        error: string;
        /**
         * Human-readable error message
         */
        message: string;
    };
};

export type ApiResponseApprovalCheckResult = {
    code: number;
    message: string;
    data?: {
        enough_approvals: boolean;
        approvals: number;
        required: number;
        reviewers: Array<ReviewerInfo>;
    };
};

export type ApiResponseArchiveCachedResponse = {
    code: number;
    message: string;
    data?: {
        commit_oid: string;
        format: string;
        cached: boolean;
    };
};

export type ApiResponseArchiveInvalidateAllResponse = {
    code: number;
    message: string;
    data?: {
        commit_oid: string;
        count: number;
    };
};

export type ApiResponseArchiveInvalidateResponse = {
    code: number;
    message: string;
    data?: {
        commit_oid: string;
        format: string;
        invalidated: boolean;
    };
};

export type ApiResponseArchiveListResponse = {
    code: number;
    message: string;
    data?: {
        commit_oid: string;
        entries: Array<ArchiveEntryResponse>;
        total_entries: number;
    };
};

export type ApiResponseArchiveResponse = {
    code: number;
    message: string;
    data?: {
        commit_oid: string;
        format: string;
        size: number;
        data: string;
    };
};

export type ApiResponseArchiveSummaryResponse = {
    code: number;
    message: string;
    data?: {
        commit_oid: string;
        format: string;
        total_entries: number;
        total_size: number;
    };
};

export type ApiResponseAuditLogResponse = {
    code: number;
    message: string;
    data?: {
        id: number;
        project_uid: string;
        actor_uid: string;
        action: string;
        details?: {
            [key: string]: unknown;
        };
    };
};

export type ApiResponseBlobContentResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        size: number;
        is_binary: boolean;
        content: string;
    };
};

export type ApiResponseBlobCreateResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        size: number;
    };
};

export type ApiResponseBlobExistsResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        exists: boolean;
    };
};

export type ApiResponseBlobInfoResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        size: number;
        is_binary: boolean;
    };
};

export type ApiResponseBlobIsBinaryResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        is_binary: boolean;
    };
};

export type ApiResponseBlobSizeResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        size: number;
    };
};

export type ApiResponseBoardResponse = {
    code: number;
    message: string;
    data?: {
        id: string;
        project: string;
        name: string;
        description?: string | null;
        created_by: string;
        created_at: string;
        updated_at: string;
    };
};

export type ApiResponseBoardWithColumnsResponse = {
    code: number;
    message: string;
    data?: {
        board: BoardResponse;
        columns: Array<ColumnWithCardsResponse>;
    };
};

export type ApiResponseBranchDiffResponse = {
    code: number;
    message: string;
    data?: {
        ahead: number;
        behind: number;
        diverged: boolean;
    };
};

export type ApiResponseBranchExistsResponse = {
    code: number;
    message: string;
    data?: {
        name: string;
        exists: boolean;
    };
};

export type ApiResponseBranchFastForwardResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
    };
};

export type ApiResponseBranchInfoResponse = {
    code: number;
    message: string;
    data?: {
        name: string;
        oid: string;
        is_head: boolean;
        is_remote: boolean;
        is_current: boolean;
        upstream?: string | null;
    };
};

export type ApiResponseBranchIsAncestorResponse = {
    code: number;
    message: string;
    data?: {
        child: string;
        ancestor: string;
        is_ancestor: boolean;
    };
};

export type ApiResponseBranchIsConflictedResponse = {
    code: number;
    message: string;
    data?: {
        is_conflicted: boolean;
    };
};

export type ApiResponseBranchIsDetachedResponse = {
    code: number;
    message: string;
    data?: {
        is_detached: boolean;
    };
};

export type ApiResponseBranchIsHeadResponse = {
    code: number;
    message: string;
    data?: {
        name: string;
        is_head: boolean;
    };
};

export type ApiResponseBranchIsMergedResponse = {
    code: number;
    message: string;
    data?: {
        branch: string;
        into: string;
        is_merged: boolean;
    };
};

export type ApiResponseBranchMergeBaseResponse = {
    code: number;
    message: string;
    data?: {
        branch1: string;
        branch2: string;
        base: string;
    };
};

export type ApiResponseBranchProtectionResponse = {
    code: number;
    message: string;
    data?: {
        id: number;
        repo: string;
        branch: string;
        forbid_push: boolean;
        forbid_pull: boolean;
        forbid_merge: boolean;
        forbid_deletion: boolean;
        forbid_force_push: boolean;
        forbid_tag_push: boolean;
        required_approvals: number;
        dismiss_stale_reviews: boolean;
        require_linear_history: boolean;
        allow_fork_syncing: boolean;
    };
};

export type ApiResponseBranchSummaryResponse = {
    code: number;
    message: string;
    data?: {
        local_count: number;
        remote_count: number;
        all_count: number;
    };
};

export type ApiResponseBranchTrackingDiffResponse = {
    code: number;
    message: string;
    data?: {
        name: string;
        ahead: number;
        behind: number;
    };
};

export type ApiResponseCaptchaResponse = {
    code: number;
    message: string;
    data?: {
        base64: string;
        rsa?: null | RsaResponse;
        req: CaptchaQuery;
    };
};

export type ApiResponseCardResponse = {
    code: number;
    message: string;
    data?: {
        id: string;
        column: string;
        issue_id?: number | null;
        project?: string | null;
        title: string;
        description?: string | null;
        position: number;
        assignee_id?: string | null;
        due_date?: string | null;
        priority?: string | null;
        created_by: string;
        created_at: string;
        updated_at: string;
    };
};

export type ApiResponseColumnResponse = {
    code: number;
    message: string;
    data?: {
        id: string;
        board: string;
        name: string;
        position: number;
        wip_limit?: number | null;
        color?: string | null;
    };
};

export type ApiResponseCommitAuthorResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        author: CommitSignatureResponse;
    };
};

export type ApiResponseCommitBranchesResponse = {
    code: number;
    message: string;
    data?: {
        data?: {
            [key: string]: Array<string>;
        };
    };
};

export type ApiResponseCommitCountResponse = {
    code: number;
    message: string;
    data?: {
        count: number;
    };
};

export type ApiResponseCommitCreateResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
    };
};

export type ApiResponseCommitExistsResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        exists: boolean;
    };
};

export type ApiResponseCommitGraphReactResponse = {
    code: number;
    message: string;
    data?: {
        commits: Array<CommitGraphReactCommit>;
        lanes: Array<LaneInfo>;
        max_parents: number;
    };
};

export type ApiResponseCommitGraphResponse = {
    code: number;
    message: string;
    data?: {
        lines: Array<CommitGraphLineResponse>;
        max_parents: number;
    };
};

export type ApiResponseCommitIsCommitResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        is_commit: boolean;
    };
};

export type ApiResponseCommitIsMergeResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        is_merge: boolean;
    };
};

export type ApiResponseCommitIsTipResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        is_tip: boolean;
    };
};

export type ApiResponseCommitLogResponse = {
    code: number;
    message: string;
    data?: {
        data: Array<CommitMetaResponse>;
        total: number;
        page: number;
        per_page: number;
        total_pages: number;
    };
};

export type ApiResponseCommitMessageResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        message: string;
    };
};

export type ApiResponseCommitMetaResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        message: string;
        summary: string;
        author: CommitSignatureResponse;
        committer: CommitSignatureResponse;
        tree_id: string;
        parent_ids: Array<string>;
        encoding?: string | null;
    };
};

export type ApiResponseCommitParentCountResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        parent_count: number;
    };
};

export type ApiResponseCommitParentIdsResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        parent_ids: Array<string>;
    };
};

export type ApiResponseCommitRefCountResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        ref_count: number;
    };
};

export type ApiResponseCommitShortIdResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        short_id: string;
    };
};

export type ApiResponseCommitSummaryResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        summary: string;
    };
};

export type ApiResponseCommitTagsResponse = {
    code: number;
    message: string;
    data?: {
        data?: {
            [key: string]: Array<string>;
        };
    };
};

export type ApiResponseCommitTreeIdResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        tree_id: string;
    };
};

export type ApiResponseConfigBoolResponse = {
    code: number;
    message: string;
    data?: {
        key: string;
        value: boolean;
    };
};

export type ApiResponseConfigSnapshotResponse = {
    code: number;
    message: string;
    data?: {
        entries: Array<ConfigEntryResponse>;
    };
};

export type ApiResponseContextMe = {
    code: number;
    message: string;
    data?: {
        uid: string;
        username: string;
        display_name?: string | null;
        avatar_url?: string | null;
        has_unread_notifications: number;
    };
};

export type ApiResponseContributionHeatmapResponse = {
    code: number;
    message: string;
    data?: {
        username: string;
        total_contributions: number;
        heatmap: Array<ContributionHeatmapItem>;
        start_date: string;
        end_date: string;
    };
};

export type ApiResponseContributorsResponse = {
    code: number;
    message: string;
    data?: {
        total: number;
        contributors: Array<ContributorStats>;
    };
};

export type ApiResponseDeleteSkillResponse = {
    code: number;
    message: string;
    data?: {
        deleted: boolean;
        slug: string;
    };
};

export type ApiResponseDescriptionResponse = {
    code: number;
    message: string;
    data?: {
        description: string;
    };
};

export type ApiResponseDiffPatchIdResponse = {
    code: number;
    message: string;
    data?: {
        old_tree: string;
        new_tree: string;
        patch_id: string;
    };
};

export type ApiResponseDiffResultResponse = {
    code: number;
    message: string;
    data?: {
        stats: DiffStatsResponse;
        deltas: Array<DiffDeltaResponse>;
    };
};

export type ApiResponseDiffStatsResponse = {
    code: number;
    message: string;
    data?: {
        files_changed: number;
        insertions: number;
        deletions: number;
    };
};

export type ApiResponseEmailResponse = {
    code: number;
    message: string;
    data?: {
        email?: string | null;
    };
};

export type ApiResponseGitInitResponse = {
    code: number;
    message: string;
    data?: {
        path: string;
        is_bare: boolean;
    };
};

export type ApiResponseGitReadmeResponse = {
    code: number;
    message: string;
    data?: {
        path?: string | null;
        content?: string | null;
        size?: number | null;
        encoding?: string | null;
        truncated?: boolean;
        is_binary?: boolean;
    };
};

export type ApiResponseInvitationListResponse = {
    code: number;
    message: string;
    data?: {
        invitations: Array<InvitationResponse>;
        total: number;
        page: number;
        per_page: number;
    };
};

export type ApiResponseIsLikeResponse = {
    code: number;
    message: string;
    data?: {
        is_like: boolean;
    };
};

export type ApiResponseIsWatchResponse = {
    code: number;
    message: string;
    data?: {
        is_watching: boolean;
    };
};

export type ApiResponseIssueAssigneeResponse = {
    code: number;
    message: string;
    data?: {
        issue: string;
        user_id: string;
        username: string;
        assigned_at: string;
    };
};

export type ApiResponseIssueCommentListResponse = {
    code: number;
    message: string;
    data?: {
        comments: Array<IssueCommentResponse>;
        total: number;
        page: number;
        per_page: number;
    };
};

export type ApiResponseIssueCommentResponse = {
    code: number;
    message: string;
    data?: {
        id: number;
        issue: string;
        author: string;
        author_username: string;
        body: string;
        created_at: string;
        updated_at: string;
    };
};

export type ApiResponseIssueLabelResponse = {
    code: number;
    message: string;
    data?: {
        issue: string;
        label_id: number;
        label_name?: string | null;
        label_color?: string | null;
        relation_at: string;
    };
};

export type ApiResponseIssueListResponse = {
    code: number;
    message: string;
    data?: {
        issues: Array<IssueResponse>;
        total: number;
        page: number;
        per_page: number;
    };
};

export type ApiResponseIssuePullRequestResponse = {
    code: number;
    message: string;
    data?: {
        issue: string;
        repo: string;
        number: number;
        relation_at: string;
    };
};

export type ApiResponseIssueRepoResponse = {
    code: number;
    message: string;
    data?: {
        issue: string;
        repo: string;
        relation_at: string;
    };
};

export type ApiResponseIssueResponse = {
    code: number;
    message: string;
    data?: {
        id: string;
        project: string;
        number: number;
        title: string;
        body?: string | null;
        state: string;
        author: string;
        author_username?: string | null;
        milestone?: string | null;
        created_at: string;
        updated_at: string;
        closed_at?: string | null;
        created_by_ai: boolean;
    };
};

export type ApiResponseIssueSubscriberResponse = {
    code: number;
    message: string;
    data?: {
        issue: string;
        user_id: string;
        username: string;
        subscribed: boolean;
        created_at: string;
    };
};

export type ApiResponseIssueSummaryResponse = {
    code: number;
    message: string;
    data?: {
        total: number;
        open: number;
        closed: number;
    };
};

export type ApiResponseJoinAnswersListResponse = {
    code: number;
    message: string;
    data?: {
        request_id: number;
        project_uid: string;
        answers: Array<JoinAnswerResponse>;
    };
};

export type ApiResponseJoinRequestListResponse = {
    code: number;
    message: string;
    data?: {
        requests: Array<JoinRequestResponse>;
        total: number;
        page: number;
        per_page: number;
    };
};

export type ApiResponseJoinSettingsResponse = {
    code: number;
    message: string;
    data?: {
        project_uid: string;
        require_approval: boolean;
        require_questions: boolean;
        questions: unknown;
    };
};

export type ApiResponseLabelListResponse = {
    code: number;
    message: string;
    data?: {
        labels: Array<LabelResponse>;
        total: number;
    };
};

export type ApiResponseLabelResponse = {
    code: number;
    message: string;
    data?: {
        id: number;
        project_uid: string;
        name: string;
        color: string;
        description?: string | null;
        created_at: string;
    };
};

export type ApiResponseMemberListResponse = {
    code: number;
    message: string;
    data?: {
        members: Array<MemberInfo>;
        total: number;
        page: number;
        per_page: number;
    };
};

export type ApiResponseMergeAnalysisResponse = {
    code: number;
    message: string;
    data?: {
        can_fast_forward: boolean;
        is_up_to_date: boolean;
        is_normal: boolean;
        analysis_flags: Array<string>;
        /**
         * Strategies supported given the current state of the PR.
         */
        supported_strategies: Array<string>;
    };
};

export type ApiResponseMergeConflictResponse = {
    code: number;
    message: string;
    data?: {
        has_conflicts: boolean;
        conflicted_files: Array<MergeConflictFile>;
    };
};

export type ApiResponseMergeResponse = {
    code: number;
    message: string;
    data?: {
        repo: string;
        number: number;
        status: string;
        merged_by: string;
        merged_at: string;
    };
};

export type ApiResponseMessageEditHistoryResponse = {
    code: number;
    message: string;
    data?: {
        message_id: string;
        history: Array<MessageEditHistoryEntry>;
        total_edits: number;
    };
};

export type ApiResponseMessageSearchResponse = {
    code: number;
    message: string;
    data?: {
        messages: Array<RoomMessageResponse>;
        total: number;
    };
};

export type ApiResponseNotificationListResponse = {
    code: number;
    message: string;
    data?: {
        notifications: Array<NotificationResponse>;
        total: number;
        unread_count: number;
    };
};

export type ApiResponseNotificationPreferencesResponse = {
    code: number;
    message: string;
    data?: {
        user_id: string;
        email_enabled: boolean;
        in_app_enabled: boolean;
        push_enabled: boolean;
        digest_mode: string;
        dnd_enabled: boolean;
        dnd_start_minute?: number | null;
        dnd_end_minute?: number | null;
        marketing_enabled: boolean;
        security_enabled: boolean;
        product_enabled: boolean;
        created_at: string;
        updated_at: string;
    };
};

export type ApiResponseOptionCommitMetaResponse = {
    code: number;
    message: string;
    data?: null | {
        oid: string;
        message: string;
        summary: string;
        author: CommitSignatureResponse;
        committer: CommitSignatureResponse;
        tree_id: string;
        parent_ids: Array<string>;
        encoding?: string | null;
    };
};

export type ApiResponsePrCommitsListResponse = {
    code: number;
    message: string;
    data?: {
        commits: Array<PrCommitResponse>;
    };
};

export type ApiResponsePreferencesResponse = {
    code: number;
    message: string;
    data?: {
        language: string;
        theme: string;
        timezone: string;
        email_notifications: boolean;
        in_app_notifications: boolean;
        created_at: string;
        updated_at: string;
    };
};

export type ApiResponseProfileResponse = {
    code: number;
    message: string;
    data?: {
        uid: string;
        username: string;
        display_name?: string | null;
        avatar_url?: string | null;
        website_url?: string | null;
        organization?: string | null;
        created_at: string;
        updated_at: string;
        last_sign_in_at?: string | null;
    };
};

export type ApiResponseProjectBillingCurrentResponse = {
    code: number;
    message: string;
    data?: {
        project_uid: string;
        currency: string;
        monthly_quota: number;
        balance: number;
        month_used: number;
        cycle_start_utc: string;
        cycle_end_utc: string;
        updated_at: string;
        created_at: string;
    };
};

export type ApiResponseProjectBillingHistoryResponse = {
    code: number;
    message: string;
    data?: {
        page: number;
        per_page: number;
        total: number;
        list: Array<ProjectBillingHistoryItem>;
    };
};

export type ApiResponseProjectInfoRelational = {
    code: number;
    message: string;
    data?: {
        uid: string;
        name: string;
        display_name: string;
        avatar_url?: string | null;
        description?: string | null;
        is_public: boolean;
        created_at: string;
        updated_at: string;
        created_by: string;
        created_username_name: string;
        created_display_name?: string | null;
        created_avatar_url?: string | null;
        member_count: number;
        like_count: number;
        watch_count: number;
        keys: Array<ProjectInfoKeyValue>;
        labels: Array<ProjectInfoLabel>;
        role?: null | MemberRole;
        is_like: boolean;
        is_watch: boolean;
    };
};

export type ApiResponseProjectInitResponse = {
    code: number;
    message: string;
    data?: {
        params: ProjectInitParams;
        project: ProjectModel;
    };
};

export type ApiResponseProjectRepoCreateResponse = {
    code: number;
    message: string;
    data?: {
        uid: string;
        repo_name: string;
        description?: string | null;
        default_branch: string;
        project_name: string;
        is_private: boolean;
        storage_path: string;
        created_at: string;
    };
};

export type ApiResponseProjectRepositoryPagination = {
    code: number;
    message: string;
    data?: {
        items: Array<ProjectRepositoryItem>;
        cursor?: string | null;
        total: number;
    };
};

export type ApiResponsePullRequestListResponse = {
    code: number;
    message: string;
    data?: {
        pull_requests: Array<PullRequestResponse>;
        total: number;
        page: number;
        per_page: number;
    };
};

export type ApiResponsePullRequestResponse = {
    code: number;
    message: string;
    data?: {
        repo: string;
        number: number;
        issue?: string | null;
        title: string;
        body?: string | null;
        author: string;
        author_username?: string | null;
        base: string;
        head: string;
        status: string;
        merged_by?: string | null;
        created_at: string;
        updated_at: string;
        merged_at?: string | null;
        created_by_ai: boolean;
    };
};

export type ApiResponsePullRequestSummaryResponse = {
    code: number;
    message: string;
    data?: {
        total: number;
        open: number;
        merged: number;
        closed: number;
    };
};

export type ApiResponseReactionListResponse = {
    code: number;
    message: string;
    data?: {
        reactions: Array<ReactionSummary>;
    };
};

export type ApiResponseReactionResponse = {
    code: number;
    message: string;
    data?: {
        user: string;
        reaction: string;
        created_at: string;
    };
};

export type ApiResponseRefDeleteResponse = {
    code: number;
    message: string;
    data?: {
        name: string;
        oid: string;
    };
};

export type ApiResponseRefExistsResponse = {
    code: number;
    message: string;
    data?: {
        name: string;
        exists: boolean;
    };
};

export type ApiResponseRefInfoResponse = {
    code: number;
    message: string;
    data?: {
        name: string;
        oid?: string | null;
        target?: string | null;
        is_symbolic: boolean;
        is_branch: boolean;
        is_remote: boolean;
        is_tag: boolean;
        is_note: boolean;
    };
};

export type ApiResponseRefTargetResponse = {
    code: number;
    message: string;
    data?: {
        name: string;
        oid?: string | null;
    };
};

export type ApiResponseRefUpdateResponse = {
    code: number;
    message: string;
    data?: {
        name: string;
        old_oid?: string | null;
        new_oid?: string | null;
    };
};

export type ApiResponseReviewCommentListResponse = {
    code: number;
    message: string;
    data?: {
        /**
         * Flat list of all comments (kept for backward compatibility).
         */
        comments: Array<ReviewCommentResponse>;
        /**
         * Comments grouped into threads (root comments with their replies).
         */
        threads: Array<ReviewCommentThread>;
        total: number;
    };
};

export type ApiResponseReviewCommentResponse = {
    code: number;
    message: string;
    data?: {
        repo: string;
        number: number;
        id: number;
        review?: string | null;
        path?: string | null;
        side?: string | null;
        line?: number | null;
        old_line?: number | null;
        body: string;
        author: string;
        author_username?: string | null;
        resolved: boolean;
        in_reply_to?: number | null;
        created_at: string;
        updated_at: string;
    };
};

export type ApiResponseReviewListResponse = {
    code: number;
    message: string;
    data?: {
        reviews: Array<ReviewResponse>;
    };
};

export type ApiResponseReviewRequestListResponse = {
    code: number;
    message: string;
    data?: {
        requests: Array<ReviewRequestResponse>;
        total: number;
    };
};

export type ApiResponseReviewRequestResponse = {
    code: number;
    message: string;
    data?: {
        repo: string;
        number: number;
        reviewer: string;
        reviewer_username?: string | null;
        requested_by: string;
        requested_by_username?: string | null;
        requested_at: string;
        dismissed_at?: string | null;
        dismissed_by?: string | null;
        dismissed_by_username?: string | null;
    };
};

export type ApiResponseReviewResponse = {
    code: number;
    message: string;
    data?: {
        repo: string;
        number: number;
        reviewer: string;
        reviewer_username?: string | null;
        state: string;
        body?: string | null;
        submitted_at?: string | null;
        created_at: string;
        updated_at: string;
    };
};

export type ApiResponseRoomAiResponse = {
    code: number;
    message: string;
    data?: {
        room: string;
        model: string;
        version?: string | null;
        call_count: number;
        last_call_at?: string | null;
        history_limit?: number | null;
        system_prompt?: string | null;
        temperature?: number | null;
        max_tokens?: number | null;
        use_exact: boolean;
        think: boolean;
        stream: boolean;
        min_score?: number | null;
        created_at: string;
        updated_at: string;
    };
};

export type ApiResponseRoomCategoryResponse = {
    code: number;
    message: string;
    data?: {
        id: string;
        project: string;
        name: string;
        position: number;
        created_by: string;
        created_at: string;
    };
};

export type ApiResponseRoomMemberResponse = {
    code: number;
    message: string;
    data?: {
        room: string;
        user: string;
        user_info?: null | UserInfo;
        role: string;
        first_msg_in?: string | null;
        joined_at?: string | null;
        last_read_seq?: number | null;
        do_not_disturb: boolean;
        dnd_start_hour?: number | null;
        dnd_end_hour?: number | null;
    };
};

export type ApiResponseRoomMessageListResponse = {
    code: number;
    message: string;
    data?: {
        messages: Array<RoomMessageResponse>;
        total: number;
    };
};

export type ApiResponseRoomMessageResponse = {
    code: number;
    message: string;
    data?: {
        id: string;
        seq: number;
        room: string;
        sender_type: string;
        sender_id?: string | null;
        display_name?: string | null;
        thread?: string | null;
        in_reply_to?: string | null;
        content: string;
        content_type: string;
        edited_at?: string | null;
        send_at: string;
        revoked?: string | null;
        revoked_by?: string | null;
    };
};

export type ApiResponseRoomPinResponse = {
    code: number;
    message: string;
    data?: {
        room: string;
        message: string;
        pinned_by: string;
        pinned_at: string;
    };
};

export type ApiResponseRoomResponse = {
    code: number;
    message: string;
    data?: {
        id: string;
        project: string;
        room_name: string;
        public: boolean;
        category?: string | null;
        created_by: string;
        created_at: string;
        last_msg_at: string;
        unread_count?: number;
    };
};

export type ApiResponseRoomThreadResponse = {
    code: number;
    message: string;
    data?: {
        id: string;
        room: string;
        parent: number;
        created_by: string;
        participants: unknown;
        last_message_at: string;
        last_message_preview?: string | null;
        created_at: string;
        updated_at: string;
    };
};

export type ApiResponseScanResponse = {
    code: number;
    message: string;
    data?: {
        discovered: number;
        created: number;
        updated: number;
        removed: number;
    };
};

export type ApiResponseSearchResponse = {
    code: number;
    message: string;
    data?: {
        query: string;
        projects?: null | SearchResultSetProjectSearchItem;
        repos?: null | SearchResultSetRepoSearchItem;
        issues?: null | SearchResultSetIssueSearchItem;
        users?: null | SearchResultSetUserSearchItem;
    };
};

export type ApiResponseSideBySideDiffResponse = {
    code: number;
    message: string;
    data?: {
        files: Array<SideBySideFileResponse>;
        total_additions: number;
        total_deletions: number;
    };
};

export type ApiResponseSkillResponse = {
    code: number;
    message: string;
    data?: {
        id: number;
        project_uuid: string;
        slug: string;
        name: string;
        description?: string | null;
        source: string;
        repo_id?: string | null;
        commit_sha?: string | null;
        blob_hash?: string | null;
        content: string;
        metadata: unknown;
        enabled: boolean;
        created_by?: string | null;
        created_at: string;
        updated_at: string;
    };
};

export type ApiResponseSshKeyListResponse = {
    code: number;
    message: string;
    data?: {
        keys: Array<SshKeyResponse>;
        total: number;
    };
};

export type ApiResponseSshKeyResponse = {
    code: number;
    message: string;
    data?: {
        id: number;
        user_uid: string;
        title: string;
        fingerprint: string;
        key_type: string;
        key_bits?: number | null;
        is_verified: boolean;
        last_used_at?: string | null;
        expires_at?: string | null;
        is_revoked: boolean;
        created_at: string;
        updated_at: string;
    };
};

export type ApiResponseStarCountResponse = {
    code: number;
    message: string;
    data?: {
        count: number;
    };
};

export type ApiResponseStarUserListResponse = {
    code: number;
    message: string;
    data?: {
        users: Array<StarUserInfo>;
    };
};

export type ApiResponseString = {
    code: number;
    message: string;
    data?: string;
};

export type ApiResponseTagCountResponse = {
    code: number;
    message: string;
    data?: {
        count: number;
    };
};

export type ApiResponseTagExistsResponse = {
    code: number;
    message: string;
    data?: {
        name: string;
        exists: boolean;
    };
};

export type ApiResponseTagInfoResponse = {
    code: number;
    message: string;
    data?: {
        name: string;
        oid: string;
        target: string;
        is_annotated: boolean;
        message?: string | null;
        tagger?: string | null;
        tagger_email?: string | null;
    };
};

export type ApiResponseTagIsAnnotatedResponse = {
    code: number;
    message: string;
    data?: {
        name: string;
        is_annotated: boolean;
    };
};

export type ApiResponseTagMessageResponse = {
    code: number;
    message: string;
    data?: {
        name: string;
        message?: string | null;
    };
};

export type ApiResponseTagSummaryResponse = {
    code: number;
    message: string;
    data?: {
        total_count: number;
    };
};

export type ApiResponseTagTaggerResponse = {
    code: number;
    message: string;
    data?: {
        name: string;
        tagger?: string | null;
        tagger_email?: string | null;
    };
};

export type ApiResponseTagTargetResponse = {
    code: number;
    message: string;
    data?: {
        name: string;
        target?: string | null;
    };
};

export type ApiResponseTransferRepoResponse = {
    code: number;
    message: string;
    data?: {
        repo_id: string;
        old_project_name: string;
        new_project_name: string;
        repo_name: string;
    };
};

export type ApiResponseTreeDiffStatsResponse = {
    code: number;
    message: string;
    data?: {
        old_tree: string;
        new_tree: string;
        files_changed: number;
        insertions: number;
        deletions: number;
    };
};

export type ApiResponseTreeEntryCountResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        count: number;
    };
};

export type ApiResponseTreeEntryResponse = {
    code: number;
    message: string;
    data?: {
        name: string;
        oid: string;
        kind: string;
        filemode: number;
        is_binary: boolean;
    };
};

export type ApiResponseTreeExistsResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        exists: boolean;
    };
};

export type ApiResponseTreeInfoResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        entry_count: number;
        is_empty: boolean;
    };
};

export type ApiResponseTreeIsEmptyResponse = {
    code: number;
    message: string;
    data?: {
        oid: string;
        is_empty: boolean;
    };
};

export type ApiResponseUserInfoExternal = {
    code: number;
    message: string;
    data?: {
        user_uid: string;
        username: string;
        display_name: string;
        avatar_url?: string | null;
        master_email?: string | null;
        timezone: string;
        language: string;
        website_url?: string | null;
        organization?: string | null;
        last_sign_in_at?: string | null;
        is_owner: boolean;
        is_subscribe: boolean;
        total_projects: number;
        total_repos: number;
    };
};

export type ApiResponseUserProjectsResponse = {
    code: number;
    message: string;
    data?: {
        username: string;
        projects: Array<UserProjectInfo>;
        total_count: number;
    };
};

export type ApiResponseUserReposResponse = {
    code: number;
    message: string;
    data?: {
        username: string;
        repos: Array<UserRepoInfo>;
        total_count: number;
    };
};

export type ApiResponseValue = {
    code: number;
    message: string;
    data?: unknown;
};

export type ApiResponseVecAuditLogResponse = {
    code: number;
    message: string;
    data?: Array<{
        id: number;
        project_uid: string;
        actor_uid: string;
        action: string;
        details?: {
            [key: string]: unknown;
        };
    }>;
};

export type ApiResponseVecBoardResponse = {
    code: number;
    message: string;
    data?: Array<{
        id: string;
        project: string;
        name: string;
        description?: string | null;
        created_by: string;
        created_at: string;
        updated_at: string;
    }>;
};

export type ApiResponseVecBranchInfoResponse = {
    code: number;
    message: string;
    data?: Array<{
        name: string;
        oid: string;
        is_head: boolean;
        is_remote: boolean;
        is_current: boolean;
        upstream?: string | null;
    }>;
};

export type ApiResponseVecBranchProtectionResponse = {
    code: number;
    message: string;
    data?: Array<{
        id: number;
        repo: string;
        branch: string;
        forbid_push: boolean;
        forbid_pull: boolean;
        forbid_merge: boolean;
        forbid_deletion: boolean;
        forbid_force_push: boolean;
        forbid_tag_push: boolean;
        required_approvals: number;
        dismiss_stale_reviews: boolean;
        require_linear_history: boolean;
        allow_fork_syncing: boolean;
    }>;
};

export type ApiResponseVecCommitMetaResponse = {
    code: number;
    message: string;
    data?: Array<{
        oid: string;
        message: string;
        summary: string;
        author: CommitSignatureResponse;
        committer: CommitSignatureResponse;
        tree_id: string;
        parent_ids: Array<string>;
        encoding?: string | null;
    }>;
};

export type ApiResponseVecCommitRefInfoResponse = {
    code: number;
    message: string;
    data?: Array<{
        name: string;
        target: string;
        is_remote: boolean;
        is_tag: boolean;
    }>;
};

export type ApiResponseVecCommitReflogEntryResponse = {
    code: number;
    message: string;
    data?: Array<{
        new_sha: string;
        old_sha: string;
        committer_name: string;
        committer_email: string;
        time_secs: number;
        message?: string | null;
        ref_name: string;
    }>;
};

export type ApiResponseVecIssueAssigneeResponse = {
    code: number;
    message: string;
    data?: Array<{
        issue: string;
        user_id: string;
        username: string;
        assigned_at: string;
    }>;
};

export type ApiResponseVecIssueLabelResponse = {
    code: number;
    message: string;
    data?: Array<{
        issue: string;
        label_id: number;
        label_name?: string | null;
        label_color?: string | null;
        relation_at: string;
    }>;
};

export type ApiResponseVecIssuePullRequestResponse = {
    code: number;
    message: string;
    data?: Array<{
        issue: string;
        repo: string;
        number: number;
        relation_at: string;
    }>;
};

export type ApiResponseVecIssueRepoResponse = {
    code: number;
    message: string;
    data?: Array<{
        issue: string;
        repo: string;
        relation_at: string;
    }>;
};

export type ApiResponseVecIssueSubscriberResponse = {
    code: number;
    message: string;
    data?: Array<{
        issue: string;
        user_id: string;
        username: string;
        subscribed: boolean;
        created_at: string;
    }>;
};

export type ApiResponseVecLabelResponse = {
    code: number;
    message: string;
    data?: Array<{
        id: number;
        project: string;
        name: string;
        color: string;
    }>;
};

export type ApiResponseVecLikeUserInfo = {
    code: number;
    message: string;
    data?: Array<{
        uid: string;
        username: string;
        avatar_url: string;
    }>;
};

export type ApiResponseVecMentionNotificationResponse = {
    code: number;
    message: string;
    data?: Array<{
        message_id: string;
        mentioned_by: string;
        mentioned_by_name: string;
        content_preview: string;
        room_id: string;
        room_name: string;
        created_at: string;
    }>;
};

export type ApiResponseVecMergeheadInfoResponse = {
    code: number;
    message: string;
    data?: Array<{
        oid: string;
    }>;
};

export type ApiResponseVecPendingInvitationInfo = {
    code: number;
    message: string;
    data?: Array<{
        user_id: string;
        username: string;
        display_name?: string | null;
        avatar_url?: string | null;
        email?: string | null;
        role: string;
        invited_by_username?: string | null;
        invited_at: string;
        expires_at?: string | null;
    }>;
};

export type ApiResponseVecRefInfoResponse = {
    code: number;
    message: string;
    data?: Array<{
        name: string;
        oid?: string | null;
        target?: string | null;
        is_symbolic: boolean;
        is_branch: boolean;
        is_remote: boolean;
        is_tag: boolean;
        is_note: boolean;
    }>;
};

export type ApiResponseVecRoomAiResponse = {
    code: number;
    message: string;
    data?: Array<{
        room: string;
        model: string;
        version?: string | null;
        call_count: number;
        last_call_at?: string | null;
        history_limit?: number | null;
        system_prompt?: string | null;
        temperature?: number | null;
        max_tokens?: number | null;
        use_exact: boolean;
        think: boolean;
        stream: boolean;
        min_score?: number | null;
        created_at: string;
        updated_at: string;
    }>;
};

export type ApiResponseVecRoomCategoryResponse = {
    code: number;
    message: string;
    data?: Array<{
        id: string;
        project: string;
        name: string;
        position: number;
        created_by: string;
        created_at: string;
    }>;
};

export type ApiResponseVecRoomMemberResponse = {
    code: number;
    message: string;
    data?: Array<{
        room: string;
        user: string;
        user_info?: null | UserInfo;
        role: string;
        first_msg_in?: string | null;
        joined_at?: string | null;
        last_read_seq?: number | null;
        do_not_disturb: boolean;
        dnd_start_hour?: number | null;
        dnd_end_hour?: number | null;
    }>;
};

export type ApiResponseVecRoomPinResponse = {
    code: number;
    message: string;
    data?: Array<{
        room: string;
        message: string;
        pinned_by: string;
        pinned_at: string;
    }>;
};

export type ApiResponseVecRoomResponse = {
    code: number;
    message: string;
    data?: Array<{
        id: string;
        project: string;
        room_name: string;
        public: boolean;
        category?: string | null;
        created_by: string;
        created_at: string;
        last_msg_at: string;
        unread_count?: number;
    }>;
};

export type ApiResponseVecRoomThreadResponse = {
    code: number;
    message: string;
    data?: Array<{
        id: string;
        room: string;
        parent: number;
        created_by: string;
        participants: unknown;
        last_message_at: string;
        last_message_preview?: string | null;
        created_at: string;
        updated_at: string;
    }>;
};

export type ApiResponseVecSkillResponse = {
    code: number;
    message: string;
    data?: Array<{
        id: number;
        project_uuid: string;
        slug: string;
        name: string;
        description?: string | null;
        source: string;
        repo_id?: string | null;
        commit_sha?: string | null;
        blob_hash?: string | null;
        content: string;
        metadata: unknown;
        enabled: boolean;
        created_by?: string | null;
        created_at: string;
        updated_at: string;
    }>;
};

export type ApiResponseVecString = {
    code: number;
    message: string;
    data?: Array<string>;
};

export type ApiResponseVecSubscriptionInfo = {
    code: number;
    message: string;
    data?: Array<{
        id: number;
        user_uid: string;
        target_uid: string;
        subscribed_at: string;
        is_active: boolean;
    }>;
};

export type ApiResponseVecTagInfoResponse = {
    code: number;
    message: string;
    data?: Array<{
        name: string;
        oid: string;
        target: string;
        is_annotated: boolean;
        message?: string | null;
        tagger?: string | null;
        tagger_email?: string | null;
    }>;
};

export type ApiResponseVecTreeEntryResponse = {
    code: number;
    message: string;
    data?: Array<{
        name: string;
        oid: string;
        kind: string;
        filemode: number;
        is_binary: boolean;
    }>;
};

export type ApiResponseVecWatchUserInfo = {
    code: number;
    message: string;
    data?: Array<{
        uid: string;
        username: string;
        avatar_url: string;
    }>;
};

export type ApiResponseWatchCountResponse = {
    code: number;
    message: string;
    data?: {
        count: number;
    };
};

export type ApiResponseWatchUserListResponse = {
    code: number;
    message: string;
    data?: {
        users: Array<WatchUserInfo>;
    };
};

export type ApiResponseWebhookListResponse = {
    code: number;
    message: string;
    data?: {
        webhooks: Array<WebhookResponse>;
        total: number;
    };
};

export type ApiResponseWebhookResponse = {
    code: number;
    message: string;
    data?: {
        id: number;
        repo_uuid: string;
        url: string;
        content_type: string;
        secret?: string | null;
        events: WebhookEvent;
        active: boolean;
        created_at: string;
        last_delivered_at?: string | null;
        touch_count: number;
    };
};

export type ApiResponseWorkspaceBillingCurrentResponse = {
    code: number;
    message: string;
    data?: {
        workspace_id: string;
        currency: string;
        monthly_quota: number;
        balance: number;
        total_spent: number;
        month_used: number;
        cycle_start_utc: string;
        cycle_end_utc: string;
        updated_at: string;
        created_at: string;
    };
};

export type ApiResponseWorkspaceBillingHistoryResponse = {
    code: number;
    message: string;
    data?: {
        page: number;
        per_page: number;
        total: number;
        list: Array<WorkspaceBillingHistoryItem>;
    };
};

export type ApiResponseWorkspaceInfoResponse = {
    code: number;
    message: string;
    data?: {
        id: string;
        slug: string;
        name: string;
        description?: string | null;
        avatar_url?: string | null;
        plan: string;
        billing_email?: string | null;
        member_count: number;
        my_role?: string | null;
        created_at: string;
        updated_at: string;
    };
};

export type ApiResponseWorkspaceListResponse = {
    code: number;
    message: string;
    data?: {
        workspaces: Array<WorkspaceListItem>;
        total: number;
    };
};

export type ApiResponseWorkspaceMembersResponse = {
    code: number;
    message: string;
    data?: {
        members: Array<WorkspaceMemberInfo>;
        total: number;
        page: number;
        per_page: number;
    };
};

export type ApiResponseWorkspaceProjectsResponse = {
    code: number;
    message: string;
    data?: {
        projects: Array<WorkspaceProjectItem>;
        total: number;
        page: number;
        per_page: number;
    };
};

export type ApiResponseWorkspaceStatsResponse = {
    code: number;
    message: string;
    data?: {
        project_count: number;
        member_count: number;
        my_role?: string | null;
        recent_activities: Array<WorkspaceActivityItem>;
    };
};

export type ApiResponseBool = {
    code: number;
    message: string;
    data?: boolean;
};

export type ApprovalCheckResult = {
    enough_approvals: boolean;
    approvals: number;
    required: number;
    reviewers: Array<ReviewerInfo>;
};

export type ArchiveCachedResponse = {
    commit_oid: string;
    format: string;
    cached: boolean;
};

export type ArchiveEntryResponse = {
    path: string;
    oid: string;
    size: number;
    mode: number;
};

export type ArchiveInvalidateAllResponse = {
    commit_oid: string;
    count: number;
};

export type ArchiveInvalidateResponse = {
    commit_oid: string;
    format: string;
    invalidated: boolean;
};

export type ArchiveListResponse = {
    commit_oid: string;
    entries: Array<ArchiveEntryResponse>;
    total_entries: number;
};

export type ArchiveResponse = {
    commit_oid: string;
    format: string;
    size: number;
    data: string;
};

export type ArchiveSummaryResponse = {
    commit_oid: string;
    format: string;
    total_entries: number;
    total_size: number;
};

export type AuditLogParams = {
    action: string;
    details?: unknown;
};

export type AuditLogResponse = {
    id: number;
    project_uid: string;
    actor_uid: string;
    action: string;
    details?: {
        [key: string]: unknown;
    };
};

/**
 * Breakdown of a billing record.
 */
export type BillingRecord = {
    /**
     * Total cost in the billing currency.
     */
    cost: number;
    currency: string;
    input_tokens: number;
    output_tokens: number;
};

export type BlameHunkResponse = {
    commit_oid: string;
    final_start_line: number;
    final_lines: number;
    orig_start_line: number;
    orig_lines: number;
    boundary: boolean;
    orig_path?: string | null;
};

export type BlobContentResponse = {
    oid: string;
    size: number;
    is_binary: boolean;
    content: string;
};

export type BlobCreateRequest = {
    data: string;
};

export type BlobCreateResponse = {
    oid: string;
    size: number;
};

export type BlobExistsResponse = {
    oid: string;
    exists: boolean;
};

export type BlobInfoResponse = {
    oid: string;
    size: number;
    is_binary: boolean;
};

export type BlobIsBinaryResponse = {
    oid: string;
    is_binary: boolean;
};

export type BlobSizeResponse = {
    oid: string;
    size: number;
};

export type BoardResponse = {
    id: string;
    project: string;
    name: string;
    description?: string | null;
    created_by: string;
    created_at: string;
    updated_at: string;
};

export type BoardWithColumnsResponse = {
    board: BoardResponse;
    columns: Array<ColumnWithCardsResponse>;
};

export type BranchCreateRequest = {
    name: string;
    oid?: string | null;
    force?: boolean;
};

export type BranchDiffResponse = {
    ahead: number;
    behind: number;
    diverged: boolean;
};

export type BranchExistsResponse = {
    name: string;
    exists: boolean;
};

export type BranchFastForwardResponse = {
    oid: string;
};

export type BranchInfoResponse = {
    name: string;
    oid: string;
    is_head: boolean;
    is_remote: boolean;
    is_current: boolean;
    upstream?: string | null;
};

export type BranchIsAncestorResponse = {
    child: string;
    ancestor: string;
    is_ancestor: boolean;
};

export type BranchIsConflictedResponse = {
    is_conflicted: boolean;
};

export type BranchIsDetachedResponse = {
    is_detached: boolean;
};

export type BranchIsHeadResponse = {
    name: string;
    is_head: boolean;
};

export type BranchIsMergedResponse = {
    branch: string;
    into: string;
    is_merged: boolean;
};

export type BranchMergeBaseResponse = {
    branch1: string;
    branch2: string;
    base: string;
};

export type BranchMoveRequest = {
    name: string;
    new_name: string;
    force?: boolean;
};

export type BranchProtectionCreateRequest = {
    branch: string;
    forbid_push?: boolean;
    forbid_pull?: boolean;
    forbid_merge?: boolean;
    forbid_deletion?: boolean;
    forbid_force_push?: boolean;
    forbid_tag_push?: boolean;
    required_approvals?: number;
    dismiss_stale_reviews?: boolean;
    require_linear_history?: boolean;
    allow_fork_syncing?: boolean;
};

export type BranchProtectionResponse = {
    id: number;
    repo: string;
    branch: string;
    forbid_push: boolean;
    forbid_pull: boolean;
    forbid_merge: boolean;
    forbid_deletion: boolean;
    forbid_force_push: boolean;
    forbid_tag_push: boolean;
    required_approvals: number;
    dismiss_stale_reviews: boolean;
    require_linear_history: boolean;
    allow_fork_syncing: boolean;
};

export type BranchProtectionUpdateRequest = {
    branch?: string | null;
    forbid_push?: boolean | null;
    forbid_pull?: boolean | null;
    forbid_merge?: boolean | null;
    forbid_deletion?: boolean | null;
    forbid_force_push?: boolean | null;
    forbid_tag_push?: boolean | null;
    required_approvals?: number | null;
    dismiss_stale_reviews?: boolean | null;
    require_linear_history?: boolean | null;
    allow_fork_syncing?: boolean | null;
};

export type BranchRenameRequest = {
    old_name: string;
    new_name: string;
};

export type BranchSetUpstreamRequest = {
    name: string;
    upstream?: string | null;
};

export type BranchSummaryResponse = {
    local_count: number;
    remote_count: number;
    all_count: number;
};

export type BranchTrackingDiffResponse = {
    name: string;
    ahead: number;
    behind: number;
};

export type CaptchaQuery = {
    w: number;
    h: number;
    dark: boolean;
    rsa: boolean;
};

export type CaptchaResponse = {
    base64: string;
    rsa?: null | RsaResponse;
    req: CaptchaQuery;
};

export type CardResponse = {
    id: string;
    column: string;
    issue_id?: number | null;
    project?: string | null;
    title: string;
    description?: string | null;
    position: number;
    assignee_id?: string | null;
    due_date?: string | null;
    priority?: string | null;
    created_by: string;
    created_at: string;
    updated_at: string;
};

export type ChangePasswordParams = {
    old_password: string;
    new_password: string;
};

export type ColumnResponse = {
    id: string;
    board: string;
    name: string;
    position: number;
    wip_limit?: number | null;
    color?: string | null;
};

export type ColumnWithCardsResponse = {
    column: ColumnResponse;
    cards: Array<CardResponse>;
};

export type CommentCreated = {
    path: string;
    line?: number | null;
    severity: string;
};

export type CommitAmendRequest = {
    oid: string;
    author_name?: string | null;
    author_email?: string | null;
    committer_name?: string | null;
    committer_email?: string | null;
    message?: string | null;
    message_encoding?: string | null;
    tree_id?: string | null;
    update_ref?: string | null;
};

export type CommitAuthorResponse = {
    oid: string;
    author: CommitSignatureResponse;
};

export type CommitBranchesResponse = {
    data?: {
        [key: string]: Array<string>;
    };
};

export type CommitCherryPickAbortRequest = {
    reset_type?: string | null;
};

export type CommitCherryPickRequest = {
    cherrypick_oid: string;
    author_name: string;
    author_email: string;
    committer_name: string;
    committer_email: string;
    message?: string | null;
    mainline?: number | null;
    update_ref?: string | null;
};

export type CommitCountResponse = {
    count: number;
};

export type CommitCreateRequest = {
    author_name: string;
    author_email: string;
    committer_name: string;
    committer_email: string;
    message: string;
    tree_id: string;
    parent_ids: Array<string>;
    update_ref?: string | null;
};

export type CommitCreateResponse = {
    oid: string;
};

export type CommitExistsResponse = {
    oid: string;
    exists: boolean;
};

export type CommitGraphLineResponse = {
    oid: string;
    graph_chars: string;
    refs: string;
    short_message: string;
};

export type CommitGraphReactCommit = {
    oid: string;
    hash_abbrev: string;
    subject: string;
    body?: string | null;
    author_name: string;
    author_email: string;
    author_timestamp: number;
    author_time_offset: number;
    committer_name: string;
    committer_email: string;
    committer_timestamp: number;
    committer_time_offset: number;
    parent_hashes: Array<string>;
    encoding?: string | null;
    /**
     * 0-based lane index used to assign branch color.
     */
    lane_index: number;
    /**
     * Raw ASCII graph characters for supplementary rendering.
     */
    graph_chars: string;
    /**
     * Parsed refs string (e.g. "main, v1.0.0").
     */
    refs: string;
    /**
     * Tag names present on this commit.
     */
    tags: Array<string>;
    /**
     * Branch names this commit is the tip of.
     */
    branches: Array<string>;
};

export type CommitGraphReactResponse = {
    commits: Array<CommitGraphReactCommit>;
    lanes: Array<LaneInfo>;
    max_parents: number;
};

export type CommitGraphResponse = {
    lines: Array<CommitGraphLineResponse>;
    max_parents: number;
};

export type CommitIsCommitResponse = {
    oid: string;
    is_commit: boolean;
};

export type CommitIsMergeResponse = {
    oid: string;
    is_merge: boolean;
};

export type CommitIsTipResponse = {
    oid: string;
    is_tip: boolean;
};

export type CommitLogResponse = {
    data: Array<CommitMetaResponse>;
    total: number;
    page: number;
    per_page: number;
    total_pages: number;
};

export type CommitMessageResponse = {
    oid: string;
    message: string;
};

export type CommitMetaResponse = {
    oid: string;
    message: string;
    summary: string;
    author: CommitSignatureResponse;
    committer: CommitSignatureResponse;
    tree_id: string;
    parent_ids: Array<string>;
    encoding?: string | null;
};

export type CommitParentCountResponse = {
    oid: string;
    parent_count: number;
};

export type CommitParentIdsResponse = {
    oid: string;
    parent_ids: Array<string>;
};

export type CommitRefCountResponse = {
    oid: string;
    ref_count: number;
};

export type CommitRefInfoResponse = {
    name: string;
    target: string;
    is_remote: boolean;
    is_tag: boolean;
};

export type CommitReflogEntryResponse = {
    new_sha: string;
    old_sha: string;
    committer_name: string;
    committer_email: string;
    time_secs: number;
    message?: string | null;
    ref_name: string;
};

export type CommitRevertAbortRequest = {
    reset_type?: string | null;
};

export type CommitRevertRequest = {
    revert_oid: string;
    author_name: string;
    author_email: string;
    committer_name: string;
    committer_email: string;
    message?: string | null;
    mainline?: number | null;
    update_ref?: string | null;
};

export type CommitShortIdResponse = {
    oid: string;
    short_id: string;
};

export type CommitSignatureResponse = {
    name: string;
    email: string;
    time_secs: number;
    offset_minutes: number;
};

export type CommitSummaryResponse = {
    oid: string;
    summary: string;
};

export type CommitTagsResponse = {
    data?: {
        [key: string]: Array<string>;
    };
};

export type CommitTreeIdResponse = {
    oid: string;
    tree_id: string;
};

export type ConfigBoolResponse = {
    key: string;
    value: boolean;
};

export type ConfigEntryResponse = {
    name: string;
    value: string;
};

export type ConfigSetRequest = {
    key: string;
    value: string;
};

export type ConfigSnapshotResponse = {
    entries: Array<ConfigEntryResponse>;
};

export type ContextMe = {
    uid: string;
    username: string;
    display_name?: string | null;
    avatar_url?: string | null;
    has_unread_notifications: number;
};

export type ContributionHeatmapItem = {
    date: string;
    count: number;
};

export type ContributionHeatmapQuery = {
    start_date?: string | null;
    end_date?: string | null;
};

export type ContributionHeatmapResponse = {
    username: string;
    total_contributions: number;
    heatmap: Array<ContributionHeatmapItem>;
    start_date: string;
    end_date: string;
};

export type ContributorStats = {
    name: string;
    email: string;
    commits: number;
    first_commit_at?: number | null;
    last_commit_at?: number | null;
};

export type ContributorsResponse = {
    total: number;
    contributors: Array<ContributorStats>;
};

export type CreateAccessKeyParams = {
    name: string;
    scopes: Array<string>;
    expires_at?: string | null;
};

export type CreateBoardParams = {
    name: string;
    description?: string | null;
};

export type CreateCardParams = {
    column_id: string;
    title: string;
    description?: string | null;
    issue_id?: number | null;
    assignee_id?: string | null;
    due_date?: string | null;
    priority?: string | null;
};

export type CreateColumnParams = {
    name: string;
    position?: number;
    wip_limit?: number | null;
    color?: string | null;
};

export type CreateLabelParams = {
    name: string;
    color: string;
    description?: string | null;
};

export type CreateLabelRequest = {
    name: string;
    color: string;
};

export type CreateModelCapabilityRequest = {
    model_version_id: number;
    capability: string;
    is_supported?: boolean;
};

export type CreateModelParameterProfileRequest = {
    model_version_id: string;
    temperature_min: number;
    temperature_max: number;
    top_p_min: number;
    top_p_max: number;
    frequency_penalty_supported?: boolean;
    presence_penalty_supported?: boolean;
};

export type CreateModelPricingRequest = {
    model_version_id: string;
    input_price_per_1k_tokens: string;
    output_price_per_1k_tokens: string;
    currency: string;
    effective_from: string;
};

export type CreateModelRequest = {
    provider_id: string;
    name: string;
    modality: string;
    capability: string;
    context_length: number;
    max_output_tokens?: number | null;
    training_cutoff?: string | null;
    is_open_source?: boolean;
};

export type CreateModelVersionRequest = {
    model_id: string;
    version: string;
    release_date?: string | null;
    change_log?: string | null;
    is_default?: boolean;
};

export type CreateProviderRequest = {
    name: string;
    display_name: string;
    website?: string | null;
};

export type CreateSkillRequest = {
    slug: string;
    name?: string | null;
    description?: string | null;
    content: string;
    metadata?: unknown;
};

export type CreateWebhookParams = {
    url: string;
    content_type?: string | null;
    secret?: string | null;
    insecure_ssl?: boolean | null;
    events?: WebhookEvent;
    active?: boolean;
};

export type DeleteSkillResponse = {
    deleted: boolean;
    slug: string;
};

export type DescriptionQuery = {
    description: string;
};

export type DescriptionResponse = {
    description: string;
};

export type DiffDeltaResponse = {
    status: string;
    old_file: DiffFileResponse;
    new_file: DiffFileResponse;
    nfiles: number;
    hunks: Array<DiffHunkResponse>;
    lines: Array<DiffLineResponse>;
};

export type DiffFileResponse = {
    oid?: string | null;
    path?: string | null;
    size: number;
    is_binary: boolean;
};

export type DiffHunkResponse = {
    old_start: number;
    old_lines: number;
    new_start: number;
    new_lines: number;
    header: string;
};

export type DiffLineResponse = {
    content: string;
    origin: string;
    old_lineno?: number | null;
    new_lineno?: number | null;
    num_lines: number;
    content_offset: number;
};

export type DiffPatchIdResponse = {
    old_tree: string;
    new_tree: string;
    patch_id: string;
};

export type DiffResultResponse = {
    stats: DiffStatsResponse;
    deltas: Array<DiffDeltaResponse>;
};

export type DiffStatsResponse = {
    files_changed: number;
    insertions: number;
    deletions: number;
};

export type Disable2FaParams = {
    code: string;
    password: string;
};

export type EmailChangeRequest = {
    new_email: string;
    password: string;
};

export type EmailResponse = {
    email?: string | null;
};

export type EmailVerifyRequest = {
    token: string;
};

export type Enable2FaResponse = {
    secret: string;
    qr_code: string;
    backup_codes: Array<string>;
};

export type ExchangeProjectName = {
    name: string;
};

export type ExchangeProjectTitle = {
    display_name?: string | null;
    description?: string | null;
};

export type ExchangeProjectVisibility = {
    is_public: boolean;
};

/**
 * Request body for generating a PR description.
 */
export type GeneratePrDescriptionRequest = {
    /**
     * PR number to generate description for.
     */
    pr_number?: number | null;
    /**
     * Override the default AI model for this generation.
     */
    model_id?: string | null;
};

/**
 * Response from the AI description generation endpoint.
 */
export type GeneratePrDescriptionResponse = {
    description: PrDescription;
    /**
     * Markdown-formatted description ready to paste into the PR body.
     */
    markdown_body: string;
    billing?: null | BillingRecord;
};

export type Get2FaStatusResponse = {
    is_enabled: boolean;
    method?: string | null;
    has_backup_codes: boolean;
};

export type GitInitRequest = {
    path: string;
    bare?: boolean;
    initial_branch?: string | null;
};

export type GitInitResponse = {
    path: string;
    is_bare: boolean;
};

export type GitReadmeQuery = {
    ref?: string | null;
};

export type GitReadmeResponse = {
    path?: string | null;
    content?: string | null;
    size?: number | null;
    encoding?: string | null;
    truncated?: boolean;
    is_binary?: boolean;
};

export type GitUpdateRepoRequest = {
    default_branch?: string | null;
};

export type GitWatchRequest = {
    show_dashboard?: boolean;
    notify_email?: boolean;
};

export type InvitationListResponse = {
    invitations: Array<InvitationResponse>;
    total: number;
    page: number;
    per_page: number;
};

export type InvitationResponse = {
    project_uid: string;
    user_uid: string;
    invited_by: string;
    scope: string;
    accepted: boolean;
    accepted_at?: string | null;
    rejected: boolean;
    rejected_at?: string | null;
    created_at: string;
};

export type InviteUserRequest = {
    email: string;
    scope: MemberRole;
};

export type IsLikeResponse = {
    is_like: boolean;
};

export type IsWatchResponse = {
    is_watching: boolean;
};

export type IssueAddLabelRequest = {
    label_id: number;
};

export type IssueAssignUserRequest = {
    user_id: string;
};

export type IssueAssigneeResponse = {
    issue: string;
    user_id: string;
    username: string;
    assigned_at: string;
};

export type IssueCommentCreateRequest = {
    body: string;
};

export type IssueCommentListResponse = {
    comments: Array<IssueCommentResponse>;
    total: number;
    page: number;
    per_page: number;
};

export type IssueCommentResponse = {
    id: number;
    issue: string;
    author: string;
    author_username: string;
    body: string;
    created_at: string;
    updated_at: string;
};

export type IssueCommentUpdateRequest = {
    body: string;
};

export type IssueCreateRequest = {
    title: string;
    body?: string | null;
    milestone?: string | null;
};

export type IssueLabelResponse = {
    issue: string;
    label_id: number;
    label_name?: string | null;
    label_color?: string | null;
    relation_at: string;
};

export type IssueLinkPullRequestRequest = {
    repo: string;
    number: number;
};

export type IssueLinkRepoRequest = {
    repo: string;
};

export type IssueListResponse = {
    issues: Array<IssueResponse>;
    total: number;
    page: number;
    per_page: number;
};

export type IssuePullRequestResponse = {
    issue: string;
    repo: string;
    number: number;
    relation_at: string;
};

export type IssueRepoResponse = {
    issue: string;
    repo: string;
    relation_at: string;
};

export type IssueResponse = {
    id: string;
    project: string;
    number: number;
    title: string;
    body?: string | null;
    state: string;
    author: string;
    author_username?: string | null;
    milestone?: string | null;
    created_at: string;
    updated_at: string;
    closed_at?: string | null;
    created_by_ai: boolean;
};

export type IssueSearchItem = {
    uid: string;
    number: number;
    title: string;
    body?: string | null;
    state: string;
    project_uid: string;
    project_name: string;
    created_at: string;
    updated_at: string;
};

export type IssueSubscriberResponse = {
    issue: string;
    user_id: string;
    username: string;
    subscribed: boolean;
    created_at: string;
};

export type IssueSummaryResponse = {
    total: number;
    open: number;
    closed: number;
};

export type IssueUpdateRequest = {
    title?: string | null;
    body?: string | null;
    milestone?: string | null;
    state?: string | null;
};

export type JoinAnswerResponse = {
    question: string;
    answer: string;
    created_at: string;
};

export type JoinAnswersListResponse = {
    request_id: number;
    project_uid: string;
    answers: Array<JoinAnswerResponse>;
};

export type JoinRequestListResponse = {
    requests: Array<JoinRequestResponse>;
    total: number;
    page: number;
    per_page: number;
};

export type JoinRequestResponse = {
    id: number;
    project_uid: string;
    user_uid: string;
    username: string;
    status: string;
    message?: string | null;
    processed_by?: string | null;
    processed_at?: string | null;
    reject_reason?: string | null;
    created_at: string;
};

export type JoinSettingsResponse = {
    project_uid: string;
    require_approval: boolean;
    require_questions: boolean;
    questions: unknown;
};

export type LabelListResponse = {
    labels: Array<LabelResponse>;
    total: number;
};

export type LabelResponse = {
    id: number;
    project_uid: string;
    name: string;
    color: string;
    description?: string | null;
    created_at: string;
};

/**
 * Response for the gitgraph-react compatible API endpoint.
 */
export type LaneInfo = {
    /**
     * 0-based lane index.
     */
    lane_index: number;
    /**
     * Branch name if this lane has a branch tip (None for unnamed lanes).
     */
    branch_name?: string | null;
    /**
     * SHA of the commit where this lane/branch starts.
     */
    start_oid: string;
    /**
     * SHA of the commit where this lane ends (None if lane continues to last commit).
     */
    end_oid?: string | null;
};

export type LikeUserInfo = {
    uid: string;
    username: string;
    avatar_url: string;
};

export type LoginParams = {
    username: string;
    password: string;
    captcha: string;
    totp_code?: string | null;
};

export type MemberInfo = {
    user_id: string;
    username: string;
    display_name?: string | null;
    avatar_url?: string | null;
    scope: MemberRole;
    joined_at: string;
};

export type MemberListResponse = {
    members: Array<MemberInfo>;
    total: number;
    page: number;
    per_page: number;
};

/**
 * Project member role. Stored as `"owner"`, `"admin"`, or `"member"` in the database.
 */
export type MemberRole = 'Owner' | 'Admin' | 'Member';

export type MentionNotificationResponse = {
    message_id: string;
    mentioned_by: string;
    mentioned_by_name: string;
    content_preview: string;
    room_id: string;
    room_name: string;
    created_at: string;
};

export type MergeAnalysisResponse = {
    can_fast_forward: boolean;
    is_up_to_date: boolean;
    is_normal: boolean;
    analysis_flags: Array<string>;
    /**
     * Strategies supported given the current state of the PR.
     */
    supported_strategies: Array<string>;
};

export type MergeAnalysisResultInner = {
    is_none: boolean;
    is_normal: boolean;
    is_up_to_date: boolean;
    is_fast_forward: boolean;
    is_unborn: boolean;
};

export type MergeCommitsRequest = {
    local_oid: string;
    remote_oid: string;
    find_renames?: boolean;
    fail_on_conflict?: boolean;
    skip_reuc?: boolean;
    no_recursive?: boolean;
    rename_threshold?: number;
    target_limit?: number;
    recursion_limit?: number;
};

export type MergeConflictFile = {
    path: string;
    status: string;
};

export type MergeConflictResponse = {
    has_conflicts: boolean;
    conflicted_files: Array<MergeConflictFile>;
};

export type MergePreferenceResultInner = {
    is_none: boolean;
    is_no_fast_forward: boolean;
    is_fastforward_only: boolean;
};

export type MergeRequest = {
    fast_forward?: boolean;
    strategy?: MergeStrategy;
    message?: string;
};

export type MergeResponse = {
    repo: string;
    number: number;
    status: string;
    merged_by: string;
    merged_at: string;
};

export type MergeStrategy = 'mergecommit' | 'squash' | 'rebase';

export type MergeTreesRequest = {
    ancestor_oid: string;
    our_oid: string;
    their_oid: string;
    find_renames?: boolean;
    fail_on_conflict?: boolean;
    skip_reuc?: boolean;
    no_recursive?: boolean;
    rename_threshold?: number;
    target_limit?: number;
    recursion_limit?: number;
};

export type MergeheadInfoResponse = {
    oid: string;
};

export type MessageEditHistoryEntry = {
    old_content: string;
    new_content: string;
    edited_at: string;
};

export type MessageEditHistoryResponse = {
    message_id: string;
    history: Array<MessageEditHistoryEntry>;
    total_edits: number;
};

export type MessageSearchResponse = {
    messages: Array<RoomMessageResponse>;
    total: number;
};

export type ModelCapabilityResponse = {
    id: number;
    model_version_id: number;
    capability: string;
    is_supported: boolean;
    created_at: string;
};

export type ModelParameterProfileResponse = {
    id: number;
    model_version_id: string;
    temperature_min: number;
    temperature_max: number;
    top_p_min: number;
    top_p_max: number;
    frequency_penalty_supported: boolean;
    presence_penalty_supported: boolean;
};

export type ModelPricingResponse = {
    id: number;
    model_version_id: string;
    input_price_per_1k_tokens: string;
    output_price_per_1k_tokens: string;
    currency: string;
    effective_from: string;
};

export type ModelResponse = {
    id: string;
    provider_id: string;
    name: string;
    modality: string;
    capability: string;
    context_length: number;
    max_output_tokens?: number | null;
    training_cutoff?: string | null;
    is_open_source: boolean;
    status: string;
    created_at: string;
    updated_at: string;
};

export type ModelVersionResponse = {
    id: string;
    model_id: string;
    version: string;
    release_date?: string | null;
    change_log?: string | null;
    is_default: boolean;
    status: string;
    created_at: string;
};

export type MoveCardParams = {
    target_column_id: string;
    position: number;
};

export type NotificationListResponse = {
    notifications: Array<NotificationResponse>;
    total: number;
    unread_count: number;
};

export type NotificationPreferencesParams = {
    email_enabled?: boolean | null;
    in_app_enabled?: boolean | null;
    push_enabled?: boolean | null;
    digest_mode?: string | null;
    dnd_enabled?: boolean | null;
    dnd_start_minute?: number | null;
    dnd_end_minute?: number | null;
    marketing_enabled?: boolean | null;
    security_enabled?: boolean | null;
    product_enabled?: boolean | null;
};

export type NotificationPreferencesResponse = {
    user_id: string;
    email_enabled: boolean;
    in_app_enabled: boolean;
    push_enabled: boolean;
    digest_mode: string;
    dnd_enabled: boolean;
    dnd_start_minute?: number | null;
    dnd_end_minute?: number | null;
    marketing_enabled: boolean;
    security_enabled: boolean;
    product_enabled: boolean;
    created_at: string;
    updated_at: string;
};

export type NotificationResponse = {
    id: string;
    room?: string | null;
    project?: string | null;
    user_id?: string | null;
    user_info?: null | UserInfo;
    notification_type: string;
    title: string;
    content?: string | null;
    related_message_id?: string | null;
    related_user_id?: string | null;
    related_room_id?: string | null;
    metadata: unknown;
    is_read: boolean;
    is_archived: boolean;
    created_at: string;
    read_at?: string | null;
    expires_at?: string | null;
};

export type NotificationType = 'mention' | 'invitation' | 'role_change' | 'room_created' | 'room_deleted' | 'system_announcement';

export type Pager = {
    page: number;
    par_page: number;
};

export type PendingInvitationInfo = {
    user_id: string;
    username: string;
    display_name?: string | null;
    avatar_url?: string | null;
    email?: string | null;
    role: string;
    invited_by_username?: string | null;
    invited_at: string;
    expires_at?: string | null;
};

export type PrCommitResponse = {
    oid: string;
    short_oid: string;
    message: string;
    summary: string;
    author_name: string;
    author_email: string;
    authored_at: string;
    committer_name: string;
    committer_email: string;
    committed_at: string;
};

export type PrCommitsListResponse = {
    commits: Array<PrCommitResponse>;
};

/**
 * Structured PR description generated by AI.
 */
export type PrDescription = {
    /**
     * 3-5 line summary of what this PR does.
     */
    summary: string;
    /**
     * Key changes made in this PR.
     */
    changes: Array<string>;
    /**
     * Potential risks or things to watch out for.
     */
    risks?: Array<string>;
    /**
     * Suggested test scenarios.
     */
    tests?: Array<string>;
};

export type PreferencesParams = {
    language?: string | null;
    theme?: string | null;
    timezone?: string | null;
    email_notifications?: boolean | null;
    in_app_notifications?: boolean | null;
};

export type PreferencesResponse = {
    language: string;
    theme: string;
    timezone: string;
    email_notifications: boolean;
    in_app_notifications: boolean;
    created_at: string;
    updated_at: string;
};

export type ProcessJoinRequest = {
    approve: boolean;
    scope: MemberRole;
    reject_reason?: string | null;
};

export type ProfileResponse = {
    uid: string;
    username: string;
    display_name?: string | null;
    avatar_url?: string | null;
    website_url?: string | null;
    organization?: string | null;
    created_at: string;
    updated_at: string;
    last_sign_in_at?: string | null;
};

export type ProjectBillingCurrentResponse = {
    project_uid: string;
    currency: string;
    monthly_quota: number;
    balance: number;
    month_used: number;
    cycle_start_utc: string;
    cycle_end_utc: string;
    updated_at: string;
    created_at: string;
};

export type ProjectBillingHistoryItem = {
    uid: string;
    project_uid: string;
    user_uid?: string | null;
    amount: number;
    currency: string;
    reason: string;
    extra?: unknown;
    created_at: string;
};

export type ProjectBillingHistoryQuery = {
    page?: number | null;
    per_page?: number | null;
};

export type ProjectBillingHistoryResponse = {
    page: number;
    per_page: number;
    total: number;
    list: Array<ProjectBillingHistoryItem>;
};

export type ProjectInfoKeyValue = {
    key: string;
    value: string;
};

export type ProjectInfoLabel = {
    name: string;
    color: string;
};

export type ProjectInfoRelational = {
    uid: string;
    name: string;
    display_name: string;
    avatar_url?: string | null;
    description?: string | null;
    is_public: boolean;
    created_at: string;
    updated_at: string;
    created_by: string;
    created_username_name: string;
    created_display_name?: string | null;
    created_avatar_url?: string | null;
    member_count: number;
    like_count: number;
    watch_count: number;
    keys: Array<ProjectInfoKeyValue>;
    labels: Array<ProjectInfoLabel>;
    role?: null | MemberRole;
    is_like: boolean;
    is_watch: boolean;
};

export type ProjectInitParams = {
    name: string;
    description?: string | null;
    is_public: boolean;
    /**
     * Optional workspace slug to associate this project with.
     */
    workspace_slug?: string | null;
};

export type ProjectInitResponse = {
    params: ProjectInitParams;
    project: ProjectModel;
};

export type ProjectModel = {
    uid: string;
    name: string;
    display_name: string;
    avatar_url?: string | null;
    description?: string | null;
    is_public: boolean;
    workspace_id?: string | null;
    created_by: string;
    created_at: string;
    updated_at: string;
};

export type ProjectRepoCreateParams = {
    repo_name: string;
    description?: string | null;
    /**
     * Default: true. When false, skips bare git init and leaves default_branch empty;
     * the branch will be auto-detected and set on first push.
     */
    init_repo?: boolean;
    /**
     * Only used when init_repo is true.
     */
    default_branch?: string;
    is_private?: boolean;
};

export type ProjectRepoCreateResponse = {
    uid: string;
    repo_name: string;
    description?: string | null;
    default_branch: string;
    project_name: string;
    is_private: boolean;
    storage_path: string;
    created_at: string;
};

export type ProjectRepositoryItem = {
    uid: string;
    repo_name: string;
    description?: string | null;
    default_branch: string;
    project_name: string;
    is_private: boolean;
    commit_count: number;
    branch_count: number;
    tag_count: number;
    star_count: number;
    watch_count: number;
    last_commit_at?: string | null;
    ssh_clone_url: string;
    https_clone_url: string;
};

export type ProjectRepositoryPagination = {
    items: Array<ProjectRepositoryItem>;
    cursor?: string | null;
    total: number;
};

export type ProjectSearchItem = {
    uid: string;
    name: string;
    display_name: string;
    description?: string | null;
    avatar_url?: string | null;
    is_public: boolean;
    created_at: string;
    updated_at: string;
};

export type ProviderResponse = {
    id: string;
    name: string;
    display_name: string;
    website?: string | null;
    status: string;
    created_at: string;
    updated_at: string;
};

export type PullRequestCreateRequest = {
    title: string;
    body?: string | null;
    base: string;
    head: string;
    draft?: boolean;
};

export type PullRequestListResponse = {
    pull_requests: Array<PullRequestResponse>;
    total: number;
    page: number;
    per_page: number;
};

export type PullRequestResponse = {
    repo: string;
    number: number;
    issue?: string | null;
    title: string;
    body?: string | null;
    author: string;
    author_username?: string | null;
    base: string;
    head: string;
    status: string;
    merged_by?: string | null;
    created_at: string;
    updated_at: string;
    merged_at?: string | null;
    created_by_ai: boolean;
};

export type PullRequestSummaryResponse = {
    total: number;
    open: number;
    merged: number;
    closed: number;
};

export type PullRequestUpdateRequest = {
    title?: string | null;
    body?: string | null;
    base?: string | null;
    draft?: boolean | null;
};

export type QuestionSchema = {
    question: string;
};

export type ReactionAddRequest = {
    reaction: string;
};

export type ReactionListResponse = {
    reactions: Array<ReactionSummary>;
};

export type ReactionResponse = {
    user: string;
    reaction: string;
    created_at: string;
};

export type ReactionSummary = {
    reaction: string;
    count: number;
    users: Array<string>;
};

export type RefCreateRequest = {
    name: string;
    oid: string;
    force?: boolean;
    message?: string | null;
};

export type RefDeleteResponse = {
    name: string;
    oid: string;
};

export type RefExistsResponse = {
    name: string;
    exists: boolean;
};

export type RefInfoResponse = {
    name: string;
    oid?: string | null;
    target?: string | null;
    is_symbolic: boolean;
    is_branch: boolean;
    is_remote: boolean;
    is_tag: boolean;
    is_note: boolean;
};

export type RefTargetResponse = {
    name: string;
    oid?: string | null;
};

export type RefUpdateRequest = {
    name: string;
    new_oid: string;
    expected_oid?: string | null;
    message?: string | null;
};

export type RefUpdateResponse = {
    name: string;
    old_oid?: string | null;
    new_oid?: string | null;
};

export type RegisterParams = {
    username: string;
    email: string;
    password: string;
    captcha: string;
};

export type RepoSearchItem = {
    uid: string;
    name: string;
    description?: string | null;
    project_uid: string;
    project_name: string;
    is_private: boolean;
    created_at: string;
};

export type ResetPasswordParams = {
    email: string;
};

export type ReviewCommentCreateRequest = {
    body: string;
    review?: string | null;
    path?: string | null;
    side?: string | null;
    line?: number | null;
    old_line?: number | null;
    /**
     * ID of the parent comment to reply to (null = root comment).
     */
    in_reply_to?: number | null;
};

export type ReviewCommentListQuery = {
    /**
     * Filter comments by file path (e.g. "src/main.rs").
     */
    path?: string | null;
    /**
     * Filter by resolved status. Omit to return all comments.
     */
    resolved?: boolean | null;
    /**
     * If true, only return inline comments (those with a `path` set).
     * If false, only return general comments (no path).
     * Omit to return all comments.
     */
    file_only?: boolean | null;
};

export type ReviewCommentListResponse = {
    /**
     * Flat list of all comments (kept for backward compatibility).
     */
    comments: Array<ReviewCommentResponse>;
    /**
     * Comments grouped into threads (root comments with their replies).
     */
    threads: Array<ReviewCommentThread>;
    total: number;
};

/**
 * Body for replying to an existing review comment thread.
 */
export type ReviewCommentReplyRequest = {
    body: string;
};

export type ReviewCommentResponse = {
    repo: string;
    number: number;
    id: number;
    review?: string | null;
    path?: string | null;
    side?: string | null;
    line?: number | null;
    old_line?: number | null;
    body: string;
    author: string;
    author_username?: string | null;
    resolved: boolean;
    in_reply_to?: number | null;
    created_at: string;
    updated_at: string;
};

/**
 * A review comment thread: one root comment plus all its replies.
 */
export type ReviewCommentThread = {
    root: ReviewCommentResponse;
    replies: Array<ReviewCommentResponse>;
};

export type ReviewCommentUpdateRequest = {
    body: string;
};

export type ReviewListResponse = {
    reviews: Array<ReviewResponse>;
};

export type ReviewRequestCreateRequest = {
    /**
     * User ID of the reviewer to request.
     */
    reviewer: string;
};

export type ReviewRequestListResponse = {
    requests: Array<ReviewRequestResponse>;
    total: number;
};

export type ReviewRequestResponse = {
    repo: string;
    number: number;
    reviewer: string;
    reviewer_username?: string | null;
    requested_by: string;
    requested_by_username?: string | null;
    requested_at: string;
    dismissed_at?: string | null;
    dismissed_by?: string | null;
    dismissed_by_username?: string | null;
};

export type ReviewResponse = {
    repo: string;
    number: number;
    reviewer: string;
    reviewer_username?: string | null;
    state: string;
    body?: string | null;
    submitted_at?: string | null;
    created_at: string;
    updated_at: string;
};

export type ReviewSubmitRequest = {
    body?: string | null;
    state: string;
};

export type ReviewUpdateRequest = {
    body?: string | null;
};

export type ReviewerInfo = {
    reviewer: string;
    state: string;
    submitted_at?: string | null;
};

export type RoomAiResponse = {
    room: string;
    model: string;
    version?: string | null;
    call_count: number;
    last_call_at?: string | null;
    history_limit?: number | null;
    system_prompt?: string | null;
    temperature?: number | null;
    max_tokens?: number | null;
    use_exact: boolean;
    think: boolean;
    stream: boolean;
    min_score?: number | null;
    created_at: string;
    updated_at: string;
};

export type RoomAiUpsertRequest = {
    model: string;
    version?: string | null;
    history_limit?: number | null;
    system_prompt?: string | null;
    temperature?: number | null;
    max_tokens?: number | null;
    use_exact?: boolean | null;
    think?: boolean | null;
    stream?: boolean | null;
    min_score?: number | null;
};

export type RoomCategoryCreateRequest = {
    name: string;
    position?: number | null;
};

export type RoomCategoryResponse = {
    id: string;
    project: string;
    name: string;
    position: number;
    created_by: string;
    created_at: string;
};

export type RoomCategoryUpdateRequest = {
    name?: string | null;
    position?: number | null;
};

export type RoomCreateRequest = {
    room_name: string;
    room_public: boolean;
    category?: string | null;
};

export type RoomMemberAddRequest = {
    user_id: string;
    role?: string | null;
};

export type RoomMemberReadSeqRequest = {
    last_read_seq: number;
};

export type RoomMemberResponse = {
    room: string;
    user: string;
    user_info?: null | UserInfo;
    role: string;
    first_msg_in?: string | null;
    joined_at?: string | null;
    last_read_seq?: number | null;
    do_not_disturb: boolean;
    dnd_start_hour?: number | null;
    dnd_end_hour?: number | null;
};

export type RoomMemberRoleUpdateRequest = {
    user_id: string;
    role: string;
};

export type RoomMessageCreateRequest = {
    content: string;
    content_type?: string | null;
    thread_id?: string | null;
    in_reply_to?: string | null;
};

export type RoomMessageListResponse = {
    messages: Array<RoomMessageResponse>;
    total: number;
};

export type RoomMessageResponse = {
    id: string;
    seq: number;
    room: string;
    sender_type: string;
    sender_id?: string | null;
    display_name?: string | null;
    thread?: string | null;
    in_reply_to?: string | null;
    content: string;
    content_type: string;
    edited_at?: string | null;
    send_at: string;
    revoked?: string | null;
    revoked_by?: string | null;
};

export type RoomMessageUpdateRequest = {
    content: string;
};

export type RoomPinResponse = {
    room: string;
    message: string;
    pinned_by: string;
    pinned_at: string;
};

export type RoomResponse = {
    id: string;
    project: string;
    room_name: string;
    public: boolean;
    category?: string | null;
    created_by: string;
    created_at: string;
    last_msg_at: string;
    unread_count?: number;
};

export type RoomThreadCreateRequest = {
    parent_seq: number;
};

export type RoomThreadResponse = {
    id: string;
    room: string;
    parent: number;
    created_by: string;
    participants: unknown;
    last_message_at: string;
    last_message_preview?: string | null;
    created_at: string;
    updated_at: string;
};

export type RoomUpdateRequest = {
    room_name?: string | null;
    room_public?: boolean | null;
    category?: string | null;
};

export type RsaResponse = {
    public_key: string;
};

export type ScanResponse = {
    discovered: number;
    created: number;
    updated: number;
    removed: number;
};

export type SearchResponse = {
    query: string;
    projects?: null | SearchResultSetProjectSearchItem;
    repos?: null | SearchResultSetRepoSearchItem;
    issues?: null | SearchResultSetIssueSearchItem;
    users?: null | SearchResultSetUserSearchItem;
};

export type SearchResultSetIssueSearchItem = {
    items: Array<{
        uid: string;
        number: number;
        title: string;
        body?: string | null;
        state: string;
        project_uid: string;
        project_name: string;
        created_at: string;
        updated_at: string;
    }>;
    total: number;
    page: number;
    per_page: number;
};

export type SearchResultSetProjectSearchItem = {
    items: Array<{
        uid: string;
        name: string;
        display_name: string;
        description?: string | null;
        avatar_url?: string | null;
        is_public: boolean;
        created_at: string;
        updated_at: string;
    }>;
    total: number;
    page: number;
    per_page: number;
};

export type SearchResultSetRepoSearchItem = {
    items: Array<{
        uid: string;
        name: string;
        description?: string | null;
        project_uid: string;
        project_name: string;
        is_private: boolean;
        created_at: string;
    }>;
    total: number;
    page: number;
    per_page: number;
};

export type SearchResultSetUserSearchItem = {
    items: Array<{
        uid: string;
        username: string;
        display_name?: string | null;
        avatar_url?: string | null;
        organization?: string | null;
        created_at: string;
    }>;
    total: number;
    page: number;
    per_page: number;
};

export type SideBySideChangeTypeResponse = 'unchanged' | 'added' | 'removed' | 'modified' | 'empty';

/**
 * Query parameters for side-by-side diff.
 */
export type SideBySideDiffQuery = {
    /**
     * OID (SHA) of the base / old commit or tree.
     */
    base: string;
    /**
     * OID (SHA) of the head / new commit or tree.
     */
    head: string;
    /**
     * Optional path filter — only include files matching this prefix.
     */
    pathspec?: Array<string> | null;
    /**
     * Number of context lines around changes (default 3).
     */
    context_lines?: number | null;
};

export type SideBySideDiffResponse = {
    files: Array<SideBySideFileResponse>;
    total_additions: number;
    total_deletions: number;
};

export type SideBySideFileResponse = {
    path: string;
    additions: number;
    deletions: number;
    is_binary: boolean;
    is_rename: boolean;
    lines: Array<SideBySideLineResponse>;
};

export type SideBySideLineResponse = {
    left_line_no?: number | null;
    right_line_no?: number | null;
    left_content: string;
    right_content: string;
    change_type: SideBySideChangeTypeResponse;
};

export type SkillResponse = {
    id: number;
    project_uuid: string;
    slug: string;
    name: string;
    description?: string | null;
    source: string;
    repo_id?: string | null;
    commit_sha?: string | null;
    blob_hash?: string | null;
    content: string;
    metadata: unknown;
    enabled: boolean;
    created_by?: string | null;
    created_at: string;
    updated_at: string;
};

export type SshKeyListResponse = {
    keys: Array<SshKeyResponse>;
    total: number;
};

export type SshKeyResponse = {
    id: number;
    user_uid: string;
    title: string;
    fingerprint: string;
    key_type: string;
    key_bits?: number | null;
    is_verified: boolean;
    last_used_at?: string | null;
    expires_at?: string | null;
    is_revoked: boolean;
    created_at: string;
    updated_at: string;
};

export type StarCountResponse = {
    count: number;
};

export type StarUserInfo = {
    uid: string;
    username: string;
    avatar_url: string;
};

export type StarUserListResponse = {
    users: Array<StarUserInfo>;
};

export type SubmitJoinRequest = {
    message?: string | null;
    answers: Array<AnswerRequest>;
};

export type SubscriptionInfo = {
    id: number;
    user_uid: string;
    target_uid: string;
    subscribed_at: string;
    is_active: boolean;
};

export type TagCountResponse = {
    count: number;
};

export type TagCreateLightweightRequest = {
    name: string;
    target: string;
    force?: boolean;
};

export type TagCreateRequest = {
    name: string;
    target: string;
    message?: string | null;
    tagger_name?: string | null;
    tagger_email?: string | null;
    force?: boolean;
};

export type TagExistsResponse = {
    name: string;
    exists: boolean;
};

export type TagInfoResponse = {
    name: string;
    oid: string;
    target: string;
    is_annotated: boolean;
    message?: string | null;
    tagger?: string | null;
    tagger_email?: string | null;
};

export type TagIsAnnotatedResponse = {
    name: string;
    is_annotated: boolean;
};

export type TagMessageResponse = {
    name: string;
    message?: string | null;
};

export type TagRenameQuery = {
    old_name: string;
    new_name: string;
};

export type TagSummaryResponse = {
    total_count: number;
};

export type TagTaggerResponse = {
    name: string;
    tagger?: string | null;
    tagger_email?: string | null;
};

export type TagTargetResponse = {
    name: string;
    target?: string | null;
};

export type TagUpdateMessageRequest = {
    name: string;
    message: string;
    tagger_name: string;
    tagger_email: string;
};

export type TransferRepoParams = {
    target_project_name: string;
};

export type TransferRepoResponse = {
    repo_id: string;
    old_project_name: string;
    new_project_name: string;
    repo_name: string;
};

export type TreeDiffStatsResponse = {
    old_tree: string;
    new_tree: string;
    files_changed: number;
    insertions: number;
    deletions: number;
};

export type TreeEntryCountResponse = {
    oid: string;
    count: number;
};

export type TreeEntryResponse = {
    name: string;
    oid: string;
    kind: string;
    filemode: number;
    is_binary: boolean;
};

export type TreeExistsResponse = {
    oid: string;
    exists: boolean;
};

export type TreeInfoResponse = {
    oid: string;
    entry_count: number;
    is_empty: boolean;
};

export type TreeIsEmptyResponse = {
    oid: string;
    is_empty: boolean;
};

export type TriggerCodeReviewRequest = {
    pr_number?: number | null;
    model_id?: string | null;
};

export type TriggerCodeReviewResponse = {
    comments_posted: number;
    comments: Array<CommentCreated>;
    billing?: null | BillingRecord;
};

export type UpdateBoardParams = {
    name?: string | null;
    description?: string | null;
};

export type UpdateCardParams = {
    title?: string | null;
    description?: string | null;
    assignee_id?: string | null;
    due_date?: string | null;
    priority?: string | null;
};

export type UpdateColumnParams = {
    name?: string | null;
    position?: number | null;
    wip_limit?: number | null;
    color?: string | null;
};

export type UpdateJoinSettingsRequest = {
    require_approval: boolean;
    require_questions: boolean;
    questions: Array<QuestionSchema>;
};

export type UpdateLabelParams = {
    name?: string | null;
    color?: string | null;
    description?: string | null;
};

export type UpdateMemberRoleRequest = {
    user_id: string;
    scope: MemberRole;
};

export type UpdateModelCapabilityRequest = {
    is_supported?: boolean | null;
};

export type UpdateModelParameterProfileRequest = {
    temperature_min?: number | null;
    temperature_max?: number | null;
    top_p_min?: number | null;
    top_p_max?: number | null;
    frequency_penalty_supported?: boolean | null;
    presence_penalty_supported?: boolean | null;
};

export type UpdateModelPricingRequest = {
    input_price_per_1k_tokens?: string | null;
    output_price_per_1k_tokens?: string | null;
    currency?: string | null;
    effective_from?: string | null;
};

export type UpdateModelRequest = {
    display_name?: string | null;
    modality?: string | null;
    capability?: string | null;
    context_length?: number | null;
    max_output_tokens?: number | null;
    training_cutoff?: string | null;
    is_open_source?: boolean | null;
    status?: string | null;
};

export type UpdateModelVersionRequest = {
    version?: string | null;
    release_date?: string | null;
    change_log?: string | null;
    is_default?: boolean | null;
    status?: string | null;
};

export type UpdateProfileParams = {
    avatar_url?: string | null;
    website_url?: string | null;
    organization?: string | null;
};

export type UpdateProviderRequest = {
    display_name?: string | null;
    website?: string | null;
    status?: string | null;
};

export type UpdateRoleParams = {
    user_id: string;
    role: string;
};

export type UpdateSkillRequest = {
    name?: string | null;
    description?: string | null;
    content?: string | null;
    metadata?: unknown;
    enabled?: boolean | null;
};

export type UpdateSshKeyParams = {
    title?: string | null;
    expires_at?: string | null;
};

export type UpdateWebhookParams = {
    url?: string | null;
    content_type?: string | null;
    secret?: string | null;
    insecure_ssl?: boolean | null;
    events?: null | WebhookEvent;
    active?: boolean | null;
};

export type UserInfo = {
    uid: string;
    username: string;
    avatar_url?: string | null;
};

export type UserInfoExternal = {
    user_uid: string;
    username: string;
    display_name: string;
    avatar_url?: string | null;
    master_email?: string | null;
    timezone: string;
    language: string;
    website_url?: string | null;
    organization?: string | null;
    last_sign_in_at?: string | null;
    is_owner: boolean;
    is_subscribe: boolean;
    total_projects: number;
    total_repos: number;
};

export type UserProjectInfo = {
    uid: string;
    name: string;
    display_name: string;
    avatar_url?: string | null;
    description?: string | null;
    is_public: boolean;
    created_at: string;
    updated_at: string;
    member_count: number;
    is_member: boolean;
};

export type UserProjectsQuery = {
    page?: number | null;
    per_page?: number | null;
};

export type UserProjectsResponse = {
    username: string;
    projects: Array<UserProjectInfo>;
    total_count: number;
};

export type UserRepoInfo = {
    uid: string;
    repo_name: string;
    description?: string | null;
    default_branch: string;
    is_private: boolean;
    storage_path: string;
    created_at: string;
    updated_at: string;
};

export type UserReposQuery = {
    page?: number | null;
    per_page?: number | null;
};

export type UserReposResponse = {
    username: string;
    repos: Array<UserRepoInfo>;
    total_count: number;
};

export type UserSearchItem = {
    uid: string;
    username: string;
    display_name?: string | null;
    avatar_url?: string | null;
    organization?: string | null;
    created_at: string;
};

export type Verify2FaParams = {
    code: string;
};

export type WatchCountResponse = {
    count: number;
};

export type WatchUserInfo = {
    uid: string;
    username: string;
    avatar_url: string;
};

export type WatchUserListResponse = {
    users: Array<WatchUserInfo>;
};

export type WebhookEvent = {
    push?: boolean;
    tag_push?: boolean;
    pull_request?: boolean;
    issue_comment?: boolean;
    release?: boolean;
};

export type WebhookListResponse = {
    webhooks: Array<WebhookResponse>;
    total: number;
};

export type WebhookResponse = {
    id: number;
    repo_uuid: string;
    url: string;
    content_type: string;
    secret?: string | null;
    events: WebhookEvent;
    active: boolean;
    created_at: string;
    last_delivered_at?: string | null;
    touch_count: number;
};

export type WorkspaceActivityItem = {
    id: number;
    project_name: string;
    event_type: string;
    title: string;
    content?: string | null;
    actor_name: string;
    actor_avatar?: string | null;
    created_at: string;
};

export type WorkspaceBillingAddCreditParams = {
    amount: number;
    reason?: string | null;
};

export type WorkspaceBillingCurrentResponse = {
    workspace_id: string;
    currency: string;
    monthly_quota: number;
    balance: number;
    total_spent: number;
    month_used: number;
    cycle_start_utc: string;
    cycle_end_utc: string;
    updated_at: string;
    created_at: string;
};

export type WorkspaceBillingHistoryItem = {
    uid: string;
    workspace_id: string;
    user_id?: string | null;
    amount: number;
    currency: string;
    reason: string;
    extra?: unknown;
    created_at: string;
};

export type WorkspaceBillingHistoryQuery = {
    page?: number | null;
    per_page?: number | null;
};

export type WorkspaceBillingHistoryResponse = {
    page: number;
    per_page: number;
    total: number;
    list: Array<WorkspaceBillingHistoryItem>;
};

export type WorkspaceInfoResponse = {
    id: string;
    slug: string;
    name: string;
    description?: string | null;
    avatar_url?: string | null;
    plan: string;
    billing_email?: string | null;
    member_count: number;
    my_role?: string | null;
    created_at: string;
    updated_at: string;
};

export type WorkspaceInitParams = {
    slug: string;
    name: string;
    description?: string | null;
};

export type WorkspaceInviteAcceptParams = {
    token: string;
};

export type WorkspaceInviteParams = {
    email: string;
    role?: string | null;
};

export type WorkspaceListItem = {
    id: string;
    slug: string;
    name: string;
    description?: string | null;
    avatar_url?: string | null;
    plan: string;
    my_role: string;
    created_at: string;
};

export type WorkspaceListResponse = {
    workspaces: Array<WorkspaceListItem>;
    total: number;
};

export type WorkspaceMemberInfo = {
    user_id: string;
    username: string;
    display_name?: string | null;
    avatar_url?: string | null;
    role: string;
    joined_at: string;
    /**
     * Username of the person who invited this member.
     */
    invited_by_username?: string | null;
};

export type WorkspaceMembersResponse = {
    members: Array<WorkspaceMemberInfo>;
    total: number;
    page: number;
    per_page: number;
};

export type WorkspaceProjectItem = {
    uid: string;
    name: string;
    display_name: string;
    avatar_url?: string | null;
    description?: string | null;
    is_public: boolean;
    created_at: string;
    updated_at: string;
};

export type WorkspaceProjectsQuery = {
    page?: number | null;
    per_page?: number | null;
};

export type WorkspaceProjectsResponse = {
    projects: Array<WorkspaceProjectItem>;
    total: number;
    page: number;
    per_page: number;
};

export type WorkspaceStatsResponse = {
    project_count: number;
    member_count: number;
    my_role?: string | null;
    recent_activities: Array<WorkspaceActivityItem>;
};

export type WorkspaceUpdateParams = {
    name?: string | null;
    description?: string | null;
    avatar_url?: string | null;
    billing_email?: string | null;
};

export type ModelCapabilityCreateData = {
    body: CreateModelCapabilityRequest;
    path?: never;
    query?: never;
    url: '/api/agents/capabilities';
};

export type ModelCapabilityCreateErrors = {
    401: unknown;
    403: unknown;
};

export type ModelCapabilityCreateResponses = {
    200: ModelCapabilityResponse;
};

export type ModelCapabilityCreateResponse = ModelCapabilityCreateResponses[keyof ModelCapabilityCreateResponses];

export type ModelCapabilityDeleteData = {
    body?: never;
    path: {
        id: number;
    };
    query?: never;
    url: '/api/agents/capabilities/{id}';
};

export type ModelCapabilityDeleteErrors = {
    401: unknown;
    403: unknown;
    404: unknown;
};

export type ModelCapabilityDeleteResponses = {
    200: unknown;
};

export type ModelCapabilityGetData = {
    body?: never;
    path: {
        id: number;
    };
    query?: never;
    url: '/api/agents/capabilities/{id}';
};

export type ModelCapabilityGetErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    404: unknown;
};

export type ModelCapabilityGetResponses = {
    200: ModelCapabilityResponse;
};

export type ModelCapabilityGetResponse = ModelCapabilityGetResponses[keyof ModelCapabilityGetResponses];

export type ModelCapabilityUpdateData = {
    body: UpdateModelCapabilityRequest;
    path: {
        id: number;
    };
    query?: never;
    url: '/api/agents/capabilities/{id}';
};

export type ModelCapabilityUpdateErrors = {
    401: unknown;
    403: unknown;
    404: unknown;
};

export type ModelCapabilityUpdateResponses = {
    200: ModelCapabilityResponse;
};

export type ModelCapabilityUpdateResponse = ModelCapabilityUpdateResponses[keyof ModelCapabilityUpdateResponses];

export type TriggerCodeReviewData = {
    body: TriggerCodeReviewRequest;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/agents/code-review/{namespace}/{repo}';
};

export type TriggerCodeReviewErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Repository or PR not found
     */
    404: unknown;
};

export type TriggerCodeReviewResponses = {
    /**
     * AI code review triggered
     */
    200: TriggerCodeReviewResponse;
};

export type TriggerCodeReviewResponse2 = TriggerCodeReviewResponses[keyof TriggerCodeReviewResponses];

export type ModelListData = {
    body?: never;
    path?: never;
    query?: {
        provider_id?: string | null;
    };
    url: '/api/agents/models';
};

export type ModelListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type ModelListResponses = {
    200: Array<ModelResponse>;
};

export type ModelListResponse = ModelListResponses[keyof ModelListResponses];

export type ModelCreateData = {
    body: CreateModelRequest;
    path?: never;
    query?: never;
    url: '/api/agents/models';
};

export type ModelCreateErrors = {
    401: unknown;
    403: unknown;
    404: unknown;
};

export type ModelCreateResponses = {
    200: ModelResponse;
};

export type ModelCreateResponse = ModelCreateResponses[keyof ModelCreateResponses];

export type ModelDeleteData = {
    body?: never;
    path: {
        id: string;
    };
    query?: never;
    url: '/api/agents/models/{id}';
};

export type ModelDeleteErrors = {
    401: unknown;
    403: unknown;
    404: unknown;
};

export type ModelDeleteResponses = {
    200: unknown;
};

export type ModelGetData = {
    body?: never;
    path: {
        id: string;
    };
    query?: never;
    url: '/api/agents/models/{id}';
};

export type ModelGetErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    404: unknown;
};

export type ModelGetResponses = {
    200: ModelResponse;
};

export type ModelGetResponse = ModelGetResponses[keyof ModelGetResponses];

export type ModelUpdateData = {
    body: UpdateModelRequest;
    path: {
        id: string;
    };
    query?: never;
    url: '/api/agents/models/{id}';
};

export type ModelUpdateErrors = {
    401: unknown;
    403: unknown;
    404: unknown;
};

export type ModelUpdateResponses = {
    200: ModelResponse;
};

export type ModelUpdateResponse = ModelUpdateResponses[keyof ModelUpdateResponses];

export type ModelParameterProfileCreateData = {
    body: CreateModelParameterProfileRequest;
    path?: never;
    query?: never;
    url: '/api/agents/parameters';
};

export type ModelParameterProfileCreateErrors = {
    401: unknown;
    403: unknown;
};

export type ModelParameterProfileCreateResponses = {
    200: ModelParameterProfileResponse;
};

export type ModelParameterProfileCreateResponse = ModelParameterProfileCreateResponses[keyof ModelParameterProfileCreateResponses];

export type ModelParameterProfileDeleteData = {
    body?: never;
    path: {
        id: number;
    };
    query?: never;
    url: '/api/agents/parameters/{id}';
};

export type ModelParameterProfileDeleteErrors = {
    401: unknown;
    403: unknown;
    404: unknown;
};

export type ModelParameterProfileDeleteResponses = {
    200: unknown;
};

export type ModelParameterProfileGetData = {
    body?: never;
    path: {
        id: number;
    };
    query?: never;
    url: '/api/agents/parameters/{id}';
};

export type ModelParameterProfileGetErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    404: unknown;
};

export type ModelParameterProfileGetResponses = {
    200: ModelParameterProfileResponse;
};

export type ModelParameterProfileGetResponse = ModelParameterProfileGetResponses[keyof ModelParameterProfileGetResponses];

export type ModelParameterProfileUpdateData = {
    body: UpdateModelParameterProfileRequest;
    path: {
        id: number;
    };
    query?: never;
    url: '/api/agents/parameters/{id}';
};

export type ModelParameterProfileUpdateErrors = {
    401: unknown;
    403: unknown;
    404: unknown;
};

export type ModelParameterProfileUpdateResponses = {
    200: ModelParameterProfileResponse;
};

export type ModelParameterProfileUpdateResponse = ModelParameterProfileUpdateResponses[keyof ModelParameterProfileUpdateResponses];

export type GeneratePrDescriptionData = {
    body: GeneratePrDescriptionRequest;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/agents/pr-description/{namespace}/{repo}';
};

export type GeneratePrDescriptionErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Repository or PR not found
     */
    404: unknown;
};

export type GeneratePrDescriptionResponses = {
    /**
     * AI-generated PR description
     */
    200: GeneratePrDescriptionResponse;
};

export type GeneratePrDescriptionResponse2 = GeneratePrDescriptionResponses[keyof GeneratePrDescriptionResponses];

export type ModelPricingCreateData = {
    body: CreateModelPricingRequest;
    path?: never;
    query?: never;
    url: '/api/agents/pricing';
};

export type ModelPricingCreateErrors = {
    401: unknown;
    403: unknown;
};

export type ModelPricingCreateResponses = {
    200: ModelPricingResponse;
};

export type ModelPricingCreateResponse = ModelPricingCreateResponses[keyof ModelPricingCreateResponses];

export type ModelPricingDeleteData = {
    body?: never;
    path: {
        id: number;
    };
    query?: never;
    url: '/api/agents/pricing/{id}';
};

export type ModelPricingDeleteErrors = {
    401: unknown;
    403: unknown;
    404: unknown;
};

export type ModelPricingDeleteResponses = {
    200: unknown;
};

export type ModelPricingGetData = {
    body?: never;
    path: {
        id: number;
    };
    query?: never;
    url: '/api/agents/pricing/{id}';
};

export type ModelPricingGetErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    404: unknown;
};

export type ModelPricingGetResponses = {
    200: ModelPricingResponse;
};

export type ModelPricingGetResponse = ModelPricingGetResponses[keyof ModelPricingGetResponses];

export type ModelPricingUpdateData = {
    body: UpdateModelPricingRequest;
    path: {
        id: number;
    };
    query?: never;
    url: '/api/agents/pricing/{id}';
};

export type ModelPricingUpdateErrors = {
    401: unknown;
    403: unknown;
    404: unknown;
};

export type ModelPricingUpdateResponses = {
    200: ModelPricingResponse;
};

export type ModelPricingUpdateResponse = ModelPricingUpdateResponses[keyof ModelPricingUpdateResponses];

export type ProviderListData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/agents/providers';
};

export type ProviderListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type ProviderListResponses = {
    200: Array<ProviderResponse>;
};

export type ProviderListResponse = ProviderListResponses[keyof ProviderListResponses];

export type ProviderCreateData = {
    body: CreateProviderRequest;
    path?: never;
    query?: never;
    url: '/api/agents/providers';
};

export type ProviderCreateErrors = {
    401: unknown;
    403: unknown;
};

export type ProviderCreateResponses = {
    200: ProviderResponse;
};

export type ProviderCreateResponse = ProviderCreateResponses[keyof ProviderCreateResponses];

export type ProviderDeleteData = {
    body?: never;
    path: {
        id: string;
    };
    query?: never;
    url: '/api/agents/providers/{id}';
};

export type ProviderDeleteErrors = {
    401: unknown;
    403: unknown;
    404: unknown;
};

export type ProviderDeleteResponses = {
    200: unknown;
};

export type ProviderGetData = {
    body?: never;
    path: {
        /**
         * Provider UUID
         */
        id: string;
    };
    query?: never;
    url: '/api/agents/providers/{id}';
};

export type ProviderGetErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    404: unknown;
};

export type ProviderGetResponses = {
    200: ProviderResponse;
};

export type ProviderGetResponse = ProviderGetResponses[keyof ProviderGetResponses];

export type ProviderUpdateData = {
    body: UpdateProviderRequest;
    path: {
        id: string;
    };
    query?: never;
    url: '/api/agents/providers/{id}';
};

export type ProviderUpdateErrors = {
    401: unknown;
    403: unknown;
    404: unknown;
};

export type ProviderUpdateResponses = {
    200: ProviderResponse;
};

export type ProviderUpdateResponse = ProviderUpdateResponses[keyof ProviderUpdateResponses];

export type ModelVersionListData = {
    body?: never;
    path?: never;
    query?: {
        model_id?: string | null;
    };
    url: '/api/agents/versions';
};

export type ModelVersionListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type ModelVersionListResponses = {
    200: Array<ModelVersionResponse>;
};

export type ModelVersionListResponse = ModelVersionListResponses[keyof ModelVersionListResponses];

export type ModelVersionCreateData = {
    body: CreateModelVersionRequest;
    path?: never;
    query?: never;
    url: '/api/agents/versions';
};

export type ModelVersionCreateErrors = {
    401: unknown;
    403: unknown;
};

export type ModelVersionCreateResponses = {
    200: ModelVersionResponse;
};

export type ModelVersionCreateResponse = ModelVersionCreateResponses[keyof ModelVersionCreateResponses];

export type ModelVersionDeleteData = {
    body?: never;
    path: {
        id: string;
    };
    query?: never;
    url: '/api/agents/versions/{id}';
};

export type ModelVersionDeleteErrors = {
    401: unknown;
    403: unknown;
    404: unknown;
};

export type ModelVersionDeleteResponses = {
    200: unknown;
};

export type ModelVersionGetData = {
    body?: never;
    path: {
        id: string;
    };
    query?: never;
    url: '/api/agents/versions/{id}';
};

export type ModelVersionGetErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    404: unknown;
};

export type ModelVersionGetResponses = {
    200: ModelVersionResponse;
};

export type ModelVersionGetResponse = ModelVersionGetResponses[keyof ModelVersionGetResponses];

export type ModelVersionUpdateData = {
    body: UpdateModelVersionRequest;
    path: {
        id: string;
    };
    query?: never;
    url: '/api/agents/versions/{id}';
};

export type ModelVersionUpdateErrors = {
    401: unknown;
    403: unknown;
    404: unknown;
};

export type ModelVersionUpdateResponses = {
    200: ModelVersionResponse;
};

export type ModelVersionUpdateResponse = ModelVersionUpdateResponses[keyof ModelVersionUpdateResponses];

export type ModelCapabilityListData = {
    body?: never;
    path: {
        model_version_id: number;
    };
    query?: never;
    url: '/api/agents/versions/{model_version_id}/capabilities';
};

export type ModelCapabilityListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type ModelCapabilityListResponses = {
    200: Array<ModelCapabilityResponse>;
};

export type ModelCapabilityListResponse = ModelCapabilityListResponses[keyof ModelCapabilityListResponses];

export type ModelParameterProfileListData = {
    body?: never;
    path: {
        model_version_id: string;
    };
    query?: never;
    url: '/api/agents/versions/{model_version_id}/parameters';
};

export type ModelParameterProfileListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type ModelParameterProfileListResponses = {
    200: Array<ModelParameterProfileResponse>;
};

export type ModelParameterProfileListResponse = ModelParameterProfileListResponses[keyof ModelParameterProfileListResponses];

export type ModelPricingListData = {
    body?: never;
    path: {
        model_version_id: string;
    };
    query?: never;
    url: '/api/agents/versions/{model_version_id}/pricing';
};

export type ModelPricingListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type ModelPricingListResponses = {
    200: Array<ModelPricingResponse>;
};

export type ModelPricingListResponse = ModelPricingListResponses[keyof ModelPricingListResponses];

export type Api2FaDisableData = {
    body: Disable2FaParams;
    path?: never;
    query?: never;
    url: '/api/auth/2fa/disable';
};

export type Api2FaDisableErrors = {
    /**
     * 2FA not enabled or invalid code/password
     */
    400: unknown;
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: ApiResponseApiError;
    /**
     * Internal server error
     */
    500: unknown;
};

export type Api2FaDisableError = Api2FaDisableErrors[keyof Api2FaDisableErrors];

export type Api2FaDisableResponses = {
    /**
     * 2FA disabled
     */
    200: unknown;
};

export type Api2FaEnableData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/auth/2fa/enable';
};

export type Api2FaEnableErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: ApiResponseApiError;
    /**
     * 2FA already enabled
     */
    409: unknown;
    /**
     * Internal server error
     */
    500: unknown;
};

export type Api2FaEnableError = Api2FaEnableErrors[keyof Api2FaEnableErrors];

export type Api2FaEnableResponses = {
    /**
     * 2FA setup initiated
     */
    200: Enable2FaResponse;
};

export type Api2FaEnableResponse = Api2FaEnableResponses[keyof Api2FaEnableResponses];

export type Api2FaStatusData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/auth/2fa/status';
};

export type Api2FaStatusErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: ApiResponseApiError;
    /**
     * Internal server error
     */
    500: unknown;
};

export type Api2FaStatusError = Api2FaStatusErrors[keyof Api2FaStatusErrors];

export type Api2FaStatusResponses = {
    /**
     * 2FA status
     */
    200: Get2FaStatusResponse;
};

export type Api2FaStatusResponse = Api2FaStatusResponses[keyof Api2FaStatusResponses];

export type Api2FaVerifyData = {
    body: Verify2FaParams;
    path?: never;
    query?: never;
    url: '/api/auth/2fa/verify';
};

export type Api2FaVerifyErrors = {
    /**
     * 2FA not set up
     */
    400: unknown;
    /**
     * Unauthorized or invalid code
     */
    401: unknown;
    /**
     * Not found
     */
    404: ApiResponseApiError;
    /**
     * Internal server error
     */
    500: unknown;
};

export type Api2FaVerifyError = Api2FaVerifyErrors[keyof Api2FaVerifyErrors];

export type Api2FaVerifyResponses = {
    /**
     * 2FA verified and enabled
     */
    200: unknown;
};

export type ApiAuthCaptchaData = {
    body: CaptchaQuery;
    path?: never;
    query?: never;
    url: '/api/auth/captcha';
};

export type ApiAuthCaptchaErrors = {
    /**
     * Not found
     */
    404: ApiResponseApiError;
    /**
     * Internal server error
     */
    500: ApiResponseApiError;
};

export type ApiAuthCaptchaError = ApiAuthCaptchaErrors[keyof ApiAuthCaptchaErrors];

export type ApiAuthCaptchaResponses = {
    /**
     * Captcha generated
     */
    200: ApiResponseCaptchaResponse;
};

export type ApiAuthCaptchaResponse = ApiAuthCaptchaResponses[keyof ApiAuthCaptchaResponses];

export type ApiEmailGetData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/auth/email';
};

export type ApiEmailGetErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type ApiEmailGetResponses = {
    /**
     * Current email address
     */
    200: ApiResponseEmailResponse;
};

export type ApiEmailGetResponse = ApiEmailGetResponses[keyof ApiEmailGetResponses];

export type ApiEmailChangeData = {
    body: EmailChangeRequest;
    path?: never;
    query?: never;
    url: '/api/auth/email/change';
};

export type ApiEmailChangeErrors = {
    /**
     * Unauthorized or invalid password
     */
    401: unknown;
    /**
     * Email already in use
     */
    409: unknown;
};

export type ApiEmailChangeResponses = {
    /**
     * Verification email sent
     */
    200: ApiResponseString;
};

export type ApiEmailChangeResponse = ApiEmailChangeResponses[keyof ApiEmailChangeResponses];

export type ApiEmailVerifyData = {
    body: EmailVerifyRequest;
    path?: never;
    query?: never;
    url: '/api/auth/email/verify';
};

export type ApiEmailVerifyErrors = {
    /**
     * Invalid or expired token
     */
    400: unknown;
};

export type ApiEmailVerifyResponses = {
    /**
     * Email updated successfully
     */
    200: ApiResponseString;
};

export type ApiEmailVerifyResponse = ApiEmailVerifyResponses[keyof ApiEmailVerifyResponses];

export type ApiAuthLoginData = {
    body: LoginParams;
    path?: never;
    query?: never;
    url: '/api/auth/login';
};

export type ApiAuthLoginErrors = {
    /**
     * Bad request
     */
    400: ApiResponseApiError;
    /**
     * Invalid credentials
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
    /**
     * Two-factor authentication required
     */
    428: ApiResponseApiError;
};

export type ApiAuthLoginError = ApiAuthLoginErrors[keyof ApiAuthLoginErrors];

export type ApiAuthLoginResponses = {
    /**
     * Login successful
     */
    200: ApiResponseString;
};

export type ApiAuthLoginResponse = ApiAuthLoginResponses[keyof ApiAuthLoginResponses];

export type ApiAuthLogoutData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/auth/logout';
};

export type ApiAuthLogoutErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
    /**
     * Internal server error
     */
    500: ApiResponseApiError;
};

export type ApiAuthLogoutError = ApiAuthLogoutErrors[keyof ApiAuthLogoutErrors];

export type ApiAuthLogoutResponses = {
    /**
     * Logout successful
     */
    200: ApiResponseString;
};

export type ApiAuthLogoutResponse = ApiAuthLogoutResponses[keyof ApiAuthLogoutResponses];

export type ApiAuthMeData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/auth/me';
};

export type ApiAuthMeErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
    /**
     * Internal server error
     */
    500: ApiResponseApiError;
};

export type ApiAuthMeError = ApiAuthMeErrors[keyof ApiAuthMeErrors];

export type ApiAuthMeResponses = {
    /**
     * Current user info
     */
    200: ApiResponseContextMe;
};

export type ApiAuthMeResponse = ApiAuthMeResponses[keyof ApiAuthMeResponses];

export type ApiUserChangePasswordData = {
    body: ChangePasswordParams;
    path?: never;
    query?: never;
    url: '/api/auth/password/change';
};

export type ApiUserChangePasswordErrors = {
    /**
     * Bad request
     */
    400: ApiResponseApiError;
    /**
     * Unauthorized or invalid password
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
    /**
     * Internal server error
     */
    500: ApiResponseApiError;
};

export type ApiUserChangePasswordError = ApiUserChangePasswordErrors[keyof ApiUserChangePasswordErrors];

export type ApiUserChangePasswordResponses = {
    /**
     * Password changed successfully
     */
    200: ApiResponseString;
};

export type ApiUserChangePasswordResponse = ApiUserChangePasswordResponses[keyof ApiUserChangePasswordResponses];

export type ApiUserRequestPasswordResetData = {
    body: ResetPasswordParams;
    path?: never;
    query?: never;
    url: '/api/auth/password/reset';
};

export type ApiUserRequestPasswordResetErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * User not found
     */
    404: ApiResponseApiError;
    /**
     * Internal server error
     */
    500: ApiResponseApiError;
};

export type ApiUserRequestPasswordResetError = ApiUserRequestPasswordResetErrors[keyof ApiUserRequestPasswordResetErrors];

export type ApiUserRequestPasswordResetResponses = {
    /**
     * Password reset email sent
     */
    200: ApiResponseString;
};

export type ApiUserRequestPasswordResetResponse = ApiUserRequestPasswordResetResponses[keyof ApiUserRequestPasswordResetResponses];

export type ApiAuthRegisterData = {
    body: RegisterParams;
    path?: never;
    query?: never;
    url: '/api/auth/register';
};

export type ApiAuthRegisterErrors = {
    /**
     * Bad request
     */
    400: ApiResponseApiError;
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
    /**
     * Username or email already exists
     */
    409: ApiResponseApiError;
    /**
     * Internal server error
     */
    500: ApiResponseApiError;
};

export type ApiAuthRegisterError = ApiAuthRegisterErrors[keyof ApiAuthRegisterErrors];

export type ApiAuthRegisterResponses = {
    /**
     * Registration successful
     */
    200: ApiResponseApiError;
};

export type ApiAuthRegisterResponse = ApiAuthRegisterResponses[keyof ApiAuthRegisterResponses];

export type GitInitBareData = {
    body: GitInitRequest;
    path?: never;
    query?: never;
    url: '/api/git/init';
};

export type GitInitBareErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitInitBareError = GitInitBareErrors[keyof GitInitBareErrors];

export type GitInitBareResponses = {
    /**
     * Bare repository initialized
     */
    200: ApiResponseGitInitResponse;
};

export type GitInitBareResponse = GitInitBareResponses[keyof GitInitBareResponses];

export type GitIsRepoData = {
    body?: never;
    path: {
        /**
         * Repository path
         */
        path: string;
    };
    query?: never;
    url: '/api/git/is-repo/{path}';
};

export type GitIsRepoErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitIsRepoError = GitIsRepoErrors[keyof GitIsRepoErrors];

export type GitIsRepoResponses = {
    /**
     * Check if path is a repository
     */
    200: ApiResponseBool;
};

export type GitIsRepoResponse = GitIsRepoResponses[keyof GitIsRepoResponses];

export type GitOpenData = {
    body?: never;
    path: {
        /**
         * Repository path
         */
        path: string;
    };
    query?: never;
    url: '/api/git/open/{path}';
};

export type GitOpenErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitOpenError = GitOpenErrors[keyof GitOpenErrors];

export type GitOpenResponses = {
    /**
     * Open repository
     */
    200: ApiResponseGitInitResponse;
};

export type GitOpenResponse = GitOpenResponses[keyof GitOpenResponses];

export type GitOpenWorkdirData = {
    body?: never;
    path: {
        /**
         * Repository path
         */
        path: string;
    };
    query?: never;
    url: '/api/git/open/{path}/workdir';
};

export type GitOpenWorkdirErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitOpenWorkdirError = GitOpenWorkdirErrors[keyof GitOpenWorkdirErrors];

export type GitOpenWorkdirResponses = {
    /**
     * Open repository working directory
     */
    200: ApiResponseGitInitResponse;
};

export type GitOpenWorkdirResponse = GitOpenWorkdirResponses[keyof GitOpenWorkdirResponses];

export type IssueListData = {
    body?: never;
    path: {
        project: string;
    };
    query?: {
        state?: string;
        page?: number;
        per_page?: number;
    };
    url: '/api/issue/{project}/issues';
};

export type IssueListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueListResponses = {
    /**
     * List issues
     */
    200: ApiResponseIssueListResponse;
};

export type IssueListResponse2 = IssueListResponses[keyof IssueListResponses];

export type IssueCreateData = {
    body: IssueCreateRequest;
    path: {
        project: string;
    };
    query?: never;
    url: '/api/issue/{project}/issues';
};

export type IssueCreateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueCreateResponses = {
    /**
     * Create issue
     */
    200: ApiResponseIssueResponse;
};

export type IssueCreateResponse = IssueCreateResponses[keyof IssueCreateResponses];

export type IssueSummaryData = {
    body?: never;
    path: {
        project: string;
    };
    query?: never;
    url: '/api/issue/{project}/issues/summary';
};

export type IssueSummaryErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueSummaryResponses = {
    /**
     * Get issue summary
     */
    200: ApiResponseIssueSummaryResponse;
};

export type IssueSummaryResponse2 = IssueSummaryResponses[keyof IssueSummaryResponses];

export type IssueDeleteData = {
    body?: never;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}';
};

export type IssueDeleteErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueDeleteResponses = {
    /**
     * Delete issue
     */
    200: unknown;
};

export type IssueGetData = {
    body?: never;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}';
};

export type IssueGetErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueGetResponses = {
    /**
     * Get issue
     */
    200: ApiResponseIssueResponse;
};

export type IssueGetResponse = IssueGetResponses[keyof IssueGetResponses];

export type IssueUpdateData = {
    body: IssueUpdateRequest;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}';
};

export type IssueUpdateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueUpdateResponses = {
    /**
     * Update issue
     */
    200: ApiResponseIssueResponse;
};

export type IssueUpdateResponse = IssueUpdateResponses[keyof IssueUpdateResponses];

export type IssueAssigneeListData = {
    body?: never;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/assignees';
};

export type IssueAssigneeListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueAssigneeListResponses = {
    /**
     * List issue assignees
     */
    200: ApiResponseVecIssueAssigneeResponse;
};

export type IssueAssigneeListResponse = IssueAssigneeListResponses[keyof IssueAssigneeListResponses];

export type IssueAssigneeAddData = {
    body: IssueAssignUserRequest;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/assignees';
};

export type IssueAssigneeAddErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueAssigneeAddResponses = {
    /**
     * Add assignee to issue
     */
    200: ApiResponseIssueAssigneeResponse;
};

export type IssueAssigneeAddResponse = IssueAssigneeAddResponses[keyof IssueAssigneeAddResponses];

export type IssueAssigneeRemoveData = {
    body?: never;
    path: {
        project: string;
        number: number;
        assignee_id: string;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/assignees/{assignee_id}';
};

export type IssueAssigneeRemoveErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueAssigneeRemoveResponses = {
    /**
     * Remove assignee from issue
     */
    200: unknown;
};

export type IssueCloseData = {
    body?: never;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/close';
};

export type IssueCloseErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueCloseResponses = {
    /**
     * Close issue
     */
    200: ApiResponseIssueResponse;
};

export type IssueCloseResponse = IssueCloseResponses[keyof IssueCloseResponses];

export type IssueCommentListData = {
    body?: never;
    path: {
        project: string;
        number: number;
    };
    query?: {
        page?: number;
        per_page?: number;
    };
    url: '/api/issue/{project}/issues/{number}/comments';
};

export type IssueCommentListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueCommentListResponses = {
    /**
     * List issue comments
     */
    200: ApiResponseIssueCommentListResponse;
};

export type IssueCommentListResponse2 = IssueCommentListResponses[keyof IssueCommentListResponses];

export type IssueCommentCreateData = {
    body: IssueCommentCreateRequest;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/comments';
};

export type IssueCommentCreateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueCommentCreateResponses = {
    /**
     * Create issue comment
     */
    200: ApiResponseIssueCommentResponse;
};

export type IssueCommentCreateResponse = IssueCommentCreateResponses[keyof IssueCommentCreateResponses];

export type IssueCommentDeleteData = {
    body?: never;
    path: {
        project: string;
        number: number;
        comment_id: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/comments/{comment_id}';
};

export type IssueCommentDeleteErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueCommentDeleteResponses = {
    /**
     * Delete issue comment
     */
    200: unknown;
};

export type IssueCommentGetData = {
    body?: never;
    path: {
        project: string;
        number: number;
        comment_id: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/comments/{comment_id}';
};

export type IssueCommentGetErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueCommentGetResponses = {
    /**
     * Get issue comment
     */
    200: ApiResponseIssueCommentResponse;
};

export type IssueCommentGetResponse = IssueCommentGetResponses[keyof IssueCommentGetResponses];

export type IssueCommentUpdateData = {
    body: IssueCommentUpdateRequest;
    path: {
        project: string;
        number: number;
        comment_id: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/comments/{comment_id}';
};

export type IssueCommentUpdateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueCommentUpdateResponses = {
    /**
     * Update issue comment
     */
    200: ApiResponseIssueCommentResponse;
};

export type IssueCommentUpdateResponse = IssueCommentUpdateResponses[keyof IssueCommentUpdateResponses];

export type IssueCommentReactionListData = {
    body?: never;
    path: {
        project: string;
        number: number;
        comment_id: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/comments/{comment_id}/reactions';
};

export type IssueCommentReactionListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueCommentReactionListResponses = {
    /**
     * List comment reactions
     */
    200: ApiResponseReactionListResponse;
};

export type IssueCommentReactionListResponse = IssueCommentReactionListResponses[keyof IssueCommentReactionListResponses];

export type IssueCommentReactionAddData = {
    body: ReactionAddRequest;
    path: {
        project: string;
        number: number;
        comment_id: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/comments/{comment_id}/reactions';
};

export type IssueCommentReactionAddErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueCommentReactionAddResponses = {
    /**
     * Add reaction to comment
     */
    200: ApiResponseReactionResponse;
};

export type IssueCommentReactionAddResponse = IssueCommentReactionAddResponses[keyof IssueCommentReactionAddResponses];

export type IssueCommentReactionRemoveData = {
    body?: never;
    path: {
        project: string;
        number: number;
        comment_id: number;
        reaction: string;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/comments/{comment_id}/reactions/{reaction}';
};

export type IssueCommentReactionRemoveErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueCommentReactionRemoveResponses = {
    /**
     * Remove reaction from comment
     */
    200: unknown;
};

export type IssueLabelListData = {
    body?: never;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/labels';
};

export type IssueLabelListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueLabelListResponses = {
    /**
     * List issue labels
     */
    200: ApiResponseVecIssueLabelResponse;
};

export type IssueLabelListResponse = IssueLabelListResponses[keyof IssueLabelListResponses];

export type IssueLabelAddData = {
    body: IssueAddLabelRequest;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/labels';
};

export type IssueLabelAddErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueLabelAddResponses = {
    /**
     * Add label to issue
     */
    200: ApiResponseIssueLabelResponse;
};

export type IssueLabelAddResponse = IssueLabelAddResponses[keyof IssueLabelAddResponses];

export type IssueLabelRemoveData = {
    body?: never;
    path: {
        project: string;
        number: number;
        label_id: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/labels/{label_id}';
};

export type IssueLabelRemoveErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueLabelRemoveResponses = {
    /**
     * Remove label from issue
     */
    200: unknown;
};

export type IssuePullRequestListData = {
    body?: never;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/pulls';
};

export type IssuePullRequestListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssuePullRequestListResponses = {
    /**
     * List issue pull requests
     */
    200: ApiResponseVecIssuePullRequestResponse;
};

export type IssuePullRequestListResponse = IssuePullRequestListResponses[keyof IssuePullRequestListResponses];

export type IssuePullRequestLinkData = {
    body: IssueLinkPullRequestRequest;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/pulls';
};

export type IssuePullRequestLinkErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssuePullRequestLinkResponses = {
    /**
     * Link pull request to issue
     */
    200: ApiResponseIssuePullRequestResponse;
};

export type IssuePullRequestLinkResponse = IssuePullRequestLinkResponses[keyof IssuePullRequestLinkResponses];

export type IssuePullRequestUnlinkData = {
    body?: never;
    path: {
        project: string;
        number: number;
        repo_id: string;
        pr_number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/pulls/{repo_id}/{pr_number}';
};

export type IssuePullRequestUnlinkErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssuePullRequestUnlinkResponses = {
    /**
     * Unlink pull request from issue
     */
    200: unknown;
};

export type IssueReactionListData = {
    body?: never;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/reactions';
};

export type IssueReactionListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueReactionListResponses = {
    /**
     * List issue reactions
     */
    200: ApiResponseReactionListResponse;
};

export type IssueReactionListResponse = IssueReactionListResponses[keyof IssueReactionListResponses];

export type IssueReactionAddData = {
    body: ReactionAddRequest;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/reactions';
};

export type IssueReactionAddErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueReactionAddResponses = {
    /**
     * Add reaction to issue
     */
    200: ApiResponseReactionResponse;
};

export type IssueReactionAddResponse = IssueReactionAddResponses[keyof IssueReactionAddResponses];

export type IssueReactionRemoveData = {
    body?: never;
    path: {
        project: string;
        number: number;
        reaction: string;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/reactions/{reaction}';
};

export type IssueReactionRemoveErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueReactionRemoveResponses = {
    /**
     * Remove reaction from issue
     */
    200: unknown;
};

export type IssueReopenData = {
    body?: never;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/reopen';
};

export type IssueReopenErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueReopenResponses = {
    /**
     * Reopen issue
     */
    200: ApiResponseIssueResponse;
};

export type IssueReopenResponse = IssueReopenResponses[keyof IssueReopenResponses];

export type IssueRepoListData = {
    body?: never;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/repos';
};

export type IssueRepoListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueRepoListResponses = {
    /**
     * List issue repos
     */
    200: ApiResponseVecIssueRepoResponse;
};

export type IssueRepoListResponse = IssueRepoListResponses[keyof IssueRepoListResponses];

export type IssueRepoLinkData = {
    body: IssueLinkRepoRequest;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/repos';
};

export type IssueRepoLinkErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueRepoLinkResponses = {
    /**
     * Link repo to issue
     */
    200: ApiResponseIssueRepoResponse;
};

export type IssueRepoLinkResponse = IssueRepoLinkResponses[keyof IssueRepoLinkResponses];

export type IssueRepoUnlinkData = {
    body?: never;
    path: {
        project: string;
        number: number;
        repo_id: string;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/repos/{repo_id}';
};

export type IssueRepoUnlinkErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueRepoUnlinkResponses = {
    /**
     * Unlink repo from issue
     */
    200: unknown;
};

export type IssueUnsubscribeData = {
    body?: never;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/subscribe';
};

export type IssueUnsubscribeErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueUnsubscribeResponses = {
    /**
     * Unsubscribe from issue
     */
    200: unknown;
};

export type IssueSubscribeData = {
    body?: never;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/subscribe';
};

export type IssueSubscribeErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueSubscribeResponses = {
    /**
     * Subscribe to issue
     */
    200: ApiResponseIssueSubscriberResponse;
};

export type IssueSubscribeResponse = IssueSubscribeResponses[keyof IssueSubscribeResponses];

export type IssueSubscriberListData = {
    body?: never;
    path: {
        project: string;
        number: number;
    };
    query?: never;
    url: '/api/issue/{project}/issues/{number}/subscribers';
};

export type IssueSubscriberListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type IssueSubscriberListResponses = {
    /**
     * List issue subscribers
     */
    200: ApiResponseVecIssueSubscriberResponse;
};

export type IssueSubscriberListResponse = IssueSubscriberListResponses[keyof IssueSubscriberListResponses];

export type LabelListData = {
    body?: never;
    path: {
        project: string;
    };
    query?: never;
    url: '/api/issue/{project}/labels';
};

export type LabelListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type LabelListResponses = {
    /**
     * List labels
     */
    200: ApiResponseVecLabelResponse;
};

export type LabelListResponse2 = LabelListResponses[keyof LabelListResponses];

export type LabelCreateData = {
    body: CreateLabelRequest;
    path: {
        project: string;
    };
    query?: never;
    url: '/api/issue/{project}/labels';
};

export type LabelCreateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type LabelCreateResponses = {
    /**
     * Create label
     */
    200: ApiResponseLabelResponse;
};

export type LabelCreateResponse = LabelCreateResponses[keyof LabelCreateResponses];

export type LabelDeleteData = {
    body?: never;
    path: {
        project: string;
        label_id: number;
    };
    query?: never;
    url: '/api/issue/{project}/labels/{label_id}';
};

export type LabelDeleteErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type LabelDeleteResponses = {
    /**
     * Delete label
     */
    200: unknown;
};

export type MentionListData = {
    body?: never;
    path?: never;
    query?: {
        limit?: number;
    };
    url: '/api/me/mentions';
};

export type MentionListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type MentionListResponses = {
    /**
     * List mentions
     */
    200: ApiResponseVecMentionNotificationResponse;
};

export type MentionListResponse = MentionListResponses[keyof MentionListResponses];

export type MentionReadAllData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/me/mentions/read-all';
};

export type MentionReadAllErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type MentionReadAllResponses = {
    /**
     * Mark all mentions as read
     */
    200: unknown;
};

export type NotificationListData = {
    body?: never;
    path?: never;
    query?: {
        only_unread?: boolean;
        archived?: boolean;
        limit?: number;
    };
    url: '/api/me/notifications';
};

export type NotificationListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type NotificationListResponses = {
    /**
     * List notifications
     */
    200: ApiResponseNotificationListResponse;
};

export type NotificationListResponse2 = NotificationListResponses[keyof NotificationListResponses];

export type NotificationMarkAllReadData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/me/notifications/read-all';
};

export type NotificationMarkAllReadErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type NotificationMarkAllReadResponses = {
    /**
     * Mark all notifications as read
     */
    200: unknown;
};

export type NotificationArchiveData = {
    body?: never;
    path: {
        notification_id: string;
    };
    query?: never;
    url: '/api/me/notifications/{notification_id}/archive';
};

export type NotificationArchiveErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type NotificationArchiveResponses = {
    /**
     * Archive notification
     */
    200: unknown;
};

export type NotificationMarkReadData = {
    body?: never;
    path: {
        notification_id: string;
    };
    query?: never;
    url: '/api/me/notifications/{notification_id}/read';
};

export type NotificationMarkReadErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type NotificationMarkReadResponses = {
    /**
     * Mark notification as read
     */
    200: unknown;
};

export type CategoryListData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/project_room/{project_name}/room-categories';
};

export type CategoryListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type CategoryListResponses = {
    /**
     * List room categories
     */
    200: ApiResponseVecRoomCategoryResponse;
};

export type CategoryListResponse = CategoryListResponses[keyof CategoryListResponses];

export type CategoryCreateData = {
    body: RoomCategoryCreateRequest;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/project_room/{project_name}/room-categories';
};

export type CategoryCreateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type CategoryCreateResponses = {
    /**
     * Create room category
     */
    200: ApiResponseRoomCategoryResponse;
};

export type CategoryCreateResponse = CategoryCreateResponses[keyof CategoryCreateResponses];

export type RoomListData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: {
        only_public?: boolean;
    };
    url: '/api/project_room/{project_name}/rooms';
};

export type RoomListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type RoomListResponses = {
    /**
     * List rooms
     */
    200: ApiResponseVecRoomResponse;
};

export type RoomListResponse = RoomListResponses[keyof RoomListResponses];

export type RoomCreateData = {
    body: RoomCreateRequest;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/project_room/{project_name}/rooms';
};

export type RoomCreateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type RoomCreateResponses = {
    /**
     * Create room
     */
    200: ApiResponseRoomResponse;
};

export type RoomCreateResponse = RoomCreateResponses[keyof RoomCreateResponses];

export type ProjectCreateData = {
    body: ProjectInitParams;
    path?: never;
    query?: never;
    url: '/api/projects';
};

export type ProjectCreateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectCreateResponses = {
    /**
     * Create project
     */
    200: ApiResponseProjectInitResponse;
};

export type ProjectCreateResponse = ProjectCreateResponses[keyof ProjectCreateResponses];

export type ProjectMyInvitationsData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/projects/me/invitations';
};

export type ProjectMyInvitationsErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectMyInvitationsResponses = {
    /**
     * List my invitations
     */
    200: ApiResponseInvitationListResponse;
};

export type ProjectMyInvitationsResponse = ProjectMyInvitationsResponses[keyof ProjectMyInvitationsResponses];

export type ProjectMyJoinRequestsData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/projects/me/join-requests';
};

export type ProjectMyJoinRequestsErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectMyJoinRequestsResponses = {
    /**
     * List my join requests
     */
    200: ApiResponseJoinRequestListResponse;
};

export type ProjectMyJoinRequestsResponse = ProjectMyJoinRequestsResponses[keyof ProjectMyJoinRequestsResponses];

export type ProjectInfoData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}';
};

export type ProjectInfoErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectInfoResponses = {
    /**
     * Get project info
     */
    200: ApiResponseProjectInfoRelational;
};

export type ProjectInfoResponse = ProjectInfoResponses[keyof ProjectInfoResponses];

export type ProjectActivitiesData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: {
        page?: number;
        per_page?: number;
        event_type?: string;
        /**
         * ISO 8601 datetime, e.g. 2025-01-01T00:00:00Z
         */
        start_date?: string;
        /**
         * ISO 8601 datetime, e.g. 2025-12-31T23:59:59Z
         */
        end_date?: string;
    };
    url: '/api/projects/{project_name}/activities';
};

export type ProjectActivitiesErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden — no access to this project
     */
    403: unknown;
    /**
     * Project not found
     */
    404: unknown;
};

export type ProjectActivitiesResponses = {
    /**
     * List project activities
     */
    200: ApiResponseActivityLogListResponse;
};

export type ProjectActivitiesResponse = ProjectActivitiesResponses[keyof ProjectActivitiesResponses];

export type ProjectLogActivityData = {
    body: ActivityLogParams;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/activities';
};

export type ProjectLogActivityErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Project not found
     */
    404: unknown;
};

export type ProjectLogActivityResponses = {
    /**
     * Activity logged
     */
    200: ApiResponseActivityLogResponse;
};

export type ProjectLogActivityResponse = ProjectLogActivityResponses[keyof ProjectLogActivityResponses];

export type ProjectAuditLogsData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: {
        page?: number;
        per_page?: number;
    };
    url: '/api/projects/{project_name}/audit-logs';
};

export type ProjectAuditLogsErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectAuditLogsResponses = {
    /**
     * List project audit logs
     */
    200: ApiResponseVecAuditLogResponse;
};

export type ProjectAuditLogsResponse = ProjectAuditLogsResponses[keyof ProjectAuditLogsResponses];

export type ProjectLogAuditData = {
    body: AuditLogParams;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/audit-logs';
};

export type ProjectLogAuditErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectLogAuditResponses = {
    /**
     * Log project audit event
     */
    200: ApiResponseAuditLogResponse;
};

export type ProjectLogAuditResponse = ProjectLogAuditResponses[keyof ProjectLogAuditResponses];

export type ProjectAuditLogData = {
    body?: never;
    path: {
        project_name: string;
        log_id: number;
    };
    query?: never;
    url: '/api/projects/{project_name}/audit-logs/{log_id}';
};

export type ProjectAuditLogErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectAuditLogResponses = {
    /**
     * Get project audit log
     */
    200: ApiResponseAuditLogResponse;
};

export type ProjectAuditLogResponse = ProjectAuditLogResponses[keyof ProjectAuditLogResponses];

export type ProjectBillingData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/billing';
};

export type ProjectBillingErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectBillingResponses = {
    /**
     * Get project billing
     */
    200: ApiResponseProjectBillingCurrentResponse;
};

export type ProjectBillingResponse = ProjectBillingResponses[keyof ProjectBillingResponses];

export type ProjectBillingHistoryData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/billing/history';
};

export type ProjectBillingHistoryErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectBillingHistoryResponses = {
    /**
     * Get project billing history
     */
    200: ApiResponseProjectBillingHistoryResponse;
};

export type ProjectBillingHistoryResponse2 = ProjectBillingHistoryResponses[keyof ProjectBillingHistoryResponses];

export type BoardListData = {
    body?: never;
    path: {
        /**
         * Project name
         */
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/boards';
};

export type BoardListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type BoardListResponses = {
    /**
     * List boards
     */
    200: ApiResponseVecBoardResponse;
};

export type BoardListResponse = BoardListResponses[keyof BoardListResponses];

export type BoardCreateData = {
    body: CreateBoardParams;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/boards';
};

export type BoardCreateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type BoardCreateResponses = {
    /**
     * Create board
     */
    200: ApiResponseBoardResponse;
};

export type BoardCreateResponse = BoardCreateResponses[keyof BoardCreateResponses];

export type BoardDeleteData = {
    body?: never;
    path: {
        project_name: string;
        board_id: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/boards/{board_id}';
};

export type BoardDeleteErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type BoardDeleteResponses = {
    /**
     * Delete board
     */
    200: unknown;
};

export type BoardGetData = {
    body?: never;
    path: {
        project_name: string;
        board_id: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/boards/{board_id}';
};

export type BoardGetErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type BoardGetResponses = {
    /**
     * Get board with columns and cards
     */
    200: ApiResponseBoardWithColumnsResponse;
};

export type BoardGetResponse = BoardGetResponses[keyof BoardGetResponses];

export type BoardUpdateData = {
    body: UpdateBoardParams;
    path: {
        project_name: string;
        board_id: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/boards/{board_id}';
};

export type BoardUpdateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type BoardUpdateResponses = {
    /**
     * Update board
     */
    200: ApiResponseBoardResponse;
};

export type BoardUpdateResponse = BoardUpdateResponses[keyof BoardUpdateResponses];

export type ColumnCreateData = {
    body: CreateColumnParams;
    path: {
        project_name: string;
        board_id: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/boards/{board_id}/columns';
};

export type ColumnCreateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Board not found
     */
    404: unknown;
};

export type ColumnCreateResponses = {
    /**
     * Create column
     */
    200: ApiResponseColumnResponse;
};

export type ColumnCreateResponse = ColumnCreateResponses[keyof ColumnCreateResponses];

export type CardCreateData = {
    body: CreateCardParams;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/cards';
};

export type CardCreateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type CardCreateResponses = {
    /**
     * Create card
     */
    200: ApiResponseCardResponse;
};

export type CardCreateResponse = CardCreateResponses[keyof CardCreateResponses];

export type CardDeleteData = {
    body?: never;
    path: {
        project_name: string;
        card_id: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/cards/{card_id}';
};

export type CardDeleteErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type CardDeleteResponses = {
    /**
     * Delete card
     */
    200: unknown;
};

export type CardUpdateData = {
    body: UpdateCardParams;
    path: {
        project_name: string;
        card_id: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/cards/{card_id}';
};

export type CardUpdateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type CardUpdateResponses = {
    /**
     * Update card
     */
    200: ApiResponseCardResponse;
};

export type CardUpdateResponse = CardUpdateResponses[keyof CardUpdateResponses];

export type CardMoveData = {
    body: MoveCardParams;
    path: {
        project_name: string;
        card_id: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/cards/{card_id}/move';
};

export type CardMoveErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type CardMoveResponses = {
    /**
     * Move card
     */
    200: ApiResponseCardResponse;
};

export type CardMoveResponse = CardMoveResponses[keyof CardMoveResponses];

export type ColumnDeleteData = {
    body?: never;
    path: {
        project_name: string;
        column_id: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/columns/{column_id}';
};

export type ColumnDeleteErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ColumnDeleteResponses = {
    /**
     * Delete column
     */
    200: unknown;
};

export type ColumnUpdateData = {
    body: UpdateColumnParams;
    path: {
        project_name: string;
        column_id: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/columns/{column_id}';
};

export type ColumnUpdateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ColumnUpdateResponses = {
    /**
     * Update column
     */
    200: ApiResponseColumnResponse;
};

export type ColumnUpdateResponse = ColumnUpdateResponses[keyof ColumnUpdateResponses];

export type ProjectInvitationsData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: {
        page?: number;
        per_page?: number;
    };
    url: '/api/projects/{project_name}/invitations';
};

export type ProjectInvitationsErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectInvitationsResponses = {
    /**
     * List project invitations
     */
    200: ApiResponseInvitationListResponse;
};

export type ProjectInvitationsResponse = ProjectInvitationsResponses[keyof ProjectInvitationsResponses];

export type ProjectInviteUserData = {
    body: InviteUserRequest;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/invitations';
};

export type ProjectInviteUserErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectInviteUserResponses = {
    /**
     * Invite user to project
     */
    200: unknown;
};

export type ProjectAcceptInvitationData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/invitations/accept';
};

export type ProjectAcceptInvitationErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectAcceptInvitationResponses = {
    /**
     * Accept project invitation
     */
    200: unknown;
};

export type ProjectRejectInvitationData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/invitations/reject';
};

export type ProjectRejectInvitationErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectRejectInvitationResponses = {
    /**
     * Reject project invitation
     */
    200: unknown;
};

export type ProjectCancelInvitationData = {
    body?: never;
    path: {
        project_name: string;
        user_id: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/invitations/{user_id}';
};

export type ProjectCancelInvitationErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectCancelInvitationResponses = {
    /**
     * Cancel project invitation
     */
    200: unknown;
};

export type ProjectJoinRequestsData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: {
        status?: string;
        page?: number;
        per_page?: number;
    };
    url: '/api/projects/{project_name}/join-requests';
};

export type ProjectJoinRequestsErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectJoinRequestsResponses = {
    /**
     * List join requests
     */
    200: ApiResponseJoinRequestListResponse;
};

export type ProjectJoinRequestsResponse = ProjectJoinRequestsResponses[keyof ProjectJoinRequestsResponses];

export type ProjectSubmitJoinRequestData = {
    body: SubmitJoinRequest;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/join-requests';
};

export type ProjectSubmitJoinRequestErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectSubmitJoinRequestResponses = {
    /**
     * Submit join request
     */
    200: unknown;
};

export type ProjectCancelJoinRequestData = {
    body?: never;
    path: {
        project_name: string;
        request_id: number;
    };
    query?: never;
    url: '/api/projects/{project_name}/join-requests/{request_id}';
};

export type ProjectCancelJoinRequestErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectCancelJoinRequestResponses = {
    /**
     * Cancel join request
     */
    200: unknown;
};

export type ProjectProcessJoinRequestData = {
    body: ProcessJoinRequest;
    path: {
        project_name: string;
        request_id: number;
    };
    query?: never;
    url: '/api/projects/{project_name}/join-requests/{request_id}';
};

export type ProjectProcessJoinRequestErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectProcessJoinRequestResponses = {
    /**
     * Process join request
     */
    200: unknown;
};

export type ProjectJoinAnswersData = {
    body?: never;
    path: {
        project_name: string;
        request_id: number;
    };
    query?: never;
    url: '/api/projects/{project_name}/join-requests/{request_id}/answers';
};

export type ProjectJoinAnswersErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectJoinAnswersResponses = {
    /**
     * Get join request answers
     */
    200: ApiResponseJoinAnswersListResponse;
};

export type ProjectJoinAnswersResponse = ProjectJoinAnswersResponses[keyof ProjectJoinAnswersResponses];

export type ProjectSubmitJoinAnswersData = {
    body: Array<AnswerRequest>;
    path: {
        project_name: string;
        request_id: number;
    };
    query?: never;
    url: '/api/projects/{project_name}/join-requests/{request_id}/answers';
};

export type ProjectSubmitJoinAnswersErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectSubmitJoinAnswersResponses = {
    /**
     * Submit join request answers
     */
    200: unknown;
};

export type ProjectJoinSettingsData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/join-settings';
};

export type ProjectJoinSettingsErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectJoinSettingsResponses = {
    /**
     * Get join settings
     */
    200: ApiResponseJoinSettingsResponse;
};

export type ProjectJoinSettingsResponse = ProjectJoinSettingsResponses[keyof ProjectJoinSettingsResponses];

export type ProjectUpdateJoinSettingsData = {
    body: UpdateJoinSettingsRequest;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/join-settings';
};

export type ProjectUpdateJoinSettingsErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectUpdateJoinSettingsResponses = {
    /**
     * Update join settings
     */
    200: ApiResponseJoinSettingsResponse;
};

export type ProjectUpdateJoinSettingsResponse = ProjectUpdateJoinSettingsResponses[keyof ProjectUpdateJoinSettingsResponses];

export type ProjectLabelsData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/labels';
};

export type ProjectLabelsErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectLabelsResponses = {
    /**
     * List project labels
     */
    200: ApiResponseLabelListResponse;
};

export type ProjectLabelsResponse = ProjectLabelsResponses[keyof ProjectLabelsResponses];

export type ProjectCreateLabelData = {
    body: CreateLabelParams;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/labels';
};

export type ProjectCreateLabelErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectCreateLabelResponses = {
    /**
     * Create project label
     */
    200: ApiResponseLabelResponse;
};

export type ProjectCreateLabelResponse = ProjectCreateLabelResponses[keyof ProjectCreateLabelResponses];

export type ProjectDeleteLabelData = {
    body?: never;
    path: {
        project_name: string;
        label_id: number;
    };
    query?: never;
    url: '/api/projects/{project_name}/labels/{label_id}';
};

export type ProjectDeleteLabelErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectDeleteLabelResponses = {
    /**
     * Delete project label
     */
    200: unknown;
};

export type ProjectGetLabelData = {
    body?: never;
    path: {
        project_name: string;
        label_id: number;
    };
    query?: never;
    url: '/api/projects/{project_name}/labels/{label_id}';
};

export type ProjectGetLabelErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectGetLabelResponses = {
    /**
     * Get project label
     */
    200: ApiResponseLabelResponse;
};

export type ProjectGetLabelResponse = ProjectGetLabelResponses[keyof ProjectGetLabelResponses];

export type ProjectUpdateLabelData = {
    body: UpdateLabelParams;
    path: {
        project_name: string;
        label_id: number;
    };
    query?: never;
    url: '/api/projects/{project_name}/labels/{label_id}';
};

export type ProjectUpdateLabelErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectUpdateLabelResponses = {
    /**
     * Update project label
     */
    200: ApiResponseLabelResponse;
};

export type ProjectUpdateLabelResponse = ProjectUpdateLabelResponses[keyof ProjectUpdateLabelResponses];

export type ProjectUnlikeData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/like';
};

export type ProjectUnlikeErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectUnlikeResponses = {
    /**
     * Unlike project
     */
    200: unknown;
};

export type ProjectIsLikeData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/like';
};

export type ProjectIsLikeErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectIsLikeResponses = {
    /**
     * Check if user likes project
     */
    200: ApiResponseIsLikeResponse;
};

export type ProjectIsLikeResponse = ProjectIsLikeResponses[keyof ProjectIsLikeResponses];

export type ProjectLikeData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/like';
};

export type ProjectLikeErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectLikeResponses = {
    /**
     * Like project
     */
    200: unknown;
};

export type ProjectLikesCountData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/likes/count';
};

export type ProjectLikesCountErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectLikesCountResponses = {
    /**
     * Get like count
     */
    200: unknown;
};

export type ProjectLikeUsersData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/likes/users';
};

export type ProjectLikeUsersErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectLikeUsersResponses = {
    /**
     * List users who liked project
     */
    200: ApiResponseVecLikeUserInfo;
};

export type ProjectLikeUsersResponse = ProjectLikeUsersResponses[keyof ProjectLikeUsersResponses];

export type ProjectMembersData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: {
        page?: number;
        per_page?: number;
    };
    url: '/api/projects/{project_name}/members';
};

export type ProjectMembersErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectMembersResponses = {
    /**
     * List project members
     */
    200: ApiResponseMemberListResponse;
};

export type ProjectMembersResponse = ProjectMembersResponses[keyof ProjectMembersResponses];

export type ProjectUpdateMemberRoleData = {
    body: UpdateMemberRoleRequest;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/members/role';
};

export type ProjectUpdateMemberRoleErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectUpdateMemberRoleResponses = {
    /**
     * Update member role
     */
    200: unknown;
};

export type ProjectRemoveMemberData = {
    body?: never;
    path: {
        project_name: string;
        user_id: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/members/{user_id}';
};

export type ProjectRemoveMemberErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectRemoveMemberResponses = {
    /**
     * Remove member from project
     */
    200: unknown;
};

export type ProjectReposData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/repos';
};

export type ProjectReposErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Project not found
     */
    404: unknown;
};

export type ProjectReposResponses = {
    /**
     * Get project repositories
     */
    200: ApiResponseProjectRepositoryPagination;
};

export type ProjectReposResponse = ProjectReposResponses[keyof ProjectReposResponses];

export type ProjectRepoCreateData = {
    body: ProjectRepoCreateParams;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/repos';
};

export type ProjectRepoCreateErrors = {
    /**
     * Bad request
     */
    400: unknown;
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Repository name already exists
     */
    409: unknown;
};

export type ProjectRepoCreateResponses = {
    /**
     * Create a repository
     */
    200: ApiResponseProjectRepoCreateResponse;
};

export type ProjectRepoCreateResponse2 = ProjectRepoCreateResponses[keyof ProjectRepoCreateResponses];

export type ProjectExchangeNameData = {
    body: ExchangeProjectName;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/settings/name';
};

export type ProjectExchangeNameErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectExchangeNameResponses = {
    /**
     * Update project name
     */
    200: unknown;
};

export type ProjectExchangeTitleData = {
    body: ExchangeProjectTitle;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/settings/title';
};

export type ProjectExchangeTitleErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectExchangeTitleResponses = {
    /**
     * Update project title
     */
    200: unknown;
};

export type ProjectExchangeVisibilityData = {
    body: ExchangeProjectVisibility;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/settings/visibility';
};

export type ProjectExchangeVisibilityErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectExchangeVisibilityResponses = {
    /**
     * Update project visibility
     */
    200: unknown;
};

export type SkillListData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/skills';
};

export type SkillListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Project not found
     */
    404: unknown;
};

export type SkillListResponses = {
    /**
     * List skills
     */
    200: ApiResponseVecSkillResponse;
};

export type SkillListResponse = SkillListResponses[keyof SkillListResponses];

export type SkillCreateData = {
    body: CreateSkillRequest;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/skills';
};

export type SkillCreateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Skill already exists
     */
    409: unknown;
};

export type SkillCreateResponses = {
    /**
     * Create skill
     */
    200: ApiResponseSkillResponse;
};

export type SkillCreateResponse = SkillCreateResponses[keyof SkillCreateResponses];

export type SkillScanData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/skills/scan';
};

export type SkillScanErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type SkillScanResponses = {
    /**
     * Scan repos for skills
     */
    200: ApiResponseScanResponse;
};

export type SkillScanResponse = SkillScanResponses[keyof SkillScanResponses];

export type SkillDeleteData = {
    body?: never;
    path: {
        project_name: string;
        slug: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/skills/{slug}';
};

export type SkillDeleteErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type SkillDeleteResponses = {
    /**
     * Delete skill
     */
    200: ApiResponseDeleteSkillResponse;
};

export type SkillDeleteResponse = SkillDeleteResponses[keyof SkillDeleteResponses];

export type SkillGetData = {
    body?: never;
    path: {
        project_name: string;
        slug: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/skills/{slug}';
};

export type SkillGetErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type SkillGetResponses = {
    /**
     * Get skill
     */
    200: ApiResponseSkillResponse;
};

export type SkillGetResponse = SkillGetResponses[keyof SkillGetResponses];

export type SkillUpdateData = {
    body: UpdateSkillRequest;
    path: {
        project_name: string;
        slug: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/skills/{slug}';
};

export type SkillUpdateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type SkillUpdateResponses = {
    /**
     * Update skill
     */
    200: ApiResponseSkillResponse;
};

export type SkillUpdateResponse = SkillUpdateResponses[keyof SkillUpdateResponses];

export type ProjectUnwatchData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/watch';
};

export type ProjectUnwatchErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectUnwatchResponses = {
    /**
     * Unwatch project
     */
    200: unknown;
};

export type ProjectIsWatchData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/watch';
};

export type ProjectIsWatchErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectIsWatchResponses = {
    /**
     * Check if user watches project
     */
    200: ApiResponseIsWatchResponse;
};

export type ProjectIsWatchResponse = ProjectIsWatchResponses[keyof ProjectIsWatchResponses];

export type ProjectWatchData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/watch';
};

export type ProjectWatchErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectWatchResponses = {
    /**
     * Watch project
     */
    200: unknown;
};

export type ProjectWatchesCountData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/watches/count';
};

export type ProjectWatchesCountErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectWatchesCountResponses = {
    /**
     * Get watch count
     */
    200: unknown;
};

export type ProjectWatchUsersData = {
    body?: never;
    path: {
        project_name: string;
    };
    query?: never;
    url: '/api/projects/{project_name}/watches/users';
};

export type ProjectWatchUsersErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectWatchUsersResponses = {
    /**
     * List users watching project
     */
    200: ApiResponseVecWatchUserInfo;
};

export type ProjectWatchUsersResponse = ProjectWatchUsersResponses[keyof ProjectWatchUsersResponses];

export type ProjectTransferRepoData = {
    body: TransferRepoParams;
    path: {
        source_project: string;
        repo_name: string;
    };
    query?: never;
    url: '/api/projects/{source_project}/repos/{repo_name}/transfer';
};

export type ProjectTransferRepoErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ProjectTransferRepoResponses = {
    /**
     * Transfer repo to another project
     */
    200: ApiResponseTransferRepoResponse;
};

export type ProjectTransferRepoResponse = ProjectTransferRepoResponses[keyof ProjectTransferRepoResponses];

export type PullRequestListData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: {
        status?: string;
        page?: number;
        per_page?: number;
    };
    url: '/api/repo_pr/{namespace}/{repo}/pulls';
};

export type PullRequestListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type PullRequestListResponses = {
    /**
     * List pull requests
     */
    200: ApiResponsePullRequestListResponse;
};

export type PullRequestListResponse2 = PullRequestListResponses[keyof PullRequestListResponses];

export type PullRequestCreateData = {
    body: PullRequestCreateRequest;
    path: {
        namespace: string;
        repo: string;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls';
};

export type PullRequestCreateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type PullRequestCreateResponses = {
    /**
     * Create pull request
     */
    200: ApiResponsePullRequestResponse;
};

export type PullRequestCreateResponse = PullRequestCreateResponses[keyof PullRequestCreateResponses];

export type PullRequestSummaryData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/summary';
};

export type PullRequestSummaryErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type PullRequestSummaryResponses = {
    /**
     * Get pull request summary
     */
    200: ApiResponsePullRequestSummaryResponse;
};

export type PullRequestSummaryResponse2 = PullRequestSummaryResponses[keyof PullRequestSummaryResponses];

export type PullRequestDeleteData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{number}';
};

export type PullRequestDeleteErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type PullRequestDeleteResponses = {
    /**
     * Delete pull request
     */
    200: unknown;
};

export type PullRequestGetData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{number}';
};

export type PullRequestGetErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type PullRequestGetResponses = {
    /**
     * Get pull request
     */
    200: ApiResponsePullRequestResponse;
};

export type PullRequestGetResponse = PullRequestGetResponses[keyof PullRequestGetResponses];

export type PullRequestUpdateData = {
    body: PullRequestUpdateRequest;
    path: {
        namespace: string;
        repo: string;
        number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{number}';
};

export type PullRequestUpdateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type PullRequestUpdateResponses = {
    /**
     * Update pull request
     */
    200: ApiResponsePullRequestResponse;
};

export type PullRequestUpdateResponse = PullRequestUpdateResponses[keyof PullRequestUpdateResponses];

export type PullRequestCloseData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{number}/close';
};

export type PullRequestCloseErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type PullRequestCloseResponses = {
    /**
     * Close pull request
     */
    200: ApiResponsePullRequestResponse;
};

export type PullRequestCloseResponse = PullRequestCloseResponses[keyof PullRequestCloseResponses];

export type PullRequestReopenData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{number}/reopen';
};

export type PullRequestReopenErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type PullRequestReopenResponses = {
    /**
     * Reopen pull request
     */
    200: ApiResponsePullRequestResponse;
};

export type PullRequestReopenResponse = PullRequestReopenResponses[keyof PullRequestReopenResponses];

export type ReviewCommentListData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
    };
    query?: {
        /**
         * Filter by file path
         */
        path?: string;
        /**
         * Filter by resolved status
         */
        resolved?: boolean;
        /**
         * Only inline comments (true) or only general comments (false)
         */
        file_only?: boolean;
    };
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/comments';
};

export type ReviewCommentListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ReviewCommentListResponses = {
    /**
     * List pull request review comments
     */
    200: ApiResponseReviewCommentListResponse;
};

export type ReviewCommentListResponse2 = ReviewCommentListResponses[keyof ReviewCommentListResponses];

export type ReviewCommentCreateData = {
    body: ReviewCommentCreateRequest;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/comments';
};

export type ReviewCommentCreateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ReviewCommentCreateResponses = {
    /**
     * Create pull request review comment
     */
    200: ApiResponseReviewCommentResponse;
};

export type ReviewCommentCreateResponse = ReviewCommentCreateResponses[keyof ReviewCommentCreateResponses];

export type ReviewCommentDeleteData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
        comment_id: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/comments/{comment_id}';
};

export type ReviewCommentDeleteErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ReviewCommentDeleteResponses = {
    /**
     * Delete pull request review comment
     */
    200: unknown;
};

export type ReviewCommentUpdateData = {
    body: ReviewCommentUpdateRequest;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
        comment_id: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/comments/{comment_id}';
};

export type ReviewCommentUpdateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ReviewCommentUpdateResponses = {
    /**
     * Update pull request review comment
     */
    200: ApiResponseReviewCommentResponse;
};

export type ReviewCommentUpdateResponse = ReviewCommentUpdateResponses[keyof ReviewCommentUpdateResponses];

export type ReviewCommentReplyData = {
    body: ReviewCommentReplyRequest;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
        comment_id: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/comments/{comment_id}/replies';
};

export type ReviewCommentReplyErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ReviewCommentReplyResponses = {
    /**
     * Reply to a comment
     */
    200: ApiResponseReviewCommentResponse;
};

export type ReviewCommentReplyResponse = ReviewCommentReplyResponses[keyof ReviewCommentReplyResponses];

export type ReviewCommentUnresolveData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
        comment_id: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/comments/{comment_id}/resolve';
};

export type ReviewCommentUnresolveErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ReviewCommentUnresolveResponses = {
    /**
     * Mark comment as unresolved
     */
    200: ApiResponseReviewCommentResponse;
};

export type ReviewCommentUnresolveResponse = ReviewCommentUnresolveResponses[keyof ReviewCommentUnresolveResponses];

export type ReviewCommentResolveData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
        comment_id: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/comments/{comment_id}/resolve';
};

export type ReviewCommentResolveErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ReviewCommentResolveResponses = {
    /**
     * Mark comment as resolved
     */
    200: ApiResponseReviewCommentResponse;
};

export type ReviewCommentResolveResponse = ReviewCommentResolveResponses[keyof ReviewCommentResolveResponses];

export type PrCommitsListData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Pull request number
         */
        pr_number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/commits';
};

export type PrCommitsListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type PrCommitsListResponses = {
    /**
     * List commits in a pull request
     */
    200: ApiResponsePrCommitsListResponse;
};

export type PrCommitsListResponse2 = PrCommitsListResponses[keyof PrCommitsListResponses];

export type MergeConflictCheckData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/conflicts';
};

export type MergeConflictCheckErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type MergeConflictCheckResponses = {
    /**
     * Check merge conflicts
     */
    200: ApiResponseMergeConflictResponse;
};

export type MergeConflictCheckResponse = MergeConflictCheckResponses[keyof MergeConflictCheckResponses];

export type PrDiffSideBySideData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Pull request number
         */
        pr_number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/diff/side-by-side';
};

export type PrDiffSideBySideErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type PrDiffSideBySideResponses = {
    /**
     * Side-by-side diff for a pull request
     */
    200: ApiResponseSideBySideDiffResponse;
};

export type PrDiffSideBySideResponse = PrDiffSideBySideResponses[keyof PrDiffSideBySideResponses];

export type MergeAnalysisData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/merge';
};

export type MergeAnalysisErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type MergeAnalysisResponses = {
    /**
     * Get merge analysis
     */
    200: ApiResponseMergeAnalysisResponse;
};

export type MergeAnalysisResponse2 = MergeAnalysisResponses[keyof MergeAnalysisResponses];

export type MergeExecuteData = {
    body: MergeRequest;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/merge';
};

export type MergeExecuteErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
    /**
     * Conflict
     */
    409: unknown;
};

export type MergeExecuteResponses = {
    /**
     * Execute merge
     */
    200: ApiResponseMergeResponse;
};

export type MergeExecuteResponse = MergeExecuteResponses[keyof MergeExecuteResponses];

export type MergeAbortData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/merge/abort';
};

export type MergeAbortErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type MergeAbortResponses = {
    /**
     * Abort merge
     */
    200: unknown;
};

export type MergeIsInProgressData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/merge/in_progress';
};

export type MergeIsInProgressErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type MergeIsInProgressResponses = {
    /**
     * Check if merge is in progress
     */
    200: unknown;
};

export type ReviewRequestListData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/review-requests';
};

export type ReviewRequestListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ReviewRequestListResponses = {
    /**
     * List review requests for a pull request
     */
    200: ApiResponseReviewRequestListResponse;
};

export type ReviewRequestListResponse2 = ReviewRequestListResponses[keyof ReviewRequestListResponses];

export type ReviewRequestCreateData = {
    body: ReviewRequestCreateRequest;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/review-requests';
};

export type ReviewRequestCreateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ReviewRequestCreateResponses = {
    /**
     * Create or update a review request
     */
    200: ApiResponseReviewRequestResponse;
};

export type ReviewRequestCreateResponse = ReviewRequestCreateResponses[keyof ReviewRequestCreateResponses];

export type ReviewRequestDeleteData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
        reviewer: string;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/review-requests/{reviewer}';
};

export type ReviewRequestDeleteErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ReviewRequestDeleteResponses = {
    /**
     * Delete (cancel) a review request
     */
    200: unknown;
};

export type ReviewRequestDismissData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
        reviewer: string;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/review-requests/{reviewer}/dismiss';
};

export type ReviewRequestDismissErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ReviewRequestDismissResponses = {
    /**
     * Dismiss a review request
     */
    200: ApiResponseReviewRequestResponse;
};

export type ReviewRequestDismissResponse = ReviewRequestDismissResponses[keyof ReviewRequestDismissResponses];

export type ReviewListData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/reviews';
};

export type ReviewListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ReviewListResponses = {
    /**
     * List pull request reviews
     */
    200: ApiResponseReviewListResponse;
};

export type ReviewListResponse2 = ReviewListResponses[keyof ReviewListResponses];

export type ReviewUpdateData = {
    body: ReviewUpdateRequest;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/reviews';
};

export type ReviewUpdateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ReviewUpdateResponses = {
    /**
     * Update pull request review
     */
    200: ApiResponseReviewResponse;
};

export type ReviewUpdateResponse = ReviewUpdateResponses[keyof ReviewUpdateResponses];

export type ReviewSubmitData = {
    body: ReviewSubmitRequest;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/reviews';
};

export type ReviewSubmitErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ReviewSubmitResponses = {
    /**
     * Submit pull request review
     */
    200: ApiResponseReviewResponse;
};

export type ReviewSubmitResponse = ReviewSubmitResponses[keyof ReviewSubmitResponses];

export type ReviewDeleteData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        pr_number: number;
        /**
         * Reviewer UUID
         */
        reviewer_id: string;
    };
    query?: never;
    url: '/api/repo_pr/{namespace}/{repo}/pulls/{pr_number}/reviews/{reviewer_id}';
};

export type ReviewDeleteErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ReviewDeleteResponses = {
    /**
     * Delete pull request review
     */
    200: unknown;
};

export type BranchProtectionListData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/branch-protections';
};

export type BranchProtectionListErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
};

export type BranchProtectionListError = BranchProtectionListErrors[keyof BranchProtectionListErrors];

export type BranchProtectionListResponses = {
    /**
     * List branch protection rules
     */
    200: ApiResponseVecBranchProtectionResponse;
};

export type BranchProtectionListResponse = BranchProtectionListResponses[keyof BranchProtectionListResponses];

export type BranchProtectionCreateData = {
    body: BranchProtectionCreateRequest;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/branch-protections';
};

export type BranchProtectionCreateErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
};

export type BranchProtectionCreateError = BranchProtectionCreateErrors[keyof BranchProtectionCreateErrors];

export type BranchProtectionCreateResponses = {
    /**
     * Create a branch protection rule
     */
    200: ApiResponseBranchProtectionResponse;
};

export type BranchProtectionCreateResponse = BranchProtectionCreateResponses[keyof BranchProtectionCreateResponses];

export type BranchProtectionCheckApprovalsData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query: {
        /**
         * Pull request number
         */
        pr_number: number;
    };
    url: '/api/repos/{namespace}/{repo}/branch-protections/check-approvals';
};

export type BranchProtectionCheckApprovalsErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type BranchProtectionCheckApprovalsError = BranchProtectionCheckApprovalsErrors[keyof BranchProtectionCheckApprovalsErrors];

export type BranchProtectionCheckApprovalsResponses = {
    /**
     * Check approval count against branch protection
     */
    200: ApiResponseApprovalCheckResult;
};

export type BranchProtectionCheckApprovalsResponse = BranchProtectionCheckApprovalsResponses[keyof BranchProtectionCheckApprovalsResponses];

export type BranchProtectionDeleteData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Rule id
         */
        id: number;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/branch-protections/{id}';
};

export type BranchProtectionDeleteErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type BranchProtectionDeleteError = BranchProtectionDeleteErrors[keyof BranchProtectionDeleteErrors];

export type BranchProtectionDeleteResponses = {
    /**
     * Delete a branch protection rule
     */
    200: unknown;
};

export type BranchProtectionGetData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Rule id
         */
        id: number;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/branch-protections/{id}';
};

export type BranchProtectionGetErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type BranchProtectionGetError = BranchProtectionGetErrors[keyof BranchProtectionGetErrors];

export type BranchProtectionGetResponses = {
    /**
     * Get a branch protection rule
     */
    200: ApiResponseBranchProtectionResponse;
};

export type BranchProtectionGetResponse = BranchProtectionGetResponses[keyof BranchProtectionGetResponses];

export type BranchProtectionUpdateData = {
    body: BranchProtectionUpdateRequest;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Rule id
         */
        id: number;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/branch-protections/{id}';
};

export type BranchProtectionUpdateErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type BranchProtectionUpdateError = BranchProtectionUpdateErrors[keyof BranchProtectionUpdateErrors];

export type BranchProtectionUpdateResponses = {
    /**
     * Update a branch protection rule
     */
    200: ApiResponseBranchProtectionResponse;
};

export type BranchProtectionUpdateResponse = BranchProtectionUpdateResponses[keyof BranchProtectionUpdateResponses];

export type GitUpdateRepoData = {
    body: GitUpdateRepoRequest;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git';
};

export type GitUpdateRepoErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitUpdateRepoError = GitUpdateRepoErrors[keyof GitUpdateRepoErrors];

export type GitUpdateRepoResponses = {
    /**
     * Update repository settings
     */
    200: unknown;
};

export type GitArchiveData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
    };
    query: {
        commit_oid: string;
        format: string;
        prefix?: string;
        max_depth?: number;
        path_filter?: string;
    };
    url: '/api/repos/{namespace}/{repo}/git/archive';
};

export type GitArchiveErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitArchiveError = GitArchiveErrors[keyof GitArchiveErrors];

export type GitArchiveResponses = {
    /**
     * Get archive
     */
    200: ApiResponseArchiveResponse;
};

export type GitArchiveResponse = GitArchiveResponses[keyof GitArchiveResponses];

export type GitArchiveCachedData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
    };
    query: {
        commit_oid: string;
        format: string;
        prefix?: string;
        max_depth?: number;
        path_filter?: string;
    };
    url: '/api/repos/{namespace}/{repo}/git/archive/cached';
};

export type GitArchiveCachedErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitArchiveCachedError = GitArchiveCachedErrors[keyof GitArchiveCachedErrors];

export type GitArchiveCachedResponses = {
    /**
     * Check if archive is cached
     */
    200: ApiResponseArchiveCachedResponse;
};

export type GitArchiveCachedResponse = GitArchiveCachedResponses[keyof GitArchiveCachedResponses];

export type GitArchiveInvalidateData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
    };
    query: {
        commit_oid: string;
        format: string;
        prefix?: string;
        max_depth?: number;
        path_filter?: string;
    };
    url: '/api/repos/{namespace}/{repo}/git/archive/invalidate';
};

export type GitArchiveInvalidateErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitArchiveInvalidateError = GitArchiveInvalidateErrors[keyof GitArchiveInvalidateErrors];

export type GitArchiveInvalidateResponses = {
    /**
     * Invalidate archive cache
     */
    200: ApiResponseArchiveInvalidateResponse;
};

export type GitArchiveInvalidateResponse = GitArchiveInvalidateResponses[keyof GitArchiveInvalidateResponses];

export type GitArchiveInvalidateAllData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        commit_oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/archive/invalidate/{commit_oid}';
};

export type GitArchiveInvalidateAllErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitArchiveInvalidateAllError = GitArchiveInvalidateAllErrors[keyof GitArchiveInvalidateAllErrors];

export type GitArchiveInvalidateAllResponses = {
    /**
     * Invalidate all archive caches for commit
     */
    200: ApiResponseArchiveInvalidateAllResponse;
};

export type GitArchiveInvalidateAllResponse = GitArchiveInvalidateAllResponses[keyof GitArchiveInvalidateAllResponses];

export type GitArchiveListData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
    };
    query: {
        commit_oid: string;
        format: string;
        prefix?: string;
        max_depth?: number;
        path_filter?: string;
    };
    url: '/api/repos/{namespace}/{repo}/git/archive/list';
};

export type GitArchiveListErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitArchiveListError = GitArchiveListErrors[keyof GitArchiveListErrors];

export type GitArchiveListResponses = {
    /**
     * List archive entries
     */
    200: ApiResponseArchiveListResponse;
};

export type GitArchiveListResponse = GitArchiveListResponses[keyof GitArchiveListResponses];

export type GitArchiveSummaryData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
    };
    query: {
        commit_oid: string;
        format: string;
        prefix?: string;
        max_depth?: number;
        path_filter?: string;
    };
    url: '/api/repos/{namespace}/{repo}/git/archive/summary';
};

export type GitArchiveSummaryErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitArchiveSummaryError = GitArchiveSummaryErrors[keyof GitArchiveSummaryErrors];

export type GitArchiveSummaryResponses = {
    /**
     * Get archive summary
     */
    200: ApiResponseArchiveSummaryResponse;
};

export type GitArchiveSummaryResponse = GitArchiveSummaryResponses[keyof GitArchiveSummaryResponses];

export type GitBlameFileData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        commit_oid: string;
        /**
         * File path within the repository
         */
        tail: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/blame/{commit_oid}/{tail:.*}';
};

export type GitBlameFileErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBlameFileError = GitBlameFileErrors[keyof GitBlameFileErrors];

export type GitBlameFileResponses = {
    200: Array<BlameHunkResponse>;
};

export type GitBlameFileResponse = GitBlameFileResponses[keyof GitBlameFileResponses];

export type GitBlobCreateData = {
    body: BlobCreateRequest;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/blob';
};

export type GitBlobCreateErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBlobCreateError = GitBlobCreateErrors[keyof GitBlobCreateErrors];

export type GitBlobCreateResponses = {
    /**
     * Create blob
     */
    200: ApiResponseBlobCreateResponse;
};

export type GitBlobCreateResponse = GitBlobCreateResponses[keyof GitBlobCreateResponses];

export type GitBlobGetData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Blob object ID
         */
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/blob/{oid}';
};

export type GitBlobGetErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBlobGetError = GitBlobGetErrors[keyof GitBlobGetErrors];

export type GitBlobGetResponses = {
    /**
     * Get blob info
     */
    200: ApiResponseBlobInfoResponse;
};

export type GitBlobGetResponse = GitBlobGetResponses[keyof GitBlobGetResponses];

export type GitBlobContentData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Blob object ID
         */
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/blob/{oid}/content';
};

export type GitBlobContentErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBlobContentError = GitBlobContentErrors[keyof GitBlobContentErrors];

export type GitBlobContentResponses = {
    /**
     * Get blob content
     */
    200: ApiResponseBlobContentResponse;
};

export type GitBlobContentResponse = GitBlobContentResponses[keyof GitBlobContentResponses];

export type GitBlobExistsData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Blob object ID
         */
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/blob/{oid}/exists';
};

export type GitBlobExistsErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBlobExistsError = GitBlobExistsErrors[keyof GitBlobExistsErrors];

export type GitBlobExistsResponses = {
    /**
     * Check blob exists
     */
    200: ApiResponseBlobExistsResponse;
};

export type GitBlobExistsResponse = GitBlobExistsResponses[keyof GitBlobExistsResponses];

export type GitBlobIsBinaryData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Blob object ID
         */
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/blob/{oid}/is-binary';
};

export type GitBlobIsBinaryErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBlobIsBinaryError = GitBlobIsBinaryErrors[keyof GitBlobIsBinaryErrors];

export type GitBlobIsBinaryResponses = {
    /**
     * Check if blob is binary
     */
    200: ApiResponseBlobIsBinaryResponse;
};

export type GitBlobIsBinaryResponse = GitBlobIsBinaryResponses[keyof GitBlobIsBinaryResponses];

export type GitBlobSizeData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Blob object ID
         */
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/blob/{oid}/size';
};

export type GitBlobSizeErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBlobSizeError = GitBlobSizeErrors[keyof GitBlobSizeErrors];

export type GitBlobSizeResponses = {
    /**
     * Get blob size
     */
    200: ApiResponseBlobSizeResponse;
};

export type GitBlobSizeResponse = GitBlobSizeResponses[keyof GitBlobSizeResponses];

export type GitBranchListData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches';
};

export type GitBranchListErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchListError = GitBranchListErrors[keyof GitBranchListErrors];

export type GitBranchListResponses = {
    /**
     * List branches
     */
    200: ApiResponseVecBranchInfoResponse;
};

export type GitBranchListResponse = GitBranchListResponses[keyof GitBranchListResponses];

export type GitBranchCreateData = {
    body: BranchCreateRequest;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches';
};

export type GitBranchCreateErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchCreateError = GitBranchCreateErrors[keyof GitBranchCreateErrors];

export type GitBranchCreateResponses = {
    /**
     * Create branch
     */
    200: ApiResponseBranchInfoResponse;
};

export type GitBranchCreateResponse = GitBranchCreateResponses[keyof GitBranchCreateResponses];

export type GitBranchCurrentData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/current';
};

export type GitBranchCurrentErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchCurrentError = GitBranchCurrentErrors[keyof GitBranchCurrentErrors];

export type GitBranchCurrentResponses = {
    /**
     * Get current branch
     */
    200: ApiResponseBranchInfoResponse;
};

export type GitBranchCurrentResponse = GitBranchCurrentResponses[keyof GitBranchCurrentResponses];

export type GitBranchDiffData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/diff';
};

export type GitBranchDiffErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchDiffError = GitBranchDiffErrors[keyof GitBranchDiffErrors];

export type GitBranchDiffResponses = {
    /**
     * Get branch diff
     */
    200: ApiResponseBranchDiffResponse;
};

export type GitBranchDiffResponse = GitBranchDiffResponses[keyof GitBranchDiffResponses];

export type GitBranchFastForwardData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Target branch name
         */
        target: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/fast-forward/{target}';
};

export type GitBranchFastForwardErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchFastForwardError = GitBranchFastForwardErrors[keyof GitBranchFastForwardErrors];

export type GitBranchFastForwardResponses = {
    /**
     * Fast-forward branch
     */
    200: ApiResponseBranchFastForwardResponse;
};

export type GitBranchFastForwardResponse = GitBranchFastForwardResponses[keyof GitBranchFastForwardResponses];

export type GitBranchIsAncestorData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/is-ancestor';
};

export type GitBranchIsAncestorErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchIsAncestorError = GitBranchIsAncestorErrors[keyof GitBranchIsAncestorErrors];

export type GitBranchIsAncestorResponses = {
    /**
     * Check if branch is ancestor
     */
    200: ApiResponseBranchIsAncestorResponse;
};

export type GitBranchIsAncestorResponse = GitBranchIsAncestorResponses[keyof GitBranchIsAncestorResponses];

export type GitBranchIsConflictedData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/is-conflicted';
};

export type GitBranchIsConflictedErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchIsConflictedError = GitBranchIsConflictedErrors[keyof GitBranchIsConflictedErrors];

export type GitBranchIsConflictedResponses = {
    /**
     * Check if branch has conflicts
     */
    200: ApiResponseBranchIsConflictedResponse;
};

export type GitBranchIsConflictedResponse = GitBranchIsConflictedResponses[keyof GitBranchIsConflictedResponses];

export type GitBranchIsDetachedData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/is-detached';
};

export type GitBranchIsDetachedErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchIsDetachedError = GitBranchIsDetachedErrors[keyof GitBranchIsDetachedErrors];

export type GitBranchIsDetachedResponses = {
    /**
     * Check if HEAD is detached
     */
    200: ApiResponseBranchIsDetachedResponse;
};

export type GitBranchIsDetachedResponse = GitBranchIsDetachedResponses[keyof GitBranchIsDetachedResponses];

export type GitBranchIsMergedData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/is-merged';
};

export type GitBranchIsMergedErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchIsMergedError = GitBranchIsMergedErrors[keyof GitBranchIsMergedErrors];

export type GitBranchIsMergedResponses = {
    /**
     * Check if branch is merged
     */
    200: ApiResponseBranchIsMergedResponse;
};

export type GitBranchIsMergedResponse = GitBranchIsMergedResponses[keyof GitBranchIsMergedResponses];

export type GitBranchMergeBaseData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/merge-base';
};

export type GitBranchMergeBaseErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchMergeBaseError = GitBranchMergeBaseErrors[keyof GitBranchMergeBaseErrors];

export type GitBranchMergeBaseResponses = {
    /**
     * Get merge base
     */
    200: ApiResponseBranchMergeBaseResponse;
};

export type GitBranchMergeBaseResponse = GitBranchMergeBaseResponses[keyof GitBranchMergeBaseResponses];

export type GitBranchMoveData = {
    body: BranchMoveRequest;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/move';
};

export type GitBranchMoveErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchMoveError = GitBranchMoveErrors[keyof GitBranchMoveErrors];

export type GitBranchMoveResponses = {
    /**
     * Move branch
     */
    200: ApiResponseBranchInfoResponse;
};

export type GitBranchMoveResponse = GitBranchMoveResponses[keyof GitBranchMoveResponses];

export type GitBranchDeleteRemoteData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Remote branch name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/remote/{name}';
};

export type GitBranchDeleteRemoteErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchDeleteRemoteError = GitBranchDeleteRemoteErrors[keyof GitBranchDeleteRemoteErrors];

export type GitBranchDeleteRemoteResponses = {
    /**
     * Delete remote branch
     */
    200: unknown;
};

export type GitBranchRenameData = {
    body: BranchRenameRequest;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/rename';
};

export type GitBranchRenameErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchRenameError = GitBranchRenameErrors[keyof GitBranchRenameErrors];

export type GitBranchRenameResponses = {
    /**
     * Rename branch
     */
    200: ApiResponseBranchInfoResponse;
};

export type GitBranchRenameResponse = GitBranchRenameResponses[keyof GitBranchRenameResponses];

export type GitBranchSummaryData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/summary';
};

export type GitBranchSummaryErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchSummaryError = GitBranchSummaryErrors[keyof GitBranchSummaryErrors];

export type GitBranchSummaryResponses = {
    /**
     * Get branch summary
     */
    200: ApiResponseBranchSummaryResponse;
};

export type GitBranchSummaryResponse = GitBranchSummaryResponses[keyof GitBranchSummaryResponses];

export type GitBranchSetUpstreamData = {
    body: BranchSetUpstreamRequest;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/upstream';
};

export type GitBranchSetUpstreamErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchSetUpstreamError = GitBranchSetUpstreamErrors[keyof GitBranchSetUpstreamErrors];

export type GitBranchSetUpstreamResponses = {
    /**
     * Set upstream branch
     */
    200: unknown;
};

export type GitBranchDeleteData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Branch name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/{name}';
};

export type GitBranchDeleteErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchDeleteError = GitBranchDeleteErrors[keyof GitBranchDeleteErrors];

export type GitBranchDeleteResponses = {
    /**
     * Delete branch
     */
    200: unknown;
};

export type GitBranchGetData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Branch name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/{name}';
};

export type GitBranchGetErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchGetError = GitBranchGetErrors[keyof GitBranchGetErrors];

export type GitBranchGetResponses = {
    /**
     * Get branch
     */
    200: ApiResponseBranchInfoResponse;
};

export type GitBranchGetResponse = GitBranchGetResponses[keyof GitBranchGetResponses];

export type GitBranchExistsData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Branch name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/{name}/exists';
};

export type GitBranchExistsErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchExistsError = GitBranchExistsErrors[keyof GitBranchExistsErrors];

export type GitBranchExistsResponses = {
    /**
     * Check branch exists
     */
    200: ApiResponseBranchExistsResponse;
};

export type GitBranchExistsResponse = GitBranchExistsResponses[keyof GitBranchExistsResponses];

export type GitBranchIsHeadData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Branch name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/{name}/is-head';
};

export type GitBranchIsHeadErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchIsHeadError = GitBranchIsHeadErrors[keyof GitBranchIsHeadErrors];

export type GitBranchIsHeadResponses = {
    /**
     * Check if branch is HEAD
     */
    200: ApiResponseBranchIsHeadResponse;
};

export type GitBranchIsHeadResponse = GitBranchIsHeadResponses[keyof GitBranchIsHeadResponses];

export type GitBranchTrackingDifferenceData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Branch name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/{name}/tracking-difference';
};

export type GitBranchTrackingDifferenceErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchTrackingDifferenceError = GitBranchTrackingDifferenceErrors[keyof GitBranchTrackingDifferenceErrors];

export type GitBranchTrackingDifferenceResponses = {
    /**
     * Get tracking difference
     */
    200: ApiResponseBranchTrackingDiffResponse;
};

export type GitBranchTrackingDifferenceResponse = GitBranchTrackingDifferenceResponses[keyof GitBranchTrackingDifferenceResponses];

export type GitBranchUpstreamData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Branch name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/branches/{name}/upstream';
};

export type GitBranchUpstreamErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitBranchUpstreamError = GitBranchUpstreamErrors[keyof GitBranchUpstreamErrors];

export type GitBranchUpstreamResponses = {
    /**
     * Get upstream branch
     */
    200: ApiResponseBranchInfoResponse;
};

export type GitBranchUpstreamResponse = GitBranchUpstreamResponses[keyof GitBranchUpstreamResponses];

export type GitCommitLogData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
    };
    query?: {
        rev?: string;
        per_page?: number;
        page?: number;
    };
    url: '/api/repos/{namespace}/{repo}/git/commits';
};

export type GitCommitLogErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitLogError = GitCommitLogErrors[keyof GitCommitLogErrors];

export type GitCommitLogResponses = {
    /**
     * Get commit log (paginated)
     */
    200: ApiResponseCommitLogResponse;
};

export type GitCommitLogResponse = GitCommitLogResponses[keyof GitCommitLogResponses];

export type GitCommitCreateData = {
    body: CommitCreateRequest;
    path: {
        namespace: string;
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits';
};

export type GitCommitCreateErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitCreateError = GitCommitCreateErrors[keyof GitCommitCreateErrors];

export type GitCommitCreateResponses = {
    /**
     * Create commit
     */
    200: ApiResponseCommitCreateResponse;
};

export type GitCommitCreateResponse = GitCommitCreateResponses[keyof GitCommitCreateResponses];

export type GitCommitBranchesData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/branches';
};

export type GitCommitBranchesErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitBranchesError = GitCommitBranchesErrors[keyof GitCommitBranchesErrors];

export type GitCommitBranchesResponses = {
    /**
     * Get commit branches
     */
    200: ApiResponseCommitBranchesResponse;
};

export type GitCommitBranchesResponse = GitCommitBranchesResponses[keyof GitCommitBranchesResponses];

export type GitCommitCountData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/count';
};

export type GitCommitCountErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitCountError = GitCommitCountErrors[keyof GitCommitCountErrors];

export type GitCommitCountResponses = {
    /**
     * Get commit count
     */
    200: ApiResponseCommitCountResponse;
};

export type GitCommitCountResponse = GitCommitCountResponses[keyof GitCommitCountResponses];

export type GitCommitGraphData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/graph';
};

export type GitCommitGraphErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitGraphError = GitCommitGraphErrors[keyof GitCommitGraphErrors];

export type GitCommitGraphResponses = {
    /**
     * Get commit graph
     */
    200: ApiResponseCommitGraphResponse;
};

export type GitCommitGraphResponse = GitCommitGraphResponses[keyof GitCommitGraphResponses];

export type GitCommitGraphReactData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/graph-react';
};

export type GitCommitGraphReactErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitGraphReactError = GitCommitGraphReactErrors[keyof GitCommitGraphReactErrors];

export type GitCommitGraphReactResponses = {
    /**
     * Get commit graph for gitgraph-react
     */
    200: ApiResponseCommitGraphReactResponse;
};

export type GitCommitGraphReactResponse = GitCommitGraphReactResponses[keyof GitCommitGraphReactResponses];

export type GitCommitReflogData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/reflog';
};

export type GitCommitReflogErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitReflogError = GitCommitReflogErrors[keyof GitCommitReflogErrors];

export type GitCommitReflogResponses = {
    /**
     * Get commit reflog
     */
    200: ApiResponseVecCommitReflogEntryResponse;
};

export type GitCommitReflogResponse = GitCommitReflogResponses[keyof GitCommitReflogResponses];

export type GitCommitResolveRevData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/resolve';
};

export type GitCommitResolveRevErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitResolveRevError = GitCommitResolveRevErrors[keyof GitCommitResolveRevErrors];

export type GitCommitResolveRevResponses = {
    /**
     * Resolve revision to commit
     */
    200: ApiResponseString;
};

export type GitCommitResolveRevResponse = GitCommitResolveRevResponses[keyof GitCommitResolveRevResponses];

export type GitCommitTagsData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/tags';
};

export type GitCommitTagsErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitTagsError = GitCommitTagsErrors[keyof GitCommitTagsErrors];

export type GitCommitTagsResponses = {
    /**
     * Get commit tags
     */
    200: ApiResponseCommitTagsResponse;
};

export type GitCommitTagsResponse = GitCommitTagsResponses[keyof GitCommitTagsResponses];

export type GitCommitWalkData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/walk';
};

export type GitCommitWalkErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitWalkError = GitCommitWalkErrors[keyof GitCommitWalkErrors];

export type GitCommitWalkResponses = {
    /**
     * Walk commits
     */
    200: ApiResponseVecCommitMetaResponse;
};

export type GitCommitWalkResponse = GitCommitWalkResponses[keyof GitCommitWalkResponses];

export type GitCommitGetData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}';
};

export type GitCommitGetErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitGetError = GitCommitGetErrors[keyof GitCommitGetErrors];

export type GitCommitGetResponses = {
    /**
     * Get commit metadata
     */
    200: ApiResponseCommitMetaResponse;
};

export type GitCommitGetResponse = GitCommitGetResponses[keyof GitCommitGetResponses];

export type GitCommitAmendData = {
    body: CommitAmendRequest;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/amend';
};

export type GitCommitAmendErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitAmendError = GitCommitAmendErrors[keyof GitCommitAmendErrors];

export type GitCommitAmendResponses = {
    /**
     * Amend commit
     */
    200: ApiResponseCommitMetaResponse;
};

export type GitCommitAmendResponse = GitCommitAmendResponses[keyof GitCommitAmendResponses];

export type GitCommitAncestorsData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/ancestors';
};

export type GitCommitAncestorsErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitAncestorsError = GitCommitAncestorsErrors[keyof GitCommitAncestorsErrors];

export type GitCommitAncestorsResponses = {
    /**
     * Get commit ancestors
     */
    200: ApiResponseVecCommitMetaResponse;
};

export type GitCommitAncestorsResponse = GitCommitAncestorsResponses[keyof GitCommitAncestorsResponses];

export type GitCommitAuthorData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/author';
};

export type GitCommitAuthorErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitAuthorError = GitCommitAuthorErrors[keyof GitCommitAuthorErrors];

export type GitCommitAuthorResponses = {
    /**
     * Get commit author
     */
    200: ApiResponseCommitAuthorResponse;
};

export type GitCommitAuthorResponse = GitCommitAuthorResponses[keyof GitCommitAuthorResponses];

export type GitCommitCherryPickData = {
    body: CommitCherryPickRequest;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/cherry-pick';
};

export type GitCommitCherryPickErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitCherryPickError = GitCommitCherryPickErrors[keyof GitCommitCherryPickErrors];

export type GitCommitCherryPickResponses = {
    /**
     * Cherry-pick commit
     */
    200: ApiResponseCommitMetaResponse;
};

export type GitCommitCherryPickResponse = GitCommitCherryPickResponses[keyof GitCommitCherryPickResponses];

export type GitCommitCherryPickAbortData = {
    body: CommitCherryPickAbortRequest;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/cherry-pick/abort';
};

export type GitCommitCherryPickAbortErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitCherryPickAbortError = GitCommitCherryPickAbortErrors[keyof GitCommitCherryPickAbortErrors];

export type GitCommitCherryPickAbortResponses = {
    /**
     * Abort cherry-pick
     */
    200: ApiResponseBool;
};

export type GitCommitCherryPickAbortResponse = GitCommitCherryPickAbortResponses[keyof GitCommitCherryPickAbortResponses];

export type GitCommitDescendantsData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/descendants';
};

export type GitCommitDescendantsErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitDescendantsError = GitCommitDescendantsErrors[keyof GitCommitDescendantsErrors];

export type GitCommitDescendantsResponses = {
    /**
     * Get commit descendants
     */
    200: ApiResponseVecCommitMetaResponse;
};

export type GitCommitDescendantsResponse = GitCommitDescendantsResponses[keyof GitCommitDescendantsResponses];

export type GitCommitExistsData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/exists';
};

export type GitCommitExistsErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitExistsError = GitCommitExistsErrors[keyof GitCommitExistsErrors];

export type GitCommitExistsResponses = {
    /**
     * Check if commit exists
     */
    200: ApiResponseCommitExistsResponse;
};

export type GitCommitExistsResponse = GitCommitExistsResponses[keyof GitCommitExistsResponses];

export type GitCommitFirstParentData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/first-parent';
};

export type GitCommitFirstParentErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitFirstParentError = GitCommitFirstParentErrors[keyof GitCommitFirstParentErrors];

export type GitCommitFirstParentResponses = {
    /**
     * Get commit first parent
     */
    200: ApiResponseOptionCommitMetaResponse;
};

export type GitCommitFirstParentResponse = GitCommitFirstParentResponses[keyof GitCommitFirstParentResponses];

export type GitCommitIsCommitData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/is-commit';
};

export type GitCommitIsCommitErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitIsCommitError = GitCommitIsCommitErrors[keyof GitCommitIsCommitErrors];

export type GitCommitIsCommitResponses = {
    /**
     * Check if object is a commit
     */
    200: ApiResponseCommitIsCommitResponse;
};

export type GitCommitIsCommitResponse = GitCommitIsCommitResponses[keyof GitCommitIsCommitResponses];

export type GitCommitIsMergeData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/is-merge';
};

export type GitCommitIsMergeErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitIsMergeError = GitCommitIsMergeErrors[keyof GitCommitIsMergeErrors];

export type GitCommitIsMergeResponses = {
    /**
     * Check if commit is a merge
     */
    200: ApiResponseCommitIsMergeResponse;
};

export type GitCommitIsMergeResponse = GitCommitIsMergeResponses[keyof GitCommitIsMergeResponses];

export type GitCommitIsTipData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/is-tip';
};

export type GitCommitIsTipErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitIsTipError = GitCommitIsTipErrors[keyof GitCommitIsTipErrors];

export type GitCommitIsTipResponses = {
    /**
     * Check if commit is a tip
     */
    200: ApiResponseCommitIsTipResponse;
};

export type GitCommitIsTipResponse = GitCommitIsTipResponses[keyof GitCommitIsTipResponses];

export type GitCommitMessageData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/message';
};

export type GitCommitMessageErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitMessageError = GitCommitMessageErrors[keyof GitCommitMessageErrors];

export type GitCommitMessageResponses = {
    /**
     * Get commit message
     */
    200: ApiResponseCommitMessageResponse;
};

export type GitCommitMessageResponse = GitCommitMessageResponses[keyof GitCommitMessageResponses];

export type GitCommitParentCountData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/parent-count';
};

export type GitCommitParentCountErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitParentCountError = GitCommitParentCountErrors[keyof GitCommitParentCountErrors];

export type GitCommitParentCountResponses = {
    /**
     * Get commit parent count
     */
    200: ApiResponseCommitParentCountResponse;
};

export type GitCommitParentCountResponse = GitCommitParentCountResponses[keyof GitCommitParentCountResponses];

export type GitCommitParentIdsData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/parent-ids';
};

export type GitCommitParentIdsErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitParentIdsError = GitCommitParentIdsErrors[keyof GitCommitParentIdsErrors];

export type GitCommitParentIdsResponses = {
    /**
     * Get commit parent IDs
     */
    200: ApiResponseCommitParentIdsResponse;
};

export type GitCommitParentIdsResponse = GitCommitParentIdsResponses[keyof GitCommitParentIdsResponses];

export type GitCommitParentData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        index: number;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/parent/{index}';
};

export type GitCommitParentErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitParentError = GitCommitParentErrors[keyof GitCommitParentErrors];

export type GitCommitParentResponses = {
    /**
     * Get commit parent
     */
    200: ApiResponseCommitMetaResponse;
};

export type GitCommitParentResponse = GitCommitParentResponses[keyof GitCommitParentResponses];

export type GitCommitRefCountData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/ref-count';
};

export type GitCommitRefCountErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitRefCountError = GitCommitRefCountErrors[keyof GitCommitRefCountErrors];

export type GitCommitRefCountResponses = {
    /**
     * Get commit ref count
     */
    200: ApiResponseCommitRefCountResponse;
};

export type GitCommitRefCountResponse = GitCommitRefCountResponses[keyof GitCommitRefCountResponses];

export type GitCommitRefsData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/refs';
};

export type GitCommitRefsErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitRefsError = GitCommitRefsErrors[keyof GitCommitRefsErrors];

export type GitCommitRefsResponses = {
    /**
     * Get commit refs
     */
    200: ApiResponseVecCommitRefInfoResponse;
};

export type GitCommitRefsResponse = GitCommitRefsResponses[keyof GitCommitRefsResponses];

export type GitCommitRevertData = {
    body: CommitRevertRequest;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/revert';
};

export type GitCommitRevertErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitRevertError = GitCommitRevertErrors[keyof GitCommitRevertErrors];

export type GitCommitRevertResponses = {
    /**
     * Revert commit
     */
    200: ApiResponseCommitMetaResponse;
};

export type GitCommitRevertResponse = GitCommitRevertResponses[keyof GitCommitRevertResponses];

export type GitCommitRevertAbortData = {
    body: CommitRevertAbortRequest;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/revert/abort';
};

export type GitCommitRevertAbortErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitRevertAbortError = GitCommitRevertAbortErrors[keyof GitCommitRevertAbortErrors];

export type GitCommitRevertAbortResponses = {
    /**
     * Abort revert
     */
    200: ApiResponseBool;
};

export type GitCommitRevertAbortResponse = GitCommitRevertAbortResponses[keyof GitCommitRevertAbortResponses];

export type GitCommitShortIdData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/short-id';
};

export type GitCommitShortIdErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitShortIdError = GitCommitShortIdErrors[keyof GitCommitShortIdErrors];

export type GitCommitShortIdResponses = {
    /**
     * Get commit short ID
     */
    200: ApiResponseCommitShortIdResponse;
};

export type GitCommitShortIdResponse = GitCommitShortIdResponses[keyof GitCommitShortIdResponses];

export type GitCommitSummaryData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/summary';
};

export type GitCommitSummaryErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitSummaryError = GitCommitSummaryErrors[keyof GitCommitSummaryErrors];

export type GitCommitSummaryResponses = {
    /**
     * Get commit summary
     */
    200: ApiResponseCommitSummaryResponse;
};

export type GitCommitSummaryResponse = GitCommitSummaryResponses[keyof GitCommitSummaryResponses];

export type GitCommitTreeIdData = {
    body?: never;
    path: {
        namespace: string;
        repo: string;
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/commits/{oid}/tree-id';
};

export type GitCommitTreeIdErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitCommitTreeIdError = GitCommitTreeIdErrors[keyof GitCommitTreeIdErrors];

export type GitCommitTreeIdResponses = {
    /**
     * Get commit tree ID
     */
    200: ApiResponseCommitTreeIdResponse;
};

export type GitCommitTreeIdResponse = GitCommitTreeIdResponses[keyof GitCommitTreeIdResponses];

export type GitConfigEntriesData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/config/entries';
};

export type GitConfigEntriesErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitConfigEntriesError = GitConfigEntriesErrors[keyof GitConfigEntriesErrors];

export type GitConfigEntriesResponses = {
    /**
     * List repository config entries
     */
    200: ApiResponseConfigSnapshotResponse;
};

export type GitConfigEntriesResponse = GitConfigEntriesResponses[keyof GitConfigEntriesResponses];

export type GitConfigDeleteData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Config key
         */
        key: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/config/{key}';
};

export type GitConfigDeleteErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitConfigDeleteError = GitConfigDeleteErrors[keyof GitConfigDeleteErrors];

export type GitConfigDeleteResponses = {
    /**
     * Delete repository config key
     */
    200: unknown;
};

export type GitConfigGetData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Config key
         */
        key: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/config/{key}';
};

export type GitConfigGetErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitConfigGetError = GitConfigGetErrors[keyof GitConfigGetErrors];

export type GitConfigGetResponses = {
    /**
     * Get repository config value
     */
    200: ApiResponseValue;
};

export type GitConfigGetResponse = GitConfigGetResponses[keyof GitConfigGetResponses];

export type GitConfigSetData = {
    body: ConfigSetRequest;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Config key
         */
        key: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/config/{key}';
};

export type GitConfigSetErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitConfigSetError = GitConfigSetErrors[keyof GitConfigSetErrors];

export type GitConfigSetResponses = {
    /**
     * Set repository config value
     */
    200: unknown;
};

export type GitConfigHasData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Config key
         */
        key: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/config/{key}/has';
};

export type GitConfigHasErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitConfigHasError = GitConfigHasErrors[keyof GitConfigHasErrors];

export type GitConfigHasResponses = {
    /**
     * Check if repository config key exists
     */
    200: ApiResponseConfigBoolResponse;
};

export type GitConfigHasResponse = GitConfigHasResponses[keyof GitConfigHasResponses];

export type GitContributorsData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/contributors';
};

export type GitContributorsErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitContributorsError = GitContributorsErrors[keyof GitContributorsErrors];

export type GitContributorsResponses = {
    /**
     * List of contributors
     */
    200: ApiResponseContributorsResponse;
};

export type GitContributorsResponse = GitContributorsResponses[keyof GitContributorsResponses];

export type GitDescriptionResetData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/description';
};

export type GitDescriptionResetErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitDescriptionResetError = GitDescriptionResetErrors[keyof GitDescriptionResetErrors];

export type GitDescriptionResetResponses = {
    /**
     * Reset repository description
     */
    200: ApiResponseDescriptionResponse;
};

export type GitDescriptionResetResponse = GitDescriptionResetResponses[keyof GitDescriptionResetResponses];

export type GitDescriptionGetData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/description';
};

export type GitDescriptionGetErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitDescriptionGetError = GitDescriptionGetErrors[keyof GitDescriptionGetErrors];

export type GitDescriptionGetResponses = {
    /**
     * Get repository description
     */
    200: ApiResponseDescriptionResponse;
};

export type GitDescriptionGetResponse = GitDescriptionGetResponses[keyof GitDescriptionGetResponses];

export type GitDescriptionSetData = {
    body: DescriptionQuery;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/description';
};

export type GitDescriptionSetErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitDescriptionSetError = GitDescriptionSetErrors[keyof GitDescriptionSetErrors];

export type GitDescriptionSetResponses = {
    /**
     * Set repository description
     */
    200: ApiResponseDescriptionResponse;
};

export type GitDescriptionSetResponse = GitDescriptionSetResponses[keyof GitDescriptionSetResponses];

export type GitDescriptionExistsData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/description/exists';
};

export type GitDescriptionExistsErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitDescriptionExistsError = GitDescriptionExistsErrors[keyof GitDescriptionExistsErrors];

export type GitDescriptionExistsResponses = {
    /**
     * Check if repository description exists
     */
    200: ApiResponseValue;
};

export type GitDescriptionExistsResponse = GitDescriptionExistsResponses[keyof GitDescriptionExistsResponses];

export type GitDiffTreeToTreeData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query: {
        /**
         * Old tree OID (commit or tree SHA)
         */
        old_tree: string;
        /**
         * New tree OID (commit or tree SHA)
         */
        new_tree: string;
    };
    url: '/api/repos/{namespace}/{repo}/git/diff';
};

export type GitDiffTreeToTreeErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitDiffTreeToTreeError = GitDiffTreeToTreeErrors[keyof GitDiffTreeToTreeErrors];

export type GitDiffTreeToTreeResponses = {
    /**
     * Tree to tree diff
     */
    200: ApiResponseDiffResultResponse;
};

export type GitDiffTreeToTreeResponse = GitDiffTreeToTreeResponses[keyof GitDiffTreeToTreeResponses];

export type GitDiffCommitToWorkdirData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Commit identifier
         */
        commit: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/diff/commit/{commit}';
};

export type GitDiffCommitToWorkdirErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitDiffCommitToWorkdirError = GitDiffCommitToWorkdirErrors[keyof GitDiffCommitToWorkdirErrors];

export type GitDiffCommitToWorkdirResponses = {
    /**
     * Commit to workdir diff
     */
    200: ApiResponseDiffResultResponse;
};

export type GitDiffCommitToWorkdirResponse = GitDiffCommitToWorkdirResponses[keyof GitDiffCommitToWorkdirResponses];

export type GitDiffCommitToIndexData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Commit identifier
         */
        commit: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/diff/commit/{commit}/index';
};

export type GitDiffCommitToIndexErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitDiffCommitToIndexError = GitDiffCommitToIndexErrors[keyof GitDiffCommitToIndexErrors];

export type GitDiffCommitToIndexResponses = {
    /**
     * Commit to index diff
     */
    200: ApiResponseDiffResultResponse;
};

export type GitDiffCommitToIndexResponse = GitDiffCommitToIndexResponses[keyof GitDiffCommitToIndexResponses];

export type GitDiffIndexToTreeData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/diff/index';
};

export type GitDiffIndexToTreeErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitDiffIndexToTreeError = GitDiffIndexToTreeErrors[keyof GitDiffIndexToTreeErrors];

export type GitDiffIndexToTreeResponses = {
    /**
     * Index to tree diff
     */
    200: ApiResponseDiffResultResponse;
};

export type GitDiffIndexToTreeResponse = GitDiffIndexToTreeResponses[keyof GitDiffIndexToTreeResponses];

export type GitDiffPatchIdData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/diff/patch-id';
};

export type GitDiffPatchIdErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitDiffPatchIdError = GitDiffPatchIdErrors[keyof GitDiffPatchIdErrors];

export type GitDiffPatchIdResponses = {
    /**
     * Patch ID
     */
    200: ApiResponseDiffPatchIdResponse;
};

export type GitDiffPatchIdResponse = GitDiffPatchIdResponses[keyof GitDiffPatchIdResponses];

export type GitDiffSideBySideData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/diff/side-by-side';
};

export type GitDiffSideBySideErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitDiffSideBySideError = GitDiffSideBySideErrors[keyof GitDiffSideBySideErrors];

export type GitDiffSideBySideResponses = {
    /**
     * Side-by-side diff
     */
    200: ApiResponseSideBySideDiffResponse;
};

export type GitDiffSideBySideResponse = GitDiffSideBySideResponses[keyof GitDiffSideBySideResponses];

export type GitDiffStatsData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/diff/stats';
};

export type GitDiffStatsErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitDiffStatsError = GitDiffStatsErrors[keyof GitDiffStatsErrors];

export type GitDiffStatsResponses = {
    /**
     * Diff statistics
     */
    200: ApiResponseDiffStatsResponse;
};

export type GitDiffStatsResponse = GitDiffStatsResponses[keyof GitDiffStatsResponses];

export type GitDiffWorkdirToIndexData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/diff/workdir';
};

export type GitDiffWorkdirToIndexErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitDiffWorkdirToIndexError = GitDiffWorkdirToIndexErrors[keyof GitDiffWorkdirToIndexErrors];

export type GitDiffWorkdirToIndexResponses = {
    /**
     * Workdir to index diff
     */
    200: ApiResponseDiffResultResponse;
};

export type GitDiffWorkdirToIndexResponse = GitDiffWorkdirToIndexResponses[keyof GitDiffWorkdirToIndexResponses];

export type GitMergeAbortData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/merge/abort';
};

export type GitMergeAbortErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitMergeAbortError = GitMergeAbortErrors[keyof GitMergeAbortErrors];

export type GitMergeAbortResponses = {
    /**
     * Abort an in-progress merge
     */
    200: unknown;
};

export type GitMergeAnalysisForRefData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Reference name
         */
        ref_name: string;
        /**
         * The OID to analyze merge against
         */
        their_oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/merge/analysis/{ref_name}/{their_oid}';
};

export type GitMergeAnalysisForRefErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitMergeAnalysisForRefError = GitMergeAnalysisForRefErrors[keyof GitMergeAnalysisForRefErrors];

export type GitMergeAnalysisForRefResponses = {
    /**
     * Perform merge analysis for a specific ref
     */
    200: ApiResponseMergeAnalysisResponse;
};

export type GitMergeAnalysisForRefResponse = GitMergeAnalysisForRefResponses[keyof GitMergeAnalysisForRefResponses];

export type GitMergeAnalysisData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * The OID to analyze merge against
         */
        their_oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/merge/analysis/{their_oid}';
};

export type GitMergeAnalysisErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitMergeAnalysisError = GitMergeAnalysisErrors[keyof GitMergeAnalysisErrors];

export type GitMergeAnalysisResponses = {
    /**
     * Perform merge analysis
     */
    200: ApiResponseMergeAnalysisResponse;
};

export type GitMergeAnalysisResponse = GitMergeAnalysisResponses[keyof GitMergeAnalysisResponses];

export type GitMergeBaseData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * First commit OID
         */
        oid1: string;
        /**
         * Second commit OID
         */
        oid2: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/merge/base/{oid1}/{oid2}';
};

export type GitMergeBaseErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitMergeBaseError = GitMergeBaseErrors[keyof GitMergeBaseErrors];

export type GitMergeBaseResponses = {
    /**
     * Get merge base of two commits
     */
    200: ApiResponseString;
};

export type GitMergeBaseResponse = GitMergeBaseResponses[keyof GitMergeBaseResponses];

export type GitMergeCommitsData = {
    body: MergeCommitsRequest;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/merge/commits';
};

export type GitMergeCommitsErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitMergeCommitsError = GitMergeCommitsErrors[keyof GitMergeCommitsErrors];

export type GitMergeCommitsResponses = {
    /**
     * Merge commits
     */
    200: unknown;
};

export type GitMergeheadListData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/merge/heads';
};

export type GitMergeheadListErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitMergeheadListError = GitMergeheadListErrors[keyof GitMergeheadListErrors];

export type GitMergeheadListResponses = {
    /**
     * List merge heads
     */
    200: ApiResponseVecMergeheadInfoResponse;
};

export type GitMergeheadListResponse = GitMergeheadListResponses[keyof GitMergeheadListResponses];

export type GitMergeIsInProgressData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/merge/in-progress';
};

export type GitMergeIsInProgressErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitMergeIsInProgressError = GitMergeIsInProgressErrors[keyof GitMergeIsInProgressErrors];

export type GitMergeIsInProgressResponses = {
    /**
     * Check if merge is in progress
     */
    200: ApiResponseValue;
};

export type GitMergeIsInProgressResponse = GitMergeIsInProgressResponses[keyof GitMergeIsInProgressResponses];

export type GitMergeIsConflictedData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/merge/is-conflicted';
};

export type GitMergeIsConflictedErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitMergeIsConflictedError = GitMergeIsConflictedErrors[keyof GitMergeIsConflictedErrors];

export type GitMergeIsConflictedResponses = {
    /**
     * Check if merge has conflicts
     */
    200: ApiResponseValue;
};

export type GitMergeIsConflictedResponse = GitMergeIsConflictedResponses[keyof GitMergeIsConflictedResponses];

export type GitMergeTreesData = {
    body: MergeTreesRequest;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/merge/trees';
};

export type GitMergeTreesErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitMergeTreesError = GitMergeTreesErrors[keyof GitMergeTreesErrors];

export type GitMergeTreesResponses = {
    /**
     * Merge trees
     */
    200: unknown;
};

export type GitReadmeData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: {
        /**
         * Git reference (branch, tag, commit). Defaults to HEAD.
         */
        ref?: string;
    };
    url: '/api/repos/{namespace}/{repo}/git/readme';
};

export type GitReadmeErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
};

export type GitReadmeError = GitReadmeErrors[keyof GitReadmeErrors];

export type GitReadmeResponses = {
    /**
     * Get README content
     */
    200: ApiResponseGitReadmeResponse;
};

export type GitReadmeResponse2 = GitReadmeResponses[keyof GitReadmeResponses];

export type GitRefListData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/refs';
};

export type GitRefListErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitRefListError = GitRefListErrors[keyof GitRefListErrors];

export type GitRefListResponses = {
    /**
     * List of refs
     */
    200: ApiResponseVecRefInfoResponse;
};

export type GitRefListResponse = GitRefListResponses[keyof GitRefListResponses];

export type GitRefCreateData = {
    body: RefCreateRequest;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/refs';
};

export type GitRefCreateErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitRefCreateError = GitRefCreateErrors[keyof GitRefCreateErrors];

export type GitRefCreateResponses = {
    /**
     * Ref created
     */
    200: ApiResponseRefUpdateResponse;
};

export type GitRefCreateResponse = GitRefCreateResponses[keyof GitRefCreateResponses];

export type GitRefUpdateData = {
    body: RefUpdateRequest;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/refs';
};

export type GitRefUpdateErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitRefUpdateError = GitRefUpdateErrors[keyof GitRefUpdateErrors];

export type GitRefUpdateResponses = {
    /**
     * Ref updated
     */
    200: ApiResponseRefUpdateResponse;
};

export type GitRefUpdateResponse = GitRefUpdateResponses[keyof GitRefUpdateResponses];

export type GitRefRenameData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/refs/rename';
};

export type GitRefRenameErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitRefRenameError = GitRefRenameErrors[keyof GitRefRenameErrors];

export type GitRefRenameResponses = {
    /**
     * Ref renamed
     */
    200: ApiResponseRefInfoResponse;
};

export type GitRefRenameResponse = GitRefRenameResponses[keyof GitRefRenameResponses];

export type GitRefDeleteData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Ref name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/refs/{name}';
};

export type GitRefDeleteErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitRefDeleteError = GitRefDeleteErrors[keyof GitRefDeleteErrors];

export type GitRefDeleteResponses = {
    /**
     * Ref deleted
     */
    200: ApiResponseRefDeleteResponse;
};

export type GitRefDeleteResponse = GitRefDeleteResponses[keyof GitRefDeleteResponses];

export type GitRefGetData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Ref name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/refs/{name}';
};

export type GitRefGetErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitRefGetError = GitRefGetErrors[keyof GitRefGetErrors];

export type GitRefGetResponses = {
    /**
     * Ref info
     */
    200: ApiResponseRefInfoResponse;
};

export type GitRefGetResponse = GitRefGetResponses[keyof GitRefGetResponses];

export type GitRefExistsData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Ref name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/refs/{name}/exists';
};

export type GitRefExistsErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitRefExistsError = GitRefExistsErrors[keyof GitRefExistsErrors];

export type GitRefExistsResponses = {
    /**
     * Ref exists check
     */
    200: ApiResponseRefExistsResponse;
};

export type GitRefExistsResponse = GitRefExistsResponses[keyof GitRefExistsResponses];

export type GitRefTargetData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Ref name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/refs/{name}/target';
};

export type GitRefTargetErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitRefTargetError = GitRefTargetErrors[keyof GitRefTargetErrors];

export type GitRefTargetResponses = {
    /**
     * Ref target
     */
    200: ApiResponseRefTargetResponse;
};

export type GitRefTargetResponse = GitRefTargetResponses[keyof GitRefTargetResponses];

export type GitUnstarData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/star';
};

export type GitUnstarErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitUnstarError = GitUnstarErrors[keyof GitUnstarErrors];

export type GitUnstarResponses = {
    /**
     * Unstar the repository
     */
    200: unknown;
};

export type GitStarData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/star';
};

export type GitStarErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitStarError = GitStarErrors[keyof GitStarErrors];

export type GitStarResponses = {
    /**
     * Star the repository
     */
    200: unknown;
};

export type GitStarCountData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/star/count';
};

export type GitStarCountErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitStarCountError = GitStarCountErrors[keyof GitStarCountErrors];

export type GitStarCountResponses = {
    /**
     * Get star count for the repository
     */
    200: ApiResponseStarCountResponse;
};

export type GitStarCountResponse = GitStarCountResponses[keyof GitStarCountResponses];

export type GitIsStarredData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/star/is-starred';
};

export type GitIsStarredErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitIsStarredError = GitIsStarredErrors[keyof GitIsStarredErrors];

export type GitIsStarredResponses = {
    /**
     * Check if the current user has starred the repository
     */
    200: ApiResponseValue;
};

export type GitIsStarredResponse = GitIsStarredResponses[keyof GitIsStarredResponses];

export type GitStarUserListData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: {
        /**
         * Page number
         */
        page?: number;
        /**
         * Items per page
         */
        per_page?: number;
    };
    url: '/api/repos/{namespace}/{repo}/git/star/users';
};

export type GitStarUserListErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitStarUserListError = GitStarUserListErrors[keyof GitStarUserListErrors];

export type GitStarUserListResponses = {
    /**
     * List users who starred the repository
     */
    200: ApiResponseStarUserListResponse;
};

export type GitStarUserListResponse = GitStarUserListResponses[keyof GitStarUserListResponses];

export type GitTagListData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tags';
};

export type GitTagListErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTagListError = GitTagListErrors[keyof GitTagListErrors];

export type GitTagListResponses = {
    /**
     * List all tags
     */
    200: ApiResponseVecTagInfoResponse;
};

export type GitTagListResponse = GitTagListResponses[keyof GitTagListResponses];

export type GitTagCreateData = {
    body: TagCreateRequest;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tags';
};

export type GitTagCreateErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTagCreateError = GitTagCreateErrors[keyof GitTagCreateErrors];

export type GitTagCreateResponses = {
    /**
     * Create an annotated tag
     */
    200: ApiResponseTagInfoResponse;
};

export type GitTagCreateResponse = GitTagCreateResponses[keyof GitTagCreateResponses];

export type GitTagCountData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tags/count';
};

export type GitTagCountErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTagCountError = GitTagCountErrors[keyof GitTagCountErrors];

export type GitTagCountResponses = {
    /**
     * Get tag count
     */
    200: ApiResponseTagCountResponse;
};

export type GitTagCountResponse = GitTagCountResponses[keyof GitTagCountResponses];

export type GitTagCreateLightweightData = {
    body: TagCreateLightweightRequest;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tags/lightweight';
};

export type GitTagCreateLightweightErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTagCreateLightweightError = GitTagCreateLightweightErrors[keyof GitTagCreateLightweightErrors];

export type GitTagCreateLightweightResponses = {
    /**
     * Create a lightweight tag
     */
    200: ApiResponseTagInfoResponse;
};

export type GitTagCreateLightweightResponse = GitTagCreateLightweightResponses[keyof GitTagCreateLightweightResponses];

export type GitTagUpdateMessageData = {
    body: TagUpdateMessageRequest;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tags/message';
};

export type GitTagUpdateMessageErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTagUpdateMessageError = GitTagUpdateMessageErrors[keyof GitTagUpdateMessageErrors];

export type GitTagUpdateMessageResponses = {
    /**
     * Update tag message
     */
    200: ApiResponseTagInfoResponse;
};

export type GitTagUpdateMessageResponse = GitTagUpdateMessageResponses[keyof GitTagUpdateMessageResponses];

export type GitTagListNamesData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tags/names';
};

export type GitTagListNamesErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTagListNamesError = GitTagListNamesErrors[keyof GitTagListNamesErrors];

export type GitTagListNamesResponses = {
    /**
     * List all tag names
     */
    200: ApiResponseVecString;
};

export type GitTagListNamesResponse = GitTagListNamesResponses[keyof GitTagListNamesResponses];

export type GitTagRenameData = {
    body: TagRenameQuery;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tags/rename';
};

export type GitTagRenameErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTagRenameError = GitTagRenameErrors[keyof GitTagRenameErrors];

export type GitTagRenameResponses = {
    /**
     * Rename a tag
     */
    200: ApiResponseTagInfoResponse;
};

export type GitTagRenameResponse = GitTagRenameResponses[keyof GitTagRenameResponses];

export type GitTagSummaryData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tags/summary';
};

export type GitTagSummaryErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTagSummaryError = GitTagSummaryErrors[keyof GitTagSummaryErrors];

export type GitTagSummaryResponses = {
    /**
     * Get tag summary
     */
    200: ApiResponseTagSummaryResponse;
};

export type GitTagSummaryResponse = GitTagSummaryResponses[keyof GitTagSummaryResponses];

export type GitTagDeleteData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Tag name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tags/{name}';
};

export type GitTagDeleteErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTagDeleteError = GitTagDeleteErrors[keyof GitTagDeleteErrors];

export type GitTagDeleteResponses = {
    /**
     * Delete a tag
     */
    200: unknown;
};

export type GitTagGetData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Tag name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tags/{name}';
};

export type GitTagGetErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTagGetError = GitTagGetErrors[keyof GitTagGetErrors];

export type GitTagGetResponses = {
    /**
     * Get a tag by name
     */
    200: ApiResponseTagInfoResponse;
};

export type GitTagGetResponse = GitTagGetResponses[keyof GitTagGetResponses];

export type GitTagExistsData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Tag name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tags/{name}/exists';
};

export type GitTagExistsErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTagExistsError = GitTagExistsErrors[keyof GitTagExistsErrors];

export type GitTagExistsResponses = {
    /**
     * Check if a tag exists
     */
    200: ApiResponseTagExistsResponse;
};

export type GitTagExistsResponse = GitTagExistsResponses[keyof GitTagExistsResponses];

export type GitTagIsAnnotatedData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Tag name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tags/{name}/is-annotated';
};

export type GitTagIsAnnotatedErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTagIsAnnotatedError = GitTagIsAnnotatedErrors[keyof GitTagIsAnnotatedErrors];

export type GitTagIsAnnotatedResponses = {
    /**
     * Check if a tag is annotated
     */
    200: ApiResponseTagIsAnnotatedResponse;
};

export type GitTagIsAnnotatedResponse = GitTagIsAnnotatedResponses[keyof GitTagIsAnnotatedResponses];

export type GitTagMessageData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Tag name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tags/{name}/message';
};

export type GitTagMessageErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTagMessageError = GitTagMessageErrors[keyof GitTagMessageErrors];

export type GitTagMessageResponses = {
    /**
     * Get tag message
     */
    200: ApiResponseTagMessageResponse;
};

export type GitTagMessageResponse = GitTagMessageResponses[keyof GitTagMessageResponses];

export type GitTagTaggerData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Tag name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tags/{name}/tagger';
};

export type GitTagTaggerErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTagTaggerError = GitTagTaggerErrors[keyof GitTagTaggerErrors];

export type GitTagTaggerResponses = {
    /**
     * Get tag tagger info
     */
    200: ApiResponseTagTaggerResponse;
};

export type GitTagTaggerResponse = GitTagTaggerResponses[keyof GitTagTaggerResponses];

export type GitTagTargetData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Tag name
         */
        name: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tags/{name}/target';
};

export type GitTagTargetErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTagTargetError = GitTagTargetErrors[keyof GitTagTargetErrors];

export type GitTagTargetResponses = {
    /**
     * Get tag target OID
     */
    200: ApiResponseTagTargetResponse;
};

export type GitTagTargetResponse = GitTagTargetResponses[keyof GitTagTargetResponses];

export type GitTreeDiffstatsData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tree/diff-stats';
};

export type GitTreeDiffstatsErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTreeDiffstatsError = GitTreeDiffstatsErrors[keyof GitTreeDiffstatsErrors];

export type GitTreeDiffstatsResponses = {
    /**
     * Get tree diff stats
     */
    200: ApiResponseTreeDiffStatsResponse;
};

export type GitTreeDiffstatsResponse = GitTreeDiffstatsResponses[keyof GitTreeDiffstatsResponses];

export type GitTreeEntryByCommitPathData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Commit OID
         */
        commit: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tree/{commit}/commit-entry-by-path';
};

export type GitTreeEntryByCommitPathErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTreeEntryByCommitPathError = GitTreeEntryByCommitPathErrors[keyof GitTreeEntryByCommitPathErrors];

export type GitTreeEntryByCommitPathResponses = {
    /**
     * Get tree entry by commit path
     */
    200: ApiResponseTreeEntryResponse;
};

export type GitTreeEntryByCommitPathResponse = GitTreeEntryByCommitPathResponses[keyof GitTreeEntryByCommitPathResponses];

export type GitTreeGetData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Tree object ID
         */
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tree/{oid}';
};

export type GitTreeGetErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTreeGetError = GitTreeGetErrors[keyof GitTreeGetErrors];

export type GitTreeGetResponses = {
    /**
     * Get tree info
     */
    200: ApiResponseTreeInfoResponse;
};

export type GitTreeGetResponse = GitTreeGetResponses[keyof GitTreeGetResponses];

export type GitTreeEntryByPathData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Tree object ID
         */
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tree/{oid}/entry-by-path';
};

export type GitTreeEntryByPathErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTreeEntryByPathError = GitTreeEntryByPathErrors[keyof GitTreeEntryByPathErrors];

export type GitTreeEntryByPathResponses = {
    /**
     * Get tree entry by path
     */
    200: ApiResponseTreeEntryResponse;
};

export type GitTreeEntryByPathResponse = GitTreeEntryByPathResponses[keyof GitTreeEntryByPathResponses];

export type GitTreeEntryCountData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Tree object ID
         */
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tree/{oid}/entry-count';
};

export type GitTreeEntryCountErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTreeEntryCountError = GitTreeEntryCountErrors[keyof GitTreeEntryCountErrors];

export type GitTreeEntryCountResponses = {
    /**
     * Get tree entry count
     */
    200: ApiResponseTreeEntryCountResponse;
};

export type GitTreeEntryCountResponse = GitTreeEntryCountResponses[keyof GitTreeEntryCountResponses];

export type GitTreeEntryData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Tree object ID
         */
        oid: string;
        /**
         * Entry index
         */
        index: number;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tree/{oid}/entry/{index}';
};

export type GitTreeEntryErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTreeEntryError = GitTreeEntryErrors[keyof GitTreeEntryErrors];

export type GitTreeEntryResponses = {
    /**
     * Get tree entry by index
     */
    200: ApiResponseTreeEntryResponse;
};

export type GitTreeEntryResponse = GitTreeEntryResponses[keyof GitTreeEntryResponses];

export type GitTreeExistsData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Tree object ID
         */
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tree/{oid}/exists';
};

export type GitTreeExistsErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTreeExistsError = GitTreeExistsErrors[keyof GitTreeExistsErrors];

export type GitTreeExistsResponses = {
    /**
     * Check if tree exists
     */
    200: ApiResponseTreeExistsResponse;
};

export type GitTreeExistsResponse = GitTreeExistsResponses[keyof GitTreeExistsResponses];

export type GitTreeIsEmptyData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Tree object ID
         */
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tree/{oid}/is-empty';
};

export type GitTreeIsEmptyErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTreeIsEmptyError = GitTreeIsEmptyErrors[keyof GitTreeIsEmptyErrors];

export type GitTreeIsEmptyResponses = {
    /**
     * Check if tree is empty
     */
    200: ApiResponseTreeIsEmptyResponse;
};

export type GitTreeIsEmptyResponse = GitTreeIsEmptyResponses[keyof GitTreeIsEmptyResponses];

export type GitTreeListData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Tree object ID
         */
        oid: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/tree/{oid}/list';
};

export type GitTreeListErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitTreeListError = GitTreeListErrors[keyof GitTreeListErrors];

export type GitTreeListResponses = {
    /**
     * List tree entries
     */
    200: ApiResponseVecTreeEntryResponse;
};

export type GitTreeListResponse = GitTreeListResponses[keyof GitTreeListResponses];

export type GitUnwatchData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/watch';
};

export type GitUnwatchErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitUnwatchError = GitUnwatchErrors[keyof GitUnwatchErrors];

export type GitUnwatchResponses = {
    /**
     * Unwatch the repository
     */
    200: unknown;
};

export type GitWatchData = {
    body: GitWatchRequest;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/watch';
};

export type GitWatchErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitWatchError = GitWatchErrors[keyof GitWatchErrors];

export type GitWatchResponses = {
    /**
     * Watch the repository
     */
    200: unknown;
};

export type GitWatchCountData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/watch/count';
};

export type GitWatchCountErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitWatchCountError = GitWatchCountErrors[keyof GitWatchCountErrors];

export type GitWatchCountResponses = {
    /**
     * Get watch count for the repository
     */
    200: ApiResponseWatchCountResponse;
};

export type GitWatchCountResponse = GitWatchCountResponses[keyof GitWatchCountResponses];

export type GitIsWatchedData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/watch/is-watched';
};

export type GitIsWatchedErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitIsWatchedError = GitIsWatchedErrors[keyof GitIsWatchedErrors];

export type GitIsWatchedResponses = {
    /**
     * Check if the current user is watching the repository
     */
    200: ApiResponseValue;
};

export type GitIsWatchedResponse = GitIsWatchedResponses[keyof GitIsWatchedResponses];

export type GitWatchUserListData = {
    body?: never;
    path: {
        /**
         * Project namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: {
        /**
         * Page number
         */
        page?: number;
        /**
         * Items per page
         */
        per_page?: number;
    };
    url: '/api/repos/{namespace}/{repo}/git/watch/users';
};

export type GitWatchUserListErrors = {
    /**
     * Unauthorized
     */
    401: ApiResponseApiError;
    /**
     * Not found
     */
    404: ApiResponseApiError;
};

export type GitWatchUserListError = GitWatchUserListErrors[keyof GitWatchUserListErrors];

export type GitWatchUserListResponses = {
    /**
     * List users who are watching the repository
     */
    200: ApiResponseWatchUserListResponse;
};

export type GitWatchUserListResponse = GitWatchUserListResponses[keyof GitWatchUserListResponses];

export type GitWebhookListData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/webhooks';
};

export type GitWebhookListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type GitWebhookListResponses = {
    /**
     * List webhooks
     */
    200: ApiResponseWebhookListResponse;
};

export type GitWebhookListResponse = GitWebhookListResponses[keyof GitWebhookListResponses];

export type GitWebhookCreateData = {
    body: CreateWebhookParams;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/webhooks';
};

export type GitWebhookCreateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type GitWebhookCreateResponses = {
    /**
     * Create webhook
     */
    200: ApiResponseWebhookResponse;
};

export type GitWebhookCreateResponse = GitWebhookCreateResponses[keyof GitWebhookCreateResponses];

export type GitWebhookDeleteData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Webhook ID
         */
        webhook_id: number;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/webhooks/{webhook_id}';
};

export type GitWebhookDeleteErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type GitWebhookDeleteResponses = {
    /**
     * Delete webhook
     */
    200: unknown;
};

export type GitWebhookGetData = {
    body?: never;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Webhook ID
         */
        webhook_id: number;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/webhooks/{webhook_id}';
};

export type GitWebhookGetErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type GitWebhookGetResponses = {
    /**
     * Get webhook
     */
    200: ApiResponseWebhookResponse;
};

export type GitWebhookGetResponse = GitWebhookGetResponses[keyof GitWebhookGetResponses];

export type GitWebhookUpdateData = {
    body: UpdateWebhookParams;
    path: {
        /**
         * Repository namespace
         */
        namespace: string;
        /**
         * Repository name
         */
        repo: string;
        /**
         * Webhook ID
         */
        webhook_id: number;
    };
    query?: never;
    url: '/api/repos/{namespace}/{repo}/git/webhooks/{webhook_id}';
};

export type GitWebhookUpdateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type GitWebhookUpdateResponses = {
    /**
     * Update webhook
     */
    200: ApiResponseWebhookResponse;
};

export type GitWebhookUpdateResponse = GitWebhookUpdateResponses[keyof GitWebhookUpdateResponses];

export type CategoryDeleteData = {
    body?: never;
    path: {
        category_id: string;
    };
    query?: never;
    url: '/api/room-categories/{category_id}';
};

export type CategoryDeleteErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type CategoryDeleteResponses = {
    /**
     * Delete room category
     */
    200: unknown;
};

export type CategoryUpdateData = {
    body: RoomCategoryUpdateRequest;
    path: {
        category_id: string;
    };
    query?: never;
    url: '/api/room-categories/{category_id}';
};

export type CategoryUpdateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type CategoryUpdateResponses = {
    /**
     * Update room category
     */
    200: ApiResponseRoomCategoryResponse;
};

export type CategoryUpdateResponse = CategoryUpdateResponses[keyof CategoryUpdateResponses];

export type RoomDeleteData = {
    body?: never;
    path: {
        room_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}';
};

export type RoomDeleteErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type RoomDeleteResponses = {
    /**
     * Delete room
     */
    200: unknown;
};

export type RoomGetData = {
    body?: never;
    path: {
        room_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}';
};

export type RoomGetErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type RoomGetResponses = {
    /**
     * Get room
     */
    200: ApiResponseRoomResponse;
};

export type RoomGetResponse = RoomGetResponses[keyof RoomGetResponses];

export type RoomUpdateData = {
    body: RoomUpdateRequest;
    path: {
        room_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}';
};

export type RoomUpdateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type RoomUpdateResponses = {
    /**
     * Update room
     */
    200: ApiResponseRoomResponse;
};

export type RoomUpdateResponse = RoomUpdateResponses[keyof RoomUpdateResponses];

export type AiListData = {
    body?: never;
    path: {
        room_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}/ai';
};

export type AiListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type AiListResponses = {
    /**
     * List room AI configurations
     */
    200: ApiResponseVecRoomAiResponse;
};

export type AiListResponse = AiListResponses[keyof AiListResponses];

export type AiUpsertData = {
    body: RoomAiUpsertRequest;
    path: {
        room_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}/ai';
};

export type AiUpsertErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type AiUpsertResponses = {
    /**
     * Upsert room AI configuration
     */
    200: ApiResponseRoomAiResponse;
};

export type AiUpsertResponse = AiUpsertResponses[keyof AiUpsertResponses];

export type AiDeleteData = {
    body?: never;
    path: {
        room_id: string;
        model_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}/ai/{model_id}';
};

export type AiDeleteErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type AiDeleteResponses = {
    /**
     * Delete room AI configuration
     */
    200: unknown;
};

export type MemberListData = {
    body?: never;
    path: {
        room_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}/members';
};

export type MemberListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type MemberListResponses = {
    /**
     * List room members
     */
    200: ApiResponseVecRoomMemberResponse;
};

export type MemberListResponse2 = MemberListResponses[keyof MemberListResponses];

export type MemberAddData = {
    body: RoomMemberAddRequest;
    path: {
        room_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}/members';
};

export type MemberAddErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type MemberAddResponses = {
    /**
     * Add room member
     */
    200: ApiResponseRoomMemberResponse;
};

export type MemberAddResponse = MemberAddResponses[keyof MemberAddResponses];

export type MemberSetReadSeqData = {
    body: RoomMemberReadSeqRequest;
    path: {
        room_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}/members/me/read-seq';
};

export type MemberSetReadSeqErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type MemberSetReadSeqResponses = {
    /**
     * Set member read sequence
     */
    200: ApiResponseRoomMemberResponse;
};

export type MemberSetReadSeqResponse = MemberSetReadSeqResponses[keyof MemberSetReadSeqResponses];

export type MemberRemoveData = {
    body?: never;
    path: {
        room_id: string;
        user_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}/members/{user_id}';
};

export type MemberRemoveErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type MemberRemoveResponses = {
    /**
     * Remove room member
     */
    200: unknown;
};

export type MemberUpdateRoleData = {
    body: RoomMemberRoleUpdateRequest;
    path: {
        room_id: string;
        user_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}/members/{user_id}/role';
};

export type MemberUpdateRoleErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type MemberUpdateRoleResponses = {
    /**
     * Update member role
     */
    200: ApiResponseRoomMemberResponse;
};

export type MemberUpdateRoleResponse = MemberUpdateRoleResponses[keyof MemberUpdateRoleResponses];

export type MessageCreateData = {
    body: RoomMessageCreateRequest;
    path: {
        room_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}/messages';
};

export type MessageCreateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type MessageCreateResponses = {
    /**
     * Create room message
     */
    200: ApiResponseRoomMessageResponse;
};

export type MessageCreateResponse = MessageCreateResponses[keyof MessageCreateResponses];

export type MessageSearchData = {
    body?: never;
    path: {
        room_id: string;
    };
    query: {
        q: string;
        limit?: number;
        offset?: number;
    };
    url: '/api/rooms/{room_id}/messages/search';
};

export type MessageSearchErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type MessageSearchResponses = {
    /**
     * Search messages
     */
    200: ApiResponseMessageSearchResponse;
};

export type MessageSearchResponse2 = MessageSearchResponses[keyof MessageSearchResponses];

export type MessageUpdateData = {
    body: RoomMessageUpdateRequest;
    path: {
        room_id: string;
        message_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}/messages/{message_id}';
};

export type MessageUpdateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type MessageUpdateResponses = {
    /**
     * Update room message
     */
    200: ApiResponseRoomMessageResponse;
};

export type MessageUpdateResponse = MessageUpdateResponses[keyof MessageUpdateResponses];

export type MessageEditHistoryData = {
    body?: never;
    path: {
        room_id: string;
        message_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}/messages/{message_id}/edit-history';
};

export type MessageEditHistoryErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type MessageEditHistoryResponses = {
    /**
     * Get message edit history
     */
    200: ApiResponseMessageEditHistoryResponse;
};

export type MessageEditHistoryResponse2 = MessageEditHistoryResponses[keyof MessageEditHistoryResponses];

export type PinRemoveData = {
    body?: never;
    path: {
        room_id: string;
        message_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}/messages/{message_id}/pin';
};

export type PinRemoveErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type PinRemoveResponses = {
    /**
     * Remove room pin
     */
    200: unknown;
};

export type PinAddData = {
    body?: never;
    path: {
        room_id: string;
        message_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}/messages/{message_id}/pin';
};

export type PinAddErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type PinAddResponses = {
    /**
     * Add room pin
     */
    200: ApiResponseRoomPinResponse;
};

export type PinAddResponse = PinAddResponses[keyof PinAddResponses];

export type MessageRevokeData = {
    body?: never;
    path: {
        room_id: string;
        message_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}/messages/{message_id}/revoke';
};

export type MessageRevokeErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type MessageRevokeResponses = {
    /**
     * Revoke room message
     */
    200: ApiResponseRoomMessageResponse;
};

export type MessageRevokeResponse = MessageRevokeResponses[keyof MessageRevokeResponses];

export type PinListData = {
    body?: never;
    path: {
        room_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}/pins';
};

export type PinListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type PinListResponses = {
    /**
     * List room pins
     */
    200: ApiResponseVecRoomPinResponse;
};

export type PinListResponse = PinListResponses[keyof PinListResponses];

export type ThreadListData = {
    body?: never;
    path: {
        room_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}/threads';
};

export type ThreadListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ThreadListResponses = {
    /**
     * List room threads
     */
    200: ApiResponseVecRoomThreadResponse;
};

export type ThreadListResponse = ThreadListResponses[keyof ThreadListResponses];

export type ThreadCreateData = {
    body: RoomThreadCreateRequest;
    path: {
        room_id: string;
    };
    query?: never;
    url: '/api/rooms/{room_id}/threads';
};

export type ThreadCreateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Forbidden
     */
    403: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ThreadCreateResponses = {
    /**
     * Create room thread
     */
    200: ApiResponseRoomThreadResponse;
};

export type ThreadCreateResponse = ThreadCreateResponses[keyof ThreadCreateResponses];

export type ThreadMessagesData = {
    body?: never;
    path: {
        room_id: string;
        thread_id: string;
    };
    query?: {
        before_seq?: number;
        after_seq?: number;
        limit?: number;
    };
    url: '/api/rooms/{room_id}/threads/{thread_id}/messages';
};

export type ThreadMessagesErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type ThreadMessagesResponses = {
    /**
     * List thread messages
     */
    200: ApiResponseRoomMessageListResponse;
};

export type ThreadMessagesResponse = ThreadMessagesResponses[keyof ThreadMessagesResponses];

export type SearchData = {
    body?: never;
    path?: never;
    query: {
        /**
         * Search keyword
         */
        q: string;
        /**
         * Comma-separated types: projects,repos,issues,users. Default: all
         */
        type?: string;
        /**
         * Page number, default 1
         */
        page?: number;
        /**
         * Results per page, default 20, max 100
         */
        per_page?: number;
    };
    url: '/api/search';
};

export type SearchErrors = {
    /**
     * Bad request
     */
    400: unknown;
    /**
     * Unauthorized
     */
    401: unknown;
};

export type SearchResponses = {
    /**
     * Search results
     */
    200: ApiResponseSearchResponse;
};

export type SearchResponse2 = SearchResponses[keyof SearchResponses];

export type ListAccessKeysData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/users/me/access-keys';
};

export type ListAccessKeysErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type ListAccessKeysResponses = {
    /**
     * List access keys
     */
    200: ApiResponseAccessKeyListResponse;
};

export type ListAccessKeysResponse = ListAccessKeysResponses[keyof ListAccessKeysResponses];

export type CreateAccessKeyData = {
    body: CreateAccessKeyParams;
    path?: never;
    query?: never;
    url: '/api/users/me/access-keys';
};

export type CreateAccessKeyErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type CreateAccessKeyResponses = {
    /**
     * Create access key
     */
    200: ApiResponseAccessKeyResponse;
};

export type CreateAccessKeyResponse = CreateAccessKeyResponses[keyof CreateAccessKeyResponses];

export type DeleteAccessKeyData = {
    body?: never;
    path: {
        access_key_id: number;
    };
    query?: never;
    url: '/api/users/me/access-keys/{access_key_id}';
};

export type DeleteAccessKeyErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type DeleteAccessKeyResponses = {
    /**
     * Delete access key
     */
    200: unknown;
};

export type GetMyContributionHeatmapData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/users/me/heatmap';
};

export type GetMyContributionHeatmapErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type GetMyContributionHeatmapResponses = {
    /**
     * Get my contribution heatmap
     */
    200: ApiResponseContributionHeatmapResponse;
};

export type GetMyContributionHeatmapResponse = GetMyContributionHeatmapResponses[keyof GetMyContributionHeatmapResponses];

export type ListSshKeysData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/users/me/keys';
};

export type ListSshKeysErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type ListSshKeysResponses = {
    /**
     * List SSH keys
     */
    200: ApiResponseSshKeyListResponse;
};

export type ListSshKeysResponse = ListSshKeysResponses[keyof ListSshKeysResponses];

export type AddSshKeyData = {
    body: AddSshKeyParams;
    path?: never;
    query?: never;
    url: '/api/users/me/keys';
};

export type AddSshKeyErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type AddSshKeyResponses = {
    /**
     * Add SSH key
     */
    200: ApiResponseSshKeyResponse;
};

export type AddSshKeyResponse = AddSshKeyResponses[keyof AddSshKeyResponses];

export type DeleteSshKeyData = {
    body?: never;
    path: {
        key_id: number;
    };
    query?: never;
    url: '/api/users/me/keys/{key_id}';
};

export type DeleteSshKeyErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type DeleteSshKeyResponses = {
    /**
     * Delete SSH key
     */
    200: unknown;
};

export type GetSshKeyData = {
    body?: never;
    path: {
        key_id: number;
    };
    query?: never;
    url: '/api/users/me/keys/{key_id}';
};

export type GetSshKeyErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type GetSshKeyResponses = {
    /**
     * Get SSH key
     */
    200: ApiResponseSshKeyResponse;
};

export type GetSshKeyResponse = GetSshKeyResponses[keyof GetSshKeyResponses];

export type UpdateSshKeyData = {
    body: UpdateSshKeyParams;
    path: {
        key_id: number;
    };
    query?: never;
    url: '/api/users/me/keys/{key_id}';
};

export type UpdateSshKeyErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type UpdateSshKeyResponses = {
    /**
     * Update SSH key
     */
    200: ApiResponseSshKeyResponse;
};

export type UpdateSshKeyResponse = UpdateSshKeyResponses[keyof UpdateSshKeyResponses];

export type GetNotificationPreferencesData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/users/me/notifications/preferences';
};

export type GetNotificationPreferencesErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type GetNotificationPreferencesResponses = {
    /**
     * Get notification preferences
     */
    200: ApiResponseNotificationPreferencesResponse;
};

export type GetNotificationPreferencesResponse = GetNotificationPreferencesResponses[keyof GetNotificationPreferencesResponses];

export type UpdateNotificationPreferencesData = {
    body: NotificationPreferencesParams;
    path?: never;
    query?: never;
    url: '/api/users/me/notifications/preferences';
};

export type UpdateNotificationPreferencesErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type UpdateNotificationPreferencesResponses = {
    /**
     * Update notification preferences
     */
    200: ApiResponseNotificationPreferencesResponse;
};

export type UpdateNotificationPreferencesResponse = UpdateNotificationPreferencesResponses[keyof UpdateNotificationPreferencesResponses];

export type GetPreferencesData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/users/me/preferences';
};

export type GetPreferencesErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type GetPreferencesResponses = {
    /**
     * Get user preferences
     */
    200: ApiResponsePreferencesResponse;
};

export type GetPreferencesResponse = GetPreferencesResponses[keyof GetPreferencesResponses];

export type UpdatePreferencesData = {
    body: PreferencesParams;
    path?: never;
    query?: never;
    url: '/api/users/me/preferences';
};

export type UpdatePreferencesErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type UpdatePreferencesResponses = {
    /**
     * Update user preferences
     */
    200: ApiResponsePreferencesResponse;
};

export type UpdatePreferencesResponse = UpdatePreferencesResponses[keyof UpdatePreferencesResponses];

export type GetMyProfileData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/users/me/profile';
};

export type GetMyProfileErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type GetMyProfileResponses = {
    /**
     * Get current user profile
     */
    200: ApiResponseProfileResponse;
};

export type GetMyProfileResponse = GetMyProfileResponses[keyof GetMyProfileResponses];

export type UpdateMyProfileData = {
    body: UpdateProfileParams;
    path?: never;
    query?: never;
    url: '/api/users/me/profile';
};

export type UpdateMyProfileErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type UpdateMyProfileResponses = {
    /**
     * Update current user profile
     */
    200: ApiResponseProfileResponse;
};

export type UpdateMyProfileResponse = UpdateMyProfileResponses[keyof UpdateMyProfileResponses];

export type GetCurrentUserProjectsData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/users/me/projects';
};

export type GetCurrentUserProjectsErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type GetCurrentUserProjectsResponses = {
    /**
     * Get current user projects
     */
    200: ApiResponseUserProjectsResponse;
};

export type GetCurrentUserProjectsResponse = GetCurrentUserProjectsResponses[keyof GetCurrentUserProjectsResponses];

export type GetCurrentUserReposData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/users/me/repos';
};

export type GetCurrentUserReposErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type GetCurrentUserReposResponses = {
    /**
     * Get current user repos
     */
    200: ApiResponseUserReposResponse;
};

export type GetCurrentUserReposResponse = GetCurrentUserReposResponses[keyof GetCurrentUserReposResponses];

export type GetProfileByUsernameData = {
    body?: never;
    path: {
        username: string;
    };
    query?: never;
    url: '/api/users/{username}';
};

export type GetProfileByUsernameErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type GetProfileByUsernameResponses = {
    /**
     * Get user profile
     */
    200: ApiResponseProfileResponse;
};

export type GetProfileByUsernameResponse = GetProfileByUsernameResponses[keyof GetProfileByUsernameResponses];

export type UnsubscribeTargetData = {
    body?: never;
    path: {
        username: string;
    };
    query?: never;
    url: '/api/users/{username}/follow';
};

export type UnsubscribeTargetErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type UnsubscribeTargetResponses = {
    /**
     * Unfollow user
     */
    200: unknown;
};

export type IsSubscribedToTargetData = {
    body?: never;
    path: {
        username: string;
    };
    query?: never;
    url: '/api/users/{username}/follow';
};

export type IsSubscribedToTargetErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type IsSubscribedToTargetResponses = {
    /**
     * Check if following user
     */
    200: unknown;
};

export type SubscribeTargetData = {
    body?: never;
    path: {
        username: string;
    };
    query?: never;
    url: '/api/users/{username}/follow';
};

export type SubscribeTargetErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type SubscribeTargetResponses = {
    /**
     * Follow user
     */
    200: unknown;
};

export type GetSubscribersData = {
    body?: never;
    path: {
        username: string;
    };
    query?: never;
    url: '/api/users/{username}/followers';
};

export type GetSubscribersErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type GetSubscribersResponses = {
    /**
     * List followers
     */
    200: ApiResponseVecSubscriptionInfo;
};

export type GetSubscribersResponse = GetSubscribersResponses[keyof GetSubscribersResponses];

export type GetSubscriberCountData = {
    body?: never;
    path: {
        username: string;
    };
    query?: never;
    url: '/api/users/{username}/followers/count';
};

export type GetSubscriberCountErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type GetSubscriberCountResponses = {
    /**
     * Get follower count
     */
    200: unknown;
};

export type GetSubscriptionCountData = {
    body?: never;
    path: {
        username: string;
    };
    query?: never;
    url: '/api/users/{username}/following/count';
};

export type GetSubscriptionCountErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type GetSubscriptionCountResponses = {
    /**
     * Get following count
     */
    200: unknown;
};

export type GetContributionHeatmapData = {
    body?: never;
    path: {
        username: string;
    };
    query?: never;
    url: '/api/users/{username}/heatmap';
};

export type GetContributionHeatmapErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type GetContributionHeatmapResponses = {
    /**
     * Get contribution heatmap
     */
    200: ApiResponseContributionHeatmapResponse;
};

export type GetContributionHeatmapResponse = GetContributionHeatmapResponses[keyof GetContributionHeatmapResponses];

export type GetUserInfoData = {
    body?: never;
    path: {
        username: string;
    };
    query?: never;
    url: '/api/users/{username}/info';
};

export type GetUserInfoErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type GetUserInfoResponses = {
    /**
     * Get user info
     */
    200: ApiResponseUserInfoExternal;
};

export type GetUserInfoResponse = GetUserInfoResponses[keyof GetUserInfoResponses];

export type GetUserProjectsData = {
    body?: never;
    path: {
        username: string;
    };
    query?: never;
    url: '/api/users/{username}/projects';
};

export type GetUserProjectsErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type GetUserProjectsResponses = {
    /**
     * Get user projects
     */
    200: ApiResponseUserProjectsResponse;
};

export type GetUserProjectsResponse = GetUserProjectsResponses[keyof GetUserProjectsResponses];

export type GetUserReposData = {
    body?: never;
    path: {
        username: string;
    };
    query?: never;
    url: '/api/users/{username}/repos';
};

export type GetUserReposErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not found
     */
    404: unknown;
};

export type GetUserReposResponses = {
    /**
     * Get user repos
     */
    200: ApiResponseUserReposResponse;
};

export type GetUserReposResponse = GetUserReposResponses[keyof GetUserReposResponses];

export type WorkspaceCreateData = {
    body: WorkspaceInitParams;
    path?: never;
    query?: never;
    url: '/api/workspaces';
};

export type WorkspaceCreateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Slug or name already exists
     */
    409: unknown;
};

export type WorkspaceCreateResponses = {
    /**
     * Create workspace
     */
    200: ApiResponseWorkspaceInfoResponse;
};

export type WorkspaceCreateResponse = WorkspaceCreateResponses[keyof WorkspaceCreateResponses];

export type WorkspaceAcceptInvitationData = {
    body: WorkspaceInviteAcceptParams;
    path?: never;
    query?: never;
    url: '/api/workspaces/invitations/accept';
};

export type WorkspaceAcceptInvitationErrors = {
    /**
     * Invalid or expired token
     */
    400: unknown;
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Already accepted
     */
    409: unknown;
};

export type WorkspaceAcceptInvitationResponses = {
    /**
     * Accept invitation
     */
    200: ApiResponseWorkspaceInfoResponse;
};

export type WorkspaceAcceptInvitationResponse = WorkspaceAcceptInvitationResponses[keyof WorkspaceAcceptInvitationResponses];

export type WorkspaceListData = {
    body?: never;
    path?: never;
    query?: never;
    url: '/api/workspaces/me';
};

export type WorkspaceListErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type WorkspaceListResponses = {
    /**
     * List my workspaces
     */
    200: ApiResponseWorkspaceListResponse;
};

export type WorkspaceListResponse2 = WorkspaceListResponses[keyof WorkspaceListResponses];

export type WorkspaceDeleteData = {
    body?: never;
    path: {
        slug: string;
    };
    query?: never;
    url: '/api/workspaces/{slug}';
};

export type WorkspaceDeleteErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Permission denied (owner only)
     */
    403: unknown;
    /**
     * Workspace not found
     */
    404: unknown;
};

export type WorkspaceDeleteResponses = {
    /**
     * Delete workspace
     */
    200: unknown;
};

export type WorkspaceInfoData = {
    body?: never;
    path: {
        slug: string;
    };
    query?: never;
    url: '/api/workspaces/{slug}';
};

export type WorkspaceInfoErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Workspace not found
     */
    404: unknown;
};

export type WorkspaceInfoResponses = {
    /**
     * Get workspace info
     */
    200: ApiResponseWorkspaceInfoResponse;
};

export type WorkspaceInfoResponse2 = WorkspaceInfoResponses[keyof WorkspaceInfoResponses];

export type WorkspaceUpdateData = {
    body: WorkspaceUpdateParams;
    path: {
        slug: string;
    };
    query?: never;
    url: '/api/workspaces/{slug}';
};

export type WorkspaceUpdateErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Permission denied
     */
    403: unknown;
    /**
     * Workspace not found
     */
    404: unknown;
    /**
     * Name already exists
     */
    409: unknown;
};

export type WorkspaceUpdateResponses = {
    /**
     * Update workspace
     */
    200: ApiResponseWorkspaceInfoResponse;
};

export type WorkspaceUpdateResponse = WorkspaceUpdateResponses[keyof WorkspaceUpdateResponses];

export type WorkspaceBillingCurrentData = {
    body?: never;
    path: {
        /**
         * Workspace slug
         */
        slug: string;
    };
    query?: never;
    url: '/api/workspaces/{slug}/billing';
};

export type WorkspaceBillingCurrentErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not a workspace member
     */
    403: unknown;
    /**
     * Workspace not found
     */
    404: unknown;
};

export type WorkspaceBillingCurrentResponses = {
    /**
     * Get workspace billing info
     */
    200: ApiResponseWorkspaceBillingCurrentResponse;
};

export type WorkspaceBillingCurrentResponse2 = WorkspaceBillingCurrentResponses[keyof WorkspaceBillingCurrentResponses];

export type WorkspaceBillingAddCreditData = {
    body: WorkspaceBillingAddCreditParams;
    path: {
        /**
         * Workspace slug
         */
        slug: string;
    };
    query?: never;
    url: '/api/workspaces/{slug}/billing/credits';
};

export type WorkspaceBillingAddCreditErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not a workspace member
     */
    403: unknown;
};

export type WorkspaceBillingAddCreditResponses = {
    /**
     * Add credit to workspace billing
     */
    200: ApiResponseWorkspaceBillingCurrentResponse;
};

export type WorkspaceBillingAddCreditResponse = WorkspaceBillingAddCreditResponses[keyof WorkspaceBillingAddCreditResponses];

export type WorkspaceBillingHistoryData = {
    body?: never;
    path: {
        /**
         * Workspace slug
         */
        slug: string;
    };
    query?: never;
    url: '/api/workspaces/{slug}/billing/history';
};

export type WorkspaceBillingHistoryErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
};

export type WorkspaceBillingHistoryResponses = {
    /**
     * Get workspace billing history
     */
    200: ApiResponseWorkspaceBillingHistoryResponse;
};

export type WorkspaceBillingHistoryResponse2 = WorkspaceBillingHistoryResponses[keyof WorkspaceBillingHistoryResponses];

export type WorkspacePendingInvitationsData = {
    body?: never;
    path: {
        slug: string;
    };
    query?: never;
    url: '/api/workspaces/{slug}/invitations';
};

export type WorkspacePendingInvitationsErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Permission denied
     */
    403: unknown;
    /**
     * Workspace not found
     */
    404: unknown;
};

export type WorkspacePendingInvitationsResponses = {
    /**
     * List pending invitations
     */
    200: ApiResponseVecPendingInvitationInfo;
};

export type WorkspacePendingInvitationsResponse = WorkspacePendingInvitationsResponses[keyof WorkspacePendingInvitationsResponses];

export type WorkspaceInviteMemberData = {
    body: WorkspaceInviteParams;
    path: {
        slug: string;
    };
    query?: never;
    url: '/api/workspaces/{slug}/invitations';
};

export type WorkspaceInviteMemberErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Permission denied
     */
    403: unknown;
    /**
     * User not found
     */
    404: unknown;
    /**
     * Already a member
     */
    409: unknown;
};

export type WorkspaceInviteMemberResponses = {
    /**
     * Send invitation
     */
    200: unknown;
};

export type WorkspaceCancelInvitationData = {
    body?: never;
    path: {
        slug: string;
        user_id: string;
    };
    query?: never;
    url: '/api/workspaces/{slug}/invitations/{user_id}';
};

export type WorkspaceCancelInvitationErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Permission denied
     */
    403: unknown;
    /**
     * Invitation not found
     */
    404: unknown;
};

export type WorkspaceCancelInvitationResponses = {
    /**
     * Cancel invitation
     */
    200: unknown;
};

export type WorkspaceMembersData = {
    body?: never;
    path: {
        slug: string;
    };
    query?: {
        page?: number;
        per_page?: number;
    };
    url: '/api/workspaces/{slug}/members';
};

export type WorkspaceMembersErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not a member
     */
    403: unknown;
    /**
     * Workspace not found
     */
    404: unknown;
};

export type WorkspaceMembersResponses = {
    /**
     * List workspace members
     */
    200: ApiResponseWorkspaceMembersResponse;
};

export type WorkspaceMembersResponse2 = WorkspaceMembersResponses[keyof WorkspaceMembersResponses];

export type WorkspaceUpdateMemberRoleData = {
    body: UpdateRoleParams;
    path: {
        slug: string;
    };
    query?: never;
    url: '/api/workspaces/{slug}/members/role';
};

export type WorkspaceUpdateMemberRoleErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Permission denied
     */
    403: unknown;
    /**
     * Workspace or member not found
     */
    404: unknown;
};

export type WorkspaceUpdateMemberRoleResponses = {
    /**
     * Update member role
     */
    200: unknown;
};

export type WorkspaceRemoveMemberData = {
    body?: never;
    path: {
        slug: string;
        user_id: string;
    };
    query?: never;
    url: '/api/workspaces/{slug}/members/{user_id}';
};

export type WorkspaceRemoveMemberErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Permission denied
     */
    403: unknown;
    /**
     * Member not found
     */
    404: unknown;
};

export type WorkspaceRemoveMemberResponses = {
    /**
     * Remove member
     */
    200: unknown;
};

export type WorkspaceProjectsData = {
    body?: never;
    path: {
        /**
         * Workspace slug
         */
        slug: string;
    };
    query?: never;
    url: '/api/workspaces/{slug}/projects';
};

export type WorkspaceProjectsErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not a workspace member
     */
    403: unknown;
    /**
     * Workspace not found
     */
    404: unknown;
};

export type WorkspaceProjectsResponses = {
    /**
     * List workspace projects
     */
    200: ApiResponseWorkspaceProjectsResponse;
};

export type WorkspaceProjectsResponse2 = WorkspaceProjectsResponses[keyof WorkspaceProjectsResponses];

export type WorkspaceStatsData = {
    body?: never;
    path: {
        /**
         * Workspace slug
         */
        slug: string;
    };
    query?: never;
    url: '/api/workspaces/{slug}/stats';
};

export type WorkspaceStatsErrors = {
    /**
     * Unauthorized
     */
    401: unknown;
    /**
     * Not a workspace member
     */
    403: unknown;
    /**
     * Workspace not found
     */
    404: unknown;
};

export type WorkspaceStatsResponses = {
    /**
     * Get workspace stats
     */
    200: ApiResponseWorkspaceStatsResponse;
};

export type WorkspaceStatsResponse2 = WorkspaceStatsResponses[keyof WorkspaceStatsResponses];
