@pdtf/schemas 3.6.0-8 → 3.6.0-dev.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.
Files changed (71) hide show
  1. package/CLAUDE.md +101 -0
  2. package/README.md +57 -33
  3. package/docs/backend-lms-profile-filtering-spec.md +180 -0
  4. package/docs/branch-release-workflow.md +138 -0
  5. package/docs/sef25-extensions-ui-spec.md +355 -0
  6. package/index.js +134 -66
  7. package/package.json +6 -2
  8. package/src/examples/v3/exampleTransaction.json +3 -3
  9. package/src/schemas/v3/combined.json +6981 -1234
  10. package/src/schemas/v3/compactSkeleton.txt +316 -5
  11. package/src/schemas/v3/overlays/baspi4.json +162 -20
  12. package/src/schemas/v3/overlays/baspi5.json +167 -22
  13. package/src/schemas/v3/overlays/extensions/ac.json +333 -0
  14. package/src/schemas/v3/overlays/extensions/as.json +4 -2
  15. package/src/schemas/v3/overlays/extensions/dk.json +32 -0
  16. package/src/schemas/v3/overlays/extensions/dr.json +9 -9
  17. package/src/schemas/v3/overlays/extensions/er.json +4 -2
  18. package/src/schemas/v3/overlays/extensions/fd.json +6 -3
  19. package/src/schemas/v3/overlays/extensions/hi.json +6 -3
  20. package/src/schemas/v3/overlays/extensions/hs.json +4 -2
  21. package/src/schemas/v3/overlays/extensions/ic.json +59 -0
  22. package/src/schemas/v3/overlays/extensions/jk.json +28 -8
  23. package/src/schemas/v3/overlays/extensions/la.json +4 -2
  24. package/src/schemas/v3/overlays/extensions/lc.json +75 -0
  25. package/src/schemas/v3/overlays/extensions/ma.json +6 -3
  26. package/src/schemas/v3/overlays/extensions/mc.json +4 -2
  27. package/src/schemas/v3/overlays/extensions/mi.json +69 -0
  28. package/src/schemas/v3/overlays/extensions/nd.json +43 -0
  29. package/src/schemas/v3/overlays/extensions/oa.json +4 -2
  30. package/src/schemas/v3/overlays/extensions/oc.json +4 -2
  31. package/src/schemas/v3/overlays/extensions/pc.json +37 -0
  32. package/src/schemas/v3/overlays/extensions/ph.json +194 -0
  33. package/src/schemas/v3/overlays/extensions/rw.json +68 -0
  34. package/src/schemas/v3/overlays/extensions/sb.json +4 -2
  35. package/src/schemas/v3/overlays/extensions/sc.json +129 -0
  36. package/src/schemas/v3/overlays/extensions/sd.json +63 -0
  37. package/src/schemas/v3/overlays/extensions/sf.json +4 -2
  38. package/src/schemas/v3/overlays/extensions/sl.json +4 -2
  39. package/src/schemas/v3/overlays/extensions/ta.json +252 -0
  40. package/src/schemas/v3/overlays/extensions/tf.json +6 -3
  41. package/src/schemas/v3/overlays/extensions/tr.json +73 -0
  42. package/src/schemas/v3/overlays/extensions/wg.json +350 -0
  43. package/src/schemas/v3/overlays/fme1.json +16 -14
  44. package/src/schemas/v3/overlays/lpe1.json +60 -30
  45. package/src/schemas/v3/overlays/nts.json +68 -1
  46. package/src/schemas/v3/overlays/nts2.json +68 -4
  47. package/src/schemas/v3/overlays/ntsl.json +68 -1
  48. package/src/schemas/v3/overlays/ntsl2.json +68 -4
  49. package/src/schemas/v3/overlays/piq.json +37 -3
  50. package/src/schemas/v3/overlays/rds.json +117 -8
  51. package/src/schemas/v3/overlays/sef25.json +1639 -0
  52. package/src/schemas/v3/overlays/ta6.json +46 -16
  53. package/src/schemas/v3/overlays/ta6ed6.json +6533 -0
  54. package/src/schemas/v3/overlays/ta7.json +70 -6
  55. package/src/schemas/v3/overlays/ta7ed5.json +1551 -0
  56. package/src/schemas/v3/pdtf-transaction.json +3896 -686
  57. package/src/schemas/v3/skeleton.json +442 -35
  58. package/src/utils/extractExtensionOverlays.js +293 -31
  59. package/src/utils/extractOverlay.js +94 -27
  60. package/src/utils/pathSkeleton.js +1 -1
  61. package/.claude/settings.local.json +0 -42
  62. package/.github/workflows/pages.yml +0 -50
  63. package/CNAME +0 -1
  64. package/_config.yml +0 -1
  65. package/src/tests/v3/caching.test.js +0 -591
  66. package/src/tests/v3/enquiries.test.js +0 -1096
  67. package/src/tests/v3/extensionOverlays.test.js +0 -525
  68. package/src/tests/v3/offers.test.js +0 -823
  69. package/src/tests/v3/patternProperties.test.js +0 -565
  70. package/src/tests/v3/transactionSchema.test.js +0 -615
  71. package/src/tests/v3/verifiedClaimsValidator.test.js +0 -195
