代理如何使用 Anonify

按这个顺序执行。这是 https://app.anonify.nl 上的代理 API。人也可以阅读本页。

  1. 1. 询问是否已有账户

    询问此人是否已有 Anonify 账户。

    如果已有,不要调用 signup。跳过新账户步骤,使用已有账户步骤。

  2. 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. 3. 已有账户

    不要调用 signup。

    此人在 https://app.anonify.nl/login 登录,在 https://app.anonify.nl/profile 创建一个密钥,然后把该密钥粘贴给你。

    密钥以 ank_ 开头。只有一个有效密钥。新密钥会替换旧密钥。

    401 表示密钥错误或已撤销。请对方提供新密钥。不要再次注册。

  4. 4. 发送密钥

    在下面的每个请求中用这个头发送密钥:Authorization: Bearer ank_...

    使用 signup 返回的 userKey,或此人粘贴的密钥。不要在这个头里发送 signup 的 token。

    Authorization: Bearer ank_...
  5. 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. 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. 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. 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. 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. 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. 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。
通过WhatsApp与我们聊天