@pdtf/schemas 2.3.0 → 3.0.0-10
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 +52 -94
- package/package.json +1 -1
- package/src/examples/v2/exampleTransaction.json +6 -20
- package/src/examples/v3/exampleTransaction.json +904 -0
- package/src/mappings/SendPropertyDetailsRequestSchema.json +1588 -0
- package/src/mappings/adf.js +1 -1
- package/src/schemas/v2/combined.json +13206 -12615
- package/src/schemas/v2/overlays/baspi.json +510 -2331
- package/src/schemas/v2/overlays/con29DW.json +682 -762
- package/src/schemas/v2/overlays/con29R.json +2914 -3073
- package/src/schemas/v2/overlays/fme1.json +48 -233
- package/src/schemas/v2/overlays/llc1.json +12 -33
- package/src/schemas/v2/overlays/lpe1.json +75 -367
- package/src/schemas/v2/overlays/nts.json +17 -103
- package/src/schemas/v2/overlays/piq.json +146 -693
- package/src/schemas/v2/overlays/rds.json +66 -300
- package/src/schemas/v2/overlays/ta10.json +540 -1755
- package/src/schemas/v2/overlays/ta6.json +241 -1193
- package/src/schemas/v2/overlays/ta7.json +106 -440
- package/src/schemas/v2/pdtf-transaction.json +13656 -12911
- package/src/schemas/v2/skeleton.json +1342 -1155
- package/src/schemas/v3/combined.json +38477 -0
- package/src/schemas/v3/overlays/baspi.json +8022 -0
- package/src/schemas/v3/overlays/con29DW.json +705 -0
- package/src/schemas/v3/overlays/con29R.json +2956 -0
- package/src/schemas/v3/overlays/fme1.json +1264 -0
- package/src/schemas/v3/overlays/llc1.json +25 -0
- package/src/schemas/v3/overlays/lpe1.json +2181 -0
- package/src/schemas/v3/overlays/nts.json +1937 -0
- package/src/schemas/v3/overlays/oc1.json +2799 -0
- package/src/schemas/v3/overlays/piq.json +3391 -0
- package/src/schemas/v3/overlays/rds.json +3818 -0
- package/src/schemas/v3/overlays/ta10.json +5306 -0
- package/src/schemas/v3/overlays/ta6.json +4410 -0
- package/src/schemas/v3/overlays/ta7.json +1157 -0
- package/src/schemas/v3/pdtf-transaction.json +34858 -0
- package/src/schemas/v3/skeleton.json +4018 -0
- package/src/tests/{v2 → v3}/transactionSchema.test.js +46 -36
- package/src/tests/{v2 → v3}/verifiedClaimsValidator.test.js +11 -11
- package/src/utils/extractOverlay.js +12 -34
- package/src/utils/hmlrLLC1.json +0 -275
|
@@ -10,24 +10,25 @@ const {
|
|
|
10
10
|
getTitleAtPath,
|
|
11
11
|
} = require("../../../index.js");
|
|
12
12
|
|
|
13
|
-
const exampleTransaction = require("../../examples/
|
|
13
|
+
const exampleTransaction = require("../../examples/v3/exampleTransaction.json");
|
|
14
|
+
|
|
14
15
|
const schemaId =
|
|
15
|
-
"https://trust.propdata.org.uk/schemas/
|
|
16
|
+
"https://trust.propdata.org.uk/schemas/v3/pdtf-transaction.json";
|
|
16
17
|
// const validator = getValidator(schemaId);
|
|
17
|
-
const
|
|
18
|
+
const v3TransactionSchema = getTransactionSchema(schemaId);
|
|
18
19
|
|
|
19
|
-
test("exports a property pack schema,
|
|
20
|
-
const testSchema = getTransactionSchema();
|
|
21
|
-
expect(testSchema.$id).toEqual(
|
|
22
|
-
|
|
23
|
-
);
|
|
20
|
+
test("exports a property pack schema, v3 with no overlay by default", () => {
|
|
21
|
+
const testSchema = getTransactionSchema(schemaId);
|
|
22
|
+
// expect(testSchema.$id).toEqual(
|
|
23
|
+
// "https://trust.propdata.org.uk/schemas/v3/pdtf-transaction.json"
|
|
24
|
+
// );
|
|
24
25
|
expect(
|
|
25
26
|
testSchema.properties.propertyPack.properties.materialFacts.baspiRef
|
|
26
|
-
).toEqual(
|
|
27
|
+
).toEqual(undefined);
|
|
27
28
|
});
|
|
28
29
|
|
|
29
30
|
test("sample is valid BASPI", () => {
|
|
30
|
-
const testSchema = getTransactionSchema();
|
|
31
|
+
const testSchema = getTransactionSchema(schemaId, ["baspiV4"]);
|
|
31
32
|
expect(
|
|
32
33
|
testSchema.properties.propertyPack.properties.materialFacts.baspiRef
|
|
33
34
|
).toEqual("A");
|
|
@@ -37,12 +38,19 @@ test("sample is valid BASPI", () => {
|
|
|
37
38
|
expect(isValid).toBe(true);
|
|
38
39
|
});
|
|
39
40
|
|
|
41
|
+
test("sample is valid NTS", () => {
|
|
42
|
+
const validator = getValidator(schemaId, ["nts2023"]);
|
|
43
|
+
const isValid = validator(exampleTransaction);
|
|
44
|
+
if (!isValid) console.log(validator.errors);
|
|
45
|
+
expect(isValid).toBe(true);
|
|
46
|
+
});
|
|
47
|
+
|
|
40
48
|
test("invalid sample is invalid", () => {
|
|
41
49
|
const clonedExampleTransaction = JSON.parse(
|
|
42
50
|
JSON.stringify(exampleTransaction)
|
|
43
51
|
);
|
|
44
52
|
delete clonedExampleTransaction.propertyPack.materialFacts.notices;
|
|
45
|
-
const validator = getValidator(schemaId);
|
|
53
|
+
const validator = getValidator(schemaId, ["baspiV4"]);
|
|
46
54
|
const isValid = validator(clonedExampleTransaction);
|
|
47
55
|
expect(isValid).toBe(false);
|
|
48
56
|
});
|
|
@@ -138,19 +146,11 @@ test("correctly gets yet, yet another subschema through a dependency", () => {
|
|
|
138
146
|
expect(subschema.enum).toStrictEqual(["Yes", "No", "Not known"]);
|
|
139
147
|
});
|
|
140
148
|
|
|
141
|
-
test("correctly gets yet, yet, yet another subschema through a dependency", () => {
|
|
142
|
-
const subschema = getSubschema(
|
|
143
|
-
"/propertyPack/materialFacts/environmentalIssues/flooding/typeOfFlooding/other/yesNo"
|
|
144
|
-
);
|
|
145
|
-
expect(subschema.type).toBe("string");
|
|
146
|
-
expect(subschema.enum).toStrictEqual(["Yes", "No"]);
|
|
147
|
-
});
|
|
148
|
-
|
|
149
149
|
test("correctly gets yet, yet, yet another subschema through a second item dependency", () => {
|
|
150
150
|
const subschema = getSubschema(
|
|
151
151
|
"/propertyPack/materialFacts/environmentalIssues/flooding/typeOfFlooding"
|
|
152
152
|
);
|
|
153
|
-
expect(subschema.type).toBe("
|
|
153
|
+
expect(subschema.type).toBe("array");
|
|
154
154
|
});
|
|
155
155
|
|
|
156
156
|
test("correctly gets yes another subschema but through a non-baspi oneOf structure", () => {
|
|
@@ -167,6 +167,15 @@ test("correctly gets yes another subschema but through a non-baspi oneOf structu
|
|
|
167
167
|
expect(subschema).toEqual({ type: "string" });
|
|
168
168
|
});
|
|
169
169
|
|
|
170
|
+
test("correctly gets an overlaid enum in a subschema", () => {
|
|
171
|
+
const subschema = getSubschema(
|
|
172
|
+
"/propertyPack/materialFacts/connectedUtilities/mainsElectricity/yesNo",
|
|
173
|
+
schemaId,
|
|
174
|
+
["nts2023"]
|
|
175
|
+
);
|
|
176
|
+
expect(subschema.enum).toEqual(["Yes", "No"]);
|
|
177
|
+
});
|
|
178
|
+
|
|
170
179
|
test("correctly gets a subschema with multiple overlays", () => {
|
|
171
180
|
const subschema = getSubschema(
|
|
172
181
|
"/propertyPack/materialFacts/parking/parkingArrangements",
|
|
@@ -268,14 +277,14 @@ test("correctly gets a subschema validator for an NTS overlay", () => {
|
|
|
268
277
|
expect(isValid).toBe(true);
|
|
269
278
|
});
|
|
270
279
|
|
|
271
|
-
test("correctly gets a subschema validator for an
|
|
280
|
+
test("correctly gets a subschema validator for an TA7 overlay", () => {
|
|
272
281
|
const path = "/propertyPack";
|
|
273
282
|
const clonedExampleTransaction = JSON.parse(
|
|
274
283
|
JSON.stringify(exampleTransaction)
|
|
275
284
|
);
|
|
276
285
|
const data = jp.get(clonedExampleTransaction, path);
|
|
277
286
|
const validator = getSubschemaValidator(path, exampleTransaction.$schema, [
|
|
278
|
-
"
|
|
287
|
+
"ta7ed3",
|
|
279
288
|
]);
|
|
280
289
|
let isValid = validator(data);
|
|
281
290
|
expect(isValid).toBe(false);
|
|
@@ -296,55 +305,56 @@ test("correctly gets a subschema validator which validates", () => {
|
|
|
296
305
|
test("correctly gets titles across schemas, arrays and non-existient title properties", () => {
|
|
297
306
|
expect(
|
|
298
307
|
getTitleAtPath(
|
|
299
|
-
|
|
308
|
+
v3TransactionSchema,
|
|
300
309
|
"/propertyPack/materialFacts/ownership/ownershipsToBeTransferred/0/ownershipType"
|
|
301
310
|
)
|
|
302
311
|
).toBe("What type of ownership is the property?");
|
|
312
|
+
|
|
303
313
|
expect(
|
|
304
314
|
getTitleAtPath(
|
|
305
|
-
|
|
315
|
+
v3TransactionSchema,
|
|
306
316
|
"/propertyPack/materialFacts/ownership/ownershipsToBeTransferred/0/leaseholdInformation/leaseTerm/lengthOfLeaseInYears"
|
|
307
317
|
)
|
|
308
318
|
).toBe("Length of lease (years)");
|
|
319
|
+
|
|
309
320
|
expect(
|
|
310
321
|
getTitleAtPath(
|
|
311
|
-
|
|
312
|
-
"/propertyPack/materialFacts/ownership/ownershipsToBeTransferred/0/leaseholdInformation/serviceCharge/annualServiceCharge"
|
|
313
|
-
)
|
|
314
|
-
).toBe("Amount of current annual service charge (£)");
|
|
315
|
-
expect(
|
|
316
|
-
getTitleAtPath(
|
|
317
|
-
v2TransactionSchema,
|
|
322
|
+
v3TransactionSchema,
|
|
318
323
|
"/propertyPack/materialFacts/invalidPath"
|
|
319
324
|
)
|
|
320
325
|
).toBe(undefined);
|
|
326
|
+
|
|
321
327
|
expect(
|
|
322
328
|
getTitleAtPath(
|
|
323
|
-
|
|
329
|
+
v3TransactionSchema,
|
|
324
330
|
"/propertyPack/titlesToBeSold/0/registerExtract"
|
|
325
331
|
)
|
|
326
332
|
).toBe("HMLR Official Copy Register Extract");
|
|
333
|
+
|
|
327
334
|
expect(
|
|
328
335
|
getTitleAtPath(
|
|
329
|
-
|
|
336
|
+
v3TransactionSchema,
|
|
330
337
|
"/propertyPack/titlesToBeSold/0/registerExtract/OCSummaryData/PropertyAddress"
|
|
331
338
|
)
|
|
332
339
|
).toBe("Property address");
|
|
340
|
+
|
|
333
341
|
expect(
|
|
334
342
|
getTitleAtPath(
|
|
335
|
-
|
|
343
|
+
v3TransactionSchema,
|
|
336
344
|
"/propertyPack/titlesToBeSold/0/registerExtract/OCSummaryData/InvalidProp"
|
|
337
345
|
)
|
|
338
346
|
).toBe(undefined);
|
|
347
|
+
|
|
339
348
|
expect(
|
|
340
349
|
getTitleAtPath(
|
|
341
|
-
|
|
350
|
+
v3TransactionSchema,
|
|
342
351
|
"/propertyPack/materialFacts/energyEfficiency/certificate/currentEnergyRating"
|
|
343
352
|
)
|
|
344
353
|
).toBe("Current energy efficiency rating");
|
|
354
|
+
|
|
345
355
|
expect(
|
|
346
356
|
getTitleAtPath(
|
|
347
|
-
|
|
357
|
+
v3TransactionSchema,
|
|
348
358
|
"/propertyPack/additionalLegalInfo/occupiers/othersAged17OrOver/aged17OrOverNames"
|
|
349
359
|
)
|
|
350
360
|
).toBe("Please provide their full names and ages.");
|
|
@@ -2,8 +2,8 @@ const { validateVerifiedClaims } = require("../../../index.js");
|
|
|
2
2
|
|
|
3
3
|
const exampleVouch = require("../../examples/v1/exampleVouch.json");
|
|
4
4
|
const exampleDocumentedVouch = require("../../examples/v1/exampleDocumentedVouch.json");
|
|
5
|
-
const
|
|
6
|
-
"https://trust.propdata.org.uk/schemas/
|
|
5
|
+
const v3SchemaId =
|
|
6
|
+
"https://trust.propdata.org.uk/schemas/v3/pdtf-transaction.json";
|
|
7
7
|
|
|
8
8
|
test("returns an empty array for a valid claim", () => {
|
|
9
9
|
expect(validateVerifiedClaims([exampleVouch])).toEqual([]);
|
|
@@ -21,20 +21,20 @@ test("returns an array with an error stating if path is incorrect", () => {
|
|
|
21
21
|
clonedVouch.claims = {
|
|
22
22
|
"/propertyPack/INVALID/materialFacts/councilTax": data,
|
|
23
23
|
};
|
|
24
|
-
//
|
|
25
|
-
expect(validateVerifiedClaims([clonedVouch],
|
|
24
|
+
// v3 schema, no overlay
|
|
25
|
+
expect(validateVerifiedClaims([clonedVouch], v3SchemaId, null)).toEqual([
|
|
26
26
|
"Path /propertyPack/INVALID/materialFacts/councilTax is not a valid PDTF schema path",
|
|
27
27
|
]);
|
|
28
28
|
});
|
|
29
29
|
|
|
30
|
-
test("returns errors if BASPI requirements are not met and BASPI overlay is specified
|
|
30
|
+
test("returns errors if BASPI requirements are not met and BASPI overlay is specified", () => {
|
|
31
31
|
const clonedVouch = JSON.parse(JSON.stringify(exampleVouch));
|
|
32
32
|
clonedVouch.claims = {
|
|
33
33
|
"/propertyPack/materialFacts/delayFactors": {
|
|
34
34
|
hasDelayFactors: { yesNo: "Yes" },
|
|
35
35
|
},
|
|
36
36
|
};
|
|
37
|
-
const errors = validateVerifiedClaims([clonedVouch],
|
|
37
|
+
const errors = validateVerifiedClaims([clonedVouch], v3SchemaId, ["baspiV4"]);
|
|
38
38
|
expect(errors).toEqual([
|
|
39
39
|
{
|
|
40
40
|
instancePath: "/hasDelayFactors",
|
|
@@ -60,7 +60,7 @@ test("returns no errors if BASPI requirements are not met and null overlay is sp
|
|
|
60
60
|
hasDelayFactors: { yesNo: "Yes" },
|
|
61
61
|
},
|
|
62
62
|
};
|
|
63
|
-
const errors = validateVerifiedClaims([clonedVouch],
|
|
63
|
+
const errors = validateVerifiedClaims([clonedVouch], v3SchemaId, null);
|
|
64
64
|
expect(errors).toEqual([]);
|
|
65
65
|
});
|
|
66
66
|
|
|
@@ -71,7 +71,7 @@ test("returns errors for invalid fields even if null overlay is specified", () =
|
|
|
71
71
|
hasDelayFactors: { yesNo: "Maybe" },
|
|
72
72
|
},
|
|
73
73
|
};
|
|
74
|
-
const errors = validateVerifiedClaims([clonedVouch],
|
|
74
|
+
const errors = validateVerifiedClaims([clonedVouch], v3SchemaId, null);
|
|
75
75
|
expect(errors).toHaveLength(4);
|
|
76
76
|
});
|
|
77
77
|
|
|
@@ -95,7 +95,7 @@ test("returns an array of errors for verified claim with multiple paths", () =>
|
|
|
95
95
|
},
|
|
96
96
|
},
|
|
97
97
|
};
|
|
98
|
-
expect(validateVerifiedClaims([clonedVouch],
|
|
98
|
+
expect(validateVerifiedClaims([clonedVouch], v3SchemaId, null)).toEqual([
|
|
99
99
|
"Path /propertyPack/materialFacts/cousncilTaxBad is not a valid PDTF schema path",
|
|
100
100
|
"Path /propertyPack/materialFacts/councilTaxBadTwo is not a valid PDTF schema path",
|
|
101
101
|
]);
|
|
@@ -104,7 +104,7 @@ test("returns an array of errors for verified claim with multiple paths", () =>
|
|
|
104
104
|
test("returns an empty array of errors for verified claim with multiple valid paths", () => {
|
|
105
105
|
const clonedVouch = JSON.parse(
|
|
106
106
|
JSON.stringify(exampleVouch),
|
|
107
|
-
|
|
107
|
+
v3SchemaId,
|
|
108
108
|
null
|
|
109
109
|
);
|
|
110
110
|
clonedVouch.claims = {
|
|
@@ -124,5 +124,5 @@ test("returns an empty array of errors for verified claim with multiple valid pa
|
|
|
124
124
|
postcode: "property.postcode",
|
|
125
125
|
},
|
|
126
126
|
};
|
|
127
|
-
expect(validateVerifiedClaims([clonedVouch],
|
|
127
|
+
expect(validateVerifiedClaims([clonedVouch], v3SchemaId, null)).toEqual([]);
|
|
128
128
|
});
|
|
@@ -4,7 +4,7 @@ const jp = require("jsonpointer");
|
|
|
4
4
|
const fs = require("fs");
|
|
5
5
|
const merge = require("deepmerge");
|
|
6
6
|
|
|
7
|
-
const combinedSchema = require("../schemas/
|
|
7
|
+
const combinedSchema = require("../schemas/v3/combined.json");
|
|
8
8
|
|
|
9
9
|
const extractFields = [
|
|
10
10
|
"baspi",
|
|
@@ -23,30 +23,15 @@ const extractFields = [
|
|
|
23
23
|
];
|
|
24
24
|
|
|
25
25
|
const overlayIncludeProperties = [
|
|
26
|
-
"title",
|
|
27
|
-
"description",
|
|
28
|
-
"enum",
|
|
26
|
+
// "title",
|
|
27
|
+
// "description",
|
|
28
|
+
// "enum",
|
|
29
29
|
"discriminator",
|
|
30
|
-
"minItems",
|
|
30
|
+
// "minItems",
|
|
31
31
|
];
|
|
32
32
|
|
|
33
|
-
const combineMerge = (target, source, options) => {
|
|
34
|
-
const destination = target.slice();
|
|
35
|
-
source.forEach((item, index) => {
|
|
36
|
-
if (typeof destination[index] === "undefined") {
|
|
37
|
-
destination[index] = options.cloneUnlessOtherwiseSpecified(item, options);
|
|
38
|
-
} else if (options.isMergeableObject(item)) {
|
|
39
|
-
destination[index] = merge(target[index], item, options);
|
|
40
|
-
} else if (target.indexOf(item) === -1) {
|
|
41
|
-
destination.push(item);
|
|
42
|
-
}
|
|
43
|
-
});
|
|
44
|
-
return destination;
|
|
45
|
-
};
|
|
46
|
-
|
|
47
33
|
const flattenSkeleton = (schema) => {
|
|
48
34
|
if (!schema) return undefined;
|
|
49
|
-
// console.log(schema.properties);
|
|
50
35
|
let returnStructure = {};
|
|
51
36
|
if (schema.properties) {
|
|
52
37
|
Object.keys(schema.properties).forEach((key) => {
|
|
@@ -55,10 +40,8 @@ const flattenSkeleton = (schema) => {
|
|
|
55
40
|
}
|
|
56
41
|
if (schema.oneOf) {
|
|
57
42
|
schema.oneOf.forEach((aOneOf) => {
|
|
58
|
-
// console.log(aOneOf);
|
|
59
43
|
if (aOneOf.properties) {
|
|
60
44
|
Object.entries(aOneOf.properties).forEach(([key, value]) => {
|
|
61
|
-
// console.log(aProperty);
|
|
62
45
|
returnStructure[key] = flattenSkeleton(value);
|
|
63
46
|
});
|
|
64
47
|
}
|
|
@@ -74,7 +57,7 @@ const extractOverlay = (sourceSchema, ref) => {
|
|
|
74
57
|
const refName = `${ref}Ref`;
|
|
75
58
|
const returnSchema = {
|
|
76
59
|
$schema: "http://json-schema.org/draft-07/schema#",
|
|
77
|
-
$id: `https://trust.propdata.org.uk/schemas/
|
|
60
|
+
$id: `https://trust.propdata.org.uk/schemas/v3/overlays/${ref}.json`,
|
|
78
61
|
};
|
|
79
62
|
traverse(sourceSchema).forEach(function (element) {
|
|
80
63
|
let path = "/" + this.path.join("/");
|
|
@@ -153,14 +136,9 @@ const deleteProperties = (sourceSchema, propertyNames) => {
|
|
|
153
136
|
const overlays = {};
|
|
154
137
|
|
|
155
138
|
extractFields.forEach((key) => {
|
|
156
|
-
let overlay = extractOverlay(combinedSchema, key
|
|
157
|
-
"title",
|
|
158
|
-
"description",
|
|
159
|
-
"enum",
|
|
160
|
-
"discriminator",
|
|
161
|
-
]);
|
|
139
|
+
let overlay = extractOverlay(combinedSchema, key);
|
|
162
140
|
overlays[key] = overlay;
|
|
163
|
-
const fileName = `../schemas/
|
|
141
|
+
const fileName = `../schemas/v3/overlays/${key}.json`;
|
|
164
142
|
fs.writeFileSync(fileName, JSON.stringify(overlay, null, 2));
|
|
165
143
|
console.log(`Overlay ${key} written to ${fileName}`);
|
|
166
144
|
});
|
|
@@ -174,10 +152,10 @@ const coreSchema = deleteProperties(combinedSchema, [
|
|
|
174
152
|
]);
|
|
175
153
|
|
|
176
154
|
fs.writeFileSync(
|
|
177
|
-
"../schemas/
|
|
155
|
+
"../schemas/v3/pdtf-transaction.json",
|
|
178
156
|
JSON.stringify(coreSchema, null, 2)
|
|
179
157
|
);
|
|
180
|
-
console.log("Core schema written to ../schemas/
|
|
158
|
+
console.log("Core schema written to ../schemas/v3/pdtf-transaction.json");
|
|
181
159
|
|
|
182
160
|
const skeletonSchema = deleteProperties(coreSchema, [
|
|
183
161
|
"$schema",
|
|
@@ -196,7 +174,7 @@ const skeletonSchema = deleteProperties(coreSchema, [
|
|
|
196
174
|
const skeletonSchemaFlattened = flattenSkeleton(skeletonSchema);
|
|
197
175
|
|
|
198
176
|
fs.writeFileSync(
|
|
199
|
-
"../schemas/
|
|
177
|
+
"../schemas/v3/skeleton.json",
|
|
200
178
|
JSON.stringify(skeletonSchemaFlattened, null, 2)
|
|
201
179
|
);
|
|
202
|
-
console.log("Flat Skeleton schema written to ../schemas/
|
|
180
|
+
console.log("Flat Skeleton schema written to ../schemas/v3/skeleton.json");
|
package/src/utils/hmlrLLC1.json
DELETED
|
@@ -1,275 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://json-schema.org/draft-07/schema#",
|
|
3
|
-
"$id": "http://www.landregistry.gov.uk/LLC/LLCSearchResponseV2_0#",
|
|
4
|
-
"type": "object",
|
|
5
|
-
"properties": {
|
|
6
|
-
"LocalLandCharge": {
|
|
7
|
-
"type": "array",
|
|
8
|
-
"items": {
|
|
9
|
-
"type": "object",
|
|
10
|
-
"required": [
|
|
11
|
-
"HMLRReference",
|
|
12
|
-
"RegistrationDate",
|
|
13
|
-
"Category",
|
|
14
|
-
"Location",
|
|
15
|
-
"LocationDominantBuilding"
|
|
16
|
-
],
|
|
17
|
-
"properties": {
|
|
18
|
-
"HMLRReference": {
|
|
19
|
-
"type": "string"
|
|
20
|
-
},
|
|
21
|
-
"OriginatingAuthority": {
|
|
22
|
-
"type": "string"
|
|
23
|
-
},
|
|
24
|
-
"AuthorityReference": {
|
|
25
|
-
"type": "string"
|
|
26
|
-
},
|
|
27
|
-
"CreationDate": {
|
|
28
|
-
"type": "object",
|
|
29
|
-
"properties": {
|
|
30
|
-
"Value": {
|
|
31
|
-
"type": "string",
|
|
32
|
-
"format": "date"
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
"RegistrationDate": {
|
|
37
|
-
"type": "object",
|
|
38
|
-
"properties": {
|
|
39
|
-
"Value": {
|
|
40
|
-
"type": "string",
|
|
41
|
-
"format": "date"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
},
|
|
45
|
-
"Category": {
|
|
46
|
-
"type": "string"
|
|
47
|
-
},
|
|
48
|
-
"ChargeSubCategory": {
|
|
49
|
-
"type": "string"
|
|
50
|
-
},
|
|
51
|
-
"Law": {
|
|
52
|
-
"type": "string"
|
|
53
|
-
},
|
|
54
|
-
"LegalDocument": {
|
|
55
|
-
"type": "string"
|
|
56
|
-
},
|
|
57
|
-
"Location": {
|
|
58
|
-
"type": "object",
|
|
59
|
-
"required": ["AddressLine"],
|
|
60
|
-
"properties": {
|
|
61
|
-
"PostcodeZone": {
|
|
62
|
-
"type": "object",
|
|
63
|
-
"required": ["Postcode"],
|
|
64
|
-
"properties": {
|
|
65
|
-
"Postcode": {
|
|
66
|
-
"type": "string"
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
"AddressLine": {
|
|
71
|
-
"type": "object",
|
|
72
|
-
"properties": {
|
|
73
|
-
"IndexNumeric": {
|
|
74
|
-
"type": "array",
|
|
75
|
-
"items": {
|
|
76
|
-
"type": "object",
|
|
77
|
-
"properties": {
|
|
78
|
-
"Value": {
|
|
79
|
-
"type": "number"
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
},
|
|
83
|
-
"minItems": 0
|
|
84
|
-
},
|
|
85
|
-
"Line": {
|
|
86
|
-
"type": "array",
|
|
87
|
-
"items": {
|
|
88
|
-
"type": "string"
|
|
89
|
-
},
|
|
90
|
-
"minItems": 0
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
},
|
|
96
|
-
"LocationDominantBuilding": {
|
|
97
|
-
"type": "object",
|
|
98
|
-
"required": ["AddressLine"],
|
|
99
|
-
"properties": {
|
|
100
|
-
"PostcodeZone": {
|
|
101
|
-
"type": "object",
|
|
102
|
-
"required": ["Postcode"],
|
|
103
|
-
"properties": {
|
|
104
|
-
"Postcode": {
|
|
105
|
-
"type": "string"
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
"AddressLine": {
|
|
110
|
-
"type": "object",
|
|
111
|
-
"properties": {
|
|
112
|
-
"IndexNumeric": {
|
|
113
|
-
"type": "array",
|
|
114
|
-
"items": {
|
|
115
|
-
"type": "number"
|
|
116
|
-
},
|
|
117
|
-
"minItems": 0
|
|
118
|
-
},
|
|
119
|
-
"Line": {
|
|
120
|
-
"type": "array",
|
|
121
|
-
"items": {
|
|
122
|
-
"type": "string"
|
|
123
|
-
},
|
|
124
|
-
"minItems": 0
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
},
|
|
130
|
-
"Description": {
|
|
131
|
-
"type": "string"
|
|
132
|
-
},
|
|
133
|
-
"SourceOfInformation": {
|
|
134
|
-
"type": "string"
|
|
135
|
-
},
|
|
136
|
-
"AvailableDocument": {
|
|
137
|
-
"type": "array",
|
|
138
|
-
"items": {
|
|
139
|
-
"type": "object",
|
|
140
|
-
"required": ["Document"],
|
|
141
|
-
"properties": {
|
|
142
|
-
"Document": {
|
|
143
|
-
"type": "string"
|
|
144
|
-
},
|
|
145
|
-
"StartDate": {
|
|
146
|
-
"type": "string",
|
|
147
|
-
"format": "date"
|
|
148
|
-
},
|
|
149
|
-
"EndDate": {
|
|
150
|
-
"type": "string",
|
|
151
|
-
"format": "date"
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
},
|
|
155
|
-
"minItems": 0
|
|
156
|
-
},
|
|
157
|
-
"InterestInLand": {
|
|
158
|
-
"type": "string"
|
|
159
|
-
},
|
|
160
|
-
"ApplicantName": {
|
|
161
|
-
"type": "string"
|
|
162
|
-
},
|
|
163
|
-
"ApplicantAddress": {
|
|
164
|
-
"type": "object",
|
|
165
|
-
"required": ["AddressLine"],
|
|
166
|
-
"properties": {
|
|
167
|
-
"PostcodeZone": {
|
|
168
|
-
"type": "object",
|
|
169
|
-
"required": ["Postcode"],
|
|
170
|
-
"properties": {
|
|
171
|
-
"Postcode": {
|
|
172
|
-
"type": "string"
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
"AddressLine": {
|
|
177
|
-
"type": "object",
|
|
178
|
-
"properties": {
|
|
179
|
-
"IndexNumeric": {
|
|
180
|
-
"type": "array",
|
|
181
|
-
"items": {
|
|
182
|
-
"type": "object",
|
|
183
|
-
"properties": {
|
|
184
|
-
"Value": {
|
|
185
|
-
"type": "number"
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
},
|
|
189
|
-
"minItems": 0
|
|
190
|
-
},
|
|
191
|
-
"Line": {
|
|
192
|
-
"type": "array",
|
|
193
|
-
"items": {
|
|
194
|
-
"type": "object",
|
|
195
|
-
"properties": {
|
|
196
|
-
"Value": {
|
|
197
|
-
"type": "string"
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
},
|
|
201
|
-
"minItems": 0
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
},
|
|
207
|
-
"ServientLandDevelopment": {
|
|
208
|
-
"type": "object",
|
|
209
|
-
"required": ["Height", "CoversAllOrPartOfExtent"],
|
|
210
|
-
"properties": {
|
|
211
|
-
"Height": {
|
|
212
|
-
"type": "string"
|
|
213
|
-
},
|
|
214
|
-
"CoversAllOrPartOfExtent": {
|
|
215
|
-
"type": "string"
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
},
|
|
219
|
-
"Amount": {
|
|
220
|
-
"type": "string"
|
|
221
|
-
},
|
|
222
|
-
"InterestRate": {
|
|
223
|
-
"type": "string"
|
|
224
|
-
},
|
|
225
|
-
"LandSold": {
|
|
226
|
-
"type": "string"
|
|
227
|
-
},
|
|
228
|
-
"WorksDone": {
|
|
229
|
-
"type": "string"
|
|
230
|
-
},
|
|
231
|
-
"AdvancePayment": {
|
|
232
|
-
"type": "string"
|
|
233
|
-
},
|
|
234
|
-
"TotalCompensation": {
|
|
235
|
-
"type": "string"
|
|
236
|
-
},
|
|
237
|
-
"AgreedOrEstimated": {
|
|
238
|
-
"type": "string"
|
|
239
|
-
},
|
|
240
|
-
"Adjoining": {
|
|
241
|
-
"type": "boolean"
|
|
242
|
-
},
|
|
243
|
-
"OtherData": {
|
|
244
|
-
"type": "array",
|
|
245
|
-
"items": {
|
|
246
|
-
"type": "object",
|
|
247
|
-
"required": ["DataLabel", "Data"],
|
|
248
|
-
"properties": {
|
|
249
|
-
"DataLabel": {
|
|
250
|
-
"type": "string"
|
|
251
|
-
},
|
|
252
|
-
"Data": {
|
|
253
|
-
"type": "string"
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
},
|
|
257
|
-
"minItems": 0
|
|
258
|
-
},
|
|
259
|
-
"ChargeExtent": {
|
|
260
|
-
"type": "object",
|
|
261
|
-
"properties": {
|
|
262
|
-
"Value": {
|
|
263
|
-
"type": "string"
|
|
264
|
-
},
|
|
265
|
-
"format": {
|
|
266
|
-
"type": "string"
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
},
|
|
272
|
-
"minItems": 0
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
}
|