Files
Lotty/src/backend/api/v1/decision/endpoints.py
T

35 lines
1.0 KiB
Python

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)