@planning-inspectorate/data-model 2.7.0 → 2.9.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 (40) hide show
  1. package/docs/appeal-document.md +86 -63
  2. package/package.json +1 -1
  3. package/pins_data_model/models/model_appeal_document.py +24 -1
  4. package/pins_data_model/models/model_appeal_event.py +1 -1
  5. package/pins_data_model/models/model_appeal_event_estimate.py +1 -1
  6. package/pins_data_model/models/model_appeal_has.py +1 -1
  7. package/pins_data_model/models/model_appeal_representation.py +1 -1
  8. package/pins_data_model/models/model_appeal_s78.py +1 -1
  9. package/pins_data_model/models/model_dart_response.py +1 -1
  10. package/pins_data_model/models/model_entraid.py +1 -1
  11. package/pins_data_model/models/model_folder.py +1 -1
  12. package/pins_data_model/models/model_gettimesheets_response.py +1 -1
  13. package/pins_data_model/models/model_listed_building.py +1 -1
  14. package/pins_data_model/models/model_listed_buildings.py +1 -1
  15. package/pins_data_model/models/model_nsip_document.py +1 -1
  16. package/pins_data_model/models/model_nsip_exam_timetable.py +1 -1
  17. package/pins_data_model/models/model_nsip_invoice.py +1 -1
  18. package/pins_data_model/models/model_nsip_meeting.py +1 -1
  19. package/pins_data_model/models/model_nsip_project.py +1 -1
  20. package/pins_data_model/models/model_nsip_project_update.py +1 -1
  21. package/pins_data_model/models/model_nsip_representation.py +1 -1
  22. package/pins_data_model/models/model_nsip_subscription.py +1 -1
  23. package/pins_data_model/models/model_pins_inspector.py +1 -1
  24. package/pins_data_model/models/model_pins_lpa.py +1 -1
  25. package/pins_data_model/models/model_s51_advice.py +1 -1
  26. package/pins_data_model/models/model_service_user.py +1 -1
  27. package/schemas/appeal-document.schema.json +23 -0
  28. package/schemas/commands/appeals-components/environmental-impact-assessment.schema.json +68 -0
  29. package/schemas/commands/appeals-components/infrastructure-levy.schema.json +40 -0
  30. package/schemas/commands/appeals-components/lpa-questionnaire-enforcement.schema.json +73 -0
  31. package/schemas/commands/appeals-components/lpa-questionnaire-s78.schema.json +1 -137
  32. package/schemas/commands/appeals-components/site-designations-protections.schema.json +50 -0
  33. package/schemas/commands/appellant-submission.schema.json +1 -1
  34. package/schemas/commands/lpa-questionnaire.schema.json +27 -2
  35. package/src/enums.cjs +23 -0
  36. package/src/enums.d.ts +23 -0
  37. package/src/enums.js +23 -0
  38. package/src/index.cjs +23 -0
  39. package/src/schemas.d.ts +137 -74
  40. package/tests/appeals/commands/enforcement-questionnaire.test.js +109 -0
@@ -535,69 +535,92 @@ The type of document, used for exchange, migrations and consumption from the app
535
535
 
536
536
  **enum**: the value of this property must be equal to one of the following values:
537
537
 
