Files
writer-work-flow/apps/web/lib/api/schema.d.ts
Yaojia Wang 5fb7bfb1de feat: M3 — 伏笔账本 + 节奏引擎 + 大纲(含并发记账 bugfix)
- 伏笔账本:纯函数状态机(OPEN/PARTIAL/CLOSED/OVERDUE) + ForeshadowLedger repo;验收后到期扫描(BackgroundTask 自建 session 置 OVERDUE);登记/状态变更端点
- 节奏 + 三审齐:foreshadow-analyst + pace-checker 并入 LangGraph 并行审(REVIEW_SPECS),collect 分列落 chapter_reviews(conflicts/foreshadow_sug/pace),review SSE 加 foreshadow/pace 事件
- 大纲:outliner Agent 产 OutlineResult(含 foreshadow_windows),POST /outline 逐章 upsert outline 表;GET /foreshadow?status= 看板
- 前端:伏笔四泳道看板(OVERDUE 琥珀) + 大纲编辑器(窗口徽标) + 节奏节拍图(▁▃▅) + 审稿页消费 foreshadow/pace SSE
- bugfix(T3.8):并行三审共用请求 session 记账触发 'Session is already flushing' → foreshadow/pace 静默丢失;SqlAlchemyLedgerSink.record 改 add-only(靠端点/事务 commit),加并发回归测试
- M3 E2E:真实 DB + mock 网关零 token 走通 埋设→进展→验收后扫描 OVERDUE→看板 + 大纲含窗口 + 三审齐 SSE/留痕;E2E 暴露并钉住上述 bug
- 门禁绿:mypy 111 / pytest 228(0 xfailed) / alembic 无漂移;前端 gen:api/lint/tsc/vitest 69/build
2026-06-18 14:21:17 +02:00

