@pdtf/schemas 2.0.0-9 → 2.0.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.
- package/index.js +47 -30
- package/package.json +1 -1
- package/src/examples/v2/exampleTransaction.json +152 -109
- package/src/schemas/v2/combined.json +9070 -1384
- package/src/schemas/v2/overlays/baspi.json +1864 -947
- package/src/schemas/v2/overlays/con29DW.json +256 -127
- package/src/schemas/v2/overlays/fme1.json +46 -212
- package/src/schemas/v2/overlays/lpe1.json +77 -48
- package/src/schemas/v2/overlays/nts.json +1 -1
- package/src/schemas/v2/overlays/piq.json +3103 -0
- package/src/schemas/v2/overlays/rds.json +680 -448
- package/src/schemas/v2/overlays/ta10.json +847 -1
- package/src/schemas/v2/overlays/ta6.json +3719 -560
- package/src/schemas/v2/overlays/ta7.json +77 -12
- package/src/schemas/v2/pdtf-transaction.json +7752 -1121
- package/src/schemas/v2/skeleton.json +3647 -0
- package/src/tests/v2/transactionSchema.test.js +80 -3
- package/src/utils/extractOverlay.js +50 -1
- package/src/utils/hmlrLLC1.json +275 -0
package/index.js
CHANGED
|
@@ -48,17 +48,19 @@ const combinedSchema = require("./src/schemas/v2/combined.json");
|
|
|
48
48
|
const v2CoreSchema = require("./src/schemas/v2/pdtf-transaction.json");
|
|
49
49
|
|
|
50
50
|
const baspiOverlay = require("./src/schemas/v2/overlays/baspi.json");
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const
|
|
51
|
+
const ta6Overlay = require("./src/schemas/v2/overlays/ta6.json");
|
|
52
|
+
const ta7Overlay = require("./src/schemas/v2/overlays/ta7.json");
|
|
53
|
+
const ta10Overlay = require("./src/schemas/v2/overlays/ta10.json");
|
|
54
|
+
const lpe1Overlay = require("./src/schemas/v2/overlays/lpe1.json");
|
|
55
|
+
const fme1Overlay = require("./src/schemas/v2/overlays/fme1.json");
|
|
56
|
+
const llc1Overlay = require("./src/schemas/v2/overlays/llc1.json");
|
|
57
|
+
const ntsOverlay = require("./src/schemas/v2/overlays/nts.json");
|
|
58
|
+
const con29ROverlay = require("./src/schemas/v2/overlays/con29R.json");
|
|
59
|
+
const con29DWOverlay = require("./src/schemas/v2/overlays/con29DW.json");
|
|
60
|
+
const rdsOverlay = require("./src/schemas/v2/overlays/rds.json");
|
|
61
|
+
const oc1Overlay = require("./src/schemas/v2/overlays/oc1.json");
|
|
62
|
+
|
|
63
|
+
const overlaysMap = { baspiV4: baspiOverlay, ta6ed4: ta6Overlay, null: {} };
|
|
62
64
|
|
|
63
65
|
const transactionSchemas = {
|
|
64
66
|
"https://trust.propdata.org.uk/schemas/v1/pdtf-transaction.json":
|
|
@@ -83,22 +85,25 @@ const combineMerge = (target, source, options) => {
|
|
|
83
85
|
|
|
84
86
|
const getTransactionSchema = (
|
|
85
87
|
schemaId = "https://trust.propdata.org.uk/schemas/v2/pdtf-transaction.json",
|
|
86
|
-
|
|
88
|
+
overlays = ["baspiV4"]
|
|
87
89
|
) => {
|
|
88
90
|
const sourceSchema = transactionSchemas[schemaId];
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
91
|
+
if (!overlays || overlays.length < 1) return sourceSchema;
|
|
92
|
+
let mergedSchema = sourceSchema;
|
|
93
|
+
overlays.forEach((overlay) => {
|
|
94
|
+
const overlaySchema = overlaysMap[overlay] || {};
|
|
95
|
+
mergedSchema = merge(overlaySchema, mergedSchema, {
|
|
96
|
+
arrayMerge: combineMerge,
|
|
97
|
+
});
|
|
93
98
|
});
|
|
94
99
|
// console.log("mergedSchema", mergedSchema);
|
|
95
100
|
return mergedSchema;
|
|
96
101
|
};
|
|
97
102
|
|
|
98
|
-
const getValidator = (schemaId,
|
|
103
|
+
const getValidator = (schemaId, overlays) => {
|
|
99
104
|
let validator = ajv.getSchema(schemaId);
|
|
100
105
|
if (!validator) {
|
|
101
|
-
const schema = getTransactionSchema(schemaId,
|
|
106
|
+
const schema = getTransactionSchema(schemaId, overlays);
|
|
102
107
|
ajv.addSchema(schema, schemaId);
|
|
103
108
|
validator = ajv.getSchema(schemaId);
|
|
104
109
|
}
|
|
@@ -106,8 +111,8 @@ const getValidator = (schemaId, overlay = "baspiV4") => {
|
|
|
106
111
|
};
|
|
107
112
|
|
|
108
113
|
// common functions for v1 and v2
|
|
109
|
-
const getSubschema = (path, schemaId,
|
|
110
|
-
const sourceSchema = getTransactionSchema(schemaId,
|
|
114
|
+
const getSubschema = (path, schemaId, overlays) => {
|
|
115
|
+
const sourceSchema = getTransactionSchema(schemaId, overlays);
|
|
111
116
|
const pathArray = path.split("/").slice(1);
|
|
112
117
|
if (pathArray.length < 1) return sourceSchema;
|
|
113
118
|
return pathArray.reduce((schema, pathElement) => {
|
|
@@ -129,19 +134,19 @@ const getSubschema = (path, schemaId, overlay) => {
|
|
|
129
134
|
}, sourceSchema);
|
|
130
135
|
};
|
|
131
136
|
|
|
132
|
-
const isPathValid = (path, schemaId,
|
|
133
|
-
const schema = getTransactionSchema(schemaId, overlay);
|
|
137
|
+
const isPathValid = (path, schemaId, overlays) => {
|
|
134
138
|
try {
|
|
135
|
-
return getSubschema(path, schemaId,
|
|
139
|
+
return getSubschema(path, schemaId, overlays) !== undefined;
|
|
136
140
|
} catch (err) {
|
|
137
141
|
return false;
|
|
138
142
|
}
|
|
139
143
|
};
|
|
140
144
|
|
|
141
|
-
const getSubschemaValidator = (path, schemaId,
|
|
142
|
-
const subSchema = getSubschema(path, schemaId,
|
|
143
|
-
|
|
144
|
-
|
|
145
|
+
const getSubschemaValidator = (path, schemaId, overlays = ["baspiV4"]) => {
|
|
146
|
+
const subSchema = getSubschema(path, schemaId, overlays);
|
|
147
|
+
const overlayKey = (overlays || []).join(".");
|
|
148
|
+
// see if we can retrieve the schema by path, schemaId and overlays
|
|
149
|
+
const cacheKey = `${path}-${schemaId}-${overlayKey}`;
|
|
145
150
|
let validator = ajv.getSchema(cacheKey);
|
|
146
151
|
// retrieve whole schema by $id if available
|
|
147
152
|
if (!validator && subSchema.$id) validator = ajv.getSchema(cacheKey);
|
|
@@ -196,7 +201,7 @@ const getTitleAtPath = (schema, path, rootPath = path) => {
|
|
|
196
201
|
}
|
|
197
202
|
};
|
|
198
203
|
|
|
199
|
-
const validateVerifiedClaims = (verifiedClaims, schemaId,
|
|
204
|
+
const validateVerifiedClaims = (verifiedClaims, schemaId, overlays) => {
|
|
200
205
|
const validatorVClaims = ajv.compile(verifiedClaimsSchema);
|
|
201
206
|
|
|
202
207
|
const validationErrorsArr = [];
|
|
@@ -215,9 +220,9 @@ const validateVerifiedClaims = (verifiedClaims, schemaId, overlay) => {
|
|
|
215
220
|
verifiedClaimsArray.forEach((claim) => {
|
|
216
221
|
const paths = Object.keys(claim.claims);
|
|
217
222
|
for (const path of paths) {
|
|
218
|
-
const validPath = isPathValid(path, schemaId,
|
|
223
|
+
const validPath = isPathValid(path, schemaId, overlays);
|
|
219
224
|
if (validPath) {
|
|
220
|
-
const subValidator = getSubschemaValidator(path, schemaId,
|
|
225
|
+
const subValidator = getSubschemaValidator(path, schemaId, overlays);
|
|
221
226
|
const isValid = subValidator(claim.claims[path]);
|
|
222
227
|
if (!isValid) {
|
|
223
228
|
validationErrorsArr.push(...subValidator.errors);
|
|
@@ -245,4 +250,16 @@ module.exports = {
|
|
|
245
250
|
getTitleAtPath,
|
|
246
251
|
verifiedClaimsSchema,
|
|
247
252
|
validateVerifiedClaims,
|
|
253
|
+
baspiOverlay,
|
|
254
|
+
ta6Overlay,
|
|
255
|
+
ta7Overlay,
|
|
256
|
+
ta10Overlay,
|
|
257
|
+
lpe1Overlay,
|
|
258
|
+
fme1Overlay,
|
|
259
|
+
llc1Overlay,
|
|
260
|
+
ntsOverlay,
|
|
261
|
+
con29ROverlay,
|
|
262
|
+
con29DWOverlay,
|
|
263
|
+
rdsOverlay,
|
|
264
|
+
oc1Overlay,
|
|
248
265
|
};
|
package/package.json
CHANGED
|
@@ -12,7 +12,21 @@
|
|
|
12
12
|
"phone": "07777 222333",
|
|
13
13
|
"email": "peter@theseller.com",
|
|
14
14
|
"address": { "line1": "47 Park Road", "postcode": "AL3 5AF" },
|
|
15
|
-
"role": "Seller"
|
|
15
|
+
"role": "Seller",
|
|
16
|
+
"externalIds": { "MoveReady": "123434" }
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"role": "Seller's Conveyancer",
|
|
20
|
+
"name": { "firstName": "Johnny", "lastName": "Law" },
|
|
21
|
+
"address": {
|
|
22
|
+
"line1": "123 Sweet St",
|
|
23
|
+
"line2": "Test building",
|
|
24
|
+
"town": "London",
|
|
25
|
+
"postcode": "SW1A 1AA"
|
|
26
|
+
},
|
|
27
|
+
"email": "johnny@suemme.co.uk",
|
|
28
|
+
"organisation": "Suemme and Profitt",
|
|
29
|
+
"organisationReference": "123456"
|
|
16
30
|
}
|
|
17
31
|
],
|
|
18
32
|
"propertyPack": {
|
|
@@ -47,20 +61,24 @@
|
|
|
47
61
|
"contactDetails": {
|
|
48
62
|
"contacts": {
|
|
49
63
|
"landlord": {
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
"
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
64
|
+
"contact": {
|
|
65
|
+
"nameOrOrganisation": "Fleesum Properties",
|
|
66
|
+
"address": {
|
|
67
|
+
"line1": "47 Park Road",
|
|
68
|
+
"postcode": "AL3 5AF"
|
|
69
|
+
},
|
|
70
|
+
"emailAddress": "james@fleesum.com"
|
|
71
|
+
}
|
|
56
72
|
},
|
|
57
73
|
"managingAgent": {
|
|
58
|
-
"
|
|
59
|
-
|
|
60
|
-
"
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
74
|
+
"contact": {
|
|
75
|
+
"nameOrOrganisation": "Pricee Living",
|
|
76
|
+
"address": {
|
|
77
|
+
"line1": "Pricee House",
|
|
78
|
+
"postcode": "AL3 5KK"
|
|
79
|
+
},
|
|
80
|
+
"emailAddress": "marcel@pricee.co.uk"
|
|
81
|
+
}
|
|
64
82
|
}
|
|
65
83
|
}
|
|
66
84
|
},
|
|
@@ -102,13 +120,18 @@
|
|
|
102
120
|
},
|
|
103
121
|
"listingAndConservation": {
|
|
104
122
|
"isListed": {
|
|
105
|
-
"yesNo": "
|
|
123
|
+
"yesNo": "Yes",
|
|
124
|
+
"details": "Grade II listed",
|
|
125
|
+
"attachments": "To follow"
|
|
106
126
|
},
|
|
107
127
|
"isConservationArea": {
|
|
108
|
-
"yesNo": "
|
|
128
|
+
"yesNo": "Yes",
|
|
129
|
+
"details": "Harpenden Conservation Area",
|
|
130
|
+
"attachments": "To follow"
|
|
109
131
|
},
|
|
110
132
|
"hasTreePreservationOrder": {
|
|
111
|
-
"yesNo": "
|
|
133
|
+
"yesNo": "Yes",
|
|
134
|
+
"workCarriedOut": { "yesNo": "Yes", "consentsObtained": "Yes" }
|
|
112
135
|
}
|
|
113
136
|
},
|
|
114
137
|
"typeOfConstruction": {
|
|
@@ -121,9 +144,15 @@
|
|
|
121
144
|
}
|
|
122
145
|
},
|
|
123
146
|
"energyEfficiency": {
|
|
147
|
+
"certificateIsSupplied": "Attached",
|
|
124
148
|
"certificate": {
|
|
125
149
|
"certificateNumber": "12345",
|
|
126
150
|
"currentEnergyRating": "A"
|
|
151
|
+
},
|
|
152
|
+
"greenDealLoan": {
|
|
153
|
+
"hasGreenDealLoan": {
|
|
154
|
+
"yesNo": "No"
|
|
155
|
+
}
|
|
127
156
|
}
|
|
128
157
|
},
|
|
129
158
|
"councilTax": {
|
|
@@ -134,7 +163,12 @@
|
|
|
134
163
|
},
|
|
135
164
|
"disputesAndComplaints": {
|
|
136
165
|
"hasDisputesAndComplaints": {
|
|
137
|
-
"yesNo": "
|
|
166
|
+
"yesNo": "Yes",
|
|
167
|
+
"details": "Neighbour's very annoying"
|
|
168
|
+
},
|
|
169
|
+
"leadingToDisputesAndComplaints": {
|
|
170
|
+
"yesNo": "Yes",
|
|
171
|
+
"details": "Neighbour's dog barking"
|
|
138
172
|
}
|
|
139
173
|
},
|
|
140
174
|
"alterationsAndChanges": {
|
|
@@ -144,8 +178,8 @@
|
|
|
144
178
|
"attachments": "Attached"
|
|
145
179
|
},
|
|
146
180
|
"planningPermission": {
|
|
147
|
-
"yesNo": "
|
|
148
|
-
"
|
|
181
|
+
"yesNo": "Not required",
|
|
182
|
+
"details": "Permitted development rights applied"
|
|
149
183
|
},
|
|
150
184
|
"listedBuildingConsent": {
|
|
151
185
|
"yesNo": "Not required",
|
|
@@ -155,9 +189,6 @@
|
|
|
155
189
|
"yesNo": "Not required",
|
|
156
190
|
"details": "No restriction"
|
|
157
191
|
},
|
|
158
|
-
"unfinished": {
|
|
159
|
-
"yesNo": "No"
|
|
160
|
-
},
|
|
161
192
|
"yesNo": "Yes",
|
|
162
193
|
"details": "Bedroom and ensuite shower room extension 2005"
|
|
163
194
|
},
|
|
@@ -181,9 +212,6 @@
|
|
|
181
212
|
"yesNo": "Not required",
|
|
182
213
|
"details": "No restriction"
|
|
183
214
|
},
|
|
184
|
-
"unfinished": {
|
|
185
|
-
"yesNo": "No"
|
|
186
|
-
},
|
|
187
215
|
"yesNo": "Yes",
|
|
188
216
|
"details": "New front door added 2016",
|
|
189
217
|
"yearCompleted": 2016
|
|
@@ -205,13 +233,13 @@
|
|
|
205
233
|
"yesNo": "No",
|
|
206
234
|
"details": "Added as part of initial build and deeds"
|
|
207
235
|
},
|
|
208
|
-
"unfinished": {
|
|
209
|
-
"yesNo": "No"
|
|
210
|
-
},
|
|
211
236
|
"yesNo": "Yes",
|
|
212
237
|
"details": "Conservatory added during house build in 1990 and exterior quality door separates the conservatory from the kitchen/dining room",
|
|
213
238
|
"yearCompleted": 1990
|
|
214
239
|
},
|
|
240
|
+
"worksUnfinished": {
|
|
241
|
+
"yesNo": "No"
|
|
242
|
+
},
|
|
215
243
|
"planningPermissionBreaches": {
|
|
216
244
|
"yesNo": "No"
|
|
217
245
|
},
|
|
@@ -236,7 +264,9 @@
|
|
|
236
264
|
"yesNo": "No"
|
|
237
265
|
},
|
|
238
266
|
"partyWallAct": {
|
|
239
|
-
"yesNo": "
|
|
267
|
+
"yesNo": "Yes",
|
|
268
|
+
"details": "Party wall agreement in place",
|
|
269
|
+
"attachments": "Attached"
|
|
240
270
|
},
|
|
241
271
|
"otherNotices": {
|
|
242
272
|
"yesNo": "No"
|
|
@@ -268,53 +298,48 @@
|
|
|
268
298
|
}
|
|
269
299
|
},
|
|
270
300
|
"waterAndDrainage": {
|
|
271
|
-
"
|
|
272
|
-
"
|
|
273
|
-
"yesNo": "
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
"supplier": "Northumbria Water"
|
|
301
|
+
"water": {
|
|
302
|
+
"mainsWater": {
|
|
303
|
+
"yesNo": "To be connected",
|
|
304
|
+
"dateToBeConnected": "2022-12-15",
|
|
305
|
+
"supplier": "Northumbria Water"
|
|
306
|
+
}
|
|
278
307
|
},
|
|
279
|
-
"
|
|
280
|
-
"
|
|
281
|
-
"yesNo": "
|
|
308
|
+
"drainage": {
|
|
309
|
+
"mainsSurfaceWaterDrainage": {
|
|
310
|
+
"yesNo": "Yes"
|
|
282
311
|
},
|
|
283
|
-
"
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
"
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
"dischargeCompliesWithGBR": "Yes"
|
|
312
|
+
"mainsFoulDrainage": {
|
|
313
|
+
"yesNo": "No",
|
|
314
|
+
"sustainableDrainageSystem": { "yesNo": "No" },
|
|
315
|
+
"septicTank": {
|
|
316
|
+
"yesNo": "Yes",
|
|
317
|
+
"details": "Last emptied on 1 Jan 2022",
|
|
318
|
+
"dateReplaced": "2022-01-01",
|
|
319
|
+
"dateLastEmptied": "2022-01-01"
|
|
320
|
+
},
|
|
321
|
+
"cesspit": { "yesNo": "No" },
|
|
322
|
+
"sewerageTreatmentPlant": { "yesNo": "No" },
|
|
323
|
+
"otherConnectedProperties": { "yesNo": "No" },
|
|
324
|
+
"yearSystemInstalled": 1980,
|
|
325
|
+
"plantOnOtherLand": { "yesNo": "No" },
|
|
326
|
+
"plantRegistered": { "yesNo": "No" },
|
|
327
|
+
"plantDrainsIntoWaterway": {
|
|
328
|
+
"yesNo": "Yes",
|
|
329
|
+
"dischargeCompliesWithGBR": "Yes"
|
|
330
|
+
}
|
|
303
331
|
}
|
|
332
|
+
},
|
|
333
|
+
"maintenanceAgreements": {
|
|
334
|
+
"yesNo": "No"
|
|
304
335
|
}
|
|
305
336
|
},
|
|
306
337
|
"connectedUtilities": {
|
|
307
338
|
"mainsElectricity": {
|
|
308
|
-
"maintenanceAgreements": {
|
|
309
|
-
"yesNo": "No"
|
|
310
|
-
},
|
|
311
339
|
"yesNo": "Yes",
|
|
312
340
|
"supplier": "Octopus Energy"
|
|
313
341
|
},
|
|
314
342
|
"mainsGas": {
|
|
315
|
-
"maintenanceAgreements": {
|
|
316
|
-
"yesNo": "No"
|
|
317
|
-
},
|
|
318
343
|
"yesNo": "Yes",
|
|
319
344
|
"supplier": "Octopus Energy"
|
|
320
345
|
},
|
|
@@ -325,23 +350,14 @@
|
|
|
325
350
|
"yesNo": "No"
|
|
326
351
|
},
|
|
327
352
|
"telephone": {
|
|
328
|
-
"maintenanceAgreements": {
|
|
329
|
-
"yesNo": "No"
|
|
330
|
-
},
|
|
331
353
|
"yesNo": "Yes",
|
|
332
354
|
"supplier": "EE"
|
|
333
355
|
},
|
|
334
356
|
"cableSatelliteTV": {
|
|
335
|
-
"maintenanceAgreements": {
|
|
336
|
-
"yesNo": "No"
|
|
337
|
-
},
|
|
338
357
|
"yesNo": "Yes",
|
|
339
358
|
"supplier": "Sky"
|
|
340
359
|
},
|
|
341
360
|
"broadband": {
|
|
342
|
-
"maintenanceAgreements": {
|
|
343
|
-
"yesNo": "No"
|
|
344
|
-
},
|
|
345
361
|
"yesNo": "Yes",
|
|
346
362
|
"supplier": "EE"
|
|
347
363
|
},
|
|
@@ -350,10 +366,8 @@
|
|
|
350
366
|
},
|
|
351
367
|
"otherServices": {
|
|
352
368
|
"yesNo": "No"
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
"greenDealLoan": {
|
|
356
|
-
"hasGreenDealLoan": {
|
|
369
|
+
},
|
|
370
|
+
"maintenanceAgreements": {
|
|
357
371
|
"yesNo": "No"
|
|
358
372
|
}
|
|
359
373
|
},
|
|
@@ -368,15 +382,25 @@
|
|
|
368
382
|
"heatingInGoodWorkingOrder": {
|
|
369
383
|
"yesNo": "Yes"
|
|
370
384
|
},
|
|
371
|
-
"centralHeatingFuel": {
|
|
385
|
+
"centralHeatingFuel": {
|
|
386
|
+
"centralHeatingFuelType": "Other",
|
|
387
|
+
"otherCentralHeatingFuelType": "Ground-source Heat Pump"
|
|
388
|
+
},
|
|
372
389
|
"centralHeatingInstalled": "2016-04-20",
|
|
373
|
-
"
|
|
390
|
+
"heatingLastServicedDate": "2021-03-26",
|
|
391
|
+
"heatingLastServicedReport": "To follow"
|
|
374
392
|
}
|
|
375
393
|
},
|
|
376
394
|
"insurance": {
|
|
377
395
|
"isInsured": "Yes",
|
|
378
396
|
"difficultiesObtainingInsurance": {
|
|
379
|
-
"
|
|
397
|
+
"abnormalRiseInPremiums": {
|
|
398
|
+
"yesNo": "Yes",
|
|
399
|
+
"details": "Very history"
|
|
400
|
+
},
|
|
401
|
+
"subjectToHighExcesses": { "yesNo": "No" },
|
|
402
|
+
"subjectToUnusualConditions": { "yesNo": "No" },
|
|
403
|
+
"refused": { "yesNo": "Yes", "details": "Much refuse" }
|
|
380
404
|
},
|
|
381
405
|
"insuranceClaims": {
|
|
382
406
|
"yesNo": "No"
|
|
@@ -410,7 +434,10 @@
|
|
|
410
434
|
"publicRightOfWay": {
|
|
411
435
|
"yesNo": "No"
|
|
412
436
|
},
|
|
413
|
-
"
|
|
437
|
+
"rightsOfLight": {
|
|
438
|
+
"yesNo": "No"
|
|
439
|
+
},
|
|
440
|
+
"rightsOfSupport": {
|
|
414
441
|
"yesNo": "No"
|
|
415
442
|
},
|
|
416
443
|
"rightsCreatedThroughCustom": {
|
|
@@ -422,6 +449,10 @@
|
|
|
422
449
|
"churchChancel": {
|
|
423
450
|
"yesNo": "No"
|
|
424
451
|
},
|
|
452
|
+
"rightsToTakeFromLand": {
|
|
453
|
+
"yesNo": "Yes",
|
|
454
|
+
"details": "Annual gold mining festival"
|
|
455
|
+
},
|
|
425
456
|
"otherRights": {
|
|
426
457
|
"yesNo": "No"
|
|
427
458
|
}
|
|
@@ -433,21 +464,11 @@
|
|
|
433
464
|
"hasBeenFlooded": "Yes",
|
|
434
465
|
"details": "Minor basement flood",
|
|
435
466
|
"typeOfFlooding": {
|
|
436
|
-
"groundWater":
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
"
|
|
440
|
-
|
|
441
|
-
},
|
|
442
|
-
"surfaceWater": {
|
|
443
|
-
"yesNo": "No"
|
|
444
|
-
},
|
|
445
|
-
"coastal": {
|
|
446
|
-
"yesNo": "No"
|
|
447
|
-
},
|
|
448
|
-
"river": {
|
|
449
|
-
"yesNo": "No"
|
|
450
|
-
},
|
|
467
|
+
"groundWater": "No",
|
|
468
|
+
"sewer": "Yes",
|
|
469
|
+
"surfaceWater": "No",
|
|
470
|
+
"coastal": "No",
|
|
471
|
+
"river": "No",
|
|
451
472
|
"other": {
|
|
452
473
|
"yesNo": "No"
|
|
453
474
|
}
|
|
@@ -481,6 +502,9 @@
|
|
|
481
502
|
},
|
|
482
503
|
"otherMaterialIssue": {
|
|
483
504
|
"yesNo": "No"
|
|
505
|
+
},
|
|
506
|
+
"otherCharges": {
|
|
507
|
+
"yesNo": "No"
|
|
484
508
|
}
|
|
485
509
|
},
|
|
486
510
|
"consumerProtectionRegulationsDeclaration": {
|
|
@@ -507,14 +531,19 @@
|
|
|
507
531
|
"legalBoundaries": {
|
|
508
532
|
"ownership": {
|
|
509
533
|
"areBoundariesUniform": "Yes",
|
|
510
|
-
"
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
534
|
+
"uniformBoundaries": {
|
|
535
|
+
"left": "Neighbour",
|
|
536
|
+
"right": "Seller",
|
|
537
|
+
"rear": "Neighbour",
|
|
538
|
+
"front": "Not known"
|
|
539
|
+
}
|
|
514
540
|
},
|
|
515
|
-
"haveBoundaryFeaturesMoved": {
|
|
516
|
-
|
|
517
|
-
|
|
541
|
+
"haveBoundaryFeaturesMoved": {
|
|
542
|
+
"yesNo": "Yes",
|
|
543
|
+
"details": "Moved a bit to the lefts"
|
|
544
|
+
},
|
|
545
|
+
"adjacentLandIncluded": { "yesNo": "Yes", "details": "Some movements" },
|
|
546
|
+
"flyingFreehold": { "yesNo": "Yes", "details": "Some flying stuff" }
|
|
518
547
|
},
|
|
519
548
|
"servicesCrossing": {
|
|
520
549
|
"pipesWiresCablesDrainsToProperty": { "yesNo": "No" },
|
|
@@ -524,10 +553,15 @@
|
|
|
524
553
|
"energyAndMeters": {
|
|
525
554
|
"testedByQualifiedElectrician": {
|
|
526
555
|
"yesNo": "Yes",
|
|
527
|
-
"
|
|
556
|
+
"yearTested": 2015,
|
|
557
|
+
"attachments": "To follow"
|
|
558
|
+
},
|
|
559
|
+
"electricalWorkSince2005": {
|
|
560
|
+
"yesNo": "Yes",
|
|
561
|
+
"yearWorkCarriedOut": 2016,
|
|
562
|
+
"details": "New fuse box",
|
|
528
563
|
"attachments": "To follow"
|
|
529
564
|
},
|
|
530
|
-
"electricalWorkSince2005": { "yesNo": "No" },
|
|
531
565
|
"solarPanels": { "hasSolarPanels": "No" }
|
|
532
566
|
},
|
|
533
567
|
"smartHomeSystems": { "hasSmartHomeSystems": "No" },
|
|
@@ -548,10 +582,19 @@
|
|
|
548
582
|
}
|
|
549
583
|
},
|
|
550
584
|
"completionAndMoving": {
|
|
551
|
-
"
|
|
585
|
+
"sellerWillEnsure": {
|
|
586
|
+
"removeRubbish": true,
|
|
587
|
+
"replaceLightFittings": true,
|
|
588
|
+
"takeReasonableCare": true,
|
|
589
|
+
"leaveKeys": true
|
|
590
|
+
},
|
|
552
591
|
"otherPropertyInChain": { "yesNo": "No" },
|
|
553
|
-
"moveRestrictionDates": {
|
|
554
|
-
|
|
592
|
+
"moveRestrictionDates": {
|
|
593
|
+
"yesNo": "Yes",
|
|
594
|
+
"details": "On holiday 1-15 Aug 23"
|
|
595
|
+
},
|
|
596
|
+
"digitalPropertyLogbook": { "yesNo": "No" },
|
|
597
|
+
"sufficientToRepayAllMortgages": { "yesNo": "Yes" }
|
|
555
598
|
},
|
|
556
599
|
"confirmationOfAccuracyByOwners": {
|
|
557
600
|
"confirmWillProvideAdditionalDocumentation": true,
|