from typing import Annotated, Any from anydi.ext.fastapi import Inject from fastapi import APIRouter from fastapi.params import Query from dmp.api.auth import IdentityId from dmp.api.crm_sublist.schemas import CrmSublists, GetCrmSublistsInput from dmp.crm_sublists.handlers import GetCrmSublistsHandler, GetCrmSublistsRequest router = APIRouter(prefix="/crm-sublists", tags=["CRM Sublist"]) @router.get( "", operation_id="getCrmSublists", response_model=CrmSublists, response_model_by_alias=True, ) def get_crm_sublists( identity_id: IdentityId, params: Annotated[GetCrmSublistsInput, Query()], handler: Annotated[GetCrmSublistsHandler, Inject()], ) -> Any: limit = params.limit or GetCrmSublistsRequest.DEFAULT_LIMIT sublists = handler.handle( GetCrmSublistsRequest( identity_id=identity_id, search=params.search, vendor_id=params.vendor_id, subaccount_id=params.subaccount_id, custom_list_ids=params.custom_list_ids, global_participant_ids=params.global_participant_ids, sublist_ids=params.sublist_ids, limit=limit, ) ) return {"items": sublists}