代理如何使用 Anonify
按这个顺序执行。这是 https://app.anonify.nl 上的代理 API。人也可以阅读本页。
1. 询问是否已有账户
询问此人是否已有 Anonify 账户。
如果已有,不要调用 signup。跳过新账户步骤,使用已有账户步骤。
2. 新账户
如果没有账户,向 https://app.anonify.nl/api/v1/auth/signup 发送 POST,正文为下面的 JSON。省略 password。不要添加 password 字段。
username 只能包含字母和数字。服务器以小写存储。不能更改。
响应包含 token、user 和 userKey。userKey 是 API 密钥。它以 ank_ 开头。
账户会得到名为 My company 的公司,以及名为 My workspace 的工作区。
此人第一次打开应用时,应用会要求设置密码。
如果 signup 表示邮箱已存在,就停止。服务器消息是 "Username or Email already exists!"。不要再次注册。请对方提供密钥,然后使用已有账户步骤。
POST https://app.anonify.nl/api/v1/auth/signup Content-Type: application/json { "username": "lettersandnumbers", "email": "person@example.com", "isManager": true, "firstName": "", "lastName": "" }3. 已有账户
不要调用 signup。
此人在 https://app.anonify.nl/login 登录,在 https://app.anonify.nl/profile 创建一个密钥,然后把该密钥粘贴给你。
密钥以 ank_ 开头。只有一个有效密钥。新密钥会替换旧密钥。
401 表示密钥错误或已撤销。请对方提供新密钥。不要再次注册。
4. 发送密钥
在下面的每个请求中用这个头发送密钥:Authorization: Bearer ank_...
使用 signup 返回的 userKey,或此人粘贴的密钥。不要在这个头里发送 signup 的 token。
Authorization: Bearer ank_...5. 读取工作区
GET https://app.anonify.nl/api/v1/agent-actions/workspaces。响应是此密钥可以访问的工作区。
一个工作区是默认工作区。响应只有一个工作区时,上传不要带 workspaceId。
响应有多个工作区时,上传必须把那个工作区 id 放在 workspaceId 里。询问此人使用哪个 id。
你不能创建工作区。
GET https://app.anonify.nl/api/v1/agent-actions/workspaces Authorization: Bearer ank_...6. 上传文件
以 multipart form data 向 https://app.anonify.nl/api/v1/agent-actions/uploads 发送 POST。
发送 file 字段。接受 PDF、PNG 和 JPEG。
只有此密钥可以访问多个工作区时才发送 workspaceId。
响应是 taskId 和 status。
收到这个响应后,在最后一步把编辑器链接给此人。不要等处理结束。
POST https://app.anonify.nl/api/v1/agent-actions/uploads Authorization: Bearer ank_... Content-Type: multipart/form-data file: <PDF, PNG, or JPEG> workspaceId: <only when this key can access more than one workspace>7. 读取任务
GET https://app.anonify.nl/api/v1/agent-actions/tasks/{taskId}/job。把 {taskId} 换成上传响应里的 taskId。
响应包含 status、pageCount 和检测到的条目。
每个条目有 id、page、text 和 redact。条目有时还有 tag。
GET https://app.anonify.nl/api/v1/agent-actions/tasks/{taskId}/job Authorization: Bearer ank_...8. 接受或拒绝条目
向 https://app.anonify.nl/api/v1/agent-actions/tasks/{taskId}/redactions 发送 POST,JSON 里是条目 id 的 accept 和 reject 数组。
两个数组都要发送。至少一个 id 是必需的,放在其中一个数组里。另一个数组可以是空的。
这会更新这些条目并生成文件。
POST https://app.anonify.nl/api/v1/agent-actions/tasks/{taskId}/redactions Authorization: Bearer ank_... Content-Type: application/json { "accept": ["<item id>"], "reject": [] }9. 下载 PDF
GET https://app.anonify.nl/api/v1/agent-actions/tasks/{taskId}/file。
生成成功后,响应是 PDF。
在那之前,响应是带 status 的 JSON。它不是空文件。不要把该 JSON 存成 PDF。
GET https://app.anonify.nl/api/v1/agent-actions/tasks/{taskId}/file Authorization: Bearer ank_...10. 读取页数限制
GET https://app.anonify.nl/api/v1/agent-actions/limits。响应包含 pagesLeft。
不要开始 checkout。不要付款。
GET https://app.anonify.nl/api/v1/agent-actions/limits Authorization: Bearer ank_...11. 把编辑器给此人
上传之后,把 https://app.anonify.nl/edit/{taskId} 给此人。把 {taskId} 换成上传响应里的 taskId。
要让该浏览器登录,加上来自 signup 响应的 token 和 user 哈希。user 是 user 对象的 base64url JSON。
用 URLSearchParams 构造哈希。参数名是 token 和 user。base64url 指 UTF-8 JSON,再做 base64,然后把 + 换成 -,把 / 换成 _,并去掉 = 填充。
文档处理期间,编辑器保持关闭,并显示上传进度条。然后它会自己加载。
token 和 user 只来自 signup。已有账户时,给出不带哈希的 https://app.anonify.nl/edit/{taskId}。此人用自己的登录进入。
不要调用 React 路由 /media 或 /tasks。
https://app.anonify.nl/edit/{taskId}#token=<signup token>&user=<base64url JSON of user>
不要做这些
- 不要列出工作区中的文档。
- 不要付款,也不要开始 checkout。
- 不要邀请任何人。
- 不要删除任何内容。
- 不要重命名公司。
- 不要创建工作区。
- 不要调用 React 路由 /media 或 /tasks。
- 如果此人已有账户、signup 表示邮箱已存在,或请求返回 401,不要调用 signup。