@planning-inspectorate/data-model 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/.azure/ci.yml +60 -0
  2. package/.azure/release.yml +57 -0
  3. package/.github/dependabot.yml +11 -0
  4. package/.husky/install.mjs +7 -0
  5. package/.husky/pre-commit +1 -0
  6. package/.prettierignore +11 -0
  7. package/.prettierrc +19 -0
  8. package/LICENSE +21 -0
  9. package/README.md +237 -0
  10. package/commitlint.config.js +8 -0
  11. package/docs/README.md +85 -0
  12. package/docs/appeal-document.md +776 -0
  13. package/docs/appeal-event-estimate.md +108 -0
  14. package/docs/appeal-event.md +404 -0
  15. package/docs/appeal-has.md +1960 -0
  16. package/docs/appeal-representation.md +375 -0
  17. package/docs/appeal-s78.md +3607 -0
  18. package/docs/appeal.md +1879 -0
  19. package/docs/case-schedule.md +8 -0
  20. package/docs/dart-response.md +1413 -0
  21. package/docs/employee.md +70 -0
  22. package/docs/entraid.md +108 -0
  23. package/docs/folder.md +147 -0
  24. package/docs/gettimesheets-response.md +188 -0
  25. package/docs/interested-party.md +284 -0
  26. package/docs/listed-building.md +113 -0
  27. package/docs/listed-buildings.md +113 -0
  28. package/docs/nsip-document.md +966 -0
  29. package/docs/nsip-exam-timetable-defs-event.md +223 -0
  30. package/docs/nsip-exam-timetable-defs-line-item.md +51 -0
  31. package/docs/nsip-exam-timetable-defs.md +3 -0
  32. package/docs/nsip-exam-timetable-submission.md +113 -0
  33. package/docs/nsip-exam-timetable.md +352 -0
  34. package/docs/nsip-project-update.md +163 -0
  35. package/docs/nsip-project.md +2098 -0
  36. package/docs/nsip-representation-defs-attachment.md +133 -0
  37. package/docs/nsip-representation-defs.md +3 -0
  38. package/docs/nsip-representation.md +448 -0
  39. package/docs/nsip-subscription.md +193 -0
  40. package/docs/pins-inspector.md +184 -0
  41. package/docs/pins-lpa.md +260 -0
  42. package/docs/s51-advice.md +460 -0
  43. package/docs/service-user.md +575 -0
  44. package/eslint.config.js +21 -0
  45. package/jsconfig.json +12 -0
  46. package/package.json +55 -0
  47. package/pins_data_model/__init__.py +0 -0
  48. package/pins_data_model/gen_models.py +51 -0
  49. package/pins_data_model/load_schemas.py +51 -0
  50. package/pins_data_model/models/__init__.py +0 -0
  51. package/pins_data_model/models/model_appeal_document.py +294 -0
  52. package/pins_data_model/models/model_appeal_event.py +117 -0
  53. package/pins_data_model/models/model_appeal_event_estimate.py +37 -0
  54. package/pins_data_model/models/model_appeal_has.py +585 -0
  55. package/pins_data_model/models/model_appeal_representation.py +132 -0
  56. package/pins_data_model/models/model_appeal_s78.py +864 -0
  57. package/pins_data_model/models/model_case_schedule.py +11 -0
  58. package/pins_data_model/models/model_dart_response.py +292 -0
  59. package/pins_data_model/models/model_entraid.py +37 -0
  60. package/pins_data_model/models/model_folder.py +56 -0
  61. package/pins_data_model/models/model_gettimesheets_response.py +45 -0
  62. package/pins_data_model/models/model_listed_building.py +33 -0
  63. package/pins_data_model/models/model_listed_buildings.py +33 -0
  64. package/pins_data_model/models/model_nsip_document.py +199 -0
  65. package/pins_data_model/models/model_nsip_exam_timetable.py +90 -0
  66. package/pins_data_model/models/model_nsip_project.py +488 -0
  67. package/pins_data_model/models/model_nsip_project_update.py +60 -0
  68. package/pins_data_model/models/model_nsip_representation.py +83 -0
  69. package/pins_data_model/models/model_nsip_subscription.py +60 -0
  70. package/pins_data_model/models/model_pins_inspector.py +53 -0
  71. package/pins_data_model/models/model_pins_lpa.py +69 -0
  72. package/pins_data_model/models/model_s51_advice.py +109 -0
  73. package/pins_data_model/models/model_service_user.py +121 -0
  74. package/requirements.txt +2 -0
  75. package/schemas/__init__.py +0 -0
  76. package/schemas/appeal-document.schema.json +250 -0
  77. package/schemas/appeal-event-estimate.schema.json +31 -0
  78. package/schemas/appeal-event.schema.json +123 -0
  79. package/schemas/appeal-has.schema.json +576 -0
  80. package/schemas/appeal-representation.schema.json +131 -0
  81. package/schemas/appeal-s78.schema.json +1060 -0
  82. package/schemas/commands/__init__.py +0 -0
  83. package/schemas/commands/appeal-common-submission.schema.json +202 -0
  84. package/schemas/commands/appeal-has-submission.schema.json +82 -0
  85. package/schemas/commands/appeal-representation-submission.schema.json +192 -0
  86. package/schemas/commands/appeal-s78-submission.schema.json +100 -0
  87. package/schemas/commands/appellant-submission.schema.json +164 -0
  88. package/schemas/commands/interested-party.schema.json +80 -0
  89. package/schemas/commands/lpa-questionnaire-common.schema.json +110 -0
  90. package/schemas/commands/lpa-questionnaire-has.schema.json +69 -0
  91. package/schemas/commands/lpa-questionnaire-s78.schema.json +218 -0
  92. package/schemas/commands/lpa-questionnaire.schema.json +125 -0
  93. package/schemas/commands/new-deadline-submission.schema.json +59 -0
  94. package/schemas/commands/nsip-exam-timetable-submission.schema.json +27 -0
  95. package/schemas/commands/register-nsip-subscription.schema.json +32 -0
  96. package/schemas/commands/register-representation.schema.json +51 -0
  97. package/schemas/dart-response.schema.json +350 -0
  98. package/schemas/entraid.schema.json +31 -0
  99. package/schemas/folder.schema.json +49 -0
  100. package/schemas/gettimesheets-response.schema.json +46 -0
  101. package/schemas/listed-building.schema.json +31 -0
  102. package/schemas/listed-buildings.schema.json +31 -0
  103. package/schemas/nsip-document.schema.json +235 -0
  104. package/schemas/nsip-exam-timetable.schema.json +101 -0
  105. package/schemas/nsip-project-update.schema.json +49 -0
  106. package/schemas/nsip-project.schema.json +539 -0
  107. package/schemas/nsip-representation.schema.json +110 -0
  108. package/schemas/nsip-subscription.schema.json +52 -0
  109. package/schemas/pins-inspector.schema.json +47 -0
  110. package/schemas/pins-lpa.schema.json +63 -0
  111. package/schemas/s51-advice.schema.json +113 -0
  112. package/schemas/service-user.schema.json +152 -0
  113. package/setup.py +15 -0
  114. package/src/enums.cjs +632 -0
  115. package/src/enums.d.ts +573 -0
  116. package/src/enums.js +573 -0
  117. package/src/gen-docs.js +34 -0
  118. package/src/gen-enums.js +119 -0
  119. package/src/gen-types.js +70 -0
  120. package/src/index.cjs +746 -0
  121. package/src/index.d.ts +18 -0
  122. package/src/index.js +34 -0
  123. package/src/lib/load.js +78 -0
  124. package/src/schemas.d.ts +4570 -0
  125. package/tests/appeals/appeal-event.test.js +62 -0
  126. package/tests/appeals/commands/appeal-representation-submission.test.js +107 -0
  127. package/tests/appeals/commands/has-questionnaire.test.js +92 -0
  128. package/tests/appeals/commands/has-submission.test.js +113 -0
  129. package/tests/appeals/commands/s78-questionnaire.test.js +96 -0
  130. package/tests/appeals/commands/s78-submission.test.js +119 -0
  131. package/tests/schemas.test.js +97 -0
