开关:一种决策
功能开关是针对用户状态评估的决策。定向是对该状态的一组条件,在请求开关的那一刻进行判定。
At a glance
- Host
https://api.prodantix.com- Read
GET /v1/flags,GET /v1/flags/snapshot- Write
upsertFlag,archiveFlagover GraphQL- Live updates
flagChangeon the project room- Auth
- Project key to read, access token to write
- 在实时用户状态上实时定向
- 在询问的那一刻判定,而非读取预存名单
- 发布与实验在同一个真相来源上衡量
工作原理
A flag is evaluated against the user state currently on file for a distinct id. Rules are ordered; the first match wins, and a flag with no matching rule falls back to its default. Evaluation is server-side by default, so a rule change takes effect without a client release.
如何访问
| Surface | Operation |
|---|---|
| REST | GET /v1/flags · GET /v1/flags/snapshot |
| GraphQL | flags query · upsertFlag, archiveFlag mutations |
| Realtime | flagChange on a project room |
| MCP | prodantix.flags.list · .upsert · .archive |
示例
curl "https://api.prodantix.com/v1/flags?distinct_id=u_8f3a" \
-H "Authorization: Bearer $PRODANTIX_KEY"const flags = await prodantix.flags.all({ distinctId: 'u_8f3a' });
if (flags['new-checkout']) {
// ...
}final flags = await prodantix.flags.all(distinctId: 'u_8f3a');
if (flags['new-checkout'] == true) {
// ...
}flags = prodantix.flags.all(distinct_id="u_8f3a")
if flags.get("new-checkout"):
...Evaluating locally
For latency-sensitive paths, fetch the whole ruleset once and evaluate in-process. Snapshot responses carry Cache-Control: public, max-age=30, stale-while-revalidate=300.
JSON
{
"flags": [
{
"key": "new-checkout",
"enabled": true,
"rules": [
{ "property": "plan", "operator": "in", "values": ["pro", "scale"] }
]
}
]
}