Table of Contents

Namespace SEBT.Portal.Core.Models.Household

Classes

Address

Represents an address on file for a household.

AllowedActions

Computed permissions for self-service portal actions. Evaluated server-side from SelfServiceRulesSettings against the user's household data (issuance type, card status). The frontend reads these booleans to show/hide CTAs without ever seeing the raw policy config.

Application

Represents a benefit application with its associated children and card information. This is a domain model used for in-memory storage via MockHouseholdRepository. Application data is stored as part of HouseholdData.Applications list.

BlockedAddressEntry

A single blocked-address record sourced from a state-specific data file. Street is the unnormalized street form (line 1, or a synthesized "PO BOX {n}" string when the record is a PO box only). PostalCodeFive is the 5-digit ZIP, used to disambiguate same-street collisions across cities.

Child

Represents a child on a benefit application.

CoLoadedCohortClassifier

Derives CoLoadedCohort from pre-filter household case and application state. Shared by household reads and ID proofing off-boarding decisions.

HouseholdData

Represents household data including application and benefit information. This domain model is used for in-memory storage via MockHouseholdRepository. All household and application data is stored in-memory during development.

HouseholdIdentifier

A typed identifier used to look up and authorize access to household data. The type is determined by state configuration (e.g. Email, SNAP ID); the value comes from the authenticated user.

HouseholdSocureEligibility

Whether the guardian has qualifying portal household data before sending them through Socure. Aligns with the dashboard empty-state check (no enrolled cases and no applications). A missing household is treated like an empty household.

SummerEbtCase

Represents a household member's Summer EBT case from the state backend. Per-child case data including eligibility, card, and benefit information.

UserProfile

Represents the logged-in user's profile name for display

Enums

ApplicationStatus

Represents the status of a benefit application.

Serialized as its integer value over the API (no JsonStringEnumConverter, unlike CardStatus), so these ordinals are the wire contract. The frontend decodes them against a hardcoded table in features/household/api/schema.ts, and the plugin boundary casts between this enum and the state-connector's mirror by value, not by name. Do not reorder or renumber members; append only. EnumWireContractTests and EnumParityTests fail if you do.

BenefitExpirationStatus

Where a case's benefits stand relative to their expiration date. Serialized as the member name over the API, so member identifiers are the wire contract.

BenefitIssuanceType

Represents the type of benefit issuance for a household.

CardStatus

Represents the status of a benefit card. Mirrors the Interface enum member-for-member; parity is enforced by EnumParityTests. Serialized as the member name (e.g., "Active", "Lost") over the API per JsonStringEnumConverter, so member identifiers are the wire contract.

CoLoadedCohort

Classifies a household relative to co-loaded benefits, for use by the portal's exclusion logic and by analytics to segment usage.

The classification is derived at runtime from the pre-filter household state (case list + applications), using the rule:

  • NonCoLoaded — no SummerEbtCase is co-loaded.
  • CoLoadedOnly — every case is co-loaded AND there are no in-flight household applications (Pending/UnderReview on Applications), no cases in pending applicant status (same statuses on ApplicationStatus).
  • MixedOrApplicantExcluded — the household has at least one co-loaded case AND at least one of: a non-co-loaded case, an in-flight household application (Pending/UnderReview), or a case whose ApplicationStatus is pending or under review.

For households in MixedOrApplicantExcluded, co-loaded benefits may be suppressed from their dashboard/benefits response so they see only non-co-loaded cases and/or application views (subject to CoLoadedCohortFilter configuration).

IssuanceType

Represents the type of issuance for an application.

Serialized as its integer value over the API, so these ordinals are the wire contract. The frontend decodes them against a hardcoded table in features/household/api/schema.ts. Append only; do not reorder or renumber. EnumWireContractTests fails if you do.

PreferredHouseholdIdType

Types of identifiers that can be used to authorize guardians and link them to household data. Configurable per state; a state may support one or more types (e.g. Email today, SNAP ID later).