@@ -0,0 +1,164 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "commands/appellant-submission.schema.json",
4
+ "title": "Appellant Submission Command",
5
+ "description": "Schema defining the data produced by the Front-Office when an appeal is requested",
6
+ "$comment": "This is a combination of Appeal, Documents and Service user data",
7
+ "type": "object",
8
+ "additionalProperties": true,
9
+ "required": ["casedata", "documents", "users"],
10
+ "properties": {
11
+ "casedata": {
12
+ "type": "object",
13
+ "additionalProperties": true,
14
+ "required": ["caseType"],
15
+ "oneOf": [
16
+ {
17
+ "allOf": [{ "properties": { "caseType": { "const": "D" } } }, { "$ref": "appeal-has-submission.schema.json" }]
18
+ },
19
+ {
20
+ "allOf": [{ "properties": { "caseType": { "const": "W" } } }, { "$ref": "appeal-s78-submission.schema.json" }]
21
+ },
22
+ {
23
+ "allOf": [{ "properties": { "caseType": { "const": "Y" } } }, { "$ref": "appeal-s78-submission.schema.json" }]
24
+ }
25
+ ]
26
+ },
27
+ "documents": {
28
+ "type": "array",
29
+ "items": {
30
+ "type": "object",
31
+ "additionalProperties": true,
32
+ "properties": {
33
+ "documentId": {
34
+ "type": "string",
35
+ "examples": ["4547fec8-16b2-47bb-836d-4d0baac04079"],
36
+ "description": "The unique identifier for the document"
37
+ },
38
+ "filename": {
39
+ "type": "string",
40
+ "examples": ["filename.pdf"],
41
+ "description": "Current stored name of the document"
42
+ },
43
+ "originalFilename": {
44
+ "type": "string",
45
+ "examples": ["original_filename.pdf"],
46
+ "description": "Original name of document"
47
+ },
48
+ "size": {
49
+ "type": "integer",
50
+ "examples": [23452],
51
+ "description": "The file size, in bytes"
52
+ },
53
+ "mime": {
54
+ "type": ["string"],
55
+ "examples": ["application/pdf"],
56
+ "description": "The mime type for the current version of the file"
57
+ },
58
+ "documentURI": {
59
+ "type": "string",
60
+ "examples": [
61
+ "https://custom-domain.gov.uk/container-name/appeal/7002471/4547fec8-16b2-47bb-836d-4d0baac04079/v1/filename.pdf"
62
+ ],
63
+ "description": "The internal location of the document",
64
+ "$comment": "This property contains blob storage info (domain, container), caseReference, version and filename"
65
+ },
66
+ "dateCreated": {
67
+ "type": "string",
68
+ "format": "date-time",
69
+ "examples": ["2023-07-27T20:30:00.000Z"],
70
+ "description": "The creation date for the document"
71
+ },
72
+ "documentType": {
73
+ "type": ["string", "null"],
74
+ "enum": [
75
+ "appellantCaseCorrespondence",
76
+ "appellantCaseWithdrawalLetter",
77
+ "appellantCostsApplication",
78
+ "appellantCostsCorrespondence",
79
+ "appellantCostsWithdrawal",
80
+ "appellantStatement",
81
+ "applicationDecisionLetter",
82
+ "changedDescription",
83
+ "originalApplicationForm",
84
+ "planningObligation",
85
+ "ownershipCertificate",
86
+ "statementCommonGround",
87
+ "designAccessStatement",
88
+ "plansDrawings",
89
+ "newPlansDrawings",
90
+ "otherNewDocuments",
91
+ null,
92
+ "environmentalAssessment"
93
+ ],
94
+ "description": "The type of document, used for exchange, migrations and consumption from the appeal back-office system"
95
+ }
96
+ },
97
+ "required": [
98
+ "documentId",
99
+ "filename",
100
+ "originalFilename",
101
+ "size",
102
+ "mime",
103
+ "documentURI",
104
+ "dateCreated",
105
+ "documentType"
106
+ ]
107
+ }
108
+ },
109
+ "users": {
110
+ "type": "array",
111
+ "minItems": 1,
112
+ "items": {
113
+ "type": "object",
114
+ "additionalProperties": true,
115
+ "properties": {
116
+ "salutation": {
117
+ "type": ["string", "null"],
118
+ "description": "A formal greeting, e.g., Mr, Mrs, Ms.",
119
+ "examples": ["Mr"]
120
+ },
121
+ "firstName": {
122
+ "type": ["string", "null"],
123
+ "description": "The first name of the individual.",
124
+ "examples": ["John"]
125
+ },
126
+ "lastName": {
127
+ "type": ["string", "null"],
128
+ "description": "The last name of the individual.",
129
+ "examples": ["Doe"]
130
+ },
131
+ "emailAddress": {
132
+ "type": ["string", "null"],
133
+ "description": "The primary email address for contact.",
134
+ "examples": ["john.doe@example.com"]
135
+ },
136
+ "telephoneNumber": {
137
+ "type": ["string", "null"],
138
+ "description": "The primary telephone contact number.",
139
+ "examples": ["+447123456789"]
140
+ },
141
+ "organisation": {
142
+ "type": ["string", "null"],
143
+ "description": "The name of the organisation associated with the individual.",
144
+ "examples": ["Tech Corp"]
145
+ },
146
+ "serviceUserType": {
147
+ "type": "string",
148
+ "description": "Type or category of the service user.",
149
+ "enum": ["Appellant", "Agent"]
150
+ }
151
+ },
152
+ "required": [
153
+ "salutation",
154
+ "firstName",
155
+ "lastName",
156
+ "emailAddress",
157
+ "telephoneNumber",
158
+ "organisation",
159
+ "serviceUserType"
160
+ ]
161
+ }
162
+ }
163
+ }
164
+ }
@@ -0,0 +1,80 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "commands/interested-party.schema.json",
4
+ "title": "interested-party",
5
+ "description": "Subset of Pins Data Model [Service User]",
6
+ "type": "object",
7
+ "additionalProperties": true,
8
+ "required": [],
9
+ "properties": {
10
+ "id": {
11
+ "type": "number",
12
+ "examples": [18]
13
+ },
14
+ "interestedPartyNumber": {
15
+ "type": "string",
16
+ "examples": ["IP1234"]
17
+ },
18
+ "firstName": {
19
+ "type": "string",
20
+ "examples": ["Alan"]
21
+ },
22
+ "lastName": {
23
+ "type": "string",
24
+ "examples": ["Turing"]
25
+ },
26
+ "under18": {
27
+ "type": "boolean"
28
+ },
29
+ "organisationName": {
30
+ "title": "Name",
31
+ "type": "string",
32
+ "default": "",
33
+ "examples": ["National Highways"],
34
+ "pattern": "^.*$"
35
+ },
36
+ "jobTitle": {
37
+ "type": "string",
38
+ "examples": ["Communications Manager"]
39
+ },
40
+ "contactMethod": {
41
+ "type": "string",
42
+ "enum": ["email", "post"]
43
+ },
44
+ "email": {
45
+ "type": "string",
46
+ "examples": ["alan.turing@planninginspectorate.gov.uk"]
47
+ },
48
+ "phoneNumber": {
49
+ "type": "string",
50
+ "examples": ["0137732432"]
51
+ },
52
+ "address": {
53
+ "title": "Address",
54
+ "type": "object",
55
+ "required": ["addressLine1", "town", "postcode"],
56
+ "properties": {
57
+ "addressLine1": {
58
+ "type": "string",
59
+ "examples": ["National Traffic Operations Centre"]
60
+ },
61
+ "addressLine2": {
62
+ "type": "string",
63
+ "examples": ["3 Ridgeway, Quinton Business Park"]
64
+ },
65
+ "town": {
66
+ "type": "string",
67
+ "examples": ["Birmingham"]
68
+ },
69
+ "postcode": {
70
+ "type": "string",
71
+ "examples": ["B32 1AF"]
72
+ },
73
+ "country": {
74
+ "type": "string",
75
+ "examples": ["England"]
76
+ }
77
+ }
78
+ }
79
+ }
80
+ }
@@ -0,0 +1,110 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "commands/lpa-questionnaire-common.schema.json",
4
+ "title": "LPAQ common submission properties",
5
+ "description": "Schema defining any properties common across all appeal types for LPAQ submissions",
6
+ "type": "object",
7
+ "additionalProperties": true,
8
+ "required": [
9
+ "caseReference",
10
+ "lpaQuestionnaireSubmittedDate",
11
+ "siteAccessDetails",
12
+ "siteSafetyDetails",
13
+ "nearbyCaseReferences",
14
+ "neighbouringSiteAddresses"
15
+ ],
16
+ "properties": {
17
+ "caseReference": {
18
+ "type": "string",
19
+ "examples": ["7002471"],
20
+ "description": "External case identifier"
21
+ },
22
+ "lpaQuestionnaireSubmittedDate": {
23
+ "type": ["string", "null"],
24
+ "format": "date-time",
25
+ "examples": ["2023-07-27T20:30:00.000Z"],
26
+ "description": "The date the LPA provided a response to the case"
27
+ },
28
+ "siteAccessDetails": {
29
+ "type": ["array", "null"],
30
+ "items": {
31
+ "type": "string",
32
+ "examples": ["The site is accessible through the small gate on the left of the property"]
33
+ },
34
+ "description": "Provided information on site accessibility"
35
+ },
36
+ "siteSafetyDetails": {
37
+ "type": ["array", "null"],
38
+ "items": {
39
+ "type": "string",
40
+ "examples": ["There is an aggressive dog in the property"]
41
+ },
42
+ "description": "Provided information on site health and safety"
43
+ },
44
+ "nearbyCaseReferences": {
45
+ "type": ["array", "null"],
46
+ "items": {
47
+ "type": "string",
48
+ "examples": ["6000456", "8004567"]
49
+ },
50
+ "description": "A list of related case references known to the appellant and the LPA"
51
+ },
52
+ "neighbouringSiteAddresses": {
53
+ "type": ["array", "null"],
54
+ "items": {
55
+ "type": "object",
56
+ "additionalProperties": true,
57
+ "properties": {
58
+ "neighbouringSiteAddressLine1": {
59
+ "type": "string",
60
+ "examples": ["96 The Avenue"],
61
+ "description": "First line of address of the site"
62
+ },
63
+ "neighbouringSiteAddressLine2": {
64
+ "type": ["string", "null"],
65
+ "description": "Second line of address of the site"
66
+ },
67
+ "neighbouringSiteAddressTown": {
68
+ "type": "string",
69
+ "examples": ["Maidstone"],
70
+ "description": "Town / City of the site address"
71
+ },
72
+ "neighbouringSiteAddressCounty": {
73
+ "type": ["string", "null"],
74
+ "examples": ["Kent"],
75
+ "description": "County of the site address"
76
+ },
77
+ "neighbouringSiteAddressPostcode": {
78
+ "type": "string",
79
+ "examples": ["MD21 5XY"],
80
+ "description": "Postal code of the site address"
81
+ },
82
+ "neighbouringSiteAccessDetails": {
83
+ "type": ["string", "null"],
84
+ "examples": ["Ongoing road works at this address"],
85
+ "description": "Provided information on site accessibility on this address"
86
+ },
87
+ "neighbouringSiteSafetyDetails": {
88
+ "type": ["string", "null"],
89
+ "examples": ["Ongoing road works at this address"],
90
+ "description": "Provided information on site health and safety on this address"
91
+ }
92
+ },
93
+ "required": [
94
+ "neighbouringSiteAddressLine1",
95
+ "neighbouringSiteAddressLine2",
96
+ "neighbouringSiteAddressTown",
97
+ "neighbouringSiteAddressCounty",
98
+ "neighbouringSiteAddressPostcode",
99
+ "neighbouringSiteAccessDetails",
100
+ "neighbouringSiteSafetyDetails"
101
+ ]
102
+ },
103
+ "description": "A list of neighbouring site addresses"
104
+ },
105
+ "reasonForNeighbourVisits": {
106
+ "type": ["string", "null"],
107
+ "description": "A general reason given for the need to visit any neighbours"
108
+ }
109
+ }
110
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "commands/lpa-questionnaire-has.schema.json",
4
+ "title": "LPAQ HAS submission properties",
5
+ "description": "Schema defining any HAS specific properties for LPAQ submissions",
6
+ "type": "object",
7
+ "additionalProperties": true,
8
+ "required": [
9
+ "isCorrectAppealType",
10
+ "affectedListedBuildingNumbers",
11
+ "isGreenBelt",
12
+ "inConservationArea",
13
+ "newConditionDetails",
14
+ "notificationMethod",
15
+ "lpaCostsAppliedFor",
16
+ "lpaStatement"
17
+ ],
18
+ "allOf": [
19
+ { "$ref": "lpa-questionnaire-common.schema.json" },
20
+ {
21
+ "properties": {
22
+ "isCorrectAppealType": {
23
+ "type": ["boolean", "null"],
24
+ "description": "Indicates if the LPA considers the appeal type appropriate"
25
+ },
26
+ "affectedListedBuildingNumbers": {
27
+ "type": ["array", "null"],
28
+ "items": {
29
+ "type": "string",
30
+ "examples": ["10023", "17824"]
31
+ },
32
+ "description": "A list of affected listed building IDs from Historic England"
33
+ },
34
+ "isGreenBelt": {
35
+ "type": ["boolean", "null"],
36
+ "description": "Indicates if the site is in a green belt"
37
+ },
38
+
39
+ "inConservationArea": {
40
+ "type": ["boolean", "null"],
41
+ "description": "Indicates if the site is in a conservation area"
42
+ },
43
+ "newConditionDetails": {
44
+ "type": ["string", "null"],
45
+ "examples": ["Since the original application, a number of things have changed..."],
46
+ "description": "New conditions details provided by the LPA"
47
+ },
48
+ "notificationMethod": {
49
+ "type": ["array", "null"],
50
+ "items": {
51
+ "type": "string",
52
+ "examples": ["notice", "letter", "advert"]
53
+ },
54
+ "description": "The methods used to notify relevant parties"
55
+ },
56
+
57
+ "lpaCostsAppliedFor": {
58
+ "type": ["boolean", "null"],
59
+ "description": "Indicates if the LPA has applied for costs"
60
+ },
61
+ "lpaStatement": {
62
+ "type": ["string", "null"],
63
+ "examples": ["We refused the application because of ..."],
64
+ "description": "A statement provided by the LPA, unused?"
65
+ }
66
+ }
67
+ }
68
+ ]
69
+ }
@@ -0,0 +1,218 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "commands/lpa-questionnaire-s78.schema.json",
4
+ "title": "LPAQ S78 submission properties",
5
+ "description": "Schema defining any S78 specific properties for LPAQ submissions",
6
+ "type": "object",
7
+ "additionalProperties": true,
8
+ "required": [
9
+ "changedListedBuildingNumbers",
10
+ "affectsScheduledMonument",
11
+ "hasProtectedSpecies",
12
+ "isAonbNationalLandscape",
13
+ "designatedSitesNames",
14
+ "hasTreePreservationOrder",
15
+ "isGypsyOrTravellerSite",
16
+ "isPublicRightOfWay",
17
+ "eiaEnvironmentalImpactSchedule",
18
+ "eiaDevelopmentDescription",
19
+ "eiaSensitiveAreaDetails",
20
+ "eiaColumnTwoThreshold",
21
+ "eiaScreeningOpinion",
22
+ "eiaRequiresEnvironmentalStatement",
23
+ "eiaCompletedEnvironmentalStatement",
24
+ "hasStatutoryConsultees",
25
+ "consultedBodiesDetails",
26
+ "hasConsultationResponses",
27
+ "hasEmergingPlan",
28
+ "hasSupplementaryPlanningDocs",
29
+ "hasInfrastructureLevy",
30
+ "isInfrastructureLevyFormallyAdopted",
31
+ "infrastructureLevyAdoptedDate",
32
+ "infrastructureLevyExpectedDate",
33
+ "lpaProcedurePreference",
34
+ "lpaProcedurePreferenceDetails",
35
+ "lpaProcedurePreferenceDuration"
36
+ ],
37
+ "allOf": [
38
+ { "$ref": "lpa-questionnaire-has.schema.json" },
39
+ {
40
+ "properties": {
41
+ "changedListedBuildingNumbers": {
42
+ "type": ["array", "null"],
43
+ "items": {
44
+ "type": "string",
45
+ "examples": ["10023", "17824"]
46
+ },
47
+ "description": "A list of changed listed building IDs from Historic England",
48
+ "$comment": "Only available in S78 cases"
49
+ },
50
+ "preserveGrantLoan": {
51
+ "type": ["boolean", "null"],
52
+ "description": "A grant or loan has been made to preserve the listed building",
53
+ "$comment": "Only available in S20 cases"
54
+ },
55
+ "consultHistoricEngland": {
56
+ "type": ["boolean", "null"],
57
+ "description": "Are Historic England to be consulted?",
58
+ "$comment": "Only available in S20 cases"
59
+ },
60
+ "affectsScheduledMonument": {
61
+ "type": ["boolean", "null"],
62
+ "description": "Indicates that a scheduled monument is affected",
63
+ "$comment": "Only available in S78 cases"
64
+ },
65
+ "hasProtectedSpecies": {
66
+ "type": ["boolean", "null"],
67
+ "description": "Indicates the existence of protected species",
68
+ "$comment": "Only available in S78 cases"
69
+ },
70
+ "isAonbNationalLandscape": {
71
+ "type": ["boolean", "null"],
72
+ "description": "Indicates an area of outstanding beauty (National Landscape)",
73
+ "$comment": "Only available in S78 cases"
74
+ },
75
+ "designatedSitesNames": {
76
+ "type": ["array", "null"],
77
+ "items": {
78
+ "type": "string",
79
+ "examples": ["SSSI", "cSAC", "SAC", "pSPA", "SPA", "user entered value"]
80
+ },
81
+ "description": "The designated site names",
82
+ "$comment": "Only available in S78 cases"
83
+ },
84
+ "hasTreePreservationOrder": {
85
+ "type": ["boolean", "null"],
86
+ "description": "Indicates a TPO (tree preservation order)",
87
+ "$comment": "Only available in S78 cases"
88
+ },
89
+ "isGypsyOrTravellerSite": {
90
+ "type": ["boolean", "null"],
91
+ "description": "Indicates a traveller site",
92
+ "$comment": "Only available in S78 cases"
93
+ },
94
+ "isPublicRightOfWay": {
95
+ "type": ["boolean", "null"],
96
+ "description": "Indicates a PROW (public right of way)",
97
+ "$comment": "Only available in S78 cases"
98
+ },
99
+ "eiaEnvironmentalImpactSchedule": {
100
+ "type": ["string", "null"],
101
+ "enum": ["schedule-1", "schedule-2", null],
102
+ "description": "The impact schedule from EIA",
103
+ "$comment": "Only available in S78 cases"
104
+ },
105
+ "eiaDevelopmentDescription": {
106
+ "type": ["string", "null"],
107
+ "enum": [
108
+ "agriculture-aquaculture",
109
+ "change-extensions",
110
+ "chemical-industry",
111
+ "energy-industry",
112
+ "extractive-industry",
113
+ "food-industry",
114
+ "infrastructure-projects",
115
+ "mineral-industry",
116
+ "other-projects",
117
+ "production-processing-of-metals",
118
+ "rubber-industry",
119
+ "textile-industries",
120
+ "tourism-leisure",
121
+ null
122
+ ],
123
+ "description": "The development description from EIA",
124
+ "$comment": "Only available in S78 cases"
125
+ },
126
+ "eiaSensitiveAreaDetails": {
127
+ "type": ["string", "null"],
128
+ "description": "The sensitive area details from EIA",
129
+ "$comment": "Only available in S78 cases"
130
+ },
131
+ "eiaColumnTwoThreshold": {
132
+ "type": ["boolean", "null"],
133
+ "description": "EIA specific threshold",
134
+ "$comment": "Only available in S78 cases"
135
+ },
136
+ "eiaScreeningOpinion": {
137
+ "type": ["boolean", "null"],
138
+ "description": "EIA screening opinion",
139
+ "$comment": "Only available in S78 cases"
140
+ },
141
+ "eiaRequiresEnvironmentalStatement": {
142
+ "type": ["boolean", "null"],
143
+ "description": "EIA environmental statement required",
144
+ "$comment": "Only available in S78 cases"
145
+ },
146
+ "eiaCompletedEnvironmentalStatement": {
147
+ "type": ["boolean", "null"],
148
+ "description": "EIA completed environmental statement required",
149
+ "$comment": "Only available in S78 cases"
150
+ },
151
+ "hasStatutoryConsultees": {
152
+ "type": ["boolean", "null"],
153
+ "description": "Indicates statutory consultees",
154
+ "$comment": "Only available in S78 cases"
155
+ },
156
+ "consultedBodiesDetails": {
157
+ "type": ["string", "null"],
158
+ "description": "The details of the bodies consulted"
159
+ },
160
+ "hasConsultationResponses": {
161
+ "type": ["boolean", "null"],
162
+ "description": "Indicates consultation responses",
163
+ "$comment": "Only available in S78 cases"
164
+ },
165
+ "hasEmergingPlan": {
166
+ "type": ["boolean", "null"],
167
+ "description": "Indicates emerging plans",
168
+ "$comment": "Only available in S78 cases"
169
+ },
170
+ "hasSupplementaryPlanningDocs": {
171
+ "type": ["boolean", "null"],
172
+ "description": "Indicates supplementary planning documents",
173
+ "$comment": "Only available in S78 cases"
174
+ },
175
+ "hasInfrastructureLevy": {
176
+ "type": ["boolean", "null"],
177
+ "description": "Indicates the existence of an infrastructure levy",
178
+ "$comment": "Only available in S78 cases"
179
+ },
180
+ "isInfrastructureLevyFormallyAdopted": {
181
+ "type": ["boolean", "null"],
182
+ "description": "Indicates if the infrastructure levy is formally adopted",
183
+ "$comment": "Only available in S78 cases"
184
+ },
185
+ "infrastructureLevyAdoptedDate": {
186
+ "type": ["string", "null"],
187
+ "format": "date-time",
188
+ "examples": ["2023-07-27T20:30:00.000Z"],
189
+ "description": "The date of the infrastructure levy adoption",
190
+ "$comment": "Only available in S78 cases"
191
+ },
192
+ "infrastructureLevyExpectedDate": {
193
+ "type": ["string", "null"],
194
+ "format": "date-time",
195
+ "examples": ["2023-07-27T20:30:00.000Z"],
196
+ "description": "The expected date of the infrastructure levy",
197
+ "$comment": "Only available in S78 cases"
198
+ },
199
+ "lpaProcedurePreference": {
200
+ "type": ["string", "null"],
201
+ "enum": ["written", "hearing", "inquiry", null],
202
+ "description": "The procedure preference indicated by the LPA",
203
+ "$comment": "Only available in S78 cases"
204
+ },
205
+ "lpaProcedurePreferenceDetails": {
206
+ "type": ["string", "null"],
207
+ "description": "The procedure details preference indicated by the LPA",
208
+ "$comment": "Only available in S78 cases"
209
+ },
210
+ "lpaProcedurePreferenceDuration": {
211
+ "type": ["number", "null"],
212
+ "description": "The duration of enquiry indicated by the LPA",
213
+ "$comment": "Only available in S78 cases"
214
+ }
215
+ }
216
+ }
217
+ ]
218
+ }