@planning-inspectorate/data-model 2.32.0 → 2.34.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 (35) hide show
  1. package/docs/appeal-s78.md +0 -4
  2. package/docs/nsip-document.md +1 -0
  3. package/package.json +1 -1
  4. package/pins_data_model/models/model_appeal_document.py +1 -1
  5. package/pins_data_model/models/model_appeal_event.py +1 -1
  6. package/pins_data_model/models/model_appeal_event_estimate.py +1 -1
  7. package/pins_data_model/models/model_appeal_has.py +1 -1
  8. package/pins_data_model/models/model_appeal_representation.py +1 -1
  9. package/pins_data_model/models/model_appeal_s78.py +3 -3
  10. package/pins_data_model/models/model_dart_response.py +1 -1
  11. package/pins_data_model/models/model_entraid.py +1 -1
  12. package/pins_data_model/models/model_folder.py +1 -1
  13. package/pins_data_model/models/model_gettimesheets_response.py +1 -1
  14. package/pins_data_model/models/model_listed_building.py +1 -1
  15. package/pins_data_model/models/model_listed_buildings.py +1 -1
  16. package/pins_data_model/models/model_nsip_document.py +3 -1
  17. package/pins_data_model/models/model_nsip_exam_timetable.py +1 -1
  18. package/pins_data_model/models/model_nsip_invoice.py +1 -1
  19. package/pins_data_model/models/model_nsip_meeting.py +1 -1
  20. package/pins_data_model/models/model_nsip_project.py +1 -1
  21. package/pins_data_model/models/model_nsip_project_update.py +1 -1
  22. package/pins_data_model/models/model_nsip_representation.py +1 -1
  23. package/pins_data_model/models/model_nsip_subscription.py +1 -1
  24. package/pins_data_model/models/model_pins_inspector.py +1 -1
  25. package/pins_data_model/models/model_pins_lpa.py +1 -1
  26. package/pins_data_model/models/model_s51_advice.py +1 -1
  27. package/pins_data_model/models/model_service_user.py +1 -1
  28. package/schemas/appeal-s78.schema.json +0 -1
  29. package/schemas/nsip-document.schema.json +1 -0
  30. package/src/enums.cjs +1 -0
  31. package/src/enums.d.ts +1 -0
  32. package/src/enums.js +1 -0
  33. package/src/index.cjs +1 -0
  34. package/src/schemas.d.ts +1 -0
  35. package/tests/appeals/expedited-appeals.test.js +0 -7
@@ -4829,10 +4829,6 @@ Reason for appeal as provided by the appellant (Expedited Appeals)
4829
4829
 
4830
4830
  `string`
4831
4831
 
4832
- ### reasonForAppealAppellant Constraints
4833
-
4834
- **maximum length**: the maximum number of characters for this string is: `250`
4835
-
4836
4832
  ## screeningOpinionIndicatesEiaRequired
4837
4833
 
4838
4834
  Indicates if the screening opinion specifies that an EIA is required (Expedited Appeals)
@@ -562,6 +562,7 @@ The location of the published document. Only applicable to documents which are p
562
562
  | `"unpublished"` | |
563
563
  | `"unpublishing"` | |
564
564
  | `"awaiting_upload"` | |
565
+ | `"invalid"` | |
565
566
  | `null` | |
566
567
 
567
568
  ## datePublished
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@planning-inspectorate/data-model",
3
- "version": "2.32.0",
3
+ "version": "2.34.0",
4
4
  "description": "JSON Schemas for the Planning Inspectorate's Data Model",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: appeal-document.schema.json
3
- # timestamp: 2026-04-15T12:58:38+00:00
3
+ # timestamp: 2026-04-24T09:50:52+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: appeal-event.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:52+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: appeal-event-estimate.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:53+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: appeal-has.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:52+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: appeal-representation.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:52+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: appeal-s78.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:52+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1251,7 +1251,7 @@ class AppealS78Case1(BaseModel):
1251
1251
  Other reason for serving a discontinuance notice, for discontinuanceNoticeServedReason: other
1252
1252
  """
1253
1253
  wasRetrospectivePlanningApplicationMade: bool | None = None
1254
- reasonForAppealAppellant: constr(max_length=250) | None = None
1254
+ reasonForAppealAppellant: str | None = None
1255
1255
  """
1256
1256
  Reason for appeal as provided by the appellant (Expedited Appeals)
1257
1257
  """
@@ -2010,7 +2010,7 @@ class AppealS78Case2(BaseModel):
2010
2010
  Other reason for serving a discontinuance notice, for discontinuanceNoticeServedReason: other
2011
2011
  """
2012
2012
  wasRetrospectivePlanningApplicationMade: bool | None = None
2013
- reasonForAppealAppellant: constr(max_length=250) | None = None
2013
+ reasonForAppealAppellant: str | None = None
2014
2014
  """
2015
2015
  Reason for appeal as provided by the appellant (Expedited Appeals)
2016
2016
  """
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: dart-response.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:52+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: entraid.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:52+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: folder.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:51+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: gettimesheets-response.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:53+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: listed-building.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:51+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: listed-buildings.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:53+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: nsip-document.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:51+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -45,6 +45,7 @@ class PublishedStatus(Enum):
45
45
  unpublished = "unpublished"
