@planning-inspectorate/data-model 1.11.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.
- package/.azure/ci.yml +60 -0
- package/.azure/release.yml +57 -0
- package/.github/dependabot.yml +11 -0
- package/.husky/install.mjs +7 -0
- package/.husky/pre-commit +1 -0
- package/.prettierignore +11 -0
- package/.prettierrc +19 -0
- package/LICENSE +21 -0
- package/README.md +237 -0
- package/commitlint.config.js +8 -0
- package/docs/README.md +85 -0
- package/docs/appeal-document.md +776 -0
- package/docs/appeal-event-estimate.md +108 -0
- package/docs/appeal-event.md +404 -0
- package/docs/appeal-has.md +1960 -0
- package/docs/appeal-representation.md +375 -0
- package/docs/appeal-s78.md +3607 -0
- package/docs/appeal.md +1879 -0
- package/docs/case-schedule.md +8 -0
- package/docs/dart-response.md +1413 -0
- package/docs/employee.md +70 -0
- package/docs/entraid.md +108 -0
- package/docs/folder.md +147 -0
- package/docs/gettimesheets-response.md +188 -0
- package/docs/interested-party.md +284 -0
- package/docs/listed-building.md +113 -0
- package/docs/listed-buildings.md +113 -0
- package/docs/nsip-document.md +966 -0
- package/docs/nsip-exam-timetable-defs-event.md +223 -0
- package/docs/nsip-exam-timetable-defs-line-item.md +51 -0
- package/docs/nsip-exam-timetable-defs.md +3 -0
- package/docs/nsip-exam-timetable-submission.md +113 -0
- package/docs/nsip-exam-timetable.md +352 -0
- package/docs/nsip-project-update.md +163 -0
- package/docs/nsip-project.md +2098 -0
- package/docs/nsip-representation-defs-attachment.md +133 -0
- package/docs/nsip-representation-defs.md +3 -0
- package/docs/nsip-representation.md +448 -0
- package/docs/nsip-subscription.md +193 -0
- package/docs/pins-inspector.md +184 -0
- package/docs/pins-lpa.md +260 -0
- package/docs/s51-advice.md +460 -0
- package/docs/service-user.md +575 -0
- package/eslint.config.js +21 -0
- package/jsconfig.json +12 -0
- package/package.json +55 -0
- package/pins_data_model/__init__.py +0 -0
- package/pins_data_model/gen_models.py +51 -0
- package/pins_data_model/load_schemas.py +51 -0
- package/pins_data_model/models/__init__.py +0 -0
- package/pins_data_model/models/model_appeal_document.py +294 -0
- package/pins_data_model/models/model_appeal_event.py +117 -0
- package/pins_data_model/models/model_appeal_event_estimate.py +37 -0
- package/pins_data_model/models/model_appeal_has.py +585 -0
- package/pins_data_model/models/model_appeal_representation.py +132 -0
- package/pins_data_model/models/model_appeal_s78.py +864 -0
- package/pins_data_model/models/model_case_schedule.py +11 -0
- package/pins_data_model/models/model_dart_response.py +292 -0
- package/pins_data_model/models/model_entraid.py +37 -0
- package/pins_data_model/models/model_folder.py +56 -0
- package/pins_data_model/models/model_gettimesheets_response.py +45 -0
- package/pins_data_model/models/model_listed_building.py +33 -0
- package/pins_data_model/models/model_listed_buildings.py +33 -0
- package/pins_data_model/models/model_nsip_document.py +199 -0
- package/pins_data_model/models/model_nsip_exam_timetable.py +90 -0
- package/pins_data_model/models/model_nsip_project.py +488 -0
- package/pins_data_model/models/model_nsip_project_update.py +60 -0
- package/pins_data_model/models/model_nsip_representation.py +83 -0
- package/pins_data_model/models/model_nsip_subscription.py +60 -0
- package/pins_data_model/models/model_pins_inspector.py +53 -0
- package/pins_data_model/models/model_pins_lpa.py +69 -0
- package/pins_data_model/models/model_s51_advice.py +109 -0
- package/pins_data_model/models/model_service_user.py +121 -0
- package/requirements.txt +2 -0
- package/schemas/__init__.py +0 -0
- package/schemas/appeal-document.schema.json +250 -0
- package/schemas/appeal-event-estimate.schema.json +31 -0
- package/schemas/appeal-event.schema.json +123 -0
- package/schemas/appeal-has.schema.json +576 -0
- package/schemas/appeal-representation.schema.json +131 -0
- package/schemas/appeal-s78.schema.json +1060 -0
- package/schemas/commands/__init__.py +0 -0
- package/schemas/commands/appeal-common-submission.schema.json +202 -0
- package/schemas/commands/appeal-has-submission.schema.json +82 -0
- package/schemas/commands/appeal-representation-submission.schema.json +192 -0
- package/schemas/commands/appeal-s78-submission.schema.json +100 -0
- package/schemas/commands/appellant-submission.schema.json +164 -0
- package/schemas/commands/interested-party.schema.json +80 -0
- package/schemas/commands/lpa-questionnaire-common.schema.json +110 -0
- package/schemas/commands/lpa-questionnaire-has.schema.json +69 -0
- package/schemas/commands/lpa-questionnaire-s78.schema.json +218 -0
- package/schemas/commands/lpa-questionnaire.schema.json +125 -0
- package/schemas/commands/new-deadline-submission.schema.json +59 -0
- package/schemas/commands/nsip-exam-timetable-submission.schema.json +27 -0
- package/schemas/commands/register-nsip-subscription.schema.json +32 -0
- package/schemas/commands/register-representation.schema.json +51 -0
- package/schemas/dart-response.schema.json +350 -0
- package/schemas/entraid.schema.json +31 -0
- package/schemas/folder.schema.json +49 -0
- package/schemas/gettimesheets-response.schema.json +46 -0
- package/schemas/listed-building.schema.json +31 -0
- package/schemas/listed-buildings.schema.json +31 -0
- package/schemas/nsip-document.schema.json +235 -0
- package/schemas/nsip-exam-timetable.schema.json +101 -0
- package/schemas/nsip-project-update.schema.json +49 -0
- package/schemas/nsip-project.schema.json +539 -0
- package/schemas/nsip-representation.schema.json +110 -0
- package/schemas/nsip-subscription.schema.json +52 -0
- package/schemas/pins-inspector.schema.json +47 -0
- package/schemas/pins-lpa.schema.json +63 -0
- package/schemas/s51-advice.schema.json +113 -0
- package/schemas/service-user.schema.json +152 -0
- package/setup.py +15 -0
- package/src/enums.cjs +632 -0
- package/src/enums.d.ts +573 -0
- package/src/enums.js +573 -0
- package/src/gen-docs.js +34 -0
- package/src/gen-enums.js +119 -0
- package/src/gen-types.js +70 -0
- package/src/index.cjs +746 -0
- package/src/index.d.ts +18 -0
- package/src/index.js +34 -0
- package/src/lib/load.js +78 -0
- package/src/schemas.d.ts +4570 -0
- package/tests/appeals/appeal-event.test.js +62 -0
- package/tests/appeals/commands/appeal-representation-submission.test.js +107 -0
- package/tests/appeals/commands/has-questionnaire.test.js +92 -0
- package/tests/appeals/commands/has-submission.test.js +113 -0
- package/tests/appeals/commands/s78-questionnaire.test.js +96 -0
- package/tests/appeals/commands/s78-submission.test.js +119 -0
- package/tests/schemas.test.js +97 -0
|
@@ -0,0 +1,864 @@
|
|
|
1
|
+
# generated by datamodel-codegen:
|
|
2
|
+
# filename: appeal-s78.schema.json
|
|
3
|
+
# timestamp: 2025-07-16T14:06:09+00:00
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
from enum import Enum
|
|
8
|
+
from uuid import UUID
|
|
9
|
+
|
|
10
|
+
from pydantic import AwareDatetime, BaseModel, ConfigDict, Field, RootModel
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CaseStatus(Enum):
|
|
14
|
+
"""
|
|
15
|
+
The processing status for the appeal
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
assign_case_officer = "assign_case_officer"
|
|
19
|
+
validation = "validation"
|
|
20
|
+
ready_to_start = "ready_to_start"
|
|
21
|
+
lpa_questionnaire = "lpa_questionnaire"
|
|
22
|
+
issue_determination = "issue_determination"
|
|
23
|
+
statements = "statements"
|
|
24
|
+
evidence = "evidence"
|
|
25
|
+
witnesses = "witnesses"
|
|
26
|
+
final_comments = "final_comments"
|
|
27
|
+
complete = "complete"
|
|
28
|
+
invalid = "invalid"
|
|
29
|
+
closed = "closed"
|
|
30
|
+
withdrawn = "withdrawn"
|
|
31
|
+
awaiting_transfer = "awaiting_transfer"
|
|
32
|
+
transferred = "transferred"
|
|
33
|
+
event = "event"
|
|
34
|
+
awaiting_event = "awaiting_event"
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class CaseType(Enum):
|
|
38
|
+
"""
|
|
39
|
+
The internal code for an appeal type, e.g. D (Householder)
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
C = "C"
|
|
43
|
+
D = "D"
|
|
44
|
+
F = "F"
|
|
45
|
+
G = "G"
|
|
46
|
+
H = "H"
|
|
47
|
+
L = "L"
|
|
48
|
+
Q = "Q"
|
|
49
|
+
S = "S"
|
|
50
|
+
V = "V"
|
|
51
|
+
W = "W"
|
|
52
|
+
X = "X"
|
|
53
|
+
Y = "Y"
|
|
54
|
+
Z = "Z"
|
|
55
|
+
ZA = "ZA"
|
|
56
|
+
ZP = "ZP"
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class CaseProcedure(Enum):
|
|
60
|
+
"""
|
|
61
|
+
The type of procedure for the appeal
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
written = "written"
|
|
65
|
+
hearing = "hearing"
|
|
66
|
+
inquiry = "inquiry"
|
|
67
|
+
NoneType_None = None
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class AllocationLevel(Enum):
|
|
71
|
+
"""
|
|
72
|
+
A level used for allocation purposes
|
|
73
|
+
"""
|
|
74
|
+
|
|
75
|
+
A = "A"
|
|
76
|
+
B = "B"
|
|
77
|
+
C = "C"
|
|
78
|
+
D = "D"
|
|
79
|
+
E = "E"
|
|
80
|
+
F = "F"
|
|
81
|
+
G = "G"
|
|
82
|
+
H = "H"
|
|
83
|
+
NoneType_None = None
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
class AllocationBand(Enum):
|
|
87
|
+
"""
|
|
88
|
+
A band used for allocation purposes
|
|
89
|
+
"""
|
|
90
|
+
|
|
91
|
+
int_1 = 1
|
|
92
|
+
int_2 = 2
|
|
93
|
+
int_3 = 3
|
|
94
|
+
NoneType_None = None
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
class CaseValidationOutcome(Enum):
|
|
98
|
+
"""
|
|
99
|
+
The outcome of the validation action
|
|
100
|
+
"""
|
|
101
|
+
|
|
102
|
+
valid = "valid"
|
|
103
|
+
invalid = "invalid"
|
|
104
|
+
incomplete = "incomplete"
|
|
105
|
+
NoneType_None = None
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
class LinkedCaseStatus(Enum):
|
|
109
|
+
"""
|
|
110
|
+
Indicates if the case is linked, and the type of relationship
|
|
111
|
+
"""
|
|
112
|
+
|
|
113
|
+
lead = "lead"
|
|
114
|
+
child = "child"
|
|
115
|
+
NoneType_None = None
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
class LpaQuestionnaireValidationOutcome(Enum):
|
|
119
|
+
"""
|
|
120
|
+
The outcome of the validation action
|
|
121
|
+
"""
|
|
122
|
+
|
|
123
|
+
complete = "complete"
|
|
124
|
+
incomplete = "incomplete"
|
|
125
|
+
NoneType_None = None
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
class CaseDecisionOutcome(Enum):
|
|
129
|
+
"""
|
|
130
|
+
The final outcome for the decision
|
|
131
|
+
"""
|
|
132
|
+
|
|
133
|
+
allowed = "allowed"
|
|
134
|
+
split_decision = "split_decision"
|
|
135
|
+
dismissed = "dismissed"
|
|
136
|
+
invalid = "invalid"
|
|
137
|
+
NoneType_None = None
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
class ApplicationDecision(Enum):
|
|
141
|
+
"""
|
|
142
|
+
The outcome of the original LPA decision
|
|
143
|
+
"""
|
|
144
|
+
|
|
145
|
+
granted = "granted"
|
|
146
|
+
refused = "refused"
|
|
147
|
+
not_received = "not_received"
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
class KnowsOtherOwners(Enum):
|
|
151
|
+
"""
|
|
152
|
+
Indicates if the appellant knows other owners of the site
|
|
153
|
+
"""
|
|
154
|
+
|
|
155
|
+
Yes = "Yes"
|
|
156
|
+
No = "No"
|
|
157
|
+
Some = "Some"
|
|
158
|
+
NoneType_None = None
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
class KnowsAllOwners(Enum):
|
|
162
|
+
"""
|
|
163
|
+
Indicates if the appellant knows all owners of the site
|
|
164
|
+
"""
|
|
165
|
+
|
|
166
|
+
Yes = "Yes"
|
|
167
|
+
No = "No"
|
|
168
|
+
Some = "Some"
|
|
169
|
+
NoneType_None = None
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
class NotificationMethodEnumEnumEnum(Enum):
|
|
173
|
+
notice = "notice"
|
|
174
|
+
letter = "letter"
|
|
175
|
+
advert = "advert"
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
class NotificationMethodEnum(RootModel[NotificationMethodEnumEnumEnum | None]):
|
|
179
|
+
root: NotificationMethodEnumEnumEnum | None = None
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
class NeighbouringSiteAddress(BaseModel):
|
|
183
|
+
model_config = ConfigDict(
|
|
184
|
+
extra="allow",
|
|
185
|
+
)
|
|
186
|
+
neighbouringSiteAddressLine1: str = Field(..., examples=["96 The Avenue"])
|
|
187
|
+
"""
|
|
188
|
+
First line of address of the site
|
|
189
|
+
"""
|
|
190
|
+
neighbouringSiteAddressLine2: str | None = None
|
|
191
|
+
"""
|
|
192
|
+
Second line of address of the site
|
|
193
|
+
"""
|
|
194
|
+
neighbouringSiteAddressTown: str = Field(..., examples=["Maidstone"])
|
|
195
|
+
"""
|
|
196
|
+
Town / City of the site address
|
|
197
|
+
"""
|
|
198
|
+
neighbouringSiteAddressCounty: str | None = Field(..., examples=["Kent"])
|
|
199
|
+
"""
|
|
200
|
+
County of the site address
|
|
201
|
+
"""
|
|
202
|
+
neighbouringSiteAddressPostcode: str = Field(..., examples=["MD21 5XY"])
|
|
203
|
+
"""
|
|
204
|
+
Postal code of the site address
|
|
205
|
+
"""
|
|
206
|
+
neighbouringSiteAccessDetails: str | None = Field(
|
|
207
|
+
..., examples=["Ongoing road works at this address"]
|
|
208
|
+
)
|
|
209
|
+
"""
|
|
210
|
+
Provided information on site accessibility on this address
|
|
211
|
+
"""
|
|
212
|
+
neighbouringSiteSafetyDetails: str | None = Field(
|
|
213
|
+
..., examples=["Ongoing road works at this address"]
|
|
214
|
+
)
|
|
215
|
+
"""
|
|
216
|
+
Provided information on site health and safety on this address
|
|
217
|
+
"""
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
class AppellantProcedurePreference(Enum):
|
|
221
|
+
"""
|
|
222
|
+
The procedure preference indicated by the appellant
|
|
223
|
+
"""
|
|
224
|
+
|
|
225
|
+
written = "written"
|
|
226
|
+
hearing = "hearing"
|
|
227
|
+
inquiry = "inquiry"
|
|
228
|
+
NoneType_None = None
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
class EiaEnvironmentalImpactSchedule(Enum):
|
|
232
|
+
"""
|
|
233
|
+
The impact schedule from EIA
|
|
234
|
+
"""
|
|
235
|
+
|
|
236
|
+
schedule_1 = "schedule-1"
|
|
237
|
+
schedule_2 = "schedule-2"
|
|
238
|
+
NoneType_None = None
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
class EiaDevelopmentDescription(Enum):
|
|
242
|
+
"""
|
|
243
|
+
The development description from EIA
|
|
244
|
+
"""
|
|
245
|
+
|
|
246
|
+
agriculture_aquaculture = "agriculture-aquaculture"
|
|
247
|
+
change_extensions = "change-extensions"
|
|
248
|
+
chemical_industry = "chemical-industry"
|
|
249
|
+
energy_industry = "energy-industry"
|
|
250
|
+
extractive_industry = "extractive-industry"
|
|
251
|
+
food_industry = "food-industry"
|
|
252
|
+
infrastructure_projects = "infrastructure-projects"
|
|
253
|
+
mineral_industry = "mineral-industry"
|
|
254
|
+
other_projects = "other-projects"
|
|
255
|
+
production_processing_of_metals = "production-processing-of-metals"
|
|
256
|
+
rubber_industry = "rubber-industry"
|
|
257
|
+
textile_industries = "textile-industries"
|
|
258
|
+
tourism_leisure = "tourism-leisure"
|
|
259
|
+
NoneType_None = None
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
class LpaProcedurePreference(Enum):
|
|
263
|
+
"""
|
|
264
|
+
The procedure preference indicated by the LPA
|
|
265
|
+
"""
|
|
266
|
+
|
|
267
|
+
written = "written"
|
|
268
|
+
hearing = "hearing"
|
|
269
|
+
inquiry = "inquiry"
|
|
270
|
+
NoneType_None = None
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
class TypeOfPlanningApplication(Enum):
|
|
274
|
+
full_appeal = "full-appeal"
|
|
275
|
+
householder_planning = "householder-planning"
|
|
276
|
+
outline_planning = "outline-planning"
|
|
277
|
+
prior_approval = "prior-approval"
|
|
278
|
+
reserved_matters = "reserved-matters"
|
|
279
|
+
removal_or_variation_of_conditions = "removal-or-variation-of-conditions"
|
|
280
|
+
listed_building = "listed-building"
|
|
281
|
+
minor_commercial_development = "minor-commercial-development"
|
|
282
|
+
NoneType_None = None
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
class DevelopmentType(Enum):
|
|
286
|
+
householder = "householder"
|
|
287
|
+
change_of_use = "change-of-use"
|
|
288
|
+
major_dwellings = "major-dwellings"
|
|
289
|
+
major_industry_storage = "major-industry-storage"
|
|
290
|
+
major_offices = "major-offices"
|
|
291
|
+
major_retail_services = "major-retail-services"
|
|
292
|
+
major_traveller_caravan = "major-traveller-caravan"
|
|
293
|
+
mineral_workings = "mineral-workings"
|
|
294
|
+
minor_dwellings = "minor-dwellings"
|
|
295
|
+
minor_industry_storage = "minor-industry-storage"
|
|
296
|
+
minor_offices = "minor-offices"
|
|
297
|
+
minor_retail_services = "minor-retail-services"
|
|
298
|
+
minor_traveller_caravan = "minor-traveller-caravan"
|
|
299
|
+
other_major = "other-major"
|
|
300
|
+
other_minor = "other-minor"
|
|
301
|
+
NoneType_None = None
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
class AppealS78Case(BaseModel):
|
|
305
|
+
"""
|
|
306
|
+
Schema defining the metadata for an appeal (S78)
|
|
307
|
+
"""
|
|
308
|
+
|
|
309
|
+
model_config = ConfigDict(
|
|
310
|
+
extra="allow",
|
|
311
|
+
)
|
|
312
|
+
caseId: int | None = Field(..., examples=[1200])
|
|
313
|
+
"""
|
|
314
|
+
Internal case identifier
|
|
315
|
+
"""
|
|
316
|
+
caseReference: str = Field(..., examples=["7002471"])
|
|
317
|
+
"""
|
|
318
|
+
External case identifier
|
|
319
|
+
"""
|
|
320
|
+
submissionId: UUID | None = Field(
|
|
321
|
+
None, examples=["7f45748c-2342-4b59-b934-ad6183e8d834"]
|
|
322
|
+
)
|
|
323
|
+
"""
|
|
324
|
+
Case submission id - link to draft submission created by appellant
|
|
325
|
+
"""
|
|
326
|
+
caseStatus: CaseStatus
|
|
327
|
+
"""
|
|
328
|
+
The processing status for the appeal
|
|
329
|
+
"""
|
|
330
|
+
caseType: CaseType
|
|
331
|
+
"""
|
|
332
|
+
The internal code for an appeal type, e.g. D (Householder)
|
|
333
|
+
"""
|
|
334
|
+
caseProcedure: CaseProcedure
|
|
335
|
+
"""
|
|
336
|
+
The type of procedure for the appeal
|
|
337
|
+
"""
|
|
338
|
+
lpaCode: str = Field(..., examples=["Q9999"])
|
|
339
|
+
"""
|
|
340
|
+
A unique identifier for the Local Planning Authority
|
|
341
|
+
"""
|
|
342
|
+
caseOfficerId: str | None = None
|
|
343
|
+
"""
|
|
344
|
+
Unique identifier for the case officer assigned to the case
|
|
345
|
+
"""
|
|
346
|
+
inspectorId: str | None = None
|
|
347
|
+
"""
|
|
348
|
+
Unique identifier for the inspector assigned to the case
|
|
349
|
+
"""
|
|
350
|
+
allocationLevel: AllocationLevel
|
|
351
|
+
"""
|
|
352
|
+
A level used for allocation purposes
|
|
353
|
+
"""
|
|
354
|
+
allocationBand: AllocationBand
|
|
355
|
+
"""
|
|
356
|
+
A band used for allocation purposes
|
|
357
|
+
"""
|
|
358
|
+
caseSpecialisms: list[str] = Field(
|
|
359
|
+
...,
|
|
360
|
+
examples=[
|
|
361
|
+
"Access",
|
|
362
|
+
"Listed building and enforcement",
|
|
363
|
+
"Roads and traffics",
|
|
364
|
+
"Natural heritage",
|
|
365
|
+
"Schedule 1",
|
|
366
|
+
],
|
|
367
|
+
)
|
|
368
|
+
"""
|
|
369
|
+
A list of specialisms for allocation purposes
|
|
370
|
+
"""
|
|
371
|
+
caseSubmittedDate: AwareDatetime = Field(..., examples=["2023-07-27T20:30:00.000Z"])
|
|
372
|
+
"""
|
|
373
|
+
The date the appeal was submitted by the appellant
|
|
374
|
+
"""
|
|
375
|
+
caseCreatedDate: AwareDatetime = Field(..., examples=["2023-07-27T20:30:00.000Z"])
|
|
376
|
+
"""
|
|
377
|
+
The date the appeal was received
|
|
378
|
+
"""
|
|
379
|
+
caseUpdatedDate: AwareDatetime = Field(..., examples=["2023-07-27T20:30:00.000Z"])
|
|
380
|
+
"""
|
|
381
|
+
The date the appeal was last updated in the back-office
|
|
382
|
+
"""
|
|
383
|
+
caseValidDate: AwareDatetime | None = Field(
|
|
384
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
385
|
+
)
|
|
386
|
+
"""
|
|
387
|
+
The date since when the appeal was considered valid
|
|
388
|
+
"""
|
|
389
|
+
caseValidationDate: AwareDatetime | None = Field(
|
|
390
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
391
|
+
)
|
|
392
|
+
"""
|
|
393
|
+
The date the appeal was validated in the back-office
|
|
394
|
+
"""
|
|
395
|
+
caseValidationOutcome: CaseValidationOutcome
|
|
396
|
+
"""
|
|
397
|
+
The outcome of the validation action
|
|
398
|
+
"""
|
|
399
|
+
caseValidationInvalidDetails: list[str]
|
|
400
|
+
"""
|
|
401
|
+
A list of reasons why the appeal is invalid
|
|
402
|
+
"""
|
|
403
|
+
caseValidationIncompleteDetails: list[str]
|
|
404
|
+
"""
|
|
405
|
+
A list of reasons why the appeal is incomplete
|
|
406
|
+
"""
|
|
407
|
+
caseExtensionDate: AwareDatetime | None = Field(
|
|
408
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
409
|
+
)
|
|
410
|
+
"""
|
|
411
|
+
When the validation outcome is incomplete, an extension may be granted to provide missing information
|
|
412
|
+
"""
|
|
413
|
+
caseStartedDate: AwareDatetime | None = Field(
|
|
414
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
415
|
+
)
|
|
416
|
+
"""
|
|
417
|
+
A date indicating when the case was started, resulting in the creation of a timetable
|
|
418
|
+
"""
|
|
419
|
+
casePublishedDate: AwareDatetime | None = Field(
|
|
420
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
421
|
+
)
|
|
422
|
+
"""
|
|
423
|
+
A date indicating when the case was published
|
|
424
|
+
"""
|
|
425
|
+
linkedCaseStatus: LinkedCaseStatus
|
|
426
|
+
"""
|
|
427
|
+
Indicates if the case is linked, and the type of relationship
|
|
428
|
+
"""
|
|
429
|
+
leadCaseReference: str | None = Field(..., examples=["7002471"])
|
|
430
|
+
"""
|
|
431
|
+
The reference of the lead case, if the case is a child case
|
|
432
|
+
"""
|
|
433
|
+
lpaQuestionnaireDueDate: AwareDatetime | None = Field(
|
|
434
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
435
|
+
)
|
|
436
|
+
"""
|
|
437
|
+
If the case is started and has a timetable, a deadline for the LPA to provide a response
|
|
438
|
+
"""
|
|
439
|
+
lpaQuestionnaireSubmittedDate: AwareDatetime | None = Field(
|
|
440
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
441
|
+
)
|
|
442
|
+
"""
|
|
443
|
+
The date the LPA provided a response to the case
|
|
444
|
+
"""
|
|
445
|
+
lpaQuestionnaireCreatedDate: AwareDatetime | None = Field(
|
|
446
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
447
|
+
)
|
|
448
|
+
"""
|
|
449
|
+
The date the LPA response was receeived
|
|
450
|
+
"""
|
|
451
|
+
lpaQuestionnairePublishedDate: AwareDatetime | None = Field(
|
|
452
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
453
|
+
)
|
|
454
|
+
"""
|
|
455
|
+
The date indicating when the questionnaire review was completed and the questionnaire published
|
|
456
|
+
"""
|
|
457
|
+
lpaQuestionnaireValidationOutcome: LpaQuestionnaireValidationOutcome
|
|
458
|
+
"""
|
|
459
|
+
The outcome of the validation action
|
|
460
|
+
"""
|
|
461
|
+
lpaQuestionnaireValidationOutcomeDate: AwareDatetime | None = Field(
|
|
462
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
463
|
+
)
|
|
464
|
+
"""
|
|
465
|
+
The date the LPA response was validated
|
|
466
|
+
"""
|
|
467
|
+
lpaQuestionnaireValidationDetails: list[str]
|
|
468
|
+
"""
|
|
469
|
+
A list of reasons why the questionnaire is incomplete
|
|
470
|
+
"""
|
|
471
|
+
lpaStatement: str | None = Field(
|
|
472
|
+
..., examples=["We refused the application because of ..."]
|
|
473
|
+
)
|
|
474
|
+
"""
|
|
475
|
+
A statement provided by the LPA
|
|
476
|
+
"""
|
|
477
|
+
caseWithdrawnDate: AwareDatetime | None = Field(
|
|
478
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
479
|
+
)
|
|
480
|
+
"""
|
|
481
|
+
The date the appeal was withdrawn by the appellant
|
|
482
|
+
"""
|
|
483
|
+
caseTransferredDate: AwareDatetime | None = Field(
|
|
484
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
485
|
+
)
|
|
486
|
+
"""
|
|
487
|
+
The date the appeal was transferred to a new case of a different type
|
|
488
|
+
"""
|
|
489
|
+
transferredCaseClosedDate: AwareDatetime | None = Field(
|
|
490
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
491
|
+
)
|
|
492
|
+
"""
|
|
493
|
+
The date the appeal was closed and the appellant requested to resubmit
|
|
494
|
+
"""
|
|
495
|
+
caseDecisionOutcomeDate: AwareDatetime | None = Field(
|
|
496
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
497
|
+
)
|
|
498
|
+
"""
|
|
499
|
+
The date of the appeal decision
|
|
500
|
+
"""
|
|
501
|
+
caseDecisionPublishedDate: AwareDatetime | None = Field(
|
|
502
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
503
|
+
)
|
|
504
|
+
"""
|
|
505
|
+
The date the appeal decision was published
|
|
506
|
+
"""
|
|
507
|
+
caseDecisionOutcome: CaseDecisionOutcome
|
|
508
|
+
"""
|
|
509
|
+
The final outcome for the decision
|
|
510
|
+
"""
|
|
511
|
+
caseCompletedDate: AwareDatetime | None = Field(
|
|
512
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
513
|
+
)
|
|
514
|
+
"""
|
|
515
|
+
The date the appeal decision letter
|
|
516
|
+
"""
|
|
517
|
+
enforcementNotice: bool | None = None
|
|
518
|
+
"""
|
|
519
|
+
Indicates if an enforcement notice is the reason for the appeal
|
|
520
|
+
"""
|
|
521
|
+
applicationReference: str = Field(..., examples=["43010/APP/1/290572"])
|
|
522
|
+
"""
|
|
523
|
+
The unique identifier of the LPA application
|
|
524
|
+
"""
|
|
525
|
+
applicationDate: AwareDatetime = Field(..., examples=["2023-07-27T20:30:00.000Z"])
|
|
526
|
+
"""
|
|
527
|
+
The date of the original LPA application
|
|
528
|
+
"""
|
|
529
|
+
applicationDecision: ApplicationDecision
|
|
530
|
+
"""
|
|
531
|
+
The outcome of the original LPA decision
|
|
532
|
+
"""
|
|
533
|
+
applicationDecisionDate: AwareDatetime | None = Field(
|
|
534
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
535
|
+
)
|
|
536
|
+
"""
|
|
537
|
+
The date of the original LPA decision
|
|
538
|
+
"""
|
|
539
|
+
caseSubmissionDueDate: AwareDatetime | None = Field(
|
|
540
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
541
|
+
)
|
|
542
|
+
"""
|
|
543
|
+
The statutory deadline for submitting an appeal from the original LPA decision date
|
|
544
|
+
"""
|
|
545
|
+
siteAddressLine1: str = Field(..., examples=["96 The Avenue"])
|
|
546
|
+
"""
|
|
547
|
+
First line of address for the appeal site
|
|
548
|
+
"""
|
|
549
|
+
siteAddressLine2: str | None = None
|
|
550
|
+
"""
|
|
551
|
+
Second line of address for the appeal site
|
|
552
|
+
"""
|
|
553
|
+
siteAddressTown: str = Field(..., examples=["Maidstone"])
|
|
554
|
+
"""
|
|
555
|
+
Town / City of the site address
|
|
556
|
+
"""
|
|
557
|
+
siteAddressCounty: str | None = Field(..., examples=["Kent"])
|
|
558
|
+
"""
|
|
559
|
+
County of the site address
|
|
560
|
+
"""
|
|
561
|
+
siteAddressPostcode: str = Field(..., examples=["MD21 5XY"])
|
|
562
|
+
"""
|
|
563
|
+
Postal code of the site address
|
|
564
|
+
"""
|
|
565
|
+
siteAccessDetails: list[str]
|
|
566
|
+
"""
|
|
567
|
+
Provided information on site accessibility
|
|
568
|
+
"""
|
|
569
|
+
siteSafetyDetails: list[str]
|
|
570
|
+
"""
|
|
571
|
+
Provided information on site health and safety
|
|
572
|
+
"""
|
|
573
|
+
siteAreaSquareMetres: float | None = Field(..., examples=[45.7])
|
|
574
|
+
"""
|
|
575
|
+
The site area, in square meters
|
|
576
|
+
"""
|
|
577
|
+
floorSpaceSquareMetres: float | None = Field(..., examples=[3.5])
|
|
578
|
+
"""
|
|
579
|
+
The floor space, in square meters
|
|
580
|
+
"""
|
|
581
|
+
isCorrectAppealType: bool | None = None
|
|
582
|
+
"""
|
|
583
|
+
Indicates if the LPA considers the appeal type appropriate
|
|
584
|
+
"""
|
|
585
|
+
isGreenBelt: bool | None = None
|
|
586
|
+
"""
|
|
587
|
+
Indicates if the site is in a green belt
|
|
588
|
+
"""
|
|
589
|
+
inConservationArea: bool | None = None
|
|
590
|
+
"""
|
|
591
|
+
Indicates if the site is in a conservation area
|
|
592
|
+
"""
|
|
593
|
+
ownsAllLand: bool | None = None
|
|
594
|
+
"""
|
|
595
|
+
Indicates if the appellant has complete ownership of the site
|
|
596
|
+
"""
|
|
597
|
+
ownsSomeLand: bool | None = None
|
|
598
|
+
"""
|
|
599
|
+
Indicates if the appellant has partial ownership of the site
|
|
600
|
+
"""
|
|
601
|
+
knowsOtherOwners: KnowsOtherOwners
|
|
602
|
+
"""
|
|
603
|
+
Indicates if the appellant knows other owners of the site
|
|
604
|
+
"""
|
|
605
|
+
knowsAllOwners: KnowsAllOwners
|
|
606
|
+
"""
|
|
607
|
+
Indicates if the appellant knows all owners of the site
|
|
608
|
+
"""
|
|
609
|
+
advertisedAppeal: bool | None = None
|
|
610
|
+
"""
|
|
611
|
+
Indicates if the appellant has advertised the appeal to the LPA decision
|
|
612
|
+
"""
|
|
613
|
+
notificationMethod: list[NotificationMethodEnum]
|
|
614
|
+
"""
|
|
615
|
+
The methods used to notify relevant parties
|
|
616
|
+
"""
|
|
617
|
+
ownersInformed: bool | None = None
|
|
618
|
+
"""
|
|
619
|
+
Indicates if the appellant has informed other owners of the site
|
|
620
|
+
"""
|
|
621
|
+
originalDevelopmentDescription: str | None = Field(
|
|
622
|
+
..., examples=["Replacement of an existing gate to access the property"]
|
|
623
|
+
)
|
|
624
|
+
"""
|
|
625
|
+
The original description of the development, as provided by the appellant
|
|
626
|
+
"""
|
|
627
|
+
changedDevelopmentDescription: bool | None = None
|
|
628
|
+
"""
|
|
629
|
+
Indicates that the LPA has changed the development description
|
|
630
|
+
"""
|
|
631
|
+
newConditionDetails: str | None = Field(
|
|
632
|
+
...,
|
|
633
|
+
examples=["Since the original application, a number of things have changed..."],
|
|
634
|
+
)
|
|
635
|
+
"""
|
|
636
|
+
New conditions details provided by the LPA
|
|
637
|
+
"""
|
|
638
|
+
nearbyCaseReferences: list[str]
|
|
639
|
+
"""
|
|
640
|
+
A list of related case references known to the appellant and the LPA
|
|
641
|
+
"""
|
|
642
|
+
neighbouringSiteAddresses: list[NeighbouringSiteAddress]
|
|
643
|
+
"""
|
|
644
|
+
A list of neighbouring site addresses
|
|
645
|
+
"""
|
|
646
|
+
reasonForNeighbourVisits: str | None = None
|
|
647
|
+
"""
|
|
648
|
+
A general reason given for the need to visit any neighbours
|
|
649
|
+
"""
|
|
650
|
+
affectedListedBuildingNumbers: list[str]
|
|
651
|
+
"""
|
|
652
|
+
A list of affected listed building IDs from Historic England
|
|
653
|
+
"""
|
|
654
|
+
changedListedBuildingNumbers: list[str]
|
|
655
|
+
"""
|
|
656
|
+
A list of changed listed building IDs from Historic England
|
|
657
|
+
"""
|
|
658
|
+
preserveGrantLoan: bool | None = None
|
|
659
|
+
"""
|
|
660
|
+
A grant or loan has been made to preserve the listed building
|
|
661
|
+
"""
|
|
662
|
+
consultHistoricEngland: bool | None = None
|
|
663
|
+
"""
|
|
664
|
+
Are Historic England to be consulted?
|
|
665
|
+
"""
|
|
666
|
+
appellantCostsAppliedFor: bool | None = None
|
|
667
|
+
"""
|
|
668
|
+
Indicates if the appellant has applied for costs
|
|
669
|
+
"""
|
|
670
|
+
lpaCostsAppliedFor: bool | None = None
|
|
671
|
+
"""
|
|
672
|
+
Indicates if the appellant has applied for costs
|
|
673
|
+
"""
|
|
674
|
+
agriculturalHolding: bool | None = None
|
|
675
|
+
"""
|
|
676
|
+
Indicates if the site is an agricultural holding
|
|
677
|
+
"""
|
|
678
|
+
tenantAgriculturalHolding: bool | None = None
|
|
679
|
+
"""
|
|
680
|
+
Indicates if the site is a tenant agricultural holding
|
|
681
|
+
"""
|
|
682
|
+
otherTenantsAgriculturalHolding: bool | None = None
|
|
683
|
+
"""
|
|
684
|
+
Indicates if the site is an agricultural holding with other tenants
|
|
685
|
+
"""
|
|
686
|
+
informedTenantsAgriculturalHolding: bool | None = None
|
|
687
|
+
"""
|
|
688
|
+
If the site is an agricultural holding, indicates tenants are informed
|
|
689
|
+
"""
|
|
690
|
+
appellantProcedurePreference: AppellantProcedurePreference
|
|
691
|
+
"""
|
|
692
|
+
The procedure preference indicated by the appellant
|
|
693
|
+
"""
|
|
694
|
+
appellantProcedurePreferenceDetails: str | None = None
|
|
695
|
+
"""
|
|
696
|
+
The procedure details preference indicated by the appellant
|
|
697
|
+
"""
|
|
698
|
+
appellantProcedurePreferenceDuration: float | None = None
|
|
699
|
+
"""
|
|
700
|
+
The duration of the procedure indicated by the appellant
|
|
701
|
+
"""
|
|
702
|
+
appellantProcedurePreferenceWitnessCount: float | None = None
|
|
703
|
+
"""
|
|
704
|
+
The number of witnesses appellant has suggested for inquiries preference
|
|
705
|
+
"""
|
|
706
|
+
statusPlanningObligation: str | None = None
|
|
707
|
+
"""
|
|
708
|
+
The planning obligation information, if available
|
|
709
|
+
"""
|
|
710
|
+
affectsScheduledMonument: bool | None = None
|
|
711
|
+
"""
|
|
712
|
+
Indicates that a scheduled monument is affected
|
|
713
|
+
"""
|
|
714
|
+
hasProtectedSpecies: bool | None = None
|
|
715
|
+
"""
|
|
716
|
+
Indicates the existence of protected species
|
|
717
|
+
"""
|
|
718
|
+
isAonbNationalLandscape: bool | None = None
|
|
719
|
+
"""
|
|
720
|
+
Indicates an area of outstanding beauty (National Landscape)
|
|
721
|
+
"""
|
|
722
|
+
designatedSitesNames: list[str]
|
|
723
|
+
"""
|
|
724
|
+
The designated site names
|
|
725
|
+
"""
|
|
726
|
+
isGypsyOrTravellerSite: bool | None = None
|
|
727
|
+
"""
|
|
728
|
+
Indicates a traveller site
|
|
729
|
+
"""
|
|
730
|
+
isPublicRightOfWay: bool | None = None
|
|
731
|
+
"""
|
|
732
|
+
Indicates a PROW (public right of way)
|
|
733
|
+
"""
|
|
734
|
+
eiaEnvironmentalImpactSchedule: EiaEnvironmentalImpactSchedule
|
|
735
|
+
"""
|
|
736
|
+
The impact schedule from EIA
|
|
737
|
+
"""
|
|
738
|
+
eiaDevelopmentDescription: EiaDevelopmentDescription
|
|
739
|
+
"""
|
|
740
|
+
The development description from EIA
|
|
741
|
+
"""
|
|
742
|
+
eiaSensitiveAreaDetails: str | None = None
|
|
743
|
+
"""
|
|
744
|
+
The sensitive area details from EIA
|
|
745
|
+
"""
|
|
746
|
+
eiaColumnTwoThreshold: bool | None = None
|
|
747
|
+
"""
|
|
748
|
+
EIA specific threshold
|
|
749
|
+
"""
|
|
750
|
+
eiaScreeningOpinion: bool | None = None
|
|
751
|
+
"""
|
|
752
|
+
EIA screening opinion
|
|
753
|
+
"""
|
|
754
|
+
eiaRequiresEnvironmentalStatement: bool | None = None
|
|
755
|
+
"""
|
|
756
|
+
EIA environmental statement required
|
|
757
|
+
"""
|
|
758
|
+
eiaCompletedEnvironmentalStatement: bool | None = None
|
|
759
|
+
"""
|
|
760
|
+
EIA completed environmental statement required
|
|
761
|
+
"""
|
|
762
|
+
hasStatutoryConsultees: bool | None = None
|
|
763
|
+
"""
|
|
764
|
+
Indicates statutory consultees
|
|
765
|
+
"""
|
|
766
|
+
consultedBodiesDetails: str | None = None
|
|
767
|
+
"""
|
|
768
|
+
The details of the bodies consulted
|
|
769
|
+
"""
|
|
770
|
+
hasInfrastructureLevy: bool | None = None
|
|
771
|
+
"""
|
|
772
|
+
Indicates the existence of an infrastructure levy
|
|
773
|
+
"""
|
|
774
|
+
isInfrastructureLevyFormallyAdopted: bool | None = None
|
|
775
|
+
"""
|
|
776
|
+
Indicates if the infrastructure levy is formally adopted
|
|
777
|
+
"""
|
|
778
|
+
infrastructureLevyAdoptedDate: AwareDatetime | None = Field(
|
|
779
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
780
|
+
)
|
|
781
|
+
"""
|
|
782
|
+
The date of the infrastructure levy adoption
|
|
783
|
+
"""
|
|
784
|
+
infrastructureLevyExpectedDate: AwareDatetime | None = Field(
|
|
785
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
786
|
+
)
|
|
787
|
+
"""
|
|
788
|
+
The expected date of the infrastructure levy
|
|
789
|
+
"""
|
|
790
|
+
lpaProcedurePreference: LpaProcedurePreference
|
|
791
|
+
"""
|
|
792
|
+
The procedure preference indicated by the LPA
|
|
793
|
+
"""
|
|
794
|
+
lpaProcedurePreferenceDetails: str | None = None
|
|
795
|
+
"""
|
|
796
|
+
The procedure details preference indicated by the LPA
|
|
797
|
+
"""
|
|
798
|
+
lpaProcedurePreferenceDuration: float | None = None
|
|
799
|
+
"""
|
|
800
|
+
The duration of enquiry indicated by the LPA
|
|
801
|
+
"""
|
|
802
|
+
caseworkReason: str | None = None
|
|
803
|
+
importantInformation: str | None = None
|
|
804
|
+
jurisdiction: str | None = None
|
|
805
|
+
redeterminedIndicator: str | None = None
|
|
806
|
+
dateCostsReportDespatched: AwareDatetime | None = Field(
|
|
807
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
808
|
+
)
|
|
809
|
+
"""
|
|
810
|
+
The date of the cost report
|
|
811
|
+
"""
|
|
812
|
+
dateNotRecoveredOrDerecovered: AwareDatetime | None = Field(
|
|
813
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
814
|
+
)
|
|
815
|
+
dateRecovered: AwareDatetime | None = Field(
|
|
816
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
817
|
+
)
|
|
818
|
+
originalCaseDecisionDate: AwareDatetime | None = Field(
|
|
819
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
820
|
+
)
|
|
821
|
+
targetDate: AwareDatetime | None = Field(..., examples=["2023-07-27T20:30:00.000Z"])
|
|
822
|
+
appellantCommentsSubmittedDate: AwareDatetime | None = Field(
|
|
823
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
824
|
+
)
|
|
825
|
+
appellantStatementSubmittedDate: AwareDatetime | None = Field(
|
|
826
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
827
|
+
)
|
|
828
|
+
appellantProofsSubmittedDate: AwareDatetime | None = Field(
|
|
829
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
830
|
+
)
|
|
831
|
+
finalCommentsDueDate: AwareDatetime | None = Field(
|
|
832
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
833
|
+
)
|
|
834
|
+
interestedPartyRepsDueDate: AwareDatetime | None = Field(
|
|
835
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
836
|
+
)
|
|
837
|
+
lpaCommentsSubmittedDate: AwareDatetime | None = Field(
|
|
838
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
839
|
+
)
|
|
840
|
+
lpaProofsSubmittedDate: AwareDatetime | None = Field(
|
|
841
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
842
|
+
)
|
|
843
|
+
lpaStatementSubmittedDate: AwareDatetime | None = Field(
|
|
844
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
845
|
+
)
|
|
846
|
+
proofsOfEvidenceDueDate: AwareDatetime | None = Field(
|
|
847
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
848
|
+
)
|
|
849
|
+
siteNoticesSentDate: AwareDatetime | None = Field(
|
|
850
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
851
|
+
)
|
|
852
|
+
statementDueDate: AwareDatetime | None = Field(
|
|
853
|
+
..., examples=["2023-07-27T20:30:00.000Z"]
|
|
854
|
+
)
|
|
855
|
+
numberOfResidencesNetChange: float | None = None
|
|
856
|
+
"""
|
|
857
|
+
The net gain in residences of the proposed development
|
|
858
|
+
"""
|
|
859
|
+
siteGridReferenceEasting: str | None = None
|
|
860
|
+
siteGridReferenceNorthing: str | None = None
|
|
861
|
+
siteViewableFromRoad: bool | None = None
|
|
862
|
+
siteWithinSSSI: bool | None = None
|
|
863
|
+
typeOfPlanningApplication: TypeOfPlanningApplication
|
|
864
|
+
developmentType: DevelopmentType
|