@planning-inspectorate/data-model 2.12.0 → 2.14.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 (34) hide show
  1. package/docs/appeal-s78.md +7 -6
  2. package/docs/nsip-document.md +9 -5
  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 +2 -1
  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 +5 -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 +1 -1
  29. package/schemas/nsip-document.schema.json +9 -1
  30. package/src/enums.cjs +5 -0
  31. package/src/enums.d.ts +5 -0
  32. package/src/enums.js +5 -0
  33. package/src/index.cjs +5 -0
  34. package/src/schemas.d.ts +9 -2
@@ -390,12 +390,13 @@ The type of procedure for the appeal
390
390
 
391
391
  **enum**: the value of this property must be equal to one of the following values:
392
392
 
393
- | Value | Explanation |
394
- | :---------- | :---------- |
395
- | `"written"` | |
396
- | `"hearing"` | |
397
- | `"inquiry"` | |
398
- | `null` | |
393
+ | Value | Explanation |
394
+ | :--------------- | :---------- |
395
+ | `"written"` | |
396
+ | `"hearing"` | |
397
+ | `"inquiry"` | |
398
+ | `"writtenPart1"` | |
399
+ | `null` | |
399
400
 
400
401
  ## lpaCode
401
402
 
@@ -516,11 +516,15 @@ The location of the published document. Only applicable to documents which are p
516
516
 
517
517
  **enum**: the value of this property must be equal to one of the following values:
518
518
 
519
- | Value | Explanation |
520
- | :--------------- | :---------- |
521
- | `"not_redacted"` | |
522
- | `"redacted"` | |
523
- | `null` | |
519
+ | Value | Explanation |
520
+ | :------------------------------- | :---------- |
521
+ | `"not_redacted"` | |
522
+ | `"redacted"` | |
523
+ | `"awaiting_ai_redaction"` | |
524
+ | `"ai_redaction_review_required"` | |
525
+ | `"ai_redaction_failed"` | |
526
+ | `"no_redaction_required"` | |
527
+ | `null` | |
524
528
 
525
529
  ## publishedStatus
526
530
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@planning-inspectorate/data-model",
3
- "version": "2.12.0",
3
+ "version": "2.14.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-01-21T12:30:03+00:00
3
+ # timestamp: 2026-02-04T16:06:56+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-01-20T11:57:09+00:00
3
+ # timestamp: 2026-02-04T16:06:56+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-01-20T11:57:09+00:00
3
+ # timestamp: 2026-02-04T16:06:56+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-01-21T12:30:03+00:00
3
+ # timestamp: 2026-02-04T16:06:56+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-01-20T11:57:10+00:00
3
+ # timestamp: 2026-02-04T16:06:56+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-01-21T12:30:03+00:00
3
+ # timestamp: 2026-02-04T16:06:57+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -64,6 +64,7 @@ class CaseProcedure(Enum):
64
64
  written = "written"
65
65
  hearing = "hearing"
66
66
  inquiry = "inquiry"
67
+ writtenPart1 = "writtenPart1"
67
68
  NoneType_None = None
68
69
 
69
70
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: dart-response.schema.json
3
- # timestamp: 2026-01-20T11:57:09+00:00
3
+ # timestamp: 2026-02-04T16:06:57+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-01-20T11:57:09+00:00
3
+ # timestamp: 2026-02-04T16:06:57+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-01-20T11:57:09+00:00
3
+ # timestamp: 2026-02-04T16:06:57+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-01-20T11:57:09+00:00
3
+ # timestamp: 2026-02-04T16:06:57+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-01-20T11:57:10+00:00
3
+ # timestamp: 2026-02-04T16:06:57+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-01-20T11:57:10+00:00
3
+ # timestamp: 2026-02-04T16:06:57+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-01-20T11:57:09+00:00
3
+ # timestamp: 2026-02-04T16:06:57+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -25,6 +25,10 @@ class CaseType(Enum):
25
25
  class RedactedStatus(Enum):
26
26
  not_redacted = "not_redacted"
27
27
  redacted = "redacted"
