feat(decide): added decision API

This commit is contained in:
ITQ
2026-02-18 15:00:02 +03:00
parent cb4da51cf7
commit 66bff9e5d4
6 changed files with 153 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
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)