@planning-inspectorate/data-model 1.20.0 → 1.22.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 +11 -1
- package/docs/appeal-has.md +30 -49
- package/docs/appeal-s78.md +241 -144
- package/docs/pins-inspector-defs-specialism.md +80 -0
- package/docs/pins-inspector-defs.md +3 -0
- package/docs/pins-inspector.md +311 -3
- 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 +72 -27
- package/pins_data_model/models/model_appeal_representation.py +1 -1
- package/pins_data_model/models/model_appeal_s78.py +95 -8
- 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_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 +75 -6
- 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-has.schema.json +52 -21
- package/schemas/appeal-s78.schema.json +62 -7
- package/schemas/commands/appeals-components/appeal-advert.submission.schema.json +53 -0
- package/schemas/commands/{appeal-common-submission.schema.json → appeals-components/appeal-common-submission.schema.json} +8 -8
- package/schemas/commands/{appeal-has-submission.schema.json → appeals-components/appeal-has-submission.schema.json} +2 -2
- package/schemas/commands/{appeal-s78-submission.schema.json → appeals-components/appeal-s78-submission.schema.json} +2 -2
- package/schemas/commands/appeals-components/appellant-procedure-preference.schema.json +37 -0
- package/schemas/commands/appeals-components/changed-listed-building-number.schema.json +23 -0
- package/schemas/commands/appeals-components/lpa-procedure-preference.schema.json +28 -0
- package/schemas/commands/{lpa-questionnaire-cas-advert.schema.json → appeals-components/lpa-questionnaire-advert.schema.json} +8 -33
- package/schemas/commands/{lpa-questionnaire-common.schema.json → appeals-components/lpa-questionnaire-common.schema.json} +1 -1
- package/schemas/commands/{lpa-questionnaire-has.schema.json → appeals-components/lpa-questionnaire-has.schema.json} +1 -1
- package/schemas/commands/{lpa-questionnaire-s78.schema.json → appeals-components/lpa-questionnaire-s78.schema.json} +2 -21
- package/schemas/commands/appellant-submission.schema.json +21 -10
- package/schemas/commands/lpa-questionnaire.schema.json +24 -10
- package/schemas/pins-inspector.schema.json +108 -3
- package/src/index.cjs +6 -2
- package/src/index.d.ts +4 -0
- package/src/index.js +5 -2
- package/src/schemas.d.ts +385 -802
- package/tests/appeals/appeal-has.test.js +30 -5
- package/tests/appeals/appeal-s78.test.js +17 -3
- package/tests/appeals/commands/adverts-questionnaire.test.js +1 -0
- package/tests/appeals/commands/adverts-submission.test.js +13 -13
- package/tests/appeals/commands/cas-adverts-submission.test.js +184 -0
- package/tests/appeals/commands/has-submission.test.js +2 -2
- package/tests/appeals/commands/s78-submission.test.js +2 -2
- package/schemas/commands/appeal-advert.submission.schema.json +0 -23
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
## specialism Type
|
|
2
|
+
|
|
3
|
+
`object` ([Details](pins-inspector-defs-specialism.md))
|
|
4
|
+
|
|
5
|
+
# specialism Properties
|
|
6
|
+
|
|
7
|
+
| Property | Type | Required | Nullable | Defined by |
|
|
8
|
+
| :-------------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
9
|
+
| [name](#name) | `string` | Required | cannot be null | [PINS Inspector](pins-inspector-defs-specialism-properties-name.md "pins-inspector.schema.json#/$defs/specialism/properties/name") |
|
|
10
|
+
| [proficiency](#proficiency) | `string` | Required | can be null | [PINS Inspector](pins-inspector-defs-specialism-properties-proficiency.md "pins-inspector.schema.json#/$defs/specialism/properties/proficiency") |
|
|
11
|
+
| [validFrom](#validfrom) | `string` | Required | can be null | [PINS Inspector](pins-inspector-defs-specialism-properties-validfrom.md "pins-inspector.schema.json#/$defs/specialism/properties/validFrom") |
|
|
12
|
+
| Additional Properties | Any | Optional | can be null | |
|
|
13
|
+
|
|
14
|
+
## name
|
|
15
|
+
|
|
16
|
+
Working above band is stored as a specialism
|
|
17
|
+
|
|
18
|
+
`name`
|
|
19
|
+
|
|
20
|
+
* is required
|
|
21
|
+
|
|
22
|
+
* Type: `string`
|
|
23
|
+
|
|
24
|
+
* cannot be null
|
|
25
|
+
|
|
26
|
+
* defined in: [PINS Inspector](pins-inspector-defs-specialism-properties-name.md "pins-inspector.schema.json#/$defs/specialism/properties/name")
|
|
27
|
+
|
|
28
|
+
### name Type
|
|
29
|
+
|
|
30
|
+
`string`
|
|
31
|
+
|
|
32
|
+
## proficiency
|
|
33
|
+
|
|
34
|
+
trained or in-training
|
|
35
|
+
|
|
36
|
+
`proficiency`
|
|
37
|
+
|
|
38
|
+
* is required
|
|
39
|
+
|
|
40
|
+
* Type: `string`
|
|
41
|
+
|
|
42
|
+
* can be null
|
|
43
|
+
|
|
44
|
+
* defined in: [PINS Inspector](pins-inspector-defs-specialism-properties-proficiency.md "pins-inspector.schema.json#/$defs/specialism/properties/proficiency")
|
|
45
|
+
|
|
46
|
+
### proficiency Type
|
|
47
|
+
|
|
48
|
+
`string`
|
|
49
|
+
|
|
50
|
+
## validFrom
|
|
51
|
+
|
|
52
|
+
Date training started or date training was completed.
|
|
53
|
+
|
|
54
|
+
`validFrom`
|
|
55
|
+
|
|
56
|
+
* is required
|
|
57
|
+
|
|
58
|
+
* Type: `string`
|
|
59
|
+
|
|
60
|
+
* can be null
|
|
61
|
+
|
|
62
|
+
* defined in: [PINS Inspector](pins-inspector-defs-specialism-properties-validfrom.md "pins-inspector.schema.json#/$defs/specialism/properties/validFrom")
|
|
63
|
+
|
|
64
|
+
### validFrom Type
|
|
65
|
+
|
|
66
|
+
`string`
|
|
67
|
+
|
|
68
|
+
### validFrom Constraints
|
|
69
|
+
|
|
70
|
+
**date time**: the string must be a date time string, according to [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification")
|
|
71
|
+
|
|
72
|
+
### validFrom Examples
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
"2023-07-27T20:30:00.000Z"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Additional Properties
|
|
79
|
+
|
|
80
|
+
Additional properties are allowed and do not have to follow a specific schema
|
package/docs/pins-inspector.md
CHANGED
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
| Property | Type | Required | Nullable | Defined by |
|
|
8
8
|
| :------------------------------------ | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------ |
|
|
9
|
-
| [
|
|
9
|
+
| [entraId](#entraid) | `string` | Required | can be null | [PINS Inspector](pins-inspector-properties-entraid.md "pins-inspector.schema.json#/properties/entraId") |
|
|
10
|
+
| [sapId](#sapid) | `string` | Required | can be null | [PINS Inspector](pins-inspector-properties-sapid.md "pins-inspector.schema.json#/properties/sapId") |
|
|
11
|
+
| [horizonId](#horizonid) | `string` | Optional | cannot be null | [PINS Inspector](pins-inspector-properties-horizonid.md "pins-inspector.schema.json#/properties/horizonId") |
|
|
10
12
|
| [firstName](#firstname) | `string` | Required | cannot be null | [PINS Inspector](pins-inspector-properties-firstname.md "pins-inspector.schema.json#/properties/firstName") |
|
|
11
13
|
| [lastName](#lastname) | `string` | Required | cannot be null | [PINS Inspector](pins-inspector-properties-lastname.md "pins-inspector.schema.json#/properties/lastName") |
|
|
12
14
|
| [postName](#postname) | `string` | Optional | can be null | [PINS Inspector](pins-inspector-properties-postname.md "pins-inspector.schema.json#/properties/postName") |
|
|
@@ -15,15 +17,60 @@
|
|
|
15
17
|
| [salutation](#salutation) | `string` | Optional | can be null | [PINS Inspector](pins-inspector-properties-salutation.md "pins-inspector.schema.json#/properties/salutation") |
|
|
16
18
|
| [qualifications](#qualifications) | `string` | Optional | can be null | [PINS Inspector](pins-inspector-properties-qualifications.md "pins-inspector.schema.json#/properties/qualifications") |
|
|
17
19
|
| [email](#email) | `string` | Required | can be null | [PINS Inspector](pins-inspector-properties-email.md "pins-inspector.schema.json#/properties/email") |
|
|
20
|
+
| [grade](#grade) | `string` | Required | cannot be null | [PINS Inspector](pins-inspector-properties-grade.md "pins-inspector.schema.json#/properties/grade") |
|
|
21
|
+
| [fte](#fte) | `number` | Required | cannot be null | [PINS Inspector](pins-inspector-properties-fte.md "pins-inspector.schema.json#/properties/fte") |
|
|
22
|
+
| [unit](#unit) | `string` | Required | cannot be null | [PINS Inspector](pins-inspector-properties-unit.md "pins-inspector.schema.json#/properties/unit") |
|
|
23
|
+
| [service](#service) | `string` | Required | cannot be null | [PINS Inspector](pins-inspector-properties-service.md "pins-inspector.schema.json#/properties/service") |
|
|
24
|
+
| [group](#group) | `string` | Required | cannot be null | [PINS Inspector](pins-inspector-properties-group.md "pins-inspector.schema.json#/properties/group") |
|
|
25
|
+
| [inspectorManager](#inspectormanager) | `string` | Required | cannot be null | [PINS Inspector](pins-inspector-properties-inspectormanager.md "pins-inspector.schema.json#/properties/inspectorManager") |
|
|
26
|
+
| [validFrom](#validfrom) | `string` | Optional | can be null | [PINS Inspector](pins-inspector-properties-validfrom.md "pins-inspector.schema.json#/properties/validFrom") |
|
|
27
|
+
| [address](#address) | `object` | Required | cannot be null | [PINS Inspector](pins-inspector-properties-address.md "pins-inspector.schema.json#/properties/address") |
|
|
28
|
+
| [specialisms](#specialisms) | `array` | Required | cannot be null | [PINS Inspector](pins-inspector-properties-specialisms.md "pins-inspector.schema.json#/properties/specialisms") |
|
|
18
29
|
| Additional Properties | Any | Optional | can be null | |
|
|
19
30
|
|
|
31
|
+
## entraId
|
|
32
|
+
|
|
33
|
+
EntraID of the Inspector if available in ODW.
|
|
34
|
+
|
|
35
|
+
`entraId`
|
|
36
|
+
|
|
37
|
+
* is required
|
|
38
|
+
|
|
39
|
+
* Type: `string`
|
|
40
|
+
|
|
41
|
+
* can be null
|
|
42
|
+
|
|
43
|
+
* defined in: [PINS Inspector](pins-inspector-properties-entraid.md "pins-inspector.schema.json#/properties/entraId")
|
|
44
|
+
|
|
45
|
+
### entraId Type
|
|
46
|
+
|
|
47
|
+
`string`
|
|
48
|
+
|
|
49
|
+
## sapId
|
|
50
|
+
|
|
51
|
+
SAPID of the Inspector if available in ODW.
|
|
52
|
+
|
|
53
|
+
`sapId`
|
|
54
|
+
|
|
55
|
+
* is required
|
|
56
|
+
|
|
57
|
+
* Type: `string`
|
|
58
|
+
|
|
59
|
+
* can be null
|
|
60
|
+
|
|
61
|
+
* defined in: [PINS Inspector](pins-inspector-properties-sapid.md "pins-inspector.schema.json#/properties/sapId")
|
|
62
|
+
|
|
63
|
+
### sapId Type
|
|
64
|
+
|
|
65
|
+
`string`
|
|
66
|
+
|
|
20
67
|
## horizonId
|
|
21
68
|
|
|
22
69
|
The PINS-generated unique horizon ID
|
|
23
70
|
|
|
24
71
|
`horizonId`
|
|
25
72
|
|
|
26
|
-
* is
|
|
73
|
+
* is optional
|
|
27
74
|
|
|
28
75
|
* Type: `string`
|
|
29
76
|
|
|
@@ -163,7 +210,7 @@ The qualifications of the inspector
|
|
|
163
210
|
|
|
164
211
|
## email
|
|
165
212
|
|
|
166
|
-
|
|
213
|
+
PINS Email address for the Inspector
|
|
167
214
|
|
|
168
215
|
`email`
|
|
169
216
|
|
|
@@ -179,6 +226,267 @@ The email address of the inspector
|
|
|
179
226
|
|
|
180
227
|
`string`
|
|
181
228
|
|
|
229
|
+
### email Constraints
|
|
230
|
+
|
|
231
|
+
**email**: the string must be an email address, according to [RFC 5322, section 3.4.1](https://tools.ietf.org/html/rfc5322 "check the specification")
|
|
232
|
+
|
|
233
|
+
## grade
|
|
234
|
+
|
|
235
|
+
Grades as a coded value e.g. B1, B2, B3, FTC-B1, FTC-B2, FTC-B3, PL
|
|
236
|
+
|
|
237
|
+
`grade`
|
|
238
|
+
|
|
239
|
+
* is required
|
|
240
|
+
|
|
241
|
+
* Type: `string`
|
|
242
|
+
|
|
243
|
+
* cannot be null
|
|
244
|
+
|
|
245
|
+
* defined in: [PINS Inspector](pins-inspector-properties-grade.md "pins-inspector.schema.json#/properties/grade")
|
|
246
|
+
|
|
247
|
+
### grade Type
|
|
248
|
+
|
|
249
|
+
`string`
|
|
250
|
+
|
|
251
|
+
## fte
|
|
252
|
+
|
|
253
|
+
FTE Decimal value e.g. 1, 0.5 etc
|
|
254
|
+
|
|
255
|
+
`fte`
|
|
256
|
+
|
|
257
|
+
* is required
|
|
258
|
+
|
|
259
|
+
* Type: `number`
|
|
260
|
+
|
|
261
|
+
* cannot be null
|
|
262
|
+
|
|
263
|
+
* defined in: [PINS Inspector](pins-inspector-properties-fte.md "pins-inspector.schema.json#/properties/fte")
|
|
264
|
+
|
|
265
|
+
### fte Type
|
|
266
|
+
|
|
267
|
+
`number`
|
|
268
|
+
|
|
269
|
+
## unit
|
|
270
|
+
|
|
271
|
+
The personnel area of the Inspector
|
|
272
|
+
|
|
273
|
+
`unit`
|
|
274
|
+
|
|
275
|
+
* is required
|
|
276
|
+
|
|
277
|
+
* Type: `string`
|
|
278
|
+
|
|
279
|
+
* cannot be null
|
|
280
|
+
|
|
281
|
+
* defined in: [PINS Inspector](pins-inspector-properties-unit.md "pins-inspector.schema.json#/properties/unit")
|
|
282
|
+
|
|
283
|
+
### unit Type
|
|
284
|
+
|
|
285
|
+
`string`
|
|
286
|
+
|
|
287
|
+
## service
|
|
288
|
+
|
|
289
|
+
The personnel sub area of the Inspector
|
|
290
|
+
|
|
291
|
+
`service`
|
|
292
|
+
|
|
293
|
+
* is required
|
|
294
|
+
|
|
295
|
+
* Type: `string`
|
|
296
|
+
|
|
297
|
+
* cannot be null
|
|
298
|
+
|
|
299
|
+
* defined in: [PINS Inspector](pins-inspector-properties-service.md "pins-inspector.schema.json#/properties/service")
|
|
300
|
+
|
|
301
|
+
### service Type
|
|
302
|
+
|
|
303
|
+
`string`
|
|
304
|
+
|
|
305
|
+
## group
|
|
306
|
+
|
|
307
|
+
Group of the Inspector
|
|
308
|
+
|
|
309
|
+
`group`
|
|
310
|
+
|
|
311
|
+
* is required
|
|
312
|
+
|
|
313
|
+
* Type: `string`
|
|
314
|
+
|
|
315
|
+
* cannot be null
|
|
316
|
+
|
|
317
|
+
* defined in: [PINS Inspector](pins-inspector-properties-group.md "pins-inspector.schema.json#/properties/group")
|
|
318
|
+
|
|
319
|
+
### group Type
|
|
320
|
+
|
|
321
|
+
`string`
|
|
322
|
+
|
|
323
|
+
## inspectorManager
|
|
324
|
+
|
|
325
|
+
Name of the Inspector's manager.
|
|
326
|
+
|
|
327
|
+
`inspectorManager`
|
|
328
|
+
|
|
329
|
+
* is required
|
|
330
|
+
|
|
331
|
+
* Type: `string`
|
|
332
|
+
|
|
333
|
+
* cannot be null
|
|
334
|
+
|
|
335
|
+
* defined in: [PINS Inspector](pins-inspector-properties-inspectormanager.md "pins-inspector.schema.json#/properties/inspectorManager")
|
|
336
|
+
|
|
337
|
+
### inspectorManager Type
|
|
338
|
+
|
|
339
|
+
`string`
|
|
340
|
+
|
|
341
|
+
## validFrom
|
|
342
|
+
|
|
343
|
+
Date the Inspector record was first recorded.
|
|
344
|
+
|
|
345
|
+
`validFrom`
|
|
346
|
+
|
|
347
|
+
* is optional
|
|
348
|
+
|
|
349
|
+
* Type: `string`
|
|
350
|
+
|
|
351
|
+
* can be null
|
|
352
|
+
|
|
353
|
+
* defined in: [PINS Inspector](pins-inspector-properties-validfrom.md "pins-inspector.schema.json#/properties/validFrom")
|
|
354
|
+
|
|
355
|
+
### validFrom Type
|
|
356
|
+
|
|
357
|
+
`string`
|
|
358
|
+
|
|
359
|
+
### validFrom Constraints
|
|
360
|
+
|
|
361
|
+
**date time**: the string must be a date time string, according to [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification")
|
|
362
|
+
|
|
363
|
+
### validFrom Examples
|
|
364
|
+
|
|
365
|
+
```json
|
|
366
|
+
"2023-07-27T20:30:00.000Z"
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
## address
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
`address`
|
|
374
|
+
|
|
375
|
+
* is required
|
|
376
|
+
|
|
377
|
+
* Type: `object` ([Details](pins-inspector-properties-address.md))
|
|
378
|
+
|
|
379
|
+
* cannot be null
|
|
380
|
+
|
|
381
|
+
* defined in: [PINS Inspector](pins-inspector-properties-address.md "pins-inspector.schema.json#/properties/address")
|
|
382
|
+
|
|
383
|
+
### address Type
|
|
384
|
+
|
|
385
|
+
`object` ([Details](pins-inspector-properties-address.md))
|
|
386
|
+
|
|
387
|
+
## specialisms
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
`specialisms`
|
|
392
|
+
|
|
393
|
+
* is required
|
|
394
|
+
|
|
395
|
+
* Type: `object[]` ([Details](pins-inspector-defs-specialism.md))
|
|
396
|
+
|
|
397
|
+
* cannot be null
|
|
398
|
+
|
|
399
|
+
* defined in: [PINS Inspector](pins-inspector-properties-specialisms.md "pins-inspector.schema.json#/properties/specialisms")
|
|
400
|
+
|
|
401
|
+
### specialisms Type
|
|
402
|
+
|
|
403
|
+
`object[]` ([Details](pins-inspector-defs-specialism.md))
|
|
404
|
+
|
|
182
405
|
## Additional Properties
|
|
183
406
|
|
|
184
407
|
Additional properties are allowed and do not have to follow a specific schema
|
|
408
|
+
|
|
409
|
+
# PINS Inspector Definitions
|
|
410
|
+
|
|
411
|
+
## Definitions group specialism
|
|
412
|
+
|
|
413
|
+
Reference this group by using
|
|
414
|
+
|
|
415
|
+
```json
|
|
416
|
+
{"$ref":"pins-inspector.schema.json#/$defs/specialism"}
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
| Property | Type | Required | Nullable | Defined by |
|
|
420
|
+
| :-------------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
421
|
+
| [name](#name) | `string` | Required | cannot be null | [PINS Inspector](pins-inspector-defs-specialism-properties-name.md "pins-inspector.schema.json#/$defs/specialism/properties/name") |
|
|
422
|
+
| [proficiency](#proficiency) | `string` | Required | can be null | [PINS Inspector](pins-inspector-defs-specialism-properties-proficiency.md "pins-inspector.schema.json#/$defs/specialism/properties/proficiency") |
|
|
423
|
+
| [validFrom](#validfrom-1) | `string` | Required | can be null | [PINS Inspector](pins-inspector-defs-specialism-properties-validfrom.md "pins-inspector.schema.json#/$defs/specialism/properties/validFrom") |
|
|
424
|
+
| Additional Properties | Any | Optional | can be null | |
|
|
425
|
+
|
|
426
|
+
### name
|
|
427
|
+
|
|
428
|
+
Working above band is stored as a specialism
|
|
429
|
+
|
|
430
|
+
`name`
|
|
431
|
+
|
|
432
|
+
* is required
|
|
433
|
+
|
|
434
|
+
* Type: `string`
|
|
435
|
+
|
|
436
|
+
* cannot be null
|
|
437
|
+
|
|
438
|
+
* defined in: [PINS Inspector](pins-inspector-defs-specialism-properties-name.md "pins-inspector.schema.json#/$defs/specialism/properties/name")
|
|
439
|
+
|
|
440
|
+
#### name Type
|
|
441
|
+
|
|
442
|
+
`string`
|
|
443
|
+
|
|
444
|
+
### proficiency
|
|
445
|
+
|
|
446
|
+
trained or in-training
|
|
447
|
+
|
|
448
|
+
`proficiency`
|
|
449
|
+
|
|
450
|
+
* is required
|
|
451
|
+
|
|
452
|
+
* Type: `string`
|
|
453
|
+
|
|
454
|
+
* can be null
|
|
455
|
+
|
|
456
|
+
* defined in: [PINS Inspector](pins-inspector-defs-specialism-properties-proficiency.md "pins-inspector.schema.json#/$defs/specialism/properties/proficiency")
|
|
457
|
+
|
|
458
|
+
#### proficiency Type
|
|
459
|
+
|
|
460
|
+
`string`
|
|
461
|
+
|
|
462
|
+
### validFrom
|
|
463
|
+
|
|
464
|
+
Date training started or date training was completed.
|
|
465
|
+
|
|
466
|
+
`validFrom`
|
|
467
|
+
|
|
468
|
+
* is required
|
|
469
|
+
|
|
470
|
+
* Type: `string`
|
|
471
|
+
|
|
472
|
+
* can be null
|
|
473
|
+
|
|
474
|
+
* defined in: [PINS Inspector](pins-inspector-defs-specialism-properties-validfrom.md "pins-inspector.schema.json#/$defs/specialism/properties/validFrom")
|
|
475
|
+
|
|
476
|
+
#### validFrom Type
|
|
477
|
+
|
|
478
|
+
`string`
|
|
479
|
+
|
|
480
|
+
#### validFrom Constraints
|
|
481
|
+
|
|
482
|
+
**date time**: the string must be a date time string, according to [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification")
|
|
483
|
+
|
|
484
|
+
#### validFrom Examples
|
|
485
|
+
|
|
486
|
+
```json
|
|
487
|
+
"2023-07-27T20:30:00.000Z"
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
### Additional Properties
|
|
491
|
+
|
|
492
|
+
Additional properties are allowed and do not have to follow a specific schema
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# generated by datamodel-codegen:
|
|
2
2
|
# filename: appeal-has.schema.json
|
|
3
|
-
# timestamp: 2025-
|
|
3
|
+
# timestamp: 2025-11-07T15:19:29+00:00
|
|
4
4
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
@@ -232,6 +232,38 @@ class TypeOfPlanningApplication(Enum):
|
|
|
232
232
|
NoneType_None = None
|
|
233
233
|
|
|
234
234
|
|
|
235
|
+
class AdvertType(Enum):
|
|
236
|
+
field_4_6_Sheet_Non_Illuminated = "4-6 Sheet Non-Illuminated"
|
|
237
|
+
field_4_6_Sheet_Illuminated = "4-6 Sheet Illuminated"
|
|
238
|
+
field_12_16_32_Sheet_Non_Illuminated = "12/16/32 Sheet Non-Illuminated"
|
|
239
|
+
field_12_16_32_Sheet_Illuminated = "12/16/32 Sheet Illuminated"
|
|
240
|
+
field_48_64_96_Sheet_Non_Illuminated = "48/64/96 Sheet Non-Illuminated"
|
|
241
|
+
field_48_64_96_Sheet_Illuminated = "48/64/96 Sheet Illuminated"
|
|
242
|
+
Fascia_Projecting_Signs_Non_Illuminated = "Fascia Projecting Signs Non-Illuminated"
|
|
243
|
+
Fascia_Projecting_Signs_Illuminated = "Fascia Projecting Signs Illuminated"
|
|
244
|
+
Directional___Others_Non_Illuminated = "Directional & Others Non-Illuminated"
|
|
245
|
+
Directional___Others_Illuminated = "Directional & Others Illuminated"
|
|
246
|
+
Monolith_Totem_Signs_Non_Illuminated = "Monolith/Totem Signs Non-Illuminated"
|
|
247
|
+
Monolith_Totem_Signs_Illuminated = "Monolith/Totem Signs Illuminated"
|
|
248
|
+
Other = "Other"
|
|
249
|
+
NoneType_None = None
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
class AdvertDetail(BaseModel):
|
|
253
|
+
model_config = ConfigDict(
|
|
254
|
+
extra="allow",
|
|
255
|
+
)
|
|
256
|
+
advertType: AdvertType
|
|
257
|
+
isAdvertInPosition: bool | None = None
|
|
258
|
+
"""
|
|
259
|
+
Is the advertisement in position?
|
|
260
|
+
"""
|
|
261
|
+
isSiteOnHighwayLand: bool | None = None
|
|
262
|
+
"""
|
|
263
|
+
Is the site on highway land?
|
|
264
|
+
"""
|
|
265
|
+
|
|
266
|
+
|
|
235
267
|
class AppealHasCase1(BaseModel):
|
|
236
268
|
"""
|
|
237
269
|
Group A - Schema defining the metadata for an appeal
|
|
@@ -684,33 +716,47 @@ class AppealHasCase1(BaseModel):
|
|
|
684
716
|
Indicates if the appellant has applied for costs
|
|
685
717
|
"""
|
|
686
718
|
typeOfPlanningApplication: TypeOfPlanningApplication | None = None
|
|
687
|
-
siteGridReferenceEasting: constr(pattern=r"^\d{6}$")
|
|
719
|
+
siteGridReferenceEasting: constr(pattern=r"^\d{6,7}$") = Field(
|
|
688
720
|
..., examples=["357144"]
|
|
689
721
|
)
|
|
690
|
-
siteGridReferenceNorthing: constr(pattern=r"^\d{6}$")
|
|
722
|
+
siteGridReferenceNorthing: constr(pattern=r"^\d{6,7}$") = Field(
|
|
691
723
|
..., examples=["400534"]
|
|
692
724
|
)
|
|
693
725
|
hasLandownersPermission: bool | None = None
|
|
694
726
|
"""
|
|
695
|
-
|
|
727
|
+
Does the appellant have the landowners permission
|
|
696
728
|
"""
|
|
697
|
-
|
|
729
|
+
wasApplicationRefusedDueToHighwayOrTraffic: bool | None = None
|
|
730
|
+
"""
|
|
731
|
+
Did the LPA refuse the application because of highway or traffic public safety?
|
|
732
|
+
"""
|
|
733
|
+
didAppellantSubmitCompletePhotosAndPlans: bool | None = None
|
|
698
734
|
"""
|
|
699
|
-
|
|
735
|
+
Did the appellant submit complete photos and plans?
|
|
700
736
|
"""
|
|
701
737
|
isSiteInAreaOfSpecialControlAdverts: bool | None = None
|
|
702
738
|
"""
|
|
703
|
-
|
|
739
|
+
Is the site in an area of special control of advertisements?
|
|
704
740
|
"""
|
|
705
|
-
|
|
741
|
+
advertDetails: list[AdvertDetail] | None = None
|
|
706
742
|
"""
|
|
707
|
-
|
|
743
|
+
A list of advertisements for the appeal
|
|
708
744
|
"""
|
|
709
|
-
|
|
745
|
+
|
|
746
|
+
|
|
747
|
+
class AdvertDetail1(BaseModel):
|
|
748
|
+
model_config = ConfigDict(
|
|
749
|
+
extra="allow",
|
|
750
|
+
)
|
|
751
|
+
advertType: AdvertType
|
|
752
|
+
isAdvertInPosition: bool | None = None
|
|
753
|
+
"""
|
|
754
|
+
Is the advertisement in position?
|
|
710
755
|
"""
|
|
711
|
-
|
|
756
|
+
isSiteOnHighwayLand: bool | None = None
|
|
757
|
+
"""
|
|
758
|
+
Is the site on highway land?
|
|
712
759
|
"""
|
|
713
|
-
advertType: str | None = None
|
|
714
760
|
|
|
715
761
|
|
|
716
762
|
class AppealHasCase2(BaseModel):
|
|
@@ -947,7 +993,7 @@ class AppealHasCase2(BaseModel):
|
|
|
947
993
|
"""
|
|
948
994
|
The statutory deadline for submitting an appeal from the original LPA decision date
|
|
949
995
|
"""
|
|
950
|
-
siteAddressLine1: str
|
|
996
|
+
siteAddressLine1: str = Field(..., examples=["96 The Avenue"])
|
|
951
997
|
"""
|
|
952
998
|
First line of address for the appeal site
|
|
953
999
|
"""
|
|
@@ -955,7 +1001,7 @@ class AppealHasCase2(BaseModel):
|
|
|
955
1001
|
"""
|
|
956
1002
|
Second line of address for the appeal site
|
|
957
1003
|
"""
|
|
958
|
-
siteAddressTown: str
|
|
1004
|
+
siteAddressTown: str = Field(..., examples=["Maidstone"])
|
|
959
1005
|
"""
|
|
960
1006
|
Town / City of the site address
|
|
961
1007
|
"""
|
|
@@ -963,7 +1009,7 @@ class AppealHasCase2(BaseModel):
|
|
|
963
1009
|
"""
|
|
964
1010
|
County of the site address
|
|
965
1011
|
"""
|
|
966
|
-
siteAddressPostcode: str
|
|
1012
|
+
siteAddressPostcode: str = Field(..., examples=["MD21 5XY"])
|
|
967
1013
|
"""
|
|
968
1014
|
Postal code of the site address
|
|
969
1015
|
"""
|
|
@@ -1165,33 +1211,32 @@ class AppealHasCase2(BaseModel):
|
|
|
1165
1211
|
Indicates if the appellant has applied for costs
|
|
1166
1212
|
"""
|
|
1167
1213
|
typeOfPlanningApplication: TypeOfPlanningApplication | None = None
|
|
1168
|
-
siteGridReferenceEasting: constr(pattern=r"^\d{6}$") | None = Field(
|
|
1214
|
+
siteGridReferenceEasting: constr(pattern=r"^\d{6,7}$") | None = Field(
|
|
1169
1215
|
None, examples=["357144"]
|
|
1170
1216
|
)
|
|
1171
|
-
siteGridReferenceNorthing: constr(pattern=r"^\d{6}$") | None = Field(
|
|
1217
|
+
siteGridReferenceNorthing: constr(pattern=r"^\d{6,7}$") | None = Field(
|
|
1172
1218
|
None, examples=["400534"]
|
|
1173
1219
|
)
|
|
1174
1220
|
hasLandownersPermission: bool | None = None
|
|
1175
1221
|
"""
|
|
1176
|
-
|
|
1222
|
+
Does the appellant have the landowners permission
|
|
1177
1223
|
"""
|
|
1178
|
-
|
|
1224
|
+
wasApplicationRefusedDueToHighwayOrTraffic: bool | None = None
|
|
1179
1225
|
"""
|
|
1180
|
-
|
|
1226
|
+
Did the LPA refuse the application because of highway or traffic public safety?
|
|
1181
1227
|
"""
|
|
1182
|
-
|
|
1228
|
+
didAppellantSubmitCompletePhotosAndPlans: bool | None = None
|
|
1183
1229
|
"""
|
|
1184
|
-
|
|
1230
|
+
Did the appellant submit complete photos and plans?
|
|
1185
1231
|
"""
|
|
1186
|
-
|
|
1232
|
+
isSiteInAreaOfSpecialControlAdverts: bool | None = None
|
|
1187
1233
|
"""
|
|
1188
|
-
|
|
1234
|
+
Is the site in an area of special control of advertisements?
|
|
1189
1235
|
"""
|
|
1190
|
-
|
|
1236
|
+
advertDetails: list[AdvertDetail1] | None = None
|
|
1191
1237
|
"""
|
|
1192
|
-
|
|
1238
|
+
A list of advertisements for the appeal
|
|
1193
1239
|
"""
|
|
1194
|
-
advertType: str | None = None
|
|
1195
1240
|
|
|
1196
1241
|
|
|
1197
1242
|
class AppealHasCase(RootModel[AppealHasCase1 | AppealHasCase2]):
|