Plexus REST API 完整参考:从查询应用到删除评分的所有端点一览
【免费下载链接】plexusRemove the fear of Android app compatibility on de-Googled devices.项目地址: https://gitcode.com/gh_mirrors/ple/plexus
Plexus 是一个去 Google(de-Googled)Android 设备上的应用兼容性众包项目,它通过一套开放、简洁的 REST API,让你能查询 App 在原生或 microG 环境下的评分、提交新评分,并用删除令牌安全地撤销自己的评分。本文完整梳理 v1 版本全部端点:认证方式、查询参数、请求字段与响应结构,帮你快速上手集成。
先看懂 Plexus 数据模型 📊
在调 API 之前,先理解两个核心概念:
- App(应用):以 Android 包名(如
org.thoughtcrime.securesms)作为唯一标识,包含名称、图标等信息。定义见 lib/plexus/schemas/app.ex - Rating(评分):某设备用户在特定 ROM 环境下对一个 App 的兼容性打分,
score取值 1~4,rating_type分为native(原生)和micro_g(microG 环境)。定义见 lib/plexus/schemas/rating.ex
每个应用的平均分以numerator / denominator(如 3.86 / 4)加total_count(评分人数)的形式返回,方便你按置信度展示数据。
全部端点速查表
所有端点路由定义在 lib/plexus_web/router.ex,前缀统一为/api/v1:
| 方法 | 端点 | 说明 | 需要认证 |
|---|---|---|---|
| POST | /devices/register | 注册设备,邮箱接收验证码 | 否 |
| POST | /devices/verify | 验证码换 Token | 否 |
| POST | /devices/renew | 刷新 Token | 是 |
| GET | /apps | 查询应用列表(支持搜索/分页) | 否 |
| GET | /apps/:package | 查询单个应用 | 否 |
| POST | /apps | 创建新应用 | 是 |
| GET | /apps/:package/ratings | 查询评分列表 | 否 |
| GET | /apps/:package/ratings/:id | 查询单条评分 | 否 |
| POST | /apps/:package/ratings | 提交评分 | 是 |
| DELETE | /apps/:package/ratings/:id | 删除评分 | 是 |
另有两个辅助入口:/api/openapi返回 OpenAPI 规范文档,/swaggerui提供交互式调试界面(见 lib/plexus_web/router.ex)。
设备认证三步走:注册、验证、刷新
写入类端点(创建应用、提交/删除评分)都需要 Bearer Token,认证由 lib/plexus_web/api_auth_plug.ex 统一拦截,缺失或失效的 Token 会返回401。
第 1 步:注册设备
curl -X POST /api/v1/devices/register \ -H "Content-Type: application/json" \ -d '{"device_id": "你的设备ID", "email": "you@example.com"}'服务器会向邮箱发送一封含验证码的邮件(实现见 lib/plexus_web/controllers/api/v1/device_controller.ex)。
第 2 步:验证并获取 Token
curl -X POST /api/v1/devices/verify \ -d '{"device_id": "你的设备ID", "code": "邮箱中的验证码"}'验证成功后返回 Token,之后所有写请求都带上:
Authorization: Bearer <你的Token>第 3 步:刷新 Token
调用POST /devices/renew并使用当前 Token 认证,即可换发新 Token,避免设备长期断线后无法提交数据。
GET /apps:按关键词搜索应用列表
最常用的查询端点,支持 5 个查询参数:
q:搜索关键词,如?q=Signalpage/limit:分页,默认每页 25 条scores=true:附带各类型平均分last_updated:RFC 3339 时间戳,只取该时间之后更新过的应用(做增量同步的最佳参数)
示例:
curl "/api/v1/apps?q=Signal&limit=5&last_updated=2026-08-16T00:00:00Z"响应结构为{data, meta},meta含page_number、limit、total_count、total_pages(见 lib/plexus_web/controllers/api/v1/schemas/apps_response.ex),分页信息齐全,翻页只需递增page。
参数解析逻辑集中在build_opts/1函数(lib/plexus_web/controllers/api/v1/app_controller.ex),非法的page/limit会被静默忽略,不会报错。
GET /apps/:package:查询单个应用详情
路径中的:package即 Android 包名:
curl /api/v1/apps/org.thoughtcrime.securesms?scores=true返回该应用的名称、图标、更新时间,scores下按native与micro_g分别给出平均分与投票数——这是做"App 兼容性展示页"最直接的接口。
POST /apps:注册一个全新应用
设备在本地发现一个数据库里还不存在的应用时,先调此端点建档:
curl -X POST /api/v1/apps \ -H "Authorization: Bearer <Token>" \ -d '{"app": {"package": "com.example.newapp", "name": "New App", "icon_url": "https://..."}}'必填package与name,icon_url可选。成功后返回201,并附带指向新应用资源的location头。
POST /apps/:package/ratings:提交一条评分
这是 Plexus 众包数据的入口,请求体字段如下:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
android_version | string | ✅ | 安卓版本 |
app_package | string | ✅ | 由路径注入,无需重复填写 |
app_build_number | integer | ✅ | 应用构建号 |
rom_name | string | ✅ | ROM 名称(如 GrapheneOS) |
rom_build | string | ✅ | ROM 构建号 |
installation_source | string | ✅ | 安装来源(如 google_play_alternative) |
rating_type | enum | ✅ | native或micro_g |
score | integer | ✅ | 1~4 的兼容性评分 |
app_version | string | ❌ | 应用版本号 |
notes | string | ❌ | 备注(功能受限说明等) |
关键安全机制:响应除评分数据外,还会返回一个一次性delete_token(由 lib/plexus/delete_token.ex 生成,32 字节随机数),数据库只存其 SHA-256 哈希。请妥善保存它——这是日后删除该评分的唯一凭证。
DELETE /apps/:package/ratings/:id:用删除令牌撤销评分
删除采用查询参数传递令牌的方式:
curl -X DELETE "/api/v1/apps/<package>/ratings/<id>?delete_token=<你的令牌>" \ -H "Authorization: Bearer <Token>"令牌正确则返回204 No Content。出于隐私考虑,令牌错误时同样返回"未找到"(见 lib/plexus_web/controllers/api/v1/rating_controller.ex),不向调用方泄露令牌是否有效。
分页与增量同步技巧 💡
- 列表端点(
/apps、/apps/:package/ratings)统一支持page+limit,评分列表默认按app_build_number与updated_at降序排列,天然呈现最新数据 - 增量拉取:客户端记录上次同步时间,请求时带上
last_updated参数即可只拿变更,大幅节省流量 - 调试入口:
/swaggerui提供图形化调试,/api/openapi返回机器可读的 OpenAPI 规范(由 lib/plexus_web/api_spec.ex 基于路由自动生成)
小结:一张图理解调用流程
- 读数据:直接
GET /apps与/apps/:package,零门槛 - 写数据:注册设备 → 邮箱验证码换 Token → 带
Authorization头调用写端点 - 反悔机制:保存创建评分时返回的
delete_token,随时调用 DELETE 端点撤销
Plexus 的 API 设计克制而实用:公开读、设备级匿名写、令牌制删除,恰好匹配众包数据平台的信任模型。如果你正在为去 Google 生态构建 App 推荐或兼容性检测工具,这套端点已经足够支撑完整的数据闭环。
【免费下载链接】plexusRemove the fear of Android app compatibility on de-Googled devices.项目地址: https://gitcode.com/gh_mirrors/ple/plexus
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考