@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.
Files changed (41) hide show
  1. package/index.js +52 -94
  2. package/package.json +1 -1
  3. package/src/examples/v2/exampleTransaction.json +6 -20
  4. package/src/examples/v3/exampleTransaction.json +904 -0
  5. package/src/mappings/SendPropertyDetailsRequestSchema.json +1588 -0
  6. package/src/mappings/adf.js +1 -1
  7. package/src/schemas/v2/combined.json +13206 -12615
  8. package/src/schemas/v2/overlays/baspi.json +510 -2331
  9. package/src/schemas/v2/overlays/con29DW.json +682 -762
  10. package/src/schemas/v2/overlays/con29R.json +2914 -3073
  11. package/src/schemas/v2/overlays/fme1.json +48 -233
  12. package/src/schemas/v2/overlays/llc1.json +12 -33
  13. package/src/schemas/v2/overlays/lpe1.json +75 -367
  14. package/src/schemas/v2/overlays/nts.json +17 -103
  15. package/src/schemas/v2/overlays/piq.json +146 -693
  16. package/src/schemas/v2/overlays/rds.json +66 -300
  17. package/src/schemas/v2/overlays/ta10.json +540 -1755
  18. package/src/schemas/v2/overlays/ta6.json +241 -1193
  19. package/src/schemas/v2/overlays/ta7.json +106 -440
  20. package/src/schemas/v2/pdtf-transaction.json +13656 -12911
  21. package/src/schemas/v2/skeleton.json +1342 -1155
  22. package/src/schemas/v3/combined.json +38477 -0
  23. package/src/schemas/v3/overlays/baspi.json +8022 -0
  24. package/src/schemas/v3/overlays/con29DW.json +705 -0
  25. package/src/schemas/v3/overlays/con29R.json +2956 -0
  26. package/src/schemas/v3/overlays/fme1.json +1264 -0
  27. package/src/schemas/v3/overlays/llc1.json +25 -0
  28. package/src/schemas/v3/overlays/lpe1.json +2181 -0
  29. package/src/schemas/v3/overlays/nts.json +1937 -0
  30. package/src/schemas/v3/overlays/oc1.json +2799 -0
  31. package/src/schemas/v3/overlays/piq.json +3391 -0
  32. package/src/schemas/v3/overlays/rds.json +3818 -0
  33. package/src/schemas/v3/overlays/ta10.json +5306 -0
  34. package/src/schemas/v3/overlays/ta6.json +4410 -0
  35. package/src/schemas/v3/overlays/ta7.json +1157 -0
  36. package/src/schemas/v3/pdtf-transaction.json +34858 -0
  37. package/src/schemas/v3/skeleton.json +4018 -0
  38. package/src/tests/{v2 → v3}/transactionSchema.test.js +46 -36
  39. package/src/tests/{v2 → v3}/verifiedClaimsValidator.test.js +11 -11
  40. package/src/utils/extractOverlay.js +12 -34
  41. 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/v2/exampleTransaction.json");
13
+ const exampleTransaction = require("../../examples/v3/exampleTransaction.json");
14
+
14
15
  const schemaId =
15
- "https://trust.propdata.org.uk/schemas/v2/pdtf-transaction.json";
16
+ "https://trust.propdata.org.uk/schemas/v3/pdtf-transaction.json";
16
17
  // const validator = getValidator(schemaId);
17
- const v2TransactionSchema = getTransactionSchema(schemaId);
18
+ const v3TransactionSchema = getTransactionSchema(schemaId);
18
19
 
19
- test("exports a property pack schema, v2 with baspi overlay by default", () => {
20
- const testSchema = getTransactionSchema();
21
- expect(testSchema.$id).toEqual(
22
- "https://trust.propdata.org.uk/schemas/v2/pdtf-transaction.json"
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("A");
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("object");
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 LPE1 overlay", () => {
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
- "lpe1ed4",
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
- v2TransactionSchema,
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
- v2TransactionSchema,
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
- v2TransactionSchema,
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
- v2TransactionSchema,
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
- v2TransactionSchema,
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
- v2TransactionSchema,
343
+ v3TransactionSchema,
336
344
  "/propertyPack/titlesToBeSold/0/registerExtract/OCSummaryData/InvalidProp"
337
345
  )
338
346
  ).toBe(undefined);
347
+
339
348
  expect(
340
349
  getTitleAtPath(
341
- v2TransactionSchema,
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
- v2TransactionSchema,
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 v2SchemaId =
6
- "https://trust.propdata.org.uk/schemas/v2/pdtf-transaction.json";
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
- // v2 schema, no overlay
25
- expect(validateVerifiedClaims([clonedVouch], v2SchemaId, null)).toEqual([
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 (default)", () => {
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], v2SchemaId);
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], v2SchemaId, null);
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], v2SchemaId, null);
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], v2SchemaId, null)).toEqual([
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
- v2SchemaId,
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], v2SchemaId, null)).toEqual([]);
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/v2/combined.json");
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/v2/overlays/${ref}.json`,
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/v2/overlays/${key}.json`;
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/v2/pdtf-transaction.json",
155
+ "../schemas/v3/pdtf-transaction.json",
178
156
  JSON.stringify(coreSchema, null, 2)
179
157
  );
180
- console.log("Core schema written to ../schemas/v2/pdtf-transaction.json");
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/v2/skeleton.json",
177
+ "../schemas/v3/skeleton.json",
200
178
  JSON.stringify(skeletonSchemaFlattened, null, 2)
201
179
  );
202
- console.log("Flat Skeleton schema written to ../schemas/v2/skeleton.json");
180
+ console.log("Flat Skeleton schema written to ../schemas/v3/skeleton.json");
@@ -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
- }