Fóir 的全部功能

内容 API 只是应用所需的最小一部分。这里是其余的部分。

内容

你的信息如何成形。

模型和字段

用十六种内置字段类型定义数据的形态,包括富文本、精确小数、媒体、引用和地理点,可在控制台中或用代码完成。

关联

用引用字段让一个模型指向另一个模型,并在一次查询中跨越读取,关联类型决定访问权限和删除是否沿引用传递。

正文和内联模型

富文本可在段落之间以任意顺序容纳你自己的模型,内联模型只需定义一次,即可作为字段类型复用,还有类型化列表。

层级结构

把引用字段声明为模型的层级结构,其记录便构成一棵树,每次读取都会返回记录的路径及其上级。

语言区域

按语言区域翻译文本和正文字段,回退链逐字段向上查找,严格模式会报告哪些字段没有翻译。

个性化

服务器根据读取时传入的上下文和已登录用户所在的分群,决定请求得到记录的哪个版本。包含一个完整示例。

变体

按受众改变整条记录、单个字段或单个正文条目,变体由服务器根据可复用、带优先级的定向规则选出。

受众和分群

用设备、平台、语言区域和登录状态等上下文维度构建受众,也可用服务器在每次请求时评估的基于规则的分群构建。

自然键和查找

用可读的键定位记录,并在模型上声明额外的唯一查找键,这样 handle 或 SKU 一次类型化查询就能找到它。

设计令牌

颜色、字体和间距作为令牌保存在项目上并通过 API 提供,因此在运行时读取它们的应用在发布后就会呈现新的品牌。

发布

让内容上线,也能撤回。

草稿

在开启发布的模型上,每次保存都会写入一份草稿,而 API 继续提供已发布的版本。控制台会按 API 提供的方式预览草稿。

版本历史

在启用版本控制的模型上,每次保存都是一个带编号的版本,保留期限由你的套餐决定。还原会新增一个版本,并且可以先通过试运行查看影响。

定时发布

为记录版本设置发布时间,如果内容需要再下线,还可设置取消发布时间。定时计划在触发前可以更改或取消。

上线

一次上线会在同一个预定时刻发布一批命名的记录版本。失败的条目会被跳过并可重试,整批也可以回滚。

发行版

对模型和配置的变更先作为草稿暂存,再一起发行,可以立即或在设定的时间进行,附带破坏性变更的差异对比和回滚。

按模型的行为

版本控制、发布和变体按模型开启,默认关闭,所以每个模型只承担其记录所需的工作流。

交付

它如何到达你的应用。

类型化 GraphQL

Fóir 根据你的模型生成 GraphQL schema。生产环境提供已发布的 schema,当提交的类型落后于项目时,CLI 检查会让你的构建失败。

读取时解析

读取会传入语言区域、上下文和预览标志。服务器应用语言区域回退,选出变体,并选择草稿或已发布版本。

实时更新

通过 WebSocket 订阅,以便在记录变化时获知。事件带有变化对象的 id,SDK 的 live 模块会把它们应用到你的查询缓存。

API 密钥

每个密钥为公开或机密类型,并属于一个项目。它拥有你授予的作用域,并可限定到选定的模型和操作,或限定到一个组织。

响应缓存

GraphQL API 默认将已解析的响应缓存 60 秒,当其中包含的记录被写入时就会丢弃缓存。也可以用 CLI 命令手动清除。

SDK 和 CLI

一个类型化客户端,为你的应用编写 GraphQL,并按密钥生成类型;还有一个 CLI,用于内容、schema、发布和配置,并提供供脚本使用的 JSON 输出。

自动应用的限制

请求速率由你的套餐按密钥设定,查询深度、字段数量和别名在查询运行前就受到限制。响应会在标头中报告这些限制。

身份和访问

谁能看到什么、做什么。

托管登录

由 Fóir 为你的用户托管的登录页面,位于你验证过的登录域名上,带有你项目的名称、徽标和颜色,支持密码、邮件验证码和提供方登录。

OpenID Connect 登录

你的用户可通过任何发布 OpenID Connect 发现文档的身份提供方登录。你提供它的发现 URL 和你的客户端凭据,由 Fóir 负责完成交换。

升级验证

在密码之后,要求通行密钥或验证器应用的验证码作为第二步,用于敏感操作之前,或每次登录某个应用时。

角色

角色是你组合而成的一组权限,可授予整个工作区或某一个项目。你的用户的角色按项目在配置或 CLI 中声明。

记录级访问

模型声明谁拥有其记录,每条记录为私有或公开。私有记录可以通过一项可撤销的授权共享给指定的人。

字段级访问

字段可以指明哪些类型的调用方可以读取、哪些可以写入。共有五种类型,由请求携带的凭据决定。

会话控制

控制台按登录应用列出你的用户在自定义登录域名上持有的会话,并可撤销其中任何一个。其他登录会因令牌被撤销或过期而结束。

审计日志

谁在何时做了什么,与变更一起记录,持有相应权限的团队成员可在控制台中读取。条目保留 90 天。

安全

你的数据如何与其他所有人的数据分开。

在数据库中强制执行

访问规则被编译为 Postgres 行级安全,因此由数据库过滤请求可以读取的内容,应用代码中遗漏的检查不会暴露任何一行。

