"""Kimi Code OAuth device-flow 端点的响应 schema(C3 扩 K1.3 / ARCH §7.2 / §7.4)。 snake_case(命名契约,见 memory/gotchas)。前端经 OpenAPI→TS 客户端消费——改字段须 `pnpm gen:api` 重生成。**响应绝不含 access/refresh token**(只 user_code + 轮询信息)。 """ from __future__ import annotations import uuid from pydantic import BaseModel class OAuthStartResponse(BaseModel): """device flow 启动:返回 job_id(轮询 `GET /jobs/{id}`)+ 用户面展示信息。 前端展示 `user_code`、打开 `verification_uri`(或 `verification_uri_complete`),并按 `interval` 轮询 job 直到 `done`(已连接)/`failed`(过期/拒绝)。**无 token**。 """ job_id: uuid.UUID user_code: str verification_uri: str verification_uri_complete: str | None = None expires_in: int interval: int class OAuthStatusResponse(BaseModel): """连接状态:是否已连接 + access token 过期时刻(ISO8601;**无 token 本体**)。""" connected: bool expires_at: str | None = None class OAuthDisconnectResponse(BaseModel): """断开:是否删到凭据行。""" disconnected: bool