@planning-inspectorate/data-model 2.3.1 → 2.4.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@planning-inspectorate/data-model",
3
- "version": "2.3.1",
3
+ "version": "2.4.1",
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-has.schema.json
3
- # timestamp: 2025-12-02T17:41:26+00:00
3
+ # timestamp: 2025-12-15T10:41:08+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: 2025-12-02T17:41:26+00:00
3
+ # timestamp: 2025-12-15T10:41:08+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -134,6 +134,10 @@ class CaseDecisionOutcome(Enum):
134
134
  split_decision = "split_decision"
135
135
  dismissed = "dismissed"
136
136
  invalid = "invalid"
137
+ notice_upheld = "notice_upheld"
138
+ planning_permission_granted = "planning_permission_granted"
139
+ quashed_on_legal_grounds = "quashed_on_legal_grounds"
140
+ notice_varied_and_upheld = "notice_varied_and_upheld"
137
141
  NoneType_None = None
138
142
 
139
143
 
@@ -330,6 +334,41 @@ class AdvertDetail(BaseModel):
330
334
  """
331
335
 
332
336
 
337
+ class AppealGroundLetter(Enum):
338
+ a = "a"
339
+ b = "b"
340
+ c = "c"
341
+ d = "d"
342
+ e = "e"
343
+ f = "f"
344
+ g = "g"
345
+ NoneType_None = None
346
+
347
+
348
+ class EnforcementAppealGroundsDetail(BaseModel):
349
+ model_config = ConfigDict(
350
+ extra="allow",
351
+ )
352
+ appealGroundLetter: AppealGroundLetter | None = None
353
+ groundForAppealStartDate: AwareDatetime | None = Field(
354
+ None, examples=["2023-07-27T20:30:00.000Z"]
355
+ )
356
+ groundFacts: str | None = None
357
+ """
358
+ Facts supporting the appeal ground
359
+ """
360
+
361
+
362
+ class ApplicationPartOrWholeDevelopment(Enum):
363
+ """
364
+ Did the application relate to all or part of the development
365
+ """
366
+
367
+ all_of_the_development = "all-of-the-development"
368
+ part_of_the_development = "part-of-the-development"
369
+ NoneType_None = None
370
+
371
+
333
372
  class AppealS78Case1(BaseModel):
334
373
  """
335
374
  Group B - Schema defining the metadata for an appeal
@@ -846,6 +885,9 @@ class AppealS78Case1(BaseModel):
846
885
  appellantCommentsSubmittedDate: AwareDatetime | None = Field(
847
886
  ..., examples=["2023-07-27T20:30:00.000Z"]
848
887
  )
888
+ appellantStatementDueDate: AwareDatetime | None = Field(
889
+ None, examples=["2023-07-27T20:30:00.000Z"]
890
+ )
849
891
  appellantStatementSubmittedDate: AwareDatetime | None = Field(
850
892
  ..., examples=["2023-07-27T20:30:00.000Z"]
851
893
  )
@@ -920,6 +962,90 @@ class AppealS78Case1(BaseModel):
920
962
  """
921
963
  padsSapId for PADS inspectors
922
964
  """