538
- | Value | Explanation |
539
- | :-------------------------------- | :---------- |
540
- | `"appellantCaseCorrespondence"` | |
541
- | `"appellantCaseWithdrawalLetter"` | |
542
- | `"appellantCostsApplication"` | |
543
- | `"appellantCostsCorrespondence"` | |
544
- | `"appellantCostsWithdrawal"` | |
545
- | `"appellantStatement"` | |
546
- | `"applicationDecisionLetter"` | |
547
- | `"changedDescription"` | |
548
- | `"originalApplicationForm"` | |
549
- | `"whoNotified"` | |
550
- | `"whoNotifiedSiteNotice"` | |
551
- | `"whoNotifiedLetterToNeighbours"` | |
552
- | `"whoNotifiedPressAdvert"` | |
553
- | `"conservationMap"` | |
554
- | `"lpaCaseCorrespondence"` | |
555
- | `"lpaCostsApplication"` | |
556
- | `"lpaCostsCorrespondence"` | |
557
- | `"lpaCostsWithdrawal"` | |
558
- | `"otherPartyRepresentations"` | |
559
- | `"planningOfficerReport"` | |
560
- | `"appellantCostsDecisionLetter"` | |
561
- | `"lpaCostsDecisionLetter"` | |
562
- | `"caseDecisionLetter"` | |
563
- | `"crossTeamCorrespondence"` | |
564
- | `"inspectorCorrespondence"` | |
565
- | `"mainPartyCorrespondence"` | |
566
- | `"uncategorised"` | |
567
- | `"designAccessStatement"` | |
568
- | `"plansDrawings"` | |
569
- | `"newPlansDrawings"` | |
570
- | `"planningObligation"` | |
571
- | `"ownershipCertificate"` | |
572
- | `"otherNewDocuments"` | |
573
- | `"statementCommonGround"` | |
574
- | `"communityInfrastructureLevy"` | |
575
- | `"supplementaryPlanning"` | |
576
- | `"otherRelevantPolicies"` | |
577
- | `"emergingPlan"` | |
578
- | `"developmentPlanPolicies"` | |
579
- | `"consultationResponses"` | |
580
- | `"eiaEnvironmentalStatement"` | |
581
- | `"eiaScreeningDirection"` | |
582
- | `"eiaScreeningOpinion"` | |
583
- | `"eiaScopingOpinion"` | |
584
- | `"definitiveMapStatement"` | |
585
- | `"treePreservationPlan"` | |
586
- | `"interestedPartyComment"` | |
587
- | `"lpaStatement"` | |
588
- | `"rule6Statement"` | |
589
- | `"appellantFinalComment"` | |
590
- | `"lpaFinalComment"` | |
591
- | `"appellantProofOfEvidence"` | |
592
- | `"appellantWitnessesEvidence"` | |
593
- | `"lpaProofOfEvidence"` | |
594
- | `"lpaWitnessesEvidence"` | |
595
- | `"rule6ProofOfEvidence"` | |
596
- | `"rule6WitnessesEvidence"` | |
597
- | `"environmentalAssessment"` | |
598
- | `"appealNotification"` | |
599
- | `"historicEnglandConsultation"` | |
600
- | `null` | |
538
+ | Value | Explanation |
539
+ | :----------------------------------- | :---------- |
540
+ | `"appellantCaseCorrespondence"` | |
541
+ | `"appellantCaseWithdrawalLetter"` | |
542
+ | `"appellantCostsApplication"` | |
543
+ | `"appellantCostsCorrespondence"` | |
544
+ | `"appellantCostsWithdrawal"` | |
545
+ | `"appellantStatement"` | |
546
+ | `"applicationDecisionLetter"` | |
547
+ | `"changedDescription"` | |
548
+ | `"originalApplicationForm"` | |
549
+ | `"whoNotified"` | |
550
+ | `"whoNotifiedSiteNotice"` | |
551
+ | `"whoNotifiedLetterToNeighbours"` | |
552
+ | `"whoNotifiedPressAdvert"` | |
553
+ | `"conservationMap"` | |
554
+ | `"lpaCaseCorrespondence"` | |
555
+ | `"lpaCostsApplication"` | |
556
+ | `"lpaCostsCorrespondence"` | |
557
+ | `"lpaCostsWithdrawal"` | |
558
+ | `"otherPartyRepresentations"` | |
559
+ | `"planningOfficerReport"` | |
560
+ | `"appellantCostsDecisionLetter"` | |
561
+ | `"lpaCostsDecisionLetter"` | |
562
+ | `"caseDecisionLetter"` | |
563
+ | `"crossTeamCorrespondence"` | |
564
+ | `"inspectorCorrespondence"` | |
565
+ | `"mainPartyCorrespondence"` | |
566
+ | `"uncategorised"` | |
567
+ | `"designAccessStatement"` | |
568
+ | `"plansDrawings"` | |
569
+ | `"newPlansDrawings"` | |
570
+ | `"planningObligation"` | |
571
+ | `"ownershipCertificate"` | |
572
+ | `"otherNewDocuments"` | |
573
+ | `"statementCommonGround"` | |
574
+ | `"communityInfrastructureLevy"` | |
575
+ | `"supplementaryPlanning"` | |
576
+ | `"otherRelevantPolicies"` | |
577
+ | `"emergingPlan"` | |
578
+ | `"developmentPlanPolicies"` | |
579
+ | `"consultationResponses"` | |
580
+ | `"eiaEnvironmentalStatement"` | |
581
+ | `"eiaScreeningDirection"` | |
582
+ | `"eiaScreeningOpinion"` | |
583
+ | `"eiaScopingOpinion"` | |
584
+ | `"definitiveMapStatement"` | |
585
+ | `"treePreservationPlan"` | |
586
+ | `"interestedPartyComment"` | |
587
+ | `"lpaStatement"` | |
588
+ | `"rule6Statement"` | |
589
+ | `"appellantFinalComment"` | |
590
+ | `"lpaFinalComment"` | |
591
+ | `"appellantProofOfEvidence"` | |
592
+ | `"appellantWitnessesEvidence"` | |
593
+ | `"lpaProofOfEvidence"` | |
594
+ | `"lpaWitnessesEvidence"` | |
595
+ | `"rule6ProofOfEvidence"` | |
596
+ | `"rule6WitnessesEvidence"` | |
597
+ | `"environmentalAssessment"` | |
598
+ | `"appealNotification"` | |
599
+ | `"historicEnglandConsultation"` | |
600
+ | `"conservationDocuments"` | |
601
+ | `"planShowingExtentOfOrder"` | |
602
+ | `"definitiveMapAndStatementExtract"` | |
603
+ | `"stopNotice"` | |
604
+ | `"article4Direction"` | |
605
+ | `"enforcementList"` | |
606
+ | `"localDevelopmentOrder"` | |
607
+ | `"planningPermission"` | |
608
+ | `"lpaEnforcementNotice"` | |
609
+ | `"lpaEnforcementNoticePlan"` | |
610
+ | `"planningContraventionNotice"` | |
611
+ | `"priorCorrespondenceWithPINS"` | |
612
+ | `"enforcementNotice"` | |
613
+ | `"enforcementNoticePlan"` | |
614
+ | `"groundASupporting"` | |
615
+ | `"groundBSupporting"` | |
616
+ | `"groundCSupporting"` | |
617
+ | `"groundDSupporting"` | |
618
+ | `"groundESupporting"` | |
619
+ | `"groundFSupporting"` | |
620
+ | `"groundGSupporting"` | |
621
+ | `"groundAFeeReceipt"` | |
622
+ | `"delegatedReport"` | |
623
+ | `null` | |
601
624
 
