Invoice Ninja API 核心接口详解
2025-07-06 08:12:50作者:农烁颖Land
概述
Invoice Ninja 是一个功能强大的开源发票和财务管理平台,提供了完善的 RESTful API 接口。本文将深入解析其核心 API 接口的设计和使用方法,帮助开发者更好地集成和使用 Invoice Ninja 的功能。
活动记录接口
获取活动列表
GET /api/v1/activities
接口用于获取与公司相关的所有活动记录。这个接口非常适合用于构建审计日志或活动跟踪功能。
参数说明:
activity_include
:可选,指定需要包含的关联数据index
:分页索引per_page_meta
:每页显示数量page_meta
:分页元数据
响应结构:
{
"data": [
{
// 活动记录详情
}
],
"meta": {
// 分页元数据
}
}
下载活动PDF
GET /api/v1/activities/download_entity/{activity_id}
接口允许用户下载特定活动的 PDF 文件。这在需要存档或打印活动记录时非常有用。
路径参数:
activity_id
:活动的唯一哈希ID
认证与授权接口
用户登录
POST /api/v1/login
是系统的核心认证接口,支持以下功能:
- 基础认证(邮箱+密码)
- 双因素认证(2FA)
- 返回用户权限信息
请求体示例:
{
"email": "demo@invoiceninja.com",
"password": "Password0",
"one_time_password": "123456" // 可选,2FA验证码
}
最佳实践:
建议在登录时包含 company
和 user
对象,可通过查询参数实现:
/api/v1/login?include=company,user
数据刷新
POST /api/v1/refresh
接口用于增量数据同步,特别适合移动应用或需要定期同步数据的场景。
参数说明:
updated_at
:Unix 时间戳,只获取此时间之后更新的数据include
:指定需要包含的关联数据
银行集成接口
银行集成管理
Invoice Ninja 提供了完整的银行集成 CRUD 接口:
GET /api/v1/bank_integrations
- 获取银行集成列表POST /api/v1/bank_integrations
- 创建新的银行集成GET /api/v1/bank_integrations/{id}
- 获取特定银行集成详情PUT /api/v1/bank_integrations/{id}
- 更新银行集成DELETE /api/v1/bank_integrations/{id}
- 删除银行集成
分页控制:
可以通过 rows
参数控制返回的记录数量,例如 ?rows=50
表示返回50条记录。
Yodlee 集成
POST /api/v1/yodlee/refresh
是专门为 Yodlee 金融数据平台设计的 Webhook 接口,用于接收数据更新通知。
通用设计模式
Invoice Ninja API 遵循了一些优秀的设计实践:
- 标准化响应:所有列表接口都采用
data
+meta
的结构 - 权限控制:通过
X-API-TOKEN
进行认证 - 速率限制:响应头中包含
X-RateLimit-Remaining
和X-RateLimit-Limit
- 版本控制:通过
X-MINIMUM-CLIENT-VERSION
确保客户端兼容性 - 增量同步:支持基于时间戳的数据刷新机制
错误处理
API 提供了完善的错误响应:
401
:未授权403
:禁止访问422
:验证错误429
:请求过多5XX
:服务器错误
总结
Invoice Ninja 的 API 设计遵循了 RESTful 最佳实践,提供了完善的认证、授权、数据访问和错误处理机制。通过合理使用这些接口,开发者可以构建强大的财务管理系统集成方案。