0.35.0

(feat): Add retryStatusCodes configuration option (legacy | recommended). The default legacy mode preserves existing behavior (retries 408, 429, and all >= 500). The recommended mode only retries 408, 429, 502, 503, 504 (excludes 500 Internal Server Error to avoid retrying non-idempotent failures).


0.34.0

(feat): 当通过认证方案的 placeholder 字段配置时,在代码片段中使用认证方案占位符值。


0.33.3

(chore): 将 @fern-api/generator-cli 升级到 0.9.11。GitHub 管道步骤现在通过 GitHub REST API 创建签名提交(匹配 fiddle 的传统 InMemoryGitRepo 推送路径),恢复启用重放的组织上经过验证的 fern-api[bot] 提交。

0.33.2

(fix): 修复具有多值数组查询参数的端点的线路测试验证。

0.33.1

(chore): 向生成器运行时添加通过 Sentry 的崩溃报告,并使用新的共享 GeneratorError 分类对抛出的错误进行分类,以便将面向用户的失败(配置、验证、认证、网络、环境)与内部 Fern 错误区分开——只有后者会转发给 Sentry。生成输出无变化。


0.33.0

(feat): 在分页结果上公开 HTTP 响应元数据(状态码、头部和完整解析的响应体)。PaginationResult 结构体现在包含 status_codeheadersresponse 字段,AsyncPaginatorSyncPaginator 都公开访问器方法来获取最近页面加载的元数据。新的 RawResponse<T> 结构体和 HttpClient 上的 execute_request_raw 方法支持此功能。


0.32.0

(chore): 将 @fern-api/generator-cli 升级到 0.9.8。生成的 PR 中的更新日志 URL 现在使用提交 SHA 而不是 PR 分支名称,使链接在分支被删除或压缩合并后仍然有效。


0.31.1

(fix): 确保 extraDependencies 覆盖优先于捆绑依赖版本。之前,条件捆绑依赖(例如 tokio-tungstenite、reqwest-sse)在用户覆盖后添加,会恢复固定版本。现在 Extra deps 最后应用,因此用户指定的版本始终生效。


0.31.0

(feat): 添加 maxRetries 自定义配置选项以覆盖失败请求的默认最大重试次数。未指定时默认值仍为 3。



0.30.2

(fix): 修复带查询参数的字节端点的动态代码片段生成, 使用请求结构体而非位置参数。

0.30.1

(fix): 为带查询参数的字节(八位流)端点生成请求结构体, 用单个结构体替换位置参数,该结构体使用构建器模式 捆绑原始正文和所有查询参数。

0.30.0

(feat): 全面改进 WebSocket 重连:带抖动的指数退避算法,稳定连接 5 秒后 自动重置重试计数器,以及重连期间的消息队列(文本和二进制消息 被缓冲并在重连后刷新,而非报错)。

(feat):WebSocketMessage::Close 中添加 DisconnectInfo 结构体,暴露服务器的 关闭代码和原因字符串。recv() 现在在关闭帧时返回 None 以 发送流结束信号。

(feat): 为带查询参数的 WebSocket 通道生成类型化的 ConnectOptions 结构体, 用支持 ..Default::default() 人机工学的 #[derive(Default)] 结构体 替换位置 &str 参数。底层使用 QueryBuilder,匹配 HTTP 端点模式。

(feat): 支持从 IR 自定义连接和消息方法名称 (channel.connectMethodNamemsg.methodName),分别回退到 connectsend_{name}

(feat): 添加 generateWebSocketClients 配置别名,与 enableWebsockets 并存, 匹配 TypeScript/Python/Java 生成器配置键。

