@planning-inspectorate/data-model 2.31.3 → 2.33.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 +2 -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 +9 -1
  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 +8 -1
  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)
@@ -672,6 +672,7 @@ The location of the published document. Only applicable to documents which are p
672
672
  | :--------------------------- | :---------- |
673
673
  | `"back-office-appeals"` | |
674
674
  | `"back-office-applications"` | |
675
+ | `"dco-portal"` | |
675
676
  | `"horizon"` | |
676
677
  | `"ni_file"` | |
677
678
  | `"sharepoint"` | |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@planning-inspectorate/data-model",
3
- "version": "2.31.3",
3
+ "version": "2.33.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-22T14:15:03+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-22T14:15:02+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-22T14:15:02+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-22T14:15:02+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-22T14:15:02+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-22T14:15:03+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-22T14:15:02+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-22T14:15:02+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-22T14:15:02+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-22T14:15:02+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-22T14:15:02+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-22T14:15:03+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-22T14:15:02+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -59,6 +59,7 @@ class SecurityClassification(Enum):
59
59
  class SourceSystem(Enum):
60
60
  back_office_appeals = "back-office-appeals"
61
61
  back_office_applications = "back-office-applications"
62
+ dco_portal = "dco-portal"
62
63
  horizon = "horizon"
63
64
  ni_file = "ni_file"
64
65
  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-22T14:15:03+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-22T14:15:02+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-22T14:15:02+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-22T14:15:02+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-22T14:15:02+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-22T14:15:03+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-22T14:15:02+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-22T14:15:02+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-22T14:15:02+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-22T14:15:02+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-22T14:15:02+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": {
@@ -172,7 +172,15 @@
172
172
  },
173
173
  "sourceSystem": {
174
174
  "type": ["string", "null"],
175
- "enum": ["back-office-appeals", "back-office-applications", "horizon", "ni_file", "sharepoint", null]
175
+ "enum": [
176
+ "back-office-appeals",
177
+ "back-office-applications",
178
+ "dco-portal",
179
+ "horizon",
180
+ "ni_file",
181
+ "sharepoint",
182
+ null
183
+ ]
176
184
  },
177
185
  "origin": {
178
186
  "type": ["string", "null"],
package/src/enums.cjs CHANGED
@@ -719,6 +719,7 @@ const NSIP_SECURITY_CLASSIFICATION = Object.freeze({
719
719
  const NSIP_SOURCE_SYSTEM = Object.freeze({
720
720
  BACK_OFFICE_APPEALS: 'back-office-appeals',
721
721
  BACK_OFFICE_APPLICATIONS: 'back-office-applications',
722
+ DCO_PORTAL: 'dco-portal',
722
723
  HORIZON: 'horizon',
723
724
  NI_FILE: 'ni_file',
724
725
  SHAREPOINT: 'sharepoint',
package/src/enums.d.ts CHANGED
@@ -717,6 +717,7 @@ export const NSIP_SECURITY_CLASSIFICATION = {
717
717
  export const NSIP_SOURCE_SYSTEM = {
718
718
  BACK_OFFICE_APPEALS: 'back-office-appeals',
719
719
  BACK_OFFICE_APPLICATIONS: 'back-office-applications',
720
+ DCO_PORTAL: 'dco-portal',
720
721
  HORIZON: 'horizon',
721
722
  NI_FILE: 'ni_file',
722
723
  SHAREPOINT: 'sharepoint',
package/src/enums.js CHANGED
@@ -717,6 +717,7 @@ export const NSIP_SECURITY_CLASSIFICATION = Object.freeze({
717
717
  export const NSIP_SOURCE_SYSTEM = Object.freeze({
718
718
  BACK_OFFICE_APPEALS: 'back-office-appeals',
719
719
  BACK_OFFICE_APPLICATIONS: 'back-office-applications',
720
+ DCO_PORTAL: 'dco-portal',
720
721
  HORIZON: 'horizon',
721
722
  NI_FILE: 'ni_file',
722
723
  SHAREPOINT: 'sharepoint',
package/src/index.cjs CHANGED
@@ -800,6 +800,7 @@ const NSIP_SECURITY_CLASSIFICATION = Object.freeze({
800
800
  const NSIP_SOURCE_SYSTEM = Object.freeze({
801
801
  BACK_OFFICE_APPEALS: 'back-office-appeals',
802
802
  BACK_OFFICE_APPLICATIONS: 'back-office-applications',
803
+ DCO_PORTAL: 'dco-portal',
803
804
  HORIZON: 'horizon',
804
805
  NI_FILE: 'ni_file',
805
806
  SHAREPOINT: 'sharepoint',
package/src/schemas.d.ts CHANGED
@@ -2216,7 +2216,14 @@ export interface NSIPDocument {
2216
2216
  datePublished: string | null;
2217
2217
  documentType: string | null;
2218
2218
  securityClassification: 'public' | 'official' | 'secret' | 'top-secret' | null;
2219
- sourceSystem: 'back-office-appeals' | 'back-office-applications' | 'horizon' | 'ni_file' | 'sharepoint' | null;
2219
+ sourceSystem:
2220
+ | 'back-office-appeals'
2221
+ | 'back-office-applications'
2222
+ | 'dco-portal'
2223
+ | 'horizon'
2224
+ | 'ni_file'
2225
+ | 'sharepoint'
2226
+ | null;
2220
2227
  origin: 'pins' | 'citizen' | 'lpa' | 'ogd' | null;
2221
2228
  owner: string | null;
2222
2229
  /**
@@ -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' }];