28
+ awaiting_ai_redaction = "awaiting_ai_redaction"
29
+ ai_redaction_review_required = "ai_redaction_review_required"
30
+ ai_redaction_failed = "ai_redaction_failed"
31
+ no_redaction_required = "no_redaction_required"
28
32
  NoneType_None = None
29
33
 
30
34
 
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: nsip-exam-timetable.schema.json
3
- # timestamp: 2026-01-20T11:57:10+00:00
3
+ # timestamp: 2026-02-04T16:06:57+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-01-20T11:57:09+00:00
3
+ # timestamp: 2026-02-04T16:06:57+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-01-20T11:57:10+00:00
3
+ # timestamp: 2026-02-04T16:06:57+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-01-20T11:57:10+00:00
3
+ # timestamp: 2026-02-04T16:06:57+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-01-20T11:57:09+00:00
3
+ # timestamp: 2026-02-04T16:06:57+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-01-20T11:57:10+00:00
3
+ # timestamp: 2026-02-04T16:06:57+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-01-20T11:57:09+00:00
3
+ # timestamp: 2026-02-04T16:06:57+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-01-20T11:57:09+00:00
3
+ # timestamp: 2026-02-04T16:06:57+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-01-20T11:57:09+00:00
3
+ # timestamp: 2026-02-04T16:06:57+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-01-20T11:57:09+00:00
3
+ # timestamp: 2026-02-04T16:06:57+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-01-20T11:57:09+00:00
3
+ # timestamp: 2026-02-04T16:06:58+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -201,7 +201,7 @@
201
201
  },
202
202
  "caseProcedure": {
203
203
  "type": ["string", "null"],
204
- "enum": ["written", "hearing", "inquiry", null],
204
+ "enum": ["written", "hearing", "inquiry", "writtenPart1", null],
205
205
  "description": "The type of procedure for the appeal",
206
206
  "$comment": "Also available on HAS cases"
207
207
  },
@@ -129,7 +129,15 @@
129
129
  },
130
130
  "redactedStatus": {
131
131
  "type": ["string", "null"],
132
- "enum": ["not_redacted", "redacted", null]
132
+ "enum": [
133
+ "not_redacted",
134
+ "redacted",
135
+ "awaiting_ai_redaction",
136
+ "ai_redaction_review_required",
137
+ "ai_redaction_failed",
138
+ "no_redaction_required",
139
+ null
140
+ ]
133
141
  },