602
625
  ## sourceSystem
603
626
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@planning-inspectorate/data-model",
3
- "version": "2.7.0",
3
+ "version": "2.9.0",
4
4
  "description": "JSON Schemas for the Planning Inspectorate's Data Model",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: appeal-document.schema.json
3
- # timestamp: 2026-01-06T14:32:16+00:00
3
+ # timestamp: 2026-01-12T14:59:51+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -119,6 +119,29 @@ class DocumentType(Enum):
119
119
  environmentalAssessment = "environmentalAssessment"
120
120
  appealNotification = "appealNotification"
121
121
  historicEnglandConsultation = "historicEnglandConsultation"
122
+ conservationDocuments = "conservationDocuments"
123
+ planShowingExtentOfOrder = "planShowingExtentOfOrder"
124
+ definitiveMapAndStatementExtract = "definitiveMapAndStatementExtract"
125
+ stopNotice = "stopNotice"
126
+ article4Direction = "article4Direction"
127
+ enforcementList = "enforcementList"
128
+ localDevelopmentOrder = "localDevelopmentOrder"
129
+ planningPermission = "planningPermission"
130
+ lpaEnforcementNotice = "lpaEnforcementNotice"
131
+ lpaEnforcementNoticePlan = "lpaEnforcementNoticePlan"
132
+ planningContraventionNotice = "planningContraventionNotice"
133
+ priorCorrespondenceWithPINS = "priorCorrespondenceWithPINS"
134
+ enforcementNotice = "enforcementNotice"
135
+ enforcementNoticePlan = "enforcementNoticePlan"
136
+ groundASupporting = "groundASupporting"
137
+ groundBSupporting = "groundBSupporting"
138
+ groundCSupporting = "groundCSupporting"
139
+ groundDSupporting = "groundDSupporting"
140
+ groundESupporting = "groundESupporting"
141
+ groundFSupporting = "groundFSupporting"
142
+ groundGSupporting = "groundGSupporting"
143
+ groundAFeeReceipt = "groundAFeeReceipt"
144
+ delegatedReport = "delegatedReport"
122
145
  NoneType_None = None