@@ -0,0 +1,333 @@
1
+ {
2
+ "properties": {
3
+ "propertyPack": {
4
+ "properties": {
5
+ "alterationsAndChanges": {
6
+ "properties": {
7
+ "extension": {
8
+ "properties": {
9
+ "yesNo": {
10
+ "ntsRef": "A1.1.1",
11
+ "type": "string"
12
+ }
13
+ },
14
+ "discriminator": {
15
+ "propertyName": "yesNo"
16
+ },
17
+ "oneOf": [
18
+ null,
19
+ {
20
+ "properties": {
21
+ "details": {
22
+ "ntsRef": "A1.1.2",
23
+ "type": "string",
24
+ "minLength": 1
25
+ },
26
+ "planningPermission": {
27
+ "properties": {
28
+ "yesNo": {
29
+ "ntsRef": "A1.1.3.1",
30
+ "type": "string"
31
+ }
32
+ },
33
+ "discriminator": {
34
+ "propertyName": "yesNo"
35
+ },
36
+ "required": [
37
+ "yesNo"
38
+ ],
39
+ "ntsRef": "A1.1.3"
40
+ },
41
+ "buildingRegApproval": {
42
+ "properties": {
43
+ "yesNo": {
44
+ "ntsRef": "A1.1.4.1",
45
+ "type": "string"
46
+ }
47
+ },
48
+ "discriminator": {
49
+ "propertyName": "yesNo"
50
+ },
51
+ "required": [
52
+ "yesNo"
53
+ ],
54
+ "ntsRef": "A1.1.4"
55
+ }
56
+ },
57
+ "required": [
58
+ "details",
59
+ "planningPermission",
60
+ "buildingRegApproval"
61
+ ]
62
+ }
63
+ ],
64
+ "required": [
65
+ "yesNo"
66
+ ],
67
+ "ntsRef": "A1.1"
68
+ },
69
+ "loftConversion": {
70
+ "properties": {
71
+ "yesNo": {
72
+ "ntsRef": "A1.2.1",
73
+ "type": "string"
74
+ }
75
+ },
76
+ "discriminator": {
77
+ "propertyName": "yesNo"
78
+ },
79
+ "oneOf": [
80
+ null,
81
+ {
82
+ "properties": {
83
+ "details": {
84
+ "ntsRef": "A1.2.2",
85
+ "type": "string",
86
+ "minLength": 1
87
+ },
88
+ "planningPermission": {
89
+ "properties": {
90
+ "yesNo": {
91
+ "ntsRef": "A1.2.3.1",
92
+ "type": "string"
93
+ }
94
+ },
95
+ "discriminator": {
96
+ "propertyName": "yesNo"
97
+ },
98
+ "required": [
99
+ "yesNo"
100
+ ],
101
+ "ntsRef": "A1.2.3"
102
+ },
103
+ "buildingRegApproval": {
104
+ "properties": {
105
+ "yesNo": {
106
+ "ntsRef": "A1.2.4.1",
107
+ "type": "string"
108
+ }
109
+ },
110
+ "discriminator": {
111
+ "propertyName": "yesNo"
112
+ },
113
+ "required": [
114
+ "yesNo"
115
+ ],
116
+ "ntsRef": "A1.2.4"
117
+ }
118
+ },
119
+ "required": [
120
+ "details",
121
+ "planningPermission",
122
+ "buildingRegApproval"
123
+ ]
124
+ }
125
+ ],
126
+ "required": [
127
+ "yesNo"
128
+ ],
129
+ "ntsRef": "A1.2"
130
+ },
131
+ "garageConversion": {
132
+ "properties": {
133
+ "yesNo": {
134
+ "ntsRef": "A1.3.1",
135
+ "type": "string"
136
+ }
137
+ },
138
+ "discriminator": {
139
+ "propertyName": "yesNo"
140
+ },
141
+ "oneOf": [
142
+ null,
143
+ {
144
+ "properties": {
145
+ "details": {
146
+ "ntsRef": "A1.3.2",
147
+ "type": "string",
148
+ "minLength": 1
149
+ },
150
+ "planningPermission": {
151
+ "properties": {
152
+ "yesNo": {
153
+ "ntsRef": "A1.3.3.1",
154
+ "type": "string"
155
+ }
156
+ },
157
+ "discriminator": {
158
+ "propertyName": "yesNo"
159
+ },
160
+ "required": [
161
+ "yesNo"
162
+ ],
163
+ "ntsRef": "A1.3.3"
164
+ },
165
+ "buildingRegApproval": {
166
+ "properties": {
167
+ "yesNo": {
168
+ "ntsRef": "A1.3.4.1",
169
+ "type": "string"
170
+ }
171
+ },
172
+ "discriminator": {
173
+ "propertyName": "yesNo"
174
+ },
175
+ "required": [
176
+ "yesNo"
177
+ ],
178
+ "ntsRef": "A1.3.4"
179
+ }
180
+ },
181
+ "required": [
182
+ "details",
183
+ "planningPermission",
184
+ "buildingRegApproval"
185
+ ]
186
+ }
187
+ ],
188
+ "required": [
189
+ "yesNo"
190
+ ],
191
+ "ntsRef": "A1.3"
192
+ },
193
+ "removalOfInternalWalls": {
194
+ "properties": {
195
+ "yesNo": {
196
+ "ntsRef": "A1.4.1",
197
+ "type": "string"
198
+ }
199
+ },
200
+ "discriminator": {
201
+ "propertyName": "yesNo"
202
+ },
203
+ "oneOf": [
204
+ null,
205
+ {
206
+ "properties": {
207
+ "details": {
208
+ "ntsRef": "A1.4.2",
209
+ "type": "string",
210
+ "minLength": 1
211
+ },
212
+ "planningPermission": {
213
+ "properties": {
214
+ "yesNo": {
215
+ "ntsRef": "A1.4.3.1",
216
+ "type": "string"
217
+ }
218
+ },
219
+ "discriminator": {
220
+ "propertyName": "yesNo"
221
+ },
222
+ "required": [
223
+ "yesNo"
224
+ ],
225
+ "ntsRef": "A1.4.3"
226
+ },
227
+ "buildingRegApproval": {
228
+ "properties": {
229
+ "yesNo": {
230
+ "ntsRef": "A1.4.4.1",
231
+ "type": "string"
232
+ }
233
+ },
234
+ "discriminator": {
235
+ "propertyName": "yesNo"
236
+ },
237
+ "required": [
238
+ "yesNo"
239
+ ],
240
+ "ntsRef": "A1.4.4"
241
+ }
242
+ },
243
+ "required": [
244
+ "details",
245
+ "planningPermission",
246
+ "buildingRegApproval"
247
+ ]
248
+ }
249
+ ],
250
+ "required": [
251
+ "yesNo"
252
+ ],
253
+ "ntsRef": "A1.4"
254
+ },
255
+ "changeOfUse": {
256
+ "properties": {
257
+ "yesNo": {
258
+ "ntsRef": "A1.5.1",
259
+ "type": "string"
260
+ }
261
+ },
262
+ "discriminator": {
263
+ "propertyName": "yesNo"
264
+ },
265
+ "oneOf": [
266
+ null,
267
+ {
268
+ "properties": {
269
+ "details": {
270
+ "ntsRef": "A1.5.2",
271
+ "type": "string",
272
+ "minLength": 1
273
+ },
274
+ "planningPermission": {
275
+ "properties": {
276
+ "yesNo": {
277
+ "ntsRef": "A1.5.3.1",
278
+ "type": "string"
279
+ }
280
+ },
281
+ "discriminator": {
282
+ "propertyName": "yesNo"
283
+ },
284
+ "required": [
285
+ "yesNo"
286
+ ],
287
+ "ntsRef": "A1.5.3"
288
+ },
289
+ "buildingRegApproval": {
290
+ "properties": {
291
+ "yesNo": {
292
+ "ntsRef": "A1.5.4.1",
293
+ "type": "string"
294
+ }
295
+ },
296
+ "discriminator": {
297
+ "propertyName": "yesNo"
298
+ },
299
+ "required": [
300
+ "yesNo"
301
+ ],
302
+ "ntsRef": "A1.5.4"
303
+ }
304
+ },
305
+ "required": [
306
+ "details",
307
+ "planningPermission",
308
+ "buildingRegApproval"
309
+ ]
310
+ }
311
+ ],
312
+ "required": [
313
+ "yesNo"
314
+ ],
315
+ "ntsRef": "A1.5"
316
+ }
317
+ },
318
+ "required": [
319
+ "extension",
320
+ "loftConversion",
321
+ "garageConversion",
322
+ "removalOfInternalWalls",
323
+ "changeOfUse"
324
+ ],
325
+ "ntsRef": "A1"
326
+ }
327
+ }
328
+ }
329
+ },
330
+ "$schema": "http://json-schema.org/draft-07/schema#",
331
+ "$id": "https://trust.propdata.org.uk/schemas/v3/overlays/extensions/ac.json",
332
+ "$comment": "Selected alterations and changes fields for SEF25"
333
+ }
@@ -58,12 +58,14 @@
58
58
  },
