Older HTTP API
v1OpenAPI 3.1.0Older 服务端对外 HTTP 接口。除特别说明外,响应为 JSON。
鉴权采用「短寿命访问令牌 older_auth + 长寿命刷新令牌 older_refresh_token」双 Cookie 模型;访问令牌过期后由 POST /api/v1/user/refresh 凭刷新令牌续期(设计见 resources/50-http-api/spec.md)。
账号角色只有 admin 与 user 两种,管理接口仅 admin。登录保护接口各自属于一项功能(见 Feature):普通用户缺省都能用,管理员可以把某个普通用户限定为只能用其中几项,受限的账号访问其余功能得到 HTTP 403,会话本身仍然有效;管理员始终不受限。角色与功能限定在每次请求时复核,变更立即生效。记账接口里的 HTTP 403 还表示已是账本成员,但该操作只有账本所有者能做。
处理器未捕获的异常由会话层统一兜底:请求体 JSON 语法/类型错误与参数解析错误返回 400,其他内部错误返回 500,正文均为 Error 信封,连接保持可用。
- 132 个接口
- 17 个标签
- 65 个数据模型
- 2 个服务器
服务器
https://amass.fun生产环境(amass.fun)http://localhost:8080本地开发(端口以 settings.toml 的 HttpServer 配置为准)鉴权方式
分析
5 个接口访问统计与站点信息
用户
10 个接口注册、登录、邮箱验证与会话
设备
6 个接口设备列表、信息与控制
笔记本
3 个接口笔记本文件读取与同步
搜索
3 个接口站内搜索:匿名检索笔记与博客与上报看过结果的查询,记录由站点部署流水线整体替换
设置
2 个接口运行时设置
访问记录
2 个接口VisitRecord 查询与删除
便签
17 个接口TickNote 便签与便签的分享链接,以及待办树与待办的周期提醒。便签与待办都按登录账号各自隔离,只对本人可见,别人的一律按不存在处理(HTTP 404);分享链接不必登录,交出便签的纯文本原文;提醒只归已批准的管理员,到点经企业微信推送给站长;响应禁止缓存
图床
12 个接口登录用户的公开/私密图片与合集管理,匿名公开图库
记账
39 个接口账本与其中的收支账目。每条账目属于一个账本,账本的成员共同记账、互相可见;不是成员的账本一律按不存在处理(HTTP 404)。金额一律以分为单位的整数,响应禁止缓存
聊天室
3 个接口聊天室消息与实时 WebSocket
评论
4 个接口挂在页面路径下的评论与回复。访客凭自报的昵称发表,登录用户以账号身份发表;仅登录可见的评论流只对登录用户开放;删除只归管理员。响应禁止缓存
信令
1 个接口WebRTC 信令 WebSocket 端点(按客户端 ID 转发 SDP/ICE)
管理
11 个接口管理员接口(要求 role=admin 且 status=approved;鉴权失败统一返回 HTTP 403)
系统
5 个接口Live2D 静态资源、设备探测、通知回调与企业微信回调
发布网关
4 个接口Vessel 更新客户端匿名读取白名单仓库发布的 Gitea 发布接口子集;站点地址即客户端的 Gitea 实例地址,只接受 GET,正文是 Gitea 形状而非业务信封
测速
5 个接口仿 LibreSpeed 的网速测试:自包含测速页面及其调用的延迟、访客 IP 与 WebSocket 下载、上传入口;匿名访问,服务端不保存结果,HTTP 响应一律不缓存
数据模型
Envelope
通用业务信封。注意 message 非必有(部分成功响应仅含 code 与 data)。
Error
Device
设备对象。设备记录持久化于 SQLite,在线状态随 MQTT 上线/下线/心跳与心跳超时更新,服务重启后仍可查询。
Feature
需要登录才能使用的功能。ledger 记账;ticknote 备忘与待办;albums 图床;notebook 记事本;devices 设备的删除、关机与唤醒;statistics 访问记录与 URL 过滤规则;comments 以账号身份评论、查看仅登录可见的评论;chatroom 以账号身份进入聊天室、删除聊天消息
Gender
账号的性别。unknown 未知,是没有填写时的取值;male 男;female 女
Birthday
账号的生日,按填写时的历法原样保存,服务端不换算。年在 1900 至今年之间;公历须是真实存在且不晚于今天的日期。农历的 year 是这个农历年开始时所在的公历年,month 是月序,闰月与它所跟的月同序;服务端没有农历历表,农历只核对范围,闰月是否存在、这个月有没有三十由客户端把关
AccountNickname
账号的昵称,按字符计数,首尾空白会被去掉,不能含控制字符;空串表示没有昵称,此时客户端以用户名示人。不能与别的账号的用户名、邮箱或昵称相同(不区分 ASCII 大小写)
AccountSummary
VisitRecord
FilterRule
ChatMessage
TickNote
当前账号的一条便签;便签按账号隔离,别的账号看不到
TickNoteAttachment
便签的一个附件。文件存放在 Nextcloud 的便签附件目录下,归它所在便签的所有者
TickNoteTodo
一项待办。同一账号的待办经 parent_id 组成若干棵树;已完成的待办其各级子项也都已完成
TickNoteTodoReminderInput
待办的周期提醒规则。时刻与日期按服务器本地时区解释;周期用不到的字段可以省略,给了也被忽略
TickNoteTodoReminder
待办的周期提醒。总是包含全部键,与 frequency 无关的键取中性值(weekdays 为空数组,month_day 与 interval_days 为 0,start_date 为空字符串)
AlbumImage
AlbumImagePage
AlbumCollection
图床的合集,归一位用户所有;一张图片至多属于一个合集。不给出所有者与存储目录。
AlbumCollectionInput
新建合集时 name 必填;改写时至少给出一项。
LedgerEntryInput
新增或修改账目时由客户端提交的字段;修改是整体替换,其余字段一律忽略。转账是账本两个成员之间的资金往来,不计入收入与支出。收支与转账归入一个或多个分类,各带这笔账里属于它的金额,合计必须恰好等于 amount。余额调整把记录人自己的资金余额(全部账本、自开始记账至今)校准到 balance,差额记进这个账本、算在记录人名下,没有分类、账户、交易对象与扣减,不计入收入与支出。借贷往来是一笔借贷里经过资金的一次进出(借出、收款、借入、还款),以 debt_id 与 flow 给出,双方由借贷决定,没有分类、账户、交易对象与扣减,不计入收入与支出,只有借贷的当事人能新增、修改与删除。
LedgerEntryCategoryInput
账目在一个分类上的分账,由客户端提交。
LedgerEntryCategory
账目在一个分类上的分账,连同分类的名称;二级分类另带其一级分类。
LedgerCategory
账本里的分类。一级分类限定它能用于哪种账目,二级分类挂在一级分类之下并沿用其类型;账目可以归入一级分类,也可以归入其下的二级分类。类型与上级在建立后不可改变。
LedgerCategoryGroup
LedgerCategoryInput
新建分类时由客户端提交的字段。给出 parent_id 时是挂在它之下的二级分类,此时不能再给 type;否则必须给出 type,是该类型的一级分类。
LedgerCounterparty
账本里的交易对象,即收支账目的另一方,例如商户或雇主。类型限定它能用于哪种账目,在建立后不可改变;转账的另一方是账本成员,没有交易对象。
LedgerCounterpartyInput
新建交易对象时由客户端提交的字段。
LedgerBook
账本,按查看它的成员给出其身份。
LedgerBookInput
LedgerBookMember
LedgerMemberNicknameInput
LedgerInvitation
LedgerEntry
LedgerEntryPage
LedgerSummary
LedgerPeriodTotal
收支趋势里的一段,转账不计入。
LedgerMemberNet
LedgerFundBookNet
资金余额里一个仍在的账本,给出当前用户在其中的合计与净额,口径同 LedgerMemberNet。
LedgerFundBalance
当前用户的资金余额,跨他的全部账本、从开始记账至今:收支计在账户名下,转账从转出方计到转入方,余额调整计入差额,借贷往来计给收到与付出钱的一方,借贷代付的支出在支出所在的账本计入支出、在借贷所在的账本计入借贷流入,合起来不动余额。余额等于全部账本里他的净额之和,也就是最后一笔余额调整校准到的余额加上其后他名下的收支、转账与借贷往来;已删除的账本连同其中的账目不再计入。
LedgerDebt
一笔借贷,属于一个账本,账本的成员都能查看,只有当事人(出借方与借入方里的成员)能修改。一方是账本外的人或机构时那一方为 null;两方都是成员的借贷由其中一方建立,双方都能操作。待还(出借方看来是待收)等于 principal 减 repaid 加 interest 减 written_off,各项都由服务端按借贷的全部记录算出。
LedgerDebtInput
新建借贷时由客户端提交的字段。建立的人一定是当事人之一,direction 从他的角度说。
LedgerDebtUpdate
修改借贷时由客户端提交的字段,整体替换;双方、方向与钱是否经过借入方在建立后不能改变。
LedgerDebtRecord
借贷的一笔记录。先后按发生时间,同一时刻起始待还在前、账目居中、事件在后,同类按 ID。
LedgerDebtDetail
LedgerDebtEventInput
新增或修改借贷事件时由客户端提交的字段,修改是整体替换且不能换类型。事件不动任何人的资金余额,只改变待还。
LedgerDebtEvent
LedgerBlockingEntry
挡住一次删除的一条账目,供客户端写明是哪一条。
LedgerDuplicateDebtError
新建或改名的借贷与当事人已有的借贷重名时的回复:同一个当事人、同一个方向,在他仍在其中的账本里。
LedgerBlockedError
删除被关联的账目挡住时的回复,data.blockers 列出挡住它的账目,按发生时间倒序至多 50 条,total 为全部条数。
Comment
Windows 10/11、Android 14;认不出时为空串Chrome 126;认不出时为空串CommentThread
一楼,即一条顶层评论及其全部回复。
CommentThreadPage
CommentInput
发表评论时由客户端提交的字段,其余字段一律忽略。文本字段的首尾空白会被去掉。
CommentVoteInput
对一条评论投票时由客户端提交的字段。
CommentVotes
NotebookEntry
GatewayAsset
发布附件,只含客户端读取的字段。
GatewayRelease
按字段白名单重建的发布;作者、上传者、源码归档与上游地址一律不出现,草稿不出现在任何响应中。
SearchSection
站内搜索的一条记录,即页面里的一节:一个标题连同它下面直到下一个标题之前的正文;页面开头第一个标题之前的部分也是一节。
SearchHit
命中的一节。
SearchTermExplanation
SearchSynonymGroup
一组同义词。组内的词互相通用;搜组内的任何一个词还会找到 includes 里的下位词,反过来不会。由多个检索词组成的写法(如 network attached storage)只作为被匹配的一方,不能从查询里触发。
SearchQueryStatistics
一个查询的使用统计,按检索词归并:大小写、多余的空白与标点、重复的词不影响归并。