go-flashduty 是 Flashduty Open API 的官方 Go 客户端:一个轻量、强类型的 SDK。它由本文档所依据的 OpenAPI 规范自动生成,覆盖全部 Open API 接口,并经过单元测试与线上环境端到端校验。
如果你的服务使用 Go 编写,推荐用该 SDK 调用 Flashduty,而不是手写 HTTP 请求 —— 你可以直接拿到类型化的请求参数、响应结构和错误码,省去手动拼装 JSON 和解析响应的工作。
安装
需要 Go 1.24 及以上版本。快速开始
用 APP Key 创建客户端,按服务(client.Incidents、client.Alerts……)调用对应接口。每个方法对应一次 HTTP 调用,返回 (*T, *Response, error):
设计理念
轻量、强类型
每个方法只映射一次 HTTP 调用,返回
(*T, *Response, error),不做跨接口的隐式数据拼装。按服务分组
所有接口按服务挂在客户端上(
client.Incidents、client.Alerts……),由 OpenAPI 规范生成。可组合传输层
重试、缓存、链路追踪、限流处理等横切能力,通过
http.RoundTripper 中间件用 WithTransport 组合。可读的时间戳
响应中的时间字段类型为
Timestamp / TimestampMilli,JSON、日志和 LLM 输出中呈现为 RFC3339,原始 epoch 仍可一键取回。配置选项
NewClient 接受一组可选项:
错误与限流
SDK 返回类型化的错误,可用errors.As 解析,也提供便捷断言函数(自动穿透被包装的错误):
时间戳
响应中的时间字段类型为Timestamp(Unix 秒)或 TimestampMilli(毫秒)。它们序列化为本地时区的 RFC3339 字符串,反序列化时既接受数字 epoch 也接受 RFC3339 字符串,可无损往返。零值保持数字 0(不会变成 1970 年),并被 omitempty 丢弃。
请求中的时间字段仍为普通
int64 —— API 在 wire 上期望数字 epoch。多数接口使用秒,但 RUM 和 webhook 历史类接口使用毫秒。重试
核心库默认不内置重试。可用可选的retry 子包在传输层组合:一个安全默认的重试 http.RoundTripper(对 429 和 5xx 重试,遵循 Retry-After,确定性指数退避,仅重放 body 可重放的请求 —— SDK 的请求都满足):
相关资源
GitHub 仓库
源码、完整 README 与 Issue。开源协议 Apache-2.0。
API 总览
浏览全部接口 —— 每个接口都能在 SDK 中找到对应的类型化方法。