134
142
  "publishedStatus": {
135
143
  "type": ["string", "null"],
package/src/enums.cjs CHANGED
@@ -55,6 +55,7 @@ const APPEAL_CASE_PROCEDURE = Object.freeze({
55
55
  HEARING: 'hearing',
56
56
  INQUIRY: 'inquiry',
57
57
  WRITTEN: 'written',
58
+ WRITTEN_PART_1: 'writtenPart1',
58
59
  });
59
60
 
60
61
  const APPEAL_CASE_STAGE = Object.freeze({
@@ -589,6 +590,10 @@ const NSIP_RECOMMENDATION = Object.freeze({
589
590
  });
590
591
 
591
592
  const NSIP_REDACTED_STATUS = Object.freeze({
593
+ AI_REDACTION_FAILED: 'ai_redaction_failed',
594
+ AI_REDACTION_REVIEW_REQUIRED: 'ai_redaction_review_required',
595
+ AWAITING_AI_REDACTION: 'awaiting_ai_redaction',
596
+ NO_REDACTION_REQUIRED: 'no_redaction_required',
592
597
  NOT_REDACTED: 'not_redacted',
593
598
  REDACTED: 'redacted',
594
599
  });
package/src/enums.d.ts CHANGED
@@ -53,6 +53,7 @@ export const APPEAL_CASE_PROCEDURE = {
53
53
  HEARING: 'hearing',
54
54
  INQUIRY: 'inquiry',
55
55
  WRITTEN: 'written',
56
+ WRITTEN_PART_1: 'writtenPart1',
56
57
  } as const;
57
58
 
58
59
  export const APPEAL_CASE_STAGE = {
@@ -587,6 +588,10 @@ export const NSIP_RECOMMENDATION = {
587
588
  } as const;
588
589
 
589
590
  export const NSIP_REDACTED_STATUS = {
591
+ AI_REDACTION_FAILED: 'ai_redaction_failed',
592
+ AI_REDACTION_REVIEW_REQUIRED: 'ai_redaction_review_required',
593
+ AWAITING_AI_REDACTION: 'awaiting_ai_redaction',
594
+ NO_REDACTION_REQUIRED: 'no_redaction_required',
590
595
  NOT_REDACTED: 'not_redacted',
591
596
  REDACTED: 'redacted',
592
597
  } as const;
package/src/enums.js CHANGED
@@ -53,6 +53,7 @@ export const APPEAL_CASE_PROCEDURE = Object.freeze({
53
53
  HEARING: 'hearing',
54
54
  INQUIRY: 'inquiry',
55
55
  WRITTEN: 'written',
56
+ WRITTEN_PART_1: 'writtenPart1',
56
57
  });
57
58
 
58
59
  export const APPEAL_CASE_STAGE = Object.freeze({
@@ -587,6 +588,10 @@ export const NSIP_RECOMMENDATION = Object.freeze({
587
588
  });
588
589
 
589
590
  export const NSIP_REDACTED_STATUS = Object.freeze({
591
+ AI_REDACTION_FAILED: 'ai_redaction_failed',
592
+ AI_REDACTION_REVIEW_REQUIRED: 'ai_redaction_review_required',
593
+ AWAITING_AI_REDACTION: 'awaiting_ai_redaction',
594
+ NO_REDACTION_REQUIRED: 'no_redaction_required',
590
595
  NOT_REDACTED: 'not_redacted',
591
596
  REDACTED: 'redacted',
592
597
  });
package/src/index.cjs CHANGED
@@ -136,6 +136,7 @@ const APPEAL_CASE_PROCEDURE = Object.freeze({
136
136
  HEARING: 'hearing',
137
137
  INQUIRY: 'inquiry',
138
138
  WRITTEN: 'written',
139
+ WRITTEN_PART_1: 'writtenPart1',
139
140
  });
140
141
 
141
142
  const APPEAL_CASE_STAGE = Object.freeze({
@@ -670,6 +671,10 @@ const NSIP_RECOMMENDATION = Object.freeze({
670
671
  });
671
672
 
672
673
  const NSIP_REDACTED_STATUS = Object.freeze({
674
+ AI_REDACTION_FAILED: 'ai_redaction_failed',
675
+ AI_REDACTION_REVIEW_REQUIRED: 'ai_redaction_review_required',
676
+ AWAITING_AI_REDACTION: 'awaiting_ai_redaction',
677
+ NO_REDACTION_REQUIRED: 'no_redaction_required',
673
678
  NOT_REDACTED: 'not_redacted',
674
679
  REDACTED: 'redacted',
675
680
  });
package/src/schemas.d.ts CHANGED
@@ -972,7 +972,7 @@ export type AppealS78Case = (
972
972
  /**
973
973
  * The type of procedure for the appeal
974
974
  */
975
- caseProcedure: 'written' | 'hearing' | 'inquiry' | null;
975
+ caseProcedure: 'written' | 'hearing' | 'inquiry' | 'writtenPart1' | null;
976
976
  /**
977
977
  * A unique identifier for the Local Planning Authority
978
978
  */
@@ -2115,7 +2115,14 @@ export interface NSIPDocument {
2115
2115
  dateCreated: string;
2116
2116
  lastModified: string | null;
2117
2117
  caseType: 'nsip' | 'has' | null;
2118
- redactedStatus: 'not_redacted' | 'redacted' | null;
2118
+ redactedStatus:
2119
+ | 'not_redacted'
2120
+ | 'redacted'
2121
+ | 'awaiting_ai_redaction'
2122
+ | 'ai_redaction_review_required'
2123
+ | 'ai_redaction_failed'
2124
+ | 'no_redaction_required'
2125
+ | null;
2119
2126
  publishedStatus:
2120
2127
  | 'not_checked'
2121
2128
  | 'checked'