@planning-inspectorate/data-model 2.21.0 → 2.21.2
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/README.md +8 -8
- package/package.json +1 -1
- package/pins_data_model/models/model_appeal_document.py +1 -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 +1 -1
- 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/commands/appeals-components/appeal-enforcement-common-submission.schema.json +52 -5
- package/schemas/commands/appeals-components/appeal-enforcement-listed-submission.schema.json +1 -49
- package/schemas/commands/appeals-components/{appeal-enforcement-submission.schema.json → appeal-enforcement-notice-submission.schema.json} +16 -93
- package/schemas/commands/appellant-submission.schema.json +1 -1
- package/src/index.d.ts +2 -2
- package/src/schemas.d.ts +147 -197
- package/tests/appeals/commands/enforcement-listed-submission.test.js +0 -3
- package/tests/appeals/commands/{enforcement-submission.test.js → enforcement-notice-submission.test.js} +2 -45
package/README.md
CHANGED
|
@@ -164,30 +164,30 @@ The schemas in this repository are written in jsonc (JSON with comments), and ca
|
|
|
164
164
|
|
|
165
165
|
## Node.js Usage
|
|
166
166
|
|
|
167
|
-
To use these schemas in a Node project, add this repo as a dependency
|
|
167
|
+
To use these schemas in a Node project, add this repo as a dependency:
|
|
168
168
|
|
|
169
|
-
`npm i -s
|
|
169
|
+
`npm i -s @planning-inspectorate/data-model`
|
|
170
|
+
|
|
171
|
+
As usual with npm you can optionally specify a version:
|
|
172
|
+
|
|
173
|
+
`npm i -s @planning-inspectorate/data-model@2.20.0`
|
|
170
174
|
|
|
171
175
|
Then import as required:
|
|
172
176
|
|
|
173
177
|
```es6
|
|
174
|
-
import {loadAllSchemas} from '
|
|
178
|
+
import {loadAllSchemas} from '@planning-inspectorate/data-model';
|
|
175
179
|
```
|
|
176
180
|
|
|
177
181
|
or to import enum constants, for example:
|
|
178
182
|
|
|
179
183
|
```es6
|
|
180
|
-
import { APPEAL_CASE_STATUS } from '
|
|
184
|
+
import { APPEAL_CASE_STATUS } from '@planning-inspectorate/data-model';
|
|
181
185
|
|
|
182
186
|
if (someAppeal.status === APPEAL_CASE_STATUS.COMPLETE) {
|
|
183
187
|
console.log(`we're done!`);
|
|
184
188
|
}
|
|
185
189
|
```
|
|
186
190
|
|
|
187
|
-
To upgrade to a different version, simply doing npm command does not seem to get the correct version, so we need to first uninstall and then reinstall. You can do this by running:
|
|
188
|
-
|
|
189
|
-
`npm uninstall pins-data-model && npm prune && npm i -s github:Planning-Inspectorate/data-model#some-tag-or-commit`
|
|
190
|
-
|
|
191
191
|
### Tests
|
|
192
192
|
|
|
193
193
|
We are starting to add js tests to the models using node test runner
|
package/package.json
CHANGED
package/schemas/commands/appeals-components/appeal-enforcement-common-submission.schema.json
CHANGED
|
@@ -14,7 +14,10 @@
|
|
|
14
14
|
"enforcementReference",
|
|
15
15
|
"caseSubmissionDueDate",
|
|
16
16
|
"enforcementIssueDate",
|
|
17
|
-
"enforcementEffectiveDate"
|
|
17
|
+
"enforcementEffectiveDate",
|
|
18
|
+
"siteAddressLine1",
|
|
19
|
+
"siteAddressTown",
|
|
20
|
+
"siteAddressPostcode"
|
|
18
21
|
],
|
|
19
22
|
"properties": {
|
|
20
23
|
"submissionId": {
|
|
@@ -83,6 +86,54 @@
|
|
|
83
86
|
"description": "The statutory deadline for submitting an appeal from the original LPA decision date",
|
|
84
87
|
"$comment": "Calculated from the applicationDecisionDate"
|
|
85
88
|
},
|
|
89
|
+
"siteAddressLine1": {
|
|
90
|
+
"type": ["string", "null"],
|
|
91
|
+
"examples": ["96 The Avenue"],
|
|
92
|
+
"description": "First line of address for the appeal site"
|
|
93
|
+
},
|
|
94
|
+
"siteAddressLine2": {
|
|
95
|
+
"type": ["string", "null"],
|
|
96
|
+
"description": "Second line of address for the appeal site"
|
|
97
|
+
},
|
|
98
|
+
"siteAddressTown": {
|
|
99
|
+
"type": ["string", "null"],
|
|
100
|
+
"examples": ["Maidstone"],
|
|
101
|
+
"description": "Town / City of the site address"
|
|
102
|
+
},
|
|
103
|
+
"siteAddressCounty": {
|
|
104
|
+
"type": ["string", "null"],
|
|
105
|
+
"examples": ["Kent"],
|
|
106
|
+
"description": "County of the site address"
|
|
107
|
+
},
|
|
108
|
+
"siteAddressPostcode": {
|
|
109
|
+
"type": ["string", "null"],
|
|
110
|
+
"examples": ["MD21 5XY"],
|
|
111
|
+
"description": "Postal code of the site address"
|
|
112
|
+
},
|
|
113
|
+
"contactAddressLine1": {
|
|
114
|
+
"type": ["string", "null"],
|
|
115
|
+
"examples": ["96 The Avenue"],
|
|
116
|
+
"description": "First line of address for the appeal site"
|
|
117
|
+
},
|
|
118
|
+
"contactAddressLine2": {
|
|
119
|
+
"type": ["string", "null"],
|
|
120
|
+
"description": "Second line of address for the appeal site"
|
|
121
|
+
},
|
|
122
|
+
"contactAddressTown": {
|
|
123
|
+
"type": ["string", "null"],
|
|
124
|
+
"examples": ["Maidstone"],
|
|
125
|
+
"description": "Town / City of the site address"
|
|
126
|
+
},
|
|
127
|
+
"contactAddressCounty": {
|
|
128
|
+
"type": ["string", "null"],
|
|
129
|
+
"examples": ["Kent"],
|
|
130
|
+
"description": "County of the site address"
|
|
131
|
+
},
|
|
132
|
+
"contactAddressPostcode": {
|
|
133
|
+
"type": ["string", "null"],
|
|
134
|
+
"examples": ["MD21 5XY"],
|
|
135
|
+
"description": "Postal code of the site address"
|
|
136
|
+
},
|
|
86
137
|
"siteAccessDetails": {
|
|
87
138
|
"type": ["array", "null"],
|
|
88
139
|
"items": {
|
|
@@ -121,10 +172,6 @@
|
|
|
121
172
|
"type": ["number", "null"],
|
|
122
173
|
"description": "The number of witnesses appellant has suggested for inquiries preference"
|
|
123
174
|
},
|
|
124
|
-
"statusPlanningObligation": {
|
|
125
|
-
"type": ["string", "null"],
|
|
126
|
-
"description": "The planning obligation information, if available"
|
|
127
|
-
},
|
|
128
175
|
"nearbyCaseReferences": {
|
|
129
176
|
"type": ["array", "null"],
|
|
130
177
|
"items": {
|
package/schemas/commands/appeals-components/appeal-enforcement-listed-submission.schema.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
3
|
"$id": "commands/appeals-components/appeal-enforcement-listed-submission.schema.json",
|
|
4
4
|
"title": "Appellant enforcement listed building submission properties",
|
|
5
|
-
"description": "Schema defining any properties
|
|
5
|
+
"description": "Schema defining any properties specific to enforcement listed building appeals",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": true,
|
|
8
8
|
"required": [],
|
|
@@ -31,54 +31,6 @@
|
|
|
31
31
|
},
|
|
32
32
|
"description": "A list of individuals named on the enforcement notice"
|
|
33
33
|
},
|
|
34
|
-
"siteAddressLine1": {
|
|
35
|
-
"type": ["string", "null"],
|
|
36
|
-
"examples": ["96 The Avenue"],
|
|
37
|
-
"description": "First line of address for the appeal site"
|
|
38
|
-
},
|
|
39
|
-
"siteAddressLine2": {
|
|
40
|
-
"type": ["string", "null"],
|
|
41
|
-
"description": "Second line of address for the appeal site"
|
|
42
|
-
},
|
|
43
|
-
"siteAddressTown": {
|
|
44
|
-
"type": ["string", "null"],
|
|
45
|
-
"examples": ["Maidstone"],
|
|
46
|
-
"description": "Town / City of the site address"
|
|
47
|
-
},
|
|
48
|
-
"siteAddressCounty": {
|
|
49
|
-
"type": ["string", "null"],
|
|
50
|
-
"examples": ["Kent"],
|
|
51
|
-
"description": "County of the site address"
|
|
52
|
-
},
|
|
53
|
-
"siteAddressPostcode": {
|
|
54
|
-
"type": ["string", "null"],
|
|
55
|
-
"examples": ["MD21 5XY"],
|
|
56
|
-
"description": "Postal code of the site address"
|
|
57
|
-
},
|
|
58
|
-
"contactAddressLine1": {
|
|
59
|
-
"type": ["string", "null"],
|
|
60
|
-
"examples": ["96 The Avenue"],
|
|
61
|
-
"description": "First line of address for the appeal site"
|
|
62
|
-
},
|
|
63
|
-
"contactAddressLine2": {
|
|
64
|
-
"type": ["string", "null"],
|
|
65
|
-
"description": "Second line of address for the appeal site"
|
|
66
|
-
},
|
|
67
|
-
"contactAddressTown": {
|
|
68
|
-
"type": ["string", "null"],
|
|
69
|
-
"examples": ["Maidstone"],
|
|
70
|
-
"description": "Town / City of the site address"
|
|
71
|
-
},
|
|
72
|
-
"contactAddressCounty": {
|
|
73
|
-
"type": ["string", "null"],
|
|
74
|
-
"examples": ["Kent"],
|
|
75
|
-
"description": "County of the site address"
|
|
76
|
-
},
|
|
77
|
-
"contactAddressPostcode": {
|
|
78
|
-
"type": ["string", "null"],
|
|
79
|
-
"examples": ["MD21 5XY"],
|
|
80
|
-
"description": "Postal code of the site address"
|
|
81
|
-
},
|
|
82
34
|
"appealGrounds": {
|
|
83
35
|
"type": ["array", "null"],
|
|
84
36
|
"items": {
|
|
@@ -1,32 +1,23 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "commands/appeals-components/appeal-enforcement-submission.schema.json",
|
|
4
|
-
"title": "Appellant enforcement submission properties",
|
|
5
|
-
"description": "Schema defining
|
|
3
|
+
"$id": "commands/appeals-components/appeal-enforcement-notice-submission.schema.json",
|
|
4
|
+
"title": "Appellant enforcement notice specific submission properties",
|
|
5
|
+
"description": "Schema defining properties specific to enforcement notice appeals",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"additionalProperties": true,
|
|
8
8
|
"required": [],
|
|
9
|
-
"anyOf": [
|
|
10
|
-
{
|
|
11
|
-
"required": ["siteGridReferenceEasting", "siteGridReferenceNorthing"],
|
|
12
|
-
"properties": {
|
|
13
|
-
"siteGridReferenceEasting": { "type": "string" },
|
|
14
|
-
"siteGridReferenceNorthing": { "type": "string" }
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
"required": ["siteAddressLine1", "siteAddressTown", "siteAddressPostcode"],
|
|
19
|
-
"properties": {
|
|
20
|
-
"siteAddressLine1": { "type": "string" },
|
|
21
|
-
"siteAddressTown": { "type": "string" },
|
|
22
|
-
"siteAddressPostcode": { "type": "string" }
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
],
|
|
26
9
|
"properties": {
|
|
27
10
|
"applicationMadeAndFeePaid": {
|
|
28
11
|
"type": ["boolean", "null"],
|
|
29
|
-
"description": "Whether a planning application was made"
|
|
12
|
+
"description": "Whether a planning application was made - historic question"
|
|
13
|
+
},
|
|
14
|
+
"retrospectiveApplication": {
|
|
15
|
+
"type": ["boolean", "null"],
|
|
16
|
+
"description": "Whether a retrospective planning application was made"
|
|
17
|
+
},
|
|
18
|
+
"groundAFeePaid": {
|
|
19
|
+
"type": ["boolean", "null"],
|
|
20
|
+
"description": "Whether a ground (a) fee has been paid"
|
|
30
21
|
},
|
|
31
22
|
"applicationDevelopmentAllOrPart": {
|
|
32
23
|
"type": ["string", "null"],
|
|
@@ -73,81 +64,13 @@
|
|
|
73
64
|
"examples": ["2023-07-27T20:30:00.000Z"],
|
|
74
65
|
"description": "The date of the appeal against the original LPA decision"
|
|
75
66
|
},
|
|
76
|
-
"
|
|
77
|
-
"type": ["string", "null"],
|
|
78
|
-
"examples": ["96 The Avenue"],
|
|
79
|
-
"description": "First line of address for the appeal site"
|
|
80
|
-
},
|
|
81
|
-
"siteAddressLine2": {
|
|
82
|
-
"type": ["string", "null"],
|
|
83
|
-
"description": "Second line of address for the appeal site"
|
|
84
|
-
},
|
|
85
|
-
"siteAddressTown": {
|
|
86
|
-
"type": ["string", "null"],
|
|
87
|
-
"examples": ["Maidstone"],
|
|
88
|
-
"description": "Town / City of the site address"
|
|
89
|
-
},
|
|
90
|
-
"siteAddressCounty": {
|
|
91
|
-
"type": ["string", "null"],
|
|
92
|
-
"examples": ["Kent"],
|
|
93
|
-
"description": "County of the site address"
|
|
94
|
-
},
|
|
95
|
-
"siteAddressPostcode": {
|
|
96
|
-
"type": ["string", "null"],
|
|
97
|
-
"examples": ["MD21 5XY"],
|
|
98
|
-
"description": "Postal code of the site address"
|
|
99
|
-
},
|
|
100
|
-
"contactAddressLine1": {
|
|
101
|
-
"type": ["string", "null"],
|
|
102
|
-
"examples": ["96 The Avenue"],
|
|
103
|
-
"description": "First line of address for the appeal site"
|
|
104
|
-
},
|
|
105
|
-
"contactAddressLine2": {
|
|
106
|
-
"type": ["string", "null"],
|
|
107
|
-
"description": "Second line of address for the appeal site"
|
|
108
|
-
},
|
|
109
|
-
"contactAddressTown": {
|
|
110
|
-
"type": ["string", "null"],
|
|
111
|
-
"examples": ["Maidstone"],
|
|
112
|
-
"description": "Town / City of the site address"
|
|
113
|
-
},
|
|
114
|
-
"contactAddressCounty": {
|
|
115
|
-
"type": ["string", "null"],
|
|
116
|
-
"examples": ["Kent"],
|
|
117
|
-
"description": "County of the site address"
|
|
118
|
-
},
|
|
119
|
-
"contactAddressPostcode": {
|
|
120
|
-
"type": ["string", "null"],
|
|
121
|
-
"examples": ["MD21 5XY"],
|
|
122
|
-
"description": "Postal code of the site address"
|
|
123
|
-
},
|
|
124
|
-
"siteGridReferenceEasting": {
|
|
125
|
-
"type": ["string", "null"],
|
|
126
|
-
"pattern": "^\\d{6,7}$",
|
|
127
|
-
"examples": ["357144"]
|
|
128
|
-
},
|
|
129
|
-
"siteGridReferenceNorthing": {
|
|
130
|
-
"type": ["string", "null"],
|
|
131
|
-
"pattern": "^\\d{6,7}$",
|
|
132
|
-
"examples": ["400534"]
|
|
133
|
-
},
|
|
134
|
-
"retrospectiveApplication": {
|
|
67
|
+
"planningObligation": {
|
|
135
68
|
"type": ["boolean", "null"],
|
|
136
|
-
"description": "
|
|
137
|
-
},
|
|
138
|
-
"contactGridReferenceEasting": {
|
|
139
|
-
"type": ["string", "null"],
|
|
140
|
-
"pattern": "^\\d{6,7}$",
|
|
141
|
-
"examples": ["357144"]
|
|
69
|
+
"description": "Indicates the existence of a planning obligation"
|
|
142
70
|
},
|
|
143
|
-
"
|
|
71
|
+
"statusPlanningObligation": {
|
|
144
72
|
"type": ["string", "null"],
|
|
145
|
-
"
|
|
146
|
-
"examples": ["400534"]
|
|
147
|
-
},
|
|
148
|
-
"groundAFeePaid": {
|
|
149
|
-
"type": ["boolean", "null"],
|
|
150
|
-
"description": "Whether a ground (a) fee has been paid"
|
|
73
|
+
"description": "The planning obligation information, if available"
|
|
151
74
|
},
|
|
152
75
|
"writtenOrVerbalPermission": {
|
|
153
76
|
"type": ["string", "null"],
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
"$comment": "Enforcement notice",
|
|
61
61
|
"allOf": [
|
|
62
62
|
{ "properties": { "caseType": { "enum": ["C"] } } },
|
|
63
|
-
{ "$ref": "appeals-components/appeal-enforcement-submission.schema.json" },
|
|
64
63
|
{ "$ref": "appeals-components/appeal-enforcement-common-submission.schema.json" },
|
|
64
|
+
{ "$ref": "appeals-components/appeal-enforcement-notice-submission.schema.json" },
|
|
65
65
|
{ "$ref": "appeals-components/appellant-procedure-preference.schema.json" }
|
|
66
66
|
]
|
|
67
67
|
},
|
package/src/index.d.ts
CHANGED
package/src/schemas.d.ts
CHANGED
|
@@ -3753,158 +3753,6 @@ export type AppellantProcedurePreferenceProperties = {
|
|
|
3753
3753
|
*/
|
|
3754
3754
|
appellantProcedurePreferenceWitnessCount?: number | null;
|
|
3755
3755
|
};
|
|
3756
|
-
/**
|
|
3757
|
-
* Schema defining any properties for enforcement appeals
|
|
3758
|
-
*/
|
|
3759
|
-
export type AppellantEnforcementSubmissionProperties = (
|
|
3760
|
-
| {
|
|
3761
|
-
siteGridReferenceEasting: string;
|
|
3762
|
-
siteGridReferenceNorthing: string;
|
|
3763
|
-
}
|
|
3764
|
-
| {
|
|
3765
|
-
siteAddressLine1: string;
|
|
3766
|
-
siteAddressTown: string;
|
|
3767
|
-
siteAddressPostcode: string;
|
|
3768
|
-
}
|
|
3769
|
-
) & {
|
|
3770
|
-
/**
|
|
3771
|
-
* Whether a planning application was made
|
|
3772
|
-
*/
|
|
3773
|
-
applicationMadeAndFeePaid?: boolean | null;
|
|
3774
|
-
/**
|
|
3775
|
-
* Did the application relate to all or part of the development
|
|
3776
|
-
*/
|
|
3777
|
-
applicationDevelopmentAllOrPart?: 'all-of-the-development' | 'part-of-the-development' | null;
|
|
3778
|
-
/**
|
|
3779
|
-
* A description of the proposed development
|
|
3780
|
-
*/
|
|
3781
|
-
originalDevelopmentDescription?: string | null;
|
|
3782
|
-
/**
|
|
3783
|
-
* An updated description of the proposed development
|
|
3784
|
-
*/
|
|
3785
|
-
changedDevelopmentDescription?: boolean | null;
|
|
3786
|
-
/**
|
|
3787
|
-
* The unique identifier of the LPA application
|
|
3788
|
-
*/
|
|
3789
|
-
applicationReference?: string | null;
|
|
3790
|
-
/**
|
|
3791
|
-
* The date of the original LPA application
|
|
3792
|
-
*/
|
|
3793
|
-
applicationDate?: string | null;
|
|
3794
|
-
/**
|
|
3795
|
-
* The outcome of the original LPA decision
|
|
3796
|
-
*/
|
|
3797
|
-
applicationDecision?: 'granted' | 'refused' | 'not_received' | null;
|
|
3798
|
-
/**
|
|
3799
|
-
* The date of the original LPA decision
|
|
3800
|
-
*/
|
|
3801
|
-
applicationDecisionDate?: string | null;
|
|
3802
|
-
/**
|
|
3803
|
-
* Whether an appeal was made against the original LPA decision
|
|
3804
|
-
*/
|
|
3805
|
-
applicationDecisionAppealed?: boolean | null;
|
|
3806
|
-
/**
|
|
3807
|
-
* The date of the appeal against the original LPA decision
|
|
3808
|
-
*/
|
|
3809
|
-
appealDecisionDate?: string | null;
|
|
3810
|
-
/**
|
|
3811
|
-
* First line of address for the appeal site
|
|
3812
|
-
*/
|
|
3813
|
-
siteAddressLine1?: string | null;
|
|
3814
|
-
/**
|
|
3815
|
-
* Second line of address for the appeal site
|
|
3816
|
-
*/
|
|
3817
|
-
siteAddressLine2?: string | null;
|
|
3818
|
-
/**
|
|
3819
|
-
* Town / City of the site address
|
|
3820
|
-
*/
|
|
3821
|
-
siteAddressTown?: string | null;
|
|
3822
|
-
/**
|
|
3823
|
-
* County of the site address
|
|
3824
|
-
*/
|
|
3825
|
-
siteAddressCounty?: string | null;
|
|
3826
|
-
/**
|
|
3827
|
-
* Postal code of the site address
|
|
3828
|
-
*/
|
|
3829
|
-
siteAddressPostcode?: string | null;
|
|
3830
|
-
/**
|
|
3831
|
-
* First line of address for the appeal site
|
|
3832
|
-
*/
|
|
3833
|
-
contactAddressLine1?: string | null;
|
|
3834
|
-
/**
|
|
3835
|
-
* Second line of address for the appeal site
|
|
3836
|
-
*/
|
|
3837
|
-
contactAddressLine2?: string | null;
|
|
3838
|
-
/**
|
|
3839
|
-
* Town / City of the site address
|
|
3840
|
-
*/
|
|
3841
|
-
contactAddressTown?: string | null;
|
|
3842
|
-
/**
|
|
3843
|
-
* County of the site address
|
|
3844
|
-
*/
|
|
3845
|
-
contactAddressCounty?: string | null;
|
|
3846
|
-
/**
|
|
3847
|
-
* Postal code of the site address
|
|
3848
|
-
*/
|
|
3849
|
-
contactAddressPostcode?: string | null;
|
|
3850
|
-
siteGridReferenceEasting?: string | null;
|
|
3851
|
-
siteGridReferenceNorthing?: string | null;
|
|
3852
|
-
/**
|
|
3853
|
-
* Whether a retrospective planning application was made
|
|
3854
|
-
*/
|
|
3855
|
-
retrospectiveApplication?: boolean | null;
|
|
3856
|
-
contactGridReferenceEasting?: string | null;
|
|
3857
|
-
contactGridReferenceNorthing?: string | null;
|
|
3858
|
-
/**
|
|
3859
|
-
* Whether a ground (a) fee has been paid
|
|
3860
|
-
*/
|
|
3861
|
-
groundAFeePaid?: boolean | null;
|
|
3862
|
-
/**
|
|
3863
|
-
* If required, whether the individual has permission to use the appeal land
|
|
3864
|
-
*/
|
|
3865
|
-
writtenOrVerbalPermission?: string | null;
|
|
3866
|
-
/**
|
|
3867
|
-
* A list of individuals named on the enforcement notice
|
|
3868
|
-
*/
|
|
3869
|
-
namedIndividuals?:
|
|
3870
|
-
| {
|
|
3871
|
-
/**
|
|
3872
|
-
* First name of the individual
|
|
3873
|
-
*/
|
|
3874
|
-
firstName: string;
|
|
3875
|
-
/**
|
|
3876
|
-
* Last name of the individual
|
|
3877
|
-
*/
|
|
3878
|
-
lastName: string;
|
|
3879
|
-
/**
|
|
3880
|
-
* Individual's interest in the appeal land
|
|
3881
|
-
*/
|
|
3882
|
-
interestInLand: string;
|
|
3883
|
-
/**
|
|
3884
|
-
* If required, whether the individual has permission to use the appeal land
|
|
3885
|
-
*/
|
|
3886
|
-
writtenOrVerbalPermission: string | null;
|
|
3887
|
-
[k: string]: unknown;
|
|
3888
|
-
}[]
|
|
3889
|
-
| null;
|
|
3890
|
-
/**
|
|
3891
|
-
* A list of appeal grounds being pleaded
|
|
3892
|
-
*/
|
|
3893
|
-
appealGrounds?:
|
|
3894
|
-
| {
|
|
3895
|
-
/**
|
|
3896
|
-
* Name of the appeal ground
|
|
3897
|
-
*/
|
|
3898
|
-
groundRef: 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g';
|
|
3899
|
-
/**
|
|
3900
|
-
* Facts supporting the appeal ground
|
|
3901
|
-
*/
|
|
3902
|
-
factsForGround: string;
|
|
3903
|
-
[k: string]: unknown;
|
|
3904
|
-
}[]
|
|
3905
|
-
| null;
|
|
3906
|
-
[k: string]: unknown;
|
|
3907
|
-
};
|
|
3908
3756
|
|
|
3909
3757
|
/**
|
|
3910
3758
|
* Schema defining the data produced by the Front-Office when an appeal is requested
|
|
@@ -3940,8 +3788,8 @@ export interface AppellantSubmissionCommand {
|
|
|
3940
3788
|
AppellantProcedurePreferenceProperties)
|
|
3941
3789
|
| ({
|
|
3942
3790
|
caseType?: 'C';
|
|
3943
|
-
} &
|
|
3944
|
-
|
|
3791
|
+
} & AppellantEnforcementCommonSubmissionProperties &
|
|
3792
|
+
AppellantEnforcementNoticeSpecificSubmissionProperties &
|
|
3945
3793
|
AppellantProcedurePreferenceProperties)
|
|
3946
3794
|
| ({
|
|
3947
3795
|
caseType?: 'X';
|
|
@@ -4232,6 +4080,46 @@ export interface AppellantEnforcementCommonSubmissionProperties {
|
|
|
4232
4080
|
* The statutory deadline for submitting an appeal from the original LPA decision date
|
|
4233
4081
|
*/
|
|
4234
4082
|
caseSubmissionDueDate: string | null;
|
|
4083
|
+
/**
|
|
4084
|
+
* First line of address for the appeal site
|
|
4085
|
+
*/
|
|
4086
|
+
siteAddressLine1: string | null;
|
|
4087
|
+
/**
|
|
4088
|
+
* Second line of address for the appeal site
|
|
4089
|
+
*/
|
|
4090
|
+
siteAddressLine2?: string | null;
|
|
4091
|
+
/**
|
|
4092
|
+
* Town / City of the site address
|
|
4093
|
+
*/
|
|
4094
|
+
siteAddressTown: string | null;
|
|
4095
|
+
/**
|
|
4096
|
+
* County of the site address
|
|
4097
|
+
*/
|
|
4098
|
+
siteAddressCounty?: string | null;
|
|
4099
|
+
/**
|
|
4100
|
+
* Postal code of the site address
|
|
4101
|
+
*/
|
|
4102
|
+
siteAddressPostcode: string | null;
|
|
4103
|
+
/**
|
|
4104
|
+
* First line of address for the appeal site
|
|
4105
|
+
*/
|
|
4106
|
+
contactAddressLine1?: string | null;
|
|
4107
|
+
/**
|
|
4108
|
+
* Second line of address for the appeal site
|
|
4109
|
+
*/
|
|
4110
|
+
contactAddressLine2?: string | null;
|
|
4111
|
+
/**
|
|
4112
|
+
* Town / City of the site address
|
|
4113
|
+
*/
|
|
4114
|
+
contactAddressTown?: string | null;
|
|
4115
|
+
/**
|
|
4116
|
+
* County of the site address
|
|
4117
|
+
*/
|
|
4118
|
+
contactAddressCounty?: string | null;
|
|
4119
|
+
/**
|
|
4120
|
+
* Postal code of the site address
|
|
4121
|
+
*/
|
|
4122
|
+
contactAddressPostcode?: string | null;
|
|
4235
4123
|
/**
|
|
4236
4124
|
* Provided information on site accessibility
|
|
4237
4125
|
*/
|
|
@@ -4260,14 +4148,116 @@ export interface AppellantEnforcementCommonSubmissionProperties {
|
|
|
4260
4148
|
* The number of witnesses appellant has suggested for inquiries preference
|
|
4261
4149
|
*/
|
|
4262
4150
|
appellantProcedurePreferenceWitnessCount?: number | null;
|
|
4151
|
+
/**
|
|
4152
|
+
* A list of related case references known to the appellant and the LPA
|
|
4153
|
+
*/
|
|
4154
|
+
nearbyCaseReferences?: string[] | null;
|
|
4155
|
+
[k: string]: unknown;
|
|
4156
|
+
}
|
|
4157
|
+
/**
|
|
4158
|
+
* Schema defining properties specific to enforcement notice appeals
|
|
4159
|
+
*/
|
|
4160
|
+
export interface AppellantEnforcementNoticeSpecificSubmissionProperties {
|
|
4161
|
+
/**
|
|
4162
|
+
* Whether a planning application was made - historic question
|
|
4163
|
+
*/
|
|
4164
|
+
applicationMadeAndFeePaid?: boolean | null;
|
|
4165
|
+
/**
|
|
4166
|
+
* Whether a retrospective planning application was made
|
|
4167
|
+
*/
|
|
4168
|
+
retrospectiveApplication?: boolean | null;
|
|
4169
|
+
/**
|
|
4170
|
+
* Whether a ground (a) fee has been paid
|
|
4171
|
+
*/
|
|
4172
|
+
groundAFeePaid?: boolean | null;
|
|
4173
|
+
/**
|
|
4174
|
+
* Did the application relate to all or part of the development
|
|
4175
|
+
*/
|
|
4176
|
+
applicationDevelopmentAllOrPart?: 'all-of-the-development' | 'part-of-the-development' | null;
|
|
4177
|
+
/**
|
|
4178
|
+
* A description of the proposed development
|
|
4179
|
+
*/
|
|
4180
|
+
originalDevelopmentDescription?: string | null;
|
|
4181
|
+
/**
|
|
4182
|
+
* An updated description of the proposed development
|
|
4183
|
+
*/
|
|
4184
|
+
changedDevelopmentDescription?: boolean | null;
|
|
4185
|
+
/**
|
|
4186
|
+
* The unique identifier of the LPA application
|
|
4187
|
+
*/
|
|
4188
|
+
applicationReference?: string | null;
|
|
4189
|
+
/**
|
|
4190
|
+
* The date of the original LPA application
|
|
4191
|
+
*/
|
|
4192
|
+
applicationDate?: string | null;
|
|
4193
|
+
/**
|
|
4194
|
+
* The outcome of the original LPA decision
|
|
4195
|
+
*/
|
|
4196
|
+
applicationDecision?: 'granted' | 'refused' | 'not_received' | null;
|
|
4197
|
+
/**
|
|
4198
|
+
* The date of the original LPA decision
|
|
4199
|
+
*/
|
|
4200
|
+
applicationDecisionDate?: string | null;
|
|
4201
|
+
/**
|
|
4202
|
+
* Whether an appeal was made against the original LPA decision
|
|
4203
|
+
*/
|
|
4204
|
+
applicationDecisionAppealed?: boolean | null;
|
|
4205
|
+
/**
|
|
4206
|
+
* The date of the appeal against the original LPA decision
|
|
4207
|
+
*/
|
|
4208
|
+
appealDecisionDate?: string | null;
|
|
4209
|
+
/**
|
|
4210
|
+
* Indicates the existence of a planning obligation
|
|
4211
|
+
*/
|
|
4212
|
+
planningObligation?: boolean | null;
|
|
4263
4213
|
/**
|
|
4264
4214
|
* The planning obligation information, if available
|
|
4265
4215
|
*/
|
|
4266
4216
|
statusPlanningObligation?: string | null;
|
|
4267
4217
|
/**
|
|
4268
|
-
*
|
|
4218
|
+
* If required, whether the individual has permission to use the appeal land
|
|
4269
4219
|
*/
|
|
4270
|
-
|
|
4220
|
+
writtenOrVerbalPermission?: string | null;
|
|
4221
|
+
/**
|
|
4222
|
+
* A list of individuals named on the enforcement notice
|
|
4223
|
+
*/
|
|
4224
|
+
namedIndividuals?:
|
|
4225
|
+
| {
|
|
4226
|
+
/**
|
|
4227
|
+
* First name of the individual
|
|
4228
|
+
*/
|
|
4229
|
+
firstName: string;
|
|
4230
|
+
/**
|
|
4231
|
+
* Last name of the individual
|
|
4232
|
+
*/
|
|
4233
|
+
lastName: string;
|
|
4234
|
+
/**
|
|
4235
|
+
* Individual's interest in the appeal land
|
|
4236
|
+
*/
|
|
4237
|
+
interestInLand: string;
|
|
4238
|
+
/**
|
|
4239
|
+
* If required, whether the individual has permission to use the appeal land
|
|
4240
|
+
*/
|
|
4241
|
+
writtenOrVerbalPermission: string | null;
|
|
4242
|
+
[k: string]: unknown;
|
|
4243
|
+
}[]
|
|
4244
|
+
| null;
|
|
4245
|
+
/**
|
|
4246
|
+
* A list of appeal grounds being pleaded
|
|
4247
|
+
*/
|
|
4248
|
+
appealGrounds?:
|
|
4249
|
+
| {
|
|
4250
|
+
/**
|
|
4251
|
+
* Name of the appeal ground
|
|
4252
|
+
*/
|
|
4253
|
+
groundRef: 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g';
|
|
4254
|
+
/**
|
|
4255
|
+
* Facts supporting the appeal ground
|
|
4256
|
+
*/
|
|
4257
|
+
factsForGround: string;
|
|
4258
|
+
[k: string]: unknown;
|
|
4259
|
+
}[]
|
|
4260
|
+
| null;
|
|
4271
4261
|
[k: string]: unknown;
|
|
4272
4262
|
}
|
|
4273
4263
|
/**
|
|
@@ -4286,7 +4276,7 @@ export interface LDCSpecificProperties {
|
|
|
4286
4276
|
[k: string]: unknown;
|
|
4287
4277
|
}
|
|
4288
4278
|
/**
|
|
4289
|
-
* Schema defining any properties
|
|
4279
|
+
* Schema defining any properties specific to enforcement listed building appeals
|
|
4290
4280
|
*/
|
|
4291
4281
|
export interface AppellantEnforcementListedBuildingSubmissionProperties {
|
|
4292
4282
|
/**
|
|
@@ -4309,46 +4299,6 @@ export interface AppellantEnforcementListedBuildingSubmissionProperties {
|
|
|
4309
4299
|
[k: string]: unknown;
|
|
4310
4300
|
}[]
|
|
4311
4301
|
| null;
|
|
4312
|
-
/**
|
|
4313
|
-
* First line of address for the appeal site
|
|
4314
|
-
*/
|
|
4315
|
-
siteAddressLine1?: string | null;
|
|
4316
|
-
/**
|
|
4317
|
-
* Second line of address for the appeal site
|
|
4318
|
-
*/
|
|
4319
|
-
siteAddressLine2?: string | null;
|
|
4320
|
-
/**
|
|
4321
|
-
* Town / City of the site address
|
|
4322
|
-
*/
|
|
4323
|
-
siteAddressTown?: string | null;
|
|
4324
|
-
/**
|
|
4325
|
-
* County of the site address
|
|
4326
|
-
*/
|
|
4327
|
-
siteAddressCounty?: string | null;
|
|
4328
|
-
/**
|
|
4329
|
-
* Postal code of the site address
|
|
4330
|
-
*/
|
|
4331
|
-
siteAddressPostcode?: string | null;
|
|
4332
|
-
/**
|
|
4333
|
-
* First line of address for the appeal site
|
|
4334
|
-
*/
|
|
4335
|
-
contactAddressLine1?: string | null;
|
|
4336
|
-
/**
|
|
4337
|
-
* Second line of address for the appeal site
|
|
4338
|
-
*/
|
|
4339
|
-
contactAddressLine2?: string | null;
|
|
4340
|
-
/**
|
|
4341
|
-
* Town / City of the site address
|
|
4342
|
-
*/
|
|
4343
|
-
contactAddressTown?: string | null;
|
|
4344
|
-
/**
|
|
4345
|
-
* County of the site address
|
|
4346
|
-
*/
|
|
4347
|
-
contactAddressCounty?: string | null;
|
|
4348
|
-
/**
|
|
4349
|
-
* Postal code of the site address
|
|
4350
|
-
*/
|
|
4351
|
-
contactAddressPostcode?: string | null;
|
|
4352
4302
|
/**
|
|
4353
4303
|
* A list of appeal grounds being pleaded
|
|
4354
4304
|
*/
|
|
@@ -46,8 +46,6 @@ const exampleEnforcementListedSubmissionSchema = {
|
|
|
46
46
|
siteAddressTown: 'et',
|
|
47
47
|
siteAddressCounty: 'velit',
|
|
48
48
|
siteAddressPostcode: 'nisi minim laboris sed',
|
|
49
|
-
siteGridReferenceEasting: '357144',
|
|
50
|
-
siteGridReferenceNorthing: '400534',
|
|
51
49
|
contactAddressLine1: null,
|
|
52
50
|
contactAddressLine2: null,
|
|
53
51
|
contactAddressTown: null,
|
|
@@ -60,7 +58,6 @@ const exampleEnforcementListedSubmissionSchema = {
|
|
|
60
58
|
appellantProcedurePreferenceDetails: 'eiusmod ex exercitation',
|
|
61
59
|
appellantProcedurePreferenceDuration: 10816414.941069126,
|
|
62
60
|
appellantProcedurePreferenceWitnessCount: -91300569.36444478,
|
|
63
|
-
statusPlanningObligation: 'proident aute',
|
|
64
61
|
nearbyCaseReferences: ['incididunt'],
|
|
65
62
|
namedIndividuals: [
|
|
66
63
|
{
|
|
@@ -60,8 +60,6 @@ const exampleEnforcementSubmissionSchema = {
|
|
|
60
60
|
siteAddressTown: 'et',
|
|
61
61
|
siteAddressCounty: 'velit',
|
|
62
62
|
siteAddressPostcode: 'nisi minim laboris sed',
|
|
63
|
-
siteGridReferenceEasting: '357144',
|
|
64
|
-
siteGridReferenceNorthing: '400534',
|
|
65
63
|
contactAddressLine1: null,
|
|
66
64
|
contactAddressLine2: null,
|
|
67
65
|
contactAddressTown: null,
|
|
@@ -76,7 +74,7 @@ const exampleEnforcementSubmissionSchema = {
|
|
|
76
74
|
appellantProcedurePreferenceDetails: 'eiusmod ex exercitation',
|
|
77
75
|
appellantProcedurePreferenceDuration: 10816414.941069126,
|
|
78
76
|
appellantProcedurePreferenceWitnessCount: -91300569.36444478,
|
|
79
|
-
statusPlanningObligation: '
|
|
77
|
+
statusPlanningObligation: 'finalised',
|
|
80
78
|
nearbyCaseReferences: ['incididunt'],
|
|
81
79
|
namedIndividuals: [
|
|
82
80
|
{
|
|
@@ -108,52 +106,11 @@ describe('enforcement submission command schema', () => {
|
|
|
108
106
|
assert.strictEqual(validationResult, true);
|
|
109
107
|
});
|
|
110
108
|
|
|
111
|
-
it('should enforce
|
|
112
|
-
const invalidPatterns = [
|
|
113
|
-
{ easting: 'abc123', northing: '400534', description: 'easting with letters' },
|
|
114
|
-
{ easting: '1234567*', northing: '400534', description: 'easting too long' },
|
|
115
|
-
{ easting: '12345', northing: '400534', description: 'easting too short' },
|
|
116
|
-
{ easting: '357144', northing: 'xyz123', description: 'northing with letters' },
|
|
117
|
-
{ easting: '357144', northing: '12345678', description: 'northing too long' },
|
|
118
|
-
{ easting: '357144', northing: '12345', description: 'northing too short' },
|
|
119
|
-
{ easting: '', northing: '400534', description: 'empty easting' },
|
|
120
|
-
{ easting: '357144', northing: '', description: 'empty northing' }
|
|
121
|
-
];
|
|
122
|
-
|
|
123
|
-
for (const pattern of invalidPatterns) {
|
|
124
|
-
const test = structuredClone(exampleEnforcementSubmissionSchema);
|
|
125
|
-
test.casedata.siteGridReferenceEasting = pattern.easting;
|
|
126
|
-
test.casedata.siteGridReferenceNorthing = pattern.northing;
|
|
127
|
-
|
|
128
|
-
const validationResult = ajv.validate(schema, test);
|
|
129
|
-
assert.strictEqual(validationResult, false, `Expected validation to fail for ${pattern.description}`);
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
it('should allow only eastings-northings', () => {
|
|
134
|
-
const test = structuredClone(exampleEnforcementSubmissionSchema);
|
|
135
|
-
test.casedata.siteAddressPostcode = undefined;
|
|
136
|
-
test.casedata.siteAddressLine1 = null;
|
|
137
|
-
test.casedata.siteAddressTown = null;
|
|
138
|
-
const validationResult = ajv.validate(schema, test);
|
|
139
|
-
assert.strictEqual(validationResult, true);
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
it('should allow only site address', () => {
|
|
143
|
-
const test = structuredClone(exampleEnforcementSubmissionSchema);
|
|
144
|
-
test.casedata.siteGridReferenceEasting = undefined;
|
|
145
|
-
test.casedata.siteGridReferenceNorthing = null;
|
|
146
|
-
const validationResult = ajv.validate(schema, test);
|
|
147
|
-
assert.strictEqual(validationResult, true);
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
it('should enforce either site address or easting-northing', () => {
|
|
109
|
+
it('should enforce site address', () => {
|
|
151
110
|
const test = structuredClone(exampleEnforcementSubmissionSchema);
|
|
152
111
|
test.casedata.siteAddressPostcode = undefined;
|
|
153
112
|
test.casedata.siteAddressLine1 = null;
|
|
154
113
|
test.casedata.siteAddressTown = null;
|
|
155
|
-
test.casedata.siteGridReferenceEasting = undefined;
|
|
156
|
-
test.casedata.siteGridReferenceNorthing = null;
|
|
157
114
|
const validationResult = ajv.validate(schema, test);
|
|
158
115
|
assert.strictEqual(validationResult, false);
|
|
159
116
|
});
|