@codeforamerica/safety-net-openapi-california 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/dist/applications/client/client.gen.d.ts +2 -0
  2. package/dist/applications/client/client.gen.js +128 -0
  3. package/dist/applications/client/index.d.ts +8 -0
  4. package/dist/applications/client/index.js +6 -0
  5. package/dist/applications/client/types.gen.d.ts +88 -0
  6. package/dist/applications/client/types.gen.js +2 -0
  7. package/dist/applications/client/utils.gen.d.ts +14 -0
  8. package/dist/applications/client/utils.gen.js +171 -0
  9. package/dist/applications/client.gen.d.ts +12 -0
  10. package/dist/applications/client.gen.js +3 -0
  11. package/dist/applications/core/auth.gen.d.ts +18 -0
  12. package/dist/applications/core/auth.gen.js +14 -0
  13. package/dist/applications/core/bodySerializer.gen.d.ts +25 -0
  14. package/dist/applications/core/bodySerializer.gen.js +57 -0
  15. package/dist/applications/core/params.gen.d.ts +43 -0
  16. package/dist/applications/core/params.gen.js +100 -0
  17. package/dist/applications/core/pathSerializer.gen.d.ts +33 -0
  18. package/dist/applications/core/pathSerializer.gen.js +114 -0
  19. package/dist/applications/core/queryKeySerializer.gen.d.ts +18 -0
  20. package/dist/applications/core/queryKeySerializer.gen.js +99 -0
  21. package/dist/applications/core/serverSentEvents.gen.d.ts +71 -0
  22. package/dist/applications/core/serverSentEvents.gen.js +137 -0
  23. package/dist/applications/core/types.gen.d.ts +78 -0
  24. package/dist/applications/core/types.gen.js +2 -0
  25. package/dist/applications/core/utils.gen.d.ts +19 -0
  26. package/dist/applications/core/utils.gen.js +87 -0
  27. package/dist/applications/index.d.ts +2 -0
  28. package/dist/applications/index.js +2 -0
  29. package/dist/applications/sdk.gen.d.ts +45 -0
  30. package/dist/applications/sdk.gen.js +70 -0
  31. package/dist/applications/types.gen.d.ts +34007 -0
  32. package/dist/applications/types.gen.js +2 -0
  33. package/dist/applications/zod.gen.d.ts +17374 -0
  34. package/dist/applications/zod.gen.js +16857 -0
  35. package/dist/households/client/client.gen.d.ts +2 -0
  36. package/dist/households/client/client.gen.js +128 -0
  37. package/dist/households/client/index.d.ts +8 -0
  38. package/dist/households/client/index.js +6 -0
  39. package/dist/households/client/types.gen.d.ts +88 -0
  40. package/dist/households/client/types.gen.js +2 -0
  41. package/dist/households/client/utils.gen.d.ts +14 -0
  42. package/dist/households/client/utils.gen.js +171 -0
  43. package/dist/households/client.gen.d.ts +12 -0
  44. package/dist/households/client.gen.js +3 -0
  45. package/dist/households/core/auth.gen.d.ts +18 -0
  46. package/dist/households/core/auth.gen.js +14 -0
  47. package/dist/households/core/bodySerializer.gen.d.ts +25 -0
  48. package/dist/households/core/bodySerializer.gen.js +57 -0
  49. package/dist/households/core/params.gen.d.ts +43 -0
  50. package/dist/households/core/params.gen.js +100 -0
  51. package/dist/households/core/pathSerializer.gen.d.ts +33 -0
  52. package/dist/households/core/pathSerializer.gen.js +114 -0
  53. package/dist/households/core/queryKeySerializer.gen.d.ts +18 -0
  54. package/dist/households/core/queryKeySerializer.gen.js +99 -0
  55. package/dist/households/core/serverSentEvents.gen.d.ts +71 -0
  56. package/dist/households/core/serverSentEvents.gen.js +137 -0
  57. package/dist/households/core/types.gen.d.ts +78 -0
  58. package/dist/households/core/types.gen.js +2 -0
  59. package/dist/households/core/utils.gen.d.ts +19 -0
  60. package/dist/households/core/utils.gen.js +87 -0
  61. package/dist/households/index.d.ts +2 -0
  62. package/dist/households/index.js +2 -0
  63. package/dist/households/sdk.gen.d.ts +45 -0
  64. package/dist/households/sdk.gen.js +70 -0
  65. package/dist/households/types.gen.d.ts +1693 -0
  66. package/dist/households/types.gen.js +2 -0
  67. package/dist/households/zod.gen.d.ts +624 -0
  68. package/dist/households/zod.gen.js +625 -0
  69. package/dist/incomes/client/client.gen.d.ts +2 -0
  70. package/dist/incomes/client/client.gen.js +128 -0
  71. package/dist/incomes/client/index.d.ts +8 -0
  72. package/dist/incomes/client/index.js +6 -0
  73. package/dist/incomes/client/types.gen.d.ts +88 -0
  74. package/dist/incomes/client/types.gen.js +2 -0
  75. package/dist/incomes/client/utils.gen.d.ts +14 -0
  76. package/dist/incomes/client/utils.gen.js +171 -0
  77. package/dist/incomes/client.gen.d.ts +12 -0
  78. package/dist/incomes/client.gen.js +3 -0
  79. package/dist/incomes/core/auth.gen.d.ts +18 -0
  80. package/dist/incomes/core/auth.gen.js +14 -0
  81. package/dist/incomes/core/bodySerializer.gen.d.ts +25 -0
  82. package/dist/incomes/core/bodySerializer.gen.js +57 -0
  83. package/dist/incomes/core/params.gen.d.ts +43 -0
  84. package/dist/incomes/core/params.gen.js +100 -0
  85. package/dist/incomes/core/pathSerializer.gen.d.ts +33 -0
  86. package/dist/incomes/core/pathSerializer.gen.js +114 -0
  87. package/dist/incomes/core/queryKeySerializer.gen.d.ts +18 -0
  88. package/dist/incomes/core/queryKeySerializer.gen.js +99 -0
  89. package/dist/incomes/core/serverSentEvents.gen.d.ts +71 -0
  90. package/dist/incomes/core/serverSentEvents.gen.js +137 -0
  91. package/dist/incomes/core/types.gen.d.ts +78 -0
  92. package/dist/incomes/core/types.gen.js +2 -0
  93. package/dist/incomes/core/utils.gen.d.ts +19 -0
  94. package/dist/incomes/core/utils.gen.js +87 -0
  95. package/dist/incomes/index.d.ts +2 -0
  96. package/dist/incomes/index.js +2 -0
  97. package/dist/incomes/sdk.gen.d.ts +47 -0
  98. package/dist/incomes/sdk.gen.js +72 -0
  99. package/dist/incomes/types.gen.d.ts +1425 -0
  100. package/dist/incomes/types.gen.js +2 -0
  101. package/dist/incomes/zod.gen.d.ts +961 -0
  102. package/dist/incomes/zod.gen.js +920 -0
  103. package/dist/index.d.ts +5 -0
  104. package/dist/index.js +5 -0
  105. package/dist/persons/client/client.gen.d.ts +2 -0
  106. package/dist/persons/client/client.gen.js +128 -0
  107. package/dist/persons/client/index.d.ts +8 -0
  108. package/dist/persons/client/index.js +6 -0
  109. package/dist/persons/client/types.gen.d.ts +88 -0
  110. package/dist/persons/client/types.gen.js +2 -0
  111. package/dist/persons/client/utils.gen.d.ts +14 -0
  112. package/dist/persons/client/utils.gen.js +171 -0
  113. package/dist/persons/client.gen.d.ts +12 -0
  114. package/dist/persons/client.gen.js +3 -0
  115. package/dist/persons/core/auth.gen.d.ts +18 -0
  116. package/dist/persons/core/auth.gen.js +14 -0
  117. package/dist/persons/core/bodySerializer.gen.d.ts +25 -0
  118. package/dist/persons/core/bodySerializer.gen.js +57 -0
  119. package/dist/persons/core/params.gen.d.ts +43 -0
  120. package/dist/persons/core/params.gen.js +100 -0
  121. package/dist/persons/core/pathSerializer.gen.d.ts +33 -0
  122. package/dist/persons/core/pathSerializer.gen.js +114 -0
  123. package/dist/persons/core/queryKeySerializer.gen.d.ts +18 -0
  124. package/dist/persons/core/queryKeySerializer.gen.js +99 -0
  125. package/dist/persons/core/serverSentEvents.gen.d.ts +71 -0
  126. package/dist/persons/core/serverSentEvents.gen.js +137 -0
  127. package/dist/persons/core/types.gen.d.ts +78 -0
  128. package/dist/persons/core/types.gen.js +2 -0
  129. package/dist/persons/core/utils.gen.d.ts +19 -0
  130. package/dist/persons/core/utils.gen.js +87 -0
  131. package/dist/persons/index.d.ts +2 -0
  132. package/dist/persons/index.js +2 -0
  133. package/dist/persons/sdk.gen.d.ts +45 -0
  134. package/dist/persons/sdk.gen.js +70 -0
  135. package/dist/persons/types.gen.d.ts +7595 -0
  136. package/dist/persons/types.gen.js +2 -0
  137. package/dist/persons/zod.gen.d.ts +3578 -0
  138. package/dist/persons/zod.gen.js +3579 -0
  139. package/dist/search-helpers.d.ts +242 -0
  140. package/dist/search-helpers.js +244 -0
  141. package/package.json +95 -0
  142. package/src/applications/client/client.gen.ts +166 -0
  143. package/src/applications/client/index.ts +23 -0
  144. package/src/applications/client/types.gen.ts +197 -0
  145. package/src/applications/client/utils.gen.ts +213 -0
  146. package/src/applications/client.gen.ts +16 -0
  147. package/src/applications/core/auth.gen.ts +42 -0
  148. package/src/applications/core/bodySerializer.gen.ts +100 -0
  149. package/src/applications/core/params.gen.ts +176 -0
  150. package/src/applications/core/pathSerializer.gen.ts +181 -0
  151. package/src/applications/core/queryKeySerializer.gen.ts +136 -0
  152. package/src/applications/core/serverSentEvents.gen.ts +266 -0
  153. package/src/applications/core/types.gen.ts +118 -0
  154. package/src/applications/core/utils.gen.ts +143 -0
  155. package/src/applications/index.ts +4 -0
  156. package/src/applications/sdk.gen.ts +92 -0
  157. package/src/applications/types.gen.ts +34043 -0
  158. package/src/applications/zod.gen.ts +16877 -0
  159. package/src/households/client/client.gen.ts +166 -0
  160. package/src/households/client/index.ts +23 -0
  161. package/src/households/client/types.gen.ts +197 -0
  162. package/src/households/client/utils.gen.ts +213 -0
  163. package/src/households/client.gen.ts +16 -0
  164. package/src/households/core/auth.gen.ts +42 -0
  165. package/src/households/core/bodySerializer.gen.ts +100 -0
  166. package/src/households/core/params.gen.ts +176 -0
  167. package/src/households/core/pathSerializer.gen.ts +181 -0
  168. package/src/households/core/queryKeySerializer.gen.ts +136 -0
  169. package/src/households/core/serverSentEvents.gen.ts +266 -0
  170. package/src/households/core/types.gen.ts +118 -0
  171. package/src/households/core/utils.gen.ts +143 -0
  172. package/src/households/index.ts +4 -0
  173. package/src/households/sdk.gen.ts +92 -0
  174. package/src/households/types.gen.ts +1729 -0
  175. package/src/households/zod.gen.ts +645 -0
  176. package/src/incomes/client/client.gen.ts +166 -0
  177. package/src/incomes/client/index.ts +23 -0
  178. package/src/incomes/client/types.gen.ts +197 -0
  179. package/src/incomes/client/utils.gen.ts +213 -0
  180. package/src/incomes/client.gen.ts +16 -0
  181. package/src/incomes/core/auth.gen.ts +42 -0
  182. package/src/incomes/core/bodySerializer.gen.ts +100 -0
  183. package/src/incomes/core/params.gen.ts +176 -0
  184. package/src/incomes/core/pathSerializer.gen.ts +181 -0
  185. package/src/incomes/core/queryKeySerializer.gen.ts +136 -0
  186. package/src/incomes/core/serverSentEvents.gen.ts +266 -0
  187. package/src/incomes/core/types.gen.ts +118 -0
  188. package/src/incomes/core/utils.gen.ts +143 -0
  189. package/src/incomes/index.ts +4 -0
  190. package/src/incomes/sdk.gen.ts +94 -0
  191. package/src/incomes/types.gen.ts +1460 -0
  192. package/src/incomes/zod.gen.ts +939 -0
  193. package/src/index.ts +5 -0
  194. package/src/persons/client/client.gen.ts +166 -0
  195. package/src/persons/client/index.ts +23 -0
  196. package/src/persons/client/types.gen.ts +197 -0
  197. package/src/persons/client/utils.gen.ts +213 -0
  198. package/src/persons/client.gen.ts +16 -0
  199. package/src/persons/core/auth.gen.ts +42 -0
  200. package/src/persons/core/bodySerializer.gen.ts +100 -0
  201. package/src/persons/core/params.gen.ts +176 -0
  202. package/src/persons/core/pathSerializer.gen.ts +181 -0
  203. package/src/persons/core/queryKeySerializer.gen.ts +136 -0
  204. package/src/persons/core/serverSentEvents.gen.ts +266 -0
  205. package/src/persons/core/types.gen.ts +118 -0
  206. package/src/persons/core/utils.gen.ts +143 -0
  207. package/src/persons/index.ts +4 -0
  208. package/src/persons/sdk.gen.ts +92 -0
  209. package/src/persons/types.gen.ts +7631 -0
  210. package/src/persons/zod.gen.ts +3599 -0
  211. package/src/search-helpers.ts +264 -0