工作区隔离

工作区就是你的账户。每个受管控的行都带有它的 id,表上的策略会先将该 id 与调用方的会话比对,再考虑其他任何条件。

项目隔离

每个项目都有自己的内容、用户、文件、密钥、机密和登录域名。API 密钥只属于一个项目,无法指向另一个项目。

组织隔离

当你的产品有自己的租户时,每个租户就是一个组织。数据库会给每一行标记所属组织,并按它过滤每次读取。

经批准的支持访问

当 Fóir 员工需要查看工作区内部以提供帮助时,由其一位管理员用一次性验证码批准该请求。访问持续一小时,并有记录。

Demesne

编译这些规则的引擎是开源的,所以你可以自己阅读策略是如何编写的,并自行运行它的测试。

项目和组织

面向代理机构,以及有自己租户的产品。

每位客户一个项目

每位客户获得一个项目,有自己的内容、密钥、用户和登录。一个工作区管理所有项目,受邀的客户只能访问自己的项目。

组织

为你的产品提供自己的租户。你的每位客户就是项目内的一个组织,有自己的成员、用户、数据和限制。

组织树

组织可以嵌套到任意深度。上级可读取其下的所有内容,但只能更改自己的行,模型和设置沿树向下继承。

组织开通

一次调用即可创建带有品牌、设置、第一位成员和限定于它的密钥的组织。运行两次,得到的仍是一个组织。

预发布和生产

一个配置文件把预发布和生产声明为命名项目,CLI 每次运行推送到其中之一。除声明的目标地址外,两者保持一致,并会报告偏差。

自定义域名

项目可以从你验证过的域名提供其 API,登录应用也可以从一个域名提供托管登录页面。两者都是可选的,TLS 自动签发。

媒体

文件,以及你对它们做的处理。

资源库

上传一次文件,就能在任何记录中通过 id 引用它,上传确认时会从图像中读取尺寸和占位图。

图像转换

每张图像以八种命名尺寸和四种格式提供,在 URL 第一次被请求时渲染,裁剪和焦点按用途设置。

私有文件

文件有自己的所有者和可见性,公开文件通过普通 URL 提供,私有文件通过会过期的签名链接提供。

视频

每个上传的视频都会生成缩略图、一段简短的动态预览和时长,部分套餐包含自适应 HLS 流媒体。

自动化

无需人工参与的工作。

定时计划

定时计划按 cron 表达式在你指定的时区运行你的某个操作,可以暂停、恢复或手动触发。

生命周期钩子

钩子会在项目中发生某件事时(例如记录被发布)运行你的某个操作,每次投递都会连同其状态一起保存。

操作

操作是你托管并在 Fóir 注册的 HTTP 端点,Fóir 用签名载荷调用它,重试失败,并记录每次运行。

使用配额

配额限制某个操作在滚动时间窗口内的运行频率,可按每位已登录用户或更大的共享范围计算,并返回你编写的消息。

前置条件

前置条件根据调用方的分群成员身份或对输入的规则,决定某个操作是否可以运行,并以你编写的消息拒绝。

机密

为你的操作所用凭据提供的保险库,加密存储,按引用寻址,无需重新部署即可轮换。

通知

向你的用户发送邮件、应用内通知和推送通知,可直接发送或由事件触发,偏好由每位用户按类别和渠道设置。

协作

人,以及智能体。

备注

你的团队附加在记录、文件、模型或其他对象上的串联评论,可精确到一个字段或一段文字,带有提及和每个项目的收件箱。

任务

把备注指派给一位团队成员,它就成为任务,带有截止日期、子任务和每人一个队列。处理完备注即标记为已完成。

Ask Fóir

控制台中的助手,按已登录者自己的权限工作。它的编辑以未保存的更改、草稿或待你批准的请求形式出现。

把对话串交给 Fóir

把备注对话串交给助手进行一次简短的无人值守运行。它会读取项目并在对话串中回复,但不能编辑、发布或删除内容。

任意 MCP 客户端

把你自己的智能体连接到 Fóir 托管的 MCP 服务器。它在连接者的权限范围内工作,或在所获机密密钥的作用域内工作。

来自你的用户的反馈

已登录的用户可以就某条记录写备注,并阅读你团队的回复。一个 React 小组件会替你提交备注,项目也可以接收访客反馈。

归你保管

退出方式,以及扩展。

Postgres 导出

一条命令即可把项目导出为根据你的模型生成的类型化 Postgres 表,包含外键、你已发布的内容和文件的下载链接。

导出中的访问规则

导出包包含 Postgres 行级安全,规定每个用户可以读取哪些行。由你自己应用。字段权限、API 作用域和写入规则不在其中。

你的逻辑仍归你

Fóir 不托管你的代码。你把自己托管的函数注册为操作,Fóir 用签名且限定作用域的令牌调用它,重试失败,并记录每次运行。

应用

用你自己的工具扩展控制台。应用是你托管的网页,可嵌入为页面、编辑器标签页、侧边栏或字段编辑器。

配置即代码

模型、API 密钥、钩子、登录提供方以及项目配置的其余部分,都在你提交的一个文件中。推送会暂存一份草稿,发行则将其发布。

从一个模型开始

创建一个项目,定义一个模型,并通过 API 读回它。