(feat): 在多 URL API 中将每个 WebSocket 连接器路由到正确的环境 URL 方法 (例如,Deepgram 的 wss://agent.deepgram.comwss://api.deepgram.com)。

(feat): 在生成的 ServerMessage 枚举中添加 Unknown(serde_json::Value) 兜底变量, 用于向前兼容新的服务器消息类型。

(feat): 优雅的 WebSocket 关闭:发送关闭帧并等待最多 5 秒的 服务器响应,带双重关闭保护。

(fix): 将隐式认证参数从必需的 &str 更改为 Option<&str>, 仅在提供令牌时有条件地注入 Authorization 标头。

(fix): 修复带显式 Authorization 标头的 API(例如 Deepgram)的连接器认证转发 — 连接器现在正确解包 Option 以匹配客户端的 &str 参数类型。

(fix): 修复仅 JSON 通道上的 recv() 在遇到意外二进制帧时返回带帧大小的错误, 而不是静默跳过它们。

(chore): 从通道路径而非通道 ID 派生通道名称,将版本段移动到后缀位置 (例如,/v1/agent/converseAgentConverseV1Client)。

(fix):ServerMessage 枚举上用自定义的 Deserialize 实现替换 #[serde(untagged)] 派生, 使用往返评分。修复结构体字段上的 #[serde(default)] 导致 每个变量都匹配、总是返回第一个的静默不匹配问题。

(chore): 引入 ReconnectContext 结构体来组织重连状态, 在 read_looptry_reconnect 中替换 8 个单独的 Arc 包装参数。

(fix): 修复 try_reconnect 以指数退避重试至 max_reconnect_attempts, 而非在单次失败尝试后放弃。

(fix): 修复 flush_queues 在发送失败时通过发送前克隆并在错误时 推回队列前端来保留消息。

(chore): 从 WebSocket 客户端基础设施中移除无用的 parse_websocket_message 函数和 未使用的 serde::de::DeserializeOwned 导入。

(fix): 修复线路测试生成器为多 URL API 设置 config.environment = None, 使请求路由到 WireMock 服务器而非真实 API 端点。

(fix): 修复 number_serializers 单元测试断言使用 1e+20 匹配 Rust 的 serde_json 指数格式化。

(fix): 修复 WebSocket 连接器以支持 api_key 认证和 bearer 令牌。连接器现在从根客户端接收预计算的 Authorization 标头值, 使用 IR 的 api 键前缀(例如 Token),api_key 优先于 token,匹配 HTTP 客户端行为。

What’s new

  • 对于之前将查询参数作为位置参数传递给 connect() 的代码,这是一个破坏性变更。

0.29.0

(feat): 为多 URL 环境添加每个端点的 URL 解析。每个端点 现在在调用时从环境对象解析其基础 URL,匹配 Python 和 Java SDK 方法。

(feat): 从代码而非静态模板生成 ApiClientBuilder,为多 URL API 启用 环境感知的构建器方法。

(feat): 为多 URL 环境在 Environment 枚举上添加每个基础 URL 的获取器方法 (例如,api_url()agent_url())。

(feat): 为多 URL 环境在 ClientConfig 中添加 Option<Environment> 字段, 以支持每个端点的 URL 解析。

(feat):HttpClient 中添加 base_url()config()execute_request_with_base_url()execute_stream_request_with_base_url() 访问器,用于 多 URL 端点解析。

(chore):RootClientGenerator 中移除构造时 URL 覆盖;所有 子客户端现在统一接收 config.clone()

0.28.0

(feat): 添加 number_serializers 模块,将整数 f64 值序列化为 不带尾随 .0 的格式(例如,24000.0 序列化为 24000)。某些 API 拒绝整数值的小数表示。包含范围验证以防止 i64 范围外数字的错误值。

(feat): 为带 application/octet-stream 请求正文的端点添加 execute_bytes_request HTTP 客户端方法,发送原始字节而非 JSON 编码。

(feat): 支持来自 IR 认证方案的 API 键前缀。当配置了 TokenBearer 等前缀时,生成的 HTTP 客户端会将其 添加到 API 键标头值前。

(fix): 重构文件上传和内联请求正文上的查询参数,作为 URL 查询字符串发送 而非序列化到请求正文中。查询参数字段现在标记为 #[serde(skip_serializing)]

(fix): 修复可选查询参数字段上冗余的 #[serde(skip_serializing_if = "Option::is_none")]#[serde(skip_serializing)]。现在仅发出 skip_serializing

(chore): 仅在 IR 使用浮点/双精度类型时有条件地包含 number_serializers.rs, 与其他序列化器模块保持一致。

(chore): 在认证方案上用适当的 FernIr.AuthScheme._visit() 模式匹配 替换不安全的类型转换。

(chore): 将 IR SDK 从 v61 升级到 v65。


0.27.2

(fix): 修复具有 additionalProperties 的扩展对象的动态代码片段生成。convertExtendedObject 代码路径现在将 useDefault 传递给 structConstruction,确保为具有 extra: HashMap<String, serde_json::Value> 字段的类型(如 AchSetup)发出 ..Default::default()。当 useDefault 为 true 时,也会跳过没有值的可选字段,生成更清洁的输出。