@planning-inspectorate/data-model 2.1.0 → 2.3.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 (42) hide show
  1. package/.azure/ci.yml +3 -0
  2. package/docs/README.md +4 -0
  3. package/docs/appeal-has.md +19 -0
  4. package/docs/appeal-s78.md +19 -0
  5. package/docs/nsip-invoice.md +317 -0
  6. package/docs/nsip-meeting.md +197 -0
  7. package/package.json +2 -2
  8. package/pins_data_model/models/model_appeal_document.py +1 -1
  9. package/pins_data_model/models/model_appeal_event.py +1 -1
  10. package/pins_data_model/models/model_appeal_event_estimate.py +1 -1
  11. package/pins_data_model/models/model_appeal_has.py +9 -1
  12. package/pins_data_model/models/model_appeal_representation.py +1 -1
  13. package/pins_data_model/models/model_appeal_s78.py +9 -1
  14. package/pins_data_model/models/model_dart_response.py +1 -1
  15. package/pins_data_model/models/model_entraid.py +1 -1
  16. package/pins_data_model/models/model_folder.py +1 -1
  17. package/pins_data_model/models/model_gettimesheets_response.py +1 -1
  18. package/pins_data_model/models/model_listed_building.py +1 -1
  19. package/pins_data_model/models/model_listed_buildings.py +1 -1
  20. package/pins_data_model/models/model_nsip_document.py +1 -1
  21. package/pins_data_model/models/model_nsip_exam_timetable.py +1 -1
  22. package/pins_data_model/models/model_nsip_invoice.py +81 -0
  23. package/pins_data_model/models/model_nsip_meeting.py +59 -0
  24. package/pins_data_model/models/model_nsip_project.py +1 -1
  25. package/pins_data_model/models/model_nsip_project_update.py +1 -1
  26. package/pins_data_model/models/model_nsip_representation.py +1 -1
  27. package/pins_data_model/models/model_nsip_subscription.py +1 -1
  28. package/pins_data_model/models/model_pins_inspector.py +1 -1
  29. package/pins_data_model/models/model_pins_lpa.py +1 -1
  30. package/pins_data_model/models/model_s51_advice.py +1 -1
  31. package/pins_data_model/models/model_service_user.py +1 -1
  32. package/schemas/appeal-has.schema.json +6 -1
  33. package/schemas/appeal-s78.schema.json +6 -1
  34. package/schemas/nsip-invoice.schema.json +82 -0
  35. package/schemas/nsip-meeting.schema.json +55 -0
  36. package/src/enums.cjs +16 -0
  37. package/src/enums.d.ts +14 -0
  38. package/src/enums.js +14 -0
  39. package/src/index.cjs +16 -0
  40. package/src/schemas.d.ts +94 -0
  41. package/tests/appeals/appeal-has.test.js +2 -1
  42. package/tests/appeals/appeal-s78.test.js +2 -1
package/.azure/ci.yml CHANGED
@@ -21,6 +21,7 @@ resources:
21
21
  extends:
22
22
  template: stages/wrapper_ci.yml@templates
23
23
  parameters:
24
+ gitFetchDepth: 0
24
25
  skipAzureAuth: true
25
26
  validationJobs:
26
27
  - name: Run Checks
@@ -31,6 +32,8 @@ extends:
31
32
  script: npm ci
32
33
  - template: ../steps/node_script.yml
33
34
  parameters:
35
+ # only run commitlint on branches, not main
36
+ condition: ne(variables['Build.SourceBranchName'], 'main')
34
37
  nodeVersion: 22
35
38
  script: npm run commitlint
36
39
  - template: ../steps/node_script.yml
package/docs/README.md CHANGED
@@ -30,6 +30,10 @@
30
30
 
31
31
  * [NSIP Document](./nsip-document.md "NSIP document schema") – `nsip-document.schema.json`
32
32
 
33
+ * [NSIP Invoice](./nsip-invoice.md "NSIP Standalone Invoice Schema for ODW Curated layer") – `nsip-invoice.schema.json`
34
+
35
+ * [NSIP Meeting](./nsip-meeting.md "NSIP Standalone Meeting Schema for ODW Curated layer") – `nsip-meeting.schema.json`
36
+
33
37
  * [NSIP Project](./nsip-project.md "Subset of Pins Data Model \[Case]") – `nsip-project.schema.json`