965
+ ownerOccupancyStatus: str | None = Field(
966
+ None, examples=["Owner", "Tenant", "Mortgage lender"]
967
+ )
968
+ """
969
+ The nature of the appellant's interest in the appeal site
970
+ """
971
+ occupancyConditionsMet: bool | None = None
972
+ """
973
+ Does the appellant meet the criteria in relation to their interest in the site
974
+ """
975
+ enforcementAppealGroundsDetails: list[EnforcementAppealGroundsDetail] | None = None
976
+ """
977
+ A list of grounds for the appeal, supporting facts & start dates. Enforcement cases (C) can have grounds (a) to (g)
978
+ """
979
+ applicationMadeAndFeePaid: bool | None = None
980
+ """
981
+ Was an application made and paid for
982
+ """
983
+ noticeRelatesToBuildingEngineeringMiningOther: bool | None = None
984
+ changeOfUseRefuseOrWaste: bool | None = None
985
+ changeOfUseMineralExtraction: bool | None = None
986
+ changeOfUseMineralStorage: bool | None = None
987
+ relatesToErectionOfBuildingOrBuildings: bool | None = None
988
+ relatesToBuildingWithAgriculturalPurpose: bool | None = None
989
+ relatesToBuildingSingleDwellingHouse: bool | None = None
990
+ previousPlanningPermissionGranted: bool | None = None
991
+ """
992
+ Was planning permission granted in relation to a prior application
993
+ """
994
+ issueDateOfEnforcementNotice: AwareDatetime | None = Field(
995
+ None, examples=["2023-07-27T20:30:00.000Z"]
996
+ )
997
+ """
998
+ The date on which an enforcement notice was issued
999
+ """
1000
+ effectiveDateOfEnforcementNotice: AwareDatetime | None = Field(
1001
+ None, examples=["2023-07-27T20:30:00.000Z"]
1002
+ )
1003
+ """
1004
+ The effective date of an enforcement notice
1005
+ """
1006
+ didAppellantAppealLpaDecision: bool | None = None
1007
+ """
1008
+ Did the appellant appeal the decision made
1009
+ """
1010
+ dateLpaDecisionDue: AwareDatetime | None = Field(
1011
+ None, examples=["2023-07-27T20:30:00.000Z"]
1012
+ )
1013
+ """
1014
+ Date on which LPA decision in relation to application is due
1015
+ """
1016
+ dateLpaDecisionReceived: AwareDatetime | None = Field(
1017
+ None, examples=["2023-07-27T20:30:00.000Z"]
1018
+ )
1019
+ """
1020
+ Date on which LPA decision in relation to application was received
1021
+ """
1022
+ areaOfAllegedBreachInSquareMetres: float | None = Field(None, examples=[3.5])
1023
+ doesAllegedBreachCreateFloorSpace: bool | None = None
1024
+ floorSpaceCreatedByBreachInSquareMetres: float | None = Field(None, examples=[5.3])
1025
+ applicationPartOrWholeDevelopment: ApplicationPartOrWholeDevelopment | None = None
1026
+ """
1027
+ Did the application relate to all or part of the development
1028
+ """
1029
+ hasPcnBeenServed: bool | None = None
1030
+ isSiteWithin67MOfTrunkRd: bool | None = None
1031
+ affectedTrunkRoadName: str | None = None
1032
+ """
1033
+ Name of trunk road within 67M of site
1034
+ """
1035
+ isSiteOnCrownLand: bool | None = None
1036
+ stopNoticeExists: bool | None = None
1037
+ isSiteWithin400MOfMineralInterest: bool | None = None
1038
+ isSiteWithin250MOfLandfill: bool | None = None
1039
+ hasDevelopmentInvolvedWasteImportation: bool | None = None
1040
+ isSiteSubjectToArticle4Direction: bool | None = None
1041
+ article4AffectedDevelopmentRights: str | None = None
1042
+ """
1043
+ What permitted development rights are affected by the Article 4 Direction
1044
+ """
1045
+ pcnRestrictedDevelopmentRights: bool | None = None
1046
+ """
1047
+ Have any development rights been restricted by means of a planning condition?
1048
+ """
923
1049
 
924
1050
 
925
1051
  class AdvertDetail1(BaseModel):
@@ -937,6 +1063,20 @@ class AdvertDetail1(BaseModel):
937
1063
  """
938
1064
 
939
1065
 
1066
+ class EnforcementAppealGroundsDetail1(BaseModel):
1067
+ model_config = ConfigDict(
1068
+ extra="allow",
1069
+ )
1070
+ appealGroundLetter: AppealGroundLetter | None = None
1071
+ groundForAppealStartDate: AwareDatetime | None = Field(
1072
+ None, examples=["2023-07-27T20:30:00.000Z"]
1073
+ )
1074
+ groundFacts: str | None = None
1075
+ """
1076
+ Facts supporting the appeal ground
1077
+ """
1078
+
1079
+
940
1080
  class AppealS78Case2(BaseModel):
941
1081
  """
942
1082
  Group B - Schema defining the metadata for an appeal
