Build the feature flag API: create, read, update, and delete flags. Implement flag evaluation logic to check if a flag is enabled for a given context. Support multiple flag types: boolean (on/off), percentage-based rollout, and rule-based targeting.
← Back to Module 02 overviewPOST /flags — create a new flag (on/off, percentage, or rules).GET /flags — list all flags with pagination.GET /flags/:id — get a single flag with its rules.PATCH /flags/:id — update flag status or rules.DELETE /flags/:id — delete a flag.POST /flags/:id/evaluate — evaluate if flag is enabled for a context.Create src/types/flag.ts:
export interface Flag {
id: string;
name: string;
description?: string;
status: 'off' | 'on' | 'percentage' | 'rules';
percentage_enabled: number;
created_at: string;
updated_at: string;
}
export interface FlagRule {
id: string;
flag_id: string;
priority: number;
rule_type: 'segment' | 'user_attribute' | 'percentage';
rule_value: Record;
enabled: boolean;
created_at: string;
updated_at: string;
}
export interface EvaluationContext {
user_id?: string;
session_id?: string;
attributes?: Record;
segment?: string;
}
export interface EvaluationResult {
flag_name: string;
enabled: boolean;
evaluated_rule_id?: string;
reason: string; // "off", "on", "percentage", "rule_matched", "rule_not_matched"
}