from http import HTTPStatus from django.http import HttpRequest from ninja import Router from api.v1.decision.schemas import DecisionIn, DecisionOut, SingleDecisionOut from apps.decision.services import decide_for_flag router = Router(tags=["decision"]) @router.post( "", response={HTTPStatus.OK: DecisionOut}, summary="Get decisions for feature flags", description=( "Resolve feature flag values for a given subject. " "Returns default values when no active experiment applies, " "or experiment variant values when the subject is assigned." ), ) def decide( request: HttpRequest, payload: DecisionIn, ) -> tuple[HTTPStatus, DecisionOut]: decisions = [] for flag_key in payload.flags: result = decide_for_flag( flag_key=flag_key, subject_id=payload.subject_id, subject_attributes=payload.subject_attributes, ) decisions.append(SingleDecisionOut(**result)) return HTTPStatus.OK, DecisionOut(decisions=decisions)