1356 lines
41 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* This file was auto-generated by openapi-typescript.
* Do not make direct changes to the file.
*/
export interface paths {
"/": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** Root */
get: operations["root__get"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/health": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** Health */
get: operations["health_health_get"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/jobs/{job_id}": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** Get Job */
get: operations["get_job_jobs__job_id__get"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/projects": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** List Projects */
get: operations["list_projects_projects_get"];
put?: never;
/** Create Project */
post: operations["create_project_projects_post"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/projects/{project_id}": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** Get Project */
get: operations["get_project_projects__project_id__get"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/projects/{project_id}/chapters/{chapter_no}/draft": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
/**
* Save Draft
* @description 自动保存:幂等 upsert 草稿(同章节覆盖同一行,版次不爆炸)。
*/
put: operations["save_draft_projects__project_id__chapters__chapter_no__draft_put"];
/**
* Stream Draft
* @description 流式写章草稿:组装记忆 → 网关流 → 归一为 SSE 事件 → text/event-stream。
*/
post: operations["stream_draft_projects__project_id__chapters__chapter_no__draft_post"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/projects/{project_id}/chapters/{chapter_no}/review": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
/**
* Review Chapter
* @description 续审SSE组审稿上下文 → 跑审稿子图 → 归一为 section/conflict/done 事件。
*
* 提交边界:网关 ledger + collect 经 review_repo.record 均只 flush端点在**流耗尽后**
* `await session.commit()`(镜像 draft 端点,否则记账/留痕静默丢失)。
*/
post: operations["review_chapter_projects__project_id__chapters__chapter_no__review_post"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/projects/{project_id}/chapters/{chapter_no}/reviews": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/**
* List Reviews
* @description 审稿历史(新→旧):供前端审稿页加载既往审稿留痕 + 裁决。
*/
get: operations["list_reviews_projects__project_id__chapters__chapter_no__reviews_get"];
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/projects/{project_id}/chapters/{chapter_no}/accept": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
/**
* Accept Chapter
* @description 验收事务 + 冲突 gate§5.5gate事务前→ 终稿提炼 digest事务外R2
* 单原子事务(晋升 + digest + 裁决留痕)→ 一次 commit → 登记**验收后伏笔到期扫描**
* BackgroundTaskM3-b/d§6.2)。
*
* 到期扫描接 §5.5 步骤 3 的 `TODO(M3)` 占位:验收提交成功**后**,把
* `current_ch > expected_close_to AND status≠CLOSED` 的伏笔确定性置 OVERDUE。
* 伏笔登记/回收PARTIAL/CLOSED的「采纳建议」经作者经 foreshadow 端点显式确认,
* 不在验收事务里 AI 静默改库(不变量 #3。**§7.4 持久性局限**BackgroundTask 进程内
* 跑、重启丢失——原型可接受(见 `services/foreshadow_scan.py`,不引入 jobs 表)。
*/
post: operations["accept_chapter_projects__project_id__chapters__chapter_no__accept_post"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/projects/{project_id}/foreshadow": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/**
* List Foreshadow
* @description 伏笔看板:按 `status` 过滤(缺省=全部),按 code 升序。
*
* `status` 非法(不在 OPEN/PARTIAL/CLOSED/OVERDUE→ VALIDATION 信封。四泳道前端
* 据 `status` 分组OVERDUE 泳道 + 逾期标记用 `expected_close_to`(看板字段已齐)。
*/
get: operations["list_foreshadow_projects__project_id__foreshadow_get"];
put?: never;
/**
* Register Foreshadow
* @description 登记一条伏笔status=OPEN。重复 `code` → DB 唯一约束冲突 → VALIDATION 信封。
*/
post: operations["register_foreshadow_projects__project_id__foreshadow_post"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/projects/{project_id}/foreshadow/{code}": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
post?: never;
delete?: never;
options?: never;
head?: never;
/**
* Update Foreshadow
* @description 状态机转移 和/或 追加进展。非法转移 → VALIDATION 信封;不存在 → NOT_FOUND。
*
* `to_status` 与 `progress_entry` 皆可选;两者都缺 → VALIDATION无操作。先转移、后追加。
*/
patch: operations["update_foreshadow_projects__project_id__foreshadow__code__patch"];
trace?: never;
};
"/projects/{project_id}/outline": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
/**
* Generate Outline
* @description 生成大纲并逐章持久化。无凭据 → LLM_UNAVAILABLE项目不存在 → NOT_FOUND。
*/
post: operations["generate_outline_projects__project_id__outline_post"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/settings/providers": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
/** List Providers */
get: operations["list_providers_settings_providers_get"];
/** Upsert Providers */
put: operations["upsert_providers_settings_providers_put"];
post?: never;
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
"/settings/providers/test": {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
get?: never;
put?: never;
/** Test Connection */
post: operations["test_connection_settings_providers_test_post"];
delete?: never;
options?: never;
head?: never;
patch?: never;
trace?: never;
};
}
export type webhooks = Record<string, never>;
export interface components {
schemas: {
/**
* AcceptRequest
* @description POST /projects/:id/chapters/:no/accept裁决清单 + 可能改过的终稿。
*/
AcceptRequest: {
/**
* Final Text
* @description 作者裁决/改稿后的最终验收文本
*/
final_text: string;
/**
* Decisions
* @description 对最近审稿每个冲突的裁决每冲突必有其一R5
*/
decisions?: components["schemas"]["ConflictDecision"][];
};
/**
* AcceptResponse
* @description 验收「本次将更新」清单ARCH §7.2 写回结果)。
*/
AcceptResponse: {
/**
* Project Id
* Format: uuid
*/
project_id: string;
/** Chapter No */
chapter_no: number;
/**
* Accepted Version
* @description 晋升到的 accepted 版次max+1
*/
accepted_version: number;
/**
* Digest Added
* @description 是否新增了一行 chapter_digests
*/
digest_added: boolean;
/**
* Decisions Recorded
* @description 本次写回的裁决条数
*/
decisions_recorded: number;
/**
* Review Id
* @description 写回裁决的审稿留痕行 id
*/
review_id?: string | null;
};
/**
* CapabilitiesView
* @description 探测得到的能力矩阵(镜像网关 `Capabilities`)。
*/
CapabilitiesView: {
/**
* Structured Output
* @default false
*/
structured_output: boolean;
/**
* Prefix Cache
* @default false
*/
prefix_cache: boolean;
/**
* Thinking
* @default false
*/
thinking: boolean;
};
/**
* ConflictDecision
* @description 对最近一次审稿留痕里**某个冲突**(按其在 conflicts 列表的下标定位)的裁决。
*/
ConflictDecision: {
/**
* Conflict Index
* @description 冲突在最近审稿 conflicts 列表中的下标
*/
conflict_index: number;
/**
* Verdict
* @description 采纳改法 / 忽略 / 手改
* @enum {string}
*/
verdict: "accept" | "ignore" | "manual";
/**
* Note
* @description 可选裁决备注(如手改说明)
*/
note?: string | null;
};
/**
* DraftResponse
* @description 草稿保存结果(脱敏:只回元信息 + 长度,不回灌正文以外的衍生)。
*/
DraftResponse: {
/**
* Project Id
* Format: uuid
*/
project_id: string;
/** Chapter No */
chapter_no: number;
/** Volume */
volume: number;
/** Status */
status: string;
/** Version */
version: number;
/** Length */
length: number;
};
/**
* DraftSaveRequest
* @description PUT /projects/:id/chapters/:no/draft自动保存草稿正文。
*/
DraftSaveRequest: {
/** Text */
text: string;
};
/**
* ForeshadowBoardResponse
* @description GET /projects/:id/foreshadow?status=:伏笔看板(四泳道 + OVERDUE 字段齐)。
*
* `status` 缺省返回全部;按 `code` 升序repo `list_by_status` 已排序)。前端按
* `status` 分四泳道OPEN/PARTIAL/CLOSED/OVERDUE用 `expected_close_to` 标逾期。
*/
ForeshadowBoardResponse: {
/** Foreshadow */
foreshadow?: components["schemas"]["ForeshadowView"][];
};
/**
* ForeshadowRegisterRequest
* @description POST /projects/:id/foreshadow作者显式登记一条伏笔status 落 OPEN
*/
ForeshadowRegisterRequest: {
/**
* Code
* @description 伏笔代号,`(project_id, code)` 唯一
*/
code: string;
/**
* Title
* @description 伏笔标题/一句话描述
*/
title: string;
/**
* Planted At
* @description 埋设章号
*/
planted_at?: number | null;
/**
* Content
* @description 伏笔正文/线索
*/
content?: string | null;
/**
* Expected Close From
* @description 预期回收窗口起始章
*/
expected_close_from?: number | null;
/**
* Expected Close To
* @description 预期回收窗口结束章(到期判据用)
*/
expected_close_to?: number | null;
/**
* Importance
* @description 重要度(自由文本,看板用)
*/
importance?: string | null;
};
/**
* ForeshadowTransitionRequest
* @description PATCH /projects/:id/foreshadow/:code状态机转移 和/或 追加一条进展。
*
* 两字段皆可选:`to_status` 走状态机(非法 → VALIDATION 信封);`progress_entry`
* append-only 追加到 progress JSONB。二者可同时给先转移、后追加进展
*/
ForeshadowTransitionRequest: {
/**
* To Status
* @description 目标状态OPEN/PARTIAL/CLOSED/OVERDUE
*/
to_status?: string | null;
/**
* Progress Entry
* @description 追加一条进展记录append-only不覆盖历史
*/
progress_entry?: {
[key: string]: unknown;
} | null;
};
/**
* ForeshadowView
* @description 伏笔账本视图(登记/状态变更/看板共用snake_case。形对齐 `ForeshadowLedgerView`。
*/
ForeshadowView: {
/** Code */
code: string;
/** Title */
title: string;
/** Status */
status: string;
/** Planted At */
planted_at?: number | null;
/** Content */
content?: string | null;
/** Expected Close From */
expected_close_from?: number | null;
/** Expected Close To */
expected_close_to?: number | null;
/** Importance */
importance?: string | null;
/** Links */
links?: {
[key: string]: unknown;
}[];
/** Progress */
progress?: {
[key: string]: unknown;
}[];
};
/**
* ForeshadowWindowView
* @description 单章关联的伏笔回收窗口snake_case形对齐 `ww_agents.ForeshadowWindow`)。
*/
ForeshadowWindowView: {
/** Code */
code: string;
/** Plant Chapter */
plant_chapter?: number | null;
/** Expected Close From */
expected_close_from?: number | null;
/** Expected Close To */
expected_close_to?: number | null;
};
/** HTTPValidationError */
HTTPValidationError: {
/** Detail */
detail?: components["schemas"]["ValidationError"][];
};
/**
* OutlineChapterView
* @description 单章大纲视图:章号 + 卷 + 节拍 + 伏笔窗口。
*/
OutlineChapterView: {
/** No */
no: number;
/** Volume */
volume: number;
/** Beats */
beats?: string[];
/** Foreshadow Windows */
foreshadow_windows?: components["schemas"]["ForeshadowWindowView"][];
};
/**
* OutlineGenerateRequest
* @description POST /projects/:id/outline触发大纲生成 + 持久化。
*
* M3 简单分卷:`volume` 缺省=1schema 无逐章卷号;本端点把整批章节落到同一卷)。
*/
OutlineGenerateRequest: {
/**
* Volume
* @description 本批大纲所属卷号M3 默认全卷 1
* @default 1
*/
volume: number;
};
/**
* OutlineResponse
* @description 大纲生成响应:逐章已持久化的大纲(含窗口,供前端 T3.6)。
*/
OutlineResponse: {
/** Chapters */
chapters?: components["schemas"]["OutlineChapterView"][];
};
/**
* ProjectCreateRequest
* @description POST /projects立项向导字段owner_id 由后端补 stub不入参
*/
ProjectCreateRequest: {
/** Title */
title: string;
/** Genre */
genre?: string | null;
/** Logline */
logline?: string | null;
/** Premise */
premise?: string | null;
/** Theme */
theme?: string | null;
/** Selling Points */
selling_points?: unknown[];
/** Structure */
structure?: string | null;
};
/**
* ProjectListResponse
* @description GET /projects项目列表。
*/
ProjectListResponse: {
/** Projects */
projects?: components["schemas"]["ProjectResponse"][];
};
/**
* ProjectResponse
* @description 项目视图(创建/列表/详情共用)。
*/
ProjectResponse: {
/**
* Id
* Format: uuid
*/
id: string;
/** Title */
title: string;
/** Genre */
genre?: string | null;
/** Logline */
logline?: string | null;
/** Premise */
premise?: string | null;
/** Theme */
theme?: string | null;
/** Selling Points */
selling_points?: unknown[];
/** Structure */
structure?: string | null;
};
/**
* ProviderCredentialInput
* @description 单条提供商凭据写入。
*/
ProviderCredentialInput: {
/** Provider */
provider: string;
/** Api Key */
api_key: string;
};
/**
* ProviderView
* @description 已配置提供商(掩码视图)。
*/
ProviderView: {
/** Provider */
provider: string;
/** Masked Key */
masked_key: string;
};
/**
* ProvidersResponse
* @description GET/PUT 响应:已配置提供商(掩码)+ 当前档位路由。
*/
ProvidersResponse: {
/** Providers */
providers?: components["schemas"]["ProviderView"][];
/** Tier Routing */
tier_routing?: components["schemas"]["TierRoutingView"][];
};
/**
* ProvidersUpsertRequest
* @description PUT 请求:可同时 upsert 若干凭据与档位路由(幂等)。
*/
ProvidersUpsertRequest: {
/** Credentials */
credentials?: components["schemas"]["ProviderCredentialInput"][];
/** Tier Routing */
tier_routing?: components["schemas"]["TierRoutingInput"][];
};
/**
* ReviewHistoryItem
* @description 单条审稿留痕GET .../reviews 历史项snake_case
*/
ReviewHistoryItem: {
/**
* Id
* Format: uuid
*/
id: string;
/**
* Project Id
* Format: uuid
*/
project_id: string;
/** Chapter No */
chapter_no: number;
/** Chapter Version */
chapter_version?: number | null;
/** Conflicts */
conflicts?: {
[key: string]: unknown;
}[];
/** Foreshadow Sug */
foreshadow_sug?: {
[key: string]: unknown;
}[];
/** Style */
style?: {
[key: string]: unknown;
} | null;
/** Pace */
pace?: {
[key: string]: unknown;
} | null;
/** Health Score */
health_score?: number | null;
/** Decisions */
decisions?: {
[key: string]: unknown;
} | null;
};
/**
* ReviewHistoryResponse
* @description GET /projects/:id/chapters/:no/reviews审稿历史新→旧
*/
ReviewHistoryResponse: {
/** Reviews */
reviews?: components["schemas"]["ReviewHistoryItem"][];
};
/**
* ReviewRequest
* @description POST /projects/:id/chapters/:no/review可选携带待审草稿正文。
*
* 不传 `draft` 时端点回退到已保存的草稿chapter_repo
*/
ReviewRequest: {
/** Draft */
draft?: string | null;
};
/**
* TestConnectionRequest
* @description POST /test最小探测请求。
*/
TestConnectionRequest: {
/** Provider */
provider: string;
};
/**
* TestConnectionResponse
* @description POST /test 响应:连通性 + 能力矩阵。
*/
TestConnectionResponse: {
/** Provider */
provider: string;
/** Ok */
ok: boolean;
capabilities: components["schemas"]["CapabilitiesView"];
};
/**
* TierRoutingInput
* @description 单条档位路由写入。
*/
TierRoutingInput: {
/** Tier */
tier: string;
/** Provider */
provider: string;
/** Model */
model: string;
/** Fallback */
fallback?: string[];
};
/**
* TierRoutingView
* @description 档位 → provider:model 路由(含回退链)。
*/
TierRoutingView: {
/** Tier */
tier: string;
/** Provider */
provider: string;
/** Model */
model: string;
/** Fallback */
fallback?: string[];
};
/** ValidationError */
ValidationError: {
/** Location */
loc: (string | number)[];
/** Message */
msg: string;
/** Error Type */
type: string;
/** Input */
input?: unknown;
/** Context */
ctx?: Record<string, never>;
};
};
responses: never;
parameters: never;
requestBodies: never;
headers: never;
pathItems: never;
}
export type $defs = Record<string, never>;
export interface operations {
root__get: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
[key: string]: string;
};
};
};
};
};
health_health_get: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
[key: string]: string;
};
};
};
};
};
get_job_jobs__job_id__get: {
parameters: {
query?: never;
header?: never;
path: {
job_id: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
[key: string]: unknown;
};
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
list_projects_projects_get: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ProjectListResponse"];
};
};
};
};
create_project_projects_post: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody: {
content: {
"application/json": components["schemas"]["ProjectCreateRequest"];
};
};
responses: {
/** @description Successful Response */
201: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ProjectResponse"];
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
get_project_projects__project_id__get: {
parameters: {
query?: never;
header?: never;
path: {
project_id: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ProjectResponse"];
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
save_draft_projects__project_id__chapters__chapter_no__draft_put: {
parameters: {
query?: never;
header?: never;
path: {
project_id: string;
chapter_no: number;
};
cookie?: never;
};
requestBody: {
content: {
"application/json": components["schemas"]["DraftSaveRequest"];
};
};
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["DraftResponse"];
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
stream_draft_projects__project_id__chapters__chapter_no__draft_post: {
parameters: {
query?: never;
header?: never;
path: {
project_id: string;
chapter_no: number;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": unknown;
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
review_chapter_projects__project_id__chapters__chapter_no__review_post: {
parameters: {
query?: never;
header?: never;
path: {
project_id: string;
chapter_no: number;
};
cookie?: never;
};
requestBody: {
content: {
"application/json": components["schemas"]["ReviewRequest"];
};
};
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": unknown;
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
list_reviews_projects__project_id__chapters__chapter_no__reviews_get: {
parameters: {
query?: never;
header?: never;
path: {
project_id: string;
chapter_no: number;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ReviewHistoryResponse"];
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
accept_chapter_projects__project_id__chapters__chapter_no__accept_post: {
parameters: {
query?: never;
header?: never;
path: {
project_id: string;
chapter_no: number;
};
cookie?: never;
};
requestBody: {
content: {
"application/json": components["schemas"]["AcceptRequest"];
};
};
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["AcceptResponse"];
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
list_foreshadow_projects__project_id__foreshadow_get: {
parameters: {
query?: {
status?: string | null;
};
header?: never;
path: {
project_id: string;
};
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ForeshadowBoardResponse"];
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
register_foreshadow_projects__project_id__foreshadow_post: {
parameters: {
query?: never;
header?: never;
path: {
project_id: string;
};
cookie?: never;
};
requestBody: {
content: {
"application/json": components["schemas"]["ForeshadowRegisterRequest"];
};
};
responses: {
/** @description Successful Response */
201: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ForeshadowView"];
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
update_foreshadow_projects__project_id__foreshadow__code__patch: {
parameters: {
query?: never;
header?: never;
path: {
project_id: string;
code: string;
};
cookie?: never;
};
requestBody: {
content: {
"application/json": components["schemas"]["ForeshadowTransitionRequest"];
};
};
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ForeshadowView"];
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
generate_outline_projects__project_id__outline_post: {
parameters: {
query?: never;
header?: never;
path: {
project_id: string;
};
cookie?: never;
};
requestBody: {
content: {
"application/json": components["schemas"]["OutlineGenerateRequest"];
};
};
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["OutlineResponse"];
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
list_providers_settings_providers_get: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody?: never;
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ProvidersResponse"];
};
};
};
};
upsert_providers_settings_providers_put: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody: {
content: {
"application/json": components["schemas"]["ProvidersUpsertRequest"];
};
};
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["ProvidersResponse"];
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
test_connection_settings_providers_test_post: {
parameters: {
query?: never;
header?: never;
path?: never;
cookie?: never;
};
requestBody: {
content: {
"application/json": components["schemas"]["TestConnectionRequest"];
};
};
responses: {
/** @description Successful Response */
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["TestConnectionResponse"];
};
};
/** @description Validation Error */
422: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": components["schemas"]["HTTPValidationError"];
};
};
};
};
}