59
59
  "required": [
60
60
  "containsAsbestos"
61
- ]
61
+ ],
62
+ "ntsRef": "A5"
62
63
  }
63
64
  },
64
65
  "required": [
65
66
  "specialistIssues"
66
- ]
67
+ ],
68
+ "ntsRef": "0"
67
69
  }
68
70
  },
69
71
  "$schema": "http://json-schema.org/draft-07/schema#",
@@ -0,0 +1,32 @@
1
+ {
2
+ "properties": {
3
+ "propertyPack": {
4
+ "properties": {
5
+ "parking": {
6
+ "properties": {
7
+ "droppedKerbAccess": {
8
+ "ntsRef": "K1.1",
9
+ "required": [
10
+ "yesNo"
11
+ ],
12
+ "properties": {
13
+ "yesNo": {
14
+ "ntsRef": "K1.1.1",
15
+ "type": "string"
16
+ }
17
+ },
18
+ "type": "object"
19
+ }
20
+ },
21
+ "required": [
22
+ "droppedKerbAccess"
23
+ ],
24
+ "ntsRef": "K1"
25
+ }
26
+ }
27
+ }
28
+ },
29
+ "$schema": "http://json-schema.org/draft-07/schema#",
30
+ "$id": "https://trust.propdata.org.uk/schemas/v3/overlays/extensions/dk.json",
31
+ "$comment": "Dropped kerb access to parking"
32
+ }
@@ -38,17 +38,15 @@
38
38
  "type": "string",
