SolidTime项目API接口详解:项目管理与时间记录功能
项目概述
SolidTime是一个专注于时间管理和项目跟踪的系统,通过其API接口提供了完整的项目管理和时间记录功能。本文将从技术角度深入解析SolidTime的API设计,帮助开发者理解如何通过这些接口实现项目管理和时间跟踪功能。
API基础信息
SolidTime API采用OpenAPI 3.1.0规范,提供了三个环境端点:
- 生产环境:
https://app.solidtime.io/api
- 预发布环境:
https://app.staging.solidtime.io/api
- 本地开发环境:
https://soldtime.test/api
所有API请求都需要OAuth2认证,确保数据访问的安全性。
项目管理API详解
1. 获取项目列表
端点:GET /v1/organization/{organization}/projects
功能:获取指定组织下的所有项目列表
参数:
organization
:必填,组织ID(UUID格式)
响应:
- 成功(200):返回
ProjectCollection
类型数据 - 错误:可能返回403(无权限)、404(组织不存在)
使用场景:在用户界面展示组织下的所有项目时调用
2. 创建新项目
端点:POST /v1/organization/{organization}/projects
功能:在指定组织下创建新项目
参数:
organization
:必填,组织ID(UUID格式)- 请求体:
name
:必填,项目名称(string)color
:必填,项目颜色标识(string)
响应:
- 成功(200):返回新创建的
ProjectResource
- 错误:可能返回403、404或422(验证失败)
示例请求体:
{
"name": "新电商平台开发",
"color": "#FF5733"
}
3. 获取单个项目详情
端点:GET /v1/organization/{organization}/projects/{project}
功能:获取指定项目的详细信息
参数:
organization
:必填,组织IDproject
:必填,项目ID
响应:
- 成功(200):返回
ProjectResource
- 错误:可能返回403或404
4. 更新项目信息
端点:PUT /v1/organization/{organization}/projects/{project}
功能:更新现有项目的信息
参数:
organization
:必填,组织IDproject
:必填,项目ID- 请求体:与创建项目相同
响应:与创建项目类似
5. 删除项目
端点:DELETE /v1/organization/{organization}/projects/{project}
功能:删除指定项目
参数:
organization
:必填,组织IDproject
:必填,项目ID
响应:
- 成功(204):无内容返回
- 错误:可能返回403或404
时间记录API详解
1. 获取时间记录列表
端点:GET /v1/organization/{organization}/time-entries
功能:获取组织下的时间记录,支持多种过滤条件
参数:
- 路径参数:
organization
:必填,组织ID
- 查询参数:
user_id
:按用户ID过滤before
:只返回开始日期早于指定日期的记录(格式:YYYY-MM-DD)after
:只返回开始日期晚于指定日期的记录active
:只返回活跃记录(无结束时间)limit
:限制返回数量(1-500)only_full_dates
:只返回完整日期的记录
响应:
- 成功(200):返回
TimeEntryCollection
- 错误:可能返回403、404或422
2. 创建时间记录
端点:POST /v1/organization/{organization}/time-entries
功能:创建新的时间记录
参数:
organization
:必填,组织ID- 请求体:
user_id
:必填,用户IDproject_id
:必填,项目IDstart
:必填,开始时间(ISO8601格式)end
:可选,结束时间description
:可选,描述
响应:
- 成功(200):返回创建的时间记录
- 错误:可能返回403、404或422
技术实现要点
-
RESTful设计:API严格遵循RESTful原则,使用适当的HTTP方法和状态码
-
资源嵌套:项目和时间记录都嵌套在组织下,体现清晰的层级关系
-
完善的错误处理:定义了标准的错误响应格式,包括:
- AuthorizationException(403):权限不足
- ModelNotFoundException(404):资源不存在
- ValidationException(422):验证失败
-
灵活的查询:时间记录API提供多种过滤选项,满足不同业务场景需求
-
类型安全:所有ID都使用UUID格式,避免猜测攻击
最佳实践建议
-
认证处理:确保正确处理OAuth2认证流程,获取有效的访问令牌
-
错误处理:客户端应妥善处理各种错误响应,提供友好的用户反馈
-
分页处理:对于可能返回大量数据的接口(如时间记录),建议配合limit参数实现分页
-
数据验证:在调用API前验证输入数据,特别是日期格式和必填字段
-
缓存策略:对于不常变动的数据(如项目列表),可考虑适当的缓存机制
通过合理利用这些API接口,开发者可以构建出功能完善的时间管理和项目跟踪应用,与SolidTime系统无缝集成。