@@ -1453,6 +1593,9 @@ class AppealS78Case2(BaseModel):
1453
1593
  appellantCommentsSubmittedDate: AwareDatetime | None = Field(
1454
1594
  ..., examples=["2023-07-27T20:30:00.000Z"]
1455
1595
  )
1596
+ appellantStatementDueDate: AwareDatetime | None = Field(
1597
+ None, examples=["2023-07-27T20:30:00.000Z"]
1598
+ )
1456
1599
  appellantStatementSubmittedDate: AwareDatetime | None = Field(
1457
1600
  ..., examples=["2023-07-27T20:30:00.000Z"]
1458
1601
  )
@@ -1527,6 +1670,90 @@ class AppealS78Case2(BaseModel):
1527
1670
  """
1528
1671
  padsSapId for PADS inspectors
1529
1672
  """
1673
+ ownerOccupancyStatus: str | None = Field(
1674
+ None, examples=["Owner", "Tenant", "Mortgage lender"]
1675
+ )
1676
+ """
1677
+ The nature of the appellant's interest in the appeal site
1678
+ """
1679
+ occupancyConditionsMet: bool | None = None
1680
+ """
1681
+ Does the appellant meet the criteria in relation to their interest in the site
1682
+ """
1683
+ enforcementAppealGroundsDetails: list[EnforcementAppealGroundsDetail1] | None = None
1684
+ """
1685
+ A list of grounds for the appeal, supporting facts & start dates. Enforcement cases (C) can have grounds (a) to (g)
1686
+ """
1687
+ applicationMadeAndFeePaid: bool | None = None
1688
+ """
1689
+ Was an application made and paid for
1690
+ """
1691
+ noticeRelatesToBuildingEngineeringMiningOther: bool | None = None
1692
+ changeOfUseRefuseOrWaste: bool | None = None
1693
+ changeOfUseMineralExtraction: bool | None = None
1694
+ changeOfUseMineralStorage: bool | None = None
1695
+ relatesToErectionOfBuildingOrBuildings: bool | None = None
1696
+ relatesToBuildingWithAgriculturalPurpose: bool | None = None
1697
+ relatesToBuildingSingleDwellingHouse: bool | None = None
1698
+ previousPlanningPermissionGranted: bool | None = None
1699
+ """
1700
+ Was planning permission granted in relation to a prior application
1701
+ """
1702
+ issueDateOfEnforcementNotice: AwareDatetime | None = Field(
1703
+ None, examples=["2023-07-27T20:30:00.000Z"]
1704
+ )
1705
+ """
1706
+ The date on which an enforcement notice was issued
1707
+ """
1708
+ effectiveDateOfEnforcementNotice: AwareDatetime | None = Field(
1709
+ None, examples=["2023-07-27T20:30:00.000Z"]
1710
+ )
1711
+ """
1712
+ The effective date of an enforcement notice
1713
+ """
1714
+ didAppellantAppealLpaDecision: bool | None = None
1715
+ """
1716
+ Did the appellant appeal the decision made
1717
+ """
1718
+ dateLpaDecisionDue: AwareDatetime | None = Field(
1719
+ None, examples=["2023-07-27T20:30:00.000Z"]
1720
+ )
1721
+ """
1722
+ Date on which LPA decision in relation to application is due
1723
+ """
1724
+ dateLpaDecisionReceived: AwareDatetime | None = Field(
1725
+ None, examples=["2023-07-27T20:30:00.000Z"]
1726
+ )
1727
+ """
1728
+ Date on which LPA decision in relation to application was received
1729
+ """
1730
+ areaOfAllegedBreachInSquareMetres: float | None = Field(None, examples=[3.5])
1731
+ doesAllegedBreachCreateFloorSpace: bool | None = None
1732
+ floorSpaceCreatedByBreachInSquareMetres: float | None = Field(None, examples=[5.3])
1733
+ applicationPartOrWholeDevelopment: ApplicationPartOrWholeDevelopment | None = None
1734
+ """
1735
+ Did the application relate to all or part of the development
1736
+ """
1737
+ hasPcnBeenServed: bool | None = None
1738
+ isSiteWithin67MOfTrunkRd: bool | None = None
1739
+ affectedTrunkRoadName: str | None = None
1740
+ """
1741
+ Name of trunk road within 67M of site
1742
+ """
1743
+ isSiteOnCrownLand: bool | None = None
1744
+ stopNoticeExists: bool | None = None
1745
+ isSiteWithin400MOfMineralInterest: bool | None = None
1746
+ isSiteWithin250MOfLandfill: bool | None = None
1747
+ hasDevelopmentInvolvedWasteImportation: bool | None = None
1748
+ isSiteSubjectToArticle4Direction: bool | None = None
1749
+ article4AffectedDevelopmentRights: str | None = None
1750
+ """
1751
+ What permitted development rights are affected by the Article 4 Direction
1752
+ """
1753
+ pcnRestrictedDevelopmentRights: bool | None = None
1754
+ """
1755
+ Have any development rights been restricted by means of a planning condition?
1756
+ """
1530
1757
 