39
39
  "minLength": 1
40
40
  },
41
- "attachments": {
42
- "ntsRef": "A5.1.3",
43
- "type": "string",
41
+ "yesNo": {
44
42
  "enum": [
45
- "Attached",
46
- "To follow"
43
+ "Yes"
47
44
  ]
48
45
  },
49
- "yesNo": {
46
+ "attachments": {
50
47
  "enum": [
51
- "Yes"
48
+ "Attached",
49
+ "To follow"
52
50
  ]
53
51
  }
54
52
  }
@@ -59,12 +57,14 @@
59
57
  },
60
58
  "required": [
61
59
  "dryRotEtcTreatment"
62
- ]
60
+ ],
61
+ "ntsRef": "A5"
63
62
  }
64
63
  },
65
64
  "required": [
66
65
  "specialistIssues"
67
- ]
66
+ ],
67
+ "ntsRef": "0"
68
68
  }
69
69
  },
70
70
  "$schema": "http://json-schema.org/draft-07/schema#",
@@ -69,12 +69,14 @@
69
69
  },
70
70
  "required": [
71
71
  "ownershipsToBeTransferred"
72
- ]
72
+ ],
73
+ "ntsRef": "A3"
73
74
  }
74
75
  },
75
76
  "required": [
76
77
  "ownership"
77
- ]
78
+ ],
79
+ "ntsRef": "0"
78
80
  }
79
81
  },
80
82
  "$schema": "http://json-schema.org/draft-07/schema#",
@@ -53,17 +53,20 @@
53
53
  },
54
54
  "required": [
55
55
  "floodDefences"
56
- ]
56
+ ],
57
+ "ntsRef": "C3.1.1"
57
58
  }
58
59
  },
59
60
  "required": [
60
61
  "flooding"
61
- ]
62
+ ],
63
+ "ntsRef": "C3.1"
62
64
  }
63
65
  },
64
66
  "required": [
65
67
  "environmentalIssues"
66
- ]
68
+ ],
69
+ "ntsRef": "0"
67
70
  }
68
71
  },
69
72
  "$schema": "http://json-schema.org/draft-07/schema#",
@@ -22,7 +22,8 @@
22
22
  },
23
23
  "required": [
24
24
  "centralHeatingInstalled"
25
- ]
25
+ ],
26
+ "ntsRef": "B3.4.3"
26
27
  }
27
28
  },
