Flags : une décision
Un feature flag est une décision évaluée sur l'état utilisateur. Le ciblage est un ensemble de conditions sur cet état, vérifiées au moment où le flag est demandé.
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
- Ciblage en temps réel sur l'état utilisateur en direct
- Décidé au moment où vous demandez, pas lu dans une liste stockée
- Déploiements et expériences mesurés sur la même source de vérité
Comment ça marche
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.
Où y accéder
| 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 |
Exemple
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"] }
]
}
]
}