34
38
 
35
39
  * [NSIP Project Update](./nsip-project-update.md "NSIP Project Update (formerly known as Banners)") – `nsip-project-update.schema.json`
@@ -115,6 +115,7 @@ any of
115
115
  | [didAppellantSubmitCompletePhotosAndPlans](#didappellantsubmitcompletephotosandplans) | `boolean` | Optional | can be null | [Appeal HAS Case](appeal-has-properties-didappellantsubmitcompletephotosandplans.md "appeal-has.schema.json#/properties/didAppellantSubmitCompletePhotosAndPlans") |
116
116
  | [isSiteInAreaOfSpecialControlAdverts](#issiteinareaofspecialcontroladverts) | `boolean` | Optional | can be null | [Appeal HAS Case](appeal-has-properties-issiteinareaofspecialcontroladverts.md "appeal-has.schema.json#/properties/isSiteInAreaOfSpecialControlAdverts") |
117
117
  | [advertDetails](#advertdetails) | `array` | Optional | can be null | [Appeal HAS Case](appeal-has-properties-advertdetails.md "appeal-has.schema.json#/properties/advertDetails") |
118
+ | [padsSapId](#padssapid) | `string` | Required | can be null | [Appeal HAS Case](appeal-has-properties-padssapid.md "appeal-has.schema.json#/properties/padsSapId") |
118
119
  | Additional Properties | Any | Optional | can be null | |
119
120
 
120
121
  ## caseId
@@ -2623,6 +2624,24 @@ A list of advertisements for the appeal
2623
2624
 
2624
2625
  `object[]` ([Details](appeal-has-properties-advertdetails-items.md))
2625
2626
 
2627
+ ## padsSapId
2628
+
2629
+ padsSapId for PADS inspectors
2630
+
2631
+ `padsSapId`
2632
+
2633
+ * is required
2634
+
2635
+ * Type: `string`
2636
+
2637
+ * can be null
2638
+
2639
+ * defined in: [Appeal HAS Case](appeal-has-properties-padssapid.md "appeal-has.schema.json#/properties/padsSapId")
2640
+
2641
+ ### padsSapId Type
2642
+
2643
+ `string`
2644
+
2626
2645
  ## Additional Properties
2627
2646
 
2628
2647
  Additional properties are allowed and do not have to follow a specific schema
@@ -154,6 +154,7 @@ any of
154
154
  | [didAppellantSubmitCompletePhotosAndPlans](#didappellantsubmitcompletephotosandplans) | `boolean` | Optional | can be null | [Appeal S78 Case](appeal-s78-properties-didappellantsubmitcompletephotosandplans.md "appeal-s78.schema.json#/properties/didAppellantSubmitCompletePhotosAndPlans") |
155
155
  | [isSiteInAreaOfSpecialControlAdverts](#issiteinareaofspecialcontroladverts) | `boolean` | Optional | can be null | [Appeal S78 Case](appeal-s78-properties-issiteinareaofspecialcontroladverts.md "appeal-s78.schema.json#/properties/isSiteInAreaOfSpecialControlAdverts") |
156
156
  | [advertDetails](#advertdetails) | `array` | Optional | can be null | [Appeal S78 Case](appeal-s78-properties-advertdetails.md "appeal-s78.schema.json#/properties/advertDetails") |
157
+ | [padsSapId](#padssapid) | `string` | Required | can be null | [Appeal S78 Case](appeal-s78-properties-padssapid.md "appeal-s78.schema.json#/properties/padsSapId") |
157
158
  | Additional Properties | Any | Optional | can be null | |
158
159
 
159
160
  ## caseId
@@ -3692,6 +3693,24 @@ A list of advertisements for the appeal
3692
3693
 
3693
3694
  `object[]` ([Details](appeal-s78-properties-advertdetails-items.md))
3694
3695
 
3696
+ ## padsSapId
3697
+
3698
+ padsSapId for PADS inspectors
3699
+
3700
+ `padsSapId`
3701
+
3702
+ * is required
3703
+
3704
+ * Type: `string`
3705
+
3706
+ * can be null
3707
+
3708
+ * defined in: [Appeal S78 Case](appeal-s78-properties-padssapid.md "appeal-s78.schema.json#/properties/padsSapId")
3709
+
3710
+ ### padsSapId Type
3711
+
3712
+ `string`
3713
+
3695
3714
  ## Additional Properties
3696
3715
 
3697
3716
  Additional properties are allowed and do not have to follow a specific schema
@@ -0,0 +1,317 @@
1
+ ## NSIP Invoice Type
2
+
3
+ `object` ([NSIP Invoice](nsip-invoice.md))
4
+
5
+ # NSIP Invoice Properties
6
+
7
+ | Property | Type | Required | Nullable | Defined by |
8
+ | :------------------------------------------------ | :-------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------ |
9
+ | [caseId](#caseid) | `integer` | Required | cannot be null | [NSIP Invoice](nsip-invoice-properties-caseid.md "nsip-invoice.schema.json#/properties/caseId") |
10
+ | [caseReference](#casereference) | `string` | Required | can be null | [NSIP Invoice](nsip-invoice-properties-casereference.md "nsip-invoice.schema.json#/properties/caseReference") |
11
+ | [invoiceStage](#invoicestage) | `string` | Required | can be null | [NSIP Invoice](nsip-invoice-properties-invoicestage.md "nsip-invoice.schema.json#/properties/invoiceStage") |
12
+ | [invoiceNumber](#invoicenumber) | `string` | Required | cannot be null | [NSIP Invoice](nsip-invoice-properties-invoicenumber.md "nsip-invoice.schema.json#/properties/invoiceNumber") |
13
+ | [amountDue](#amountdue) | `number` | Required | cannot be null | [NSIP Invoice](nsip-invoice-properties-amountdue.md "nsip-invoice.schema.json#/properties/amountDue") |
14
+ | [paymentDueDate](#paymentduedate) | `string` | Required | can be null | [NSIP Invoice](nsip-invoice-properties-paymentduedate.md "nsip-invoice.schema.json#/properties/paymentDueDate") |
15
+ | [invoicedDate](#invoiceddate) | `string` | Required | can be null | [NSIP Invoice](nsip-invoice-properties-invoiceddate.md "nsip-invoice.schema.json#/properties/invoicedDate") |
16
+ | [paymentDate](#paymentdate) | `string` | Required | can be null | [NSIP Invoice](nsip-invoice-properties-paymentdate.md "nsip-invoice.schema.json#/properties/paymentDate") |
17
+ | [refundCreditNoteNumber](#refundcreditnotenumber) | `string` | Required | can be null | [NSIP Invoice](nsip-invoice-properties-refundcreditnotenumber.md "nsip-invoice.schema.json#/properties/refundCreditNoteNumber") |
18
+ | [refundAmount](#refundamount) | `number` | Required | can be null | [NSIP Invoice](nsip-invoice-properties-refundamount.md "nsip-invoice.schema.json#/properties/refundAmount") |
19
+ | [refundIssueDate](#refundissuedate) | `string` | Required | can be null | [NSIP Invoice](nsip-invoice-properties-refundissuedate.md "nsip-invoice.schema.json#/properties/refundIssueDate") |
20
+ | Additional Properties | Any | Optional | can be null | |
21
+
22
+ ## caseId
23
+
24
+ The unique identifier within the Back Office. This is not the same as the case reference
25
+
26
+ `caseId`
27
+
28
+ * is required
29
+
30
+ * Type: `integer`
31
+
32
+ * cannot be null
33
+
34
+ * defined in: [NSIP Invoice](nsip-invoice-properties-caseid.md "nsip-invoice.schema.json#/properties/caseId")
35
+
36
+ ### caseId Type
37
+
38
+ `integer`
39
+
40
+ ### caseId Examples
41
+
42
+ ```json
43
+ 1242
44
+ ```
45
+
46
+ ## caseReference
47
+
48
+
49
+
50
+ `caseReference`
51
+
52
+ * is required
53
+
54
+ * Type: `string`
55
+
56
+ * can be null
57
+
58
+ * defined in: [NSIP Invoice](nsip-invoice-properties-casereference.md "nsip-invoice.schema.json#/properties/caseReference")
59
+
60
+ ### caseReference Type
61
+
62
+ `string`
63
+
64
+ ### caseReference Examples
65
+
66
+ ```json
67
+ "BC0510001"
68
+ ```
69
+
70
+ ## invoiceStage
71
+
72
+ Invoice stage
73
+
74
+ `invoiceStage`
75
+
76
+ * is required
77
+
78
+ * Type: `string`
79
+
80
+ * can be null
81
+
82
+ * defined in: [NSIP Invoice](nsip-invoice-properties-invoicestage.md "nsip-invoice.schema.json#/properties/invoiceStage")
83
+
84
+ ### invoiceStage Type
85
+
86
+ `string`
87
+
88
+ ### invoiceStage Constraints
89
+
90
+ **enum**: the value of this property must be equal to one of the following values:
91
+
92
+ | Value | Explanation |
93
+ | :---------------------- | :---------- |
94
+ | `"pre_acceptance"` | |
95
+ | `"acceptance"` | |
96
+ | `"pre_examination"` | |
97
+ | `"initial_examination"` | |
98
+ | `"final_examination"` | |
99
+ | `null` | |
100
+
101
+ ### invoiceStage Examples
102
+
103
+ ```json
104
+ "pre_acceptance"
105
+ ```
106
+
107
+ ## invoiceNumber
108
+
109
+ Invoice number
110
+
111
+ `invoiceNumber`
112
+
113
+ * is required
114
+
115
+ * Type: `string`
116
+
117
+ * cannot be null
118
+
119
+ * defined in: [NSIP Invoice](nsip-invoice-properties-invoicenumber.md "nsip-invoice.schema.json#/properties/invoiceNumber")
120
+
121
+ ### invoiceNumber Type
122
+
123
+ `string`
124
+
125
+ ### invoiceNumber Examples
126
+
127
+ ```json
128
+ "1800004419"
129
+ ```
130
+
131
+ ## amountDue
132
+
133
+ Amount due
134
+
135
+ `amountDue`
136
+
137
+ * is required
138
+
139
+ * Type: `number`
140
+
141
+ * cannot be null
142
+
143
+ * defined in: [NSIP Invoice](nsip-invoice-properties-amountdue.md "nsip-invoice.schema.json#/properties/amountDue")
144
+
145
+ ### amountDue Type
146
+
147
+ `number`
148
+
149
+ ### amountDue Examples
150
+
151
+ ```json
152
+ 500
153
+ ```
154
+
155
+ ## paymentDueDate
156
+
157
+ Payment due date
158
+
159
+ `paymentDueDate`
160
+
161
+ * is required
162
+
163
+ * Type: `string`
164
+
165
+ * can be null
166
+
167
+ * defined in: [NSIP Invoice](nsip-invoice-properties-paymentduedate.md "nsip-invoice.schema.json#/properties/paymentDueDate")
168
+
169
+ ### paymentDueDate Type
170
+
171
+ `string`
172
+
173
+ ### paymentDueDate Constraints
174
+
175
+ **date time**: the string must be a date time string, according to [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification")
176
+
177
+ ### paymentDueDate Examples
178
+
179
+ ```json
180
+ "2023-07-27T20:30:00.000Z"
181
+ ```
182
+
183
+ ## invoicedDate
184
+
185
+ Invoiced date
186
+
187
+ `invoicedDate`
188
+
189
+ * is required
190
+
191
+ * Type: `string`
192
+
193
+ * can be null
194
+
195
+ * defined in: [NSIP Invoice](nsip-invoice-properties-invoiceddate.md "nsip-invoice.schema.json#/properties/invoicedDate")
196
+
197
+ ### invoicedDate Type
198
+
199
+ `string`
200
+
201
+ ### invoicedDate Constraints
202
+
203
+ **date time**: the string must be a date time string, according to [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification")
204
+
205
+ ### invoicedDate Examples
206
+
207
+ ```json
208
+ "2023-07-27T20:30:00.000Z"
209
+ ```
210
+
211
+ ## paymentDate
212
+
213
+ Date of payment
214
+
215
+ `paymentDate`
216
+
217
+ * is required
218
+
219
+ * Type: `string`
220
+
221
+ * can be null
222
+
223
+ * defined in: [NSIP Invoice](nsip-invoice-properties-paymentdate.md "nsip-invoice.schema.json#/properties/paymentDate")
224
+
225
+ ### paymentDate Type
226
+
227
+ `string`
228
+
229
+ ### paymentDate Constraints
230
+
231
+ **date time**: the string must be a date time string, according to [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification")
232
+
233
+ ### paymentDate Examples
234
+
235
+ ```json
236
+ "2023-07-27T20:30:00.000Z"
237
+ ```
238
+
239
+ ## refundCreditNoteNumber
240
+
241
+ Refund credit note number
242
+
243
+ `refundCreditNoteNumber`
244
+
245
+ * is required
246
+
247
+ * Type: `string`
248
+
249
+ * can be null
250
+
251
+ * defined in: [NSIP Invoice](nsip-invoice-properties-refundcreditnotenumber.md "nsip-invoice.schema.json#/properties/refundCreditNoteNumber")
252
+
253
+ ### refundCreditNoteNumber Type
254
+
255
+ `string`
256
+
257
+ ### refundCreditNoteNumber Examples
258
+
259
+ ```json
260
+ "1800004419"
261
+ ```
262
+
263
+ ## refundAmount
264
+
265
+ Amount refunded
266
+
267
+ `refundAmount`
268
+
269
+ * is required
270
+
271
+ * Type: `number`
272
+
273
+ * can be null
274
+
275
+ * defined in: [NSIP Invoice](nsip-invoice-properties-refundamount.md "nsip-invoice.schema.json#/properties/refundAmount")
276
+
277
+ ### refundAmount Type
278
+
279
+ `number`
280
+
281
+ ### refundAmount Examples
282
+
283
+ ```json
284
+ 200
285
+ ```
286
+
287
+ ## refundIssueDate
288
+
289
+ Refund issue date
290
+
291
+ `refundIssueDate`
292
+
293
+ * is required
294
+
295
+ * Type: `string`
296
+
297
+ * can be null
298
+
299
+ * defined in: [NSIP Invoice](nsip-invoice-properties-refundissuedate.md "nsip-invoice.schema.json#/properties/refundIssueDate")
300
+
301
+ ### refundIssueDate Type
302
+
303
+ `string`
304
+
305
+ ### refundIssueDate Constraints
306
+
307
+ **date time**: the string must be a date time string, according to [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification")
308
+
309
+ ### refundIssueDate Examples
310
+
311
+ ```json
312
+ "2023-07-27T20:30:00.000Z"
313
+ ```
314
+
315
+ ## Additional Properties
316
+
317
+ Additional properties are allowed and do not have to follow a specific schema
@@ -0,0 +1,197 @@
1
+ ## NSIP Meeting Type
2
+
3
+ `object` ([NSIP Meeting](nsip-meeting.md))
4
+
5
+ # NSIP Meeting Properties
6
+
7
+ | Property | Type | Required | Nullable | Defined by |
8
+ | :---------------------------------------------------- | :-------- | :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------- |
9
+ | [meetingID](#meetingid) | `integer` | Required | cannot be null | [NSIP Meeting](nsip-meeting-properties-meetingid.md "nsip-meeting.schema.json#/properties/meetingID") |
10
+ | [caseId](#caseid) | `integer` | Required | cannot be null | [NSIP Meeting](nsip-meeting-properties-caseid.md "nsip-meeting.schema.json#/properties/caseId") |
11
+ | [caseReference](#casereference) | `string` | Required | can be null | [NSIP Meeting](nsip-meeting-properties-casereference.md "nsip-meeting.schema.json#/properties/caseReference") |
12
+ | [meetingAgenda](#meetingagenda) | `string` | Required | can be null | [NSIP Meeting](nsip-meeting-properties-meetingagenda.md "nsip-meeting.schema.json#/properties/meetingAgenda") |
13
+ | [planningInspectorateRole](#planninginspectoraterole) | `string` | Required | can be null | [NSIP Meeting](nsip-meeting-properties-planninginspectoraterole.md "nsip-meeting.schema.json#/properties/planningInspectorateRole") |
14
+ | [meetingDate](#meetingdate) | `string` | Required | can be null | [NSIP Meeting](nsip-meeting-properties-meetingdate.md "nsip-meeting.schema.json#/properties/meetingDate") |
15
+ | [meetingType](#meetingtype) | `string` | Required | can be null | [NSIP Meeting](nsip-meeting-properties-meetingtype.md "nsip-meeting.schema.json#/properties/meetingType") |
16
+ | Additional Properties | Any | Optional | can be null | |
17
+
18
+ ## meetingID
19
+
20
+ The unique identifier for an NSIP Meeting.
21
+
22
+ `meetingID`
23
+
24
+ * is required
25
+
26
+ * Type: `integer`
27
+
28
+ * cannot be null
29
+
30
+ * defined in: [NSIP Meeting](nsip-meeting-properties-meetingid.md "nsip-meeting.schema.json#/properties/meetingID")
31
+
32
+ ### meetingID Type
33
+
34
+ `integer`
35
+
36
+ ### meetingID Examples
37
+
38
+ ```json
39
+ 1234
40
+ ```
41
+
42
+ ## caseId
43
+
44
+ The unique identifier for the case within the Back Office. This is not the same as the case reference
45
+
46
+ `caseId`
47
+
48
+ * is required
49
+
50
+ * Type: `integer`
51
+
52
+ * cannot be null
53
+
54
+ * defined in: [NSIP Meeting](nsip-meeting-properties-caseid.md "nsip-meeting.schema.json#/properties/caseId")
55
+
56
+ ### caseId Type
57
+
58
+ `integer`
59
+
60
+ ### caseId Examples
61
+
62
+ ```json
63
+ 1242
64
+ ```
65
+
66
+ ## caseReference
67
+
68
+
69
+
70
+ `caseReference`
71
+
72
+ * is required
73
+
74
+ * Type: `string`
75
+
76
+ * can be null
77
+
78
+ * defined in: [NSIP Meeting](nsip-meeting-properties-casereference.md "nsip-meeting.schema.json#/properties/caseReference")
79
+
80
+ ### caseReference Type
81
+
82
+ `string`
83
+
84
+ ### caseReference Examples
85
+
86
+ ```json
87
+ "BC0510001"
88
+ ```
89
+
90
+ ## meetingAgenda
91
+
92
+ Meeting agenda
93
+
94
+ `meetingAgenda`
95
+
96
+ * is required
97
+
98
+ * Type: `string`
99
+
100
+ * can be null
101
+
102
+ * defined in: [NSIP Meeting](nsip-meeting-properties-meetingagenda.md "nsip-meeting.schema.json#/properties/meetingAgenda")
103
+
104
+ ### meetingAgenda Type
105
+
106
+ `string`
107
+
108
+ ### meetingAgenda Examples
109
+
110
+ ```json
111
+ "Flood Risk Assessment (FRA)"
112
+ ```
113
+
114
+ ## planningInspectorateRole
115
+
116
+ Planning Inspectorate role
117
+
118
+ `planningInspectorateRole`
119
+
120
+ * is required
121
+
122
+ * Type: `string`
123
+
124
+ * can be null
125
+
126
+ * defined in: [NSIP Meeting](nsip-meeting-properties-planninginspectoraterole.md "nsip-meeting.schema.json#/properties/planningInspectorateRole")
127
+
128
+ ### planningInspectorateRole Type
129
+
130
+ `string`
131
+
132
+ ### planningInspectorateRole Constraints
133
+
134
+ **enum**: the value of this property must be equal to one of the following values:
135
+
136
+ | Value | Explanation |
137
+ | :-------------- | :---------- |
138
+ | `"facilitator"` | |
139
+ | `"advisor"` | |
140
+ | `"observer"` | |
141
+ | `null` | |
142
+
143
+ ### planningInspectorateRole Examples
144
+
145
+ ```json
146
+ "facilitator"
147
+ ```
148
+
149
+ ## meetingDate
150
+
151
+ Meeting date
152
+
153
+ `meetingDate`
154
+
155
+ * is required
156
+
157
+ * Type: `string`
158
+
159
+ * can be null
160
+
161
+ * defined in: [NSIP Meeting](nsip-meeting-properties-meetingdate.md "nsip-meeting.schema.json#/properties/meetingDate")
162
+
163
+ ### meetingDate Type
164
+
165
+ `string`
166
+
167
+ ### meetingDate Constraints
168
+
169
+ **date time**: the string must be a date time string, according to [RFC 3339, section 5.6](https://tools.ietf.org/html/rfc3339 "check the specification")
170
+
171
+ ### meetingDate Examples
172
+
173
+ ```json
174
+ "2023-07-27T20:30:00.000Z"
175
+ ```
176
+
177
+ ## meetingType
178
+
179
+ Type of Meeting
180
+
181
+ `meetingType`
182
+
183
+ * is required
184
+
185
+ * Type: `string`
186
+
187
+ * can be null
188
+
189
+ * defined in: [NSIP Meeting](nsip-meeting-properties-meetingtype.md "nsip-meeting.schema.json#/properties/meetingType")
190
+
191
+ ### meetingType Type
192
+
193
+ `string`
194
+
195
+ ## Additional Properties
196
+
197
+ Additional properties are allowed and do not have to follow a specific schema
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@planning-inspectorate/data-model",
3
- "version": "2.1.0",
3
+ "version": "2.3.0",
4
4
  "description": "JSON Schemas for the Planning Inspectorate's Data Model",
5
5
  "main": "src/index.js",
6
6
  "type": "module",
@@ -9,7 +9,7 @@
9
9
  "require": "./src/index.cjs"
10
10
  },
11
11
  "scripts": {
12
- "commitlint": "commitlint --from=$(git cherry origin/main | head -n 1 | cut -c 3-)",
12
+ "commitlint": "commitlint --from=$(git rev-parse $(git cherry origin/main | head -n 1 | cut -c 3-)^1)",
13
13
  "gen": "npm run gen-docs && npm run gen-enums && npm run gen-types && npm run gen-cjs",
14
14
  "gen-docs": "node src/lib/gen-docs.js",
15
15
  "gen-enums": "node src/lib/gen-enums.js",
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: appeal-document.schema.json
3
- # timestamp: 2025-11-12T14:58:30+00:00
3
+ # timestamp: 2025-12-02T17:41:26+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: 2025-11-12T14:58:30+00:00
3
+ # timestamp: 2025-12-02T17:41:26+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: 2025-11-12T14:58:30+00:00
3
+ # timestamp: 2025-12-02T17:41:26+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: 2025-11-12T14:58:30+00:00
3
+ # timestamp: 2025-12-02T17:41:26+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -742,6 +742,10 @@ class AppealHasCase1(BaseModel):
742
742
  """
743
743
  A list of advertisements for the appeal
744
744
  """
745
+ padsSapId: str | None = None
746
+ """
747
+ padsSapId for PADS inspectors
748
+ """
745
749
 
746
750
 
747
751
  class AdvertDetail1(BaseModel):
@@ -1237,6 +1241,10 @@ class AppealHasCase2(BaseModel):
1237
1241
  """
1238
1242
  A list of advertisements for the appeal
1239
1243
  """
1244
+ padsSapId: str | None = None
1245
+ """
1246
+ padsSapId for PADS inspectors
1247
+ """
1240
1248
 
1241
1249
 
1242
1250
  class AppealHasCase(RootModel[AppealHasCase1 | AppealHasCase2]):
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: appeal-representation.schema.json
3
- # timestamp: 2025-11-12T14:58:30+00:00
3
+ # timestamp: 2025-12-02T17:41:26+00:00
4
4
 
5
5
  from __future__ import annotations
6
6