1531
1758
 
1532
1759
  class AppealS78Case(RootModel[AppealS78Case1 | AppealS78Case2]):
@@ -72,8 +72,7 @@
72
72
  "neighbouringSiteAddresses",
73
73
  "affectedListedBuildingNumbers",
74
74
  "appellantCostsAppliedFor",
75
- "lpaCostsAppliedFor",
76
- "padsSapId"
75
+ "lpaCostsAppliedFor"
77
76
  ],
78
77
  "anyOf": [
79
78
  {
@@ -130,8 +130,7 @@
130
130
  "numberOfResidencesNetChange",
131
131
  "siteViewableFromRoad",
132
132
  "siteWithinSSSI",
133
- "typeOfPlanningApplication",
134
- "padsSapId"
133
+ "typeOfPlanningApplication"
135
134
  ],
136
135
  "anyOf": [
137
136
  {
@@ -438,9 +437,19 @@
438
437
  },
439
438
  "caseDecisionOutcome": {
440
439
  "type": ["string", "null"],
441
- "enum": ["allowed", "split_decision", "dismissed", "invalid", null],
440
+ "enum": [
441
+ "allowed",
442
+ "split_decision",
443
+ "dismissed",
444
+ "invalid",
445
+ "notice_upheld",
446
+ "planning_permission_granted",
447
+ "quashed_on_legal_grounds",
448
+ "notice_varied_and_upheld",
449
+ null
450
+ ],
442
451
  "description": "The final outcome for the decision",
443
- "$comment": "Also available on HAS cases"
452
+ "$comment": "List expanded for Enforcement Case Decision Outcomes"
444
453
  },
445
454
  "caseCompletedDate": {
446
455
  "type": ["string", "null"],
@@ -918,6 +927,11 @@
918
927
  "format": "date-time",
919
928
  "examples": ["2023-07-27T20:30:00.000Z"]
920
929
  },
930
+ "appellantStatementDueDate": {
931
+ "type": ["string", "null"],
932
+ "format": "date-time",
933
+ "examples": ["2023-07-27T20:30:00.000Z"]
934
+ },
921
935
  "appellantStatementSubmittedDate": {
922
936
  "type": ["string", "null"],
923
937
  "format": "date-time",
@@ -1092,6 +1106,148 @@
1092
1106
  "padsSapId": {
1093
1107
  "type": ["string", "null"],
1094
1108
  "description": "padsSapId for PADS inspectors"
1109
+ },
1110
+ "ownerOccupancyStatus": {
1111
+ "type": ["string", "null"],
1112
+ "description": "The nature of the appellant's interest in the appeal site",
1113
+ "examples": ["Owner", "Tenant", "Mortgage lender"]
1114
+ },
1115
+ "occupancyConditionsMet": {
1116
+ "type": ["boolean", "null"],
1117
+ "description": "Does the appellant meet the criteria in relation to their interest in the site"
1118
+ },
1119
+ "enforcementAppealGroundsDetails": {
1120
+ "type": ["array", "null"],
1121
+ "items": {
1122
+ "type": "object",
1123
+ "additionalProperties": true,
1124
+ "properties": {
1125
+ "appealGroundLetter": {
1126
+ "type": ["string", "null"],
1127
+ "enum": ["a", "b", "c", "d", "e", "f", "g", null]
1128
+ },
1129
+ "groundForAppealStartDate": {
1130
+ "type": ["string", "null"],
1131
+ "format": "date-time",
1132
+ "examples": ["2023-07-27T20:30:00.000Z"]
1133
+ },
1134
+ "groundFacts": {
1135
+ "type": ["string", "null"],
1136
+ "description": "Facts supporting the appeal ground"
1137
+ }
1138
+ }
1139
+ },
1140
+ "description": "A list of grounds for the appeal, supporting facts & start dates. Enforcement cases (C) can have grounds (a) to (g)",
1141
+ "$comment": "Enforcement Listed Building cases (F) have a separate list of grounds (a) to (k)"
1142
+ },
1143
+ "applicationMadeAndFeePaid": {
1144
+ "type": ["boolean", "null"],
1145
+ "description": "Was an application made and paid for"
1146
+ },
1147
+ "noticeRelatesToBuildingEngineeringMiningOther": {
1148
+ "type": ["boolean", "null"]
1149
+ },
1150
+ "changeOfUseRefuseOrWaste": {
1151
+ "type": ["boolean", "null"]
1152
+ },
1153
+ "changeOfUseMineralExtraction": {
1154
+ "type": ["boolean", "null"]
1155
+ },
1156
+ "changeOfUseMineralStorage": {
1157
+ "type": ["boolean", "null"]
1158
+ },
1159
+ "relatesToErectionOfBuildingOrBuildings": {
1160
+ "type": ["boolean", "null"]
1161
+ },
1162
+ "relatesToBuildingWithAgriculturalPurpose": {
1163
+ "type": ["boolean", "null"]
1164
+ },
1165
+ "relatesToBuildingSingleDwellingHouse": {
1166
+ "type": ["boolean", "null"]
1167
+ },
1168
+ "previousPlanningPermissionGranted": {
1169
+ "type": ["boolean", "null"],
1170
+ "description": "Was planning permission granted in relation to a prior application"
1171
+ },
1172
+ "issueDateOfEnforcementNotice": {
1173
+ "type": ["string", "null"],
1174
+ "format": "date-time",
1175
+ "description": "The date on which an enforcement notice was issued",
1176
+ "examples": ["2023-07-27T20:30:00.000Z"]
1177
+ },
1178
+ "effectiveDateOfEnforcementNotice": {
1179
+ "type": ["string", "null"],
1180
+ "format": "date-time",
1181
+ "description": "The effective date of an enforcement notice",
1182
+ "examples": ["2023-07-27T20:30:00.000Z"]
1183
+ },
1184
+ "didAppellantAppealLpaDecision": {
1185
+ "type": ["boolean", "null"],
1186
+ "description": "Did the appellant appeal the decision made"
1187
+ },
1188
+ "dateLpaDecisionDue": {
1189
+ "type": ["string", "null"],
1190
+ "format": "date-time",
1191
+ "description": "Date on which LPA decision in relation to application is due",
1192
+ "examples": ["2023-07-27T20:30:00.000Z"]
1193
+ },
1194
+ "dateLpaDecisionReceived": {
1195
+ "type": ["string", "null"],
1196
+ "format": "date-time",
1197
+ "description": "Date on which LPA decision in relation to application was received",
1198
+ "examples": ["2023-07-27T20:30:00.000Z"]
1199
+ },
1200
+ "areaOfAllegedBreachInSquareMetres": {
1201
+ "type": ["number", "null"],
1202
+ "examples": [3.5]
1203
+ },
1204
+ "doesAllegedBreachCreateFloorSpace": {
1205
+ "type": ["boolean", "null"]
1206
+ },
1207
+ "floorSpaceCreatedByBreachInSquareMetres": {
1208
+ "type": ["number", "null"],
1209
+ "examples": [5.3]
1210
+ },
1211
+ "applicationPartOrWholeDevelopment": {
1212
+ "type": ["string", "null"],
1213
+ "description": "Did the application relate to all or part of the development",
1214
+ "enum": ["all-of-the-development", "part-of-the-development", null]
1215
+ },
1216
+ "hasPcnBeenServed": {
1217
+ "type": ["boolean", "null"]
1218
+ },
1219
+ "isSiteWithin67MOfTrunkRd": {
1220
+ "type": ["boolean", "null"]
1221
+ },
1222
+ "affectedTrunkRoadName": {
1223
+ "type": ["string", "null"],
1224
+ "description": "Name of trunk road within 67M of site"
1225
+ },
1226
+ "isSiteOnCrownLand": {
1227
+ "type": ["boolean", "null"]
1228
+ },
1229
+ "stopNoticeExists": {
1230
+ "type": ["boolean", "null"]
1231
+ },
1232
+ "isSiteWithin400MOfMineralInterest": {
1233
+ "type": ["boolean", "null"]
1234
+ },
1235
+ "isSiteWithin250MOfLandfill": {
1236
+ "type": ["boolean", "null"]
1237
+ },
1238
+ "hasDevelopmentInvolvedWasteImportation": {
1239
+ "type": ["boolean", "null"]
1240
+ },
1241
+ "isSiteSubjectToArticle4Direction": {
1242
+ "type": ["boolean", "null"]
1243
+ },
1244
+ "article4AffectedDevelopmentRights": {
1245
+ "type": ["string", "null"],
1246
+ "description": "What permitted development rights are affected by the Article 4 Direction"
1247
+ },
1248
+ "pcnRestrictedDevelopmentRights": {
1249
+ "type": ["boolean", "null"],
1250
+ "description": "Have any development rights been restricted by means of a planning condition?"
1095
1251
  }
1096
1252
  }
1097
1253
  }
package/src/enums.cjs CHANGED
@@ -23,10 +23,19 @@ const APPEAL_APPLICATION_DECISION = Object.freeze({
23
23
  REFUSED: 'refused',
24
24
  });
25
25
 
26
+ const APPEAL_APPLICATION_PART_OR_WHOLE_DEVELOPMENT = Object.freeze({
27
+ ALL_OF_THE_DEVELOPMENT: 'all-of-the-development',
28
+ PART_OF_THE_DEVELOPMENT: 'part-of-the-development',
29
+ });
30
+
26
31
  const APPEAL_CASE_DECISION_OUTCOME = Object.freeze({
27
32
  ALLOWED: 'allowed',
28
33
  DISMISSED: 'dismissed',
29
34
  INVALID: 'invalid',
35
+ NOTICE_UPHELD: 'notice_upheld',
36
+ NOTICE_VARIED_AND_UPHELD: 'notice_varied_and_upheld',
37
+ PLANNING_PERMISSION_GRANTED: 'planning_permission_granted',
38
+ QUASHED_ON_LEGAL_GROUNDS: 'quashed_on_legal_grounds',
30
39
  SPLIT_DECISION: 'split_decision',
31
40
  });
32
41
 
@@ -685,6 +694,7 @@ const STATUS = Object.freeze({
685
694
  exports.APPEAL_ALLOCATION_LEVEL = APPEAL_ALLOCATION_LEVEL;
686
695
  exports.APPEAL_APPELLANT_PROCEDURE_PREFERENCE = APPEAL_APPELLANT_PROCEDURE_PREFERENCE;
687
696
  exports.APPEAL_APPLICATION_DECISION = APPEAL_APPLICATION_DECISION;
697
+ exports.APPEAL_APPLICATION_PART_OR_WHOLE_DEVELOPMENT = APPEAL_APPLICATION_PART_OR_WHOLE_DEVELOPMENT;
688
698
  exports.APPEAL_CASE_DECISION_OUTCOME = APPEAL_CASE_DECISION_OUTCOME;
689
699
  exports.APPEAL_CASE_PROCEDURE = APPEAL_CASE_PROCEDURE;
690
700
  exports.APPEAL_CASE_STAGE = APPEAL_CASE_STAGE;
package/src/enums.d.ts CHANGED
@@ -21,10 +21,19 @@ export const APPEAL_APPLICATION_DECISION = {
21
21
  REFUSED: 'refused',
22
22
  } as const;
23
23
 
24
+ export const APPEAL_APPLICATION_PART_OR_WHOLE_DEVELOPMENT = {
25
+ ALL_OF_THE_DEVELOPMENT: 'all-of-the-development',
26
+ PART_OF_THE_DEVELOPMENT: 'part-of-the-development',
27
+ } as const;
28
+
24
29
  export const APPEAL_CASE_DECISION_OUTCOME = {
25
30
  ALLOWED: 'allowed',
26
31
  DISMISSED: 'dismissed',
27
32
  INVALID: 'invalid',
33
+ NOTICE_UPHELD: 'notice_upheld',
34
+ NOTICE_VARIED_AND_UPHELD: 'notice_varied_and_upheld',
35
+ PLANNING_PERMISSION_GRANTED: 'planning_permission_granted',
36
+ QUASHED_ON_LEGAL_GROUNDS: 'quashed_on_legal_grounds',
28
37
  SPLIT_DECISION: 'split_decision',
29
38
  } as const;
30
39
 
package/src/enums.js CHANGED
@@ -21,10 +21,19 @@ export const APPEAL_APPLICATION_DECISION = Object.freeze({
21
21
  REFUSED: 'refused',
22
22
  });
23
23
 
24
+ export const APPEAL_APPLICATION_PART_OR_WHOLE_DEVELOPMENT = Object.freeze({
25
+ ALL_OF_THE_DEVELOPMENT: 'all-of-the-development',
26
+ PART_OF_THE_DEVELOPMENT: 'part-of-the-development',
27
+ });
28
+
24
29
  export const APPEAL_CASE_DECISION_OUTCOME = Object.freeze({
25
30
  ALLOWED: 'allowed',
26
31
  DISMISSED: 'dismissed',
27
32
  INVALID: 'invalid',
33
+ NOTICE_UPHELD: 'notice_upheld',
34
+ NOTICE_VARIED_AND_UPHELD: 'notice_varied_and_upheld',
35
+ PLANNING_PERMISSION_GRANTED: 'planning_permission_granted',
36
+ QUASHED_ON_LEGAL_GROUNDS: 'quashed_on_legal_grounds',
28
37
  SPLIT_DECISION: 'split_decision',
29
38
  });
30
39
 
package/src/index.cjs CHANGED
@@ -104,10 +104,19 @@ const APPEAL_APPLICATION_DECISION = Object.freeze({
104
104
  REFUSED: 'refused',
105
105
  });
106
106
 
107
+ const APPEAL_APPLICATION_PART_OR_WHOLE_DEVELOPMENT = Object.freeze({
108
+ ALL_OF_THE_DEVELOPMENT: 'all-of-the-development',
109
+ PART_OF_THE_DEVELOPMENT: 'part-of-the-development',
110
+ });
111
+
107
112
  const APPEAL_CASE_DECISION_OUTCOME = Object.freeze({
108
113
  ALLOWED: 'allowed',
109
114
  DISMISSED: 'dismissed',
110
115
  INVALID: 'invalid',
116
+ NOTICE_UPHELD: 'notice_upheld',
117
+ NOTICE_VARIED_AND_UPHELD: 'notice_varied_and_upheld',
118
+ PLANNING_PERMISSION_GRANTED: 'planning_permission_granted',
119
+ QUASHED_ON_LEGAL_GROUNDS: 'quashed_on_legal_grounds',
111
120
  SPLIT_DECISION: 'split_decision',
112
121
  });
113
122
 
@@ -798,6 +807,7 @@ function loadAllSchemasSync() {
798
807
  exports.APPEAL_ALLOCATION_LEVEL = APPEAL_ALLOCATION_LEVEL;
799
808
  exports.APPEAL_APPELLANT_PROCEDURE_PREFERENCE = APPEAL_APPELLANT_PROCEDURE_PREFERENCE;
800
809
  exports.APPEAL_APPLICATION_DECISION = APPEAL_APPLICATION_DECISION;
810
+ exports.APPEAL_APPLICATION_PART_OR_WHOLE_DEVELOPMENT = APPEAL_APPLICATION_PART_OR_WHOLE_DEVELOPMENT;
801
811
  exports.APPEAL_CASE_DECISION_OUTCOME = APPEAL_CASE_DECISION_OUTCOME;
802
812
  exports.APPEAL_CASE_PROCEDURE = APPEAL_CASE_PROCEDURE;
803
813
  exports.APPEAL_CASE_STAGE = APPEAL_CASE_STAGE;