46
46
  unpublishing = "unpublishing"
47
47
  awaiting_upload = "awaiting_upload"
48
+ invalid = "invalid"
48
49
  NoneType_None = None
49
50
 
50
51
 
@@ -59,6 +60,7 @@ class SecurityClassification(Enum):
59
60
  class SourceSystem(Enum):
60
61
  back_office_appeals = "back-office-appeals"
61
62
  back_office_applications = "back-office-applications"
63
+ dco_portal = "dco-portal"
62
64
  horizon = "horizon"
63
65
  ni_file = "ni_file"
64
66
  sharepoint = "sharepoint"
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: nsip-exam-timetable.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:53+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: nsip-invoice.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:52+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: nsip-meeting.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:52+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: nsip-project.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:53+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: nsip-project-update.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:53+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: nsip-representation.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:53+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: nsip-subscription.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:52+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: pins-inspector.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:52+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: pins-lpa.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:53+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: s51-advice.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:53+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: service-user.schema.json
3
- # timestamp: 2026-04-15T12:58:37+00:00
3
+ # timestamp: 2026-04-24T09:50:52+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -1350,7 +1350,6 @@
1350
1350
  },
1351
1351
  "reasonForAppealAppellant": {
1352
1352
  "type": ["string", "null"],
1353
- "maxLength": 250,
1354
1353
  "description": "Reason for appeal as provided by the appellant (Expedited Appeals)"
1355
1354
  },
1356
1355
  "screeningOpinionIndicatesEiaRequired": {
@@ -154,6 +154,7 @@
154
154
  "unpublished",
155
155
  "unpublishing",
156
156
  "awaiting_upload",
157
+ "invalid",
157
158
  null
158
159
  ]
159
160
  },
package/src/enums.cjs CHANGED
@@ -640,6 +640,7 @@ const NSIP_PUBLISHED_STATUS = Object.freeze({
640
640
  AWAITING_UPLOAD: 'awaiting_upload',
641
641
  CHECKED: 'checked',
642
642
  DO_NOT_PUBLISH: 'do_not_publish',
643
+ INVALID: 'invalid',
643
644
  NOT_CHECKED: 'not_checked',
644
645
  PUBLISHED: 'published',
645
646
  PUBLISHING: 'publishing',
package/src/enums.d.ts CHANGED
@@ -638,6 +638,7 @@ export const NSIP_PUBLISHED_STATUS = {
638
638
  AWAITING_UPLOAD: 'awaiting_upload',
639
639
  CHECKED: 'checked',
640
640
  DO_NOT_PUBLISH: 'do_not_publish',
641
+ INVALID: 'invalid',
641
642
  NOT_CHECKED: 'not_checked',
642
643
  PUBLISHED: 'published',
643
644
  PUBLISHING: 'publishing',
package/src/enums.js CHANGED
@@ -638,6 +638,7 @@ export const NSIP_PUBLISHED_STATUS = Object.freeze({
638
638
  AWAITING_UPLOAD: 'awaiting_upload',
639
639
  CHECKED: 'checked',
640
640
  DO_NOT_PUBLISH: 'do_not_publish',
641
+ INVALID: 'invalid',
641
642
  NOT_CHECKED: 'not_checked',
642
643
  PUBLISHED: 'published',
643
644
  PUBLISHING: 'publishing',
package/src/index.cjs CHANGED
@@ -721,6 +721,7 @@ const NSIP_PUBLISHED_STATUS = Object.freeze({
721
721
  AWAITING_UPLOAD: 'awaiting_upload',
722
722
  CHECKED: 'checked',
723
723
  DO_NOT_PUBLISH: 'do_not_publish',
724
+ INVALID: 'invalid',
724
725
  NOT_CHECKED: 'not_checked',
725
726
  PUBLISHED: 'published',
726
727
  PUBLISHING: 'publishing',
package/src/schemas.d.ts CHANGED
@@ -2212,6 +2212,7 @@ export interface NSIPDocument {
2212
2212
  | 'unpublished'
2213
2213
  | 'unpublishing'
2214
2214
  | 'awaiting_upload'
2215
+ | 'invalid'
2215
2216
  | null;
2216
2217
  datePublished: string | null;
2217
2218
  documentType: string | null;
@@ -183,13 +183,6 @@ describe('Expedited S78 Appeals', () => {
183
183
  assert.strictEqual(validationResult, true);
184
184
  });
185
185
 
186
- it('should enforce maxLength for reasonForAppealAppellant', () => {
187
- const test = structuredClone(expeditedAppealPayload);
188
- test.reasonForAppealAppellant = 'a'.repeat(251);
189
- const validationResult = ajv.validate(schema, test);
190
- assert.strictEqual(validationResult, false);
191
- });
192
-
193
186
  it('should enforce enum for significantChangesAffectingApplication', () => {
194
187
  const test = structuredClone(expeditedAppealPayload);
195
188
  test.significantChangesAffectingApplicationAppellant = [{ value: 'invalid-enum-value', comment: 'some comment' }];