@@ -0,0 +1,3579 @@
1
+ // This file is auto-generated by @hey-api/openapi-ts
2
+ import { z } from 'zod';
3
+ export const zPerson = z.object({
4
+ name: z.optional(z.object({
5
+ firstName: z.string().min(1).max(100),
6
+ middleInitial: z.optional(z.string().max(1)),
7
+ middleName: z.optional(z.string().max(100)),
8
+ lastName: z.string().min(1).max(100),
9
+ maidenName: z.optional(z.string().max(100)),
10
+ suffix: z.optional(z.string().max(20))
11
+ })),
12
+ dateOfBirth: z.optional(z.iso.date()),
13
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
14
+ address: z.optional(z.object({
15
+ addressLine1: z.string().min(1).max(150),
16
+ addressLine2: z.optional(z.string().max(150)),
17
+ city: z.string().min(1).max(100),
18
+ stateProvince: z.string().min(1).max(100),
19
+ postalCode: z.string().min(3).max(20),
20
+ county: z.optional(z.string().max(100))
21
+ })),
22
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
23
+ email: z.optional(z.email().max(320))
24
+ }).and(z.object({
25
+ id: z.optional(z.uuid()),
26
+ demographicInfo: z.optional(z.object({
27
+ sex: z.optional(z.enum([
28
+ 'male',
29
+ 'female',
30
+ 'unknown'
31
+ ])),
32
+ maritalStatus: z.optional(z.enum([
33
+ 'single',
34
+ 'married',
35
+ 'divorced',
36
+ 'separated',
37
+ 'widowed',
38
+ 'civil_union',
39
+ 'domestic_partnership'
40
+ ])),
41
+ isHispanicOrLatino: z.optional(z.boolean()),
42
+ race: z.optional(z.array(z.enum([
43
+ 'american_indian_alaskan_native',
44
+ 'asian',
45
+ 'black_african_american',
46
+ 'native_hawaiian_pacific_islander',
47
+ 'white'
48
+ ]))),
49
+ gender: z.optional(z.enum([
50
+ 'male',
51
+ 'female',
52
+ 'nonbinary',
53
+ 'unknown'
54
+ ]))
55
+ })),
56
+ citizenshipInfo: z.optional(z.object({
57
+ status: z.optional(z.enum([
58
+ 'us_citizen',
59
+ 'lawful_permanent_resident',
60
+ 'qualified_alien',
61
+ 'prucol',
62
+ 'undocumented',
63
+ 'other'
64
+ ])),
65
+ certificateNumber: z.optional(z.string().max(50)),
66
+ immigrationInfo: z.optional(z.object({
67
+ status: z.optional(z.string().max(100)),
68
+ documentType: z.optional(z.string().max(100)),
69
+ documentNumber: z.optional(z.string().max(100)),
70
+ alienOrI94Number: z.optional(z.string().max(100)),
71
+ documentExpirationDate: z.optional(z.iso.date()),
72
+ countryOfIssuance: z.optional(z.string().max(100)),
73
+ hasSponsor: z.optional(z.boolean()),
74
+ sponsor: z.optional(z.object({
75
+ name: z.optional(z.object({
76
+ firstName: z.string().min(1).max(100),
77
+ middleInitial: z.optional(z.string().max(1)),
78
+ middleName: z.optional(z.string().max(100)),
79
+ lastName: z.string().min(1).max(100),
80
+ maidenName: z.optional(z.string().max(100)),
81
+ suffix: z.optional(z.string().max(20))
82
+ })),
83
+ dateOfBirth: z.optional(z.iso.date()),
84
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
85
+ address: z.optional(z.object({
86
+ addressLine1: z.string().min(1).max(150),
87
+ addressLine2: z.optional(z.string().max(150)),
88
+ city: z.string().min(1).max(100),
89
+ stateProvince: z.string().min(1).max(100),
90
+ postalCode: z.string().min(3).max(20),
91
+ county: z.optional(z.string().max(100))
92
+ })),
93
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
94
+ email: z.optional(z.email().max(320))
95
+ }).and(z.object({
96
+ spouse: z.optional(z.object({
97
+ name: z.optional(z.object({
98
+ firstName: z.string().min(1).max(100),
99
+ middleInitial: z.optional(z.string().max(1)),
100
+ middleName: z.optional(z.string().max(100)),
101
+ lastName: z.string().min(1).max(100),
102
+ maidenName: z.optional(z.string().max(100)),
103
+ suffix: z.optional(z.string().max(20))
104
+ })),
105
+ dateOfBirth: z.optional(z.iso.date()),
106
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
107
+ address: z.optional(z.object({
108
+ addressLine1: z.string().min(1).max(150),
109
+ addressLine2: z.optional(z.string().max(150)),
110
+ city: z.string().min(1).max(100),
111
+ stateProvince: z.string().min(1).max(100),
112
+ postalCode: z.string().min(3).max(20),
113
+ county: z.optional(z.string().max(100))
114
+ })),
115
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
116
+ email: z.optional(z.email().max(320))
117
+ })),
118
+ totalPeopleInHousehold: z.optional(z.int().gte(1))
119
+ })))
120
+ }))
121
+ })),
122
+ contactInfo: z.optional(z.object({
123
+ otherPhoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
124
+ mailingAddress: z.optional(z.object({
125
+ addressLine1: z.string().min(1).max(150),
126
+ addressLine2: z.optional(z.string().max(150)),
127
+ city: z.string().min(1).max(100),
128
+ stateProvince: z.string().min(1).max(100),
129
+ postalCode: z.string().min(3).max(20),
130
+ county: z.optional(z.string().max(100))
131
+ })),
132
+ isHomeless: z.optional(z.boolean()),
133
+ preferredNoticeMethod: z.optional(z.enum([
134
+ 'paper',
135
+ 'email',
136
+ 'both'
137
+ ])),
138
+ languagePreference: z.optional(z.object({
139
+ written: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/)),
140
+ spoken: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/))
141
+ })),
142
+ preferredContactMethod: z.optional(z.enum([
143
+ 'phone',
144
+ 'email',
145
+ 'mail',
146
+ 'sms'
147
+ ]))
148
+ })),
149
+ employmentInfo: z.optional(z.object({
150
+ jobs: z.optional(z.array(z.object({
151
+ employer: z.optional(z.object({
152
+ name: z.optional(z.string().max(200)),
153
+ phone: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
154
+ address: z.optional(z.object({
155
+ addressLine1: z.string().min(1).max(150),
156
+ addressLine2: z.optional(z.string().max(150)),
157
+ city: z.string().min(1).max(100),
158
+ stateProvince: z.string().min(1).max(100),
159
+ postalCode: z.string().min(3).max(20),
160
+ county: z.optional(z.string().max(100))
161
+ })),
162
+ identificationNumber: z.optional(z.string().max(50))
163
+ })),
164
+ startDate: z.optional(z.iso.date()),
165
+ endDate: z.optional(z.iso.date())
166
+ })))
167
+ })),
168
+ educationInfo: z.optional(z.object({
169
+ lastGradeCompleted: z.optional(z.string().max(50)),
170
+ isCurrentlyEnrolled: z.optional(z.boolean()),
171
+ schoolName: z.optional(z.string().max(200)),
172
+ startDate: z.optional(z.iso.date()),
173
+ isFullTimeStudent: z.optional(z.boolean()),
174
+ expectedGraduationDate: z.optional(z.iso.date())
175
+ })),
176
+ militaryInfo: z.optional(z.object({
177
+ isMilitaryServiceMember: z.optional(z.boolean()),
178
+ veteranStatus: z.optional(z.boolean())
179
+ })),
180
+ tribalInfo: z.optional(z.object({
181
+ tribeName: z.optional(z.string().max(200)),
182
+ tribeState: z.optional(z.string().max(100)),
183
+ hasReceivedServiceFromIndianHealthService: z.optional(z.boolean()),
184
+ isEligibleForIndianHealthService: z.optional(z.boolean())
185
+ })),
186
+ consentToShareInformation: z.optional(z.boolean()),
187
+ createdAt: z.optional(z.iso.datetime().readonly()),
188
+ updatedAt: z.optional(z.iso.datetime().readonly()),
189
+ countyCode: z.optional(z.string().regex(/^[0-5][0-9]$/)),
190
+ countyName: z.optional(z.enum([
191
+ 'Alameda',
192
+ 'Alpine',
193
+ 'Amador',
194
+ 'Butte',
195
+ 'Calaveras',
196
+ 'Colusa',
197
+ 'Contra Costa',
198
+ 'Del Norte',
199
+ 'El Dorado',
200
+ 'Fresno',
201
+ 'Glenn',
202
+ 'Humboldt',
203
+ 'Imperial',
204
+ 'Inyo',
205
+ 'Kern',
206
+ 'Kings',
207
+ 'Lake',
208
+ 'Lassen',
209
+ 'Los Angeles',
210
+ 'Madera',
211
+ 'Marin',
212
+ 'Mariposa',
213
+ 'Mendocino',
214
+ 'Merced',
215
+ 'Modoc',
216
+ 'Mono',
217
+ 'Monterey',
218
+ 'Napa',
219
+ 'Nevada',
220
+ 'Orange',
221
+ 'Placer',
222
+ 'Plumas',
223
+ 'Riverside',
224
+ 'Sacramento',
225
+ 'San Benito',
226
+ 'San Bernardino',
227
+ 'San Diego',
228
+ 'San Francisco',
229
+ 'San Joaquin',
230
+ 'San Luis Obispo',
231
+ 'San Mateo',
232
+ 'Santa Barbara',
233
+ 'Santa Clara',
234
+ 'Santa Cruz',
235
+ 'Shasta',
236
+ 'Sierra',
237
+ 'Siskiyou',
238
+ 'Solano',
239
+ 'Sonoma',
240
+ 'Stanislaus',
241
+ 'Sutter',
242
+ 'Tehama',
243
+ 'Trinity',
244
+ 'Tulare',
245
+ 'Tuolumne',
246
+ 'Ventura',
247
+ 'Yolo',
248
+ 'Yuba'
249
+ ])),
250
+ calworksEligible: z.optional(z.boolean()),
251
+ calfreshEligible: z.optional(z.boolean()),
252
+ medicalEligible: z.optional(z.boolean())
253
+ }));
254
+ export const zPersonCreate = z.object({
255
+ name: z.optional(z.object({
256
+ firstName: z.string().min(1).max(100),
257
+ middleInitial: z.optional(z.string().max(1)),
258
+ middleName: z.optional(z.string().max(100)),
259
+ lastName: z.string().min(1).max(100),
260
+ maidenName: z.optional(z.string().max(100)),
261
+ suffix: z.optional(z.string().max(20))
262
+ })),
263
+ dateOfBirth: z.optional(z.iso.date()),
264
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
265
+ address: z.optional(z.object({
266
+ addressLine1: z.string().min(1).max(150),
267
+ addressLine2: z.optional(z.string().max(150)),
268
+ city: z.string().min(1).max(100),
269
+ stateProvince: z.string().min(1).max(100),
270
+ postalCode: z.string().min(3).max(20),
271
+ county: z.optional(z.string().max(100))
272
+ })),
273
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
274
+ email: z.optional(z.email().max(320))
275
+ }).and(z.object({
276
+ id: z.optional(z.uuid()),
277
+ demographicInfo: z.optional(z.object({
278
+ sex: z.optional(z.enum([
279
+ 'male',
280
+ 'female',
281
+ 'unknown'
282
+ ])),
283
+ maritalStatus: z.optional(z.enum([
284
+ 'single',
285
+ 'married',
286
+ 'divorced',
287
+ 'separated',
288
+ 'widowed',
289
+ 'civil_union',
290
+ 'domestic_partnership'
291
+ ])),
292
+ isHispanicOrLatino: z.optional(z.boolean()),
293
+ race: z.optional(z.array(z.enum([
294
+ 'american_indian_alaskan_native',
295
+ 'asian',
296
+ 'black_african_american',
297
+ 'native_hawaiian_pacific_islander',
298
+ 'white'
299
+ ]))),
300
+ gender: z.optional(z.enum([
301
+ 'male',
302
+ 'female',
303
+ 'nonbinary',
304
+ 'unknown'
305
+ ]))
306
+ })),
307
+ citizenshipInfo: z.optional(z.object({
308
+ status: z.optional(z.enum([
309
+ 'us_citizen',
310
+ 'lawful_permanent_resident',
311
+ 'qualified_alien',
312
+ 'prucol',
313
+ 'undocumented',
314
+ 'other'
315
+ ])),
316
+ certificateNumber: z.optional(z.string().max(50)),
317
+ immigrationInfo: z.optional(z.object({
318
+ status: z.optional(z.string().max(100)),
319
+ documentType: z.optional(z.string().max(100)),
320
+ documentNumber: z.optional(z.string().max(100)),
321
+ alienOrI94Number: z.optional(z.string().max(100)),
322
+ documentExpirationDate: z.optional(z.iso.date()),
323
+ countryOfIssuance: z.optional(z.string().max(100)),
324
+ hasSponsor: z.optional(z.boolean()),
325
+ sponsor: z.optional(z.object({
326
+ name: z.optional(z.object({
327
+ firstName: z.string().min(1).max(100),
328
+ middleInitial: z.optional(z.string().max(1)),
329
+ middleName: z.optional(z.string().max(100)),
330
+ lastName: z.string().min(1).max(100),
331
+ maidenName: z.optional(z.string().max(100)),
332
+ suffix: z.optional(z.string().max(20))
333
+ })),
334
+ dateOfBirth: z.optional(z.iso.date()),
335
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
336
+ address: z.optional(z.object({
337
+ addressLine1: z.string().min(1).max(150),
338
+ addressLine2: z.optional(z.string().max(150)),
339
+ city: z.string().min(1).max(100),
340
+ stateProvince: z.string().min(1).max(100),
341
+ postalCode: z.string().min(3).max(20),
342
+ county: z.optional(z.string().max(100))
343
+ })),
344
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
345
+ email: z.optional(z.email().max(320))
346
+ }).and(z.object({
347
+ spouse: z.optional(z.object({
348
+ name: z.optional(z.object({
349
+ firstName: z.string().min(1).max(100),
350
+ middleInitial: z.optional(z.string().max(1)),
351
+ middleName: z.optional(z.string().max(100)),
352
+ lastName: z.string().min(1).max(100),
353
+ maidenName: z.optional(z.string().max(100)),
354
+ suffix: z.optional(z.string().max(20))
355
+ })),
356
+ dateOfBirth: z.optional(z.iso.date()),
357
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
358
+ address: z.optional(z.object({
359
+ addressLine1: z.string().min(1).max(150),
360
+ addressLine2: z.optional(z.string().max(150)),
361
+ city: z.string().min(1).max(100),
362
+ stateProvince: z.string().min(1).max(100),
363
+ postalCode: z.string().min(3).max(20),
364
+ county: z.optional(z.string().max(100))
365
+ })),
366
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
367
+ email: z.optional(z.email().max(320))
368
+ })),
369
+ totalPeopleInHousehold: z.optional(z.int().gte(1))
370
+ })))
371
+ }))
372
+ })),
373
+ contactInfo: z.optional(z.object({
374
+ otherPhoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
375
+ mailingAddress: z.optional(z.object({
376
+ addressLine1: z.string().min(1).max(150),
377
+ addressLine2: z.optional(z.string().max(150)),
378
+ city: z.string().min(1).max(100),
379
+ stateProvince: z.string().min(1).max(100),
380
+ postalCode: z.string().min(3).max(20),
381
+ county: z.optional(z.string().max(100))
382
+ })),
383
+ isHomeless: z.optional(z.boolean()),
384
+ preferredNoticeMethod: z.optional(z.enum([
385
+ 'paper',
386
+ 'email',
387
+ 'both'
388
+ ])),
389
+ languagePreference: z.optional(z.object({
390
+ written: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/)),
391
+ spoken: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/))
392
+ })),
393
+ preferredContactMethod: z.optional(z.enum([
394
+ 'phone',
395
+ 'email',
396
+ 'mail',
397
+ 'sms'
398
+ ]))
399
+ })),
400
+ employmentInfo: z.optional(z.object({
401
+ jobs: z.optional(z.array(z.object({
402
+ employer: z.optional(z.object({
403
+ name: z.optional(z.string().max(200)),
404
+ phone: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
405
+ address: z.optional(z.object({
406
+ addressLine1: z.string().min(1).max(150),
407
+ addressLine2: z.optional(z.string().max(150)),
408
+ city: z.string().min(1).max(100),
409
+ stateProvince: z.string().min(1).max(100),
410
+ postalCode: z.string().min(3).max(20),
411
+ county: z.optional(z.string().max(100))
412
+ })),
413
+ identificationNumber: z.optional(z.string().max(50))
414
+ })),
415
+ startDate: z.optional(z.iso.date()),
416
+ endDate: z.optional(z.iso.date())
417
+ })))
418
+ })),
419
+ educationInfo: z.optional(z.object({
420
+ lastGradeCompleted: z.optional(z.string().max(50)),
421
+ isCurrentlyEnrolled: z.optional(z.boolean()),
422
+ schoolName: z.optional(z.string().max(200)),
423
+ startDate: z.optional(z.iso.date()),
424
+ isFullTimeStudent: z.optional(z.boolean()),
425
+ expectedGraduationDate: z.optional(z.iso.date())
426
+ })),
427
+ militaryInfo: z.optional(z.object({
428
+ isMilitaryServiceMember: z.optional(z.boolean()),
429
+ veteranStatus: z.optional(z.boolean())
430
+ })),
431
+ tribalInfo: z.optional(z.object({
432
+ tribeName: z.optional(z.string().max(200)),
433
+ tribeState: z.optional(z.string().max(100)),
434
+ hasReceivedServiceFromIndianHealthService: z.optional(z.boolean()),
435
+ isEligibleForIndianHealthService: z.optional(z.boolean())
436
+ })),
437
+ consentToShareInformation: z.optional(z.boolean()),
438
+ createdAt: z.optional(z.iso.datetime().readonly()),
439
+ updatedAt: z.optional(z.iso.datetime().readonly()),
440
+ countyCode: z.optional(z.string().regex(/^[0-5][0-9]$/)),
441
+ countyName: z.optional(z.enum([
442
+ 'Alameda',
443
+ 'Alpine',
444
+ 'Amador',
445
+ 'Butte',
446
+ 'Calaveras',
447
+ 'Colusa',
448
+ 'Contra Costa',
449
+ 'Del Norte',
450
+ 'El Dorado',
451
+ 'Fresno',
452
+ 'Glenn',
453
+ 'Humboldt',
454
+ 'Imperial',
455
+ 'Inyo',
456
+ 'Kern',
457
+ 'Kings',
458
+ 'Lake',
459
+ 'Lassen',
460
+ 'Los Angeles',
461
+ 'Madera',
462
+ 'Marin',
463
+ 'Mariposa',
464
+ 'Mendocino',
465
+ 'Merced',
466
+ 'Modoc',
467
+ 'Mono',
468
+ 'Monterey',
469
+ 'Napa',
470
+ 'Nevada',
471
+ 'Orange',
472
+ 'Placer',
473
+ 'Plumas',
474
+ 'Riverside',
475
+ 'Sacramento',
476
+ 'San Benito',
477
+ 'San Bernardino',
478
+ 'San Diego',
479
+ 'San Francisco',
480
+ 'San Joaquin',
481
+ 'San Luis Obispo',
482
+ 'San Mateo',
483
+ 'Santa Barbara',
484
+ 'Santa Clara',
485
+ 'Santa Cruz',
486
+ 'Shasta',
487
+ 'Sierra',
488
+ 'Siskiyou',
489
+ 'Solano',
490
+ 'Sonoma',
491
+ 'Stanislaus',
492
+ 'Sutter',
493
+ 'Tehama',
494
+ 'Trinity',
495
+ 'Tulare',
496
+ 'Tuolumne',
497
+ 'Ventura',
498
+ 'Yolo',
499
+ 'Yuba'
500
+ ])),
501
+ calworksEligible: z.optional(z.boolean()),
502
+ calfreshEligible: z.optional(z.boolean()),
503
+ medicalEligible: z.optional(z.boolean())
504
+ }));
505
+ export const zPersonUpdate = z.object({
506
+ name: z.optional(z.object({
507
+ firstName: z.string().min(1).max(100),
508
+ middleInitial: z.optional(z.string().max(1)),
509
+ middleName: z.optional(z.string().max(100)),
510
+ lastName: z.string().min(1).max(100),
511
+ maidenName: z.optional(z.string().max(100)),
512
+ suffix: z.optional(z.string().max(20))
513
+ })),
514
+ dateOfBirth: z.optional(z.iso.date()),
515
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
516
+ address: z.optional(z.object({
517
+ addressLine1: z.string().min(1).max(150),
518
+ addressLine2: z.optional(z.string().max(150)),
519
+ city: z.string().min(1).max(100),
520
+ stateProvince: z.string().min(1).max(100),
521
+ postalCode: z.string().min(3).max(20),
522
+ county: z.optional(z.string().max(100))
523
+ })),
524
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
525
+ email: z.optional(z.email().max(320))
526
+ }).and(z.object({
527
+ id: z.optional(z.uuid()),
528
+ demographicInfo: z.optional(z.object({
529
+ sex: z.optional(z.enum([
530
+ 'male',
531
+ 'female',
532
+ 'unknown'
533
+ ])),
534
+ maritalStatus: z.optional(z.enum([
535
+ 'single',
536
+ 'married',
537
+ 'divorced',
538
+ 'separated',
539
+ 'widowed',
540
+ 'civil_union',
541
+ 'domestic_partnership'
542
+ ])),
543
+ isHispanicOrLatino: z.optional(z.boolean()),
544
+ race: z.optional(z.array(z.enum([
545
+ 'american_indian_alaskan_native',
546
+ 'asian',
547
+ 'black_african_american',
548
+ 'native_hawaiian_pacific_islander',
549
+ 'white'
550
+ ]))),
551
+ gender: z.optional(z.enum([
552
+ 'male',
553
+ 'female',
554
+ 'nonbinary',
555
+ 'unknown'
556
+ ]))
557
+ })),
558
+ citizenshipInfo: z.optional(z.object({
559
+ status: z.optional(z.enum([
560
+ 'us_citizen',
561
+ 'lawful_permanent_resident',
562
+ 'qualified_alien',
563
+ 'prucol',
564
+ 'undocumented',
565
+ 'other'
566
+ ])),
567
+ certificateNumber: z.optional(z.string().max(50)),
568
+ immigrationInfo: z.optional(z.object({
569
+ status: z.optional(z.string().max(100)),
570
+ documentType: z.optional(z.string().max(100)),
571
+ documentNumber: z.optional(z.string().max(100)),
572
+ alienOrI94Number: z.optional(z.string().max(100)),
573
+ documentExpirationDate: z.optional(z.iso.date()),
574
+ countryOfIssuance: z.optional(z.string().max(100)),
575
+ hasSponsor: z.optional(z.boolean()),
576
+ sponsor: z.optional(z.object({
577
+ name: z.optional(z.object({
578
+ firstName: z.string().min(1).max(100),
579
+ middleInitial: z.optional(z.string().max(1)),
580
+ middleName: z.optional(z.string().max(100)),
581
+ lastName: z.string().min(1).max(100),
582
+ maidenName: z.optional(z.string().max(100)),
583
+ suffix: z.optional(z.string().max(20))
584
+ })),
585
+ dateOfBirth: z.optional(z.iso.date()),
586
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
587
+ address: z.optional(z.object({
588
+ addressLine1: z.string().min(1).max(150),
589
+ addressLine2: z.optional(z.string().max(150)),
590
+ city: z.string().min(1).max(100),
591
+ stateProvince: z.string().min(1).max(100),
592
+ postalCode: z.string().min(3).max(20),
593
+ county: z.optional(z.string().max(100))
594
+ })),
595
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
596
+ email: z.optional(z.email().max(320))
597
+ }).and(z.object({
598
+ spouse: z.optional(z.object({
599
+ name: z.optional(z.object({
600
+ firstName: z.string().min(1).max(100),
601
+ middleInitial: z.optional(z.string().max(1)),
602
+ middleName: z.optional(z.string().max(100)),
603
+ lastName: z.string().min(1).max(100),
604
+ maidenName: z.optional(z.string().max(100)),
605
+ suffix: z.optional(z.string().max(20))
606
+ })),
607
+ dateOfBirth: z.optional(z.iso.date()),
608
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
609
+ address: z.optional(z.object({
610
+ addressLine1: z.string().min(1).max(150),
611
+ addressLine2: z.optional(z.string().max(150)),
612
+ city: z.string().min(1).max(100),
613
+ stateProvince: z.string().min(1).max(100),
614
+ postalCode: z.string().min(3).max(20),
615
+ county: z.optional(z.string().max(100))
616
+ })),
617
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
618
+ email: z.optional(z.email().max(320))
619
+ })),
620
+ totalPeopleInHousehold: z.optional(z.int().gte(1))
621
+ })))
622
+ }))
623
+ })),
624
+ contactInfo: z.optional(z.object({
625
+ otherPhoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
626
+ mailingAddress: z.optional(z.object({
627
+ addressLine1: z.string().min(1).max(150),
628
+ addressLine2: z.optional(z.string().max(150)),
629
+ city: z.string().min(1).max(100),
630
+ stateProvince: z.string().min(1).max(100),
631
+ postalCode: z.string().min(3).max(20),
632
+ county: z.optional(z.string().max(100))
633
+ })),
634
+ isHomeless: z.optional(z.boolean()),
635
+ preferredNoticeMethod: z.optional(z.enum([
636
+ 'paper',
637
+ 'email',
638
+ 'both'
639
+ ])),
640
+ languagePreference: z.optional(z.object({
641
+ written: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/)),
642
+ spoken: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/))
643
+ })),
644
+ preferredContactMethod: z.optional(z.enum([
645
+ 'phone',
646
+ 'email',
647
+ 'mail',
648
+ 'sms'
649
+ ]))
650
+ })),
651
+ employmentInfo: z.optional(z.object({
652
+ jobs: z.optional(z.array(z.object({
653
+ employer: z.optional(z.object({
654
+ name: z.optional(z.string().max(200)),
655
+ phone: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
656
+ address: z.optional(z.object({
657
+ addressLine1: z.string().min(1).max(150),
658
+ addressLine2: z.optional(z.string().max(150)),
659
+ city: z.string().min(1).max(100),
660
+ stateProvince: z.string().min(1).max(100),
661
+ postalCode: z.string().min(3).max(20),
662
+ county: z.optional(z.string().max(100))
663
+ })),
664
+ identificationNumber: z.optional(z.string().max(50))
665
+ })),
666
+ startDate: z.optional(z.iso.date()),
667
+ endDate: z.optional(z.iso.date())
668
+ })))
669
+ })),
670
+ educationInfo: z.optional(z.object({
671
+ lastGradeCompleted: z.optional(z.string().max(50)),
672
+ isCurrentlyEnrolled: z.optional(z.boolean()),
673
+ schoolName: z.optional(z.string().max(200)),
674
+ startDate: z.optional(z.iso.date()),
675
+ isFullTimeStudent: z.optional(z.boolean()),
676
+ expectedGraduationDate: z.optional(z.iso.date())
677
+ })),
678
+ militaryInfo: z.optional(z.object({
679
+ isMilitaryServiceMember: z.optional(z.boolean()),
680
+ veteranStatus: z.optional(z.boolean())
681
+ })),
682
+ tribalInfo: z.optional(z.object({
683
+ tribeName: z.optional(z.string().max(200)),
684
+ tribeState: z.optional(z.string().max(100)),
685
+ hasReceivedServiceFromIndianHealthService: z.optional(z.boolean()),
686
+ isEligibleForIndianHealthService: z.optional(z.boolean())
687
+ })),
688
+ consentToShareInformation: z.optional(z.boolean()),
689
+ createdAt: z.optional(z.iso.datetime().readonly()),
690
+ updatedAt: z.optional(z.iso.datetime().readonly()),
691
+ countyCode: z.optional(z.string().regex(/^[0-5][0-9]$/)),
692
+ countyName: z.optional(z.enum([
693
+ 'Alameda',
694
+ 'Alpine',
695
+ 'Amador',
696
+ 'Butte',
697
+ 'Calaveras',
698
+ 'Colusa',
699
+ 'Contra Costa',
700
+ 'Del Norte',
701
+ 'El Dorado',
702
+ 'Fresno',
703
+ 'Glenn',
704
+ 'Humboldt',
705
+ 'Imperial',
706
+ 'Inyo',
707
+ 'Kern',
708
+ 'Kings',
709
+ 'Lake',
710
+ 'Lassen',
711
+ 'Los Angeles',
712
+ 'Madera',
713
+ 'Marin',
714
+ 'Mariposa',
715
+ 'Mendocino',
716
+ 'Merced',
717
+ 'Modoc',
718
+ 'Mono',
719
+ 'Monterey',
720
+ 'Napa',
721
+ 'Nevada',
722
+ 'Orange',
723
+ 'Placer',
724
+ 'Plumas',
725
+ 'Riverside',
726
+ 'Sacramento',
727
+ 'San Benito',
728
+ 'San Bernardino',
729
+ 'San Diego',
730
+ 'San Francisco',
731
+ 'San Joaquin',
732
+ 'San Luis Obispo',
733
+ 'San Mateo',
734
+ 'Santa Barbara',
735
+ 'Santa Clara',
736
+ 'Santa Cruz',
737
+ 'Shasta',
738
+ 'Sierra',
739
+ 'Siskiyou',
740
+ 'Solano',
741
+ 'Sonoma',
742
+ 'Stanislaus',
743
+ 'Sutter',
744
+ 'Tehama',
745
+ 'Trinity',
746
+ 'Tulare',
747
+ 'Tuolumne',
748
+ 'Ventura',
749
+ 'Yolo',
750
+ 'Yuba'
751
+ ])),
752
+ calworksEligible: z.optional(z.boolean()),
753
+ calfreshEligible: z.optional(z.boolean()),
754
+ medicalEligible: z.optional(z.boolean())
755
+ }));
756
+ export const zPersonList = z.object({
757
+ items: z.array(z.object({
758
+ name: z.optional(z.object({
759
+ firstName: z.string().min(1).max(100),
760
+ middleInitial: z.optional(z.string().max(1)),
761
+ middleName: z.optional(z.string().max(100)),
762
+ lastName: z.string().min(1).max(100),
763
+ maidenName: z.optional(z.string().max(100)),
764
+ suffix: z.optional(z.string().max(20))
765
+ })),
766
+ dateOfBirth: z.optional(z.iso.date()),
767
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
768
+ address: z.optional(z.object({
769
+ addressLine1: z.string().min(1).max(150),
770
+ addressLine2: z.optional(z.string().max(150)),
771
+ city: z.string().min(1).max(100),
772
+ stateProvince: z.string().min(1).max(100),
773
+ postalCode: z.string().min(3).max(20),
774
+ county: z.optional(z.string().max(100))
775
+ })),
776
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
777
+ email: z.optional(z.email().max(320))
778
+ }).and(z.object({
779
+ id: z.optional(z.uuid()),
780
+ demographicInfo: z.optional(z.object({
781
+ sex: z.optional(z.enum([
782
+ 'male',
783
+ 'female',
784
+ 'unknown'
785
+ ])),
786
+ maritalStatus: z.optional(z.enum([
787
+ 'single',
788
+ 'married',
789
+ 'divorced',
790
+ 'separated',
791
+ 'widowed',
792
+ 'civil_union',
793
+ 'domestic_partnership'
794
+ ])),
795
+ isHispanicOrLatino: z.optional(z.boolean()),
796
+ race: z.optional(z.array(z.enum([
797
+ 'american_indian_alaskan_native',
798
+ 'asian',
799
+ 'black_african_american',
800
+ 'native_hawaiian_pacific_islander',
801
+ 'white'
802
+ ]))),
803
+ gender: z.optional(z.enum([
804
+ 'male',
805
+ 'female',
806
+ 'nonbinary',
807
+ 'unknown'
808
+ ]))
809
+ })),
810
+ citizenshipInfo: z.optional(z.object({
811
+ status: z.optional(z.enum([
812
+ 'us_citizen',
813
+ 'lawful_permanent_resident',
814
+ 'qualified_alien',
815
+ 'prucol',
816
+ 'undocumented',
817
+ 'other'
818
+ ])),
819
+ certificateNumber: z.optional(z.string().max(50)),
820
+ immigrationInfo: z.optional(z.object({
821
+ status: z.optional(z.string().max(100)),
822
+ documentType: z.optional(z.string().max(100)),
823
+ documentNumber: z.optional(z.string().max(100)),
824
+ alienOrI94Number: z.optional(z.string().max(100)),
825
+ documentExpirationDate: z.optional(z.iso.date()),
826
+ countryOfIssuance: z.optional(z.string().max(100)),
827
+ hasSponsor: z.optional(z.boolean()),
828
+ sponsor: z.optional(z.object({
829
+ name: z.optional(z.object({
830
+ firstName: z.string().min(1).max(100),
831
+ middleInitial: z.optional(z.string().max(1)),
832
+ middleName: z.optional(z.string().max(100)),
833
+ lastName: z.string().min(1).max(100),
834
+ maidenName: z.optional(z.string().max(100)),
835
+ suffix: z.optional(z.string().max(20))
836
+ })),
837
+ dateOfBirth: z.optional(z.iso.date()),
838
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
839
+ address: z.optional(z.object({
840
+ addressLine1: z.string().min(1).max(150),
841
+ addressLine2: z.optional(z.string().max(150)),
842
+ city: z.string().min(1).max(100),
843
+ stateProvince: z.string().min(1).max(100),
844
+ postalCode: z.string().min(3).max(20),
845
+ county: z.optional(z.string().max(100))
846
+ })),
847
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
848
+ email: z.optional(z.email().max(320))
849
+ }).and(z.object({
850
+ spouse: z.optional(z.object({
851
+ name: z.optional(z.object({
852
+ firstName: z.string().min(1).max(100),
853
+ middleInitial: z.optional(z.string().max(1)),
854
+ middleName: z.optional(z.string().max(100)),
855
+ lastName: z.string().min(1).max(100),
856
+ maidenName: z.optional(z.string().max(100)),
857
+ suffix: z.optional(z.string().max(20))
858
+ })),
859
+ dateOfBirth: z.optional(z.iso.date()),
860
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
861
+ address: z.optional(z.object({
862
+ addressLine1: z.string().min(1).max(150),
863
+ addressLine2: z.optional(z.string().max(150)),
864
+ city: z.string().min(1).max(100),
865
+ stateProvince: z.string().min(1).max(100),
866
+ postalCode: z.string().min(3).max(20),
867
+ county: z.optional(z.string().max(100))
868
+ })),
869
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
870
+ email: z.optional(z.email().max(320))
871
+ })),
872
+ totalPeopleInHousehold: z.optional(z.int().gte(1))
873
+ })))
874
+ }))
875
+ })),
876
+ contactInfo: z.optional(z.object({
877
+ otherPhoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
878
+ mailingAddress: z.optional(z.object({
879
+ addressLine1: z.string().min(1).max(150),
880
+ addressLine2: z.optional(z.string().max(150)),
881
+ city: z.string().min(1).max(100),
882
+ stateProvince: z.string().min(1).max(100),
883
+ postalCode: z.string().min(3).max(20),
884
+ county: z.optional(z.string().max(100))
885
+ })),
886
+ isHomeless: z.optional(z.boolean()),
887
+ preferredNoticeMethod: z.optional(z.enum([
888
+ 'paper',
889
+ 'email',
890
+ 'both'
891
+ ])),
892
+ languagePreference: z.optional(z.object({
893
+ written: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/)),
894
+ spoken: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/))
895
+ })),
896
+ preferredContactMethod: z.optional(z.enum([
897
+ 'phone',
898
+ 'email',
899
+ 'mail',
900
+ 'sms'
901
+ ]))
902
+ })),
903
+ employmentInfo: z.optional(z.object({
904
+ jobs: z.optional(z.array(z.object({
905
+ employer: z.optional(z.object({
906
+ name: z.optional(z.string().max(200)),
907
+ phone: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
908
+ address: z.optional(z.object({
909
+ addressLine1: z.string().min(1).max(150),
910
+ addressLine2: z.optional(z.string().max(150)),
911
+ city: z.string().min(1).max(100),
912
+ stateProvince: z.string().min(1).max(100),
913
+ postalCode: z.string().min(3).max(20),
914
+ county: z.optional(z.string().max(100))
915
+ })),
916
+ identificationNumber: z.optional(z.string().max(50))
917
+ })),
918
+ startDate: z.optional(z.iso.date()),
919
+ endDate: z.optional(z.iso.date())
920
+ })))
921
+ })),
922
+ educationInfo: z.optional(z.object({
923
+ lastGradeCompleted: z.optional(z.string().max(50)),
924
+ isCurrentlyEnrolled: z.optional(z.boolean()),
925
+ schoolName: z.optional(z.string().max(200)),
926
+ startDate: z.optional(z.iso.date()),
927
+ isFullTimeStudent: z.optional(z.boolean()),
928
+ expectedGraduationDate: z.optional(z.iso.date())
929
+ })),
930
+ militaryInfo: z.optional(z.object({
931
+ isMilitaryServiceMember: z.optional(z.boolean()),
932
+ veteranStatus: z.optional(z.boolean())
933
+ })),
934
+ tribalInfo: z.optional(z.object({
935
+ tribeName: z.optional(z.string().max(200)),
936
+ tribeState: z.optional(z.string().max(100)),
937
+ hasReceivedServiceFromIndianHealthService: z.optional(z.boolean()),
938
+ isEligibleForIndianHealthService: z.optional(z.boolean())
939
+ })),
940
+ consentToShareInformation: z.optional(z.boolean()),
941
+ createdAt: z.optional(z.iso.datetime().readonly()),
942
+ updatedAt: z.optional(z.iso.datetime().readonly()),
943
+ countyCode: z.optional(z.string().regex(/^[0-5][0-9]$/)),
944
+ countyName: z.optional(z.enum([
945
+ 'Alameda',
946
+ 'Alpine',
947
+ 'Amador',
948
+ 'Butte',
949
+ 'Calaveras',
950
+ 'Colusa',
951
+ 'Contra Costa',
952
+ 'Del Norte',
953
+ 'El Dorado',
954
+ 'Fresno',
955
+ 'Glenn',
956
+ 'Humboldt',
957
+ 'Imperial',
958
+ 'Inyo',
959
+ 'Kern',
960
+ 'Kings',
961
+ 'Lake',
962
+ 'Lassen',
963
+ 'Los Angeles',
964
+ 'Madera',
965
+ 'Marin',
966
+ 'Mariposa',
967
+ 'Mendocino',
968
+ 'Merced',
969
+ 'Modoc',
970
+ 'Mono',
971
+ 'Monterey',
972
+ 'Napa',
973
+ 'Nevada',
974
+ 'Orange',
975
+ 'Placer',
976
+ 'Plumas',
977
+ 'Riverside',
978
+ 'Sacramento',
979
+ 'San Benito',
980
+ 'San Bernardino',
981
+ 'San Diego',
982
+ 'San Francisco',
983
+ 'San Joaquin',
984
+ 'San Luis Obispo',
985
+ 'San Mateo',
986
+ 'Santa Barbara',
987
+ 'Santa Clara',
988
+ 'Santa Cruz',
989
+ 'Shasta',
990
+ 'Sierra',
991
+ 'Siskiyou',
992
+ 'Solano',
993
+ 'Sonoma',
994
+ 'Stanislaus',
995
+ 'Sutter',
996
+ 'Tehama',
997
+ 'Trinity',
998
+ 'Tulare',
999
+ 'Tuolumne',
1000
+ 'Ventura',
1001
+ 'Yolo',
1002
+ 'Yuba'
1003
+ ])),
1004
+ calworksEligible: z.optional(z.boolean()),
1005
+ calfreshEligible: z.optional(z.boolean()),
1006
+ medicalEligible: z.optional(z.boolean())
1007
+ }))),
1008
+ total: z.int().gte(0),
1009
+ limit: z.int().gte(1).lte(100),
1010
+ offset: z.int().gte(0),
1011
+ hasNext: z.optional(z.boolean())
1012
+ });
1013
+ export const zPersonWritable = z.object({
1014
+ name: z.optional(z.object({
1015
+ firstName: z.string().min(1).max(100),
1016
+ middleInitial: z.optional(z.string().max(1)),
1017
+ middleName: z.optional(z.string().max(100)),
1018
+ lastName: z.string().min(1).max(100),
1019
+ maidenName: z.optional(z.string().max(100)),
1020
+ suffix: z.optional(z.string().max(20))
1021
+ })),
1022
+ dateOfBirth: z.optional(z.iso.date()),
1023
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
1024
+ address: z.optional(z.object({
1025
+ addressLine1: z.string().min(1).max(150),
1026
+ addressLine2: z.optional(z.string().max(150)),
1027
+ city: z.string().min(1).max(100),
1028
+ stateProvince: z.string().min(1).max(100),
1029
+ postalCode: z.string().min(3).max(20),
1030
+ county: z.optional(z.string().max(100))
1031
+ })),
1032
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1033
+ email: z.optional(z.email().max(320))
1034
+ }).and(z.object({
1035
+ id: z.optional(z.uuid()),
1036
+ demographicInfo: z.optional(z.object({
1037
+ sex: z.optional(z.enum([
1038
+ 'male',
1039
+ 'female',
1040
+ 'unknown'
1041
+ ])),
1042
+ maritalStatus: z.optional(z.enum([
1043
+ 'single',
1044
+ 'married',
1045
+ 'divorced',
1046
+ 'separated',
1047
+ 'widowed',
1048
+ 'civil_union',
1049
+ 'domestic_partnership'
1050
+ ])),
1051
+ isHispanicOrLatino: z.optional(z.boolean()),
1052
+ race: z.optional(z.array(z.enum([
1053
+ 'american_indian_alaskan_native',
1054
+ 'asian',
1055
+ 'black_african_american',
1056
+ 'native_hawaiian_pacific_islander',
1057
+ 'white'
1058
+ ]))),
1059
+ gender: z.optional(z.enum([
1060
+ 'male',
1061
+ 'female',
1062
+ 'nonbinary',
1063
+ 'unknown'
1064
+ ]))
1065
+ })),
1066
+ citizenshipInfo: z.optional(z.object({
1067
+ status: z.optional(z.enum([
1068
+ 'us_citizen',
1069
+ 'lawful_permanent_resident',
1070
+ 'qualified_alien',
1071
+ 'prucol',
1072
+ 'undocumented',
1073
+ 'other'
1074
+ ])),
1075
+ certificateNumber: z.optional(z.string().max(50)),
1076
+ immigrationInfo: z.optional(z.object({
1077
+ status: z.optional(z.string().max(100)),
1078
+ documentType: z.optional(z.string().max(100)),
1079
+ documentNumber: z.optional(z.string().max(100)),
1080
+ alienOrI94Number: z.optional(z.string().max(100)),
1081
+ documentExpirationDate: z.optional(z.iso.date()),
1082
+ countryOfIssuance: z.optional(z.string().max(100)),
1083
+ hasSponsor: z.optional(z.boolean()),
1084
+ sponsor: z.optional(z.object({
1085
+ name: z.optional(z.object({
1086
+ firstName: z.string().min(1).max(100),
1087
+ middleInitial: z.optional(z.string().max(1)),
1088
+ middleName: z.optional(z.string().max(100)),
1089
+ lastName: z.string().min(1).max(100),
1090
+ maidenName: z.optional(z.string().max(100)),
1091
+ suffix: z.optional(z.string().max(20))
1092
+ })),
1093
+ dateOfBirth: z.optional(z.iso.date()),
1094
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
1095
+ address: z.optional(z.object({
1096
+ addressLine1: z.string().min(1).max(150),
1097
+ addressLine2: z.optional(z.string().max(150)),
1098
+ city: z.string().min(1).max(100),
1099
+ stateProvince: z.string().min(1).max(100),
1100
+ postalCode: z.string().min(3).max(20),
1101
+ county: z.optional(z.string().max(100))
1102
+ })),
1103
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1104
+ email: z.optional(z.email().max(320))
1105
+ }).and(z.object({
1106
+ spouse: z.optional(z.object({
1107
+ name: z.optional(z.object({
1108
+ firstName: z.string().min(1).max(100),
1109
+ middleInitial: z.optional(z.string().max(1)),
1110
+ middleName: z.optional(z.string().max(100)),
1111
+ lastName: z.string().min(1).max(100),
1112
+ maidenName: z.optional(z.string().max(100)),
1113
+ suffix: z.optional(z.string().max(20))
1114
+ })),
1115
+ dateOfBirth: z.optional(z.iso.date()),
1116
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
1117
+ address: z.optional(z.object({
1118
+ addressLine1: z.string().min(1).max(150),
1119
+ addressLine2: z.optional(z.string().max(150)),
1120
+ city: z.string().min(1).max(100),
1121
+ stateProvince: z.string().min(1).max(100),
1122
+ postalCode: z.string().min(3).max(20),
1123
+ county: z.optional(z.string().max(100))
1124
+ })),
1125
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1126
+ email: z.optional(z.email().max(320))
1127
+ })),
1128
+ totalPeopleInHousehold: z.optional(z.int().gte(1))
1129
+ })))
1130
+ }))
1131
+ })),
1132
+ contactInfo: z.optional(z.object({
1133
+ otherPhoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1134
+ mailingAddress: z.optional(z.object({
1135
+ addressLine1: z.string().min(1).max(150),
1136
+ addressLine2: z.optional(z.string().max(150)),
1137
+ city: z.string().min(1).max(100),
1138
+ stateProvince: z.string().min(1).max(100),
1139
+ postalCode: z.string().min(3).max(20),
1140
+ county: z.optional(z.string().max(100))
1141
+ })),
1142
+ isHomeless: z.optional(z.boolean()),
1143
+ preferredNoticeMethod: z.optional(z.enum([
1144
+ 'paper',
1145
+ 'email',
1146
+ 'both'
1147
+ ])),
1148
+ languagePreference: z.optional(z.object({
1149
+ written: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/)),
1150
+ spoken: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/))
1151
+ })),
1152
+ preferredContactMethod: z.optional(z.enum([
1153
+ 'phone',
1154
+ 'email',
1155
+ 'mail',
1156
+ 'sms'
1157
+ ]))
1158
+ })),
1159
+ employmentInfo: z.optional(z.object({
1160
+ jobs: z.optional(z.array(z.object({
1161
+ employer: z.optional(z.object({
1162
+ name: z.optional(z.string().max(200)),
1163
+ phone: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1164
+ address: z.optional(z.object({
1165
+ addressLine1: z.string().min(1).max(150),
1166
+ addressLine2: z.optional(z.string().max(150)),
1167
+ city: z.string().min(1).max(100),
1168
+ stateProvince: z.string().min(1).max(100),
1169
+ postalCode: z.string().min(3).max(20),
1170
+ county: z.optional(z.string().max(100))
1171
+ })),
1172
+ identificationNumber: z.optional(z.string().max(50))
1173
+ })),
1174
+ startDate: z.optional(z.iso.date()),
1175
+ endDate: z.optional(z.iso.date())
1176
+ })))
1177
+ })),
1178
+ educationInfo: z.optional(z.object({
1179
+ lastGradeCompleted: z.optional(z.string().max(50)),
1180
+ isCurrentlyEnrolled: z.optional(z.boolean()),
1181
+ schoolName: z.optional(z.string().max(200)),
1182
+ startDate: z.optional(z.iso.date()),
1183
+ isFullTimeStudent: z.optional(z.boolean()),
1184
+ expectedGraduationDate: z.optional(z.iso.date())
1185
+ })),
1186
+ militaryInfo: z.optional(z.object({
1187
+ isMilitaryServiceMember: z.optional(z.boolean()),
1188
+ veteranStatus: z.optional(z.boolean())
1189
+ })),
1190
+ tribalInfo: z.optional(z.object({
1191
+ tribeName: z.optional(z.string().max(200)),
1192
+ tribeState: z.optional(z.string().max(100)),
1193
+ hasReceivedServiceFromIndianHealthService: z.optional(z.boolean()),
1194
+ isEligibleForIndianHealthService: z.optional(z.boolean())
1195
+ })),
1196
+ consentToShareInformation: z.optional(z.boolean()),
1197
+ countyCode: z.optional(z.string().regex(/^[0-5][0-9]$/)),
1198
+ countyName: z.optional(z.enum([
1199
+ 'Alameda',
1200
+ 'Alpine',
1201
+ 'Amador',
1202
+ 'Butte',
1203
+ 'Calaveras',
1204
+ 'Colusa',
1205
+ 'Contra Costa',
1206
+ 'Del Norte',
1207
+ 'El Dorado',
1208
+ 'Fresno',
1209
+ 'Glenn',
1210
+ 'Humboldt',
1211
+ 'Imperial',
1212
+ 'Inyo',
1213
+ 'Kern',
1214
+ 'Kings',
1215
+ 'Lake',
1216
+ 'Lassen',
1217
+ 'Los Angeles',
1218
+ 'Madera',
1219
+ 'Marin',
1220
+ 'Mariposa',
1221
+ 'Mendocino',
1222
+ 'Merced',
1223
+ 'Modoc',
1224
+ 'Mono',
1225
+ 'Monterey',
1226
+ 'Napa',
1227
+ 'Nevada',
1228
+ 'Orange',
1229
+ 'Placer',
1230
+ 'Plumas',
1231
+ 'Riverside',
1232
+ 'Sacramento',
1233
+ 'San Benito',
1234
+ 'San Bernardino',
1235
+ 'San Diego',
1236
+ 'San Francisco',
1237
+ 'San Joaquin',
1238
+ 'San Luis Obispo',
1239
+ 'San Mateo',
1240
+ 'Santa Barbara',
1241
+ 'Santa Clara',
1242
+ 'Santa Cruz',
1243
+ 'Shasta',
1244
+ 'Sierra',
1245
+ 'Siskiyou',
1246
+ 'Solano',
1247
+ 'Sonoma',
1248
+ 'Stanislaus',
1249
+ 'Sutter',
1250
+ 'Tehama',
1251
+ 'Trinity',
1252
+ 'Tulare',
1253
+ 'Tuolumne',
1254
+ 'Ventura',
1255
+ 'Yolo',
1256
+ 'Yuba'
1257
+ ])),
1258
+ calworksEligible: z.optional(z.boolean()),
1259
+ calfreshEligible: z.optional(z.boolean()),
1260
+ medicalEligible: z.optional(z.boolean())
1261
+ }));
1262
+ export const zPersonCreateWritable = z.object({
1263
+ name: z.optional(z.object({
1264
+ firstName: z.string().min(1).max(100),
1265
+ middleInitial: z.optional(z.string().max(1)),
1266
+ middleName: z.optional(z.string().max(100)),
1267
+ lastName: z.string().min(1).max(100),
1268
+ maidenName: z.optional(z.string().max(100)),
1269
+ suffix: z.optional(z.string().max(20))
1270
+ })),
1271
+ dateOfBirth: z.optional(z.iso.date()),
1272
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
1273
+ address: z.optional(z.object({
1274
+ addressLine1: z.string().min(1).max(150),
1275
+ addressLine2: z.optional(z.string().max(150)),
1276
+ city: z.string().min(1).max(100),
1277
+ stateProvince: z.string().min(1).max(100),
1278
+ postalCode: z.string().min(3).max(20),
1279
+ county: z.optional(z.string().max(100))
1280
+ })),
1281
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1282
+ email: z.optional(z.email().max(320))
1283
+ }).and(z.object({
1284
+ id: z.optional(z.uuid()),
1285
+ demographicInfo: z.optional(z.object({
1286
+ sex: z.optional(z.enum([
1287
+ 'male',
1288
+ 'female',
1289
+ 'unknown'
1290
+ ])),
1291
+ maritalStatus: z.optional(z.enum([
1292
+ 'single',
1293
+ 'married',
1294
+ 'divorced',
1295
+ 'separated',
1296
+ 'widowed',
1297
+ 'civil_union',
1298
+ 'domestic_partnership'
1299
+ ])),
1300
+ isHispanicOrLatino: z.optional(z.boolean()),
1301
+ race: z.optional(z.array(z.enum([
1302
+ 'american_indian_alaskan_native',
1303
+ 'asian',
1304
+ 'black_african_american',
1305
+ 'native_hawaiian_pacific_islander',
1306
+ 'white'
1307
+ ]))),
1308
+ gender: z.optional(z.enum([
1309
+ 'male',
1310
+ 'female',
1311
+ 'nonbinary',
1312
+ 'unknown'
1313
+ ]))
1314
+ })),
1315
+ citizenshipInfo: z.optional(z.object({
1316
+ status: z.optional(z.enum([
1317
+ 'us_citizen',
1318
+ 'lawful_permanent_resident',
1319
+ 'qualified_alien',
1320
+ 'prucol',
1321
+ 'undocumented',
1322
+ 'other'
1323
+ ])),
1324
+ certificateNumber: z.optional(z.string().max(50)),
1325
+ immigrationInfo: z.optional(z.object({
1326
+ status: z.optional(z.string().max(100)),
1327
+ documentType: z.optional(z.string().max(100)),
1328
+ documentNumber: z.optional(z.string().max(100)),
1329
+ alienOrI94Number: z.optional(z.string().max(100)),
1330
+ documentExpirationDate: z.optional(z.iso.date()),
1331
+ countryOfIssuance: z.optional(z.string().max(100)),
1332
+ hasSponsor: z.optional(z.boolean()),
1333
+ sponsor: z.optional(z.object({
1334
+ name: z.optional(z.object({
1335
+ firstName: z.string().min(1).max(100),
1336
+ middleInitial: z.optional(z.string().max(1)),
1337
+ middleName: z.optional(z.string().max(100)),
1338
+ lastName: z.string().min(1).max(100),
1339
+ maidenName: z.optional(z.string().max(100)),
1340
+ suffix: z.optional(z.string().max(20))
1341
+ })),
1342
+ dateOfBirth: z.optional(z.iso.date()),
1343
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
1344
+ address: z.optional(z.object({
1345
+ addressLine1: z.string().min(1).max(150),
1346
+ addressLine2: z.optional(z.string().max(150)),
1347
+ city: z.string().min(1).max(100),
1348
+ stateProvince: z.string().min(1).max(100),
1349
+ postalCode: z.string().min(3).max(20),
1350
+ county: z.optional(z.string().max(100))
1351
+ })),
1352
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1353
+ email: z.optional(z.email().max(320))
1354
+ }).and(z.object({
1355
+ spouse: z.optional(z.object({
1356
+ name: z.optional(z.object({
1357
+ firstName: z.string().min(1).max(100),
1358
+ middleInitial: z.optional(z.string().max(1)),
1359
+ middleName: z.optional(z.string().max(100)),
1360
+ lastName: z.string().min(1).max(100),
1361
+ maidenName: z.optional(z.string().max(100)),
1362
+ suffix: z.optional(z.string().max(20))
1363
+ })),
1364
+ dateOfBirth: z.optional(z.iso.date()),
1365
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
1366
+ address: z.optional(z.object({
1367
+ addressLine1: z.string().min(1).max(150),
1368
+ addressLine2: z.optional(z.string().max(150)),
1369
+ city: z.string().min(1).max(100),
1370
+ stateProvince: z.string().min(1).max(100),
1371
+ postalCode: z.string().min(3).max(20),
1372
+ county: z.optional(z.string().max(100))
1373
+ })),
1374
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1375
+ email: z.optional(z.email().max(320))
1376
+ })),
1377
+ totalPeopleInHousehold: z.optional(z.int().gte(1))
1378
+ })))
1379
+ }))
1380
+ })),
1381
+ contactInfo: z.optional(z.object({
1382
+ otherPhoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1383
+ mailingAddress: z.optional(z.object({
1384
+ addressLine1: z.string().min(1).max(150),
1385
+ addressLine2: z.optional(z.string().max(150)),
1386
+ city: z.string().min(1).max(100),
1387
+ stateProvince: z.string().min(1).max(100),
1388
+ postalCode: z.string().min(3).max(20),
1389
+ county: z.optional(z.string().max(100))
1390
+ })),
1391
+ isHomeless: z.optional(z.boolean()),
1392
+ preferredNoticeMethod: z.optional(z.enum([
1393
+ 'paper',
1394
+ 'email',
1395
+ 'both'
1396
+ ])),
1397
+ languagePreference: z.optional(z.object({
1398
+ written: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/)),
1399
+ spoken: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/))
1400
+ })),
1401
+ preferredContactMethod: z.optional(z.enum([
1402
+ 'phone',
1403
+ 'email',
1404
+ 'mail',
1405
+ 'sms'
1406
+ ]))
1407
+ })),
1408
+ employmentInfo: z.optional(z.object({
1409
+ jobs: z.optional(z.array(z.object({
1410
+ employer: z.optional(z.object({
1411
+ name: z.optional(z.string().max(200)),
1412
+ phone: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1413
+ address: z.optional(z.object({
1414
+ addressLine1: z.string().min(1).max(150),
1415
+ addressLine2: z.optional(z.string().max(150)),
1416
+ city: z.string().min(1).max(100),
1417
+ stateProvince: z.string().min(1).max(100),
1418
+ postalCode: z.string().min(3).max(20),
1419
+ county: z.optional(z.string().max(100))
1420
+ })),
1421
+ identificationNumber: z.optional(z.string().max(50))
1422
+ })),
1423
+ startDate: z.optional(z.iso.date()),
1424
+ endDate: z.optional(z.iso.date())
1425
+ })))
1426
+ })),
1427
+ educationInfo: z.optional(z.object({
1428
+ lastGradeCompleted: z.optional(z.string().max(50)),
1429
+ isCurrentlyEnrolled: z.optional(z.boolean()),
1430
+ schoolName: z.optional(z.string().max(200)),
1431
+ startDate: z.optional(z.iso.date()),
1432
+ isFullTimeStudent: z.optional(z.boolean()),
1433
+ expectedGraduationDate: z.optional(z.iso.date())
1434
+ })),
1435
+ militaryInfo: z.optional(z.object({
1436
+ isMilitaryServiceMember: z.optional(z.boolean()),
1437
+ veteranStatus: z.optional(z.boolean())
1438
+ })),
1439
+ tribalInfo: z.optional(z.object({
1440
+ tribeName: z.optional(z.string().max(200)),
1441
+ tribeState: z.optional(z.string().max(100)),
1442
+ hasReceivedServiceFromIndianHealthService: z.optional(z.boolean()),
1443
+ isEligibleForIndianHealthService: z.optional(z.boolean())
1444
+ })),
1445
+ consentToShareInformation: z.optional(z.boolean()),
1446
+ countyCode: z.optional(z.string().regex(/^[0-5][0-9]$/)),
1447
+ countyName: z.optional(z.enum([
1448
+ 'Alameda',
1449
+ 'Alpine',
1450
+ 'Amador',
1451
+ 'Butte',
1452
+ 'Calaveras',
1453
+ 'Colusa',
1454
+ 'Contra Costa',
1455
+ 'Del Norte',
1456
+ 'El Dorado',
1457
+ 'Fresno',
1458
+ 'Glenn',
1459
+ 'Humboldt',
1460
+ 'Imperial',
1461
+ 'Inyo',
1462
+ 'Kern',
1463
+ 'Kings',
1464
+ 'Lake',
1465
+ 'Lassen',
1466
+ 'Los Angeles',
1467
+ 'Madera',
1468
+ 'Marin',
1469
+ 'Mariposa',
1470
+ 'Mendocino',
1471
+ 'Merced',
1472
+ 'Modoc',
1473
+ 'Mono',
1474
+ 'Monterey',
1475
+ 'Napa',
1476
+ 'Nevada',
1477
+ 'Orange',
1478
+ 'Placer',
1479
+ 'Plumas',
1480
+ 'Riverside',
1481
+ 'Sacramento',
1482
+ 'San Benito',
1483
+ 'San Bernardino',
1484
+ 'San Diego',
1485
+ 'San Francisco',
1486
+ 'San Joaquin',
1487
+ 'San Luis Obispo',
1488
+ 'San Mateo',
1489
+ 'Santa Barbara',
1490
+ 'Santa Clara',
1491
+ 'Santa Cruz',
1492
+ 'Shasta',
1493
+ 'Sierra',
1494
+ 'Siskiyou',
1495
+ 'Solano',
1496
+ 'Sonoma',
1497
+ 'Stanislaus',
1498
+ 'Sutter',
1499
+ 'Tehama',
1500
+ 'Trinity',
1501
+ 'Tulare',
1502
+ 'Tuolumne',
1503
+ 'Ventura',
1504
+ 'Yolo',
1505
+ 'Yuba'
1506
+ ])),
1507
+ calworksEligible: z.optional(z.boolean()),
1508
+ calfreshEligible: z.optional(z.boolean()),
1509
+ medicalEligible: z.optional(z.boolean())
1510
+ }));
1511
+ export const zPersonUpdateWritable = z.object({
1512
+ name: z.optional(z.object({
1513
+ firstName: z.string().min(1).max(100),
1514
+ middleInitial: z.optional(z.string().max(1)),
1515
+ middleName: z.optional(z.string().max(100)),
1516
+ lastName: z.string().min(1).max(100),
1517
+ maidenName: z.optional(z.string().max(100)),
1518
+ suffix: z.optional(z.string().max(20))
1519
+ })),
1520
+ dateOfBirth: z.optional(z.iso.date()),
1521
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
1522
+ address: z.optional(z.object({
1523
+ addressLine1: z.string().min(1).max(150),
1524
+ addressLine2: z.optional(z.string().max(150)),
1525
+ city: z.string().min(1).max(100),
1526
+ stateProvince: z.string().min(1).max(100),
1527
+ postalCode: z.string().min(3).max(20),
1528
+ county: z.optional(z.string().max(100))
1529
+ })),
1530
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1531
+ email: z.optional(z.email().max(320))
1532
+ }).and(z.object({
1533
+ id: z.optional(z.uuid()),
1534
+ demographicInfo: z.optional(z.object({
1535
+ sex: z.optional(z.enum([
1536
+ 'male',
1537
+ 'female',
1538
+ 'unknown'
1539
+ ])),
1540
+ maritalStatus: z.optional(z.enum([
1541
+ 'single',
1542
+ 'married',
1543
+ 'divorced',
1544
+ 'separated',
1545
+ 'widowed',
1546
+ 'civil_union',
1547
+ 'domestic_partnership'
1548
+ ])),
1549
+ isHispanicOrLatino: z.optional(z.boolean()),
1550
+ race: z.optional(z.array(z.enum([
1551
+ 'american_indian_alaskan_native',
1552
+ 'asian',
1553
+ 'black_african_american',
1554
+ 'native_hawaiian_pacific_islander',
1555
+ 'white'
1556
+ ]))),
1557
+ gender: z.optional(z.enum([
1558
+ 'male',
1559
+ 'female',
1560
+ 'nonbinary',
1561
+ 'unknown'
1562
+ ]))
1563
+ })),
1564
+ citizenshipInfo: z.optional(z.object({
1565
+ status: z.optional(z.enum([
1566
+ 'us_citizen',
1567
+ 'lawful_permanent_resident',
1568
+ 'qualified_alien',
1569
+ 'prucol',
1570
+ 'undocumented',
1571
+ 'other'
1572
+ ])),
1573
+ certificateNumber: z.optional(z.string().max(50)),
1574
+ immigrationInfo: z.optional(z.object({
1575
+ status: z.optional(z.string().max(100)),
1576
+ documentType: z.optional(z.string().max(100)),
1577
+ documentNumber: z.optional(z.string().max(100)),
1578
+ alienOrI94Number: z.optional(z.string().max(100)),
1579
+ documentExpirationDate: z.optional(z.iso.date()),
1580
+ countryOfIssuance: z.optional(z.string().max(100)),
1581
+ hasSponsor: z.optional(z.boolean()),
1582
+ sponsor: z.optional(z.object({
1583
+ name: z.optional(z.object({
1584
+ firstName: z.string().min(1).max(100),
1585
+ middleInitial: z.optional(z.string().max(1)),
1586
+ middleName: z.optional(z.string().max(100)),
1587
+ lastName: z.string().min(1).max(100),
1588
+ maidenName: z.optional(z.string().max(100)),
1589
+ suffix: z.optional(z.string().max(20))
1590
+ })),
1591
+ dateOfBirth: z.optional(z.iso.date()),
1592
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
1593
+ address: z.optional(z.object({
1594
+ addressLine1: z.string().min(1).max(150),
1595
+ addressLine2: z.optional(z.string().max(150)),
1596
+ city: z.string().min(1).max(100),
1597
+ stateProvince: z.string().min(1).max(100),
1598
+ postalCode: z.string().min(3).max(20),
1599
+ county: z.optional(z.string().max(100))
1600
+ })),
1601
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1602
+ email: z.optional(z.email().max(320))
1603
+ }).and(z.object({
1604
+ spouse: z.optional(z.object({
1605
+ name: z.optional(z.object({
1606
+ firstName: z.string().min(1).max(100),
1607
+ middleInitial: z.optional(z.string().max(1)),
1608
+ middleName: z.optional(z.string().max(100)),
1609
+ lastName: z.string().min(1).max(100),
1610
+ maidenName: z.optional(z.string().max(100)),
1611
+ suffix: z.optional(z.string().max(20))
1612
+ })),
1613
+ dateOfBirth: z.optional(z.iso.date()),
1614
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
1615
+ address: z.optional(z.object({
1616
+ addressLine1: z.string().min(1).max(150),
1617
+ addressLine2: z.optional(z.string().max(150)),
1618
+ city: z.string().min(1).max(100),
1619
+ stateProvince: z.string().min(1).max(100),
1620
+ postalCode: z.string().min(3).max(20),
1621
+ county: z.optional(z.string().max(100))
1622
+ })),
1623
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1624
+ email: z.optional(z.email().max(320))
1625
+ })),
1626
+ totalPeopleInHousehold: z.optional(z.int().gte(1))
1627
+ })))
1628
+ }))
1629
+ })),
1630
+ contactInfo: z.optional(z.object({
1631
+ otherPhoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1632
+ mailingAddress: z.optional(z.object({
1633
+ addressLine1: z.string().min(1).max(150),
1634
+ addressLine2: z.optional(z.string().max(150)),
1635
+ city: z.string().min(1).max(100),
1636
+ stateProvince: z.string().min(1).max(100),
1637
+ postalCode: z.string().min(3).max(20),
1638
+ county: z.optional(z.string().max(100))
1639
+ })),
1640
+ isHomeless: z.optional(z.boolean()),
1641
+ preferredNoticeMethod: z.optional(z.enum([
1642
+ 'paper',
1643
+ 'email',
1644
+ 'both'
1645
+ ])),
1646
+ languagePreference: z.optional(z.object({
1647
+ written: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/)),
1648
+ spoken: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/))
1649
+ })),
1650
+ preferredContactMethod: z.optional(z.enum([
1651
+ 'phone',
1652
+ 'email',
1653
+ 'mail',
1654
+ 'sms'
1655
+ ]))
1656
+ })),
1657
+ employmentInfo: z.optional(z.object({
1658
+ jobs: z.optional(z.array(z.object({
1659
+ employer: z.optional(z.object({
1660
+ name: z.optional(z.string().max(200)),
1661
+ phone: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1662
+ address: z.optional(z.object({
1663
+ addressLine1: z.string().min(1).max(150),
1664
+ addressLine2: z.optional(z.string().max(150)),
1665
+ city: z.string().min(1).max(100),
1666
+ stateProvince: z.string().min(1).max(100),
1667
+ postalCode: z.string().min(3).max(20),
1668
+ county: z.optional(z.string().max(100))
1669
+ })),
1670
+ identificationNumber: z.optional(z.string().max(50))
1671
+ })),
1672
+ startDate: z.optional(z.iso.date()),
1673
+ endDate: z.optional(z.iso.date())
1674
+ })))
1675
+ })),
1676
+ educationInfo: z.optional(z.object({
1677
+ lastGradeCompleted: z.optional(z.string().max(50)),
1678
+ isCurrentlyEnrolled: z.optional(z.boolean()),
1679
+ schoolName: z.optional(z.string().max(200)),
1680
+ startDate: z.optional(z.iso.date()),
1681
+ isFullTimeStudent: z.optional(z.boolean()),
1682
+ expectedGraduationDate: z.optional(z.iso.date())
1683
+ })),
1684
+ militaryInfo: z.optional(z.object({
1685
+ isMilitaryServiceMember: z.optional(z.boolean()),
1686
+ veteranStatus: z.optional(z.boolean())
1687
+ })),
1688
+ tribalInfo: z.optional(z.object({
1689
+ tribeName: z.optional(z.string().max(200)),
1690
+ tribeState: z.optional(z.string().max(100)),
1691
+ hasReceivedServiceFromIndianHealthService: z.optional(z.boolean()),
1692
+ isEligibleForIndianHealthService: z.optional(z.boolean())
1693
+ })),
1694
+ consentToShareInformation: z.optional(z.boolean()),
1695
+ countyCode: z.optional(z.string().regex(/^[0-5][0-9]$/)),
1696
+ countyName: z.optional(z.enum([
1697
+ 'Alameda',
1698
+ 'Alpine',
1699
+ 'Amador',
1700
+ 'Butte',
1701
+ 'Calaveras',
1702
+ 'Colusa',
1703
+ 'Contra Costa',
1704
+ 'Del Norte',
1705
+ 'El Dorado',
1706
+ 'Fresno',
1707
+ 'Glenn',
1708
+ 'Humboldt',
1709
+ 'Imperial',
1710
+ 'Inyo',
1711
+ 'Kern',
1712
+ 'Kings',
1713
+ 'Lake',
1714
+ 'Lassen',
1715
+ 'Los Angeles',
1716
+ 'Madera',
1717
+ 'Marin',
1718
+ 'Mariposa',
1719
+ 'Mendocino',
1720
+ 'Merced',
1721
+ 'Modoc',
1722
+ 'Mono',
1723
+ 'Monterey',
1724
+ 'Napa',
1725
+ 'Nevada',
1726
+ 'Orange',
1727
+ 'Placer',
1728
+ 'Plumas',
1729
+ 'Riverside',
1730
+ 'Sacramento',
1731
+ 'San Benito',
1732
+ 'San Bernardino',
1733
+ 'San Diego',
1734
+ 'San Francisco',
1735
+ 'San Joaquin',
1736
+ 'San Luis Obispo',
1737
+ 'San Mateo',
1738
+ 'Santa Barbara',
1739
+ 'Santa Clara',
1740
+ 'Santa Cruz',
1741
+ 'Shasta',
1742
+ 'Sierra',
1743
+ 'Siskiyou',
1744
+ 'Solano',
1745
+ 'Sonoma',
1746
+ 'Stanislaus',
1747
+ 'Sutter',
1748
+ 'Tehama',
1749
+ 'Trinity',
1750
+ 'Tulare',
1751
+ 'Tuolumne',
1752
+ 'Ventura',
1753
+ 'Yolo',
1754
+ 'Yuba'
1755
+ ])),
1756
+ calworksEligible: z.optional(z.boolean()),
1757
+ calfreshEligible: z.optional(z.boolean()),
1758
+ medicalEligible: z.optional(z.boolean())
1759
+ }));
1760
+ export const zPersonListWritable = z.object({
1761
+ items: z.array(z.object({
1762
+ name: z.optional(z.object({
1763
+ firstName: z.string().min(1).max(100),
1764
+ middleInitial: z.optional(z.string().max(1)),
1765
+ middleName: z.optional(z.string().max(100)),
1766
+ lastName: z.string().min(1).max(100),
1767
+ maidenName: z.optional(z.string().max(100)),
1768
+ suffix: z.optional(z.string().max(20))
1769
+ })),
1770
+ dateOfBirth: z.optional(z.iso.date()),
1771
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
1772
+ address: z.optional(z.object({
1773
+ addressLine1: z.string().min(1).max(150),
1774
+ addressLine2: z.optional(z.string().max(150)),
1775
+ city: z.string().min(1).max(100),
1776
+ stateProvince: z.string().min(1).max(100),
1777
+ postalCode: z.string().min(3).max(20),
1778
+ county: z.optional(z.string().max(100))
1779
+ })),
1780
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1781
+ email: z.optional(z.email().max(320))
1782
+ }).and(z.object({
1783
+ id: z.optional(z.uuid()),
1784
+ demographicInfo: z.optional(z.object({
1785
+ sex: z.optional(z.enum([
1786
+ 'male',
1787
+ 'female',
1788
+ 'unknown'
1789
+ ])),
1790
+ maritalStatus: z.optional(z.enum([
1791
+ 'single',
1792
+ 'married',
1793
+ 'divorced',
1794
+ 'separated',
1795
+ 'widowed',
1796
+ 'civil_union',
1797
+ 'domestic_partnership'
1798
+ ])),
1799
+ isHispanicOrLatino: z.optional(z.boolean()),
1800
+ race: z.optional(z.array(z.enum([
1801
+ 'american_indian_alaskan_native',
1802
+ 'asian',
1803
+ 'black_african_american',
1804
+ 'native_hawaiian_pacific_islander',
1805
+ 'white'
1806
+ ]))),
1807
+ gender: z.optional(z.enum([
1808
+ 'male',
1809
+ 'female',
1810
+ 'nonbinary',
1811
+ 'unknown'
1812
+ ]))
1813
+ })),
1814
+ citizenshipInfo: z.optional(z.object({
1815
+ status: z.optional(z.enum([
1816
+ 'us_citizen',
1817
+ 'lawful_permanent_resident',
1818
+ 'qualified_alien',
1819
+ 'prucol',
1820
+ 'undocumented',
1821
+ 'other'
1822
+ ])),
1823
+ certificateNumber: z.optional(z.string().max(50)),
1824
+ immigrationInfo: z.optional(z.object({
1825
+ status: z.optional(z.string().max(100)),
1826
+ documentType: z.optional(z.string().max(100)),
1827
+ documentNumber: z.optional(z.string().max(100)),
1828
+ alienOrI94Number: z.optional(z.string().max(100)),
1829
+ documentExpirationDate: z.optional(z.iso.date()),
1830
+ countryOfIssuance: z.optional(z.string().max(100)),
1831
+ hasSponsor: z.optional(z.boolean()),
1832
+ sponsor: z.optional(z.object({
1833
+ name: z.optional(z.object({
1834
+ firstName: z.string().min(1).max(100),
1835
+ middleInitial: z.optional(z.string().max(1)),
1836
+ middleName: z.optional(z.string().max(100)),
1837
+ lastName: z.string().min(1).max(100),
1838
+ maidenName: z.optional(z.string().max(100)),
1839
+ suffix: z.optional(z.string().max(20))
1840
+ })),
1841
+ dateOfBirth: z.optional(z.iso.date()),
1842
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
1843
+ address: z.optional(z.object({
1844
+ addressLine1: z.string().min(1).max(150),
1845
+ addressLine2: z.optional(z.string().max(150)),
1846
+ city: z.string().min(1).max(100),
1847
+ stateProvince: z.string().min(1).max(100),
1848
+ postalCode: z.string().min(3).max(20),
1849
+ county: z.optional(z.string().max(100))
1850
+ })),
1851
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1852
+ email: z.optional(z.email().max(320))
1853
+ }).and(z.object({
1854
+ spouse: z.optional(z.object({
1855
+ name: z.optional(z.object({
1856
+ firstName: z.string().min(1).max(100),
1857
+ middleInitial: z.optional(z.string().max(1)),
1858
+ middleName: z.optional(z.string().max(100)),
1859
+ lastName: z.string().min(1).max(100),
1860
+ maidenName: z.optional(z.string().max(100)),
1861
+ suffix: z.optional(z.string().max(20))
1862
+ })),
1863
+ dateOfBirth: z.optional(z.iso.date()),
1864
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
1865
+ address: z.optional(z.object({
1866
+ addressLine1: z.string().min(1).max(150),
1867
+ addressLine2: z.optional(z.string().max(150)),
1868
+ city: z.string().min(1).max(100),
1869
+ stateProvince: z.string().min(1).max(100),
1870
+ postalCode: z.string().min(3).max(20),
1871
+ county: z.optional(z.string().max(100))
1872
+ })),
1873
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1874
+ email: z.optional(z.email().max(320))
1875
+ })),
1876
+ totalPeopleInHousehold: z.optional(z.int().gte(1))
1877
+ })))
1878
+ }))
1879
+ })),
1880
+ contactInfo: z.optional(z.object({
1881
+ otherPhoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1882
+ mailingAddress: z.optional(z.object({
1883
+ addressLine1: z.string().min(1).max(150),
1884
+ addressLine2: z.optional(z.string().max(150)),
1885
+ city: z.string().min(1).max(100),
1886
+ stateProvince: z.string().min(1).max(100),
1887
+ postalCode: z.string().min(3).max(20),
1888
+ county: z.optional(z.string().max(100))
1889
+ })),
1890
+ isHomeless: z.optional(z.boolean()),
1891
+ preferredNoticeMethod: z.optional(z.enum([
1892
+ 'paper',
1893
+ 'email',
1894
+ 'both'
1895
+ ])),
1896
+ languagePreference: z.optional(z.object({
1897
+ written: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/)),
1898
+ spoken: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/))
1899
+ })),
1900
+ preferredContactMethod: z.optional(z.enum([
1901
+ 'phone',
1902
+ 'email',
1903
+ 'mail',
1904
+ 'sms'
1905
+ ]))
1906
+ })),
1907
+ employmentInfo: z.optional(z.object({
1908
+ jobs: z.optional(z.array(z.object({
1909
+ employer: z.optional(z.object({
1910
+ name: z.optional(z.string().max(200)),
1911
+ phone: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
1912
+ address: z.optional(z.object({
1913
+ addressLine1: z.string().min(1).max(150),
1914
+ addressLine2: z.optional(z.string().max(150)),
1915
+ city: z.string().min(1).max(100),
1916
+ stateProvince: z.string().min(1).max(100),
1917
+ postalCode: z.string().min(3).max(20),
1918
+ county: z.optional(z.string().max(100))
1919
+ })),
1920
+ identificationNumber: z.optional(z.string().max(50))
1921
+ })),
1922
+ startDate: z.optional(z.iso.date()),
1923
+ endDate: z.optional(z.iso.date())
1924
+ })))
1925
+ })),
1926
+ educationInfo: z.optional(z.object({
1927
+ lastGradeCompleted: z.optional(z.string().max(50)),
1928
+ isCurrentlyEnrolled: z.optional(z.boolean()),
1929
+ schoolName: z.optional(z.string().max(200)),
1930
+ startDate: z.optional(z.iso.date()),
1931
+ isFullTimeStudent: z.optional(z.boolean()),
1932
+ expectedGraduationDate: z.optional(z.iso.date())
1933
+ })),
1934
+ militaryInfo: z.optional(z.object({
1935
+ isMilitaryServiceMember: z.optional(z.boolean()),
1936
+ veteranStatus: z.optional(z.boolean())
1937
+ })),
1938
+ tribalInfo: z.optional(z.object({
1939
+ tribeName: z.optional(z.string().max(200)),
1940
+ tribeState: z.optional(z.string().max(100)),
1941
+ hasReceivedServiceFromIndianHealthService: z.optional(z.boolean()),
1942
+ isEligibleForIndianHealthService: z.optional(z.boolean())
1943
+ })),
1944
+ consentToShareInformation: z.optional(z.boolean()),
1945
+ countyCode: z.optional(z.string().regex(/^[0-5][0-9]$/)),
1946
+ countyName: z.optional(z.enum([
1947
+ 'Alameda',
1948
+ 'Alpine',
1949
+ 'Amador',
1950
+ 'Butte',
1951
+ 'Calaveras',
1952
+ 'Colusa',
1953
+ 'Contra Costa',
1954
+ 'Del Norte',
1955
+ 'El Dorado',
1956
+ 'Fresno',
1957
+ 'Glenn',
1958
+ 'Humboldt',
1959
+ 'Imperial',
1960
+ 'Inyo',
1961
+ 'Kern',
1962
+ 'Kings',
1963
+ 'Lake',
1964
+ 'Lassen',
1965
+ 'Los Angeles',
1966
+ 'Madera',
1967
+ 'Marin',
1968
+ 'Mariposa',
1969
+ 'Mendocino',
1970
+ 'Merced',
1971
+ 'Modoc',
1972
+ 'Mono',
1973
+ 'Monterey',
1974
+ 'Napa',
1975
+ 'Nevada',
1976
+ 'Orange',
1977
+ 'Placer',
1978
+ 'Plumas',
1979
+ 'Riverside',
1980
+ 'Sacramento',
1981
+ 'San Benito',
1982
+ 'San Bernardino',
1983
+ 'San Diego',
1984
+ 'San Francisco',
1985
+ 'San Joaquin',
1986
+ 'San Luis Obispo',
1987
+ 'San Mateo',
1988
+ 'Santa Barbara',
1989
+ 'Santa Clara',
1990
+ 'Santa Cruz',
1991
+ 'Shasta',
1992
+ 'Sierra',
1993
+ 'Siskiyou',
1994
+ 'Solano',
1995
+ 'Sonoma',
1996
+ 'Stanislaus',
1997
+ 'Sutter',
1998
+ 'Tehama',
1999
+ 'Trinity',
2000
+ 'Tulare',
2001
+ 'Tuolumne',
2002
+ 'Ventura',
2003
+ 'Yolo',
2004
+ 'Yuba'
2005
+ ])),
2006
+ calworksEligible: z.optional(z.boolean()),
2007
+ calfreshEligible: z.optional(z.boolean()),
2008
+ medicalEligible: z.optional(z.boolean())
2009
+ }))),
2010
+ total: z.int().gte(0),
2011
+ limit: z.int().gte(1).lte(100),
2012
+ offset: z.int().gte(0),
2013
+ hasNext: z.optional(z.boolean())
2014
+ });
2015
+ /**
2016
+ * Unique identifier of the person.
2017
+ */
2018
+ export const zPersonIdParam = z.uuid();
2019
+ export const zListPersonsData = z.object({
2020
+ body: z.optional(z.never()),
2021
+ path: z.optional(z.never()),
2022
+ query: z.optional(z.object({
2023
+ q: z.optional(z.string()),
2024
+ limit: z.optional(z.int().gte(1).lte(100)).default(25),
2025
+ offset: z.optional(z.int().gte(0)).default(0)
2026
+ }))
2027
+ });
2028
+ /**
2029
+ * A paginated collection of persons.
2030
+ */
2031
+ export const zListPersonsResponse = z.object({
2032
+ items: z.array(z.object({
2033
+ name: z.optional(z.object({
2034
+ firstName: z.string().min(1).max(100),
2035
+ middleInitial: z.optional(z.string().max(1)),
2036
+ middleName: z.optional(z.string().max(100)),
2037
+ lastName: z.string().min(1).max(100),
2038
+ maidenName: z.optional(z.string().max(100)),
2039
+ suffix: z.optional(z.string().max(20))
2040
+ })),
2041
+ dateOfBirth: z.optional(z.iso.date()),
2042
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
2043
+ address: z.optional(z.object({
2044
+ addressLine1: z.string().min(1).max(150),
2045
+ addressLine2: z.optional(z.string().max(150)),
2046
+ city: z.string().min(1).max(100),
2047
+ stateProvince: z.string().min(1).max(100),
2048
+ postalCode: z.string().min(3).max(20),
2049
+ county: z.optional(z.string().max(100))
2050
+ })),
2051
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2052
+ email: z.optional(z.email().max(320))
2053
+ }).and(z.object({
2054
+ id: z.optional(z.uuid()),
2055
+ demographicInfo: z.optional(z.object({
2056
+ sex: z.optional(z.enum([
2057
+ 'male',
2058
+ 'female',
2059
+ 'unknown'
2060
+ ])),
2061
+ maritalStatus: z.optional(z.enum([
2062
+ 'single',
2063
+ 'married',
2064
+ 'divorced',
2065
+ 'separated',
2066
+ 'widowed',
2067
+ 'civil_union',
2068
+ 'domestic_partnership'
2069
+ ])),
2070
+ isHispanicOrLatino: z.optional(z.boolean()),
2071
+ race: z.optional(z.array(z.enum([
2072
+ 'american_indian_alaskan_native',
2073
+ 'asian',
2074
+ 'black_african_american',
2075
+ 'native_hawaiian_pacific_islander',
2076
+ 'white'
2077
+ ]))),
2078
+ gender: z.optional(z.enum([
2079
+ 'male',
2080
+ 'female',
2081
+ 'nonbinary',
2082
+ 'unknown'
2083
+ ]))
2084
+ })),
2085
+ citizenshipInfo: z.optional(z.object({
2086
+ status: z.optional(z.enum([
2087
+ 'us_citizen',
2088
+ 'lawful_permanent_resident',
2089
+ 'qualified_alien',
2090
+ 'prucol',
2091
+ 'undocumented',
2092
+ 'other'
2093
+ ])),
2094
+ certificateNumber: z.optional(z.string().max(50)),
2095
+ immigrationInfo: z.optional(z.object({
2096
+ status: z.optional(z.string().max(100)),
2097
+ documentType: z.optional(z.string().max(100)),
2098
+ documentNumber: z.optional(z.string().max(100)),
2099
+ alienOrI94Number: z.optional(z.string().max(100)),
2100
+ documentExpirationDate: z.optional(z.iso.date()),
2101
+ countryOfIssuance: z.optional(z.string().max(100)),
2102
+ hasSponsor: z.optional(z.boolean()),
2103
+ sponsor: z.optional(z.object({
2104
+ name: z.optional(z.object({
2105
+ firstName: z.string().min(1).max(100),
2106
+ middleInitial: z.optional(z.string().max(1)),
2107
+ middleName: z.optional(z.string().max(100)),
2108
+ lastName: z.string().min(1).max(100),
2109
+ maidenName: z.optional(z.string().max(100)),
2110
+ suffix: z.optional(z.string().max(20))
2111
+ })),
2112
+ dateOfBirth: z.optional(z.iso.date()),
2113
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
2114
+ address: z.optional(z.object({
2115
+ addressLine1: z.string().min(1).max(150),
2116
+ addressLine2: z.optional(z.string().max(150)),
2117
+ city: z.string().min(1).max(100),
2118
+ stateProvince: z.string().min(1).max(100),
2119
+ postalCode: z.string().min(3).max(20),
2120
+ county: z.optional(z.string().max(100))
2121
+ })),
2122
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2123
+ email: z.optional(z.email().max(320))
2124
+ }).and(z.object({
2125
+ spouse: z.optional(z.object({
2126
+ name: z.optional(z.object({
2127
+ firstName: z.string().min(1).max(100),
2128
+ middleInitial: z.optional(z.string().max(1)),
2129
+ middleName: z.optional(z.string().max(100)),
2130
+ lastName: z.string().min(1).max(100),
2131
+ maidenName: z.optional(z.string().max(100)),
2132
+ suffix: z.optional(z.string().max(20))
2133
+ })),
2134
+ dateOfBirth: z.optional(z.iso.date()),
2135
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
2136
+ address: z.optional(z.object({
2137
+ addressLine1: z.string().min(1).max(150),
2138
+ addressLine2: z.optional(z.string().max(150)),
2139
+ city: z.string().min(1).max(100),
2140
+ stateProvince: z.string().min(1).max(100),
2141
+ postalCode: z.string().min(3).max(20),
2142
+ county: z.optional(z.string().max(100))
2143
+ })),
2144
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2145
+ email: z.optional(z.email().max(320))
2146
+ })),
2147
+ totalPeopleInHousehold: z.optional(z.int().gte(1))
2148
+ })))
2149
+ }))
2150
+ })),
2151
+ contactInfo: z.optional(z.object({
2152
+ otherPhoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2153
+ mailingAddress: z.optional(z.object({
2154
+ addressLine1: z.string().min(1).max(150),
2155
+ addressLine2: z.optional(z.string().max(150)),
2156
+ city: z.string().min(1).max(100),
2157
+ stateProvince: z.string().min(1).max(100),
2158
+ postalCode: z.string().min(3).max(20),
2159
+ county: z.optional(z.string().max(100))
2160
+ })),
2161
+ isHomeless: z.optional(z.boolean()),
2162
+ preferredNoticeMethod: z.optional(z.enum([
2163
+ 'paper',
2164
+ 'email',
2165
+ 'both'
2166
+ ])),
2167
+ languagePreference: z.optional(z.object({
2168
+ written: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/)),
2169
+ spoken: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/))
2170
+ })),
2171
+ preferredContactMethod: z.optional(z.enum([
2172
+ 'phone',
2173
+ 'email',
2174
+ 'mail',
2175
+ 'sms'
2176
+ ]))
2177
+ })),
2178
+ employmentInfo: z.optional(z.object({
2179
+ jobs: z.optional(z.array(z.object({
2180
+ employer: z.optional(z.object({
2181
+ name: z.optional(z.string().max(200)),
2182
+ phone: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2183
+ address: z.optional(z.object({
2184
+ addressLine1: z.string().min(1).max(150),
2185
+ addressLine2: z.optional(z.string().max(150)),
2186
+ city: z.string().min(1).max(100),
2187
+ stateProvince: z.string().min(1).max(100),
2188
+ postalCode: z.string().min(3).max(20),
2189
+ county: z.optional(z.string().max(100))
2190
+ })),
2191
+ identificationNumber: z.optional(z.string().max(50))
2192
+ })),
2193
+ startDate: z.optional(z.iso.date()),
2194
+ endDate: z.optional(z.iso.date())
2195
+ })))
2196
+ })),
2197
+ educationInfo: z.optional(z.object({
2198
+ lastGradeCompleted: z.optional(z.string().max(50)),
2199
+ isCurrentlyEnrolled: z.optional(z.boolean()),
2200
+ schoolName: z.optional(z.string().max(200)),
2201
+ startDate: z.optional(z.iso.date()),
2202
+ isFullTimeStudent: z.optional(z.boolean()),
2203
+ expectedGraduationDate: z.optional(z.iso.date())
2204
+ })),
2205
+ militaryInfo: z.optional(z.object({
2206
+ isMilitaryServiceMember: z.optional(z.boolean()),
2207
+ veteranStatus: z.optional(z.boolean())
2208
+ })),
2209
+ tribalInfo: z.optional(z.object({
2210
+ tribeName: z.optional(z.string().max(200)),
2211
+ tribeState: z.optional(z.string().max(100)),
2212
+ hasReceivedServiceFromIndianHealthService: z.optional(z.boolean()),
2213
+ isEligibleForIndianHealthService: z.optional(z.boolean())
2214
+ })),
2215
+ consentToShareInformation: z.optional(z.boolean()),
2216
+ createdAt: z.optional(z.iso.datetime().readonly()),
2217
+ updatedAt: z.optional(z.iso.datetime().readonly()),
2218
+ countyCode: z.optional(z.string().regex(/^[0-5][0-9]$/)),
2219
+ countyName: z.optional(z.enum([
2220
+ 'Alameda',
2221
+ 'Alpine',
2222
+ 'Amador',
2223
+ 'Butte',
2224
+ 'Calaveras',
2225
+ 'Colusa',
2226
+ 'Contra Costa',
2227
+ 'Del Norte',
2228
+ 'El Dorado',
2229
+ 'Fresno',
2230
+ 'Glenn',
2231
+ 'Humboldt',
2232
+ 'Imperial',
2233
+ 'Inyo',
2234
+ 'Kern',
2235
+ 'Kings',
2236
+ 'Lake',
2237
+ 'Lassen',
2238
+ 'Los Angeles',
2239
+ 'Madera',
2240
+ 'Marin',
2241
+ 'Mariposa',
2242
+ 'Mendocino',
2243
+ 'Merced',
2244
+ 'Modoc',
2245
+ 'Mono',
2246
+ 'Monterey',
2247
+ 'Napa',
2248
+ 'Nevada',
2249
+ 'Orange',
2250
+ 'Placer',
2251
+ 'Plumas',
2252
+ 'Riverside',
2253
+ 'Sacramento',
2254
+ 'San Benito',
2255
+ 'San Bernardino',
2256
+ 'San Diego',
2257
+ 'San Francisco',
2258
+ 'San Joaquin',
2259
+ 'San Luis Obispo',
2260
+ 'San Mateo',
2261
+ 'Santa Barbara',
2262
+ 'Santa Clara',
2263
+ 'Santa Cruz',
2264
+ 'Shasta',
2265
+ 'Sierra',
2266
+ 'Siskiyou',
2267
+ 'Solano',
2268
+ 'Sonoma',
2269
+ 'Stanislaus',
2270
+ 'Sutter',
2271
+ 'Tehama',
2272
+ 'Trinity',
2273
+ 'Tulare',
2274
+ 'Tuolumne',
2275
+ 'Ventura',
2276
+ 'Yolo',
2277
+ 'Yuba'
2278
+ ])),
2279
+ calworksEligible: z.optional(z.boolean()),
2280
+ calfreshEligible: z.optional(z.boolean()),
2281
+ medicalEligible: z.optional(z.boolean())
2282
+ }))),
2283
+ total: z.int().gte(0),
2284
+ limit: z.int().gte(1).lte(100),
2285
+ offset: z.int().gte(0),
2286
+ hasNext: z.optional(z.boolean())
2287
+ });
2288
+ export const zCreatePersonData = z.object({
2289
+ body: z.object({
2290
+ name: z.optional(z.object({
2291
+ firstName: z.string().min(1).max(100),
2292
+ middleInitial: z.optional(z.string().max(1)),
2293
+ middleName: z.optional(z.string().max(100)),
2294
+ lastName: z.string().min(1).max(100),
2295
+ maidenName: z.optional(z.string().max(100)),
2296
+ suffix: z.optional(z.string().max(20))
2297
+ })),
2298
+ dateOfBirth: z.optional(z.iso.date()),
2299
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
2300
+ address: z.optional(z.object({
2301
+ addressLine1: z.string().min(1).max(150),
2302
+ addressLine2: z.optional(z.string().max(150)),
2303
+ city: z.string().min(1).max(100),
2304
+ stateProvince: z.string().min(1).max(100),
2305
+ postalCode: z.string().min(3).max(20),
2306
+ county: z.optional(z.string().max(100))
2307
+ })),
2308
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2309
+ email: z.optional(z.email().max(320))
2310
+ }).and(z.object({
2311
+ id: z.optional(z.uuid()),
2312
+ demographicInfo: z.optional(z.object({
2313
+ sex: z.optional(z.enum([
2314
+ 'male',
2315
+ 'female',
2316
+ 'unknown'
2317
+ ])),
2318
+ maritalStatus: z.optional(z.enum([
2319
+ 'single',
2320
+ 'married',
2321
+ 'divorced',
2322
+ 'separated',
2323
+ 'widowed',
2324
+ 'civil_union',
2325
+ 'domestic_partnership'
2326
+ ])),
2327
+ isHispanicOrLatino: z.optional(z.boolean()),
2328
+ race: z.optional(z.array(z.enum([
2329
+ 'american_indian_alaskan_native',
2330
+ 'asian',
2331
+ 'black_african_american',
2332
+ 'native_hawaiian_pacific_islander',
2333
+ 'white'
2334
+ ]))),
2335
+ gender: z.optional(z.enum([
2336
+ 'male',
2337
+ 'female',
2338
+ 'nonbinary',
2339
+ 'unknown'
2340
+ ]))
2341
+ })),
2342
+ citizenshipInfo: z.optional(z.object({
2343
+ status: z.optional(z.enum([
2344
+ 'us_citizen',
2345
+ 'lawful_permanent_resident',
2346
+ 'qualified_alien',
2347
+ 'prucol',
2348
+ 'undocumented',
2349
+ 'other'
2350
+ ])),
2351
+ certificateNumber: z.optional(z.string().max(50)),
2352
+ immigrationInfo: z.optional(z.object({
2353
+ status: z.optional(z.string().max(100)),
2354
+ documentType: z.optional(z.string().max(100)),
2355
+ documentNumber: z.optional(z.string().max(100)),
2356
+ alienOrI94Number: z.optional(z.string().max(100)),
2357
+ documentExpirationDate: z.optional(z.iso.date()),
2358
+ countryOfIssuance: z.optional(z.string().max(100)),
2359
+ hasSponsor: z.optional(z.boolean()),
2360
+ sponsor: z.optional(z.object({
2361
+ name: z.optional(z.object({
2362
+ firstName: z.string().min(1).max(100),
2363
+ middleInitial: z.optional(z.string().max(1)),
2364
+ middleName: z.optional(z.string().max(100)),
2365
+ lastName: z.string().min(1).max(100),
2366
+ maidenName: z.optional(z.string().max(100)),
2367
+ suffix: z.optional(z.string().max(20))
2368
+ })),
2369
+ dateOfBirth: z.optional(z.iso.date()),
2370
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
2371
+ address: z.optional(z.object({
2372
+ addressLine1: z.string().min(1).max(150),
2373
+ addressLine2: z.optional(z.string().max(150)),
2374
+ city: z.string().min(1).max(100),
2375
+ stateProvince: z.string().min(1).max(100),
2376
+ postalCode: z.string().min(3).max(20),
2377
+ county: z.optional(z.string().max(100))
2378
+ })),
2379
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2380
+ email: z.optional(z.email().max(320))
2381
+ }).and(z.object({
2382
+ spouse: z.optional(z.object({
2383
+ name: z.optional(z.object({
2384
+ firstName: z.string().min(1).max(100),
2385
+ middleInitial: z.optional(z.string().max(1)),
2386
+ middleName: z.optional(z.string().max(100)),
2387
+ lastName: z.string().min(1).max(100),
2388
+ maidenName: z.optional(z.string().max(100)),
2389
+ suffix: z.optional(z.string().max(20))
2390
+ })),
2391
+ dateOfBirth: z.optional(z.iso.date()),
2392
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
2393
+ address: z.optional(z.object({
2394
+ addressLine1: z.string().min(1).max(150),
2395
+ addressLine2: z.optional(z.string().max(150)),
2396
+ city: z.string().min(1).max(100),
2397
+ stateProvince: z.string().min(1).max(100),
2398
+ postalCode: z.string().min(3).max(20),
2399
+ county: z.optional(z.string().max(100))
2400
+ })),
2401
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2402
+ email: z.optional(z.email().max(320))
2403
+ })),
2404
+ totalPeopleInHousehold: z.optional(z.int().gte(1))
2405
+ })))
2406
+ }))
2407
+ })),
2408
+ contactInfo: z.optional(z.object({
2409
+ otherPhoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2410
+ mailingAddress: z.optional(z.object({
2411
+ addressLine1: z.string().min(1).max(150),
2412
+ addressLine2: z.optional(z.string().max(150)),
2413
+ city: z.string().min(1).max(100),
2414
+ stateProvince: z.string().min(1).max(100),
2415
+ postalCode: z.string().min(3).max(20),
2416
+ county: z.optional(z.string().max(100))
2417
+ })),
2418
+ isHomeless: z.optional(z.boolean()),
2419
+ preferredNoticeMethod: z.optional(z.enum([
2420
+ 'paper',
2421
+ 'email',
2422
+ 'both'
2423
+ ])),
2424
+ languagePreference: z.optional(z.object({
2425
+ written: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/)),
2426
+ spoken: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/))
2427
+ })),
2428
+ preferredContactMethod: z.optional(z.enum([
2429
+ 'phone',
2430
+ 'email',
2431
+ 'mail',
2432
+ 'sms'
2433
+ ]))
2434
+ })),
2435
+ employmentInfo: z.optional(z.object({
2436
+ jobs: z.optional(z.array(z.object({
2437
+ employer: z.optional(z.object({
2438
+ name: z.optional(z.string().max(200)),
2439
+ phone: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2440
+ address: z.optional(z.object({
2441
+ addressLine1: z.string().min(1).max(150),
2442
+ addressLine2: z.optional(z.string().max(150)),
2443
+ city: z.string().min(1).max(100),
2444
+ stateProvince: z.string().min(1).max(100),
2445
+ postalCode: z.string().min(3).max(20),
2446
+ county: z.optional(z.string().max(100))
2447
+ })),
2448
+ identificationNumber: z.optional(z.string().max(50))
2449
+ })),
2450
+ startDate: z.optional(z.iso.date()),
2451
+ endDate: z.optional(z.iso.date())
2452
+ })))
2453
+ })),
2454
+ educationInfo: z.optional(z.object({
2455
+ lastGradeCompleted: z.optional(z.string().max(50)),
2456
+ isCurrentlyEnrolled: z.optional(z.boolean()),
2457
+ schoolName: z.optional(z.string().max(200)),
2458
+ startDate: z.optional(z.iso.date()),
2459
+ isFullTimeStudent: z.optional(z.boolean()),
2460
+ expectedGraduationDate: z.optional(z.iso.date())
2461
+ })),
2462
+ militaryInfo: z.optional(z.object({
2463
+ isMilitaryServiceMember: z.optional(z.boolean()),
2464
+ veteranStatus: z.optional(z.boolean())
2465
+ })),
2466
+ tribalInfo: z.optional(z.object({
2467
+ tribeName: z.optional(z.string().max(200)),
2468
+ tribeState: z.optional(z.string().max(100)),
2469
+ hasReceivedServiceFromIndianHealthService: z.optional(z.boolean()),
2470
+ isEligibleForIndianHealthService: z.optional(z.boolean())
2471
+ })),
2472
+ consentToShareInformation: z.optional(z.boolean()),
2473
+ createdAt: z.optional(z.iso.datetime().readonly()),
2474
+ updatedAt: z.optional(z.iso.datetime().readonly()),
2475
+ countyCode: z.optional(z.string().regex(/^[0-5][0-9]$/)),
2476
+ countyName: z.optional(z.enum([
2477
+ 'Alameda',
2478
+ 'Alpine',
2479
+ 'Amador',
2480
+ 'Butte',
2481
+ 'Calaveras',
2482
+ 'Colusa',
2483
+ 'Contra Costa',
2484
+ 'Del Norte',
2485
+ 'El Dorado',
2486
+ 'Fresno',
2487
+ 'Glenn',
2488
+ 'Humboldt',
2489
+ 'Imperial',
2490
+ 'Inyo',
2491
+ 'Kern',
2492
+ 'Kings',
2493
+ 'Lake',
2494
+ 'Lassen',
2495
+ 'Los Angeles',
2496
+ 'Madera',
2497
+ 'Marin',
2498
+ 'Mariposa',
2499
+ 'Mendocino',
2500
+ 'Merced',
2501
+ 'Modoc',
2502
+ 'Mono',
2503
+ 'Monterey',
2504
+ 'Napa',
2505
+ 'Nevada',
2506
+ 'Orange',
2507
+ 'Placer',
2508
+ 'Plumas',
2509
+ 'Riverside',
2510
+ 'Sacramento',
2511
+ 'San Benito',
2512
+ 'San Bernardino',
2513
+ 'San Diego',
2514
+ 'San Francisco',
2515
+ 'San Joaquin',
2516
+ 'San Luis Obispo',
2517
+ 'San Mateo',
2518
+ 'Santa Barbara',
2519
+ 'Santa Clara',
2520
+ 'Santa Cruz',
2521
+ 'Shasta',
2522
+ 'Sierra',
2523
+ 'Siskiyou',
2524
+ 'Solano',
2525
+ 'Sonoma',
2526
+ 'Stanislaus',
2527
+ 'Sutter',
2528
+ 'Tehama',
2529
+ 'Trinity',
2530
+ 'Tulare',
2531
+ 'Tuolumne',
2532
+ 'Ventura',
2533
+ 'Yolo',
2534
+ 'Yuba'
2535
+ ])),
2536
+ calworksEligible: z.optional(z.boolean()),
2537
+ calfreshEligible: z.optional(z.boolean()),
2538
+ medicalEligible: z.optional(z.boolean())
2539
+ })).and(z.record(z.string(), z.unknown())),
2540
+ path: z.optional(z.never()),
2541
+ query: z.optional(z.never())
2542
+ });
2543
+ /**
2544
+ * Person created successfully.
2545
+ */
2546
+ export const zCreatePersonResponse = z.object({
2547
+ name: z.optional(z.object({
2548
+ firstName: z.string().min(1).max(100),
2549
+ middleInitial: z.optional(z.string().max(1)),
2550
+ middleName: z.optional(z.string().max(100)),
2551
+ lastName: z.string().min(1).max(100),
2552
+ maidenName: z.optional(z.string().max(100)),
2553
+ suffix: z.optional(z.string().max(20))
2554
+ })),
2555
+ dateOfBirth: z.optional(z.iso.date()),
2556
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
2557
+ address: z.optional(z.object({
2558
+ addressLine1: z.string().min(1).max(150),
2559
+ addressLine2: z.optional(z.string().max(150)),
2560
+ city: z.string().min(1).max(100),
2561
+ stateProvince: z.string().min(1).max(100),
2562
+ postalCode: z.string().min(3).max(20),
2563
+ county: z.optional(z.string().max(100))
2564
+ })),
2565
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2566
+ email: z.optional(z.email().max(320))
2567
+ }).and(z.object({
2568
+ id: z.optional(z.uuid()),
2569
+ demographicInfo: z.optional(z.object({
2570
+ sex: z.optional(z.enum([
2571
+ 'male',
2572
+ 'female',
2573
+ 'unknown'
2574
+ ])),
2575
+ maritalStatus: z.optional(z.enum([
2576
+ 'single',
2577
+ 'married',
2578
+ 'divorced',
2579
+ 'separated',
2580
+ 'widowed',
2581
+ 'civil_union',
2582
+ 'domestic_partnership'
2583
+ ])),
2584
+ isHispanicOrLatino: z.optional(z.boolean()),
2585
+ race: z.optional(z.array(z.enum([
2586
+ 'american_indian_alaskan_native',
2587
+ 'asian',
2588
+ 'black_african_american',
2589
+ 'native_hawaiian_pacific_islander',
2590
+ 'white'
2591
+ ]))),
2592
+ gender: z.optional(z.enum([
2593
+ 'male',
2594
+ 'female',
2595
+ 'nonbinary',
2596
+ 'unknown'
2597
+ ]))
2598
+ })),
2599
+ citizenshipInfo: z.optional(z.object({
2600
+ status: z.optional(z.enum([
2601
+ 'us_citizen',
2602
+ 'lawful_permanent_resident',
2603
+ 'qualified_alien',
2604
+ 'prucol',
2605
+ 'undocumented',
2606
+ 'other'
2607
+ ])),
2608
+ certificateNumber: z.optional(z.string().max(50)),
2609
+ immigrationInfo: z.optional(z.object({
2610
+ status: z.optional(z.string().max(100)),
2611
+ documentType: z.optional(z.string().max(100)),
2612
+ documentNumber: z.optional(z.string().max(100)),
2613
+ alienOrI94Number: z.optional(z.string().max(100)),
2614
+ documentExpirationDate: z.optional(z.iso.date()),
2615
+ countryOfIssuance: z.optional(z.string().max(100)),
2616
+ hasSponsor: z.optional(z.boolean()),
2617
+ sponsor: z.optional(z.object({
2618
+ name: z.optional(z.object({
2619
+ firstName: z.string().min(1).max(100),
2620
+ middleInitial: z.optional(z.string().max(1)),
2621
+ middleName: z.optional(z.string().max(100)),
2622
+ lastName: z.string().min(1).max(100),
2623
+ maidenName: z.optional(z.string().max(100)),
2624
+ suffix: z.optional(z.string().max(20))
2625
+ })),
2626
+ dateOfBirth: z.optional(z.iso.date()),
2627
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
2628
+ address: z.optional(z.object({
2629
+ addressLine1: z.string().min(1).max(150),
2630
+ addressLine2: z.optional(z.string().max(150)),
2631
+ city: z.string().min(1).max(100),
2632
+ stateProvince: z.string().min(1).max(100),
2633
+ postalCode: z.string().min(3).max(20),
2634
+ county: z.optional(z.string().max(100))
2635
+ })),
2636
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2637
+ email: z.optional(z.email().max(320))
2638
+ }).and(z.object({
2639
+ spouse: z.optional(z.object({
2640
+ name: z.optional(z.object({
2641
+ firstName: z.string().min(1).max(100),
2642
+ middleInitial: z.optional(z.string().max(1)),
2643
+ middleName: z.optional(z.string().max(100)),
2644
+ lastName: z.string().min(1).max(100),
2645
+ maidenName: z.optional(z.string().max(100)),
2646
+ suffix: z.optional(z.string().max(20))
2647
+ })),
2648
+ dateOfBirth: z.optional(z.iso.date()),
2649
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
2650
+ address: z.optional(z.object({
2651
+ addressLine1: z.string().min(1).max(150),
2652
+ addressLine2: z.optional(z.string().max(150)),
2653
+ city: z.string().min(1).max(100),
2654
+ stateProvince: z.string().min(1).max(100),
2655
+ postalCode: z.string().min(3).max(20),
2656
+ county: z.optional(z.string().max(100))
2657
+ })),
2658
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2659
+ email: z.optional(z.email().max(320))
2660
+ })),
2661
+ totalPeopleInHousehold: z.optional(z.int().gte(1))
2662
+ })))
2663
+ }))
2664
+ })),
2665
+ contactInfo: z.optional(z.object({
2666
+ otherPhoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2667
+ mailingAddress: z.optional(z.object({
2668
+ addressLine1: z.string().min(1).max(150),
2669
+ addressLine2: z.optional(z.string().max(150)),
2670
+ city: z.string().min(1).max(100),
2671
+ stateProvince: z.string().min(1).max(100),
2672
+ postalCode: z.string().min(3).max(20),
2673
+ county: z.optional(z.string().max(100))
2674
+ })),
2675
+ isHomeless: z.optional(z.boolean()),
2676
+ preferredNoticeMethod: z.optional(z.enum([
2677
+ 'paper',
2678
+ 'email',
2679
+ 'both'
2680
+ ])),
2681
+ languagePreference: z.optional(z.object({
2682
+ written: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/)),
2683
+ spoken: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/))
2684
+ })),
2685
+ preferredContactMethod: z.optional(z.enum([
2686
+ 'phone',
2687
+ 'email',
2688
+ 'mail',
2689
+ 'sms'
2690
+ ]))
2691
+ })),
2692
+ employmentInfo: z.optional(z.object({
2693
+ jobs: z.optional(z.array(z.object({
2694
+ employer: z.optional(z.object({
2695
+ name: z.optional(z.string().max(200)),
2696
+ phone: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2697
+ address: z.optional(z.object({
2698
+ addressLine1: z.string().min(1).max(150),
2699
+ addressLine2: z.optional(z.string().max(150)),
2700
+ city: z.string().min(1).max(100),
2701
+ stateProvince: z.string().min(1).max(100),
2702
+ postalCode: z.string().min(3).max(20),
2703
+ county: z.optional(z.string().max(100))
2704
+ })),
2705
+ identificationNumber: z.optional(z.string().max(50))
2706
+ })),
2707
+ startDate: z.optional(z.iso.date()),
2708
+ endDate: z.optional(z.iso.date())
2709
+ })))
2710
+ })),
2711
+ educationInfo: z.optional(z.object({
2712
+ lastGradeCompleted: z.optional(z.string().max(50)),
2713
+ isCurrentlyEnrolled: z.optional(z.boolean()),
2714
+ schoolName: z.optional(z.string().max(200)),
2715
+ startDate: z.optional(z.iso.date()),
2716
+ isFullTimeStudent: z.optional(z.boolean()),
2717
+ expectedGraduationDate: z.optional(z.iso.date())
2718
+ })),
2719
+ militaryInfo: z.optional(z.object({
2720
+ isMilitaryServiceMember: z.optional(z.boolean()),
2721
+ veteranStatus: z.optional(z.boolean())
2722
+ })),
2723
+ tribalInfo: z.optional(z.object({
2724
+ tribeName: z.optional(z.string().max(200)),
2725
+ tribeState: z.optional(z.string().max(100)),
2726
+ hasReceivedServiceFromIndianHealthService: z.optional(z.boolean()),
2727
+ isEligibleForIndianHealthService: z.optional(z.boolean())
2728
+ })),
2729
+ consentToShareInformation: z.optional(z.boolean()),
2730
+ createdAt: z.optional(z.iso.datetime().readonly()),
2731
+ updatedAt: z.optional(z.iso.datetime().readonly()),
2732
+ countyCode: z.optional(z.string().regex(/^[0-5][0-9]$/)),
2733
+ countyName: z.optional(z.enum([
2734
+ 'Alameda',
2735
+ 'Alpine',
2736
+ 'Amador',
2737
+ 'Butte',
2738
+ 'Calaveras',
2739
+ 'Colusa',
2740
+ 'Contra Costa',
2741
+ 'Del Norte',
2742
+ 'El Dorado',
2743
+ 'Fresno',
2744
+ 'Glenn',
2745
+ 'Humboldt',
2746
+ 'Imperial',
2747
+ 'Inyo',
2748
+ 'Kern',
2749
+ 'Kings',
2750
+ 'Lake',
2751
+ 'Lassen',
2752
+ 'Los Angeles',
2753
+ 'Madera',
2754
+ 'Marin',
2755
+ 'Mariposa',
2756
+ 'Mendocino',
2757
+ 'Merced',
2758
+ 'Modoc',
2759
+ 'Mono',
2760
+ 'Monterey',
2761
+ 'Napa',
2762
+ 'Nevada',
2763
+ 'Orange',
2764
+ 'Placer',
2765
+ 'Plumas',
2766
+ 'Riverside',
2767
+ 'Sacramento',
2768
+ 'San Benito',
2769
+ 'San Bernardino',
2770
+ 'San Diego',
2771
+ 'San Francisco',
2772
+ 'San Joaquin',
2773
+ 'San Luis Obispo',
2774
+ 'San Mateo',
2775
+ 'Santa Barbara',
2776
+ 'Santa Clara',
2777
+ 'Santa Cruz',
2778
+ 'Shasta',
2779
+ 'Sierra',
2780
+ 'Siskiyou',
2781
+ 'Solano',
2782
+ 'Sonoma',
2783
+ 'Stanislaus',
2784
+ 'Sutter',
2785
+ 'Tehama',
2786
+ 'Trinity',
2787
+ 'Tulare',
2788
+ 'Tuolumne',
2789
+ 'Ventura',
2790
+ 'Yolo',
2791
+ 'Yuba'
2792
+ ])),
2793
+ calworksEligible: z.optional(z.boolean()),
2794
+ calfreshEligible: z.optional(z.boolean()),
2795
+ medicalEligible: z.optional(z.boolean())
2796
+ }));
2797
+ export const zDeletePersonData = z.object({
2798
+ body: z.optional(z.never()),
2799
+ path: z.object({
2800
+ personId: z.uuid()
2801
+ }),
2802
+ query: z.optional(z.never())
2803
+ });
2804
+ /**
2805
+ * Person deleted successfully.
2806
+ */
2807
+ export const zDeletePersonResponse = z.void();
2808
+ export const zGetPersonData = z.object({
2809
+ body: z.optional(z.never()),
2810
+ path: z.object({
2811
+ personId: z.uuid()
2812
+ }),
2813
+ query: z.optional(z.never())
2814
+ });
2815
+ /**
2816
+ * Person retrieved successfully.
2817
+ */
2818
+ export const zGetPersonResponse = z.object({
2819
+ name: z.optional(z.object({
2820
+ firstName: z.string().min(1).max(100),
2821
+ middleInitial: z.optional(z.string().max(1)),
2822
+ middleName: z.optional(z.string().max(100)),
2823
+ lastName: z.string().min(1).max(100),
2824
+ maidenName: z.optional(z.string().max(100)),
2825
+ suffix: z.optional(z.string().max(20))
2826
+ })),
2827
+ dateOfBirth: z.optional(z.iso.date()),
2828
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
2829
+ address: z.optional(z.object({
2830
+ addressLine1: z.string().min(1).max(150),
2831
+ addressLine2: z.optional(z.string().max(150)),
2832
+ city: z.string().min(1).max(100),
2833
+ stateProvince: z.string().min(1).max(100),
2834
+ postalCode: z.string().min(3).max(20),
2835
+ county: z.optional(z.string().max(100))
2836
+ })),
2837
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2838
+ email: z.optional(z.email().max(320))
2839
+ }).and(z.object({
2840
+ id: z.optional(z.uuid()),
2841
+ demographicInfo: z.optional(z.object({
2842
+ sex: z.optional(z.enum([
2843
+ 'male',
2844
+ 'female',
2845
+ 'unknown'
2846
+ ])),
2847
+ maritalStatus: z.optional(z.enum([
2848
+ 'single',
2849
+ 'married',
2850
+ 'divorced',
2851
+ 'separated',
2852
+ 'widowed',
2853
+ 'civil_union',
2854
+ 'domestic_partnership'
2855
+ ])),
2856
+ isHispanicOrLatino: z.optional(z.boolean()),
2857
+ race: z.optional(z.array(z.enum([
2858
+ 'american_indian_alaskan_native',
2859
+ 'asian',
2860
+ 'black_african_american',
2861
+ 'native_hawaiian_pacific_islander',
2862
+ 'white'
2863
+ ]))),
2864
+ gender: z.optional(z.enum([
2865
+ 'male',
2866
+ 'female',
2867
+ 'nonbinary',
2868
+ 'unknown'
2869
+ ]))
2870
+ })),
2871
+ citizenshipInfo: z.optional(z.object({
2872
+ status: z.optional(z.enum([
2873
+ 'us_citizen',
2874
+ 'lawful_permanent_resident',
2875
+ 'qualified_alien',
2876
+ 'prucol',
2877
+ 'undocumented',
2878
+ 'other'
2879
+ ])),
2880
+ certificateNumber: z.optional(z.string().max(50)),
2881
+ immigrationInfo: z.optional(z.object({
2882
+ status: z.optional(z.string().max(100)),
2883
+ documentType: z.optional(z.string().max(100)),
2884
+ documentNumber: z.optional(z.string().max(100)),
2885
+ alienOrI94Number: z.optional(z.string().max(100)),
2886
+ documentExpirationDate: z.optional(z.iso.date()),
2887
+ countryOfIssuance: z.optional(z.string().max(100)),
2888
+ hasSponsor: z.optional(z.boolean()),
2889
+ sponsor: z.optional(z.object({
2890
+ name: z.optional(z.object({
2891
+ firstName: z.string().min(1).max(100),
2892
+ middleInitial: z.optional(z.string().max(1)),
2893
+ middleName: z.optional(z.string().max(100)),
2894
+ lastName: z.string().min(1).max(100),
2895
+ maidenName: z.optional(z.string().max(100)),
2896
+ suffix: z.optional(z.string().max(20))
2897
+ })),
2898
+ dateOfBirth: z.optional(z.iso.date()),
2899
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
2900
+ address: z.optional(z.object({
2901
+ addressLine1: z.string().min(1).max(150),
2902
+ addressLine2: z.optional(z.string().max(150)),
2903
+ city: z.string().min(1).max(100),
2904
+ stateProvince: z.string().min(1).max(100),
2905
+ postalCode: z.string().min(3).max(20),
2906
+ county: z.optional(z.string().max(100))
2907
+ })),
2908
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2909
+ email: z.optional(z.email().max(320))
2910
+ }).and(z.object({
2911
+ spouse: z.optional(z.object({
2912
+ name: z.optional(z.object({
2913
+ firstName: z.string().min(1).max(100),
2914
+ middleInitial: z.optional(z.string().max(1)),
2915
+ middleName: z.optional(z.string().max(100)),
2916
+ lastName: z.string().min(1).max(100),
2917
+ maidenName: z.optional(z.string().max(100)),
2918
+ suffix: z.optional(z.string().max(20))
2919
+ })),
2920
+ dateOfBirth: z.optional(z.iso.date()),
2921
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
2922
+ address: z.optional(z.object({
2923
+ addressLine1: z.string().min(1).max(150),
2924
+ addressLine2: z.optional(z.string().max(150)),
2925
+ city: z.string().min(1).max(100),
2926
+ stateProvince: z.string().min(1).max(100),
2927
+ postalCode: z.string().min(3).max(20),
2928
+ county: z.optional(z.string().max(100))
2929
+ })),
2930
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2931
+ email: z.optional(z.email().max(320))
2932
+ })),
2933
+ totalPeopleInHousehold: z.optional(z.int().gte(1))
2934
+ })))
2935
+ }))
2936
+ })),
2937
+ contactInfo: z.optional(z.object({
2938
+ otherPhoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2939
+ mailingAddress: z.optional(z.object({
2940
+ addressLine1: z.string().min(1).max(150),
2941
+ addressLine2: z.optional(z.string().max(150)),
2942
+ city: z.string().min(1).max(100),
2943
+ stateProvince: z.string().min(1).max(100),
2944
+ postalCode: z.string().min(3).max(20),
2945
+ county: z.optional(z.string().max(100))
2946
+ })),
2947
+ isHomeless: z.optional(z.boolean()),
2948
+ preferredNoticeMethod: z.optional(z.enum([
2949
+ 'paper',
2950
+ 'email',
2951
+ 'both'
2952
+ ])),
2953
+ languagePreference: z.optional(z.object({
2954
+ written: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/)),
2955
+ spoken: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/))
2956
+ })),
2957
+ preferredContactMethod: z.optional(z.enum([
2958
+ 'phone',
2959
+ 'email',
2960
+ 'mail',
2961
+ 'sms'
2962
+ ]))
2963
+ })),
2964
+ employmentInfo: z.optional(z.object({
2965
+ jobs: z.optional(z.array(z.object({
2966
+ employer: z.optional(z.object({
2967
+ name: z.optional(z.string().max(200)),
2968
+ phone: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
2969
+ address: z.optional(z.object({
2970
+ addressLine1: z.string().min(1).max(150),
2971
+ addressLine2: z.optional(z.string().max(150)),
2972
+ city: z.string().min(1).max(100),
2973
+ stateProvince: z.string().min(1).max(100),
2974
+ postalCode: z.string().min(3).max(20),
2975
+ county: z.optional(z.string().max(100))
2976
+ })),
2977
+ identificationNumber: z.optional(z.string().max(50))
2978
+ })),
2979
+ startDate: z.optional(z.iso.date()),
2980
+ endDate: z.optional(z.iso.date())
2981
+ })))
2982
+ })),
2983
+ educationInfo: z.optional(z.object({
2984
+ lastGradeCompleted: z.optional(z.string().max(50)),
2985
+ isCurrentlyEnrolled: z.optional(z.boolean()),
2986
+ schoolName: z.optional(z.string().max(200)),
2987
+ startDate: z.optional(z.iso.date()),
2988
+ isFullTimeStudent: z.optional(z.boolean()),
2989
+ expectedGraduationDate: z.optional(z.iso.date())
2990
+ })),
2991
+ militaryInfo: z.optional(z.object({
2992
+ isMilitaryServiceMember: z.optional(z.boolean()),
2993
+ veteranStatus: z.optional(z.boolean())
2994
+ })),
2995
+ tribalInfo: z.optional(z.object({
2996
+ tribeName: z.optional(z.string().max(200)),
2997
+ tribeState: z.optional(z.string().max(100)),
2998
+ hasReceivedServiceFromIndianHealthService: z.optional(z.boolean()),
2999
+ isEligibleForIndianHealthService: z.optional(z.boolean())
3000
+ })),
3001
+ consentToShareInformation: z.optional(z.boolean()),
3002
+ createdAt: z.optional(z.iso.datetime().readonly()),
3003
+ updatedAt: z.optional(z.iso.datetime().readonly()),
3004
+ countyCode: z.optional(z.string().regex(/^[0-5][0-9]$/)),
3005
+ countyName: z.optional(z.enum([
3006
+ 'Alameda',
3007
+ 'Alpine',
3008
+ 'Amador',
3009
+ 'Butte',
3010
+ 'Calaveras',
3011
+ 'Colusa',
3012
+ 'Contra Costa',
3013
+ 'Del Norte',
3014
+ 'El Dorado',
3015
+ 'Fresno',
3016
+ 'Glenn',
3017
+ 'Humboldt',
3018
+ 'Imperial',
3019
+ 'Inyo',
3020
+ 'Kern',
3021
+ 'Kings',
3022
+ 'Lake',
3023
+ 'Lassen',
3024
+ 'Los Angeles',
3025
+ 'Madera',
3026
+ 'Marin',
3027
+ 'Mariposa',
3028
+ 'Mendocino',
3029
+ 'Merced',
3030
+ 'Modoc',
3031
+ 'Mono',
3032
+ 'Monterey',
3033
+ 'Napa',
3034
+ 'Nevada',
3035
+ 'Orange',
3036
+ 'Placer',
3037
+ 'Plumas',
3038
+ 'Riverside',
3039
+ 'Sacramento',
3040
+ 'San Benito',
3041
+ 'San Bernardino',
3042
+ 'San Diego',
3043
+ 'San Francisco',
3044
+ 'San Joaquin',
3045
+ 'San Luis Obispo',
3046
+ 'San Mateo',
3047
+ 'Santa Barbara',
3048
+ 'Santa Clara',
3049
+ 'Santa Cruz',
3050
+ 'Shasta',
3051
+ 'Sierra',
3052
+ 'Siskiyou',
3053
+ 'Solano',
3054
+ 'Sonoma',
3055
+ 'Stanislaus',
3056
+ 'Sutter',
3057
+ 'Tehama',
3058
+ 'Trinity',
3059
+ 'Tulare',
3060
+ 'Tuolumne',
3061
+ 'Ventura',
3062
+ 'Yolo',
3063
+ 'Yuba'
3064
+ ])),
3065
+ calworksEligible: z.optional(z.boolean()),
3066
+ calfreshEligible: z.optional(z.boolean()),
3067
+ medicalEligible: z.optional(z.boolean())
3068
+ }));
3069
+ export const zUpdatePersonData = z.object({
3070
+ body: z.object({
3071
+ name: z.optional(z.object({
3072
+ firstName: z.string().min(1).max(100),
3073
+ middleInitial: z.optional(z.string().max(1)),
3074
+ middleName: z.optional(z.string().max(100)),
3075
+ lastName: z.string().min(1).max(100),
3076
+ maidenName: z.optional(z.string().max(100)),
3077
+ suffix: z.optional(z.string().max(20))
3078
+ })),
3079
+ dateOfBirth: z.optional(z.iso.date()),
3080
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
3081
+ address: z.optional(z.object({
3082
+ addressLine1: z.string().min(1).max(150),
3083
+ addressLine2: z.optional(z.string().max(150)),
3084
+ city: z.string().min(1).max(100),
3085
+ stateProvince: z.string().min(1).max(100),
3086
+ postalCode: z.string().min(3).max(20),
3087
+ county: z.optional(z.string().max(100))
3088
+ })),
3089
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
3090
+ email: z.optional(z.email().max(320))
3091
+ }).and(z.object({
3092
+ id: z.optional(z.uuid()),
3093
+ demographicInfo: z.optional(z.object({
3094
+ sex: z.optional(z.enum([
3095
+ 'male',
3096
+ 'female',
3097
+ 'unknown'
3098
+ ])),
3099
+ maritalStatus: z.optional(z.enum([
3100
+ 'single',
3101
+ 'married',
3102
+ 'divorced',
3103
+ 'separated',
3104
+ 'widowed',
3105
+ 'civil_union',
3106
+ 'domestic_partnership'
3107
+ ])),
3108
+ isHispanicOrLatino: z.optional(z.boolean()),
3109
+ race: z.optional(z.array(z.enum([
3110
+ 'american_indian_alaskan_native',
3111
+ 'asian',
3112
+ 'black_african_american',
3113
+ 'native_hawaiian_pacific_islander',
3114
+ 'white'
3115
+ ]))),
3116
+ gender: z.optional(z.enum([
3117
+ 'male',
3118
+ 'female',
3119
+ 'nonbinary',
3120
+ 'unknown'
3121
+ ]))
3122
+ })),
3123
+ citizenshipInfo: z.optional(z.object({
3124
+ status: z.optional(z.enum([
3125
+ 'us_citizen',
3126
+ 'lawful_permanent_resident',
3127
+ 'qualified_alien',
3128
+ 'prucol',
3129
+ 'undocumented',
3130
+ 'other'
3131
+ ])),
3132
+ certificateNumber: z.optional(z.string().max(50)),
3133
+ immigrationInfo: z.optional(z.object({
3134
+ status: z.optional(z.string().max(100)),
3135
+ documentType: z.optional(z.string().max(100)),
3136
+ documentNumber: z.optional(z.string().max(100)),
3137
+ alienOrI94Number: z.optional(z.string().max(100)),
3138
+ documentExpirationDate: z.optional(z.iso.date()),
3139
+ countryOfIssuance: z.optional(z.string().max(100)),
3140
+ hasSponsor: z.optional(z.boolean()),
3141
+ sponsor: z.optional(z.object({
3142
+ name: z.optional(z.object({
3143
+ firstName: z.string().min(1).max(100),
3144
+ middleInitial: z.optional(z.string().max(1)),
3145
+ middleName: z.optional(z.string().max(100)),
3146
+ lastName: z.string().min(1).max(100),
3147
+ maidenName: z.optional(z.string().max(100)),
3148
+ suffix: z.optional(z.string().max(20))
3149
+ })),
3150
+ dateOfBirth: z.optional(z.iso.date()),
3151
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
3152
+ address: z.optional(z.object({
3153
+ addressLine1: z.string().min(1).max(150),
3154
+ addressLine2: z.optional(z.string().max(150)),
3155
+ city: z.string().min(1).max(100),
3156
+ stateProvince: z.string().min(1).max(100),
3157
+ postalCode: z.string().min(3).max(20),
3158
+ county: z.optional(z.string().max(100))
3159
+ })),
3160
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
3161
+ email: z.optional(z.email().max(320))
3162
+ }).and(z.object({
3163
+ spouse: z.optional(z.object({
3164
+ name: z.optional(z.object({
3165
+ firstName: z.string().min(1).max(100),
3166
+ middleInitial: z.optional(z.string().max(1)),
3167
+ middleName: z.optional(z.string().max(100)),
3168
+ lastName: z.string().min(1).max(100),
3169
+ maidenName: z.optional(z.string().max(100)),
3170
+ suffix: z.optional(z.string().max(20))
3171
+ })),
3172
+ dateOfBirth: z.optional(z.iso.date()),
3173
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
3174
+ address: z.optional(z.object({
3175
+ addressLine1: z.string().min(1).max(150),
3176
+ addressLine2: z.optional(z.string().max(150)),
3177
+ city: z.string().min(1).max(100),
3178
+ stateProvince: z.string().min(1).max(100),
3179
+ postalCode: z.string().min(3).max(20),
3180
+ county: z.optional(z.string().max(100))
3181
+ })),
3182
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
3183
+ email: z.optional(z.email().max(320))
3184
+ })),
3185
+ totalPeopleInHousehold: z.optional(z.int().gte(1))
3186
+ })))
3187
+ }))
3188
+ })),
3189
+ contactInfo: z.optional(z.object({
3190
+ otherPhoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
3191
+ mailingAddress: z.optional(z.object({
3192
+ addressLine1: z.string().min(1).max(150),
3193
+ addressLine2: z.optional(z.string().max(150)),
3194
+ city: z.string().min(1).max(100),
3195
+ stateProvince: z.string().min(1).max(100),
3196
+ postalCode: z.string().min(3).max(20),
3197
+ county: z.optional(z.string().max(100))
3198
+ })),
3199
+ isHomeless: z.optional(z.boolean()),
3200
+ preferredNoticeMethod: z.optional(z.enum([
3201
+ 'paper',
3202
+ 'email',
3203
+ 'both'
3204
+ ])),
3205
+ languagePreference: z.optional(z.object({
3206
+ written: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/)),
3207
+ spoken: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/))
3208
+ })),
3209
+ preferredContactMethod: z.optional(z.enum([
3210
+ 'phone',
3211
+ 'email',
3212
+ 'mail',
3213
+ 'sms'
3214
+ ]))
3215
+ })),
3216
+ employmentInfo: z.optional(z.object({
3217
+ jobs: z.optional(z.array(z.object({
3218
+ employer: z.optional(z.object({
3219
+ name: z.optional(z.string().max(200)),
3220
+ phone: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
3221
+ address: z.optional(z.object({
3222
+ addressLine1: z.string().min(1).max(150),
3223
+ addressLine2: z.optional(z.string().max(150)),
3224
+ city: z.string().min(1).max(100),
3225
+ stateProvince: z.string().min(1).max(100),
3226
+ postalCode: z.string().min(3).max(20),
3227
+ county: z.optional(z.string().max(100))
3228
+ })),
3229
+ identificationNumber: z.optional(z.string().max(50))
3230
+ })),
3231
+ startDate: z.optional(z.iso.date()),
3232
+ endDate: z.optional(z.iso.date())
3233
+ })))
3234
+ })),
3235
+ educationInfo: z.optional(z.object({
3236
+ lastGradeCompleted: z.optional(z.string().max(50)),
3237
+ isCurrentlyEnrolled: z.optional(z.boolean()),
3238
+ schoolName: z.optional(z.string().max(200)),
3239
+ startDate: z.optional(z.iso.date()),
3240
+ isFullTimeStudent: z.optional(z.boolean()),
3241
+ expectedGraduationDate: z.optional(z.iso.date())
3242
+ })),
3243
+ militaryInfo: z.optional(z.object({
3244
+ isMilitaryServiceMember: z.optional(z.boolean()),
3245
+ veteranStatus: z.optional(z.boolean())
3246
+ })),
3247
+ tribalInfo: z.optional(z.object({
3248
+ tribeName: z.optional(z.string().max(200)),
3249
+ tribeState: z.optional(z.string().max(100)),
3250
+ hasReceivedServiceFromIndianHealthService: z.optional(z.boolean()),
3251
+ isEligibleForIndianHealthService: z.optional(z.boolean())
3252
+ })),
3253
+ consentToShareInformation: z.optional(z.boolean()),
3254
+ createdAt: z.optional(z.iso.datetime().readonly()),
3255
+ updatedAt: z.optional(z.iso.datetime().readonly()),
3256
+ countyCode: z.optional(z.string().regex(/^[0-5][0-9]$/)),
3257
+ countyName: z.optional(z.enum([
3258
+ 'Alameda',
3259
+ 'Alpine',
3260
+ 'Amador',
3261
+ 'Butte',
3262
+ 'Calaveras',
3263
+ 'Colusa',
3264
+ 'Contra Costa',
3265
+ 'Del Norte',
3266
+ 'El Dorado',
3267
+ 'Fresno',
3268
+ 'Glenn',
3269
+ 'Humboldt',
3270
+ 'Imperial',
3271
+ 'Inyo',
3272
+ 'Kern',
3273
+ 'Kings',
3274
+ 'Lake',
3275
+ 'Lassen',
3276
+ 'Los Angeles',
3277
+ 'Madera',
3278
+ 'Marin',
3279
+ 'Mariposa',
3280
+ 'Mendocino',
3281
+ 'Merced',
3282
+ 'Modoc',
3283
+ 'Mono',
3284
+ 'Monterey',
3285
+ 'Napa',
3286
+ 'Nevada',
3287
+ 'Orange',
3288
+ 'Placer',
3289
+ 'Plumas',
3290
+ 'Riverside',
3291
+ 'Sacramento',
3292
+ 'San Benito',
3293
+ 'San Bernardino',
3294
+ 'San Diego',
3295
+ 'San Francisco',
3296
+ 'San Joaquin',
3297
+ 'San Luis Obispo',
3298
+ 'San Mateo',
3299
+ 'Santa Barbara',
3300
+ 'Santa Clara',
3301
+ 'Santa Cruz',
3302
+ 'Shasta',
3303
+ 'Sierra',
3304
+ 'Siskiyou',
3305
+ 'Solano',
3306
+ 'Sonoma',
3307
+ 'Stanislaus',
3308
+ 'Sutter',
3309
+ 'Tehama',
3310
+ 'Trinity',
3311
+ 'Tulare',
3312
+ 'Tuolumne',
3313
+ 'Ventura',
3314
+ 'Yolo',
3315
+ 'Yuba'
3316
+ ])),
3317
+ calworksEligible: z.optional(z.boolean()),
3318
+ calfreshEligible: z.optional(z.boolean()),
3319
+ medicalEligible: z.optional(z.boolean())
3320
+ })).and(z.record(z.string(), z.unknown())),
3321
+ path: z.object({
3322
+ personId: z.uuid()
3323
+ }),
3324
+ query: z.optional(z.never())
3325
+ });
3326
+ /**
3327
+ * Person updated successfully.
3328
+ */
3329
+ export const zUpdatePersonResponse = z.object({
3330
+ name: z.optional(z.object({
3331
+ firstName: z.string().min(1).max(100),
3332
+ middleInitial: z.optional(z.string().max(1)),
3333
+ middleName: z.optional(z.string().max(100)),
3334
+ lastName: z.string().min(1).max(100),
3335
+ maidenName: z.optional(z.string().max(100)),
3336
+ suffix: z.optional(z.string().max(20))
3337
+ })),
3338
+ dateOfBirth: z.optional(z.iso.date()),
3339
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
3340
+ address: z.optional(z.object({
3341
+ addressLine1: z.string().min(1).max(150),
3342
+ addressLine2: z.optional(z.string().max(150)),
3343
+ city: z.string().min(1).max(100),
3344
+ stateProvince: z.string().min(1).max(100),
3345
+ postalCode: z.string().min(3).max(20),
3346
+ county: z.optional(z.string().max(100))
3347
+ })),
3348
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
3349
+ email: z.optional(z.email().max(320))
3350
+ }).and(z.object({
3351
+ id: z.optional(z.uuid()),
3352
+ demographicInfo: z.optional(z.object({
3353
+ sex: z.optional(z.enum([
3354
+ 'male',
3355
+ 'female',
3356
+ 'unknown'
3357
+ ])),
3358
+ maritalStatus: z.optional(z.enum([
3359
+ 'single',
3360
+ 'married',
3361
+ 'divorced',
3362
+ 'separated',
3363
+ 'widowed',
3364
+ 'civil_union',
3365
+ 'domestic_partnership'
3366
+ ])),
3367
+ isHispanicOrLatino: z.optional(z.boolean()),
3368
+ race: z.optional(z.array(z.enum([
3369
+ 'american_indian_alaskan_native',
3370
+ 'asian',
3371
+ 'black_african_american',
3372
+ 'native_hawaiian_pacific_islander',
3373
+ 'white'
3374
+ ]))),
3375
+ gender: z.optional(z.enum([
3376
+ 'male',
3377
+ 'female',
3378
+ 'nonbinary',
3379
+ 'unknown'
3380
+ ]))
3381
+ })),
3382
+ citizenshipInfo: z.optional(z.object({
3383
+ status: z.optional(z.enum([
3384
+ 'us_citizen',
3385
+ 'lawful_permanent_resident',
3386
+ 'qualified_alien',
3387
+ 'prucol',
3388
+ 'undocumented',
3389
+ 'other'
3390
+ ])),
3391
+ certificateNumber: z.optional(z.string().max(50)),
3392
+ immigrationInfo: z.optional(z.object({
3393
+ status: z.optional(z.string().max(100)),
3394
+ documentType: z.optional(z.string().max(100)),
3395
+ documentNumber: z.optional(z.string().max(100)),
3396
+ alienOrI94Number: z.optional(z.string().max(100)),
3397
+ documentExpirationDate: z.optional(z.iso.date()),
3398
+ countryOfIssuance: z.optional(z.string().max(100)),
3399
+ hasSponsor: z.optional(z.boolean()),
3400
+ sponsor: z.optional(z.object({
3401
+ name: z.optional(z.object({
3402
+ firstName: z.string().min(1).max(100),
3403
+ middleInitial: z.optional(z.string().max(1)),
3404
+ middleName: z.optional(z.string().max(100)),
3405
+ lastName: z.string().min(1).max(100),
3406
+ maidenName: z.optional(z.string().max(100)),
3407
+ suffix: z.optional(z.string().max(20))
3408
+ })),
3409
+ dateOfBirth: z.optional(z.iso.date()),
3410
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
3411
+ address: z.optional(z.object({
3412
+ addressLine1: z.string().min(1).max(150),
3413
+ addressLine2: z.optional(z.string().max(150)),
3414
+ city: z.string().min(1).max(100),
3415
+ stateProvince: z.string().min(1).max(100),
3416
+ postalCode: z.string().min(3).max(20),
3417
+ county: z.optional(z.string().max(100))
3418
+ })),
3419
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
3420
+ email: z.optional(z.email().max(320))
3421
+ }).and(z.object({
3422
+ spouse: z.optional(z.object({
3423
+ name: z.optional(z.object({
3424
+ firstName: z.string().min(1).max(100),
3425
+ middleInitial: z.optional(z.string().max(1)),
3426
+ middleName: z.optional(z.string().max(100)),
3427
+ lastName: z.string().min(1).max(100),
3428
+ maidenName: z.optional(z.string().max(100)),
3429
+ suffix: z.optional(z.string().max(20))
3430
+ })),
3431
+ dateOfBirth: z.optional(z.iso.date()),
3432
+ socialSecurityNumber: z.optional(z.string().regex(/^\d{3}-\d{2}-\d{4}$/)),
3433
+ address: z.optional(z.object({
3434
+ addressLine1: z.string().min(1).max(150),
3435
+ addressLine2: z.optional(z.string().max(150)),
3436
+ city: z.string().min(1).max(100),
3437
+ stateProvince: z.string().min(1).max(100),
3438
+ postalCode: z.string().min(3).max(20),
3439
+ county: z.optional(z.string().max(100))
3440
+ })),
3441
+ phoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
3442
+ email: z.optional(z.email().max(320))
3443
+ })),
3444
+ totalPeopleInHousehold: z.optional(z.int().gte(1))
3445
+ })))
3446
+ }))
3447
+ })),
3448
+ contactInfo: z.optional(z.object({
3449
+ otherPhoneNumber: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
3450
+ mailingAddress: z.optional(z.object({
3451
+ addressLine1: z.string().min(1).max(150),
3452
+ addressLine2: z.optional(z.string().max(150)),
3453
+ city: z.string().min(1).max(100),
3454
+ stateProvince: z.string().min(1).max(100),
3455
+ postalCode: z.string().min(3).max(20),
3456
+ county: z.optional(z.string().max(100))
3457
+ })),
3458
+ isHomeless: z.optional(z.boolean()),
3459
+ preferredNoticeMethod: z.optional(z.enum([
3460
+ 'paper',
3461
+ 'email',
3462
+ 'both'
3463
+ ])),
3464
+ languagePreference: z.optional(z.object({
3465
+ written: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/)),
3466
+ spoken: z.optional(z.string().regex(/^[a-zA-Z]{2,3}(?:-[a-zA-Z0-9]{2,8})*$/))
3467
+ })),
3468
+ preferredContactMethod: z.optional(z.enum([
3469
+ 'phone',
3470
+ 'email',
3471
+ 'mail',
3472
+ 'sms'
3473
+ ]))
3474
+ })),
3475
+ employmentInfo: z.optional(z.object({
3476
+ jobs: z.optional(z.array(z.object({
3477
+ employer: z.optional(z.object({
3478
+ name: z.optional(z.string().max(200)),
3479
+ phone: z.optional(z.string().regex(/^\+?[0-9 .\-()]{7,20}$/)),
3480
+ address: z.optional(z.object({
3481
+ addressLine1: z.string().min(1).max(150),
3482
+ addressLine2: z.optional(z.string().max(150)),
3483
+ city: z.string().min(1).max(100),
3484
+ stateProvince: z.string().min(1).max(100),
3485
+ postalCode: z.string().min(3).max(20),
3486
+ county: z.optional(z.string().max(100))
3487
+ })),
3488
+ identificationNumber: z.optional(z.string().max(50))
3489
+ })),
3490
+ startDate: z.optional(z.iso.date()),
3491
+ endDate: z.optional(z.iso.date())
3492
+ })))
3493
+ })),
3494
+ educationInfo: z.optional(z.object({
3495
+ lastGradeCompleted: z.optional(z.string().max(50)),
3496
+ isCurrentlyEnrolled: z.optional(z.boolean()),
3497
+ schoolName: z.optional(z.string().max(200)),
3498
+ startDate: z.optional(z.iso.date()),
3499
+ isFullTimeStudent: z.optional(z.boolean()),
3500
+ expectedGraduationDate: z.optional(z.iso.date())
3501
+ })),
3502
+ militaryInfo: z.optional(z.object({
3503
+ isMilitaryServiceMember: z.optional(z.boolean()),
3504
+ veteranStatus: z.optional(z.boolean())
3505
+ })),
3506
+ tribalInfo: z.optional(z.object({
3507
+ tribeName: z.optional(z.string().max(200)),
3508
+ tribeState: z.optional(z.string().max(100)),
3509
+ hasReceivedServiceFromIndianHealthService: z.optional(z.boolean()),
3510
+ isEligibleForIndianHealthService: z.optional(z.boolean())
3511
+ })),
3512
+ consentToShareInformation: z.optional(z.boolean()),
3513
+ createdAt: z.optional(z.iso.datetime().readonly()),
3514
+ updatedAt: z.optional(z.iso.datetime().readonly()),
3515
+ countyCode: z.optional(z.string().regex(/^[0-5][0-9]$/)),
3516
+ countyName: z.optional(z.enum([
3517
+ 'Alameda',
3518
+ 'Alpine',
3519
+ 'Amador',
3520
+ 'Butte',
3521
+ 'Calaveras',
3522
+ 'Colusa',
3523
+ 'Contra Costa',
3524
+ 'Del Norte',
3525
+ 'El Dorado',
3526
+ 'Fresno',
3527
+ 'Glenn',
3528
+ 'Humboldt',
3529
+ 'Imperial',
3530
+ 'Inyo',
3531
+ 'Kern',
3532
+ 'Kings',
3533
+ 'Lake',
3534
+ 'Lassen',
3535
+ 'Los Angeles',
3536
+ 'Madera',
3537
+ 'Marin',
3538
+ 'Mariposa',
3539
+ 'Mendocino',
3540
+ 'Merced',
3541
+ 'Modoc',
3542
+ 'Mono',
3543
+ 'Monterey',
3544
+ 'Napa',
3545
+ 'Nevada',
3546
+ 'Orange',
3547
+ 'Placer',
3548
+ 'Plumas',
3549
+ 'Riverside',
3550
+ 'Sacramento',
3551
+ 'San Benito',
3552
+ 'San Bernardino',
3553
+ 'San Diego',
3554
+ 'San Francisco',
3555
+ 'San Joaquin',
3556
+ 'San Luis Obispo',
3557
+ 'San Mateo',
3558
+ 'Santa Barbara',
3559
+ 'Santa Clara',
3560
+ 'Santa Cruz',
3561
+ 'Shasta',
3562
+ 'Sierra',
3563
+ 'Siskiyou',
3564
+ 'Solano',
3565
+ 'Sonoma',
3566
+ 'Stanislaus',
3567
+ 'Sutter',
3568
+ 'Tehama',
3569
+ 'Trinity',
3570
+ 'Tulare',
3571
+ 'Tuolumne',
3572
+ 'Ventura',
3573
+ 'Yolo',
3574
+ 'Yuba'
3575
+ ])),
3576
+ calworksEligible: z.optional(z.boolean()),
3577
+ calfreshEligible: z.optional(z.boolean()),
3578
+ medicalEligible: z.optional(z.boolean())
3579
+ }));