123
146
 
124
147
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: appeal-event.schema.json
3
- # timestamp: 2026-01-06T14:32:16+00:00
3
+ # timestamp: 2026-01-12T14:59:50+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: appeal-event-estimate.schema.json
3
- # timestamp: 2026-01-06T14:32:16+00:00
3
+ # timestamp: 2026-01-12T14:59:50+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: appeal-has.schema.json
3
- # timestamp: 2026-01-06T14:32:17+00:00
3
+ # timestamp: 2026-01-12T14:59:51+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: appeal-representation.schema.json
3
- # timestamp: 2026-01-06T14:32:17+00:00
3
+ # timestamp: 2026-01-12T14:59:51+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: appeal-s78.schema.json
3
- # timestamp: 2026-01-06T14:32:18+00:00
3
+ # timestamp: 2026-01-12T14:59:51+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: dart-response.schema.json
3
- # timestamp: 2026-01-06T14:32:18+00:00
3
+ # timestamp: 2026-01-12T14:59:50+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: entraid.schema.json
3
- # timestamp: 2026-01-06T14:32:18+00:00
3
+ # timestamp: 2026-01-12T14:59:50+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: folder.schema.json
3
- # timestamp: 2026-01-06T14:32:18+00:00
3
+ # timestamp: 2026-01-12T14:59:50+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: gettimesheets-response.schema.json
3
- # timestamp: 2026-01-06T14:32:18+00:00
3
+ # timestamp: 2026-01-12T14:59:50+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: listed-building.schema.json
3
- # timestamp: 2026-01-06T14:32:18+00:00
3
+ # timestamp: 2026-01-12T14:59:50+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: listed-buildings.schema.json
3
- # timestamp: 2026-01-06T14:32:18+00:00
3
+ # timestamp: 2026-01-12T14:59:51+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: nsip-document.schema.json
3
- # timestamp: 2026-01-06T14:32:18+00:00
3
+ # timestamp: 2026-01-12T14:59:50+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: nsip-exam-timetable.schema.json
3
- # timestamp: 2026-01-06T14:32:18+00:00
3
+ # timestamp: 2026-01-12T14:59:51+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: nsip-invoice.schema.json
3
- # timestamp: 2026-01-06T14:32:18+00:00
3
+ # timestamp: 2026-01-12T14:59:50+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: nsip-meeting.schema.json
3
- # timestamp: 2026-01-06T14:32:18+00:00
3
+ # timestamp: 2026-01-12T14:59:50+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: nsip-project.schema.json
3
- # timestamp: 2026-01-06T14:32:19+00:00
3
+ # timestamp: 2026-01-12T14:59:50+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: nsip-project-update.schema.json
3
- # timestamp: 2026-01-06T14:32:18+00:00
3
+ # timestamp: 2026-01-12T14:59:50+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: nsip-representation.schema.json
3
- # timestamp: 2026-01-06T14:32:19+00:00
3
+ # timestamp: 2026-01-12T14:59:51+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: nsip-subscription.schema.json
3
- # timestamp: 2026-01-06T14:32:19+00:00
3
+ # timestamp: 2026-01-12T14:59:50+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: pins-inspector.schema.json
3
- # timestamp: 2026-01-06T14:32:19+00:00
3
+ # timestamp: 2026-01-12T14:59:50+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: pins-lpa.schema.json
3
- # timestamp: 2026-01-06T14:32:19+00:00
3
+ # timestamp: 2026-01-12T14:59:50+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: s51-advice.schema.json
3
- # timestamp: 2026-01-06T14:32:19+00:00
3
+ # timestamp: 2026-01-12T14:59:50+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: service-user.schema.json
3
- # timestamp: 2026-01-06T14:32:19+00:00
3
+ # timestamp: 2026-01-12T14:59:50+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -197,6 +197,29 @@
197
197
  "environmentalAssessment",
