Application
A household's submitted application against an application package.
ApplicationBase
Section titled “ApplicationBase”A submission event linking a Household to one or more Programs. Carries a snapshot of the form responses submitted. Creates one Enrollment per program on submission, surfaced inline as `enrollments`.
| Property | Type | Required | Description |
|---|---|---|---|
id | uuid | Yes | The application's unique identifier. |
householdId | uuid | Yes | The household this application is for. |
packageId | uuid | Yes | The application package being submitted. The server resolves which programs the household is enrolled in based on the package's `programs` list — clients do not specify programs directly. |
formResponses | RecordAppFormResponse | No | Form responses keyed by form identifier. |
status | AppStatus | Yes | The status of the application. |
submittedAt | string | null | No | The timestamp at which the application was submitted. Null while `draft`. |
validationErrors | unknown[] | No | Non-fatal validation errors that occurred during submission. |
customFields | RecordCustomField | No | Implementation-defined custom fields. |
enrollments | EnrollmentRef[] | No | Abbreviated enrollment records created by this application. |
createdAt | string | Yes | The timestamp (in UTC) at which the record was created. |
lastModifiedAt | string | Yes | The timestamp (in UTC) at which the record was last modified. |
{ "id": "40a12e5e-5940-4c08-921c-17a8960fcf4b", "householdId": "50a12e5e-5940-4c08-921c-17a8960fcf4b", "packageId": "60a12e5e-5940-4c08-921c-17a8960fcf4b", "formResponses": { "joint": { "formId": "30a12e5e-5940-4c08-921c-17a8960fcf4b", "formVersion": "1.0.0", "responses": { "household_size": 3, "monthly_earned_income": "2500", "residential_state": "CO" } } }, "status": { "value": "submitted", "description": "" }, "submittedAt": "2026-05-24T10:30:00Z", "createdAt": "2026-05-24T10:28:00Z", "lastModifiedAt": "2026-05-24T10:30:00Z"}$schema: https://json-schema.org/draft/2020-12/schema$id: ApplicationBase.yamltype: objectproperties: id: $ref: uuid.yaml description: The application's unique identifier. householdId: $ref: uuid.yaml description: The household this application is for. packageId: $ref: uuid.yaml description: |- The application package being submitted. The server resolves which programs the household is enrolled in based on the package's `programs` list — clients do not specify programs directly. formResponses: $ref: "#/$defs/RecordAppFormResponse" description: Form responses keyed by form identifier. status: $ref: AppStatus.yaml description: The status of the application. submittedAt: anyOf: - type: string format: date-time - type: "null" description: The timestamp at which the application was submitted. Null while `draft`. validationErrors: type: array items: {} description: Non-fatal validation errors that occurred during submission. customFields: $ref: "#/$defs/RecordCustomField" description: Implementation-defined custom fields. enrollments: type: array items: $ref: EnrollmentRef.yaml description: Abbreviated enrollment records created by this application. createdAt: type: string format: date-time description: The timestamp (in UTC) at which the record was created. lastModifiedAt: type: string format: date-time description: The timestamp (in UTC) at which the record was last modified.required: - id - householdId - packageId - status - createdAt - lastModifiedAtexamples: - id: 40a12e5e-5940-4c08-921c-17a8960fcf4b householdId: 50a12e5e-5940-4c08-921c-17a8960fcf4b packageId: 60a12e5e-5940-4c08-921c-17a8960fcf4b formResponses: joint: formId: 30a12e5e-5940-4c08-921c-17a8960fcf4b formVersion: 1.0.0 responses: household_size: 3 monthly_earned_income: "2500" residential_state: CO status: value: submitted description: "" submittedAt: 2026-05-24T10:30:00Z createdAt: 2026-05-24T10:28:00Z lastModifiedAt: 2026-05-24T10:30:00Zdescription: |- A submission event linking a Household to one or more Programs. Carries a snapshot of the form responses submitted. Creates one Enrollment per program on submission, surfaced inline as `enrollments`.$defs: RecordAppFormResponse: type: object properties: {} unevaluatedProperties: $ref: AppFormResponse.yaml RecordCustomField: type: object properties: {} unevaluatedProperties: $ref: CustomField.yaml/** A submission event linking a Household to one or more Programs. Carries a * snapshot of the form responses submitted. Creates one Enrollment per * program on submission, surfaced inline as `enrollments`. */@example(Examples.Application.submitted)@Versioning.added(Versions.v0_1)model ApplicationBase { /** The application's unique identifier. */ id: Types.uuid;
/** The household this application is for. */ householdId: Types.uuid;
/** The application package being submitted. The server resolves which * programs the household is enrolled in based on the package's `programs` * list — clients do not specify programs directly. */ packageId: Types.uuid;
/** Form responses keyed by form identifier. */ formResponses?: Record<AppFormResponse>;
/** The status of the application. */ status: AppStatus;
/** The timestamp at which the application was submitted. Null while `draft`. */ submittedAt?: utcDateTime | null;
/** Non-fatal validation errors that occurred during submission. */ validationErrors?: Array<unknown>;
/** Implementation-defined custom fields. */ customFields?: Record<Fields.CustomField>;
/** Abbreviated enrollment records created by this application. */ enrollments?: EnrollmentRef[];
/** Standard system metadata (createdAt, lastModifiedAt). */ ...Fields.SystemMetadata;}AppStatus
Section titled “AppStatus”The status of an application.
| Property | Type | Required | Description |
|---|---|---|---|
value | AppStatusOptions | Yes | The selected value, typed to `T`. |
customValue | string | No | Caller-defined value when `value` is the `custom` option (or otherwise does not fit a predefined option in `T`). |
description | string | No | Human-readable description or annotation for the value. |
{ "value": "draft", "customValue": "string", "description": "string"}$schema: https://json-schema.org/draft/2020-12/schema$id: AppStatus.yamltype: objectproperties: value: $ref: AppStatusOptions.yaml description: The selected value, typed to `T`. customValue: type: string description: |- Caller-defined value when `value` is the `custom` option (or otherwise does not fit a predefined option in `T`). description: type: string description: Human-readable description or annotation for the value.required: - valuedescription: The status of an application./** The status of an application. */@Versioning.added(Versions.v0_1)model AppStatus is Fields.ExtensibleEnumT<AppStatusOptions>;
// #########################################################// AppFormResponse// #########################################################
/** A response to a single form within an application, captured as a snapshot * at submission time. */@example(Examples.Application.jointSnapMedicaidResponse)@Versioning.added(Versions.v0_1)model AppFormResponse { /** The unique identifier of the form. */ formId: Types.uuid;
/** The semantic version of the form. */ formVersion: string;
/** A map of question IDs to submitted answers. */ responses: Record<unknown>;}AppStatusOptions
Section titled “AppStatusOptions”Predefined set of application statuses.
| Value | Description |
|---|---|
draft | The application is being filled out. |
submitted | The application has been submitted for processing. |
withdrawn | The application was withdrawn by the household. |
custom | A caller-defined status. |
"draft"$schema: https://json-schema.org/draft/2020-12/schema$id: AppStatusOptions.yamltype: stringenum: - draft - submitted - withdrawn - customdescription: |- Predefined set of application statuses.
- `draft`: The application is being filled out. - `submitted`: The application has been submitted for processing. - `withdrawn`: The application was withdrawn by the household. - `custom`: A caller-defined status./** Predefined set of application statuses. * * - `draft`: The application is being filled out. * - `submitted`: The application has been submitted for processing. * - `withdrawn`: The application was withdrawn by the household. * - `custom`: A caller-defined status. */@Versioning.added(Versions.v0_1)enum AppStatusOptions { draft, submitted, withdrawn, custom,}AppFormResponse
Section titled “AppFormResponse”A response to a single form within an application, captured as a snapshot at submission time.
| Property | Type | Required | Description |
|---|---|---|---|
formId | uuid | Yes | The unique identifier of the form. |
formVersion | string | Yes | The semantic version of the form. |
responses | RecordUnknown | Yes | A map of question IDs to submitted answers. |
{ "formId": "30a12e5e-5940-4c08-921c-17a8960fcf4b", "formVersion": "1.0.0", "responses": { "household_size": 3, "monthly_earned_income": "2500", "residential_state": "CO" }}$schema: https://json-schema.org/draft/2020-12/schema$id: AppFormResponse.yamltype: objectproperties: formId: $ref: uuid.yaml description: The unique identifier of the form. formVersion: type: string description: The semantic version of the form. responses: $ref: "#/$defs/RecordUnknown" description: A map of question IDs to submitted answers.required: - formId - formVersion - responsesexamples: - formId: 30a12e5e-5940-4c08-921c-17a8960fcf4b formVersion: 1.0.0 responses: household_size: 3 monthly_earned_income: "2500" residential_state: COdescription: |- A response to a single form within an application, captured as a snapshot at submission time.$defs: RecordUnknown: type: object properties: {} unevaluatedProperties: {}/** A response to a single form within an application, captured as a snapshot * at submission time. */@example(Examples.Application.jointSnapMedicaidResponse)@Versioning.added(Versions.v0_1)model AppFormResponse { /** The unique identifier of the form. */ formId: Types.uuid;
/** The semantic version of the form. */ formVersion: string;
/** A map of question IDs to submitted answers. */ responses: Record<unknown>;}