28
29
  "required": [
@@ -34,12 +35,14 @@
34
35
  },
35
36
  "required": [
36
37
  "heatingSystem"
37
- ]
38
+ ],
39
+ "ntsRef": "B3.4"
38
40
  }
39
41
  },
40
42
  "required": [
41
43
  "heating"
42
- ]
44
+ ],
45
+ "ntsRef": "0"
43
46
  }
44
47
  },
45
48
  "$schema": "http://json-schema.org/draft-07/schema#",
@@ -57,12 +57,14 @@
57
57
  },
58
58
  "required": [
59
59
  "ongoingHealthOrSafetyIssue"
60
- ]
60
+ ],
61
+ "ntsRef": "A5"
61
62
  }
62
63
  },
63
64
  "required": [
64
65
  "specialistIssues"
65
- ]
66
+ ],
67
+ "ntsRef": "0"
66
68
  }
67
69
  },
68
70
  "$schema": "http://json-schema.org/draft-07/schema#",
@@ -0,0 +1,59 @@
1
+ {
2
+ "properties": {
3
+ "propertyPack": {
4
+ "properties": {
5
+ "insurance": {
6
+ "oneOf": [
7
+ null,
8
+ {
9
+ "properties": {
10
+ "insuranceClaims": {
11
+ "ntsRef": "I1.1",
12
+ "required": [
13
+ "yesNo"
14
+ ],
15
+ "discriminator": {
16
+ "propertyName": "yesNo"
17
+ },
18
+ "properties": {
19
+ "yesNo": {
20
+ "ntsRef": "I1.1.1",
21
+ "type": "string"
22
+ }
23
+ },
24
+ "oneOf": [
25
+ {
26
+ "properties": {
27
+ "yesNo": {
28
+ "enum": [
29
+ "No"
30
+ ]
31
+ }
32
+ }
33
+ },
34
+ {
35
+ "properties": {
36
+ "yesNo": {
37
+ "enum": [
38
+ "Yes"
39
+ ]
40
+ }
41
+ }
42
+ }
43
+ ],
44
+ "type": "object"
45
+ }
46
+ },
47
+ "required": [
48
+ "insuranceClaims"
49
+ ]
50
+ }
51
+ ]
52
+ }
53
+ }
54
+ }
55
+ },
56
+ "$schema": "http://json-schema.org/draft-07/schema#",
57
+ "$id": "https://trust.propdata.org.uk/schemas/v3/overlays/extensions/ic.json",
58
+ "$comment": "Insurance claims upfront for SEF25"
59
+ }
@@ -33,6 +33,9 @@
33
33
  "required": [
34
34
  "managementPlanInPlace"
35
35
  ],
36
+ "discriminator": {
37
+ "propertyName": "managementPlanInPlace"
38
+ },
36
39
  "properties": {
37
40
  "managementPlanInPlace": {
38
41
  "ntsRef": "A5.3.2",
@@ -47,14 +50,29 @@
47
50
  "enum": [
48
51
  "Yes"
49
52
  ]
53
+ }
54
+ },
55
+ "oneOf": [
56
+ {
57
+ "properties": {
58
+ "managementPlanInPlace": {
59
+ "enum": [
60
+ "No",
61
+ "Not known"
62
+ ]
63
+ }
64
+ }
50
65
  },
51
- "attachments": {
52
- "enum": [
53
- "Attached",
54
- "To follow"
55
- ]
66
+ {
67
+ "properties": {
68
+ "managementPlanInPlace": {
69
+ "enum": [
70
+ "Yes"
71
+ ]
72
+ }
73
+ }
56
74
  }
57
- }
75
+ ]
58
76
  }
59
77
  ],
60
78
  "type": "object"
@@ -62,12 +80,14 @@
62
80
  },
63
81
  "required": [
64
82
  "japaneseKnotweed"
65
- ]
83
+ ],
84
+ "ntsRef": "A5"
66
85
  }
67
86
  },
68
87
  "required": [
69
88
  "specialistIssues"
70
- ]
89
+ ],
90
+ "ntsRef": "0"
71
91
  }
72
92
  },
73
93
  "$schema": "http://json-schema.org/draft-07/schema#",
@@ -69,12 +69,14 @@
69
69
  },
70
70
  "required": [
71
71
  "loft"
72
- ]
72
+ ],
73
+ "ntsRef": "A1.2"
73
74
  }
74
75
  },
75
76
  "required": [
76
77
  "typeOfConstruction"
77
- ]
78
+ ],
79
+ "ntsRef": "0"
78
80
  }
79
81
  },
80
82
  "$schema": "http://json-schema.org/draft-07/schema#",