Class HouseholdController
- Namespace
- SEBT.Portal.Api.Controllers.Household
- Assembly
- SEBT.Portal.Api.dll
Controller for household data retrieval and management. Household lookup uses state-configurable preferred household ID type (e.g. email, SNAP ID) resolved from the authenticated user.
[ApiController]
[Route("api/household")]
public class HouseholdController : ControllerBase
- Inheritance
-
objectControllerBaseHouseholdController
Methods
GetHouseholdData(IQueryHandler<GetHouseholdDataQuery, HouseholdData>, IIdentifierHasher, IFeatureManager, bool, CancellationToken)
Retrieves household data for the authenticated user. The household identifier used for lookup is determined by state configuration (e.g. email, SNAP ID). PII data is only included when the user meets the ID proofing requirements configured for the state.
[HttpGet("data")]
[Authorize]
[ProducesResponseType(typeof(HouseholdDataResponse), 200)]
[ProducesResponseType(typeof(ErrorResponse), 401)]
[ProducesResponseType(typeof(ProblemDetails), 403)]
public Task<IActionResult> GetHouseholdData(IQueryHandler<GetHouseholdDataQuery, HouseholdData> queryHandler, IIdentifierHasher identifierHasher, IFeatureManager featureManager, bool includeCardDetails = true, CancellationToken cancellationToken = default)
Parameters
queryHandlerIQueryHandler<GetHouseholdDataQuery, HouseholdData>The use case handler for retrieving household data.
identifierHasherIIdentifierHasherHashes household application and case IDs before returning them to the client.
featureManagerIFeatureManagerDecides whether the response carries hashed analytics identifiers.
includeCardDetailsboolWhen false, card-related fields are excluded from the response.
cancellationTokenCancellationTokenA token to monitor for cancellation requests.
Returns
- Task<IActionResult>
An OK result with household data if found, or an empty payload when no household exists; otherwise, Unauthorized or Forbidden.
RequestCardReplacement(RequestCardReplacementRequest, ICommandHandler<RequestCardReplacementCommand>, CancellationToken)
Requests replacement cards for the authenticated user's household.
[HttpPost("cards/replace")]
[Authorize]
[ProducesResponseType(204)]
[ProducesResponseType(typeof(ValidationProblemDetails), 400)]
[ProducesResponseType(typeof(ProblemDetails), 403)]
[ProducesResponseType(typeof(ProblemDetails), 404)]
public Task<IActionResult> RequestCardReplacement(RequestCardReplacementRequest request, ICommandHandler<RequestCardReplacementCommand> commandHandler, CancellationToken cancellationToken = default)
Parameters
requestRequestCardReplacementRequestThe case IDs to request replacements for.
commandHandlerICommandHandler<RequestCardReplacementCommand>The use case handler for requesting card replacements.
cancellationTokenCancellationTokenA token to monitor for cancellation requests.
Returns
- Task<IActionResult>
No content on success; otherwise, BadRequest, Forbidden, or NotFound.
UpdateAddress(UpdateAddressRequest, ICommandHandler<UpdateAddressCommand, AddressValidationResult>, CancellationToken)
Updates the mailing address for the authenticated user's household. Returns the address validation result, which may include a suggested alternative (e.g., abbreviated street name for DC) or a validation error (blocked address, too long).
[HttpPut("address")]
[Authorize]
[ProducesResponseType(typeof(AddressUpdateResponse), 200)]
[ProducesResponseType(typeof(ValidationProblemDetails), 400)]
[ProducesResponseType(typeof(ProblemDetails), 403)]
[ProducesResponseType(typeof(AddressUpdateResponse), 422)]
[ProducesResponseType(typeof(ProblemDetails), 502)]
public Task<IActionResult> UpdateAddress(UpdateAddressRequest request, ICommandHandler<UpdateAddressCommand, AddressValidationResult> commandHandler, CancellationToken cancellationToken = default)
Parameters
requestUpdateAddressRequestThe new mailing address.
commandHandlerICommandHandler<UpdateAddressCommand, AddressValidationResult>The use case handler for updating the address.
cancellationTokenCancellationTokenA token to monitor for cancellation requests.
Returns
- Task<IActionResult>
The address validation result on success; otherwise, BadRequest, Forbidden, or UnprocessableEntity.