@planning-inspectorate/data-model 2.29.0 → 2.31.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/docs/README.md +4 -0
- package/docs/appeal-document.md +96 -93
- package/docs/appeal-s78-definitions-significantchangesaffectingapplication.md +14 -0
- package/docs/appeal-s78-definitions.md +3 -0
- package/docs/appeal-s78-if.md +35 -0
- package/docs/appeal-s78-then.md +31 -0
- package/docs/appeal-s78.md +360 -197
- package/package.json +1 -1
- package/pins_data_model/models/model_appeal_document.py +4 -1
- package/pins_data_model/models/model_appeal_event.py +1 -1
- package/pins_data_model/models/model_appeal_event_estimate.py +1 -1
- package/pins_data_model/models/model_appeal_has.py +1 -1
- package/pins_data_model/models/model_appeal_representation.py +1 -1
- package/pins_data_model/models/model_appeal_s78.py +154 -74
- package/pins_data_model/models/model_dart_response.py +1 -1
- package/pins_data_model/models/model_entraid.py +1 -1
- package/pins_data_model/models/model_folder.py +1 -1
- package/pins_data_model/models/model_gettimesheets_response.py +1 -1
- package/pins_data_model/models/model_listed_building.py +1 -1
- package/pins_data_model/models/model_listed_buildings.py +1 -1
- package/pins_data_model/models/model_nsip_document.py +1 -1
- package/pins_data_model/models/model_nsip_exam_timetable.py +1 -1
- package/pins_data_model/models/model_nsip_invoice.py +1 -1
- package/pins_data_model/models/model_nsip_meeting.py +1 -1
- package/pins_data_model/models/model_nsip_project.py +1 -1
- package/pins_data_model/models/model_nsip_project_update.py +1 -1
- package/pins_data_model/models/model_nsip_representation.py +1 -1
- package/pins_data_model/models/model_nsip_subscription.py +1 -1
- package/pins_data_model/models/model_pins_inspector.py +1 -1
- package/pins_data_model/models/model_pins_lpa.py +1 -1
- package/pins_data_model/models/model_s51_advice.py +1 -1
- package/pins_data_model/models/model_service_user.py +1 -1
- package/schemas/appeal-document.schema.json +3 -0
- package/schemas/appeal-s78.schema.json +72 -7
- package/schemas/commands/appellant-submission.schema.json +2 -1
- package/src/enums.cjs +26 -0
- package/src/enums.d.ts +24 -0
- package/src/enums.js +24 -0
- package/src/index.cjs +26 -0
- package/src/schemas.d.ts +54 -8
- package/tests/appeals/appeal-s78.test.js +21 -1
- package/tests/appeals/expedited-appeals.test.js +238 -0
|
@@ -118,14 +118,10 @@
|
|
|
118
118
|
"appellantCommentsSubmittedDate",
|
|
119
119
|
"appellantStatementSubmittedDate",
|
|
120
120
|
"appellantProofsSubmittedDate",
|
|
121
|
-
"finalCommentsDueDate",
|
|
122
|
-
"interestedPartyRepsDueDate",
|
|
123
121
|
"lpaCommentsSubmittedDate",
|
|
124
122
|
"lpaProofsSubmittedDate",
|
|
125
123
|
"lpaStatementSubmittedDate",
|
|
126
|
-
"proofsOfEvidenceDueDate",
|
|
127
124
|
"siteNoticesSentDate",
|
|
128
|
-
"statementDueDate",
|
|
129
125
|
"reasonForNeighbourVisits",
|
|
130
126
|
"numberOfResidencesNetChange",
|
|
131
127
|
"siteViewableFromRoad",
|
|
@@ -151,6 +147,16 @@
|
|
|
151
147
|
}
|
|
152
148
|
}
|
|
153
149
|
],
|
|
150
|
+
"if": {
|
|
151
|
+
"properties": {
|
|
152
|
+
"discontinuanceNoticeServedReason": { "const": "other" }
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
"then": {
|
|
156
|
+
"properties": {
|
|
157
|
+
"discontinuanceNoticeServedOtherReason": { "type": "string", "minLength": 1 }
|
|
158
|
+
}
|
|
159
|
+
},
|
|
154
160
|
"properties": {
|
|
155
161
|
"caseId": {
|
|
156
162
|
"type": ["integer", "null"],
|
|
@@ -203,7 +209,7 @@
|
|
|
203
209
|
},
|
|
204
210
|
"caseProcedure": {
|
|
205
211
|
"type": ["string", "null"],
|
|
206
|
-
"enum": ["written", "hearing", "inquiry", "writtenPart1", null],
|
|
212
|
+
"enum": ["written", "hearing", "inquiry", "writtenPart1", "writtenPart2", null],
|
|
207
213
|
"description": "The type of procedure for the appeal",
|
|
208
214
|
"$comment": "Also available on HAS cases"
|
|
209
215
|
},
|
|
@@ -1035,6 +1041,7 @@
|
|
|
1035
1041
|
"minor-commercial-development",
|
|
1036
1042
|
"advertisement",
|
|
1037
1043
|
"lawful-development-certificate",
|
|
1044
|
+
"discontinuance-notice",
|
|
1038
1045
|
null
|
|
1039
1046
|
]
|
|
1040
1047
|
},
|
|
@@ -1234,13 +1241,13 @@
|
|
|
1234
1241
|
"issueDateOfEnforcementNotice": {
|
|
1235
1242
|
"type": ["string", "null"],
|
|
1236
1243
|
"format": "date-time",
|
|
1237
|
-
"description": "The date on which an
|
|
1244
|
+
"description": "The date on which an Enforcement Notice or Discontinuance Notice was issued",
|
|
1238
1245
|
"examples": ["2023-07-27T20:30:00.000Z"]
|
|
1239
1246
|
},
|
|
1240
1247
|
"effectiveDateOfEnforcementNotice": {
|
|
1241
1248
|
"type": ["string", "null"],
|
|
1242
1249
|
"format": "date-time",
|
|
1243
|
-
"description": "The effective date of an
|
|
1250
|
+
"description": "The effective date of an Enforcement Notice or Discontinuance Notice",
|
|
1244
1251
|
"examples": ["2023-07-27T20:30:00.000Z"]
|
|
1245
1252
|
},
|
|
1246
1253
|
"didAppellantAppealLpaDecision": {
|
|
@@ -1329,6 +1336,64 @@
|
|
|
1329
1336
|
"lpaAppealInvalidReasons": {
|
|
1330
1337
|
"type": ["string", "null"],
|
|
1331
1338
|
"description": "Reason(s) why LPA consider the appeal invalid"
|
|
1339
|
+
},
|
|
1340
|
+
"discontinuanceNoticeServedReason": {
|
|
1341
|
+
"type": ["string", "null"],
|
|
1342
|
+
"enum": ["risk-of-injury-to-the-amenity-of-locality", "danger-to-members-of-the-public", "other", null]
|
|
1343
|
+
},
|
|
1344
|
+
"discontinuanceNoticeServedOtherReason": {
|
|
1345
|
+
"type": ["string", "null"],
|
|
1346
|
+
"description": "Other reason for serving a discontinuance notice, for discontinuanceNoticeServedReason: other"
|
|
1347
|
+
},
|
|
1348
|
+
"wasRetrospectivePlanningApplicationMade": {
|
|
1349
|
+
"type": ["boolean", "null"]
|
|
1350
|
+
},
|
|
1351
|
+
"reasonForAppealAppellant": {
|
|
1352
|
+
"type": ["string", "null"],
|
|
1353
|
+
"maxLength": 250,
|
|
1354
|
+
"description": "Reason for appeal as provided by the appellant (Expedited Appeals)"
|
|
1355
|
+
},
|
|
1356
|
+
"screeningOpinionIndicatesEiaRequired": {
|
|
1357
|
+
"type": ["boolean", "null"],
|
|
1358
|
+
"description": "Indicates if the screening opinion specifies that an EIA is required (Expedited Appeals)"
|
|
1359
|
+
},
|
|
1360
|
+
"significantChangesAffectingApplicationAppellant": {
|
|
1361
|
+
"type": ["array", "null"],
|
|
1362
|
+
"items": {
|
|
1363
|
+
"type": "object",
|
|
1364
|
+
"properties": {
|
|
1365
|
+
"value": {
|
|
1366
|
+
"$ref": "#/definitions/SignificantChangesAffectingApplication"
|
|
1367
|
+
},
|
|
1368
|
+
"comment": {
|
|
1369
|
+
"type": ["string", "null"]
|
|
1370
|
+
}
|
|
1371
|
+
},
|
|
1372
|
+
"required": ["value"]
|
|
1373
|
+
},
|
|
1374
|
+
"description": "Significant changes affecting the application as reported by the appellant (Expedited Appeals)"
|
|
1375
|
+
},
|
|
1376
|
+
"significantChangesAffectingApplicationLpa": {
|
|
1377
|
+
"type": ["array", "null"],
|
|
1378
|
+
"items": {
|
|
1379
|
+
"type": "object",
|
|
1380
|
+
"properties": {
|
|
1381
|
+
"value": {
|
|
1382
|
+
"$ref": "#/definitions/SignificantChangesAffectingApplication"
|
|
1383
|
+
},
|
|
1384
|
+
"comment": {
|
|
1385
|
+
"type": ["string", "null"]
|
|
1386
|
+
}
|
|
1387
|
+
},
|
|
1388
|
+
"required": ["value"]
|
|
1389
|
+
},
|
|
1390
|
+
"description": "Significant changes affecting the application as reported by the LPA (Expedited Appeals)"
|
|
1391
|
+
}
|
|
1392
|
+
},
|
|
1393
|
+
"definitions": {
|
|
1394
|
+
"SignificantChangesAffectingApplication": {
|
|
1395
|
+
"type": "string",
|
|
1396
|
+
"enum": ["adopted-a-new-local-plan", "national-policy-change", "court-judgement", "other"]
|
|
1332
1397
|
}
|
|
1333
1398
|
}
|
|
1334
1399
|
}
|
|
@@ -168,7 +168,8 @@
|
|
|
168
168
|
"groundKSupporting",
|
|
169
169
|
"groundAFeeReceipt",
|
|
170
170
|
null,
|
|
171
|
-
"environmentalAssessment"
|
|
171
|
+
"environmentalAssessment",
|
|
172
|
+
"eiaEnvironmentalStatement"
|
|
172
173
|
],
|
|
173
174
|
"description": "The type of document, used for exchange, migrations and consumption from the appeal back-office system"
|
|
174
175
|
}
|
package/src/enums.cjs
CHANGED
|
@@ -29,6 +29,19 @@ const APPEAL_HAS_CASE_STATUS = Object.freeze({
|
|
|
29
29
|
WITHDRAWN: 'withdrawn',
|
|
30
30
|
});
|
|
31
31
|
|
|
32
|
+
const APPEAL_HAS_TYPE_OF_PLANNING_APPLICATION = Object.freeze({
|
|
33
|
+
ADVERTISEMENT: 'advertisement',
|
|
34
|
+
FULL_APPEAL: 'full-appeal',
|
|
35
|
+
HOUSEHOLDER_PLANNING: 'householder-planning',
|
|
36
|
+
LAWFUL_DEVELOPMENT_CERTIFICATE: 'lawful-development-certificate',
|
|
37
|
+
LISTED_BUILDING: 'listed-building',
|
|
38
|
+
MINOR_COMMERCIAL_DEVELOPMENT: 'minor-commercial-development',
|
|
39
|
+
OUTLINE_PLANNING: 'outline-planning',
|
|
40
|
+
PRIOR_APPROVAL: 'prior-approval',
|
|
41
|
+
REMOVAL_OR_VARIATION_OF_CONDITIONS: 'removal-or-variation-of-conditions',
|
|
42
|
+
RESERVED_MATTERS: 'reserved-matters',
|
|
43
|
+
});
|
|
44
|
+
|
|
32
45
|
const APPEAL_ALLOCATION_LEVEL = Object.freeze({
|
|
33
46
|
A: 'A',
|
|
34
47
|
B: 'B',
|
|
@@ -85,6 +98,7 @@ const APPEAL_CASE_PROCEDURE = Object.freeze({
|
|
|
85
98
|
INQUIRY: 'inquiry',
|
|
86
99
|
WRITTEN: 'written',
|
|
87
100
|
WRITTEN_PART_1: 'writtenPart1',
|
|
101
|
+
WRITTEN_PART_2: 'writtenPart2',
|
|
88
102
|
});
|
|
89
103
|
|
|
90
104
|
const APPEAL_CASE_STAGE = Object.freeze({
|
|
@@ -163,6 +177,12 @@ const APPEAL_DEVELOPMENT_TYPE = Object.freeze({
|
|
|
163
177
|
OTHER_MINOR: 'other-minor',
|
|
164
178
|
});
|
|
165
179
|
|
|
180
|
+
const APPEAL_DISCONTINUANCE_NOTICE_SERVED_REASON = Object.freeze({
|
|
181
|
+
DANGER_TO_MEMBERS_OF_THE_PUBLIC: 'danger-to-members-of-the-public',
|
|
182
|
+
OTHER: 'other',
|
|
183
|
+
RISK_OF_INJURY_TO_THE_AMENITY_OF_LOCALITY: 'risk-of-injury-to-the-amenity-of-locality',
|
|
184
|
+
});
|
|
185
|
+
|
|
166
186
|
const APPEAL_DOCUMENT_TYPE = Object.freeze({
|
|
167
187
|
APPEAL_NOTIFICATION: 'appealNotification',
|
|
168
188
|
APPELLANT_CASE_CORRESPONDENCE: 'appellantCaseCorrespondence',
|
|
@@ -189,7 +209,9 @@ const APPEAL_DOCUMENT_TYPE = Object.freeze({
|
|
|
189
209
|
DELEGATED_REPORT: 'delegatedReport',
|
|
190
210
|
DESIGN_ACCESS_STATEMENT: 'designAccessStatement',
|
|
191
211
|
DEVELOPMENT_PLAN_POLICIES: 'developmentPlanPolicies',
|
|
212
|
+
DISCONTINUANCE_NOTICE: 'discontinuanceNotice',
|
|
192
213
|
EIA_ENVIRONMENTAL_STATEMENT: 'eiaEnvironmentalStatement',
|
|
214
|
+
EIA_ENVIRONMENTAL_STATEMENT_APPELLANT: 'eiaEnvironmentalStatementAppellant',
|
|
193
215
|
EIA_SCOPING_OPINION: 'eiaScopingOpinion',
|
|
194
216
|
EIA_SCREENING_DIRECTION: 'eiaScreeningDirection',
|
|
195
217
|
EIA_SCREENING_OPINION: 'eiaScreeningOpinion',
|
|
@@ -233,6 +255,7 @@ const APPEAL_DOCUMENT_TYPE = Object.freeze({
|
|
|
233
255
|
OTHER_PARTY_REPRESENTATIONS: 'otherPartyRepresentations',
|
|
234
256
|
OTHER_RELEVANT_MATTERS: 'otherRelevantMatters',
|
|
235
257
|
OTHER_RELEVANT_POLICIES: 'otherRelevantPolicies',
|
|
258
|
+
OTHER_SUPPORTING_INFORMATION_APPELLANT: 'otherSupportingInformationAppellant',
|
|
236
259
|
OWNERSHIP_CERTIFICATE: 'ownershipCertificate',
|
|
237
260
|
PLAN_SHOWING_EXTENT_OF_ORDER: 'planShowingExtentOfOrder',
|
|
238
261
|
PLANNING_CONTRAVENTION_NOTICE: 'planningContraventionNotice',
|
|
@@ -393,6 +416,7 @@ const APPEAL_SOURCE_SYSTEM = Object.freeze({
|
|
|
393
416
|
|
|
394
417
|
const APPEAL_TYPE_OF_PLANNING_APPLICATION = Object.freeze({
|
|
395
418
|
ADVERTISEMENT: 'advertisement',
|
|
419
|
+
DISCONTINUANCE_NOTICE: 'discontinuance-notice',
|
|
396
420
|
FULL_APPEAL: 'full-appeal',
|
|
397
421
|
HOUSEHOLDER_PLANNING: 'householder-planning',
|
|
398
422
|
LAWFUL_DEVELOPMENT_CERTIFICATE: 'lawful-development-certificate',
|
|
@@ -798,6 +822,7 @@ exports.APPEAL_CASE_STATUS = APPEAL_CASE_STATUS;
|
|
|
798
822
|
exports.APPEAL_CASE_TYPE = APPEAL_CASE_TYPE;
|
|
799
823
|
exports.APPEAL_CASE_VALIDATION_OUTCOME = APPEAL_CASE_VALIDATION_OUTCOME;
|
|
800
824
|
exports.APPEAL_DEVELOPMENT_TYPE = APPEAL_DEVELOPMENT_TYPE;
|
|
825
|
+
exports.APPEAL_DISCONTINUANCE_NOTICE_SERVED_REASON = APPEAL_DISCONTINUANCE_NOTICE_SERVED_REASON;
|
|
801
826
|
exports.APPEAL_DOCUMENT_TYPE = APPEAL_DOCUMENT_TYPE;
|
|
802
827
|
exports.APPEAL_EIA_DEVELOPMENT_DESCRIPTION = APPEAL_EIA_DEVELOPMENT_DESCRIPTION;
|
|
803
828
|
exports.APPEAL_EIA_ENVIRONMENTAL_IMPACT_SCHEDULE = APPEAL_EIA_ENVIRONMENTAL_IMPACT_SCHEDULE;
|
|
@@ -806,6 +831,7 @@ exports.APPEAL_EVENT_TYPE = APPEAL_EVENT_TYPE;
|
|
|
806
831
|
exports.APPEAL_HAS_CASE_DECISION_OUTCOME = APPEAL_HAS_CASE_DECISION_OUTCOME;
|
|
807
832
|
exports.APPEAL_HAS_CASE_PROCEDURE = APPEAL_HAS_CASE_PROCEDURE;
|
|
808
833
|
exports.APPEAL_HAS_CASE_STATUS = APPEAL_HAS_CASE_STATUS;
|
|
834
|
+
exports.APPEAL_HAS_TYPE_OF_PLANNING_APPLICATION = APPEAL_HAS_TYPE_OF_PLANNING_APPLICATION;
|
|
809
835
|
exports.APPEAL_INVALID_OR_INCOMPLETE_DETAILS = APPEAL_INVALID_OR_INCOMPLETE_DETAILS;
|
|
810
836
|
exports.APPEAL_KNOWS_ALL_OWNERS = APPEAL_KNOWS_ALL_OWNERS;
|
|
811
837
|
exports.APPEAL_KNOWS_OTHER_OWNERS = APPEAL_KNOWS_OTHER_OWNERS;
|
package/src/enums.d.ts
CHANGED
|
@@ -27,6 +27,19 @@ export const APPEAL_HAS_CASE_STATUS = {
|
|
|
27
27
|
WITHDRAWN: 'withdrawn',
|
|
28
28
|
} as const;
|
|
29
29
|
|
|
30
|
+
export const APPEAL_HAS_TYPE_OF_PLANNING_APPLICATION = {
|
|
31
|
+
ADVERTISEMENT: 'advertisement',
|
|
32
|
+
FULL_APPEAL: 'full-appeal',
|
|
33
|
+
HOUSEHOLDER_PLANNING: 'householder-planning',
|
|
34
|
+
LAWFUL_DEVELOPMENT_CERTIFICATE: 'lawful-development-certificate',
|
|
35
|
+
LISTED_BUILDING: 'listed-building',
|
|
36
|
+
MINOR_COMMERCIAL_DEVELOPMENT: 'minor-commercial-development',
|
|
37
|
+
OUTLINE_PLANNING: 'outline-planning',
|
|
38
|
+
PRIOR_APPROVAL: 'prior-approval',
|
|
39
|
+
REMOVAL_OR_VARIATION_OF_CONDITIONS: 'removal-or-variation-of-conditions',
|
|
40
|
+
RESERVED_MATTERS: 'reserved-matters',
|
|
41
|
+
} as const;
|
|
42
|
+
|
|
30
43
|
export const APPEAL_ALLOCATION_LEVEL = {
|
|
31
44
|
A: 'A',
|
|
32
45
|
B: 'B',
|
|
@@ -83,6 +96,7 @@ export const APPEAL_CASE_PROCEDURE = {
|
|
|
83
96
|
INQUIRY: 'inquiry',
|
|
84
97
|
WRITTEN: 'written',
|
|
85
98
|
WRITTEN_PART_1: 'writtenPart1',
|
|
99
|
+
WRITTEN_PART_2: 'writtenPart2',
|
|
86
100
|
} as const;
|
|
87
101
|
|
|
88
102
|
export const APPEAL_CASE_STAGE = {
|
|
@@ -161,6 +175,12 @@ export const APPEAL_DEVELOPMENT_TYPE = {
|
|
|
161
175
|
OTHER_MINOR: 'other-minor',
|
|
162
176
|
} as const;
|
|
163
177
|
|
|
178
|
+
export const APPEAL_DISCONTINUANCE_NOTICE_SERVED_REASON = {
|
|
179
|
+
DANGER_TO_MEMBERS_OF_THE_PUBLIC: 'danger-to-members-of-the-public',
|
|
180
|
+
OTHER: 'other',
|
|
181
|
+
RISK_OF_INJURY_TO_THE_AMENITY_OF_LOCALITY: 'risk-of-injury-to-the-amenity-of-locality',
|
|
182
|
+
} as const;
|
|
183
|
+
|
|
164
184
|
export const APPEAL_DOCUMENT_TYPE = {
|
|
165
185
|
APPEAL_NOTIFICATION: 'appealNotification',
|
|
166
186
|
APPELLANT_CASE_CORRESPONDENCE: 'appellantCaseCorrespondence',
|
|
@@ -187,7 +207,9 @@ export const APPEAL_DOCUMENT_TYPE = {
|
|
|
187
207
|
DELEGATED_REPORT: 'delegatedReport',
|
|
188
208
|
DESIGN_ACCESS_STATEMENT: 'designAccessStatement',
|
|
189
209
|
DEVELOPMENT_PLAN_POLICIES: 'developmentPlanPolicies',
|
|
210
|
+
DISCONTINUANCE_NOTICE: 'discontinuanceNotice',
|
|
190
211
|
EIA_ENVIRONMENTAL_STATEMENT: 'eiaEnvironmentalStatement',
|
|
212
|
+
EIA_ENVIRONMENTAL_STATEMENT_APPELLANT: 'eiaEnvironmentalStatementAppellant',
|
|
191
213
|
EIA_SCOPING_OPINION: 'eiaScopingOpinion',
|
|
192
214
|
EIA_SCREENING_DIRECTION: 'eiaScreeningDirection',
|
|
193
215
|
EIA_SCREENING_OPINION: 'eiaScreeningOpinion',
|
|
@@ -231,6 +253,7 @@ export const APPEAL_DOCUMENT_TYPE = {
|
|
|
231
253
|
OTHER_PARTY_REPRESENTATIONS: 'otherPartyRepresentations',
|
|
232
254
|
OTHER_RELEVANT_MATTERS: 'otherRelevantMatters',
|
|
233
255
|
OTHER_RELEVANT_POLICIES: 'otherRelevantPolicies',
|
|
256
|
+
OTHER_SUPPORTING_INFORMATION_APPELLANT: 'otherSupportingInformationAppellant',
|
|
234
257
|
OWNERSHIP_CERTIFICATE: 'ownershipCertificate',
|
|
235
258
|
PLAN_SHOWING_EXTENT_OF_ORDER: 'planShowingExtentOfOrder',
|
|
236
259
|
PLANNING_CONTRAVENTION_NOTICE: 'planningContraventionNotice',
|
|
@@ -391,6 +414,7 @@ export const APPEAL_SOURCE_SYSTEM = {
|
|
|
391
414
|
|
|
392
415
|
export const APPEAL_TYPE_OF_PLANNING_APPLICATION = {
|
|
393
416
|
ADVERTISEMENT: 'advertisement',
|
|
417
|
+
DISCONTINUANCE_NOTICE: 'discontinuance-notice',
|
|
394
418
|
FULL_APPEAL: 'full-appeal',
|
|
395
419
|
HOUSEHOLDER_PLANNING: 'householder-planning',
|
|
396
420
|
LAWFUL_DEVELOPMENT_CERTIFICATE: 'lawful-development-certificate',
|
package/src/enums.js
CHANGED
|
@@ -27,6 +27,19 @@ export const APPEAL_HAS_CASE_STATUS = Object.freeze({
|
|
|
27
27
|
WITHDRAWN: 'withdrawn',
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
+
export const APPEAL_HAS_TYPE_OF_PLANNING_APPLICATION = Object.freeze({
|
|
31
|
+
ADVERTISEMENT: 'advertisement',
|
|
32
|
+
FULL_APPEAL: 'full-appeal',
|
|
33
|
+
HOUSEHOLDER_PLANNING: 'householder-planning',
|
|
34
|
+
LAWFUL_DEVELOPMENT_CERTIFICATE: 'lawful-development-certificate',
|
|
35
|
+
LISTED_BUILDING: 'listed-building',
|
|
36
|
+
MINOR_COMMERCIAL_DEVELOPMENT: 'minor-commercial-development',
|
|
37
|
+
OUTLINE_PLANNING: 'outline-planning',
|
|
38
|
+
PRIOR_APPROVAL: 'prior-approval',
|
|
39
|
+
REMOVAL_OR_VARIATION_OF_CONDITIONS: 'removal-or-variation-of-conditions',
|
|
40
|
+
RESERVED_MATTERS: 'reserved-matters',
|
|
41
|
+
});
|
|
42
|
+
|
|
30
43
|
export const APPEAL_ALLOCATION_LEVEL = Object.freeze({
|
|
31
44
|
A: 'A',
|
|
32
45
|
B: 'B',
|
|
@@ -83,6 +96,7 @@ export const APPEAL_CASE_PROCEDURE = Object.freeze({
|
|
|
83
96
|
INQUIRY: 'inquiry',
|
|
84
97
|
WRITTEN: 'written',
|
|
85
98
|
WRITTEN_PART_1: 'writtenPart1',
|
|
99
|
+
WRITTEN_PART_2: 'writtenPart2',
|
|
86
100
|
});
|
|
87
101
|
|
|
88
102
|
export const APPEAL_CASE_STAGE = Object.freeze({
|
|
@@ -161,6 +175,12 @@ export const APPEAL_DEVELOPMENT_TYPE = Object.freeze({
|
|
|
161
175
|
OTHER_MINOR: 'other-minor',
|
|
162
176
|
});
|
|
163
177
|
|
|
178
|
+
export const APPEAL_DISCONTINUANCE_NOTICE_SERVED_REASON = Object.freeze({
|
|
179
|
+
DANGER_TO_MEMBERS_OF_THE_PUBLIC: 'danger-to-members-of-the-public',
|
|
180
|
+
OTHER: 'other',
|
|
181
|
+
RISK_OF_INJURY_TO_THE_AMENITY_OF_LOCALITY: 'risk-of-injury-to-the-amenity-of-locality',
|
|
182
|
+
});
|
|
183
|
+
|
|
164
184
|
export const APPEAL_DOCUMENT_TYPE = Object.freeze({
|
|
165
185
|
APPEAL_NOTIFICATION: 'appealNotification',
|
|
166
186
|
APPELLANT_CASE_CORRESPONDENCE: 'appellantCaseCorrespondence',
|
|
@@ -187,7 +207,9 @@ export const APPEAL_DOCUMENT_TYPE = Object.freeze({
|
|
|
187
207
|
DELEGATED_REPORT: 'delegatedReport',
|
|
188
208
|
DESIGN_ACCESS_STATEMENT: 'designAccessStatement',
|
|
189
209
|
DEVELOPMENT_PLAN_POLICIES: 'developmentPlanPolicies',
|
|
210
|
+
DISCONTINUANCE_NOTICE: 'discontinuanceNotice',
|
|
190
211
|
EIA_ENVIRONMENTAL_STATEMENT: 'eiaEnvironmentalStatement',
|
|
212
|
+
EIA_ENVIRONMENTAL_STATEMENT_APPELLANT: 'eiaEnvironmentalStatementAppellant',
|
|
191
213
|
EIA_SCOPING_OPINION: 'eiaScopingOpinion',
|
|
192
214
|
EIA_SCREENING_DIRECTION: 'eiaScreeningDirection',
|
|
193
215
|
EIA_SCREENING_OPINION: 'eiaScreeningOpinion',
|
|
@@ -231,6 +253,7 @@ export const APPEAL_DOCUMENT_TYPE = Object.freeze({
|
|
|
231
253
|
OTHER_PARTY_REPRESENTATIONS: 'otherPartyRepresentations',
|
|
232
254
|
OTHER_RELEVANT_MATTERS: 'otherRelevantMatters',
|
|
233
255
|
OTHER_RELEVANT_POLICIES: 'otherRelevantPolicies',
|
|
256
|
+
OTHER_SUPPORTING_INFORMATION_APPELLANT: 'otherSupportingInformationAppellant',
|
|
234
257
|
OWNERSHIP_CERTIFICATE: 'ownershipCertificate',
|
|
235
258
|
PLAN_SHOWING_EXTENT_OF_ORDER: 'planShowingExtentOfOrder',
|
|
236
259
|
PLANNING_CONTRAVENTION_NOTICE: 'planningContraventionNotice',
|
|
@@ -391,6 +414,7 @@ export const APPEAL_SOURCE_SYSTEM = Object.freeze({
|
|
|
391
414
|
|
|
392
415
|
export const APPEAL_TYPE_OF_PLANNING_APPLICATION = Object.freeze({
|
|
393
416
|
ADVERTISEMENT: 'advertisement',
|
|
417
|
+
DISCONTINUANCE_NOTICE: 'discontinuance-notice',
|
|
394
418
|
FULL_APPEAL: 'full-appeal',
|
|
395
419
|
HOUSEHOLDER_PLANNING: 'householder-planning',
|
|
396
420
|
LAWFUL_DEVELOPMENT_CERTIFICATE: 'lawful-development-certificate',
|
package/src/index.cjs
CHANGED
|
@@ -110,6 +110,19 @@ const APPEAL_HAS_CASE_STATUS = Object.freeze({
|
|
|
110
110
|
WITHDRAWN: 'withdrawn',
|
|
111
111
|
});
|
|
112
112
|
|
|
113
|
+
const APPEAL_HAS_TYPE_OF_PLANNING_APPLICATION = Object.freeze({
|
|
114
|
+
ADVERTISEMENT: 'advertisement',
|
|
115
|
+
FULL_APPEAL: 'full-appeal',
|
|
116
|
+
HOUSEHOLDER_PLANNING: 'householder-planning',
|
|
117
|
+
LAWFUL_DEVELOPMENT_CERTIFICATE: 'lawful-development-certificate',
|
|
118
|
+
LISTED_BUILDING: 'listed-building',
|
|
119
|
+
MINOR_COMMERCIAL_DEVELOPMENT: 'minor-commercial-development',
|
|
120
|
+
OUTLINE_PLANNING: 'outline-planning',
|
|
121
|
+
PRIOR_APPROVAL: 'prior-approval',
|
|
122
|
+
REMOVAL_OR_VARIATION_OF_CONDITIONS: 'removal-or-variation-of-conditions',
|
|
123
|
+
RESERVED_MATTERS: 'reserved-matters',
|
|
124
|
+
});
|
|
125
|
+
|
|
113
126
|
const APPEAL_ALLOCATION_LEVEL = Object.freeze({
|
|
114
127
|
A: 'A',
|
|
115
128
|
B: 'B',
|
|
@@ -166,6 +179,7 @@ const APPEAL_CASE_PROCEDURE = Object.freeze({
|
|
|
166
179
|
INQUIRY: 'inquiry',
|
|
167
180
|
WRITTEN: 'written',
|
|
168
181
|
WRITTEN_PART_1: 'writtenPart1',
|
|
182
|
+
WRITTEN_PART_2: 'writtenPart2',
|
|
169
183
|
});
|
|
170
184
|
|
|
171
185
|
const APPEAL_CASE_STAGE = Object.freeze({
|
|
@@ -244,6 +258,12 @@ const APPEAL_DEVELOPMENT_TYPE = Object.freeze({
|
|
|
244
258
|
OTHER_MINOR: 'other-minor',
|
|
245
259
|
});
|
|
246
260
|
|
|
261
|
+
const APPEAL_DISCONTINUANCE_NOTICE_SERVED_REASON = Object.freeze({
|
|
262
|
+
DANGER_TO_MEMBERS_OF_THE_PUBLIC: 'danger-to-members-of-the-public',
|
|
263
|
+
OTHER: 'other',
|
|
264
|
+
RISK_OF_INJURY_TO_THE_AMENITY_OF_LOCALITY: 'risk-of-injury-to-the-amenity-of-locality',
|
|
265
|
+
});
|
|
266
|
+
|
|
247
267
|
const APPEAL_DOCUMENT_TYPE = Object.freeze({
|
|
248
268
|
APPEAL_NOTIFICATION: 'appealNotification',
|
|
249
269
|
APPELLANT_CASE_CORRESPONDENCE: 'appellantCaseCorrespondence',
|
|
@@ -270,7 +290,9 @@ const APPEAL_DOCUMENT_TYPE = Object.freeze({
|
|
|
270
290
|
DELEGATED_REPORT: 'delegatedReport',
|
|
271
291
|
DESIGN_ACCESS_STATEMENT: 'designAccessStatement',
|
|
272
292
|
DEVELOPMENT_PLAN_POLICIES: 'developmentPlanPolicies',
|
|
293
|
+
DISCONTINUANCE_NOTICE: 'discontinuanceNotice',
|
|
273
294
|
EIA_ENVIRONMENTAL_STATEMENT: 'eiaEnvironmentalStatement',
|
|
295
|
+
EIA_ENVIRONMENTAL_STATEMENT_APPELLANT: 'eiaEnvironmentalStatementAppellant',
|
|
274
296
|
EIA_SCOPING_OPINION: 'eiaScopingOpinion',
|
|
275
297
|
EIA_SCREENING_DIRECTION: 'eiaScreeningDirection',
|
|
276
298
|
EIA_SCREENING_OPINION: 'eiaScreeningOpinion',
|
|
@@ -314,6 +336,7 @@ const APPEAL_DOCUMENT_TYPE = Object.freeze({
|
|
|
314
336
|
OTHER_PARTY_REPRESENTATIONS: 'otherPartyRepresentations',
|
|
315
337
|
OTHER_RELEVANT_MATTERS: 'otherRelevantMatters',
|
|
316
338
|
OTHER_RELEVANT_POLICIES: 'otherRelevantPolicies',
|
|
339
|
+
OTHER_SUPPORTING_INFORMATION_APPELLANT: 'otherSupportingInformationAppellant',
|
|
317
340
|
OWNERSHIP_CERTIFICATE: 'ownershipCertificate',
|
|
318
341
|
PLAN_SHOWING_EXTENT_OF_ORDER: 'planShowingExtentOfOrder',
|
|
319
342
|
PLANNING_CONTRAVENTION_NOTICE: 'planningContraventionNotice',
|
|
@@ -474,6 +497,7 @@ const APPEAL_SOURCE_SYSTEM = Object.freeze({
|
|
|
474
497
|
|
|
475
498
|
const APPEAL_TYPE_OF_PLANNING_APPLICATION = Object.freeze({
|
|
476
499
|
ADVERTISEMENT: 'advertisement',
|
|
500
|
+
DISCONTINUANCE_NOTICE: 'discontinuance-notice',
|
|
477
501
|
FULL_APPEAL: 'full-appeal',
|
|
478
502
|
HOUSEHOLDER_PLANNING: 'householder-planning',
|
|
479
503
|
LAWFUL_DEVELOPMENT_CERTIFICATE: 'lawful-development-certificate',
|
|
@@ -911,6 +935,7 @@ exports.APPEAL_CASE_STATUS = APPEAL_CASE_STATUS;
|
|
|
911
935
|
exports.APPEAL_CASE_TYPE = APPEAL_CASE_TYPE;
|
|
912
936
|
exports.APPEAL_CASE_VALIDATION_OUTCOME = APPEAL_CASE_VALIDATION_OUTCOME;
|
|
913
937
|
exports.APPEAL_DEVELOPMENT_TYPE = APPEAL_DEVELOPMENT_TYPE;
|
|
938
|
+
exports.APPEAL_DISCONTINUANCE_NOTICE_SERVED_REASON = APPEAL_DISCONTINUANCE_NOTICE_SERVED_REASON;
|
|
914
939
|
exports.APPEAL_DOCUMENT_TYPE = APPEAL_DOCUMENT_TYPE;
|
|
915
940
|
exports.APPEAL_EIA_DEVELOPMENT_DESCRIPTION = APPEAL_EIA_DEVELOPMENT_DESCRIPTION;
|
|
916
941
|
exports.APPEAL_EIA_ENVIRONMENTAL_IMPACT_SCHEDULE = APPEAL_EIA_ENVIRONMENTAL_IMPACT_SCHEDULE;
|
|
@@ -919,6 +944,7 @@ exports.APPEAL_EVENT_TYPE = APPEAL_EVENT_TYPE;
|
|
|
919
944
|
exports.APPEAL_HAS_CASE_DECISION_OUTCOME = APPEAL_HAS_CASE_DECISION_OUTCOME;
|
|
920
945
|
exports.APPEAL_HAS_CASE_PROCEDURE = APPEAL_HAS_CASE_PROCEDURE;
|
|
921
946
|
exports.APPEAL_HAS_CASE_STATUS = APPEAL_HAS_CASE_STATUS;
|
|
947
|
+
exports.APPEAL_HAS_TYPE_OF_PLANNING_APPLICATION = APPEAL_HAS_TYPE_OF_PLANNING_APPLICATION;
|
|
922
948
|
exports.APPEAL_INVALID_OR_INCOMPLETE_DETAILS = APPEAL_INVALID_OR_INCOMPLETE_DETAILS;
|
|
923
949
|
exports.APPEAL_KNOWS_ALL_OWNERS = APPEAL_KNOWS_ALL_OWNERS;
|
|
924
950
|
exports.APPEAL_KNOWS_OTHER_OWNERS = APPEAL_KNOWS_OTHER_OWNERS;
|
package/src/schemas.d.ts
CHANGED
|
@@ -175,6 +175,9 @@ export interface AppealDocument {
|
|
|
175
175
|
| 'groundISupporting'
|
|
176
176
|
| 'groundJSupporting'
|
|
177
177
|
| 'groundKSupporting'
|
|
178
|
+
| 'discontinuanceNotice'
|
|
179
|
+
| 'otherSupportingInformationAppellant'
|
|
180
|
+
| 'eiaEnvironmentalStatementAppellant'
|
|
178
181
|
| null;
|
|
179
182
|
/**
|
|
180
183
|
* The system mastering the metadata for the current document
|
|
@@ -972,7 +975,7 @@ export type AppealS78Case = (GridReference | SiteAddress) & {
|
|
|
972
975
|
/**
|
|
973
976
|
* The type of procedure for the appeal
|
|
974
977
|
*/
|
|
975
|
-
caseProcedure: 'written' | 'hearing' | 'inquiry' | 'writtenPart1' | null;
|
|
978
|
+
caseProcedure: 'written' | 'hearing' | 'inquiry' | 'writtenPart1' | 'writtenPart2' | null;
|
|
976
979
|
/**
|
|
977
980
|
* A unique identifier for the Local Planning Authority
|
|
978
981
|
*/
|
|
@@ -1460,14 +1463,14 @@ export type AppealS78Case = (GridReference | SiteAddress) & {
|
|
|
1460
1463
|
appellantStatementDueDate?: string | null;
|
|
1461
1464
|
appellantStatementSubmittedDate: string | null;
|
|
1462
1465
|
appellantProofsSubmittedDate: string | null;
|
|
1463
|
-
finalCommentsDueDate
|
|
1464
|
-
interestedPartyRepsDueDate
|
|
1466
|
+
finalCommentsDueDate?: string | null;
|
|
1467
|
+
interestedPartyRepsDueDate?: string | null;
|
|
1465
1468
|
lpaCommentsSubmittedDate: string | null;
|
|
1466
1469
|
lpaProofsSubmittedDate: string | null;
|
|
1467
1470
|
lpaStatementSubmittedDate: string | null;
|
|
1468
|
-
proofsOfEvidenceDueDate
|
|
1471
|
+
proofsOfEvidenceDueDate?: string | null;
|
|
1469
1472
|
siteNoticesSentDate: string | null;
|
|
1470
|
-
statementDueDate
|
|
1473
|
+
statementDueDate?: string | null;
|
|
1471
1474
|
/**
|
|
1472
1475
|
* The date of the Case Management Conference (CMC)
|
|
1473
1476
|
*/
|
|
@@ -1491,6 +1494,7 @@ export type AppealS78Case = (GridReference | SiteAddress) & {
|
|
|
1491
1494
|
| 'minor-commercial-development'
|
|
1492
1495
|
| 'advertisement'
|
|
1493
1496
|
| 'lawful-development-certificate'
|
|
1497
|
+
| 'discontinuance-notice'
|
|
1494
1498
|
| null;
|
|
1495
1499
|
developmentType:
|
|
1496
1500
|
| 'householder'
|
|
@@ -1626,11 +1630,11 @@ export type AppealS78Case = (GridReference | SiteAddress) & {
|
|
|
1626
1630
|
*/
|
|
1627
1631
|
previousPlanningPermissionGranted?: boolean | null;
|
|
1628
1632
|
/**
|
|
1629
|
-
* The date on which an
|
|
1633
|
+
* The date on which an Enforcement Notice or Discontinuance Notice was issued
|
|
1630
1634
|
*/
|
|
1631
1635
|
issueDateOfEnforcementNotice?: string | null;
|
|
1632
1636
|
/**
|
|
1633
|
-
* The effective date of an
|
|
1637
|
+
* The effective date of an Enforcement Notice or Discontinuance Notice
|
|
1634
1638
|
*/
|
|
1635
1639
|
effectiveDateOfEnforcementNotice?: string | null;
|
|
1636
1640
|
/**
|
|
@@ -1691,8 +1695,49 @@ export type AppealS78Case = (GridReference | SiteAddress) & {
|
|
|
1691
1695
|
* Reason(s) why LPA consider the appeal invalid
|
|
1692
1696
|
*/
|
|
1693
1697
|
lpaAppealInvalidReasons?: string | null;
|
|
1698
|
+
discontinuanceNoticeServedReason?:
|
|
1699
|
+
| 'risk-of-injury-to-the-amenity-of-locality'
|
|
1700
|
+
| 'danger-to-members-of-the-public'
|
|
1701
|
+
| 'other'
|
|
1702
|
+
| null;
|
|
1703
|
+
/**
|
|
1704
|
+
* Other reason for serving a discontinuance notice, for discontinuanceNoticeServedReason: other
|
|
1705
|
+
*/
|
|
1706
|
+
discontinuanceNoticeServedOtherReason?: string | null;
|
|
1707
|
+
wasRetrospectivePlanningApplicationMade?: boolean | null;
|
|
1708
|
+
/**
|
|
1709
|
+
* Reason for appeal as provided by the appellant (Expedited Appeals)
|
|
1710
|
+
*/
|
|
1711
|
+
reasonForAppealAppellant?: string | null;
|
|
1712
|
+
/**
|
|
1713
|
+
* Indicates if the screening opinion specifies that an EIA is required (Expedited Appeals)
|
|
1714
|
+
*/
|
|
1715
|
+
screeningOpinionIndicatesEiaRequired?: boolean | null;
|
|
1716
|
+
/**
|
|
1717
|
+
* Significant changes affecting the application as reported by the appellant (Expedited Appeals)
|
|
1718
|
+
*/
|
|
1719
|
+
significantChangesAffectingApplicationAppellant?:
|
|
1720
|
+
| {
|
|
1721
|
+
value: SignificantChangesAffectingApplication;
|
|
1722
|
+
comment?: string | null;
|
|
1723
|
+
}[]
|
|
1724
|
+
| null;
|
|
1725
|
+
/**
|
|
1726
|
+
* Significant changes affecting the application as reported by the LPA (Expedited Appeals)
|
|
1727
|
+
*/
|
|
1728
|
+
significantChangesAffectingApplicationLpa?:
|
|
1729
|
+
| {
|
|
1730
|
+
value: SignificantChangesAffectingApplication;
|
|
1731
|
+
comment?: string | null;
|
|
1732
|
+
}[]
|
|
1733
|
+
| null;
|
|
1694
1734
|
[k: string]: unknown;
|
|
1695
1735
|
};
|
|
1736
|
+
export type SignificantChangesAffectingApplication =
|
|
1737
|
+
| 'adopted-a-new-local-plan'
|
|
1738
|
+
| 'national-policy-change'
|
|
1739
|
+
| 'court-judgement'
|
|
1740
|
+
| 'other';
|
|
1696
1741
|
|
|
1697
1742
|
export interface GridReference {
|
|
1698
1743
|
siteGridReferenceEasting: string;
|
|
@@ -3877,7 +3922,8 @@ export interface AppellantSubmissionCommand {
|
|
|
3877
3922
|
| 'groundKSupporting'
|
|
3878
3923
|
| 'groundAFeeReceipt'
|
|
3879
3924
|
| null
|
|
3880
|
-
| 'environmentalAssessment'
|
|
3925
|
+
| 'environmentalAssessment'
|
|
3926
|
+
| 'eiaEnvironmentalStatement';
|
|
3881
3927
|
[k: string]: unknown;
|
|
3882
3928
|
}[];
|
|
3883
3929
|
/**
|
|
@@ -247,7 +247,27 @@ describe(schema, () => {
|
|
|
247
247
|
assert.strictEqual(validationResult, false);
|
|
248
248
|
});
|
|
249
249
|
|
|
250
|
-
|
|
250
|
+
it('should enforce other for discontinuanceNoticeServedReason', () => {
|
|
251
|
+
const test = structuredClone(appealS78);
|
|
252
|
+
test.discontinuanceNoticeServedReason = 'other';
|
|
253
|
+
test.discontinuanceNoticeServedOtherReason = '';
|
|
254
|
+
const validationResult = ajv.validate(schema, test);
|
|
255
|
+
assert.strictEqual(validationResult, false);
|
|
256
|
+
|
|
257
|
+
test.discontinuanceNoticeServedOtherReason = null;
|
|
258
|
+
const validationResult2 = ajv.validate(schema, test);
|
|
259
|
+
assert.strictEqual(validationResult2, false);
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
it('should allow no reason for non other discontinuanceNoticeServedOtherReason', () => {
|
|
263
|
+
const test = structuredClone(appealS78);
|
|
264
|
+
test.discontinuanceNoticeServedReason = 'danger-to-members-of-the-public';
|
|
265
|
+
test.discontinuanceNoticeServedOtherReason = null;
|
|
266
|
+
const validationResult = ajv.validate(schema, test);
|
|
267
|
+
assert.strictEqual(validationResult, true);
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
const groupBAppealTypes = ['C', 'F', 'G', 'H', 'W', 'X', 'Y', 'Z'];
|
|
251
271
|
groupBAppealTypes.forEach((appealType) => {
|
|
252
272
|
it(`should support group B appeal type ${appealType}`, () => {
|
|
253
273
|
const test = structuredClone(appealS78);
|