type DefAPIParamMethod = 'get' | 'post' | 'put' | 'delete'; interface DefAPIParamsToken { client_token?: string; } interface DefApiParamsQuery extends DefAPIParamsToken { repo?: string; branch?: string; commit_id?: string; pub_env?: string; pub_status?: '2' | '3' | '4'; emp_id?: number; } interface O2RepoJoinupAppParams { air_spma?: string; air_path?: string; air_site?: number; steins?: number; trunk?: string; is_check_version_increment?: boolean; } interface O2RepoJoinupFaasParams { faas_tenant_id: number; faas_gateway_id: number; faas_prefix: string; /** * Faas 解决方案 id * * 这块没有文档,可以去 O2 Space 平台"应用接入"时的 devtool 的查看网络请求, 返回数据的 solutionList 字段有租户、解决方案信息。也可以申请他们后台权限查 * 看,https://fc-admin.fc.alibaba-inc.com/solution/list */ faas_solution_id: number; /** 如果租户类型为 oneGroup 则需要传,否则不传。上面后台里也有 oneGroup 列表,里面搜不到飞猪 */ faas_group_id?: string; /** Faas 运行时版本 */ faas_runtime?: string; } interface O2NewChangeParams { /** 新建变更时,分支在 gitlab 是否存在,'exist' | 'new' */ branch_type: 'exist' | 'new'; /** 仓库路径 `{group}/{project}` */ repo: string; /** 新建变更时,分支名 */ branch: string; /** 新建变更时,关联的 aone 任务 */ aone_binds: string[]; } interface DefApiParamsBody extends DefAPIParamsToken, Partial, Partial, Partial { /** 接入人工号(虽然看着和 user 重复了,但是不传会报错:invalid client_token or emp_id)。操作人工号不能是外包,如果需要给外包添加权限,请在user字段中添加 */ emp_id?: number; /** 仓库 group */ group?: string; /** 仓库 project */ project?: string; /** 应用描述 */ description?: string; /** 申请理由 */ reason?: string; /** 应用类型,1 assets 发布,9 tnpm 发布 3 weex,6 webapp */ pubtype?: number; /** 权限申请人工号, 如果操作人需要有权限,数组里包含下操作人 */ user?: number[]; /** 是否开启多分支 (1开始 0 不开启) */ branch_pub_mode?: number; /** 权限时长(天) */ duration?: 360; } interface DefAPIParams { token?: 'query' | 'body' | ''; post?: boolean; method?: DefAPIParamMethod; headers?: Record; options?: Record; query?: DefApiParamsQuery; body?: DefApiParamsBody; } /** O2 应用的数据结构 */ interface O2AppSchema { id: string; group: string; project: string; emp_id: string; owner_emp_id: string; description: string; pub_type: string; is_module: boolean; is_moduletrans: boolean; dev_type: number; /** 默认迭代模式: "iteration_flow",最近 O2 新推出一种主干模式 */ mode: string; pubtype_extend_path: string; /** O2 应用创建时间 */ gmt_create: string; /** O2 应用最近更新时间 */ gmt_modified: string; /** O2 应用删除时间。删除应用后,调接口还能查询到信息,不过会多一个本字段。实测删后再加入、再查无此字段,目前看来可以靠有这个字段来表示已删除状态 */ delete_time?: string; /** 删除应用人员的工号 */ delete_operator?: string; /** 删除应用人员的详细信息,包含 id,nick,account,gitlab_id,bud_id,email,gmt_create,gmt_modified 等 */ delete_operator_nickname?: Record; pubtype_group?: string; /** 仓库主干,如 "main" */ platform_code?: string; } /** O2 添加 App 接口外层数据结构 */ interface O2AppResponseData { app?: O2AppSchema; name?: string; /** 应用 id,接入应用返回数据特有 */ app_id?: string; project_id?: string; app_conf?: Record; } /** O2 变更的数据结构 */ interface O2ChangeSchema { id: number; branch: string; description?: string; /** 应用 id */ app_id: number; emp_id: string; /** 变更完成是否删除分支 */ is_delete_branch: number; aonecr_id?: string; aonecr_author?: string; aonecr_time?: string; /** 绑定的工作项 */ aone_binds?: string; /** 发布后是否自动完成工作项 */ aone_binds_autofinish?: number; is_finished?: number; is_exist?: number; endtime?: string; cr_status?: string; skip_cr?: string; /** 是否是测试变更,即不会发布线上 */ un_release?: number; /** Commit code review 模式 */ commit_mode?: boolean; gmt_create?: string; gmt_modified?: string; user?: Record; iteration?: { name: string; id: number; }; iterations?: { name: string; id: number; }[]; } /** O2 迭代的数据结构,以下为新建迭代成功的返回结果 */ interface O2IterationSchema { id: number; name: string; description: string; app_id: number; group: string; project: string; branch: string; version: string; emp_id: string; /** 2 running 进行中、3 success 已完成、 4 error 失败、5 已废弃 */ status: number; endtime: string; /** 返回有这个字段, */ envstep: unknown; gmt_modified: string; gmt_create: string; } interface O2IterationConf { /** '[1,2,4]' */ pubenv: string; id: number; /** 'beta' */ tnpm_tag: string; iteration_id: number; /** 'main' */ trunk: string; is_delete_branch: boolean; /** '*' */ air_pages: string; pkg_apps: string; changefree_id: string; changefree_executor: string; aone_binds: string; aone_binds_autofinish: boolean; is_phase_grey: number; is_pause_gitclean: unknown; is_un_release: number; gmt_create: string; gmt_modified: string; } interface O2AppIterationSchema extends O2IterationSchema { user: Record; trunk: string; lastTask?: string; iterationconf: O2IterationConf; devbranches: (O2ChangeSchema & { iteration_id: number; branch_id: number; })[]; } interface O2AppIterationsResponse { app: O2AppSchema; iterations: { iterations: O2AppIterationSchema[]; total: number; pn: number; rn: number; }; } export type { DefAPIParamMethod, DefAPIParams, DefApiParamsBody, O2AppIterationsResponse, O2AppResponseData, O2AppSchema, O2ChangeSchema, O2IterationConf, O2IterationSchema, O2RepoJoinupAppParams, O2RepoJoinupFaasParams };