198
198
  "appealNotification",
199
199
  "historicEnglandConsultation",
200
+ "conservationDocuments",
201
+ "planShowingExtentOfOrder",
202
+ "definitiveMapAndStatementExtract",
203
+ "stopNotice",
204
+ "article4Direction",
205
+ "enforcementList",
206
+ "localDevelopmentOrder",
207
+ "planningPermission",
208
+ "lpaEnforcementNotice",
209
+ "lpaEnforcementNoticePlan",
210
+ "planningContraventionNotice",
211
+ "priorCorrespondenceWithPINS",
212
+ "enforcementNotice",
213
+ "enforcementNoticePlan",
214
+ "groundASupporting",
215
+ "groundBSupporting",
216
+ "groundCSupporting",
217
+ "groundDSupporting",
218
+ "groundESupporting",
219
+ "groundFSupporting",
220
+ "groundGSupporting",
221
+ "groundAFeeReceipt",
222
+ "delegatedReport",
200
223
  null
201
224
  ],
202
225
  "description": "The type of document, used for exchange, migrations and consumption from the appeal back-office system"
@@ -0,0 +1,68 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "commands/appeals-components/environmental-impact-assessment.schema.json",
4
+ "title": "Environmental impact assessment properties",
5
+ "description": "Schema defining environmental impact assessment properties",
6
+ "type": "object",
7
+ "additionalProperties": true,
8
+ "required": [
9
+ "eiaEnvironmentalImpactSchedule",
10
+ "eiaDevelopmentDescription",
11
+ "eiaSensitiveAreaDetails",
12
+ "eiaColumnTwoThreshold",
13
+ "eiaScreeningOpinion",
14
+ "eiaRequiresEnvironmentalStatement",
15
+ "eiaCompletedEnvironmentalStatement"
16
+ ],
17
+ "allOf": [
18
+ {
19
+ "properties": {
20
+ "eiaEnvironmentalImpactSchedule": {
21
+ "type": ["string", "null"],
22
+ "enum": ["schedule-1", "schedule-2", null],
23
+ "description": "The impact schedule from EIA"
24
+ },
25
+ "eiaDevelopmentDescription": {
26
+ "type": ["string", "null"],
27
+ "enum": [
28
+ "agriculture-aquaculture",
29
+ "change-extensions",
30
+ "chemical-industry",
31
+ "energy-industry",
32
+ "extractive-industry",
33
+ "food-industry",
34
+ "infrastructure-projects",
35
+ "mineral-industry",
36
+ "other-projects",
37
+ "production-processing-of-metals",
38
+ "rubber-industry",
39
+ "textile-industries",
40
+ "tourism-leisure",
41
+ null
42
+ ],
43
+ "description": "The development description from EIA"
44
+ },
45
+ "eiaSensitiveAreaDetails": {
46
+ "type": ["string", "null"],
47
+ "description": "The sensitive area details from EIA"
48
+ },
49
+ "eiaColumnTwoThreshold": {
50
+ "type": ["boolean", "null"],
51
+ "description": "EIA specific threshold"
52
+ },
53
+ "eiaScreeningOpinion": {
54
+ "type": ["boolean", "null"],
55
+ "description": "EIA screening opinion"
56
+ },
57
+ "eiaRequiresEnvironmentalStatement": {
58
+ "type": ["boolean", "null"],
59
+ "description": "EIA environmental statement required"
60
+ },
61
+ "eiaCompletedEnvironmentalStatement": {
62
+ "type": ["boolean", "null"],
63
+ "description": "EIA completed environmental statement required"
64
+ }
65
+ }
66
+ }
67
+ ]
68
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "commands/appeals-components/infrastructure-levy.schema.json",
4
+ "title": "Infrastructure levy properties",
5
+ "description": "Schema defining infrastructure levy properties",
6
+ "type": "object",
7
+ "additionalProperties": true,
8
+ "required": [
9
+ "hasInfrastructureLevy",
10
+ "isInfrastructureLevyFormallyAdopted",
11
+ "infrastructureLevyAdoptedDate",
12
+ "infrastructureLevyExpectedDate"
13
+ ],
14
+ "allOf": [
15
+ {
16
+ "properties": {
17
+ "hasInfrastructureLevy": {
18
+ "type": ["boolean", "null"],
19
+ "description": "Indicates the existence of an infrastructure levy"
20
+ },
21
+ "isInfrastructureLevyFormallyAdopted": {
22
+ "type": ["boolean", "null"],
23
+ "description": "Indicates if the infrastructure levy is formally adopted"
24
+ },
25
+ "infrastructureLevyAdoptedDate": {
26
+ "type": ["string", "null"],
27
+ "format": "date-time",
28
+ "examples": ["2023-07-27T20:30:00.000Z"],
29
+ "description": "The date of the infrastructure levy adoption"
30
+ },
31
+ "infrastructureLevyExpectedDate": {
32
+ "type": ["string", "null"],
33
+ "format": "date-time",
34
+ "examples": ["2023-07-27T20:30:00.000Z"],
35
+ "description": "The expected date of the infrastructure levy"
36
+ }
37
+ }
38
+ }
39
+ ]
40
+ }
@@ -0,0 +1,73 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "commands/appeals-components/lpa-questionnaire-enforcement.schema.json",
4
+ "title": "LPAQ Enforcement submission properties",
5
+ "description": "Schema defining any enfrocement specific properties for LPAQ submissions",
6
+ "type": "object",
7
+ "additionalProperties": true,
8
+ "required": [
9
+ "noticeRelatesToBuildingEngineeringMiningOther",
10
+ "siteAreaSquareMetres",
11
+ "hasAllegedBreachArea",
12
+ "doesAllegedBreachCreateFloorSpace",
13
+ "changeOfUseRefuseOrWaste",
14
+ "changeOfUseMineralExtraction",
15
+ "changeOfUseMineralStorage",
16
+ "relatesToErectionOfBuildingOrBuildings",
17
+ "relatesToBuildingWithAgriculturalPurpose",
18
+ "relatesToBuildingSingleDwellingHouse",
19
+ "affectedTrunkRoadName",
20
+ "isSiteOnCrownLand",
21
+ "article4AffectedDevelopmentRights"
22
+ ],
23
+ "allOf": [
24
+ {
25
+ "properties": {
26
+ "noticeRelatesToBuildingEngineeringMiningOther": {
27
+ "type": ["boolean", "null"]
28
+ },
29
+ "siteAreaSquareMetres": {
30
+ "type": ["number", "null"],
31
+ "examples": [45.7],
32
+ "description": "The site area, in square meters"
33
+ },
34
+ "hasAllegedBreachArea": {
35
+ "type": ["boolean", "null"]
36
+ },
37
+ "doesAllegedBreachCreateFloorSpace": {
38
+ "type": ["boolean", "null"]
39
+ },
40
+ "changeOfUseRefuseOrWaste": {
41
+ "type": ["boolean", "null"]
42
+ },
43
+ "changeOfUseMineralExtraction": {
44
+ "type": ["boolean", "null"]
45
+ },
46
+ "changeOfUseMineralStorage": {
47
+ "type": ["boolean", "null"]
48
+ },
49
+ "relatesToErectionOfBuildingOrBuildings": {
50
+ "type": ["boolean", "null"]
51
+ },
52
+ "relatesToBuildingWithAgriculturalPurpose": {
53
+ "type": ["boolean", "null"]
54
+ },
55
+ "relatesToBuildingSingleDwellingHouse": {
56
+ "type": ["boolean", "null"]
57
+ },
58
+ "affectedTrunkRoadName": {
59
+ "type": ["string", "null"],
60
+ "examples": ["Buckingham palace road"],
61
+ "description": "Name of trunk road within 67M of site"
62
+ },
63
+ "isSiteOnCrownLand": {
64
+ "type": ["boolean", "null"]
65
+ },
66
+ "article4AffectedDevelopmentRights": {
67
+ "type": ["string", "null"],
68
+ "description": "What permitted develpoment rights are affected by the Article 4 Direction"
69
+ }
70
+ }
71
+ }
72
+ ]
73
+ }