/** * Generated by orval 🍺 * Do not edit manually. * gitdata api * * ## Conventions * * ### Response envelope * Every JSON response uses the same envelope: * * | field | meaning | * |---|---| * | `code` | always equal to the HTTP status code | * | `message` | human-readable result / error summary | * | `data` | payload, `null` for errors and empty results | * | `error` | field-level / technical detail (e.g. validation errors), may be `null` | * | `error_code` | stable machine-readable code on 4xx (e.g. `conflict`, `rate_limited`), may be `null` | * | `request_id` | correlation id, also returned as the `X-Request-Id` header | * * Successful `POST` creation returns `200` (not `201`); empty results use `200` with `data: null`. * - `POST /auth/logout` is idempotent: repeating it always succeeds with `200`. * * ### Authentication * - `session_cookie`: opaque session carried in the `session` cookie and stored in * Redis. `GET /auth/login` redirects to the same-origin login page; * `POST /auth/logout` revokes the session and clears the cookie. * * ### URL & parameter style * - Paths are `kebab-case`, plural nouns, nesting expresses ownership. * - Query/path/JSON field names are `snake_case`; enum values are `snake_case`. * - All endpoints are versioned under `/api/v1`. `/api/v1/internal/*` is guarded * by the `x-gitdata-service-key` header and is NOT documented here. * - State-transition actions use `POST {resource}/{id}/{verb}` (close/reopen); * idempotent whole-resource state uses `PUT` (default branch, pin, read-state); * partial updates use `PATCH`. * * ### Pagination * - 唯一 offset 风格:`?limit=&offset=`(`limit` 默认 50;`offset` 上限 5000), * 分页响应的 `data` 恒为 `{ items, total, limit, offset }`,字段均为无符号整数。 * - `limit` 为 0、超过端点上限或 `offset` 超过 5000 时返回 400 * (`error_code: bad_request`),不会静默截断。 * - 排序参数为 `?sort=&order=asc|desc`;`sort` 的取值按端点枚举校验, * 未知值返回 400,未知参数同样返回 400。 * - chat 消息额外接受 `before_seq` / `after_seq` 作为筛选条件,响应仍是同一 `Page` 形状。 * - Git LFS 锁定列表的 `next_cursor` 是 LFS 协议字段,不适用本约定。 * * ### PATCH semantics (three-state fields) * Update commands use `Option>` for clearable fields: * - field **absent** → unchanged * - field `null` → cleared * - field value → set * * Example: `{"milestone_id": null}` unassigns the milestone; omitting * `milestone_id` leaves it untouched. * * ### 2FA * TOTP enrollment, recovery codes and sensitive-operation verification are * handled by identity; GitData only proxies the account-management endpoints. * * ### Operations * - `GET /healthz` — liveness probe (no auth, outside `/api/v1`). * - `GET /readyz` — readiness probe: database (primary) + redis live checks, * rocketmq + s3 sampled every 10s, `503` when any is down. * - Runtime metrics are pushed to the configured OTLP collector (30s interval); * there is no scrape endpoint. * - Cross-origin browser access is disabled by default; the API expects a * same-origin reverse proxy. Enable `web.cors_allow_origins` to allowlist * other origins. * * ### Abuse controls * - Creation endpoints are subject to per-user rolling 24h quotas * (`[quota]` config; 0 disables). Exceeding a quota returns `429` * with `error_code: "rate_limited"`. * * ### Idempotency * - `POST /chat/rooms/{room_id}/messages` accepts `nonce`: unique per room; * retrying with the same nonce returns the original message instead of a duplicate. * * ### Resource references * - User references in responses embed a `user` object (`UserDto`) wherever a * single person is shown; raw uuid fields are named `*_id` consistently. * - Viewer-specific state is embedded, not fetched separately: `RepoDto.me` * carries `starred`/`watch_mode`, `IssueDto.viewer_watch` carries the caller * watch mode. `PUT /repos/{space}/{repo}/star|unstar` style reads do not exist. * * ### Identifiers * - Issues are addressable by UUID **or** board-scoped number * (e.g. `/issues/{space}/boards/{board}/issues/123`). * - Binary uploads use raw request bodies with a content-type header * (e.g. `PUT /me/avatar` accepts `image/*` bytes, not base64 JSON). * * OpenAPI spec version: 1.0 */ export interface AcceptAgreementCmd { version: string; } export interface AcceptAgreementResp { recorded: boolean; } export interface AccountDeletionDto { /** @nullable */ last_error?: string | null; purge_after: string; requested_at: string; status: string; } /** * 白名单用途。与 KenShell 的 `purpose` 一一对应。 */ export type WhitelistKind = "Push" | "Merge" | "Approval"; export interface AddBranchWhitelistCmd { /** @nullable */ group_id?: string | null; kind: WhitelistKind; /** @nullable */ user_id?: number | null; } export type SpaceMemberRole = "member" | "admin" | "owner"; export interface AddMemberBody { role?: null | SpaceMemberRole; role_keys?: string[]; user_id: number; } export interface AddTagWhitelistCmd { user_id: number; } export interface AgreementDoc { content_md: string; key: string; title: string; version: string; } /** * 允许加入的历史开关,映射 `spaces.allow_join_level`。 */ export type AllowJoinLevel = | "None" | "NeedMailActive" | "NeedMailActiveAndLastOneMid" | "NeedMailActiveAndLastOneHours" | "NeedMailActiveAndPhoneActive"; export interface AppliedPatchDto { applied: boolean; conflicts: string[]; } export type ArchiveFormatDto = "tar" | "tar_gz" | "tar_bz2" | "zip"; export interface ArchiveCreateCmd { format: ArchiveFormatDto; /** @nullable */ path_filter?: string | null; revision: string; } export interface ArchiveResultDto { cache_key: string; /** @nullable */ download_url?: string | null; format: string; size: number; } export interface AssignCmd { /** 用户名或 UUID。 */ user: string; } export interface AssignGroupCmd { group_id: string; } export interface AssignRoleBody { member_id: string; role_key: string; } export interface AttachLabelCmd { /** 标签 UUID 或名称(同一仓库目录内的标签)。 */ label: string; } export type AttachmentStatus = "Pending" | "Uploaded"; export interface AttachmentDto { content_type: string; created_at: string; /** @nullable */ description?: string | null; /** @nullable */ duration_secs?: number | null; filename: string; /** @nullable */ height?: number | null; id: string; /** @nullable */ message_id?: string | null; /** @nullable */ room_id?: string | null; size: number; status: AttachmentStatus; user_id: number; /** @nullable */ width?: number | null; } export type Audience = "Everyone" | "FollowingOnly" | "Nobody"; export type AuthorType = "User" | "Bot" | "Webhook"; export type AvatarFormat = "jpg" | "png" | "webp" | "gif"; export interface AvatarDto { /** * Size of the uploaded original in bytes. * @minimum 0 */ bytes: number; /** Format of the uploaded original. */ format: AvatarFormat; updated_at: string; /** * Browser-facing URL. Points at the compressed derivative when one exists, * and at the uploaded bytes otherwise. */ url: string; user_id: number; } export interface BanMemberBody { /** @nullable */ reason?: string | null; } export interface BlameRangeDto { abbreviated_oid: string; commit_sha: string; ending_line: number; /** @nullable */ path?: string | null; starting_line: number; } export interface BlobContentDto { /** @items.minimum 0 */ data: number[]; is_binary: boolean; oid: string; size: number; truncated: boolean; } export interface LfsPointerDto { /** @nullable */ oid?: string | null; /** @nullable */ size?: number | null; version: string; } export interface BlobMetaDto { is_binary: boolean; is_lfs_pointer: boolean; lfs?: null | LfsPointerDto; oid: string; size: number; } export interface BoardDto { closed_issues_count: number; created_at: string; /** @nullable */ description?: string | null; dir_id: string; /** @nullable */ icon?: string | null; id: string; name: string; open_issues_count: number; /** * Number prefix for the board's issues (`CAD` renders as `CAD-12`). * @nullable */ prefix?: string | null; /** @nullable */ updated_at?: string | null; } export interface BoardPath { board_id: string; space_name: string; } export interface BookmarkDto { created_at: string; created_by_id: number; /** @nullable */ emoji?: string | null; id: string; position: number; room_id: string; title: string; /** @nullable */ url?: string | null; } export interface BranchDto { commit_sha: string; created_at: string; /** @nullable */ deleted_at?: string | null; is_deleted: boolean; is_protected: boolean; name: string; updated_at: string; } export interface BranchInfoDto { /** @nullable */ commit_message?: string | null; commit_sha: string; is_protected: boolean; name: string; } export interface BranchPolicyDto { block_on_change_requested_reviews: boolean; block_on_outdated_branch: boolean; block_on_rejected_reviews: boolean; branch_pattern: string; created_at: string; dismiss_stale_approvals: boolean; enable_approvals_whitelist: boolean; enable_force_push: boolean; enable_merge_whitelist: boolean; enable_push: boolean; enable_push_whitelist: boolean; id: string; protected_file_patterns: string; push_whitelist_deploy_keys: boolean; repo_id: string; require_signed_commits: boolean; required_approvals: number; required_status_contexts: string; unprotected_file_patterns: string; updated_at: string; } export interface BranchPolicyFlags { /** @nullable */ block_on_change_requested_reviews?: boolean | null; /** @nullable */ block_on_outdated_branch?: boolean | null; /** @nullable */ block_on_rejected_reviews?: boolean | null; /** @nullable */ dismiss_stale_approvals?: boolean | null; /** @nullable */ enable_approvals_whitelist?: boolean | null; /** @nullable */ enable_force_push?: boolean | null; /** @nullable */ enable_merge_whitelist?: boolean | null; /** @nullable */ enable_push?: boolean | null; /** @nullable */ enable_push_whitelist?: boolean | null; /** @nullable */ protected_file_patterns?: string | null; /** @nullable */ require_signed_commits?: boolean | null; /** @nullable */ required_approvals?: number | null; /** @nullable */ required_status_contexts?: string | null; /** @nullable */ unprotected_file_patterns?: string | null; } export interface UserDto { avatar_url: string; display_name: string; user_id: number; username: string; } export interface BranchWhitelistDto { created_at: string; /** @nullable */ group_id?: string | null; id: string; kind: WhitelistKind; policy_id: string; user?: null | UserDto; /** @nullable */ user_id?: number | null; } export type BulkAction = "close" | "reopen"; export interface BulkDeleteCmd { message_ids: string[]; } export interface BulkIssuesCmd { action: BulkAction; issue_refs: string[]; } export interface BulkResultDto { /** @minimum 0 */ updated: number; } export interface CallerSignatureBody { /** @nullable */ when?: string | null; } export interface ChallengeResponse { context: string; /** @minimum 0 */ difficulty: number; /** @minimum 0 */ expires_at: number; /** @minimum 0 */ issued_at: number; } export interface ChangePasswordCmd { new_password: string; old_password: string; } export interface ChangedPathDto { /** @minimum 0 */ new_mode: number; /** @nullable */ new_oid?: string | null; new_path: string; /** @minimum 0 */ old_mode: number; /** @nullable */ old_oid?: string | null; /** @nullable */ old_path?: string | null; status: string; } export interface ChangedPathDiffDto { binary: boolean; /** @minimum 0 */ lines_added: number; /** @minimum 0 */ lines_removed: number; /** @nullable */ patch?: string | null; path: ChangedPathDto; } export type ChatMessageType = | "Default" | "Reply" | "ThreadCreated" | "ChannelJoin" | "ChannelLeave" | "ChannelTopic" | "ChannelPinnedItem" | "Reminder" | "System"; export interface CheckPermissionBody { permission: string; /** @nullable */ user_id?: number | null; } export interface CleanupObjectDto { /** 目录的子节点数 / 频道的子频道数。 */ child_count: number; /** `dirs.id`(目录/仓库/问题集/智能体集)或 `rooms.id`(频道)。 */ id: string; is_archived: boolean; /** * 仅仓库与频道有可见性开关。 * @nullable */ is_private?: boolean | null; /** `dir | object | repo | board | text | voice | stage | category | news | guild_room` */ kind: string; name: string; /** 目录上的权限覆盖条数(group + user)。 */ overwrite_count: number; /** 父链拼出的可读路径,例如 `bots / 研究研究`。 */ path: string; } export interface CodeActivityAuthorDto { additions: number; commits: number; deletions: number; email: string; name: string; } export interface CodeActivityDto { authors: CodeActivityAuthorDto[]; total_additions: number; total_commits: number; total_deletions: number; } export interface CodeCommentDto { author?: null | UserDto; body: string; commit_sha: string; created_at: string; id: string; line: number; /** 该评论锚定的提交是否仍是当前分支提示(否则视为 outdated)。 */ outdated: boolean; /** @nullable */ parent_id?: string | null; path: string; repo_id: string; resolved: boolean; /** @nullable */ resolved_by?: number | null; /** @nullable */ updated_at?: string | null; } export interface CommentDto { content: string; created_at: string; id: string; /** @nullable */ issue_id?: string | null; /** @nullable */ parent_id?: string | null; poster?: null | UserDto; /** @nullable */ updated_at?: string | null; } export interface CommentPath { board_id: string; comment_id: string; issue_id: string; space_name: string; } export interface CommentReactionPath { board_id: string; comment_id: string; issue_id: string; space_name: string; } export type CommentSort = "created_at" | "updated_at"; export interface CommentTreeNode { comment: CommentDto; replies: CommentTreeNode[]; } export interface CommitDto { author_email: string; author_name: string; author_time: number; committer_email: string; committer_name: string; committer_time: number; id: string; message: string; parents: string[]; tree_id: string; } export interface SignatureDto { email: string; name: string; when: string; } export type ObjectKind = "merge" | "squash"; export interface CommitObjectBody { author: SignatureDto; committer: SignatureDto; kind: ObjectKind; message: string; parents: string[]; tree: string; } export type CommitStatusDtoState = "pending" | "success" | "failure" | "error"; export interface CommitStatusDto { context: string; created_at: string; creator?: null | UserDto; creator_id: number; /** @nullable */ description?: string | null; state: CommitStatusDtoState; /** @nullable */ target_url?: string | null; /** @nullable */ updated_at?: string | null; } export interface CommitSyncResponse { repo_id: string; sha: string; } /** * 提交历史页:统一分页字段 + 该端点特有的 `has_more` / `diff_view_style`。 */ export interface CommitsPage { diff_view_style: string; has_more: boolean; items: CommitDto[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export interface ConflictDetailDto { /** @nullable */ content?: string | null; path: string; } export interface ContentHistoryDto { /** @nullable */ comment_id?: string | null; /** @nullable */ content_after?: string | null; /** @nullable */ content_before?: string | null; created_at: string; edited_at: string; id: string; issue_id: string; poster?: null | UserDto; } export interface ContentHistoryPath { board_id: string; issue_id: string; space_name: string; } export interface ContributorStatDto { additions: number; commits: number; deletions: number; email: string; name: string; } export interface CountResp { count: number; } export interface CreateAttachmentCmd { content_type: string; /** @nullable */ description?: string | null; filename: string; size: number; } export interface CreateBoardCmd { /** @nullable */ description?: string | null; /** @nullable */ icon?: string | null; name: string; /** @nullable */ parent_dir_id?: string | null; /** @nullable */ prefix?: string | null; } export interface CreateBookmarkCmd { /** @nullable */ emoji?: string | null; title: string; /** @nullable */ url?: string | null; } export interface CreateBranchCmd { name: string; /** @nullable */ start_point?: string | null; } /** * 分支保护策略的创建请求。 * * 字段与 [`BranchPolicyFlags`] 一一对应,但刻意不使用 `#[serde(flatten)]`: * 扁平化会让 utoipa 生成 `allOf` 组合,而 web 端 API 生成器无法处理该形状。 */ export interface CreateBranchPolicyCmd { /** @nullable */ block_on_change_requested_reviews?: boolean | null; /** @nullable */ block_on_outdated_branch?: boolean | null; /** @nullable */ block_on_rejected_reviews?: boolean | null; branch_pattern: string; /** @nullable */ dismiss_stale_approvals?: boolean | null; /** @nullable */ enable_approvals_whitelist?: boolean | null; /** @nullable */ enable_force_push?: boolean | null; /** @nullable */ enable_merge_whitelist?: boolean | null; /** @nullable */ enable_push?: boolean | null; /** @nullable */ enable_push_whitelist?: boolean | null; /** @nullable */ protected_file_patterns?: string | null; /** @nullable */ require_signed_commits?: boolean | null; /** @nullable */ required_approvals?: number | null; /** @nullable */ required_status_contexts?: string | null; /** @nullable */ unprotected_file_patterns?: string | null; } export interface CreateCodeCommentCmd { body: string; /** * 锚定的提交;缺省使用该 revision 解析出的提交。 * @nullable */ commit_sha?: string | null; line: number; /** @nullable */ parent_id?: string | null; path: string; /** @nullable */ revision?: string | null; } export interface CreateCommentCmd { content: string; /** @nullable */ parent_id?: string | null; } export interface CreateDependencyCmd { dependency_id: string; } export interface CreateDirCmd { name: string; /** @nullable */ parent_dir_id?: string | null; /** @nullable */ position?: number | null; } export interface CreateGroupCmd { /** @nullable */ color?: string | null; /** @nullable */ icon_hash?: string | null; name: string; permissions?: string[]; /** @nullable */ position?: number | null; /** @nullable */ unicode_emoji?: string | null; } export interface CreateInviteBody { max_uses?: number; /** @nullable */ role_id?: string | null; /** @nullable */ target_user_id?: number | null; /** * @minimum 0 * @nullable */ ttl_secs?: number | null; } export type SpaceJoinMethod = "direct" | "invite_link" | "invite_targeted" | "invite_email"; export interface InviteSummary { created_at: string; created_by: number; /** @nullable */ email?: string | null; /** @nullable */ expires_at?: string | null; id: string; max_uses: number; method: SpaceJoinMethod; organization_id: string; /** @nullable */ revoked_at?: string | null; /** @nullable */ role_id?: string | null; /** @nullable */ target_user_id?: number | null; uses: number; } export interface CreateInviteResponse { invite: InviteSummary; token: string; } export interface CreateIssueAttachmentCmd { content_type: string; filename: string; size: number; /** Checked for membership so unbound uploads are still space-scoped. */ space_name: string; } export type IssuePriority = "none" | "low" | "medium" | "high" | "urgent"; export interface CreateIssueCmd { assignee_ids?: number[]; /** Draft uploads (`POST /issues/attachments`) to link to the new issue. */ attachment_ids?: string[]; content?: string; /** @nullable */ description?: string | null; /** @nullable */ due_at?: string | null; label_ids?: string[]; /** @nullable */ milestone_id?: string | null; priority?: IssuePriority; title: string; } export type IssueMemberKind = "assignee" | "mentioned" | "participant"; export interface CreateIssueMemberCmd { kind: IssueMemberKind; user_id: number; } export interface CreateJoinRequestCmd { /** @nullable */ note?: string | null; } export type SpaceJoinTrigger = "issue_reaction" | "issue_comment_reaction"; export interface CreateJoinRuleCmd { matcher?: string; role_id: string; trigger?: SpaceJoinTrigger; } export interface CreateLabelCmd { color: string; /** @nullable */ description?: string | null; /** @nullable */ exclusive?: boolean | null; /** @nullable */ exclusive_order?: number | null; name: string; } export interface CreateMilestoneCmd { /** @nullable */ description?: string | null; /** @nullable */ due_at?: string | null; name: string; } export type SpaceJoinPolicy = "open" | "approval" | "invite_only" | "private"; export interface CreateOrganizationBody { /** @nullable */ allow_invite?: boolean | null; /** @nullable */ allow_join?: boolean | null; /** @nullable */ allow_join_level?: number | null; /** @nullable */ avatar_url?: string | null; /** @nullable */ description?: string | null; join_policy?: null | SpaceJoinPolicy; /** @nullable */ member_must_enable_2fa?: boolean | null; name: string; /** @nullable */ require_email_verified?: boolean | null; /** @nullable */ require_mfa?: boolean | null; slug: string; /** @nullable */ welcome_message?: string | null; } export interface CreateOutboundWebhookCmd { name: string; url: string; } export interface CreatePinCmd { issue_id: string; pin_order: number; } export interface CreatePullCmd { /** @nullable */ base_branch?: string | null; /** @nullable */ body?: string | null; /** @nullable */ draft?: boolean | null; head_branch: string; /** @nullable */ issue_id?: string | null; title: string; } export interface CreatePullCommentCmd { body: string; /** @nullable */ commit_sha?: string | null; /** @nullable */ line?: number | null; /** @nullable */ parent_comment_id?: string | null; /** * 行内评论需要 path;缺省则为普通讨论评论。 * @nullable */ path?: string | null; /** @nullable */ review_id?: string | null; /** * left | right * @nullable */ side?: string | null; } export interface CreateReactionCmd { emoji: string; } export interface CreateReleaseCmd { /** @nullable */ content?: string | null; /** @nullable */ is_draft?: boolean | null; /** @nullable */ is_prerelease?: boolean | null; tag_name: string; /** @nullable */ target?: string | null; /** @nullable */ title?: string | null; } export interface CreateReminderCmd { /** @nullable */ note?: string | null; remind_at: string; } export interface CreateRepoCmd { /** @nullable */ default_branch?: string | null; /** @nullable */ description?: string | null; enable_lfs?: boolean; /** @nullable */ init_message?: string | null; is_private?: boolean; /** @nullable */ license_name?: string | null; name: string; /** @nullable */ parent_dir_id?: string | null; } export interface CreateRepoRelCmd { repo_id: string; } export interface CreateReportCmd { /** @nullable */ evidence?: string | null; reason: string; reported_id: number; } export type PermissionEffect = "allow" | "deny"; export interface PermissionGrant { effect: PermissionEffect; permission: string; } export interface CreateRoleBody { default_role?: boolean; /** @nullable */ description?: string | null; key: string; name: string; permissions?: PermissionGrant[]; rank?: number; self_assignable?: boolean; } export type RoomKind = | "GuildRoom" | "GroupDm" | "Dm" | "Category" | "Text" | "Voice" | "Stage" | "News" | "Thread" | "DirectMessage"; export interface CreateRoomCmd { is_private?: boolean; kind?: RoomKind; name: string; nsfw?: boolean; /** @nullable */ parent_id?: string | null; /** @nullable */ rate_limit_per_user?: number | null; /** @nullable */ topic?: string | null; /** @nullable */ user_limit?: number | null; } export interface CreateTagCmd { annotated?: boolean; /** @nullable */ message?: string | null; name: string; target: string; } export interface CreateTagPolicyCmd { name_pattern: string; } export interface CreateThreadCmd { /** @nullable */ name?: string | null; } export interface CreateTopicCmd { name: string; } export interface CreateTrackedTimeCmd { seconds: number; } export interface CreateWebhookCmd { name: string; } export interface DeleteOrgQuery { force?: boolean; /** @nullable */ reason?: string | null; } export interface DependencyDto { created_at: string; dependency_id: string; id: string; issue_id: string; } export interface DependencyPath { board_id: string; dep_id: string; issue_id: string; space_name: string; } export interface DeviceDto { /** @nullable */ device_name?: string | null; /** @nullable */ device_type?: string | null; first_seen_at: string; id: string; is_trusted: boolean; last_seen_at: string; /** @nullable */ os?: string | null; } export interface DiffTreeRecordDto { /** @nullable */ base_blob_id?: string | null; /** * @minimum 0 * @nullable */ base_mode?: number | null; /** @nullable */ base_path?: string | null; /** @nullable */ head_blob_id?: string | null; /** * @minimum 0 * @nullable */ head_mode?: number | null; /** @nullable */ head_path?: string | null; /** @minimum 0 */ score: number; status: string; } export type DiffView = "shortstat" | "numstat" | "files" | "tree"; export type DirKind = "Dir" | "Object" | "IssueBoard" | "GitRepo" | "ChatChannel" | "VoiceChannel"; export interface DirNodeDto { /** @nullable */ archived_at?: string | null; children: DirNodeDto[]; /** @nullable */ color?: string | null; created_at: string; created_by_id: number; /** @nullable */ icon?: string | null; id: string; is_archived: boolean; kind: DirKind; name: string; /** @nullable */ parent_dir_id?: string | null; position: number; /** @nullable */ purpose?: string | null; /** @nullable */ topic?: string | null; updated_at: string; } export interface DmDto { created_at: string; id: string; kind: RoomKind; /** @nullable */ last_message_id?: string | null; last_read_seq: number; members?: UserDto[]; name: string; peer?: null | UserDto; tip_seq: number; unread_count: number; } export interface DraftDto { content: string; room_id: string; /** @nullable */ thread_id?: string | null; updated_at: string; } export interface DraftQuery { /** @nullable */ thread_id?: string | null; } export interface EmbedAuthor { /** @nullable */ icon_url?: string | null; name?: string; /** @nullable */ proxy_icon_url?: string | null; /** @nullable */ url?: string | null; } export interface EmbedField { inline?: boolean; name?: string; value?: string; } export interface EmbedFooter { /** @nullable */ icon_url?: string | null; /** @nullable */ proxy_icon_url?: string | null; text?: string; } export interface EmbedMedia { /** @nullable */ content_hash?: string | null; /** @nullable */ content_type?: string | null; /** @nullable */ description?: string | null; /** * @minimum 0 * @nullable */ duration?: number | null; /** @minimum 0 */ flags?: number; /** * @minimum 0 * @nullable */ height?: number | null; /** @nullable */ placeholder?: string | null; /** @nullable */ proxy_url?: string | null; /** @nullable */ url?: string | null; /** * @minimum 0 * @nullable */ width?: number | null; } export interface EmbedProvider { name?: string; /** @nullable */ url?: string | null; } export interface EmojiDto { animated: boolean; created_at: string; disabled: boolean; id: string; name: string; space_id: string; } export type EnvelopeAcceptAgreementRespData = { recorded: boolean; }; export interface EnvelopeAcceptAgreementResp { code: number; data?: EnvelopeAcceptAgreementRespData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeAccountDeletionDtoData = { /** @nullable */ last_error?: string | null; purge_after: string; requested_at: string; status: string; }; export interface EnvelopeAccountDeletionDto { code: number; data?: EnvelopeAccountDeletionDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeArchiveResultDtoData = { cache_key: string; /** @nullable */ download_url?: string | null; format: string; size: number; }; export interface EnvelopeArchiveResultDto { code: number; data?: EnvelopeArchiveResultDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeAttachmentDtoData = { content_type: string; created_at: string; /** @nullable */ description?: string | null; /** @nullable */ duration_secs?: number | null; filename: string; /** @nullable */ height?: number | null; id: string; /** @nullable */ message_id?: string | null; /** @nullable */ room_id?: string | null; size: number; status: AttachmentStatus; user_id: number; /** @nullable */ width?: number | null; }; export interface EnvelopeAttachmentDto { code: number; data?: EnvelopeAttachmentDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeAvatarDtoData = { /** * Size of the uploaded original in bytes. * @minimum 0 */ bytes: number; /** Format of the uploaded original. */ format: AvatarFormat; updated_at: string; /** * Browser-facing URL. Points at the compressed derivative when one exists, * and at the uploaded bytes otherwise. */ url: string; user_id: number; }; export interface EnvelopeAvatarDto { code: number; data?: EnvelopeAvatarDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeBlobContentDtoData = { /** @items.minimum 0 */ data: number[]; is_binary: boolean; oid: string; size: number; truncated: boolean; }; export interface EnvelopeBlobContentDto { code: number; data?: EnvelopeBlobContentDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeBlobMetaDtoData = { is_binary: boolean; is_lfs_pointer: boolean; lfs?: null | LfsPointerDto; oid: string; size: number; }; export interface EnvelopeBlobMetaDto { code: number; data?: EnvelopeBlobMetaDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeBoardDtoData = { closed_issues_count: number; created_at: string; /** @nullable */ description?: string | null; dir_id: string; /** @nullable */ icon?: string | null; id: string; name: string; open_issues_count: number; /** * Number prefix for the board's issues (`CAD` renders as `CAD-12`). * @nullable */ prefix?: string | null; /** @nullable */ updated_at?: string | null; }; export interface EnvelopeBoardDto { code: number; data?: EnvelopeBoardDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeBookmarkDtoData = { created_at: string; created_by_id: number; /** @nullable */ emoji?: string | null; id: string; position: number; room_id: string; title: string; /** @nullable */ url?: string | null; }; export interface EnvelopeBookmarkDto { code: number; data?: EnvelopeBookmarkDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeBranchDtoData = { commit_sha: string; created_at: string; /** @nullable */ deleted_at?: string | null; is_deleted: boolean; is_protected: boolean; name: string; updated_at: string; }; export interface EnvelopeBranchDto { code: number; data?: EnvelopeBranchDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeBranchPolicyDtoData = { block_on_change_requested_reviews: boolean; block_on_outdated_branch: boolean; block_on_rejected_reviews: boolean; branch_pattern: string; created_at: string; dismiss_stale_approvals: boolean; enable_approvals_whitelist: boolean; enable_force_push: boolean; enable_merge_whitelist: boolean; enable_push: boolean; enable_push_whitelist: boolean; id: string; protected_file_patterns: string; push_whitelist_deploy_keys: boolean; repo_id: string; require_signed_commits: boolean; required_approvals: number; required_status_contexts: string; unprotected_file_patterns: string; updated_at: string; }; export interface EnvelopeBranchPolicyDto { code: number; data?: EnvelopeBranchPolicyDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeBranchWhitelistDtoData = { created_at: string; /** @nullable */ group_id?: string | null; id: string; kind: WhitelistKind; policy_id: string; user?: null | UserDto; /** @nullable */ user_id?: number | null; }; export interface EnvelopeBranchWhitelistDto { code: number; data?: EnvelopeBranchWhitelistDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeBulkResultDtoData = { /** @minimum 0 */ updated: number; }; export interface EnvelopeBulkResultDto { code: number; data?: EnvelopeBulkResultDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeChallengeResponseData = { context: string; /** @minimum 0 */ difficulty: number; /** @minimum 0 */ expires_at: number; /** @minimum 0 */ issued_at: number; }; export interface EnvelopeChallengeResponse { code: number; data?: EnvelopeChallengeResponseData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeCodeActivityDtoData = { authors: CodeActivityAuthorDto[]; total_additions: number; total_commits: number; total_deletions: number; }; export interface EnvelopeCodeActivityDto { code: number; data?: EnvelopeCodeActivityDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeCodeCommentDtoData = { author?: null | UserDto; body: string; commit_sha: string; created_at: string; id: string; line: number; /** 该评论锚定的提交是否仍是当前分支提示(否则视为 outdated)。 */ outdated: boolean; /** @nullable */ parent_id?: string | null; path: string; repo_id: string; resolved: boolean; /** @nullable */ resolved_by?: number | null; /** @nullable */ updated_at?: string | null; }; export interface EnvelopeCodeCommentDto { code: number; data?: EnvelopeCodeCommentDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeCommentDtoData = { content: string; created_at: string; id: string; /** @nullable */ issue_id?: string | null; /** @nullable */ parent_id?: string | null; poster?: null | UserDto; /** @nullable */ updated_at?: string | null; }; export interface EnvelopeCommentDto { code: number; data?: EnvelopeCommentDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeCommitStatusDtoData = { context: string; created_at: string; creator?: null | UserDto; creator_id: number; /** @nullable */ description?: string | null; state: CommitStatusDtoState; /** @nullable */ target_url?: string | null; /** @nullable */ updated_at?: string | null; }; export interface EnvelopeCommitStatusDto { code: number; data?: EnvelopeCommitStatusDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } /** * 提交历史页:统一分页字段 + 该端点特有的 `has_more` / `diff_view_style`。 */ export type EnvelopeCommitsPageData = { diff_view_style: string; has_more: boolean; items: CommitDto[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopeCommitsPage { code: number; /** 提交历史页:统一分页字段 + 该端点特有的 `has_more` / `diff_view_style`。 */ data?: EnvelopeCommitsPageData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeConflictDetailDtoData = { /** @nullable */ content?: string | null; path: string; }; export interface EnvelopeConflictDetailDto { code: number; data?: EnvelopeConflictDetailDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeCountRespData = { count: number; }; export interface EnvelopeCountResp { code: number; data?: EnvelopeCountRespData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeCreateInviteResponseData = { invite: InviteSummary; token: string; }; export interface EnvelopeCreateInviteResponse { code: number; data?: EnvelopeCreateInviteResponseData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeDependencyDtoData = { created_at: string; dependency_id: string; id: string; issue_id: string; }; export interface EnvelopeDependencyDto { code: number; data?: EnvelopeDependencyDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeDirNodeDtoData = { /** @nullable */ archived_at?: string | null; children: DirNodeDto[]; /** @nullable */ color?: string | null; created_at: string; created_by_id: number; /** @nullable */ icon?: string | null; id: string; is_archived: boolean; kind: DirKind; name: string; /** @nullable */ parent_dir_id?: string | null; position: number; /** @nullable */ purpose?: string | null; /** @nullable */ topic?: string | null; updated_at: string; }; export interface EnvelopeDirNodeDto { code: number; data?: EnvelopeDirNodeDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeDmDtoData = { created_at: string; id: string; kind: RoomKind; /** @nullable */ last_message_id?: string | null; last_read_seq: number; members?: UserDto[]; name: string; peer?: null | UserDto; tip_seq: number; unread_count: number; }; export interface EnvelopeDmDto { code: number; data?: EnvelopeDmDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeDraftDtoData = { content: string; room_id: string; /** @nullable */ thread_id?: string | null; updated_at: string; }; export interface EnvelopeDraftDto { code: number; data?: EnvelopeDraftDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeEmojiDtoData = { animated: boolean; created_at: string; disabled: boolean; id: string; name: string; space_id: string; }; export interface EnvelopeEmojiDto { code: number; data?: EnvelopeEmojiDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeFetchResultDtoData = { new: string[]; updated: string[]; }; export interface EnvelopeFetchResultDto { code: number; data?: EnvelopeFetchResultDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeGroupDtoData = { color: string; created_at: string; created_by?: null | UserDto; /** @nullable */ icon_hash?: string | null; id: string; name: string; permissions: string[]; position: number; space_id: string; /** @nullable */ unicode_emoji?: string | null; /** @nullable */ updated_at?: string | null; version: number; }; export interface EnvelopeGroupDto { code: number; data?: EnvelopeGroupDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeGroupOverwriteDtoData = { allow_mask: number; deny_mask: number; dir_id: string; group_id: string; }; export interface EnvelopeGroupOverwriteDto { code: number; data?: EnvelopeGroupOverwriteDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } /** * 举手状态。审批通过后 approved,被收回后 revoked(可再次举手)。 */ export type HandState = "pending" | "approved" | "denied" | "revoked"; export type EnvelopeHandDtoData = { /** @nullable */ avatar_url?: string | null; display_name: string; requested_at: number; state: HandState; user_id: number; }; export interface EnvelopeHandDto { code: number; data?: EnvelopeHandDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeImportResultDtoData = { commit_count: number; default_branch: string; }; export interface EnvelopeImportResultDto { code: number; data?: EnvelopeImportResultDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeIsAncestorResponseData = { is_ancestor: boolean; }; export interface EnvelopeIsAncestorResponse { code: number; data?: EnvelopeIsAncestorResponseData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } /** * Upload lifecycle: a row is created before the bytes exist (`Pending`) and * only an `Uploaded` row may be referenced by an issue. */ export type IssueAttachmentStatus = "pending" | "uploaded"; export type EnvelopeIssueAttachmentDtoData = { content_type: string; created_at: string; filename: string; id: string; /** * `None` until the draft is submitted with this attachment attached. * @nullable */ issue_id?: string | null; size: number; status: IssueAttachmentStatus; uploader_id: number; }; export interface EnvelopeIssueAttachmentDto { code: number; data?: EnvelopeIssueAttachmentDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type IssueState = "open" | "closed"; export type WatchMode = "unwatched" | "watching" | "ignore"; export type EnvelopeIssueDtoData = { assignees: UserDto[]; author?: null | UserDto; board_id: string; /** @nullable */ closed_at?: string | null; content: string; created_at: string; /** @nullable */ description?: string | null; /** @nullable */ due_at?: string | null; id: string; /** @nullable */ milestone_id?: string | null; number: number; priority: IssuePriority; state: IssueState; title: string; /** @nullable */ updated_at?: string | null; viewer_watch?: null | WatchMode; }; export interface EnvelopeIssueDto { code: number; data?: EnvelopeIssueDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeIssueMemberDtoData = { created_at: string; id: string; issue_id: string; kind: IssueMemberKind; /** @nullable */ updated_at?: string | null; user?: null | UserDto; }; export interface EnvelopeIssueMemberDto { code: number; data?: EnvelopeIssueMemberDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeIssueUploadIntentDtoData = { /** @minimum 0 */ expires_secs: number; id: string; upload_url: string; }; export interface EnvelopeIssueUploadIntentDto { code: number; data?: EnvelopeIssueUploadIntentDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeIssueUserDtoData = { created_at: string; id: string; is_read: boolean; issue_id: string; user?: null | UserDto; user_id: number; }; export interface EnvelopeIssueUserDto { code: number; data?: EnvelopeIssueUserDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type SpaceJoinRequestState = "pending" | "approved" | "rejected" | "withdrawn"; export type EnvelopeJoinRequestDtoData = { created_at: string; /** @nullable */ decided_at?: string | null; decided_by?: null | UserDto; id: string; /** @nullable */ note?: string | null; space_id: string; status: SpaceJoinRequestState; updated_at: string; user?: null | UserDto; }; export interface EnvelopeJoinRequestDto { code: number; data?: EnvelopeJoinRequestDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeJoinRuleDtoData = { created_at: string; enabled: boolean; id: string; matcher: string; role_id: string; trigger: SpaceJoinTrigger; updated_at: string; }; export interface EnvelopeJoinRuleDto { code: number; data?: EnvelopeJoinRuleDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeLabelDtoData = { color: string; created_at: string; /** @nullable */ description?: string | null; dir_id: string; exclusive: boolean; exclusive_order: number; id: string; is_archived: boolean; name: string; /** @nullable */ updated_at?: string | null; }; export interface EnvelopeLabelDto { code: number; data?: EnvelopeLabelDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface LfsLockOwner { name: string; } export type EnvelopeLfsLockData = { id: string; locked_at: string; owner: LfsLockOwner; path: string; }; export interface EnvelopeLfsLock { code: number; data?: EnvelopeLfsLockData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface LfsLock { id: string; locked_at: string; owner: LfsLockOwner; path: string; } export type EnvelopeLfsLockListResponseData = { locks?: LfsLock[]; /** @nullable */ next_cursor?: string | null; }; export interface EnvelopeLfsLockListResponse { code: number; data?: EnvelopeLfsLockListResponseData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeLfsVerifyLocksResponseData = { /** @nullable */ next_cursor?: string | null; ours?: LfsLock[]; theirs?: LfsLock[]; }; export interface EnvelopeLfsVerifyLocksResponse { code: number; data?: EnvelopeLfsVerifyLocksResponseData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeLicenseDtoData = { body: string; created_at: string; /** @nullable */ description?: string | null; display_name: string; name: string; updated_at: string; /** @nullable */ url?: string | null; }; export interface EnvelopeLicenseDto { code: number; data?: EnvelopeLicenseDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeLoginCodeResponseData = { /** @minimum 0 */ expires_in_secs: number; }; export interface EnvelopeLoginCodeResponse { code: number; data?: EnvelopeLoginCodeResponseData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeLogoutResponseData = { /** @nullable */ user_id?: number | null; }; export interface EnvelopeLogoutResponse { code: number; data?: EnvelopeLogoutResponseData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeMarkedCountRespData = { /** @minimum 0 */ marked: number; }; export interface EnvelopeMarkedCountResp { code: number; data?: EnvelopeMarkedCountRespData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface ProfileDto { /** @nullable */ bio?: string | null; /** @nullable */ company?: string | null; /** @nullable */ date_of_birth?: string | null; /** @nullable */ location?: string | null; /** @nullable */ privacy_agreed_at?: string | null; /** @nullable */ pronouns?: string | null; /** @nullable */ real_name?: string | null; show_activity: boolean; show_email: boolean; show_location: boolean; show_real_name: boolean; /** @nullable */ website?: string | null; } export type ProfileVisibility = "Public" | "RegisteredOnly" | "MembersOnly" | "Private"; export interface UserMeDto { avatar_url: string; bot: boolean; created_at: string; display_name: string; is_active: boolean; is_restricted: boolean; /** @nullable */ language?: string | null; /** @nullable */ locale?: string | null; prohibit_login: boolean; system: boolean; /** @nullable */ timezone?: string | null; user_id: number; username: string; visibility: ProfileVisibility; } export type EnvelopeMeRespData = { profile?: null | ProfileDto; user: UserMeDto; }; export interface EnvelopeMeResp { code: number; data?: EnvelopeMeRespData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeMeResponseData = { /** @nullable */ avatar_url?: string | null; created_at: string; /** @nullable */ displayname?: string | null; email: string; /** @nullable */ email_verified_at?: string | null; is_admin: boolean; user_id: number; username: string; version: number; }; export interface EnvelopeMeResponse { code: number; data?: EnvelopeMeResponseData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } /** * 会籍的通知偏好,对应旧 `space_members.message_notifications`。 * 旧表用 0/1/2 存,这里用字符串存,便于跨服务读写时直接透传。 */ export type MessageNotifications = "all" | "mentions" | "nothing"; /** * 会籍状态,由 `joined_at` / `left_at` / `banned_at` 推导,供 API 层展示。 */ export type MemberStatus = "Active" | "Inactive" | "Left" | "Removed" | "Banned"; export type EnvelopeMemberDtoData = { /** @nullable */ alias_avatar_url?: string | null; /** @nullable */ alias_name?: string | null; created_at: string; hide_muted_channels: boolean; /** @nullable */ invited_at?: string | null; invited_by?: null | UserDto; joined_at: string; /** @nullable */ last_active_at?: string | null; /** @nullable */ left_at?: string | null; message_notifications: MessageNotifications; mobile_push: boolean; /** @nullable */ mute_until?: string | null; muted: boolean; space_id: string; status: MemberStatus; suppress_everyone: boolean; suppress_roles: boolean; /** @nullable */ updated_at?: string | null; user?: null | UserDto; }; export interface EnvelopeMemberDto { code: number; data?: EnvelopeMemberDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeMemberSummaryData = { /** @nullable */ alias_avatar_url?: string | null; /** @nullable */ alias_name?: string | null; ban_allow_agent_join: boolean; ban_allow_comment_any: boolean; ban_allow_push_repo: boolean; ban_allow_speak: boolean; /** @nullable */ ban_expires_at?: string | null; /** @nullable */ ban_reason?: string | null; /** @nullable */ banned_at?: string | null; /** @nullable */ displayname?: string | null; hide_muted_channels: boolean; id: string; /** @nullable */ invited_by?: number | null; join_method: SpaceJoinMethod; joined_at: string; /** @nullable */ last_active_at?: string | null; /** @nullable */ left_at?: string | null; message_notifications: MessageNotifications; mobile_push: boolean; /** @nullable */ mute_until?: string | null; muted: boolean; organization_id: string; permissions: string[]; role: SpaceMemberRole; role_keys: string[]; suppress_everyone: boolean; suppress_roles: boolean; user_id: number; username: string; version: number; }; export interface EnvelopeMemberSummary { code: number; data?: EnvelopeMemberSummaryData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeMemeDtoData = { content_type: string; created_at: string; /** @nullable */ height?: number | null; id: string; name: string; size: number; url: string; /** @nullable */ width?: number | null; }; export interface EnvelopeMemeDto { code: number; data?: EnvelopeMemeDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface PullRefDto { branch: string; label: string; /** @nullable */ repo_id?: string | null; sha: string; } export type MergeMethod = "merge" | "squash" | "rebase"; export type PullState = "open" | "closed" | "merged"; export interface PullDto { additions: number; author?: null | UserDto; auto_merge: boolean; base: PullRefDto; body: string; /** @nullable */ closed_at?: string | null; /** @nullable */ commits_ahead?: number | null; /** @nullable */ commits_behind?: number | null; /** @nullable */ conflicts?: string[] | null; created_at: string; deletions: number; files_changed: number; head: PullRefDto; id: string; is_draft: boolean; /** @nullable */ issue_id?: string | null; locked: boolean; merge_method: MergeMethod; /** @nullable */ mergeable?: boolean | null; /** @nullable */ mergeable_state?: string | null; /** @nullable */ merged_at?: string | null; /** @nullable */ merged_commit_sha?: string | null; merger?: null | UserDto; number: number; repo_id: string; /** @nullable */ squash_commit_sha?: string | null; state: PullState; title: string; /** @nullable */ updated_at?: string | null; } export interface MergeResultDto { base_ref: string; head_sha: string; /** `fast_forward` | `merge_commit` | `squash` | `rebase` */ method: string; new_sha: string; old_sha: string; /** rebase 时重写出来的提交(按时间正序)。 */ rewritten: string[]; } export interface PullSummaryDto { additions: number; base_sha: string; commits_ahead: number; commits_behind: number; conflicts: string[]; deletions: number; files_changed: number; head_sha: string; /** @nullable */ merge_base?: string | null; mergeable: boolean; mergeable_state: string; } export type EnvelopeMergePullDtoData = { pull: PullDto; result: MergeResultDto; summary: PullSummaryDto; }; export interface EnvelopeMergePullDto { code: number; data?: EnvelopeMergePullDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeMergeStatusDtoData = { conflicts: string[]; fast_forwardable: boolean; mergeable: boolean; }; export interface EnvelopeMergeStatusDto { code: number; data?: EnvelopeMergeStatusDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } /** * Discord 风格的消息 embed。 * * `platform` / `kind` / `src` / `image_url` 等字段是旧消息与旧缓存的兼容外壳: * 历史 `chat_message.embeds` 里存的还是老结构,反序列化时不能丢字段;新写入 * 同时填富模型和这些兼容字段,前端可以逐步迁移。 */ export interface MessageEmbed { /** @nullable */ aspect?: string | null; audio?: null | EmbedMedia; author?: null | EmbedAuthor; /** @nullable */ category?: string | null; /** @nullable */ children?: MessageEmbed[] | null; /** * @minimum 0 * @nullable */ color?: number | null; /** @nullable */ description?: string | null; /** @nullable */ fields?: EmbedField[] | null; footer?: null | EmbedFooter; /** * @minimum 0 * @nullable */ height?: number | null; /** @nullable */ html?: string | null; /** * @minimum 0 * @nullable */ html_height?: number | null; /** * @minimum 0 * @nullable */ html_width?: number | null; image?: null | EmbedMedia; /** @nullable */ image_url?: string | null; /** @nullable */ kind?: string | null; /** @nullable */ nsfw?: boolean | null; /** @nullable */ platform?: string | null; /** @nullable */ platform_name?: string | null; provider?: null | EmbedProvider; /** @nullable */ site_name?: string | null; /** @nullable */ src?: string | null; thumbnail?: null | EmbedMedia; /** @nullable */ timestamp?: string | null; /** @nullable */ title?: string | null; type?: string; /** @nullable */ url?: string | null; video?: null | EmbedMedia; } export interface ReactionAggDto { count: number; emoji: string; me: boolean; } export type EnvelopeMessageDtoData = { attachments: AttachmentDto[]; author?: null | UserDto; author_id: number; author_type: AuthorType; content: string; created_at: string; /** @nullable */ deleted_at?: string | null; /** @nullable */ edited_at?: string | null; embeds?: MessageEmbed[]; /** @nullable */ forwarded_from_id?: string | null; has_thread: boolean; id: string; mention_everyone: boolean; mentions: number[]; message_type: ChatMessageType; pinned: boolean; /** @nullable */ pinned_at?: string | null; /** @nullable */ pinned_by_id?: number | null; reactions?: ReactionAggDto[]; /** @nullable */ reply_to_id?: string | null; room_id: string; seq: number; thread_broadcast: boolean; /** @nullable */ thread_id?: string | null; /** @nullable */ webhook_id?: string | null; }; export interface EnvelopeMessageDto { code: number; data?: EnvelopeMessageDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface MessageDto { attachments: AttachmentDto[]; author?: null | UserDto; author_id: number; author_type: AuthorType; content: string; created_at: string; /** @nullable */ deleted_at?: string | null; /** @nullable */ edited_at?: string | null; embeds?: MessageEmbed[]; /** @nullable */ forwarded_from_id?: string | null; has_thread: boolean; id: string; mention_everyone: boolean; mentions: number[]; message_type: ChatMessageType; pinned: boolean; /** @nullable */ pinned_at?: string | null; /** @nullable */ pinned_by_id?: number | null; reactions?: ReactionAggDto[]; /** @nullable */ reply_to_id?: string | null; room_id: string; seq: number; thread_broadcast: boolean; /** @nullable */ thread_id?: string | null; /** @nullable */ webhook_id?: string | null; } /** * 消息页:在统一分页字段之上补回游标翻页所需的派生字段。 * * `has_more`/`oldest_seq`/`newest_seq` 由本页内容推导,客户端无需自己算; * `items` 恒按 `seq` 升序,因此 `oldest_seq` 取首条、`newest_seq` 取末条。 */ export type EnvelopeMessagePageData = { has_more: boolean; items: MessageDto[]; /** @minimum 0 */ limit: number; /** @nullable */ newest_seq?: number | null; /** @minimum 0 */ offset: number; /** @nullable */ oldest_seq?: number | null; /** @minimum 0 */ total: number; }; export interface EnvelopeMessagePage { code: number; /** * 消息页:在统一分页字段之上补回游标翻页所需的派生字段。 * * `has_more`/`oldest_seq`/`newest_seq` 由本页内容推导,客户端无需自己算; * `items` 恒按 `seq` 升序,因此 `oldest_seq` 取首条、`newest_seq` 取末条。 */ data?: EnvelopeMessagePageData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeMilestoneDtoData = { board_id: string; closed_issues_count: number; created_at: string; /** @nullable */ description?: string | null; /** @nullable */ due_at?: string | null; id: string; is_closed: boolean; issues_count: number; name: string; /** @nullable */ updated_at?: string | null; }; export interface EnvelopeMilestoneDto { code: number; data?: EnvelopeMilestoneDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface EnvelopeNoData { code: number; data?: unknown; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeOptionAvatarDtoData = { /** * Size of the uploaded original in bytes. * @minimum 0 */ bytes: number; /** Format of the uploaded original. */ format: AvatarFormat; updated_at: string; /** * Browser-facing URL. Points at the compressed derivative when one exists, * and at the uploaded bytes otherwise. */ url: string; user_id: number; } | null; export interface EnvelopeOptionAvatarDto { code: number; data?: EnvelopeOptionAvatarDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeOptionDraftDtoData = { content: string; room_id: string; /** @nullable */ thread_id?: string | null; updated_at: string; } | null; export interface EnvelopeOptionDraftDto { code: number; data?: EnvelopeOptionDraftDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type SpaceImageKind = "avatar" | "banner" | "invite_banner" | "embed_splash"; export type EnvelopeOptionSpaceImageDtoData = { /** @minimum 0 */ bytes: number; format: AvatarFormat; /** @nullable */ height?: number | null; kind: SpaceImageKind; space_id: string; updated_at: string; url: string; /** @nullable */ width?: number | null; } | null; export interface EnvelopeOptionSpaceImageDto { code: number; data?: EnvelopeOptionSpaceImageDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeOptionStopwatchDtoData = { /** @nullable */ created_at?: string | null; /** @nullable */ id?: string | null; issue_id: string; running: boolean; /** @nullable */ started_at?: string | null; user?: null | UserDto; } | null; export interface EnvelopeOptionStopwatchDto { code: number; data?: EnvelopeOptionStopwatchDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type SpaceStatus = "active" | "suspended" | "archived"; export type EnvelopeOrganizationSummaryData = { allow_invite: boolean; allow_join: boolean; allow_join_level: number; /** @nullable */ archived_at?: string | null; /** @nullable */ avatar_url?: string | null; created_at: string; /** @nullable */ description?: string | null; id: string; join_policy: SpaceJoinPolicy; member_count: number; member_must_enable_2fa: boolean; my_role?: null | SpaceMemberRole; name: string; owner_user_id: number; require_email_verified: boolean; require_mfa: boolean; slug: string; status: SpaceStatus; updated_at: string; version: number; /** @nullable */ welcome_message?: string | null; }; export interface EnvelopeOrganizationSummary { code: number; data?: EnvelopeOrganizationSummaryData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeOutboundWebhookDtoData = { created_at: string; disabled: boolean; id: string; /** @nullable */ last_status?: string | null; /** @nullable */ last_used_at?: string | null; name: string; room_id: string; url: string; }; export interface EnvelopeOutboundWebhookDto { code: number; data?: EnvelopeOutboundWebhookDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeOutboundWebhookSecretDtoData = { created_at: string; id: string; name: string; room_id: string; secret: string; url: string; }; export interface EnvelopeOutboundWebhookSecretDto { code: number; data?: EnvelopeOutboundWebhookSecretDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageBoardDtoDataItemsItem = { closed_issues_count: number; created_at: string; /** @nullable */ description?: string | null; dir_id: string; /** @nullable */ icon?: string | null; id: string; name: string; open_issues_count: number; /** * Number prefix for the board's issues (`CAD` renders as `CAD-12`). * @nullable */ prefix?: string | null; /** @nullable */ updated_at?: string | null; }; export type EnvelopePageBoardDtoData = { items: EnvelopePageBoardDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageBoardDto { code: number; data?: EnvelopePageBoardDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageBookmarkDtoDataItemsItem = { created_at: string; created_by_id: number; /** @nullable */ emoji?: string | null; id: string; position: number; room_id: string; title: string; /** @nullable */ url?: string | null; }; export type EnvelopePageBookmarkDtoData = { items: EnvelopePageBookmarkDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageBookmarkDto { code: number; data?: EnvelopePageBookmarkDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageBranchDtoDataItemsItem = { commit_sha: string; created_at: string; /** @nullable */ deleted_at?: string | null; is_deleted: boolean; is_protected: boolean; name: string; updated_at: string; }; export type EnvelopePageBranchDtoData = { items: EnvelopePageBranchDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageBranchDto { code: number; data?: EnvelopePageBranchDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageCodeCommentDtoDataItemsItem = { author?: null | UserDto; body: string; commit_sha: string; created_at: string; id: string; line: number; /** 该评论锚定的提交是否仍是当前分支提示(否则视为 outdated)。 */ outdated: boolean; /** @nullable */ parent_id?: string | null; path: string; repo_id: string; resolved: boolean; /** @nullable */ resolved_by?: number | null; /** @nullable */ updated_at?: string | null; }; export type EnvelopePageCodeCommentDtoData = { items: EnvelopePageCodeCommentDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageCodeCommentDto { code: number; data?: EnvelopePageCodeCommentDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageCommentDtoDataItemsItem = { content: string; created_at: string; id: string; /** @nullable */ issue_id?: string | null; /** @nullable */ parent_id?: string | null; poster?: null | UserDto; /** @nullable */ updated_at?: string | null; }; export type EnvelopePageCommentDtoData = { items: EnvelopePageCommentDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageCommentDto { code: number; data?: EnvelopePageCommentDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageContentHistoryDtoDataItemsItem = { /** @nullable */ comment_id?: string | null; /** @nullable */ content_after?: string | null; /** @nullable */ content_before?: string | null; created_at: string; edited_at: string; id: string; issue_id: string; poster?: null | UserDto; }; export type EnvelopePageContentHistoryDtoData = { items: EnvelopePageContentHistoryDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageContentHistoryDto { code: number; data?: EnvelopePageContentHistoryDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageDeviceDtoDataItemsItem = { /** @nullable */ device_name?: string | null; /** @nullable */ device_type?: string | null; first_seen_at: string; id: string; is_trusted: boolean; last_seen_at: string; /** @nullable */ os?: string | null; }; export type EnvelopePageDeviceDtoData = { items: EnvelopePageDeviceDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageDeviceDto { code: number; data?: EnvelopePageDeviceDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageDmDtoDataItemsItem = { created_at: string; id: string; kind: RoomKind; /** @nullable */ last_message_id?: string | null; last_read_seq: number; members?: UserDto[]; name: string; peer?: null | UserDto; tip_seq: number; unread_count: number; }; export type EnvelopePageDmDtoData = { items: EnvelopePageDmDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageDmDto { code: number; data?: EnvelopePageDmDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageDraftDtoDataItemsItem = { content: string; room_id: string; /** @nullable */ thread_id?: string | null; updated_at: string; }; export type EnvelopePageDraftDtoData = { items: EnvelopePageDraftDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageDraftDto { code: number; data?: EnvelopePageDraftDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageEmojiDtoDataItemsItem = { animated: boolean; created_at: string; disabled: boolean; id: string; name: string; space_id: string; }; export type EnvelopePageEmojiDtoData = { items: EnvelopePageEmojiDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageEmojiDto { code: number; data?: EnvelopePageEmojiDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type IssueEventType = | "created" | "title_updated" | "description_updated" | "content_updated" | "milestone_updated" | "priority_updated" | "due_updated" | "closed" | "reopened" | "comment_created" | "comment_updated" | "comment_deleted" | "member_added" | "member_removed" | "label_added" | "label_removed" | "dependency_added" | "dependency_removed" | "pinned" | "unpinned" | "repo_relation_added" | "repo_relation_removed" | "pull_linked" | "pull_unlinked"; export type EnvelopePageEventDtoDataItemsItem = { /** @nullable */ comment_id?: string | null; /** @nullable */ commit_sha?: string | null; /** @nullable */ content?: string | null; created_at: string; event_type: IssueEventType; id: string; /** @nullable */ issue_id?: string | null; /** @nullable */ new_ref?: string | null; /** @nullable */ new_title?: string | null; /** @nullable */ old_ref?: string | null; /** @nullable */ old_title?: string | null; user?: null | UserDto; }; export type EnvelopePageEventDtoData = { items: EnvelopePageEventDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageEventDto { code: number; data?: EnvelopePageEventDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface ExploreViewerRequestDto { /** @nullable */ cooldown_until?: string | null; created_at: string; /** @nullable */ decided_at?: string | null; id: string; status: SpaceJoinRequestState; } export interface ExploreViewerDto { is_member: boolean; request?: null | ExploreViewerRequestDto; } export type EnvelopePageExploreSpaceDtoDataItemsItem = { allow_join: boolean; allow_join_level: AllowJoinLevel; /** @nullable */ avatar_url?: string | null; /** @nullable */ banner_url?: string | null; created_at: string; /** @nullable */ description?: string | null; id: string; lower_name: string; members_count: number; name: string; viewer?: null | ExploreViewerDto; }; export type EnvelopePageExploreSpaceDtoData = { items: EnvelopePageExploreSpaceDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageExploreSpaceDto { code: number; data?: EnvelopePageExploreSpaceDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageGroupDtoDataItemsItem = { color: string; created_at: string; created_by?: null | UserDto; /** @nullable */ icon_hash?: string | null; id: string; name: string; permissions: string[]; position: number; space_id: string; /** @nullable */ unicode_emoji?: string | null; /** @nullable */ updated_at?: string | null; version: number; }; export type EnvelopePageGroupDtoData = { items: EnvelopePageGroupDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageGroupDto { code: number; data?: EnvelopePageGroupDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageInviteSummaryDataItemsItem = { created_at: string; created_by: number; /** @nullable */ email?: string | null; /** @nullable */ expires_at?: string | null; id: string; max_uses: number; method: SpaceJoinMethod; organization_id: string; /** @nullable */ revoked_at?: string | null; /** @nullable */ role_id?: string | null; /** @nullable */ target_user_id?: number | null; uses: number; }; export type EnvelopePageInviteSummaryData = { items: EnvelopePageInviteSummaryDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageInviteSummary { code: number; data?: EnvelopePageInviteSummaryData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface LabelDto { color: string; created_at: string; /** @nullable */ description?: string | null; dir_id: string; exclusive: boolean; exclusive_order: number; id: string; is_archived: boolean; name: string; /** @nullable */ updated_at?: string | null; } export type EnvelopePageIssueListItemDtoDataItemsItem = { assignees: UserDto[]; author?: null | UserDto; board_id: string; /** @nullable */ closed_at?: string | null; created_at: string; /** @nullable */ due_at?: string | null; id: string; /** Chips the list rows render; the detail view fetches these separately. */ labels: LabelDto[]; /** @nullable */ milestone_id?: string | null; number: number; priority: IssuePriority; state: IssueState; title: string; /** @nullable */ updated_at?: string | null; }; export type EnvelopePageIssueListItemDtoData = { items: EnvelopePageIssueListItemDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageIssueListItemDto { code: number; data?: EnvelopePageIssueListItemDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageIssueMemberDtoDataItemsItem = { created_at: string; id: string; issue_id: string; kind: IssueMemberKind; /** @nullable */ updated_at?: string | null; user?: null | UserDto; }; export type EnvelopePageIssueMemberDtoData = { items: EnvelopePageIssueMemberDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageIssueMemberDto { code: number; data?: EnvelopePageIssueMemberDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageIssueUserDtoDataItemsItem = { created_at: string; id: string; is_read: boolean; issue_id: string; user?: null | UserDto; user_id: number; }; export type EnvelopePageIssueUserDtoData = { items: EnvelopePageIssueUserDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageIssueUserDto { code: number; data?: EnvelopePageIssueUserDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageJoinRequestDtoDataItemsItem = { created_at: string; /** @nullable */ decided_at?: string | null; decided_by?: null | UserDto; id: string; /** @nullable */ note?: string | null; space_id: string; status: SpaceJoinRequestState; updated_at: string; user?: null | UserDto; }; export type EnvelopePageJoinRequestDtoData = { items: EnvelopePageJoinRequestDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageJoinRequestDto { code: number; data?: EnvelopePageJoinRequestDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageLabelDtoDataItemsItem = { color: string; created_at: string; /** @nullable */ description?: string | null; dir_id: string; exclusive: boolean; exclusive_order: number; id: string; is_archived: boolean; name: string; /** @nullable */ updated_at?: string | null; }; export type EnvelopePageLabelDtoData = { items: EnvelopePageLabelDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageLabelDto { code: number; data?: EnvelopePageLabelDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageLicenseDtoDataItemsItem = { body: string; created_at: string; /** @nullable */ description?: string | null; display_name: string; name: string; updated_at: string; /** @nullable */ url?: string | null; }; export type EnvelopePageLicenseDtoData = { items: EnvelopePageLicenseDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageLicenseDto { code: number; data?: EnvelopePageLicenseDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageMemberSummaryDataItemsItem = { /** @nullable */ alias_avatar_url?: string | null; /** @nullable */ alias_name?: string | null; ban_allow_agent_join: boolean; ban_allow_comment_any: boolean; ban_allow_push_repo: boolean; ban_allow_speak: boolean; /** @nullable */ ban_expires_at?: string | null; /** @nullable */ ban_reason?: string | null; /** @nullable */ banned_at?: string | null; /** @nullable */ displayname?: string | null; hide_muted_channels: boolean; id: string; /** @nullable */ invited_by?: number | null; join_method: SpaceJoinMethod; joined_at: string; /** @nullable */ last_active_at?: string | null; /** @nullable */ left_at?: string | null; message_notifications: MessageNotifications; mobile_push: boolean; /** @nullable */ mute_until?: string | null; muted: boolean; organization_id: string; permissions: string[]; role: SpaceMemberRole; role_keys: string[]; suppress_everyone: boolean; suppress_roles: boolean; user_id: number; username: string; version: number; }; export type EnvelopePageMemberSummaryData = { items: EnvelopePageMemberSummaryDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageMemberSummary { code: number; data?: EnvelopePageMemberSummaryData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageMessageDtoDataItemsItem = { attachments: AttachmentDto[]; author?: null | UserDto; author_id: number; author_type: AuthorType; content: string; created_at: string; /** @nullable */ deleted_at?: string | null; /** @nullable */ edited_at?: string | null; embeds?: MessageEmbed[]; /** @nullable */ forwarded_from_id?: string | null; has_thread: boolean; id: string; mention_everyone: boolean; mentions: number[]; message_type: ChatMessageType; pinned: boolean; /** @nullable */ pinned_at?: string | null; /** @nullable */ pinned_by_id?: number | null; reactions?: ReactionAggDto[]; /** @nullable */ reply_to_id?: string | null; room_id: string; seq: number; thread_broadcast: boolean; /** @nullable */ thread_id?: string | null; /** @nullable */ webhook_id?: string | null; }; export type EnvelopePageMessageDtoData = { items: EnvelopePageMessageDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageMessageDto { code: number; data?: EnvelopePageMessageDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageMilestoneDtoDataItemsItem = { board_id: string; closed_issues_count: number; created_at: string; /** @nullable */ description?: string | null; /** @nullable */ due_at?: string | null; id: string; is_closed: boolean; issues_count: number; name: string; /** @nullable */ updated_at?: string | null; }; export type EnvelopePageMilestoneDtoData = { items: EnvelopePageMilestoneDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageMilestoneDto { code: number; data?: EnvelopePageMilestoneDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface SpaceDto { allow_invite: boolean; allow_join: boolean; allow_join_level: AllowJoinLevel; /** @nullable */ avatar_url?: string | null; created_at: string; /** @nullable */ description?: string | null; id: string; is_active: boolean; is_private: boolean; lower_name: string; member_must_enable_2fa: boolean; members_count: number; name: string; owner?: null | UserDto; updated_at: string; /** @nullable */ welcome_message?: string | null; /** @nullable */ welcome_object?: string | null; } export type EnvelopePageMySpaceDtoDataItemsItem = { permissions: string[]; space: SpaceDto; }; export type EnvelopePageMySpaceDtoData = { items: EnvelopePageMySpaceDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageMySpaceDto { code: number; data?: EnvelopePageMySpaceDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface Value {} export type NotificationType = "mention" | "reply" | "follow" | "invite" | "assignment" | "system"; export type EnvelopePageNotificationDtoDataItemsItem = { /** @nullable */ actor_id?: number | null; /** @nullable */ body?: string | null; created_at: string; data?: null | Value; id: string; notification_type: NotificationType; /** @nullable */ read_at?: string | null; title: string; }; export type EnvelopePageNotificationDtoData = { items: EnvelopePageNotificationDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageNotificationDto { code: number; data?: EnvelopePageNotificationDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageOrganizationSummaryDataItemsItem = { allow_invite: boolean; allow_join: boolean; allow_join_level: number; /** @nullable */ archived_at?: string | null; /** @nullable */ avatar_url?: string | null; created_at: string; /** @nullable */ description?: string | null; id: string; join_policy: SpaceJoinPolicy; member_count: number; member_must_enable_2fa: boolean; my_role?: null | SpaceMemberRole; name: string; owner_user_id: number; require_email_verified: boolean; require_mfa: boolean; slug: string; status: SpaceStatus; updated_at: string; version: number; /** @nullable */ welcome_message?: string | null; }; export type EnvelopePageOrganizationSummaryData = { items: EnvelopePageOrganizationSummaryDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageOrganizationSummary { code: number; data?: EnvelopePageOrganizationSummaryData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePagePullCommentDtoDataItemsItem = { author?: null | UserDto; body: string; /** @nullable */ commit_sha?: string | null; created_at: string; id: string; /** @nullable */ line?: number | null; /** @nullable */ parent_comment_id?: string | null; /** @nullable */ path?: string | null; pull_request_id: string; resolved: boolean; /** @nullable */ resolved_by?: number | null; /** @nullable */ review_id?: string | null; /** @nullable */ side?: string | null; /** @nullable */ updated_at?: string | null; }; export type EnvelopePagePullCommentDtoData = { items: EnvelopePagePullCommentDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePagePullCommentDto { code: number; data?: EnvelopePagePullCommentDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePagePullDtoDataItemsItem = { additions: number; author?: null | UserDto; auto_merge: boolean; base: PullRefDto; body: string; /** @nullable */ closed_at?: string | null; /** @nullable */ commits_ahead?: number | null; /** @nullable */ commits_behind?: number | null; /** @nullable */ conflicts?: string[] | null; created_at: string; deletions: number; files_changed: number; head: PullRefDto; id: string; is_draft: boolean; /** @nullable */ issue_id?: string | null; locked: boolean; merge_method: MergeMethod; /** @nullable */ mergeable?: boolean | null; /** @nullable */ mergeable_state?: string | null; /** @nullable */ merged_at?: string | null; /** @nullable */ merged_commit_sha?: string | null; merger?: null | UserDto; number: number; repo_id: string; /** @nullable */ squash_commit_sha?: string | null; state: PullState; title: string; /** @nullable */ updated_at?: string | null; }; export type EnvelopePagePullDtoData = { items: EnvelopePagePullDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePagePullDto { code: number; data?: EnvelopePagePullDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePagePullEventDtoDataItemsItem = { actor?: null | UserDto; /** @nullable */ commit_sha?: string | null; /** @nullable */ content?: string | null; created_at: string; event_type: string; id: string; pull_request_id: string; }; export type EnvelopePagePullEventDtoData = { items: EnvelopePagePullEventDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePagePullEventDto { code: number; data?: EnvelopePagePullEventDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type PushSubscriptionPlatform = "WebPush" | "AndroidFcm" | "IosApns"; export type EnvelopePagePushSubscriptionDtoDataItemsItem = { created_at: string; endpoint: string; id: string; platform: PushSubscriptionPlatform; /** @nullable */ updated_at?: string | null; /** @nullable */ user_agent?: string | null; }; export type EnvelopePagePushSubscriptionDtoData = { items: EnvelopePagePushSubscriptionDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePagePushSubscriptionDto { code: number; data?: EnvelopePagePushSubscriptionDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageReleaseDtoDataItemsItem = { /** @nullable */ content?: string | null; created_at: string; id: string; is_draft: boolean; is_prerelease: boolean; num_commits: number; publisher?: null | UserDto; publisher_name: string; repo_id: string; sha: string; tag_name: string; target: string; title: string; updated_at: string; }; export type EnvelopePageReleaseDtoData = { items: EnvelopePageReleaseDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageReleaseDto { code: number; data?: EnvelopePageReleaseDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageRepoSummaryDtoDataItemsItem = { /** @nullable */ avatar_url?: string | null; default_branch: string; /** @nullable */ description?: string | null; id: string; is_archived: boolean; is_private: boolean; /** @nullable */ license_name?: string | null; name: string; /** @nullable */ primary_language?: string | null; size: number; stars_count: number; updated_at: string; watchers_count: number; }; export type EnvelopePageRepoSummaryDtoData = { items: EnvelopePageRepoSummaryDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageRepoSummaryDto { code: number; data?: EnvelopePageRepoSummaryDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageSavedMessageDtoDataItemsItem = { channel_id: string; id: string; message_id: string; saved_at: string; }; export type EnvelopePageSavedMessageDtoData = { items: EnvelopePageSavedMessageDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageSavedMessageDto { code: number; data?: EnvelopePageSavedMessageDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type SessionKind = "WebLogin" | "BearerAccess"; export type EnvelopePageSessionDtoDataItemsItem = { /** @nullable */ client_ip_hash?: string | null; created_at: string; /** @nullable */ device_id?: string | null; expires_at: string; id: string; is_current: boolean; is_revoked: boolean; kind: SessionKind; last_seen_at: string; /** @nullable */ revoked_at?: string | null; /** @nullable */ user_agent_hash?: string | null; }; export type EnvelopePageSessionDtoData = { items: EnvelopePageSessionDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageSessionDto { code: number; data?: EnvelopePageSessionDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type SshKeyAlgorithm = "rsa" | "ed25519" | "ecdsa"; export type EnvelopePageSshKeySummaryDataItemsItem = { algorithm: SshKeyAlgorithm; created_at: string; /** @nullable */ description?: string | null; /** @nullable */ expires_at?: string | null; fingerprint: string; id: string; /** @nullable */ last_used_at?: string | null; name: string; public_key: string; /** @nullable */ revoked_at?: string | null; }; export type EnvelopePageSshKeySummaryData = { items: EnvelopePageSshKeySummaryDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageSshKeySummary { code: number; data?: EnvelopePageSshKeySummaryData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageStargazerDtoDataItemsItem = { avatar_url: string; display_name: string; starred_at: string; user_id: number; username: string; }; export type EnvelopePageStargazerDtoData = { items: EnvelopePageStargazerDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageStargazerDto { code: number; data?: EnvelopePageStargazerDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type TagType = "Lightweight" | "Annotated"; export type EnvelopePageTagDtoDataItemsItem = { /** @nullable */ created_at?: string | null; /** @nullable */ message?: string | null; name: string; tag_type: TagType; /** @nullable */ tagger_email?: string | null; /** @nullable */ tagger_name?: string | null; target_sha: string; }; export type EnvelopePageTagDtoData = { items: EnvelopePageTagDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageTagDto { code: number; data?: EnvelopePageTagDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageThreadDtoDataItemsItem = { archived: boolean; created_at: string; id: string; /** @nullable */ last_reply_at?: string | null; /** @nullable */ last_reply_id?: string | null; locked: boolean; /** @nullable */ name?: string | null; owner?: null | UserDto; owner_id: number; participant_count: number; reply_count: number; room_id: string; root_message_id: string; updated_at: string; }; export type EnvelopePageThreadDtoData = { items: EnvelopePageThreadDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageThreadDto { code: number; data?: EnvelopePageThreadDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageTopicDtoDataItemsItem = { created_at: string; id: string; name: string; updated_at: string; }; export type EnvelopePageTopicDtoData = { items: EnvelopePageTopicDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageTopicDto { code: number; data?: EnvelopePageTopicDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageTopicRepoDtoDataItemsItem = { is_private: boolean; repo_id: string; repo_name: string; space_name: string; }; export type EnvelopePageTopicRepoDtoData = { items: EnvelopePageTopicRepoDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageTopicRepoDto { code: number; data?: EnvelopePageTopicRepoDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageTrackedTimeDtoDataItemsItem = { created_at: string; id: string; issue_id: string; seconds: number; user?: null | UserDto; }; export type EnvelopePageTrackedTimeDtoData = { items: EnvelopePageTrackedTimeDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageTrackedTimeDto { code: number; data?: EnvelopePageTrackedTimeDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type ReportStatus = "open" | "under_review" | "resolved" | "dismissed"; export type EnvelopePageUserReportDtoDataItemsItem = { created_at: string; /** @nullable */ evidence?: string | null; id: string; reason: string; reported_id: number; /** @nullable */ resolution_note?: string | null; status: ReportStatus; updated_at: string; }; export type EnvelopePageUserReportDtoData = { items: EnvelopePageUserReportDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageUserReportDto { code: number; data?: EnvelopePageUserReportDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageWatcherDtoDataItemsItem = { avatar_url: string; display_name: string; mode: WatchMode; user_id: number; username: string; watching_since: string; }; export type EnvelopePageWatcherDtoData = { items: EnvelopePageWatcherDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageWatcherDto { code: number; data?: EnvelopePageWatcherDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePageWebhookDtoDataItemsItem = { created_at: string; disabled: boolean; id: string; /** @nullable */ last_used_at?: string | null; name: string; room_id: string; }; export type EnvelopePageWebhookDtoData = { items: EnvelopePageWebhookDtoDataItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; }; export interface EnvelopePageWebhookDto { code: number; data?: EnvelopePageWebhookDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeParsedPatchDtoData = { additions: number; deletions: number; files: string[]; }; export interface EnvelopeParsedPatchDto { code: number; data?: EnvelopeParsedPatchDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePasswordResetConfirmResponseData = { user_id: number; }; export interface EnvelopePasswordResetConfirmResponse { code: number; data?: EnvelopePasswordResetConfirmResponseData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePasswordResetResponseData = { /** @minimum 0 */ expires_in_secs: number; }; export interface EnvelopePasswordResetResponse { code: number; data?: EnvelopePasswordResetResponseData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePatchDtoData = { content: string; size: number; }; export interface EnvelopePatchDto { code: number; data?: EnvelopePatchDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePermissionCheckData = { allowed: boolean; matched_by: string; organization_version: number; reason: string; }; export interface EnvelopePermissionCheck { code: number; data?: EnvelopePermissionCheckData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePinDtoData = { board_id: string; created_at: string; id: string; /** @nullable */ issue_id?: string | null; pin_order: number; }; export interface EnvelopePinDto { code: number; data?: EnvelopePinDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type PresenceStatus = "Active" | "Away" | "Dnd" | "Offline"; export type EnvelopePresenceDtoData = { activities: unknown; /** @nullable */ last_seen_at?: string | null; online: boolean; status: PresenceStatus; user?: null | UserDto; user_id: number; }; export interface EnvelopePresenceDto { code: number; data?: EnvelopePresenceDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeProfileDetailDtoData = { /** @nullable */ accent_color?: string | null; avatar_url: string; /** @nullable */ banner_url?: string | null; /** @nullable */ bio?: string | null; /** @nullable */ company?: string | null; display_name: string; /** @nullable */ location?: string | null; /** @nullable */ pronouns?: string | null; /** @nullable */ real_name?: string | null; /** @nullable */ show_activity?: boolean | null; /** @nullable */ show_email?: boolean | null; /** @nullable */ show_location?: boolean | null; /** @nullable */ show_real_name?: boolean | null; updated_at: string; user_id: number; username: string; visibility?: null | ProfileVisibility; /** @nullable */ website?: string | null; }; export interface EnvelopeProfileDetailDto { code: number; data?: EnvelopeProfileDetailDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePullChecksDtoData = { head_sha: string; statuses: CommitStatusDto[]; }; export interface EnvelopePullChecksDto { code: number; data?: EnvelopePullChecksDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePullCommentDtoData = { author?: null | UserDto; body: string; /** @nullable */ commit_sha?: string | null; created_at: string; id: string; /** @nullable */ line?: number | null; /** @nullable */ parent_comment_id?: string | null; /** @nullable */ path?: string | null; pull_request_id: string; resolved: boolean; /** @nullable */ resolved_by?: number | null; /** @nullable */ review_id?: string | null; /** @nullable */ side?: string | null; /** @nullable */ updated_at?: string | null; }; export interface EnvelopePullCommentDto { code: number; data?: EnvelopePullCommentDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePullDtoData = { additions: number; author?: null | UserDto; auto_merge: boolean; base: PullRefDto; body: string; /** @nullable */ closed_at?: string | null; /** @nullable */ commits_ahead?: number | null; /** @nullable */ commits_behind?: number | null; /** @nullable */ conflicts?: string[] | null; created_at: string; deletions: number; files_changed: number; head: PullRefDto; id: string; is_draft: boolean; /** @nullable */ issue_id?: string | null; locked: boolean; merge_method: MergeMethod; /** @nullable */ mergeable?: boolean | null; /** @nullable */ mergeable_state?: string | null; /** @nullable */ merged_at?: string | null; /** @nullable */ merged_commit_sha?: string | null; merger?: null | UserDto; number: number; repo_id: string; /** @nullable */ squash_commit_sha?: string | null; state: PullState; title: string; /** @nullable */ updated_at?: string | null; }; export interface EnvelopePullDto { code: number; data?: EnvelopePullDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface MergeGateDto { allowed: boolean; approvals: number; bypassed: boolean; change_requests: number; outdated: boolean; protected: boolean; reasons: string[]; required_approvals: number; } export type EnvelopePullGateDtoData = { conflicts: string[]; gate: MergeGateDto; head_sha: string; mergeable: boolean; pending_review_requests: number; }; export interface EnvelopePullGateDto { code: number; data?: EnvelopePullGateDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type ReviewState = "approved" | "changes_requested" | "commented" | "pending" | "dismissed"; export type EnvelopePullReviewDtoData = { /** @minimum 0 */ comment_count: number; commit_sha: string; /** @nullable */ content?: string | null; created_at: string; id: string; official: boolean; pull_request_id: string; state: ReviewState; /** @nullable */ updated_at?: string | null; user?: null | UserDto; }; export interface EnvelopePullReviewDto { code: number; data?: EnvelopePullReviewDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePullSummaryDtoData = { additions: number; base_sha: string; commits_ahead: number; commits_behind: number; conflicts: string[]; deletions: number; files_changed: number; head_sha: string; /** @nullable */ merge_base?: string | null; mergeable: boolean; mergeable_state: string; }; export interface EnvelopePullSummaryDto { code: number; data?: EnvelopePullSummaryDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } /** * 前端注册 Service Worker 所需的公开参数。 * * 只有公钥是公开的(它就是浏览器 `applicationServerKey` 要的东西),私钥永远 * 不出现在任何响应里。`enabled=false` 时前端把整个"系统通知"开关藏起来, * 而不是让用户点了才发现服务端没开。 */ export type EnvelopePushConfigDtoData = { enabled: boolean; public_key: string; }; export interface EnvelopePushConfigDto { code: number; /** * 前端注册 Service Worker 所需的公开参数。 * * 只有公钥是公开的(它就是浏览器 `applicationServerKey` 要的东西),私钥永远 * 不出现在任何响应里。`enabled=false` 时前端把整个"系统通知"开关藏起来, * 而不是让用户点了才发现服务端没开。 */ data?: EnvelopePushConfigDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePushResultDtoData = { pushed: string[]; rejected: string[]; }; export interface EnvelopePushResultDto { code: number; data?: EnvelopePushResultDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopePushSubscriptionDtoData = { created_at: string; endpoint: string; id: string; platform: PushSubscriptionPlatform; /** @nullable */ updated_at?: string | null; /** @nullable */ user_agent?: string | null; }; export interface EnvelopePushSubscriptionDto { code: number; data?: EnvelopePushSubscriptionDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type ReactionScope = "issue" | "comment"; export type EnvelopeReactionDtoData = { created_at: string; emoji: string; id: string; scope: ReactionScope; target_id: string; user?: null | UserDto; }; export interface EnvelopeReactionDto { code: number; data?: EnvelopeReactionDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeReadStateDtoData = { /** @nullable */ last_read_message_id?: string | null; last_read_seq: number; /** @nullable */ last_viewed_at?: string | null; room_id: string; tip_seq: number; unread_count: number; unread_mentions: number; }; export interface EnvelopeReadStateDto { code: number; data?: EnvelopeReadStateDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeRecoveryCodesRespData = { codes: string[]; /** @minimum 0 */ total: number; /** @minimum 0 */ used: number; }; export interface EnvelopeRecoveryCodesResp { code: number; data?: EnvelopeRecoveryCodesRespData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeRedeemInviteResponseData = { joined: boolean; member_id: string; organization_id: string; }; export interface EnvelopeRedeemInviteResponse { code: number; data?: EnvelopeRedeemInviteResponseData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeRegisterCodeResponseData = { /** @minimum 0 */ expires_in_secs: number; }; export interface EnvelopeRegisterCodeResponse { code: number; data?: EnvelopeRegisterCodeResponseData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeReleaseDtoData = { /** @nullable */ content?: string | null; created_at: string; id: string; is_draft: boolean; is_prerelease: boolean; num_commits: number; publisher?: null | UserDto; publisher_name: string; repo_id: string; sha: string; tag_name: string; target: string; title: string; updated_at: string; }; export interface EnvelopeReleaseDto { code: number; data?: EnvelopeReleaseDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type ReminderStatus = "Pending" | "Done" | "Cancelled" | "Delivering"; export type EnvelopeReminderDtoData = { created_at: string; id: string; message_id: string; /** @nullable */ message_preview?: string | null; /** @nullable */ note?: string | null; remind_at: string; room_id: string; status: ReminderStatus; }; export interface EnvelopeReminderDto { code: number; data?: EnvelopeReminderDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeRepairDirRespData = { fixed: number; scanned: number; }; export interface EnvelopeRepairDirResp { code: number; data?: EnvelopeRepairDirRespData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface RepoMeDto { starred: boolean; watch_mode?: null | WatchMode; } export type EnvelopeRepoDtoData = { /** 是否允许在本仓库创建合并请求(关闭后页签隐藏、接口拒绝)。 */ allow_pull_requests: boolean; /** @nullable */ archived_at?: string | null; /** @nullable */ avatar_url?: string | null; branches_count: number; commits_count: number; created_at: string; default_branch: string; /** @nullable */ description?: string | null; enable_lfs: boolean; git_size: number; /** @nullable */ http_clone_url?: string | null; id: string; is_archived: boolean; is_private: boolean; /** @nullable */ last_pushed_at?: string | null; lfs_size: number; /** @nullable */ license_name?: string | null; me?: null | RepoMeDto; name: string; object_format: string; /** @nullable */ primary_language?: string | null; pulls_count: number; size: number; /** @nullable */ ssh_clone_url?: string | null; stars_count: number; /** @nullable */ storage_limit_size?: number | null; /** 中间页签顺序;空数组 = 默认顺序。 */ tab_order: string[]; tags_count: number; updated_at: string; watchers_count: number; /** @nullable */ website?: string | null; }; export interface EnvelopeRepoDto { code: number; data?: EnvelopeRepoDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeRepoRelDtoData = { created_at: string; id: string; issue_id: string; repo_id: string; }; export interface EnvelopeRepoRelDto { code: number; data?: EnvelopeRepoRelDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeRepoStarRespData = { stars: number; }; export interface EnvelopeRepoStarResp { code: number; data?: EnvelopeRepoStarRespData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeRepoWatchDtoData = { created_at: string; mode: WatchMode; repo_id: string; updated_at: string; user_id: number; }; export interface EnvelopeRepoWatchDto { code: number; data?: EnvelopeRepoWatchDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeReportDtoData = { created_at: string; /** @nullable */ evidence?: string | null; id: string; reason: string; reported_id: number; status: ReportStatus; }; export interface EnvelopeReportDto { code: number; data?: EnvelopeReportDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeRoleSummaryData = { /** @nullable */ color?: string | null; created_at: string; default_role: boolean; /** @nullable */ description?: string | null; /** @nullable */ emoji?: string | null; /** @nullable */ icon_hash?: string | null; id: string; key: string; member_count: number; name: string; organization_id: string; permissions: PermissionGrant[]; position: number; rank: number; self_assignable: boolean; system: boolean; updated_at: string; version: number; }; export interface EnvelopeRoleSummary { code: number; data?: EnvelopeRoleSummaryData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeRoomBriefDtoData = { created_at: string; /** @nullable */ dir_id?: string | null; favorite: boolean; hidden: boolean; id: string; is_private: boolean; kind: RoomKind; /** @nullable */ last_message_id?: string | null; member_count: number; muted: boolean; name: string; nsfw: boolean; owner?: null | UserDto; owner_id: number; /** @nullable */ parent_id?: string | null; position: number; /** @nullable */ rate_limit_per_user?: number | null; /** @nullable */ space_id?: string | null; /** @nullable */ topic?: string | null; unread_count: number; unread_mentions: number; }; export interface EnvelopeRoomBriefDto { code: number; data?: EnvelopeRoomBriefDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeRoomDtoData = { created_at: string; /** @nullable */ dir_id?: string | null; id: string; is_active: boolean; is_private: boolean; kind: RoomKind; name: string; nsfw: boolean; owner_id: number; /** @nullable */ parent_id?: string | null; position: number; /** @nullable */ rate_limit_per_user?: number | null; /** @nullable */ space_id?: string | null; /** @nullable */ topic?: string | null; updated_at: string; /** @nullable */ user_limit?: number | null; }; export interface EnvelopeRoomDto { code: number; data?: EnvelopeRoomDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type RoomNotificationLevel = "Default" | "All" | "Mentions" | "Nothing"; export type EnvelopeRoomSettingDtoData = { favorite: boolean; hidden: boolean; /** @nullable */ mute_until?: string | null; muted: boolean; notification_level: RoomNotificationLevel; room_id: string; }; export interface EnvelopeRoomSettingDto { code: number; data?: EnvelopeRoomSettingDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeSavedMessageDtoData = { channel_id: string; id: string; message_id: string; saved_at: string; }; export interface EnvelopeSavedMessageDto { code: number; data?: EnvelopeSavedMessageDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeScriptOutputDtoData = { exit_code: number; stderr: string; stdout: string; }; export interface EnvelopeScriptOutputDto { code: number; data?: EnvelopeScriptOutputDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeSignatureDtoData = { email: string; name: string; when: string; }; export interface EnvelopeSignatureDto { code: number; data?: EnvelopeSignatureDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeSpaceDtoData = { allow_invite: boolean; allow_join: boolean; allow_join_level: AllowJoinLevel; /** @nullable */ avatar_url?: string | null; created_at: string; /** @nullable */ description?: string | null; id: string; is_active: boolean; is_private: boolean; lower_name: string; member_must_enable_2fa: boolean; members_count: number; name: string; owner?: null | UserDto; updated_at: string; /** @nullable */ welcome_message?: string | null; /** @nullable */ welcome_object?: string | null; }; export interface EnvelopeSpaceDto { code: number; data?: EnvelopeSpaceDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeSpaceImageDtoData = { /** @minimum 0 */ bytes: number; format: AvatarFormat; /** @nullable */ height?: number | null; kind: SpaceImageKind; space_id: string; updated_at: string; url: string; /** @nullable */ width?: number | null; }; export interface EnvelopeSpaceImageDto { code: number; data?: EnvelopeSpaceImageDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface ReadStateDto { /** @nullable */ last_read_message_id?: string | null; last_read_seq: number; /** @nullable */ last_viewed_at?: string | null; room_id: string; tip_seq: number; unread_count: number; unread_mentions: number; } export type EnvelopeSpaceReadStatesData = { items: ReadStateDto[]; }; export interface EnvelopeSpaceReadStates { code: number; data?: EnvelopeSpaceReadStatesData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeSshKeySummaryData = { algorithm: SshKeyAlgorithm; created_at: string; /** @nullable */ description?: string | null; /** @nullable */ expires_at?: string | null; fingerprint: string; id: string; /** @nullable */ last_used_at?: string | null; name: string; public_key: string; /** @nullable */ revoked_at?: string | null; }; export interface EnvelopeSshKeySummary { code: number; data?: EnvelopeSshKeySummaryData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeStopwatchDtoData = { /** @nullable */ created_at?: string | null; /** @nullable */ id?: string | null; issue_id: string; running: boolean; /** @nullable */ started_at?: string | null; user?: null | UserDto; }; export interface EnvelopeStopwatchDto { code: number; data?: EnvelopeStopwatchDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface EnvelopeString { code: number; data?: string; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeTagDtoData = { /** @nullable */ created_at?: string | null; /** @nullable */ message?: string | null; name: string; tag_type: TagType; /** @nullable */ tagger_email?: string | null; /** @nullable */ tagger_name?: string | null; target_sha: string; }; export interface EnvelopeTagDto { code: number; data?: EnvelopeTagDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeTagPolicyDtoData = { created_at: string; id: string; name_pattern: string; repo_id: string; updated_at: string; }; export interface EnvelopeTagPolicyDto { code: number; data?: EnvelopeTagPolicyDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeTagWhitelistDtoData = { policy_id: string; user?: null | UserDto; user_id: number; }; export interface EnvelopeTagWhitelistDto { code: number; data?: EnvelopeTagWhitelistDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeThreadDtoData = { archived: boolean; created_at: string; id: string; /** @nullable */ last_reply_at?: string | null; /** @nullable */ last_reply_id?: string | null; locked: boolean; /** @nullable */ name?: string | null; owner?: null | UserDto; owner_id: number; participant_count: number; reply_count: number; room_id: string; root_message_id: string; updated_at: string; }; export interface EnvelopeThreadDto { code: number; data?: EnvelopeThreadDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeTopicDtoData = { created_at: string; id: string; name: string; updated_at: string; }; export interface EnvelopeTopicDto { code: number; data?: EnvelopeTopicDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeTotpSetupRespData = { otpauth_uri: string; secret: string; }; export interface EnvelopeTotpSetupResp { code: number; data?: EnvelopeTotpSetupRespData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeTotpStatusRespData = { enabled: boolean; }; export interface EnvelopeTotpStatusResp { code: number; data?: EnvelopeTotpStatusRespData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeTrackedTimeDtoData = { created_at: string; id: string; issue_id: string; seconds: number; user?: null | UserDto; }; export interface EnvelopeTrackedTimeDto { code: number; data?: EnvelopeTrackedTimeDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeUnreadCountRespData = { /** @minimum 0 */ count: number; }; export interface EnvelopeUnreadCountResp { code: number; data?: EnvelopeUnreadCountRespData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeUpdateBranchDtoData = { pull: PullDto; result: MergeResultDto; }; export interface EnvelopeUpdateBranchDto { code: number; data?: EnvelopeUpdateBranchDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeUploadIntentDtoData = { /** @minimum 0 */ expires_secs: number; id: string; upload_url: string; }; export interface EnvelopeUploadIntentDto { code: number; data?: EnvelopeUploadIntentDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeUserLoginResponseData = { /** @nullable */ challenge?: string | null; /** @nullable */ displayname?: string | null; mfa_required: boolean; user_id: number; username: string; }; export interface EnvelopeUserLoginResponse { code: number; data?: EnvelopeUserLoginResponseData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeUserOverwriteDtoData = { allow_mask: number; deny_mask: number; dir_id: string; user?: null | UserDto; user_id: number; }; export interface EnvelopeUserOverwriteDto { code: number; data?: EnvelopeUserOverwriteDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeUserPreferencesDtoData = { allow_dms_from: Audience; allow_mentions_from: Audience; /** Default view for the 问题集 page: `board` or `list`. */ board_view_mode: string; /** @nullable */ diff_view_style?: string | null; email_digest: boolean; email_flags: number; in_app_flags: number; /** @nullable */ mute_until?: string | null; push_flags: number; show_online_status: boolean; theme_mode: string; }; export interface EnvelopeUserPreferencesDto { code: number; data?: EnvelopeUserPreferencesDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeUserPublicData = { avatar_url: string; display_name: string; user_id: number; username: string; }; export interface EnvelopeUserPublic { code: number; data?: EnvelopeUserPublicData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeUserRegisterResponseData = { /** @nullable */ displayname?: string | null; user_id: number; username: string; }; export interface EnvelopeUserRegisterResponse { code: number; data?: EnvelopeUserRegisterResponseData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface EnvelopeValue { code: number; data?: unknown; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecAgreementDocDataItem = { content_md: string; key: string; title: string; version: string; }; export interface EnvelopeVecAgreementDoc { code: number; data?: EnvelopeVecAgreementDocDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecBlameRangeDtoDataItem = { abbreviated_oid: string; commit_sha: string; ending_line: number; /** @nullable */ path?: string | null; starting_line: number; }; export interface EnvelopeVecBlameRangeDto { code: number; data?: EnvelopeVecBlameRangeDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecBranchPolicyDtoDataItem = { block_on_change_requested_reviews: boolean; block_on_outdated_branch: boolean; block_on_rejected_reviews: boolean; branch_pattern: string; created_at: string; dismiss_stale_approvals: boolean; enable_approvals_whitelist: boolean; enable_force_push: boolean; enable_merge_whitelist: boolean; enable_push: boolean; enable_push_whitelist: boolean; id: string; protected_file_patterns: string; push_whitelist_deploy_keys: boolean; repo_id: string; require_signed_commits: boolean; required_approvals: number; required_status_contexts: string; unprotected_file_patterns: string; updated_at: string; }; export interface EnvelopeVecBranchPolicyDto { code: number; data?: EnvelopeVecBranchPolicyDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecBranchWhitelistDtoDataItem = { created_at: string; /** @nullable */ group_id?: string | null; id: string; kind: WhitelistKind; policy_id: string; user?: null | UserDto; /** @nullable */ user_id?: number | null; }; export interface EnvelopeVecBranchWhitelistDto { code: number; data?: EnvelopeVecBranchWhitelistDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecChangedPathDiffDtoDataItem = { binary: boolean; /** @minimum 0 */ lines_added: number; /** @minimum 0 */ lines_removed: number; /** @nullable */ patch?: string | null; path: ChangedPathDto; }; export interface EnvelopeVecChangedPathDiffDto { code: number; data?: EnvelopeVecChangedPathDiffDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecCleanupObjectDtoDataItem = { /** 目录的子节点数 / 频道的子频道数。 */ child_count: number; /** `dirs.id`(目录/仓库/问题集/智能体集)或 `rooms.id`(频道)。 */ id: string; is_archived: boolean; /** * 仅仓库与频道有可见性开关。 * @nullable */ is_private?: boolean | null; /** `dir | object | repo | board | text | voice | stage | category | news | guild_room` */ kind: string; name: string; /** 目录上的权限覆盖条数(group + user)。 */ overwrite_count: number; /** 父链拼出的可读路径,例如 `bots / 研究研究`。 */ path: string; }; export interface EnvelopeVecCleanupObjectDto { code: number; data?: EnvelopeVecCleanupObjectDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecCommentTreeNodeDataItem = { comment: CommentDto; replies: CommentTreeNode[]; }; export interface EnvelopeVecCommentTreeNode { code: number; data?: EnvelopeVecCommentTreeNodeDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecCommitStatusDtoDataItem = { context: string; created_at: string; creator?: null | UserDto; creator_id: number; /** @nullable */ description?: string | null; state: CommitStatusDtoState; /** @nullable */ target_url?: string | null; /** @nullable */ updated_at?: string | null; }; export interface EnvelopeVecCommitStatusDto { code: number; data?: EnvelopeVecCommitStatusDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecContributorStatDtoDataItem = { additions: number; commits: number; deletions: number; email: string; name: string; }; export interface EnvelopeVecContributorStatDto { code: number; data?: EnvelopeVecContributorStatDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecDependencyDtoDataItem = { created_at: string; dependency_id: string; id: string; issue_id: string; }; export interface EnvelopeVecDependencyDto { code: number; data?: EnvelopeVecDependencyDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecDirNodeDtoDataItem = { /** @nullable */ archived_at?: string | null; children: DirNodeDto[]; /** @nullable */ color?: string | null; created_at: string; created_by_id: number; /** @nullable */ icon?: string | null; id: string; is_archived: boolean; kind: DirKind; name: string; /** @nullable */ parent_dir_id?: string | null; position: number; /** @nullable */ purpose?: string | null; /** @nullable */ topic?: string | null; updated_at: string; }; export interface EnvelopeVecDirNodeDto { code: number; data?: EnvelopeVecDirNodeDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecGroupOverwriteDtoDataItem = { allow_mask: number; deny_mask: number; dir_id: string; group_id: string; }; export interface EnvelopeVecGroupOverwriteDto { code: number; data?: EnvelopeVecGroupOverwriteDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecIssueAttachmentDtoDataItem = { content_type: string; created_at: string; filename: string; id: string; /** * `None` until the draft is submitted with this attachment attached. * @nullable */ issue_id?: string | null; size: number; status: IssueAttachmentStatus; uploader_id: number; }; export interface EnvelopeVecIssueAttachmentDto { code: number; data?: EnvelopeVecIssueAttachmentDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecIssuePullLinkDtoDataItem = { /** 建立关联的时间。 */ linked_at: string; pull: PullDto; /** 关联行主键(issue_relation_pull.id),解除关联时作为路径参数回传。 */ relation_id: string; }; export interface EnvelopeVecIssuePullLinkDto { code: number; data?: EnvelopeVecIssuePullLinkDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecJoinRuleDtoDataItem = { created_at: string; enabled: boolean; id: string; matcher: string; role_id: string; trigger: SpaceJoinTrigger; updated_at: string; }; export interface EnvelopeVecJoinRuleDto { code: number; data?: EnvelopeVecJoinRuleDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecLabelDtoDataItem = { color: string; created_at: string; /** @nullable */ description?: string | null; dir_id: string; exclusive: boolean; exclusive_order: number; id: string; is_archived: boolean; name: string; /** @nullable */ updated_at?: string | null; }; export interface EnvelopeVecLabelDto { code: number; data?: EnvelopeVecLabelDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecLanguageStatDtoDataItem = { is_primary: boolean; language: string; percentage_bp: number; size: number; }; export interface EnvelopeVecLanguageStatDto { code: number; data?: EnvelopeVecLanguageStatDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecLfsPointerDtoDataItem = { /** @nullable */ oid?: string | null; /** @nullable */ size?: number | null; version: string; }; export interface EnvelopeVecLfsPointerDto { code: number; data?: EnvelopeVecLfsPointerDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecMemeDtoDataItem = { content_type: string; created_at: string; /** @nullable */ height?: number | null; id: string; name: string; size: number; url: string; /** @nullable */ width?: number | null; }; export interface EnvelopeVecMemeDto { code: number; data?: EnvelopeVecMemeDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecMergeCommitDtoDataItem = { author_at: string; author_email: string; author_name: string; message: string; parents: string[]; sha: string; subject: string; }; export interface EnvelopeVecMergeCommitDto { code: number; data?: EnvelopeVecMergeCommitDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecMessageEditDtoDataItem = { content: string; created_at: string; editor?: null | UserDto; id: string; message_id: string; }; export interface EnvelopeVecMessageEditDto { code: number; data?: EnvelopeVecMessageEditDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecOutboundWebhookDtoDataItem = { created_at: string; disabled: boolean; id: string; /** @nullable */ last_status?: string | null; /** @nullable */ last_used_at?: string | null; name: string; room_id: string; url: string; }; export interface EnvelopeVecOutboundWebhookDto { code: number; data?: EnvelopeVecOutboundWebhookDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecPathLogEntryDtoDataItem = { author: string; date: string; path: string; short_sha: string; subject: string; }; export interface EnvelopeVecPathLogEntryDto { code: number; data?: EnvelopeVecPathLogEntryDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecPinDtoDataItem = { board_id: string; created_at: string; id: string; /** @nullable */ issue_id?: string | null; pin_order: number; }; export interface EnvelopeVecPinDto { code: number; data?: EnvelopeVecPinDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecPresenceDtoDataItem = { activities: unknown; /** @nullable */ last_seen_at?: string | null; online: boolean; status: PresenceStatus; user?: null | UserDto; user_id: number; }; export interface EnvelopeVecPresenceDto { code: number; data?: EnvelopeVecPresenceDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecPullAssigneeDtoDataItem = { created_at: string; id: string; user?: null | UserDto; }; export interface EnvelopeVecPullAssigneeDto { code: number; data?: EnvelopeVecPullAssigneeDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface PullCommentDto { author?: null | UserDto; body: string; /** @nullable */ commit_sha?: string | null; created_at: string; id: string; /** @nullable */ line?: number | null; /** @nullable */ parent_comment_id?: string | null; /** @nullable */ path?: string | null; pull_request_id: string; resolved: boolean; /** @nullable */ resolved_by?: number | null; /** @nullable */ review_id?: string | null; /** @nullable */ side?: string | null; /** @nullable */ updated_at?: string | null; } /** * 线程视图:顶层评论 + 其下全部回复(无递归,便于文档生成)。 */ export type EnvelopeVecPullCommentThreadDtoDataItem = { replies: PullCommentDto[]; root: PullCommentDto; }; export interface EnvelopeVecPullCommentThreadDto { code: number; data?: EnvelopeVecPullCommentThreadDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecPullReviewDtoDataItem = { /** @minimum 0 */ comment_count: number; commit_sha: string; /** @nullable */ content?: string | null; created_at: string; id: string; official: boolean; pull_request_id: string; state: ReviewState; /** @nullable */ updated_at?: string | null; user?: null | UserDto; }; export interface EnvelopeVecPullReviewDto { code: number; data?: EnvelopeVecPullReviewDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type ReviewerState = "requested" | "approved" | "changes_requested" | "commented" | "dismissed"; export type EnvelopeVecPullReviewerDtoDataItem = { created_at: string; id: string; requested_by?: null | UserDto; required: boolean; /** @nullable */ review_id?: string | null; state: ReviewerState; /** @nullable */ updated_at?: string | null; user?: null | UserDto; }; export interface EnvelopeVecPullReviewerDto { code: number; data?: EnvelopeVecPullReviewerDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecReactionAggDtoDataItem = { count: number; emoji: string; me: boolean; }; export interface EnvelopeVecReactionAggDto { code: number; data?: EnvelopeVecReactionAggDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecReactionUserDtoDataItem = { created_at: string; emoji: string; user: UserDto; }; export interface EnvelopeVecReactionUserDto { code: number; data?: EnvelopeVecReactionUserDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecRecentMentionDtoDataItem = { channel_id: string; created_at: string; id: string; message_id: string; }; export interface EnvelopeVecRecentMentionDto { code: number; data?: EnvelopeVecRecentMentionDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecReminderDtoDataItem = { created_at: string; id: string; message_id: string; /** @nullable */ message_preview?: string | null; /** @nullable */ note?: string | null; remind_at: string; room_id: string; status: ReminderStatus; }; export interface EnvelopeVecReminderDto { code: number; data?: EnvelopeVecReminderDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecRemoteDtoDataItem = { /** @nullable */ fetch_url?: string | null; name: string; /** @nullable */ push_url?: string | null; }; export interface EnvelopeVecRemoteDto { code: number; data?: EnvelopeVecRemoteDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecRepoRelDtoDataItem = { created_at: string; id: string; issue_id: string; repo_id: string; }; export interface EnvelopeVecRepoRelDto { code: number; data?: EnvelopeVecRepoRelDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecRoleSummaryDataItem = { /** @nullable */ color?: string | null; created_at: string; default_role: boolean; /** @nullable */ description?: string | null; /** @nullable */ emoji?: string | null; /** @nullable */ icon_hash?: string | null; id: string; key: string; member_count: number; name: string; organization_id: string; permissions: PermissionGrant[]; position: number; rank: number; self_assignable: boolean; system: boolean; updated_at: string; version: number; }; export interface EnvelopeVecRoleSummary { code: number; data?: EnvelopeVecRoleSummaryDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecRoomBriefDtoDataItem = { created_at: string; /** @nullable */ dir_id?: string | null; favorite: boolean; hidden: boolean; id: string; is_private: boolean; kind: RoomKind; /** @nullable */ last_message_id?: string | null; member_count: number; muted: boolean; name: string; nsfw: boolean; owner?: null | UserDto; owner_id: number; /** @nullable */ parent_id?: string | null; position: number; /** @nullable */ rate_limit_per_user?: number | null; /** @nullable */ space_id?: string | null; /** @nullable */ topic?: string | null; unread_count: number; unread_mentions: number; }; export interface EnvelopeVecRoomBriefDto { code: number; data?: EnvelopeVecRoomBriefDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface EnvelopeVecString { code: number; data?: string[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecSubmoduleDtoDataItem = { /** @nullable */ branch?: string | null; /** @nullable */ commit_sha?: string | null; path: string; url: string; }; export interface EnvelopeVecSubmoduleDto { code: number; data?: EnvelopeVecSubmoduleDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type SuspensionType = "temporary" | "permanent"; export type EnvelopeVecSuspensionDtoDataItem = { created_at: string; /** @nullable */ ends_at?: string | null; id: string; /** @nullable */ reason?: string | null; /** @nullable */ revoked_at?: string | null; starts_at: string; suspension_type: SuspensionType; }; export interface EnvelopeVecSuspensionDto { code: number; data?: EnvelopeVecSuspensionDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecTagPolicyDtoDataItem = { created_at: string; id: string; name_pattern: string; repo_id: string; updated_at: string; }; export interface EnvelopeVecTagPolicyDto { code: number; data?: EnvelopeVecTagPolicyDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecTagWhitelistDtoDataItem = { policy_id: string; user?: null | UserDto; user_id: number; }; export interface EnvelopeVecTagWhitelistDto { code: number; data?: EnvelopeVecTagWhitelistDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecTopicDtoDataItem = { created_at: string; id: string; name: string; updated_at: string; }; export interface EnvelopeVecTopicDto { code: number; data?: EnvelopeVecTopicDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecUserOverwriteDtoDataItem = { allow_mask: number; deny_mask: number; dir_id: string; user?: null | UserDto; user_id: number; }; export interface EnvelopeVecUserOverwriteDto { code: number; data?: EnvelopeVecUserOverwriteDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVecUserPublicDataItem = { avatar_url: string; display_name: string; user_id: number; username: string; }; export interface EnvelopeVecUserPublic { code: number; data?: EnvelopeVecUserPublicDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface VoiceTrackDto { kind: string; muted: boolean; sid: string; source: string; } /** * 房间参与者快照。 * * 权威来源是 LiveKit 的 list_participants,Redis 只补主持人静音等本地状态; * 这是「谁在这个频道里」的服务端视图,用于侧栏人数与未加入时的预览。 * 会中界面的发言高亮、静音图标与画面轨道一律直接读浏览器里的 Room, * 因为本接口不是事件流,返回值天然是快照。 */ export type EnvelopeVecVoiceParticipantDtoDataItem = { /** @nullable */ avatar_url?: string | null; can_publish: boolean; display_name: string; joined_at: number; moderator_muted: boolean; /** * 快照值:list_participants 不返回发言状态,因此这里恒为 false; * 实时发言指示由前端从 Room 的 activeSpeakers 读取。 */ speaking: boolean; tracks: VoiceTrackDto[]; user_id: number; }; export interface EnvelopeVecVoiceParticipantDto { code: number; data?: EnvelopeVecVoiceParticipantDtoDataItem[]; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVerifyResultDtoData = { /** @nullable */ error_message?: string | null; /** @nullable */ key_id?: string | null; signed: boolean; /** @nullable */ signer?: string | null; valid: boolean; }; export interface EnvelopeVerifyResultDto { code: number; data?: EnvelopeVerifyResultDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVoiceConfigDtoData = { enabled: boolean; recording_enabled: boolean; url: string; }; export interface EnvelopeVoiceConfigDto { code: number; data?: EnvelopeVoiceConfigDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface HandDto { /** @nullable */ avatar_url?: string | null; display_name: string; requested_at: number; state: HandState; user_id: number; } export type EnvelopeVoiceHandsDtoData = { can_moderate: boolean; hands: HandDto[]; my_state?: null | HandState; }; export interface EnvelopeVoiceHandsDto { code: number; data?: EnvelopeVoiceHandsDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } /** * 一个参与者窗口在画布里的摆位,坐标按画布宽高归一化(0~1), * 这样不同分辨率、不同窗口大小的成员看到的是同一套布局。 */ export interface VoiceTileDto { /** * 归一化高度,和 `w` 一样按画布的可用宽高分别归一,因此窗口可以自由 * 拉伸而不是只能等比缩放。旧记录没有这个字段,读出来是 `None`,客户端 * 按宽度的 3/4 补一个经典比例。 * @nullable */ h?: number | null; /** * 服务端写入时刻(秒)。请求里被忽略,响应里供客户端判断“谁更新”, * 这样并发拖拽时一个迟到的 GET 不会把刚摆好的窗口拽回旧位置。 */ updated_at?: number; /** 归一化宽度。 */ w: number; x: number; y: number; } /** * key 为参与者用户 id。 */ export type EnvelopeVoiceLayoutDtoDataTiles = { [key: string]: VoiceTileDto }; export type EnvelopeVoiceLayoutDtoData = { /** key 为参与者用户 id。 */ tiles?: EnvelopeVoiceLayoutDtoDataTiles; }; export interface EnvelopeVoiceLayoutDto { code: number; data?: EnvelopeVoiceLayoutDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } /** * 本次写入的服务端时刻,客户端用它给本地副本盖戳。 */ export type EnvelopeVoiceLayoutSavedDtoData = { updated_at: number; }; export interface EnvelopeVoiceLayoutSavedDto { code: number; /** 本次写入的服务端时刻,客户端用它给本地副本盖戳。 */ data?: EnvelopeVoiceLayoutSavedDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVoiceModerationDtoData = { action: string; ok: boolean; user_id: number; }; export interface EnvelopeVoiceModerationDto { code: number; data?: EnvelopeVoiceModerationDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVoiceRecordingDtoData = { active: boolean; egress_id: string; }; export interface EnvelopeVoiceRecordingDto { code: number; data?: EnvelopeVoiceRecordingDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface VoiceRoomStateDto { /** @minimum 0 */ count: number; room_id: string; } export type EnvelopeVoiceSpaceStatesDtoData = { rooms: VoiceRoomStateDto[]; }; export interface EnvelopeVoiceSpaceStatesDto { code: number; data?: EnvelopeVoiceSpaceStatesDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeVoiceTokenDtoData = { can_publish: boolean; /** @minimum 0 */ expires_in_secs: number; hand_state?: null | HandState; is_stage: boolean; room_name: string; token: string; url: string; }; export interface EnvelopeVoiceTokenDto { code: number; data?: EnvelopeVoiceTokenDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeWatchDtoData = { created_at: string; id: string; /** @nullable */ issue_id?: string | null; mode: WatchMode; /** @nullable */ updated_at?: string | null; user?: null | UserDto; }; export interface EnvelopeWatchDto { code: number; data?: EnvelopeWatchDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeWebhookDtoData = { created_at: string; disabled: boolean; id: string; /** @nullable */ last_used_at?: string | null; name: string; room_id: string; }; export interface EnvelopeWebhookDto { code: number; data?: EnvelopeWebhookDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export type EnvelopeWebhookSecretDtoData = { created_at: string; disabled: boolean; id: string; name: string; room_id: string; token: string; }; export interface EnvelopeWebhookSecretDto { code: number; data?: EnvelopeWebhookSecretDtoData; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface EnvelopeBool { code: number; data?: boolean; /** @nullable */ error?: string | null; /** @nullable */ error_code?: string | null; message: string; request_id?: string; } export interface EventDto { /** @nullable */ comment_id?: string | null; /** @nullable */ commit_sha?: string | null; /** @nullable */ content?: string | null; created_at: string; event_type: IssueEventType; id: string; /** @nullable */ issue_id?: string | null; /** @nullable */ new_ref?: string | null; /** @nullable */ new_title?: string | null; /** @nullable */ old_ref?: string | null; /** @nullable */ old_title?: string | null; user?: null | UserDto; } export interface EventPath { board_id: string; issue_id: string; space_name: string; } export type ExploreSort = "members" | "newest"; export interface ExploreSpaceDto { allow_join: boolean; allow_join_level: AllowJoinLevel; /** @nullable */ avatar_url?: string | null; /** @nullable */ banner_url?: string | null; created_at: string; /** @nullable */ description?: string | null; id: string; lower_name: string; members_count: number; name: string; viewer?: null | ExploreViewerDto; } export interface FetchResultDto { new: string[]; updated: string[]; } export interface FileEntryDto { /** @items.minimum 0 */ content: number[]; executable: boolean; path: string; } export interface FinalizeAttachmentCmd { /** @nullable */ duration_secs?: number | null; /** @nullable */ height?: number | null; /** @nullable */ width?: number | null; } export interface ForwardMessageCmd { /** @nullable */ comment?: string | null; target_room_id: string; } export interface FsckDto { broken: number; dangling: number; ok: boolean; } export interface GroupDto { color: string; created_at: string; created_by?: null | UserDto; /** @nullable */ icon_hash?: string | null; id: string; name: string; permissions: string[]; position: number; space_id: string; /** @nullable */ unicode_emoji?: string | null; /** @nullable */ updated_at?: string | null; version: number; } export interface GroupOverwriteDto { allow_mask: number; deny_mask: number; dir_id: string; group_id: string; } export interface HeadInfoDto { is_detached: boolean; name: string; object: string; object_type: number; } export type HookEventKind = "pre_receive" | "post_receive" | "update" | "push" | "tag" | "merge_request"; export interface HookExecBody { args?: string[]; } /** * Which representation a read endpoint should hand back. */ export type ImageVariant = "preview" | "original"; export interface ImportResultDto { commit_count: number; default_branch: string; } export interface IncludeRevokedQuery { /** @nullable */ active?: boolean | null; /** @nullable */ include_revoked?: boolean | null; } export interface IngestPackDto { object_count: number; size: number; } export interface InlineDraft { /** @nullable */ body?: string | null; line: number; path: string; /** @nullable */ side?: string | null; } export interface InviteListQuery { /** @nullable */ include_revoked?: boolean | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; } export interface IsAncestorResponse { is_ancestor: boolean; } export interface IsObjectInRefResponse { contains: boolean; } export interface IssueAttachmentDto { content_type: string; created_at: string; filename: string; id: string; /** * `None` until the draft is submitted with this attachment attached. * @nullable */ issue_id?: string | null; size: number; status: IssueAttachmentStatus; uploader_id: number; } export interface IssueDto { assignees: UserDto[]; author?: null | UserDto; board_id: string; /** @nullable */ closed_at?: string | null; content: string; created_at: string; /** @nullable */ description?: string | null; /** @nullable */ due_at?: string | null; id: string; /** @nullable */ milestone_id?: string | null; number: number; priority: IssuePriority; state: IssueState; title: string; /** @nullable */ updated_at?: string | null; viewer_watch?: null | WatchMode; } export interface IssueLabelPath { board_id: string; issue_id: string; label_id: string; space_name: string; } export interface IssueListItemDto { assignees: UserDto[]; author?: null | UserDto; board_id: string; /** @nullable */ closed_at?: string | null; created_at: string; /** @nullable */ due_at?: string | null; id: string; /** Chips the list rows render; the detail view fetches these separately. */ labels: LabelDto[]; /** @nullable */ milestone_id?: string | null; number: number; priority: IssuePriority; state: IssueState; title: string; /** @nullable */ updated_at?: string | null; } export interface IssueMemberDto { created_at: string; id: string; issue_id: string; kind: IssueMemberKind; /** @nullable */ updated_at?: string | null; user?: null | UserDto; } export interface IssueMemberPath { board_id: string; issue_id: string; member_id: string; space_name: string; } export interface IssuePath { board_id: string; /** issue uuid or board-scoped number (e.g. "123") */ issue_id: string; space_name: string; } export interface IssuePullLinkDto { /** 建立关联的时间。 */ linked_at: string; pull: PullDto; /** 关联行主键(issue_relation_pull.id),解除关联时作为路径参数回传。 */ relation_id: string; } export type IssueSort = "created_at" | "updated_at" | "due_at" | "priority" | "number"; export interface IssueUploadIntentDto { /** @minimum 0 */ expires_secs: number; id: string; upload_url: string; } export interface IssueUserDto { created_at: string; id: string; is_read: boolean; issue_id: string; user?: null | UserDto; user_id: number; } export interface IssueUserPath { board_id: string; issue_id: string; space_name: string; user_id: number; } export interface JoinRequestDto { created_at: string; /** @nullable */ decided_at?: string | null; decided_by?: null | UserDto; id: string; /** @nullable */ note?: string | null; space_id: string; status: SpaceJoinRequestState; updated_at: string; user?: null | UserDto; } export interface JoinRuleDto { created_at: string; enabled: boolean; id: string; matcher: string; role_id: string; trigger: SpaceJoinTrigger; updated_at: string; } export interface LabelPath { board_id: string; label_id: string; space_name: string; } export interface LanguageStatDto { is_primary: boolean; language: string; percentage_bp: number; size: number; } export interface LfsCleanupResponse { removed: number; } export interface LfsLockBody { /** @nullable */ oid?: string | null; path: string; } export interface LfsLockListResponse { locks?: LfsLock[]; /** @nullable */ next_cursor?: string | null; } export interface LfsVerifyLocksResponse { /** @nullable */ next_cursor?: string | null; ours?: LfsLock[]; theirs?: LfsLock[]; } export interface LicenseDto { body: string; created_at: string; /** @nullable */ description?: string | null; display_name: string; name: string; updated_at: string; /** @nullable */ url?: string | null; } export interface LinkIssueCmd { /** PR 编号或 UUID。 */ pull_ref: string; repo_name: string; space_name: string; } export interface ListBoardQuery { /** @nullable */ dir_id?: string | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; /** @nullable */ q?: string | null; } export type SortOrder = "asc" | "desc"; export interface ListCommentQuery { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; order?: null | SortOrder; /** @nullable */ parent_id?: string | null; sort?: null | CommentSort; } export interface ListContentHistoryQuery { /** @nullable */ comment_id?: string | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; } export interface ListEventQuery { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; } export interface ListIssueMemberQuery { kind?: null | IssueMemberKind; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; } export interface ListIssueQuery { /** * One id or a comma-separated id list (`a,b`); matches any of them. * @nullable */ assignee_id?: string | null; /** @nullable */ author_id?: number | null; /** * One id or a comma-separated id list (`a,b`); matches any of them. * @nullable */ label_id?: string | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * One id or a comma-separated id list (`a,b`); `none` matches issues * without a milestone. Any of the listed values matches. * @nullable */ milestone_id?: string | null; /** * @minimum 0 * @nullable */ offset?: number | null; order?: null | SortOrder; /** * One priority or a comma-separated list (`high,urgent`). * @nullable */ priority?: string | null; /** @nullable */ q?: string | null; sort?: null | IssueSort; state?: null | IssueState; } export interface ListIssueUserQuery { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; } export interface ListLabelQuery { /** @nullable */ is_archived?: boolean | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; /** @nullable */ q?: string | null; } export interface ListLimitQuery { /** * @minimum 0 * @nullable */ limit?: number | null; } export interface ListMessageQuery { /** @nullable */ after_seq?: number | null; /** @nullable */ author_id?: number | null; /** @nullable */ before_seq?: number | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; /** @nullable */ thread_id?: string | null; } export interface ListMilestoneQuery { /** @nullable */ is_closed?: boolean | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; /** @nullable */ q?: string | null; } export interface ListThreadQuery { /** @nullable */ archived?: boolean | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; } export interface ListTrackedTimeQuery { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; /** @nullable */ user_id?: number | null; } export interface PowProofRequest { /** @minimum 0 */ nonce: number; /** @items.minimum 0 */ payload: number[]; } export interface LoginCodeRequest { email: string; pow_payload: PowProofRequest; } export interface LoginCodeResponse { /** @minimum 0 */ expires_in_secs: number; } export interface LoginCodeVerifyRequest { email: string; email_code: string; pow_payload: PowProofRequest; } export interface LoginVerifyRequest { challenge: string; code: string; } export interface LogoutResponse { /** @nullable */ user_id?: number | null; } export interface MarkIssueReadCmd { read: boolean; } export interface MarkNotificationsReadCmd { all?: boolean; /** @nullable */ ids?: string[] | null; } export interface MarkReadCmd { /** @nullable */ message_id?: string | null; /** @nullable */ seq?: number | null; } export interface MarkThreadReadCmd { /** @nullable */ message_id?: string | null; } export interface MarkedCountResp { /** @minimum 0 */ marked: number; } export interface MeResp { profile?: null | ProfileDto; user: UserMeDto; } export interface MeResponse { /** @nullable */ avatar_url?: string | null; created_at: string; /** @nullable */ displayname?: string | null; email: string; /** @nullable */ email_verified_at?: string | null; is_admin: boolean; user_id: number; username: string; version: number; } export interface MemberDto { /** @nullable */ alias_avatar_url?: string | null; /** @nullable */ alias_name?: string | null; created_at: string; hide_muted_channels: boolean; /** @nullable */ invited_at?: string | null; invited_by?: null | UserDto; joined_at: string; /** @nullable */ last_active_at?: string | null; /** @nullable */ left_at?: string | null; message_notifications: MessageNotifications; mobile_push: boolean; /** @nullable */ mute_until?: string | null; muted: boolean; space_id: string; status: MemberStatus; suppress_everyone: boolean; suppress_roles: boolean; /** @nullable */ updated_at?: string | null; user?: null | UserDto; } export interface MemberListQuery { /** @nullable */ include_banned?: boolean | null; /** @nullable */ include_inactive?: boolean | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; } export interface MemberSummary { /** @nullable */ alias_avatar_url?: string | null; /** @nullable */ alias_name?: string | null; ban_allow_agent_join: boolean; ban_allow_comment_any: boolean; ban_allow_push_repo: boolean; ban_allow_speak: boolean; /** @nullable */ ban_expires_at?: string | null; /** @nullable */ ban_reason?: string | null; /** @nullable */ banned_at?: string | null; /** @nullable */ displayname?: string | null; hide_muted_channels: boolean; id: string; /** @nullable */ invited_by?: number | null; join_method: SpaceJoinMethod; joined_at: string; /** @nullable */ last_active_at?: string | null; /** @nullable */ left_at?: string | null; message_notifications: MessageNotifications; mobile_push: boolean; /** @nullable */ mute_until?: string | null; muted: boolean; organization_id: string; permissions: string[]; role: SpaceMemberRole; role_keys: string[]; suppress_everyone: boolean; suppress_roles: boolean; user_id: number; username: string; version: number; } export interface MemeDto { content_type: string; created_at: string; /** @nullable */ height?: number | null; id: string; name: string; size: number; url: string; /** @nullable */ width?: number | null; } export interface MergeCommitDto { author_at: string; author_email: string; author_name: string; message: string; parents: string[]; sha: string; subject: string; } export interface MergePullCmd { /** @nullable */ delete_branch_after_merge?: boolean | null; /** @nullable */ expect_head_sha?: string | null; /** * 允许在无冲突时直接快进(method=merge 时生效)。 * @nullable */ fast_forward_only?: boolean | null; /** @nullable */ message?: string | null; method?: null | MergeMethod; /** @nullable */ title?: string | null; } export interface MergePullDto { pull: PullDto; result: MergeResultDto; summary: PullSummaryDto; } export interface MergeStatusDto { conflicts: string[]; fast_forwardable: boolean; mergeable: boolean; } export interface MessageEditDto { content: string; created_at: string; editor?: null | UserDto; id: string; message_id: string; } /** * 消息页:在统一分页字段之上补回游标翻页所需的派生字段。 * * `has_more`/`oldest_seq`/`newest_seq` 由本页内容推导,客户端无需自己算; * `items` 恒按 `seq` 升序,因此 `oldest_seq` 取首条、`newest_seq` 取末条。 */ export interface MessagePage { has_more: boolean; items: MessageDto[]; /** @minimum 0 */ limit: number; /** @nullable */ newest_seq?: number | null; /** @minimum 0 */ offset: number; /** @nullable */ oldest_seq?: number | null; /** @minimum 0 */ total: number; } export interface MessagePath { message_id: string; room_id: string; } export interface MilestoneDto { board_id: string; closed_issues_count: number; created_at: string; /** @nullable */ description?: string | null; /** @nullable */ due_at?: string | null; id: string; is_closed: boolean; issues_count: number; name: string; /** @nullable */ updated_at?: string | null; } export interface MilestonePath { board_id: string; milestone_id: string; space_name: string; } export interface MoveDirCmd { /** @nullable */ parent_dir_id?: string | null; /** @nullable */ position?: number | null; } export interface MySpaceDto { permissions: string[]; space: SpaceDto; } export interface NoData {} export interface NotificationDto { /** @nullable */ actor_id?: number | null; /** @nullable */ body?: string | null; created_at: string; data?: null | Value; id: string; notification_type: NotificationType; /** @nullable */ read_at?: string | null; title: string; } export interface OpenDmCmd { /** @nullable */ peer_user_id?: number | null; /** @nullable */ peer_user_ids?: number[] | null; } export interface OrgListQuery { /** @nullable */ include_archived?: boolean | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; } export interface OrganizationSummary { allow_invite: boolean; allow_join: boolean; allow_join_level: number; /** @nullable */ archived_at?: string | null; /** @nullable */ avatar_url?: string | null; created_at: string; /** @nullable */ description?: string | null; id: string; join_policy: SpaceJoinPolicy; member_count: number; member_must_enable_2fa: boolean; my_role?: null | SpaceMemberRole; name: string; owner_user_id: number; require_email_verified: boolean; require_mfa: boolean; slug: string; status: SpaceStatus; updated_at: string; version: number; /** @nullable */ welcome_message?: string | null; } export interface OutboundWebhookDto { created_at: string; disabled: boolean; id: string; /** @nullable */ last_status?: string | null; /** @nullable */ last_used_at?: string | null; name: string; room_id: string; url: string; } export interface OutboundWebhookSecretDto { created_at: string; id: string; name: string; room_id: string; secret: string; url: string; } export interface PackStatsDto { loose_count: number; size_bytes: number; } export interface PageQuery { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; } export type PageBookmarkDtoItemsItem = { created_at: string; created_by_id: number; /** @nullable */ emoji?: string | null; id: string; position: number; room_id: string; title: string; /** @nullable */ url?: string | null; }; export interface PageBookmarkDto { items: PageBookmarkDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageBranchDtoItemsItem = { commit_sha: string; created_at: string; /** @nullable */ deleted_at?: string | null; is_deleted: boolean; is_protected: boolean; name: string; updated_at: string; }; export interface PageBranchDto { items: PageBranchDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageBranchInfoDtoItemsItem = { /** @nullable */ commit_message?: string | null; commit_sha: string; is_protected: boolean; name: string; }; export interface PageBranchInfoDto { items: PageBranchInfoDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageDmDtoItemsItem = { created_at: string; id: string; kind: RoomKind; /** @nullable */ last_message_id?: string | null; last_read_seq: number; members?: UserDto[]; name: string; peer?: null | UserDto; tip_seq: number; unread_count: number; }; export interface PageDmDto { items: PageDmDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageDraftDtoItemsItem = { content: string; room_id: string; /** @nullable */ thread_id?: string | null; updated_at: string; }; export interface PageDraftDto { items: PageDraftDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageEmojiDtoItemsItem = { animated: boolean; created_at: string; disabled: boolean; id: string; name: string; space_id: string; }; export interface PageEmojiDto { items: PageEmojiDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageInviteSummaryItemsItem = { created_at: string; created_by: number; /** @nullable */ email?: string | null; /** @nullable */ expires_at?: string | null; id: string; max_uses: number; method: SpaceJoinMethod; organization_id: string; /** @nullable */ revoked_at?: string | null; /** @nullable */ role_id?: string | null; /** @nullable */ target_user_id?: number | null; uses: number; }; export interface PageInviteSummary { items: PageInviteSummaryItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageIssueListItemDtoItemsItem = { assignees: UserDto[]; author?: null | UserDto; board_id: string; /** @nullable */ closed_at?: string | null; created_at: string; /** @nullable */ due_at?: string | null; id: string; /** Chips the list rows render; the detail view fetches these separately. */ labels: LabelDto[]; /** @nullable */ milestone_id?: string | null; number: number; priority: IssuePriority; state: IssueState; title: string; /** @nullable */ updated_at?: string | null; }; export interface PageIssueListItemDto { items: PageIssueListItemDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageLicenseDtoItemsItem = { body: string; created_at: string; /** @nullable */ description?: string | null; display_name: string; name: string; updated_at: string; /** @nullable */ url?: string | null; }; export interface PageLicenseDto { items: PageLicenseDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageMemberSummaryItemsItem = { /** @nullable */ alias_avatar_url?: string | null; /** @nullable */ alias_name?: string | null; ban_allow_agent_join: boolean; ban_allow_comment_any: boolean; ban_allow_push_repo: boolean; ban_allow_speak: boolean; /** @nullable */ ban_expires_at?: string | null; /** @nullable */ ban_reason?: string | null; /** @nullable */ banned_at?: string | null; /** @nullable */ displayname?: string | null; hide_muted_channels: boolean; id: string; /** @nullable */ invited_by?: number | null; join_method: SpaceJoinMethod; joined_at: string; /** @nullable */ last_active_at?: string | null; /** @nullable */ left_at?: string | null; message_notifications: MessageNotifications; mobile_push: boolean; /** @nullable */ mute_until?: string | null; muted: boolean; organization_id: string; permissions: string[]; role: SpaceMemberRole; role_keys: string[]; suppress_everyone: boolean; suppress_roles: boolean; user_id: number; username: string; version: number; }; export interface PageMemberSummary { items: PageMemberSummaryItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageMessageDtoItemsItem = { attachments: AttachmentDto[]; author?: null | UserDto; author_id: number; author_type: AuthorType; content: string; created_at: string; /** @nullable */ deleted_at?: string | null; /** @nullable */ edited_at?: string | null; embeds?: MessageEmbed[]; /** @nullable */ forwarded_from_id?: string | null; has_thread: boolean; id: string; mention_everyone: boolean; mentions: number[]; message_type: ChatMessageType; pinned: boolean; /** @nullable */ pinned_at?: string | null; /** @nullable */ pinned_by_id?: number | null; reactions?: ReactionAggDto[]; /** @nullable */ reply_to_id?: string | null; room_id: string; seq: number; thread_broadcast: boolean; /** @nullable */ thread_id?: string | null; /** @nullable */ webhook_id?: string | null; }; export interface PageMessageDto { items: PageMessageDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageMySpaceDtoItemsItem = { permissions: string[]; space: SpaceDto; }; export interface PageMySpaceDto { items: PageMySpaceDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageNotificationDtoItemsItem = { /** @nullable */ actor_id?: number | null; /** @nullable */ body?: string | null; created_at: string; data?: null | Value; id: string; notification_type: NotificationType; /** @nullable */ read_at?: string | null; title: string; }; export interface PageNotificationDto { items: PageNotificationDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageOrganizationSummaryItemsItem = { allow_invite: boolean; allow_join: boolean; allow_join_level: number; /** @nullable */ archived_at?: string | null; /** @nullable */ avatar_url?: string | null; created_at: string; /** @nullable */ description?: string | null; id: string; join_policy: SpaceJoinPolicy; member_count: number; member_must_enable_2fa: boolean; my_role?: null | SpaceMemberRole; name: string; owner_user_id: number; require_email_verified: boolean; require_mfa: boolean; slug: string; status: SpaceStatus; updated_at: string; version: number; /** @nullable */ welcome_message?: string | null; }; export interface PageOrganizationSummary { items: PageOrganizationSummaryItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PagePullCommentDtoItemsItem = { author?: null | UserDto; body: string; /** @nullable */ commit_sha?: string | null; created_at: string; id: string; /** @nullable */ line?: number | null; /** @nullable */ parent_comment_id?: string | null; /** @nullable */ path?: string | null; pull_request_id: string; resolved: boolean; /** @nullable */ resolved_by?: number | null; /** @nullable */ review_id?: string | null; /** @nullable */ side?: string | null; /** @nullable */ updated_at?: string | null; }; export interface PagePullCommentDto { items: PagePullCommentDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PagePullDtoItemsItem = { additions: number; author?: null | UserDto; auto_merge: boolean; base: PullRefDto; body: string; /** @nullable */ closed_at?: string | null; /** @nullable */ commits_ahead?: number | null; /** @nullable */ commits_behind?: number | null; /** @nullable */ conflicts?: string[] | null; created_at: string; deletions: number; files_changed: number; head: PullRefDto; id: string; is_draft: boolean; /** @nullable */ issue_id?: string | null; locked: boolean; merge_method: MergeMethod; /** @nullable */ mergeable?: boolean | null; /** @nullable */ mergeable_state?: string | null; /** @nullable */ merged_at?: string | null; /** @nullable */ merged_commit_sha?: string | null; merger?: null | UserDto; number: number; repo_id: string; /** @nullable */ squash_commit_sha?: string | null; state: PullState; title: string; /** @nullable */ updated_at?: string | null; }; export interface PagePullDto { items: PagePullDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PagePullEventDtoItemsItem = { actor?: null | UserDto; /** @nullable */ commit_sha?: string | null; /** @nullable */ content?: string | null; created_at: string; event_type: string; id: string; pull_request_id: string; }; export interface PagePullEventDto { items: PagePullEventDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PagePushSubscriptionDtoItemsItem = { created_at: string; endpoint: string; id: string; platform: PushSubscriptionPlatform; /** @nullable */ updated_at?: string | null; /** @nullable */ user_agent?: string | null; }; export interface PagePushSubscriptionDto { items: PagePushSubscriptionDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageRepoSummaryDtoItemsItem = { /** @nullable */ avatar_url?: string | null; default_branch: string; /** @nullable */ description?: string | null; id: string; is_archived: boolean; is_private: boolean; /** @nullable */ license_name?: string | null; name: string; /** @nullable */ primary_language?: string | null; size: number; stars_count: number; updated_at: string; watchers_count: number; }; export interface PageRepoSummaryDto { items: PageRepoSummaryDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageRoomBriefDtoItemsItem = { created_at: string; /** @nullable */ dir_id?: string | null; favorite: boolean; hidden: boolean; id: string; is_private: boolean; kind: RoomKind; /** @nullable */ last_message_id?: string | null; member_count: number; muted: boolean; name: string; nsfw: boolean; owner?: null | UserDto; owner_id: number; /** @nullable */ parent_id?: string | null; position: number; /** @nullable */ rate_limit_per_user?: number | null; /** @nullable */ space_id?: string | null; /** @nullable */ topic?: string | null; unread_count: number; unread_mentions: number; }; export interface PageRoomBriefDto { items: PageRoomBriefDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageSavedMessageDtoItemsItem = { channel_id: string; id: string; message_id: string; saved_at: string; }; export interface PageSavedMessageDto { items: PageSavedMessageDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageSessionDtoItemsItem = { /** @nullable */ client_ip_hash?: string | null; created_at: string; /** @nullable */ device_id?: string | null; expires_at: string; id: string; is_current: boolean; is_revoked: boolean; kind: SessionKind; last_seen_at: string; /** @nullable */ revoked_at?: string | null; /** @nullable */ user_agent_hash?: string | null; }; export interface PageSessionDto { items: PageSessionDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageSpaceDtoItemsItem = { allow_invite: boolean; allow_join: boolean; allow_join_level: AllowJoinLevel; /** @nullable */ avatar_url?: string | null; created_at: string; /** @nullable */ description?: string | null; id: string; is_active: boolean; is_private: boolean; lower_name: string; member_must_enable_2fa: boolean; members_count: number; name: string; owner?: null | UserDto; updated_at: string; /** @nullable */ welcome_message?: string | null; /** @nullable */ welcome_object?: string | null; }; export interface PageSpaceDto { items: PageSpaceDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageSshKeySummaryItemsItem = { algorithm: SshKeyAlgorithm; created_at: string; /** @nullable */ description?: string | null; /** @nullable */ expires_at?: string | null; fingerprint: string; id: string; /** @nullable */ last_used_at?: string | null; name: string; public_key: string; /** @nullable */ revoked_at?: string | null; }; export interface PageSshKeySummary { items: PageSshKeySummaryItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageStargazerDtoItemsItem = { avatar_url: string; display_name: string; starred_at: string; user_id: number; username: string; }; export interface PageStargazerDto { items: PageStargazerDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageTagDtoItemsItem = { /** @nullable */ created_at?: string | null; /** @nullable */ message?: string | null; name: string; tag_type: TagType; /** @nullable */ tagger_email?: string | null; /** @nullable */ tagger_name?: string | null; target_sha: string; }; export interface PageTagDto { items: PageTagDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageThreadDtoItemsItem = { archived: boolean; created_at: string; id: string; /** @nullable */ last_reply_at?: string | null; /** @nullable */ last_reply_id?: string | null; locked: boolean; /** @nullable */ name?: string | null; owner?: null | UserDto; owner_id: number; participant_count: number; reply_count: number; room_id: string; root_message_id: string; updated_at: string; }; export interface PageThreadDto { items: PageThreadDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageTopicDtoItemsItem = { created_at: string; id: string; name: string; updated_at: string; }; export interface PageTopicDto { items: PageTopicDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageTopicRepoDtoItemsItem = { is_private: boolean; repo_id: string; repo_name: string; space_name: string; }; export interface PageTopicRepoDto { items: PageTopicRepoDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageUserReportDtoItemsItem = { created_at: string; /** @nullable */ evidence?: string | null; id: string; reason: string; reported_id: number; /** @nullable */ resolution_note?: string | null; status: ReportStatus; updated_at: string; }; export interface PageUserReportDto { items: PageUserReportDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageWatcherDtoItemsItem = { avatar_url: string; display_name: string; mode: WatchMode; user_id: number; username: string; watching_since: string; }; export interface PageWatcherDto { items: PageWatcherDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export type PageWebhookDtoItemsItem = { created_at: string; disabled: boolean; id: string; /** @nullable */ last_used_at?: string | null; name: string; room_id: string; }; export interface PageWebhookDto { items: PageWebhookDtoItemsItem[]; /** @minimum 0 */ limit: number; /** @minimum 0 */ offset: number; /** @minimum 0 */ total: number; } export interface ParsedPatchDto { additions: number; deletions: number; files: string[]; } export interface PasswordResetConfirmRequest { password_hash: string; pow_payload: PowProofRequest; token: string; } export interface PasswordResetConfirmResponse { user_id: number; } export interface PasswordResetRequest { email: string; pow_payload: PowProofRequest; } export interface PasswordResetResponse { /** @minimum 0 */ expires_in_secs: number; } export interface PatchApplyBody { base: string; patch: string; } export interface PatchDto { content: string; size: number; } export interface PathLastUpdated { commit_id: string; last_updated: number; object_type: number; path: string; } export interface PathLogEntryDto { author: string; date: string; path: string; short_sha: string; subject: string; } export interface PermissionCheck { allowed: boolean; matched_by: string; organization_version: number; reason: string; } export interface PinCmd { pinned: boolean; } export interface PinDto { board_id: string; created_at: string; id: string; /** @nullable */ issue_id?: string | null; pin_order: number; } export interface PinPath { board_id: string; pin_id: string; space_name: string; } export interface PresenceDto { activities: unknown; /** @nullable */ last_seen_at?: string | null; online: boolean; status: PresenceStatus; user?: null | UserDto; user_id: number; } export interface ProfileDetailDto { /** @nullable */ accent_color?: string | null; avatar_url: string; /** @nullable */ banner_url?: string | null; /** @nullable */ bio?: string | null; /** @nullable */ company?: string | null; display_name: string; /** @nullable */ location?: string | null; /** @nullable */ pronouns?: string | null; /** @nullable */ real_name?: string | null; /** @nullable */ show_activity?: boolean | null; /** @nullable */ show_email?: boolean | null; /** @nullable */ show_location?: boolean | null; /** @nullable */ show_real_name?: boolean | null; updated_at: string; user_id: number; username: string; visibility?: null | ProfileVisibility; /** @nullable */ website?: string | null; } export interface PruneResultDto { reachable: number; total: number; unreachable: number; } export interface PullAssigneeDto { created_at: string; id: string; user?: null | UserDto; } export interface PullChecksDto { head_sha: string; statuses: CommitStatusDto[]; } /** * 线程视图:顶层评论 + 其下全部回复(无递归,便于文档生成)。 */ export interface PullCommentThreadDto { replies: PullCommentDto[]; root: PullCommentDto; } export interface PullEventDto { actor?: null | UserDto; /** @nullable */ commit_sha?: string | null; /** @nullable */ content?: string | null; created_at: string; event_type: string; id: string; pull_request_id: string; } export interface PullGateDto { conflicts: string[]; gate: MergeGateDto; head_sha: string; mergeable: boolean; pending_review_requests: number; } export interface PullReviewDto { /** @minimum 0 */ comment_count: number; commit_sha: string; /** @nullable */ content?: string | null; created_at: string; id: string; official: boolean; pull_request_id: string; state: ReviewState; /** @nullable */ updated_at?: string | null; user?: null | UserDto; } export interface PullReviewerDto { created_at: string; id: string; requested_by?: null | UserDto; required: boolean; /** @nullable */ review_id?: string | null; state: ReviewerState; /** @nullable */ updated_at?: string | null; user?: null | UserDto; } export type PullSort = "number" | "created" | "updated"; /** * 前端注册 Service Worker 所需的公开参数。 * * 只有公钥是公开的(它就是浏览器 `applicationServerKey` 要的东西),私钥永远 * 不出现在任何响应里。`enabled=false` 时前端把整个"系统通知"开关藏起来, * 而不是让用户点了才发现服务端没开。 */ export interface PushConfigDto { enabled: boolean; public_key: string; } export interface PushResultDto { pushed: string[]; rejected: string[]; } export interface PushSubscriptionDto { created_at: string; endpoint: string; id: string; platform: PushSubscriptionPlatform; /** @nullable */ updated_at?: string | null; /** @nullable */ user_agent?: string | null; } export interface RawDownloadDto { id: string; is_lfs_pointer: boolean; size: number; } export interface ReactionCmd { emoji: string; } export interface ReactionDto { created_at: string; emoji: string; id: string; scope: ReactionScope; target_id: string; user?: null | UserDto; } export interface ReactionPath { board_id: string; issue_id: string; reaction_id: string; space_name: string; } export interface ReactionUserDto { created_at: string; emoji: string; user: UserDto; } export interface ReasonBody { /** @nullable */ reason?: string | null; } export interface RecentMentionDto { channel_id: string; created_at: string; id: string; message_id: string; } export interface RecoveryCodesResp { codes: string[]; /** @minimum 0 */ total: number; /** @minimum 0 */ used: number; } export interface RedeemInviteBody { token: string; } export interface RedeemInviteResponse { joined: boolean; member_id: string; organization_id: string; } export interface RegenerateRecoveryCodesCmd { password: string; } export interface RegisterCodeRequest { email: string; pow_payload: PowProofRequest; } export interface RegisterCodeResponse { /** @minimum 0 */ expires_in_secs: number; } export interface ReleaseDto { /** @nullable */ content?: string | null; created_at: string; id: string; is_draft: boolean; is_prerelease: boolean; num_commits: number; publisher?: null | UserDto; publisher_name: string; repo_id: string; sha: string; tag_name: string; target: string; title: string; updated_at: string; } export interface ReminderDto { created_at: string; id: string; message_id: string; /** @nullable */ message_preview?: string | null; /** @nullable */ note?: string | null; remind_at: string; room_id: string; status: ReminderStatus; } export interface RemoteAddBody { url: string; } export interface RemoteAuthDto { /** @nullable */ token?: string | null; /** @nullable */ username?: string | null; } export interface RemoteDto { /** @nullable */ fetch_url?: string | null; name: string; /** @nullable */ push_url?: string | null; } export interface RemoteFetchBody { auth?: null | RemoteAuthDto; remote: string; } export interface RemoteImportBody { auth?: null | RemoteAuthDto; url: string; } export interface RemotePushBody { auth?: null | RemoteAuthDto; /** @nullable */ refspec?: string | null; remote: string; } export interface RenameBranchCmd { new_name: string; } export interface RepairDirResp { fixed: number; scanned: number; } export interface RepoDto { /** 是否允许在本仓库创建合并请求(关闭后页签隐藏、接口拒绝)。 */ allow_pull_requests: boolean; /** @nullable */ archived_at?: string | null; /** @nullable */ avatar_url?: string | null; branches_count: number; commits_count: number; created_at: string; default_branch: string; /** @nullable */ description?: string | null; enable_lfs: boolean; git_size: number; /** @nullable */ http_clone_url?: string | null; id: string; is_archived: boolean; is_private: boolean; /** @nullable */ last_pushed_at?: string | null; lfs_size: number; /** @nullable */ license_name?: string | null; me?: null | RepoMeDto; name: string; object_format: string; /** @nullable */ primary_language?: string | null; pulls_count: number; size: number; /** @nullable */ ssh_clone_url?: string | null; stars_count: number; /** @nullable */ storage_limit_size?: number | null; /** 中间页签顺序;空数组 = 默认顺序。 */ tab_order: string[]; tags_count: number; updated_at: string; watchers_count: number; /** @nullable */ website?: string | null; } export interface RepoRelDto { created_at: string; id: string; issue_id: string; repo_id: string; } export interface RepoRelPath { board_id: string; issue_id: string; rel_id: string; space_name: string; } export type RepoSort = "created_at" | "updated_at" | "stars" | "name"; export interface RepoStarDto { created_at: string; repo_id: string; user_id: number; } export interface RepoStarResp { stars: number; } export interface RepoSummaryDto { /** @nullable */ avatar_url?: string | null; default_branch: string; /** @nullable */ description?: string | null; id: string; is_archived: boolean; is_private: boolean; /** @nullable */ license_name?: string | null; name: string; /** @nullable */ primary_language?: string | null; size: number; stars_count: number; updated_at: string; watchers_count: number; } export interface RepoWatchDto { created_at: string; mode: WatchMode; repo_id: string; updated_at: string; user_id: number; } export interface ReportDto { created_at: string; /** @nullable */ evidence?: string | null; id: string; reason: string; reported_id: number; status: ReportStatus; } export interface RequestReviewersCmd { /** 是否计入必需审批人数。 */ required?: boolean; /** 用户名或 UUID。 */ reviewers: string[]; } export type ReviewIntent = "approve" | "request_changes" | "comment" | "pending"; export interface RoleSummary { /** @nullable */ color?: string | null; created_at: string; default_role: boolean; /** @nullable */ description?: string | null; /** @nullable */ emoji?: string | null; /** @nullable */ icon_hash?: string | null; id: string; key: string; member_count: number; name: string; organization_id: string; permissions: PermissionGrant[]; position: number; rank: number; self_assignable: boolean; system: boolean; updated_at: string; version: number; } export interface RoomBriefDto { created_at: string; /** @nullable */ dir_id?: string | null; favorite: boolean; hidden: boolean; id: string; is_private: boolean; kind: RoomKind; /** @nullable */ last_message_id?: string | null; member_count: number; muted: boolean; name: string; nsfw: boolean; owner?: null | UserDto; owner_id: number; /** @nullable */ parent_id?: string | null; position: number; /** @nullable */ rate_limit_per_user?: number | null; /** @nullable */ space_id?: string | null; /** @nullable */ topic?: string | null; unread_count: number; unread_mentions: number; } export interface RoomDto { created_at: string; /** @nullable */ dir_id?: string | null; id: string; is_active: boolean; is_private: boolean; kind: RoomKind; name: string; nsfw: boolean; owner_id: number; /** @nullable */ parent_id?: string | null; position: number; /** @nullable */ rate_limit_per_user?: number | null; /** @nullable */ space_id?: string | null; /** @nullable */ topic?: string | null; updated_at: string; /** @nullable */ user_limit?: number | null; } export interface RoomSettingDto { favorite: boolean; hidden: boolean; /** @nullable */ mute_until?: string | null; muted: boolean; notification_level: RoomNotificationLevel; room_id: string; } export interface SaveMessageCmd { channel_id: string; message_id: string; } export interface SavedMessageDto { channel_id: string; id: string; message_id: string; saved_at: string; } export interface ScriptOutputDto { exit_code: number; stderr: string; stdout: string; } export interface SendMessageCmd { attachments?: string[]; content?: string; /** @nullable */ forwarded_from?: string | null; /** * client-generated idempotency key, unique per room; retrying with the * same nonce returns the original message instead of duplicating * @nullable */ nonce?: string | null; /** @nullable */ reply_to_id?: string | null; thread_broadcast?: boolean; /** @nullable */ thread_id?: string | null; urgent?: boolean; } export interface SessionDto { /** @nullable */ client_ip_hash?: string | null; created_at: string; /** @nullable */ device_id?: string | null; expires_at: string; id: string; is_current: boolean; is_revoked: boolean; kind: SessionKind; last_seen_at: string; /** @nullable */ revoked_at?: string | null; /** @nullable */ user_agent_hash?: string | null; } export interface SetCleanupVisibilityCmd { is_private: boolean; } export interface SetCommitStatusCmd { context: string; /** @nullable */ description?: string | null; sha: string; state: CommitStatusDtoState; /** @nullable */ target_url?: string | null; } export interface SetMemberRoleBody { expected_version?: number; role: SpaceMemberRole; } export interface SetOverwriteCmd { allow_mask: number; deny_mask: number; } export interface SetPresenceCmd { activities?: unknown; status: PresenceStatus; } export interface SetRepoArchivedCmd { archived: boolean; } export interface SetRolePermissionsBody { permissions?: PermissionGrant[]; } export interface SpaceImageDto { /** @minimum 0 */ bytes: number; format: AvatarFormat; /** @nullable */ height?: number | null; kind: SpaceImageKind; space_id: string; updated_at: string; url: string; /** @nullable */ width?: number | null; } /** * Banner geometry is recorded, not inferred: the browser knows the intrinsic * size for free, the server would have to decode the image to learn it. */ export interface SpaceImageUploadQuery { /** @nullable */ height?: number | null; /** @nullable */ width?: number | null; } export interface SpaceInvitePath { invite_id: string; space_name: string; } export interface SpaceMemberPath { member_id: string; space_name: string; } export interface SpacePath { space_name: string; } export interface SpaceReadStates { items: ReadStateDto[]; } export interface SpaceRolePath { role_id: string; space_name: string; } export interface SshKeyAddRequest { /** @nullable */ description?: string | null; /** @nullable */ expires_at?: string | null; name: string; public_key: string; } export interface SshKeySummary { algorithm: SshKeyAlgorithm; created_at: string; /** @nullable */ description?: string | null; /** @nullable */ expires_at?: string | null; fingerprint: string; id: string; /** @nullable */ last_used_at?: string | null; name: string; public_key: string; /** @nullable */ revoked_at?: string | null; } export interface StargazerDto { avatar_url: string; display_name: string; starred_at: string; user_id: number; username: string; } export interface StopwatchDto { /** @nullable */ created_at?: string | null; /** @nullable */ id?: string | null; issue_id: string; running: boolean; /** @nullable */ started_at?: string | null; user?: null | UserDto; } export interface StopwatchPath { board_id: string; issue_id: string; space_name: string; } export interface SubmitReviewCmd { /** @nullable */ body?: string | null; comments?: InlineDraft[]; state: ReviewIntent; } export interface SubmoduleDto { /** @nullable */ branch?: string | null; /** @nullable */ commit_sha?: string | null; path: string; url: string; } export interface SuspensionDto { created_at: string; /** @nullable */ ends_at?: string | null; id: string; /** @nullable */ reason?: string | null; /** @nullable */ revoked_at?: string | null; starts_at: string; suspension_type: SuspensionType; } export interface TagDto { /** @nullable */ created_at?: string | null; /** @nullable */ message?: string | null; name: string; tag_type: TagType; /** @nullable */ tagger_email?: string | null; /** @nullable */ tagger_name?: string | null; target_sha: string; } export interface TagPolicyDto { created_at: string; id: string; name_pattern: string; repo_id: string; updated_at: string; } export interface TagWhitelistDto { policy_id: string; user?: null | UserDto; user_id: number; } export interface ThreadDto { archived: boolean; created_at: string; id: string; /** @nullable */ last_reply_at?: string | null; /** @nullable */ last_reply_id?: string | null; locked: boolean; /** @nullable */ name?: string | null; owner?: null | UserDto; owner_id: number; participant_count: number; reply_count: number; room_id: string; root_message_id: string; updated_at: string; } export type ThreadNotifyLevel = "None" | "All"; export interface ThreadMemberCmd { notify_level?: null | ThreadNotifyLevel; } export interface TopicDto { created_at: string; id: string; name: string; updated_at: string; } export interface TopicRepoDto { is_private: boolean; repo_id: string; repo_name: string; space_name: string; } export interface TotpCodeCmd { code: string; } export interface TotpEnableCmd { code: string; password: string; } export interface TotpSetupResp { otpauth_uri: string; secret: string; } export interface TotpStatusResp { enabled: boolean; } export interface TrackedTimeDto { created_at: string; id: string; issue_id: string; seconds: number; user?: null | UserDto; } export interface TrackedTimeIdPath { board_id: string; issue_id: string; space_name: string; time_id: string; } export interface TrackedTimePath { board_id: string; issue_id: string; space_name: string; } export interface TransferBody { target_user_id: number; } export type TreeView = "entries" | "last_updated"; export interface UnreadCountResp { /** @minimum 0 */ count: number; } /** * 封禁更新:原因、到期时间与四个放行位。缺失表示不变,null 表示清空。 */ export interface UpdateBanBody { /** @nullable */ allow_agent_join?: boolean | null; /** @nullable */ allow_comment_any?: boolean | null; /** @nullable */ allow_push_repo?: boolean | null; /** @nullable */ allow_speak?: boolean | null; /** @nullable */ expires_at?: string | null; /** @nullable */ reason?: string | null; } export interface UpdateBoardCmd { /** @nullable */ description?: string | null; /** @nullable */ icon?: string | null; /** @nullable */ name?: string | null; /** @nullable */ prefix?: string | null; } export interface UpdateBookmarkCmd { /** @nullable */ emoji?: string | null; /** @nullable */ position?: number | null; /** @nullable */ title?: string | null; /** @nullable */ url?: string | null; } export interface UpdateBranchDto { pull: PullDto; result: MergeResultDto; } /** * 分支保护策略的更新请求(三态字段语义与其它 PATCH 一致)。 */ export interface UpdateBranchPolicyCmd { /** @nullable */ block_on_change_requested_reviews?: boolean | null; /** @nullable */ block_on_outdated_branch?: boolean | null; /** @nullable */ block_on_rejected_reviews?: boolean | null; /** @nullable */ branch_pattern?: string | null; /** @nullable */ dismiss_stale_approvals?: boolean | null; /** @nullable */ enable_approvals_whitelist?: boolean | null; /** @nullable */ enable_force_push?: boolean | null; /** @nullable */ enable_merge_whitelist?: boolean | null; /** @nullable */ enable_push?: boolean | null; /** @nullable */ enable_push_whitelist?: boolean | null; /** @nullable */ protected_file_patterns?: string | null; /** @nullable */ require_signed_commits?: boolean | null; /** @nullable */ required_approvals?: number | null; /** @nullable */ required_status_contexts?: string | null; /** @nullable */ unprotected_file_patterns?: string | null; } export interface UpdateCodeCommentCmd { body: string; } export interface UpdateCommentCmd { content: string; } export interface UpdateDirCmd { name: string; } export interface UpdateGroupCmd { /** @nullable */ color?: string | null; /** @nullable */ icon_hash?: string | null; /** @nullable */ name?: string | null; /** @nullable */ permissions?: string[] | null; /** @nullable */ position?: number | null; /** @nullable */ unicode_emoji?: string | null; } export interface UpdateIssueCmd { /** @nullable */ assignee_ids?: number[] | null; /** @nullable */ content?: string | null; /** @nullable */ description?: string | null; /** @nullable */ due_at?: string | null; /** @nullable */ label_ids?: string[] | null; /** @nullable */ milestone_id?: string | null; priority?: null | IssuePriority; /** @nullable */ title?: string | null; } export interface UpdateIssueUserCmd { /** @nullable */ is_read?: boolean | null; } export interface UpdateJoinRuleCmd { /** @nullable */ enabled?: boolean | null; /** @nullable */ matcher?: string | null; } export interface UpdateLabelCmd { /** @nullable */ color?: string | null; /** @nullable */ description?: string | null; /** @nullable */ exclusive?: boolean | null; /** @nullable */ exclusive_order?: number | null; /** @nullable */ is_archived?: boolean | null; /** @nullable */ name?: string | null; } /** * 会籍更新:管理端可改别名、通知偏好、免打扰与封禁附加信息。 * 所有字段缺失表示不变,显式 null 表示清空(仅限 Option 字段)。 */ export interface UpdateMemberBody { /** @nullable */ alias_avatar_url?: string | null; /** @nullable */ alias_name?: string | null; expected_version?: number; /** @nullable */ hide_muted_channels?: boolean | null; message_notifications?: null | MessageNotifications; /** @nullable */ mobile_push?: boolean | null; /** @nullable */ mute_until?: string | null; /** @nullable */ muted?: boolean | null; /** @nullable */ suppress_everyone?: boolean | null; /** @nullable */ suppress_roles?: boolean | null; } export interface UpdateMessageCmd { content: string; } export interface UpdateMilestoneCmd { /** @nullable */ description?: string | null; /** @nullable */ due_at?: string | null; /** @nullable */ is_closed?: boolean | null; /** @nullable */ name?: string | null; } export interface UpdateOrganizationBody { /** @nullable */ allow_invite?: boolean | null; /** @nullable */ allow_join?: boolean | null; /** @nullable */ allow_join_level?: number | null; /** @nullable */ avatar_url?: string | null; /** @nullable */ description?: string | null; expected_version?: number; join_policy?: null | SpaceJoinPolicy; /** @nullable */ member_must_enable_2fa?: boolean | null; /** @nullable */ name?: string | null; /** @nullable */ require_email_verified?: boolean | null; /** @nullable */ require_mfa?: boolean | null; /** @nullable */ welcome_message?: string | null; } export interface UpdateOutboundWebhookCmd { /** @nullable */ disabled?: boolean | null; /** @nullable */ name?: string | null; /** @nullable */ url?: string | null; } export interface UpdatePinCmd { pin_order: number; } export interface UpdatePreferencesCmd { allow_dms_from?: null | Audience; allow_mentions_from?: null | Audience; /** @nullable */ board_view_mode?: string | null; /** @nullable */ diff_view_style?: string | null; /** @nullable */ email_digest?: boolean | null; /** @nullable */ email_flags?: number | null; /** @nullable */ in_app_flags?: number | null; /** * 三态:缺省不动、`null` 清除、给值设置(与 `lib/webapi/src/openapi.rs` * 声明的 PATCH 语义一致)。 * @nullable */ mute_until?: string | null; /** @nullable */ push_flags?: number | null; /** @nullable */ show_online_status?: boolean | null; /** @nullable */ theme_mode?: string | null; } export interface UpdateProfileCmd { /** @nullable */ bio?: string | null; /** @nullable */ company?: string | null; /** @nullable */ date_of_birth?: string | null; /** @nullable */ display_name?: string | null; /** @nullable */ language?: string | null; /** @nullable */ locale?: string | null; /** @nullable */ location?: string | null; /** @nullable */ pronouns?: string | null; /** @nullable */ real_name?: string | null; /** @nullable */ show_activity?: boolean | null; /** @nullable */ show_email?: boolean | null; /** @nullable */ show_location?: boolean | null; /** @nullable */ show_real_name?: boolean | null; /** @nullable */ timezone?: string | null; visibility?: null | ProfileVisibility; /** @nullable */ website?: string | null; } export interface UpdatePullCmd { /** @nullable */ auto_merge?: boolean | null; /** @nullable */ base_branch?: string | null; /** @nullable */ body?: string | null; /** @nullable */ draft?: boolean | null; /** @nullable */ issue_id?: string | null; /** @nullable */ title?: string | null; } export interface UpdatePullCommentCmd { body: string; } export interface UpdateRefResultDto { name: string; new_oid: string; /** @nullable */ old_oid?: string | null; protected: boolean; } export interface UpdateReleaseCmd { /** @nullable */ content?: string | null; /** @nullable */ is_draft?: boolean | null; /** @nullable */ is_prerelease?: boolean | null; /** @nullable */ title?: string | null; } export interface UpdateReminderCmd { /** @nullable */ note?: string | null; /** @nullable */ remind_at?: string | null; } export interface UpdateRepoCmd { /** @nullable */ allow_pull_requests?: boolean | null; /** @nullable */ default_branch?: string | null; /** @nullable */ description?: string | null; /** @nullable */ enable_lfs?: boolean | null; /** @nullable */ is_private?: boolean | null; /** * 中间页签顺序;传空数组恢复默认顺序。 * @nullable */ tab_order?: string[] | null; /** @nullable */ website?: string | null; } export interface UpdateRoleBody { /** @nullable */ default_role?: boolean | null; /** @nullable */ description?: string | null; expected_version?: number; /** @nullable */ name?: string | null; /** @nullable */ rank?: number | null; /** @nullable */ self_assignable?: boolean | null; } export interface UpdateRoomCmd { /** @nullable */ is_private?: boolean | null; /** @nullable */ name?: string | null; /** @nullable */ nsfw?: boolean | null; /** * Move the room under another directory node of the same space; `null` puts * it back at the space root. Absent means "leave the parent alone". * @nullable */ parent_id?: string | null; /** @nullable */ position?: number | null; /** @nullable */ rate_limit_per_user?: number | null; /** @nullable */ topic?: string | null; } export interface UpdateRoomSettingCmd { /** @nullable */ favorite?: boolean | null; /** @nullable */ hidden?: boolean | null; /** @nullable */ mute_minutes?: number | null; /** @nullable */ muted?: boolean | null; notification_level?: null | RoomNotificationLevel; } export interface UpdateTagPolicyCmd { /** @nullable */ name_pattern?: string | null; } export interface UpdateThreadCmd { /** @nullable */ archived?: boolean | null; /** @nullable */ locked?: boolean | null; /** @nullable */ name?: string | null; } export interface UpdateTrackedTimeCmd { seconds: number; } export interface UpdateUsernameCmd { username: string; } export interface UpdateWebhookCmd { /** @nullable */ disabled?: boolean | null; /** @nullable */ name?: string | null; } export interface UploadEmojiCmd { animated?: boolean; content_type: string; data_base64: string; name: string; } export interface UploadIntentDto { /** @minimum 0 */ expires_secs: number; id: string; upload_url: string; } export interface UpsertDraftCmd { content: string; /** @nullable */ thread_id?: string | null; } export interface UpsertLicenseCmd { body: string; /** @nullable */ description?: string | null; display_name: string; /** @nullable */ url?: string | null; } export interface UpsertMemeCmd { content_type: string; /** @nullable */ height?: number | null; name: string; size: number; url: string; /** @nullable */ width?: number | null; } export interface UpsertPushCmd { auth_key: string; endpoint: string; p256dh_key: string; platform: PushSubscriptionPlatform; /** @nullable */ user_agent?: string | null; } export interface UpsertWatchCmd { mode: WatchMode; } export interface UserLoginRequest { identity: string; password_hash: string; pow_payload: PowProofRequest; } export interface UserLoginResponse { /** @nullable */ challenge?: string | null; /** @nullable */ displayname?: string | null; mfa_required: boolean; user_id: number; username: string; } export interface UserOverwriteDto { allow_mask: number; deny_mask: number; dir_id: string; user?: null | UserDto; user_id: number; } export interface UserPreferencesDto { allow_dms_from: Audience; allow_mentions_from: Audience; /** Default view for the 问题集 page: `board` or `list`. */ board_view_mode: string; /** @nullable */ diff_view_style?: string | null; email_digest: boolean; email_flags: number; in_app_flags: number; /** @nullable */ mute_until?: string | null; push_flags: number; show_online_status: boolean; theme_mode: string; } export interface UserPublic { avatar_url: string; display_name: string; user_id: number; username: string; } export interface UserRegisterRequest { birth_date: string; /** @nullable */ displayname?: string | null; email: string; email_code: string; password_hash: string; pow_payload: PowProofRequest; username: string; } export interface UserRegisterResponse { /** @nullable */ displayname?: string | null; user_id: number; username: string; } export interface UserReportDto { created_at: string; /** @nullable */ evidence?: string | null; id: string; reason: string; reported_id: number; /** @nullable */ resolution_note?: string | null; status: ReportStatus; updated_at: string; } export interface VerifyResultDto { /** @nullable */ error_message?: string | null; /** @nullable */ key_id?: string | null; signed: boolean; /** @nullable */ signer?: string | null; valid: boolean; } export interface VoiceConfigDto { enabled: boolean; recording_enabled: boolean; url: string; } export interface VoiceHandsDto { can_moderate: boolean; hands: HandDto[]; my_state?: null | HandState; } /** * key 为参与者用户 id。 */ export type VoiceLayoutDtoTiles = { [key: string]: VoiceTileDto }; export interface VoiceLayoutDto { /** key 为参与者用户 id。 */ tiles?: VoiceLayoutDtoTiles; } /** * 需要新增或覆盖的窗口(key = 参与者用户 id)。 */ export type VoiceLayoutPatchDtoTiles = { [key: string]: VoiceTileDto }; /** * 布局写入是**按 key 合并**的补丁而不是整表替换:每个客户端只提交自己刚拖的 * 那一格,收回的格子里列在 `removed`,两个人同时摆不同窗口互不吞没。 */ export interface VoiceLayoutPatchDto { /** 需要收回自动网格的窗口 key。 */ removed?: string[]; /** 需要新增或覆盖的窗口(key = 参与者用户 id)。 */ tiles?: VoiceLayoutPatchDtoTiles; } /** * 本次写入的服务端时刻,客户端用它给本地副本盖戳。 */ export interface VoiceLayoutSavedDto { updated_at: number; } export interface VoiceModerationDto { action: string; ok: boolean; user_id: number; } /** * 房间参与者快照。 * * 权威来源是 LiveKit 的 list_participants,Redis 只补主持人静音等本地状态; * 这是「谁在这个频道里」的服务端视图,用于侧栏人数与未加入时的预览。 * 会中界面的发言高亮、静音图标与画面轨道一律直接读浏览器里的 Room, * 因为本接口不是事件流,返回值天然是快照。 */ export interface VoiceParticipantDto { /** @nullable */ avatar_url?: string | null; can_publish: boolean; display_name: string; joined_at: number; moderator_muted: boolean; /** * 快照值:list_participants 不返回发言状态,因此这里恒为 false; * 实时发言指示由前端从 Room 的 activeSpeakers 读取。 */ speaking: boolean; tracks: VoiceTrackDto[]; user_id: number; } export interface VoiceRecordingDto { active: boolean; egress_id: string; } export interface VoiceSpaceStatesDto { rooms: VoiceRoomStateDto[]; } export interface VoiceTokenDto { can_publish: boolean; /** @minimum 0 */ expires_in_secs: number; hand_state?: null | HandState; is_stage: boolean; room_name: string; token: string; url: string; } export interface WatchDto { created_at: string; id: string; /** @nullable */ issue_id?: string | null; mode: WatchMode; /** @nullable */ updated_at?: string | null; user?: null | UserDto; } export interface WatchPath { board_id: string; issue_id: string; space_name: string; } export interface WatcherDto { avatar_url: string; display_name: string; mode: WatchMode; user_id: number; username: string; watching_since: string; } export interface WebhookDto { created_at: string; disabled: boolean; id: string; /** @nullable */ last_used_at?: string | null; name: string; room_id: string; } export interface WebhookPostCmd { content?: string; /** @nullable */ nonce?: string | null; /** @nullable */ thread_id?: string | null; } export interface WebhookSecretDto { created_at: string; disabled: boolean; id: string; name: string; room_id: string; token: string; } export interface WriteBlobBody { data: string; } export interface WriteObjectResultDto { id: string; } export interface WriteTreeBody { files: FileEntryDto[]; } export type AuthSshKeyListParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type DownloadAttachmentParams = { variant?: null | ImageVariant; }; export type ListDmsParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListBookmarksParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type GetDraftParams = { /** * @nullable */ thread_id?: string | null; }; export type DeleteDraftParams = { /** * thread scope */ thread_id?: string; }; export type ListMessagesParams = { /** * @nullable */ before_seq?: number | null; /** * @nullable */ after_seq?: number | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; /** * @nullable */ thread_id?: string | null; /** * @nullable */ author_id?: number | null; }; export type ListThreadsParams = { /** * @nullable */ archived?: boolean | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ModerateMuteParams = { /** * false to unmute */ muted?: boolean; }; export type ListWebhooksParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListEmojisParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListMyThreadsParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListBoardsParams = { /** * @nullable */ dir_id?: string | null; /** * @nullable */ q?: string | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListIssuesParams = { state?: null | IssueState; /** * @nullable */ author_id?: number | null; /** * One id or a comma-separated id list (`a,b`); `none` matches issues * without a milestone. Any of the listed values matches. * @nullable */ milestone_id?: string | null; /** * One id or a comma-separated id list (`a,b`); matches any of them. * @nullable */ label_id?: string | null; /** * One id or a comma-separated id list (`a,b`); matches any of them. * @nullable */ assignee_id?: string | null; /** * One priority or a comma-separated list (`high,urgent`). * @nullable */ priority?: string | null; sort?: null | IssueSort; order?: null | SortOrder; /** * @nullable */ q?: string | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListCommentsParams = { /** * @nullable */ parent_id?: string | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; sort?: null | CommentSort; order?: null | SortOrder; }; export type RemoveCommentReactionParams = { emoji: string; }; export type ListEventsParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListContentHistoryParams = { /** * @nullable */ comment_id?: string | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListIssueMembersParams = { kind?: null | IssueMemberKind; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type RemoveIssueReactionParams = { emoji: string; }; export type ListTrackedTimeParams = { /** * @nullable */ user_id?: number | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListIssueUsersParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListLabelsParams = { /** * @nullable */ q?: string | null; /** * @nullable */ is_archived?: boolean | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListMilestonesParams = { /** * @nullable */ is_closed?: boolean | null; /** * @nullable */ q?: string | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListLicensesParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListDevicesParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListMemesParams = { /** * @minimum 0 * @nullable */ limit?: number | null; }; export type ListSavedMessagesParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListNotificationsParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; type?: null | NotificationType; /** * @nullable */ unread?: boolean | null; }; export type ListPushSubscriptionsParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type RecentMentionsParams = { /** * @minimum 0 * @nullable */ limit?: number | null; }; export type MyReportsParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListSessionsParams = { kind?: null | SessionKind; /** * @nullable */ include_revoked?: boolean | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type MySpacesParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type MySuspensionsParams = { /** * @nullable */ include_revoked?: boolean | null; /** * @nullable */ active?: boolean | null; }; export type ListMyPullsParams = { /** * open | closed | merged | all * @nullable */ state?: string | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListReposParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; sort?: null | RepoSort; order?: null | SortOrder; }; export type CodeActivityParams = { /** * @nullable */ branch?: string | null; }; export type GetArchiveParams = { /** * archive format */ format: string; /** * path filter */ path_filter?: string; }; export type BlameParams = { revision: string; path: string; /** * @minimum 0 * @nullable */ range_start?: number | null; /** * @minimum 0 * @nullable */ range_end?: number | null; }; export type ListBranchesParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type DeleteBranchParams = { /** * @nullable */ force?: boolean | null; }; export type ListCodeCommentsParams = { /** * @nullable */ path?: string | null; /** * @nullable */ revision?: string | null; /** * @nullable */ resolved?: boolean | null; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListCommitsParams = { /** * start revision */ revision?: string; /** * path filter */ path?: string; /** * max commits per page (1-100) * @minimum 0 */ limit?: number; /** * skip commits before returning (max 5000) * @minimum 0 */ offset?: number; /** * since date */ since?: string; /** * until date */ until?: string; /** * first parent only */ first_parent: boolean; }; export type IsAncestorParams = { ancestor: string; descendant: string; }; export type CommitStatsParams = { revision: string; /** * @nullable */ path?: string | null; }; export type GetConflictsParams = { base: string; head: string; /** * @nullable */ ancestor?: string | null; }; export type ConflictDetailParams = { base: string; head: string; path: string; }; export type GetDiffParams = { base: string; head: string; view?: DiffView; use_merge_base?: boolean; }; export type RangeDiffParams = { from: string; to: string; /** * @nullable */ base?: string | null; }; export type DiffRawParams = { base: string; head: string; }; export type ListLfsPointersParams = { revision: string; /** * @minimum 0 * @nullable */ limit?: number | null; }; export type ListLocksParams = { /** * @nullable */ cursor?: string | null; /** * @minimum 0 * @nullable */ limit?: number | null; }; export type UnlockParams = { path: string; /** * @nullable */ force?: boolean | null; }; export type VerifyLocksParams = { /** * @minimum 0 * @nullable */ limit?: number | null; }; export type UnlockByIdParams = { /** * @nullable */ force?: boolean | null; }; export type PatchGenerateParams = { base: string; head: string; }; export type PathLogParams = { commit_hash: string; target_dir: string; }; export type ListPullsParams = { /** * open | closed | merged | all * @nullable */ state?: string | null; /** * @nullable */ author?: string | null; /** * @nullable */ base?: string | null; /** * @nullable */ head?: string | null; /** * @nullable */ draft?: boolean | null; /** * @nullable */ search?: string | null; sort?: null | PullSort; order?: null | SortOrder; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListPullCommentsParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListPullEventsParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListReleasesParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; /** * 仅返回草稿(true)或仅返回已发布(false);缺省返回全部。 * @nullable */ draft?: boolean | null; }; export type ListStargazersParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type SubmoduleListParams = { revision: string; }; export type SubmoduleResolveParams = { revision: string; path: string; }; export type ListTagsParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type GetTreeParams = { path?: string; recurse?: boolean; resolve?: boolean; show_trees?: boolean; view?: null | TreeView; }; export type ListWatchersParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; mode?: null | WatchMode; }; export type SpaceListParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; /** * @nullable */ include_archived?: boolean | null; }; export type ExploreSpacesParams = { /** * @nullable */ q?: string | null; sort?: null | ExploreSort; order?: null | SortOrder; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type SpaceDeleteParams = { /** * 是否连成员一并清理 */ force?: boolean; /** * 删除原因,最长 512 字符 */ reason?: string; }; export type SpaceBanListParams = { /** * 每页条数,默认 20,最多 100 * @minimum 0 */ limit?: number; /** * 跳过条数,最多 5000 * @minimum 0 */ offset?: number; }; export type GetSpaceDirTreeParams = { /** * @nullable */ parent_id?: string | null; }; export type ListGroupsParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type UploadSpaceImageParams = { /** * @nullable */ width?: number | null; /** * @nullable */ height?: number | null; }; export type GetSpaceImageFileParams = { variant?: null | ImageVariant; }; export type SpaceInviteListParams = { /** * 每页条数,默认 20,最多 100 * @minimum 0 */ limit?: number; /** * 跳过条数,最多 5000 * @minimum 0 */ offset?: number; /** * 包含已撤销邀请 */ include_revoked?: boolean; }; export type ListJoinRequestsParams = { status?: null | SpaceJoinRequestState; /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type SpaceMemberListParams = { /** * 每页条数,默认 20,最多 100 * @minimum 0 */ limit?: number; /** * 跳过条数,最多 5000 * @minimum 0 */ offset?: number; /** * 包含已退出成员 */ include_inactive?: boolean; /** * 包含已封禁成员 */ include_banned?: boolean; }; export type SpaceMemberRemoveParams = { /** * 移除原因 */ reason?: string; }; export type ListTopicsParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListReposByTopicParams = { /** * @minimum 0 * @nullable */ limit?: number | null; /** * @minimum 0 * @nullable */ offset?: number | null; }; export type ListUsersBatchParams = { ids: number[]; }; export type GetUserAvatarParams = { variant?: null | ImageVariant; };