@pdtf/schemas 2.2.0 → 2.3.0-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.
- package/index.js +18 -1
- package/package.json +1 -1
- package/src/schemas/v2/combined.json +274 -2
- package/src/schemas/v2/overlays/nts.json +90 -6
- package/src/schemas/v2/pdtf-transaction.json +249 -0
- package/src/schemas/v2/skeleton.json +43 -0
- package/src/tests/v2/transactionSchema.test.js +26 -0
- package/src/utils/hmlrLLC1.json +119 -38
package/index.js
CHANGED
|
@@ -59,8 +59,25 @@ const con29ROverlay = require("./src/schemas/v2/overlays/con29R.json");
|
|
|
59
59
|
const con29DWOverlay = require("./src/schemas/v2/overlays/con29DW.json");
|
|
60
60
|
const rdsOverlay = require("./src/schemas/v2/overlays/rds.json");
|
|
61
61
|
const oc1Overlay = require("./src/schemas/v2/overlays/oc1.json");
|
|
62
|
+
const piqOverlay = require("./src/schemas/v2/overlays/piq.json");
|
|
62
63
|
|
|
63
|
-
const overlaysMap = {
|
|
64
|
+
const overlaysMap = {
|
|
65
|
+
// either the version or the edition is added to the key for future proofing
|
|
66
|
+
baspiV4: baspiOverlay,
|
|
67
|
+
ta6ed4: ta6Overlay,
|
|
68
|
+
ta7ed3: ta7Overlay,
|
|
69
|
+
ta10ed3: ta10Overlay,
|
|
70
|
+
lpe1ed4: lpe1Overlay,
|
|
71
|
+
fme1ed2: fme1Overlay,
|
|
72
|
+
llc1v2: llc1Overlay,
|
|
73
|
+
nts2023: ntsOverlay,
|
|
74
|
+
con29R2019: con29ROverlay,
|
|
75
|
+
con29DW: con29DWOverlay,
|
|
76
|
+
rdsV333: rdsOverlay,
|
|
77
|
+
oc1v21: oc1Overlay,
|
|
78
|
+
piqV3: piqOverlay,
|
|
79
|
+
null: {},
|
|
80
|
+
};
|
|
64
81
|
|
|
65
82
|
const transactionSchemas = {
|
|
66
83
|
"https://trust.propdata.org.uk/schemas/v1/pdtf-transaction.json":
|
package/package.json
CHANGED
|
@@ -131,6 +131,7 @@
|
|
|
131
131
|
"type": "object",
|
|
132
132
|
"baspiRequired": ["materialFacts", "additionalLegalInfo"],
|
|
133
133
|
"ta6Required": ["materialFacts", "additionalLegalInfo"],
|
|
134
|
+
"ntsRequired": ["materialFacts"],
|
|
134
135
|
"properties": {
|
|
135
136
|
"materialFacts": {
|
|
136
137
|
"type": "object",
|
|
@@ -180,6 +181,12 @@
|
|
|
180
181
|
"environmentalIssues",
|
|
181
182
|
"additionalInformation"
|
|
182
183
|
],
|
|
184
|
+
"ntsRequired": [
|
|
185
|
+
"priceInformation",
|
|
186
|
+
"ownership",
|
|
187
|
+
"councilTax",
|
|
188
|
+
"energyEfficiency"
|
|
189
|
+
],
|
|
183
190
|
"properties": {
|
|
184
191
|
"address": {
|
|
185
192
|
"baspiRef": "A1.1",
|
|
@@ -349,6 +356,7 @@
|
|
|
349
356
|
"ntsRef": "A3",
|
|
350
357
|
"title": "Price information",
|
|
351
358
|
"type": "object",
|
|
359
|
+
"ntsRequired": ["price", "preiceQualifier"],
|
|
352
360
|
"properties": {
|
|
353
361
|
"price": {
|
|
354
362
|
"ntsRef": "A3.1",
|
|
@@ -1013,6 +1021,7 @@
|
|
|
1013
1021
|
"title": "Ownership",
|
|
1014
1022
|
"type": "object",
|
|
1015
1023
|
"baspiRequired": ["ownershipsToBeTransferred"],
|
|
1024
|
+
"ntsRequired": ["ownershipsToBeTransferred"],
|
|
1016
1025
|
"properties": {
|
|
1017
1026
|
"ownershipsToBeTransferred": {
|
|
1018
1027
|
"baspiRef": "A1.3",
|
|
@@ -1025,6 +1034,7 @@
|
|
|
1025
1034
|
"title": "Ownership to be transferred",
|
|
1026
1035
|
"type": "object",
|
|
1027
1036
|
"baspiRequired": ["ownershipType"],
|
|
1037
|
+
"ntsRequired": ["ownershipType"],
|
|
1028
1038
|
"properties": {
|
|
1029
1039
|
"titleNumber": {
|
|
1030
1040
|
"baspiRef": "A1.3.0.1",
|
|
@@ -3422,6 +3432,11 @@
|
|
|
3422
3432
|
"sharedOwnershipPercentage",
|
|
3423
3433
|
"sharedOwnershipRent",
|
|
3424
3434
|
"sharedOwnershipRentFrequency"
|
|
3435
|
+
],
|
|
3436
|
+
"ntsRequired": [
|
|
3437
|
+
"sharedOwnershipPercentage",
|
|
3438
|
+
"sharedOwnershipRent",
|
|
3439
|
+
"sharedOwnershipRentFrequency"
|
|
3425
3440
|
]
|
|
3426
3441
|
}
|
|
3427
3442
|
]
|
|
@@ -3433,6 +3448,10 @@
|
|
|
3433
3448
|
"startYearOfLease",
|
|
3434
3449
|
"lengthOfLeaseInYears"
|
|
3435
3450
|
],
|
|
3451
|
+
"ntsRequired": [
|
|
3452
|
+
"startYearOfLease",
|
|
3453
|
+
"lengthOfLeaseInYears"
|
|
3454
|
+
],
|
|
3436
3455
|
"properties": {
|
|
3437
3456
|
"startYearOfLease": {
|
|
3438
3457
|
"baspiRef": "A1.4.1.1",
|
|
@@ -5161,15 +5180,18 @@
|
|
|
5161
5180
|
"ta7Ref": "1.2",
|
|
5162
5181
|
"lpe1Ref": "3",
|
|
5163
5182
|
"piqRef": "A1.3.3",
|
|
5183
|
+
"ntsRef": "A1.4",
|
|
5164
5184
|
"title": "Ground Rent",
|
|
5165
5185
|
"type": "object",
|
|
5166
5186
|
"lpe1Required": ["isGroundRentPayable"],
|
|
5167
5187
|
"baspiRequired": ["isGroundRentPayable"],
|
|
5168
5188
|
"ta7Required": ["isGroundRentPayable"],
|
|
5189
|
+
"ntsRequired": ["isGroundRentPayable"],
|
|
5169
5190
|
"properties": {
|
|
5170
5191
|
"isGroundRentPayable": {
|
|
5171
5192
|
"baspiRef": "A1.4.2.1",
|
|
5172
5193
|
"ta7Ref": "1.2.1",
|
|
5194
|
+
"ntsRef": "A1.4.1",
|
|
5173
5195
|
"title": "Does the seller pay ground rent for the property?",
|
|
5174
5196
|
"type": "string",
|
|
5175
5197
|
"enum": ["Yes", "No"]
|
|
@@ -5194,7 +5216,7 @@
|
|
|
5194
5216
|
"annualGroundRent": {
|
|
5195
5217
|
"baspiRef": "A1.4.2.2",
|
|
5196
5218
|
"ta7Ref": "1.2a",
|
|
5197
|
-
"ntsRef": "A1.4",
|
|
5219
|
+
"ntsRef": "A1.4.2",
|
|
5198
5220
|
"lpe1Ref": "3.1",
|
|
5199
5221
|
"piqRef": "A1.3.3",
|
|
5200
5222
|
"rdsRef": "TenureAgreements/RentPayable/Value",
|
|
@@ -5208,7 +5230,7 @@
|
|
|
5208
5230
|
},
|
|
5209
5231
|
"rentSubjectToIncrease": {
|
|
5210
5232
|
"baspiRef": "A1.4.2.3",
|
|
5211
|
-
"ntsRef": "A1.
|
|
5233
|
+
"ntsRef": "A1.4.3",
|
|
5212
5234
|
"ta7Ref": "1.2c",
|
|
5213
5235
|
"piqRef": "A1.3.4",
|
|
5214
5236
|
"type": "object",
|
|
@@ -5218,6 +5240,7 @@
|
|
|
5218
5240
|
"baspiRef": "A1.4.2.3.1",
|
|
5219
5241
|
"piqRef": "A1.3.4.1",
|
|
5220
5242
|
"ta7Ref": "1.2c.1",
|
|
5243
|
+
"ntsRef": "1.4.3.1",
|
|
5221
5244
|
"type": "string",
|
|
5222
5245
|
"title": "",
|
|
5223
5246
|
"enum": ["Yes", "No"]
|
|
@@ -5225,6 +5248,7 @@
|
|
|
5225
5248
|
},
|
|
5226
5249
|
"lpe1Required": ["yesNo"],
|
|
5227
5250
|
"baspiRequired": ["yesNo"],
|
|
5251
|
+
"ntsRequired": ["yesNo"],
|
|
5228
5252
|
"discriminator": {
|
|
5229
5253
|
"propertyName": "yesNo"
|
|
5230
5254
|
},
|
|
@@ -5244,6 +5268,7 @@
|
|
|
5244
5268
|
"rentReviewFrequency": {
|
|
5245
5269
|
"baspiRef": "A1.4.2.3.2",
|
|
5246
5270
|
"ta7Ref": "1.2d",
|
|
5271
|
+
"ntsRef": "1.4.3.2",
|
|
5247
5272
|
"title": "How often is the rent reviewed?",
|
|
5248
5273
|
"type": "string"
|
|
5249
5274
|
},
|
|
@@ -5251,6 +5276,7 @@
|
|
|
5251
5276
|
"baspiRef": "A1.4.2.3.3",
|
|
5252
5277
|
"piqRef": "A1.3.4.2",
|
|
5253
5278
|
"ta7Ref": "1.2e",
|
|
5279
|
+
"ntsRef": "1.4.3.3",
|
|
5254
5280
|
"title": "How is the increase calculated?",
|
|
5255
5281
|
"description": "e.g. set figure, doubling, in line with Retail Price Index, Consumer Price Index, etc",
|
|
5256
5282
|
"type": "string"
|
|
@@ -5263,6 +5289,10 @@
|
|
|
5263
5289
|
"baspiRequired": [
|
|
5264
5290
|
"rentReviewFrequency",
|
|
5265
5291
|
"rentIncreaseCalculated"
|
|
5292
|
+
],
|
|
5293
|
+
"ntsRequired": [
|
|
5294
|
+
"rentReviewFrequency",
|
|
5295
|
+
"rentIncreaseCalculated"
|
|
5266
5296
|
]
|
|
5267
5297
|
}
|
|
5268
5298
|
]
|
|
@@ -36816,6 +36846,248 @@
|
|
|
36816
36846
|
}
|
|
36817
36847
|
}
|
|
36818
36848
|
}
|
|
36849
|
+
},
|
|
36850
|
+
"valuationComparisonData": {
|
|
36851
|
+
"title": "Valuation Comparison Data",
|
|
36852
|
+
"description": "A collection of data used to compare the valuations (market values) of properties in the real estate or property market.",
|
|
36853
|
+
"type": "object",
|
|
36854
|
+
"properties": {
|
|
36855
|
+
"propertyDetails": {
|
|
36856
|
+
"title": "Property Details",
|
|
36857
|
+
"description": "Details and information related to individual properties for valuation comparison.",
|
|
36858
|
+
"type": "array",
|
|
36859
|
+
"items": {
|
|
36860
|
+
"type": "object",
|
|
36861
|
+
"properties": {
|
|
36862
|
+
"propertyListingInfo": {
|
|
36863
|
+
"title": "Property Listing Information",
|
|
36864
|
+
"description": "Information related to the pricing and status of a property listing.",
|
|
36865
|
+
"type": "object",
|
|
36866
|
+
"properties": {
|
|
36867
|
+
"listingType": {
|
|
36868
|
+
"title": "Listing Type",
|
|
36869
|
+
"type": "string",
|
|
36870
|
+
"enum": ["Recently Sold", "Currently On Sale"],
|
|
36871
|
+
"description": "Type of property listing, indicating whether it was recently sold or is currently on sale."
|
|
36872
|
+
}
|
|
36873
|
+
},
|
|
36874
|
+
"discriminator": {
|
|
36875
|
+
"propertyName": "listingType"
|
|
36876
|
+
},
|
|
36877
|
+
"oneOf": [
|
|
36878
|
+
{
|
|
36879
|
+
"title": "Recently Sold Property",
|
|
36880
|
+
"description": "Specific information about a property that was recently sold.",
|
|
36881
|
+
"properties": {
|
|
36882
|
+
"listingType": {
|
|
36883
|
+
"const": "Recently Sold"
|
|
36884
|
+
},
|
|
36885
|
+
"soldDate": {
|
|
36886
|
+
"title": "Sold Date",
|
|
36887
|
+
"type": "string",
|
|
36888
|
+
"format": "date-time",
|
|
36889
|
+
"description": "The date when the property was sold."
|
|
36890
|
+
},
|
|
36891
|
+
"soldPrice": {
|
|
36892
|
+
"title": "Sold Price",
|
|
36893
|
+
"type": "number",
|
|
36894
|
+
"description": "The amount for which the property was sold."
|
|
36895
|
+
}
|
|
36896
|
+
}
|
|
36897
|
+
},
|
|
36898
|
+
{
|
|
36899
|
+
"title": "Property Currently On Sale",
|
|
36900
|
+
"description": "Specific information about a property that is currently listed for sale.",
|
|
36901
|
+
"properties": {
|
|
36902
|
+
"listingType": {
|
|
36903
|
+
"const": "Currently On Sale"
|
|
36904
|
+
},
|
|
36905
|
+
"listedDate": {
|
|
36906
|
+
"title": "Listed Date",
|
|
36907
|
+
"type": "string",
|
|
36908
|
+
"format": "date-time",
|
|
36909
|
+
"description": "The date when the property was listed for sale."
|
|
36910
|
+
},
|
|
36911
|
+
"listPrice": {
|
|
36912
|
+
"title": "List Price",
|
|
36913
|
+
"type": "number",
|
|
36914
|
+
"description": "The asking price for the property currently on sale."
|
|
36915
|
+
}
|
|
36916
|
+
}
|
|
36917
|
+
}
|
|
36918
|
+
]
|
|
36919
|
+
},
|
|
36920
|
+
"propertyFullDescription": {
|
|
36921
|
+
"title": "Property Description",
|
|
36922
|
+
"description": "A detailed description of the property.",
|
|
36923
|
+
"type": "string"
|
|
36924
|
+
},
|
|
36925
|
+
"uprn": {
|
|
36926
|
+
"title": "Unique Property Reference Number (UPRN)",
|
|
36927
|
+
"description": "A unique identifier for the property.",
|
|
36928
|
+
"type": "string"
|
|
36929
|
+
},
|
|
36930
|
+
"propertyType": {
|
|
36931
|
+
"title": "Type of Property",
|
|
36932
|
+
"description": "The type or category of the property.",
|
|
36933
|
+
"type": "string"
|
|
36934
|
+
},
|
|
36935
|
+
"marketingTenure": {
|
|
36936
|
+
"title": "Marketing Tenure",
|
|
36937
|
+
"description": "The type of tenure being marketed for the property.",
|
|
36938
|
+
"type": "string",
|
|
36939
|
+
"enum": [
|
|
36940
|
+
"Commonhold",
|
|
36941
|
+
"Freehold",
|
|
36942
|
+
"Leasehold",
|
|
36943
|
+
"Share of Freehold",
|
|
36944
|
+
"Shared Ownership"
|
|
36945
|
+
]
|
|
36946
|
+
},
|
|
36947
|
+
"basicDetails": {
|
|
36948
|
+
"title": "Basic Property Details",
|
|
36949
|
+
"description": "Basic information about the property.",
|
|
36950
|
+
"type": "object",
|
|
36951
|
+
"properties": {
|
|
36952
|
+
"bedrooms": {
|
|
36953
|
+
"title": "Number of Bedrooms",
|
|
36954
|
+
"description": "The total number of bedrooms in the property.",
|
|
36955
|
+
"type": "integer"
|
|
36956
|
+
},
|
|
36957
|
+
"bathrooms": {
|
|
36958
|
+
"title": "Number of Bathrooms",
|
|
36959
|
+
"description": "The total number of bathrooms in the property.",
|
|
36960
|
+
"type": "integer"
|
|
36961
|
+
},
|
|
36962
|
+
"buildInformation": {
|
|
36963
|
+
"title": "Information related to property build",
|
|
36964
|
+
"description": "Details related to the construction of the property.",
|
|
36965
|
+
"type": "object",
|
|
36966
|
+
"properties": {
|
|
36967
|
+
"internalArea": {
|
|
36968
|
+
"title": "Total internal floor area",
|
|
36969
|
+
"description": "The total internal floor area of the property.",
|
|
36970
|
+
"type": "object",
|
|
36971
|
+
"properties": {
|
|
36972
|
+
"area": {
|
|
36973
|
+
"title": "Internal area value",
|
|
36974
|
+
"description": "The numerical value of the internal floor area.",
|
|
36975
|
+
"type": "number",
|
|
36976
|
+
"minimum": 0
|
|
36977
|
+
},
|
|
36978
|
+
"units": {
|
|
36979
|
+
"title": "Internal area units",
|
|
36980
|
+
"description": "The units of measurement for the internal floor area.",
|
|
36981
|
+
"type": "string",
|
|
36982
|
+
"enum": ["square metres", "square feet"]
|
|
36983
|
+
}
|
|
36984
|
+
}
|
|
36985
|
+
},
|
|
36986
|
+
"yearOfBuild": {
|
|
36987
|
+
"title": "Year the property was built",
|
|
36988
|
+
"description": "The year when the property was constructed.",
|
|
36989
|
+
"type": "integer"
|
|
36990
|
+
}
|
|
36991
|
+
}
|
|
36992
|
+
}
|
|
36993
|
+
}
|
|
36994
|
+
},
|
|
36995
|
+
"media": {
|
|
36996
|
+
"title": "Media",
|
|
36997
|
+
"description": "Media content related to the property listing.",
|
|
36998
|
+
"type": "array",
|
|
36999
|
+
"items": {
|
|
37000
|
+
"type": "object",
|
|
37001
|
+
"properties": {
|
|
37002
|
+
"mediaType": {
|
|
37003
|
+
"title": "Type of media",
|
|
37004
|
+
"description": "The type of media content (e.g., images, floorplans, brochures) related to the property.",
|
|
37005
|
+
"type": "string",
|
|
37006
|
+
"enum": [
|
|
37007
|
+
"Image",
|
|
37008
|
+
"Floorplan",
|
|
37009
|
+
"Brochure",
|
|
37010
|
+
"Virtual tour",
|
|
37011
|
+
"Audio tour",
|
|
37012
|
+
"EPC",
|
|
37013
|
+
"EPC graph",
|
|
37014
|
+
"Other"
|
|
37015
|
+
]
|
|
37016
|
+
},
|
|
37017
|
+
"mediaUrl": {
|
|
37018
|
+
"title": "Media URL",
|
|
37019
|
+
"description": "The URL or link to access the media content.",
|
|
37020
|
+
"type": "string",
|
|
37021
|
+
"format": "uri"
|
|
37022
|
+
},
|
|
37023
|
+
"caption": {
|
|
37024
|
+
"title": "Caption",
|
|
37025
|
+
"description": "A descriptive caption or label for the media content.",
|
|
37026
|
+
"type": "string"
|
|
37027
|
+
}
|
|
37028
|
+
}
|
|
37029
|
+
}
|
|
37030
|
+
}
|
|
37031
|
+
}
|
|
37032
|
+
}
|
|
37033
|
+
},
|
|
37034
|
+
"propertyPricing": {
|
|
37035
|
+
"title": "Property Pricing Estimates",
|
|
37036
|
+
"description": "Detailed property pricing estimates, including rental estimates, market value, and yield calculations.",
|
|
37037
|
+
"type": "object",
|
|
37038
|
+
"properties": {
|
|
37039
|
+
"rentalEstimate": {
|
|
37040
|
+
"title": "Rental Estimate",
|
|
37041
|
+
"description": "Estimated rental income for the property.",
|
|
37042
|
+
"type": "object",
|
|
37043
|
+
"properties": {
|
|
37044
|
+
"estimatedAmount": {
|
|
37045
|
+
"title": "Rental Estimate Amount",
|
|
37046
|
+
"description": "The estimated rental amount for the property.",
|
|
37047
|
+
"type": "number"
|
|
37048
|
+
},
|
|
37049
|
+
"paymentFrequency": {
|
|
37050
|
+
"title": "Payment Frequency",
|
|
37051
|
+
"description": "The frequency at which the rental amount is calculated.",
|
|
37052
|
+
"type": "string",
|
|
37053
|
+
"enum": ["Per Week", "Per Calendar Month", "Per Year"]
|
|
37054
|
+
}
|
|
37055
|
+
}
|
|
37056
|
+
},
|
|
37057
|
+
"estimatedPrice": {
|
|
37058
|
+
"title": "Estimated Price",
|
|
37059
|
+
"description": "Approximation of the property's current market value",
|
|
37060
|
+
"type": "number"
|
|
37061
|
+
},
|
|
37062
|
+
"yield": {
|
|
37063
|
+
"title": "Yield",
|
|
37064
|
+
"description": "Return on investment (ROI) generated by an income-producing asset",
|
|
37065
|
+
"type": "number"
|
|
37066
|
+
},
|
|
37067
|
+
"priceEstimationDetails": {
|
|
37068
|
+
"type": "object",
|
|
37069
|
+
"title": "Credibility and Pricing Methodology",
|
|
37070
|
+
"description": "Information about the credibility of property pricing estimates and the methodology used in their calculation.",
|
|
37071
|
+
"properties": {
|
|
37072
|
+
"credibilitySources": {
|
|
37073
|
+
"type": "array",
|
|
37074
|
+
"title": "Data Sources",
|
|
37075
|
+
"description": "The sources of data used for property pricing estimates.",
|
|
37076
|
+
"items": {
|
|
37077
|
+
"type": "string"
|
|
37078
|
+
}
|
|
37079
|
+
},
|
|
37080
|
+
"pricingMethodology": {
|
|
37081
|
+
"title": "Pricing Methodology",
|
|
37082
|
+
"description": "Description of the methodology used to estimate property pricing.",
|
|
37083
|
+
"type": "string",
|
|
37084
|
+
"default": "This estimate is based on a combination of market research, historical sales data, and current market trends. It may not represent the exact market value."
|
|
37085
|
+
}
|
|
37086
|
+
}
|
|
37087
|
+
}
|
|
37088
|
+
}
|
|
37089
|
+
}
|
|
37090
|
+
}
|
|
36819
37091
|
}
|
|
36820
37092
|
}
|
|
36821
37093
|
}
|
|
@@ -3,12 +3,25 @@
|
|
|
3
3
|
"$id": "https://trust.propdata.org.uk/schemas/v2/overlays/nts.json",
|
|
4
4
|
"properties": {
|
|
5
5
|
"propertyPack": {
|
|
6
|
+
"required": [
|
|
7
|
+
"materialFacts"
|
|
8
|
+
],
|
|
6
9
|
"properties": {
|
|
7
10
|
"materialFacts": {
|
|
11
|
+
"required": [
|
|
12
|
+
"priceInformation",
|
|
13
|
+
"ownership",
|
|
14
|
+
"councilTax",
|
|
15
|
+
"energyEfficiency"
|
|
16
|
+
],
|
|
8
17
|
"properties": {
|
|
9
18
|
"priceInformation": {
|
|
10
19
|
"ntsRef": "A3",
|
|
11
20
|
"title": "Price information",
|
|
21
|
+
"required": [
|
|
22
|
+
"price",
|
|
23
|
+
"preiceQualifier"
|
|
24
|
+
],
|
|
12
25
|
"properties": {
|
|
13
26
|
"price": {
|
|
14
27
|
"ntsRef": "A3.1",
|
|
@@ -31,9 +44,15 @@
|
|
|
31
44
|
"ownership": {
|
|
32
45
|
"ntsRef": "A1.1",
|
|
33
46
|
"title": "Ownership",
|
|
47
|
+
"required": [
|
|
48
|
+
"ownershipsToBeTransferred"
|
|
49
|
+
],
|
|
34
50
|
"properties": {
|
|
35
51
|
"ownershipsToBeTransferred": {
|
|
36
52
|
"items": {
|
|
53
|
+
"required": [
|
|
54
|
+
"ownershipType"
|
|
55
|
+
],
|
|
37
56
|
"oneOf": [
|
|
38
57
|
null,
|
|
39
58
|
null,
|
|
@@ -45,6 +64,11 @@
|
|
|
45
64
|
"oneOf": [
|
|
46
65
|
null,
|
|
47
66
|
{
|
|
67
|
+
"required": [
|
|
68
|
+
"sharedOwnershipPercentage",
|
|
69
|
+
"sharedOwnershipRent",
|
|
70
|
+
"sharedOwnershipRentFrequency"
|
|
71
|
+
],
|
|
48
72
|
"properties": {
|
|
49
73
|
"sharedOwnershipPercentage": {
|
|
50
74
|
"ntsRef": "A1.7.1",
|
|
@@ -68,6 +92,10 @@
|
|
|
68
92
|
]
|
|
69
93
|
},
|
|
70
94
|
"leaseTerm": {
|
|
95
|
+
"required": [
|
|
96
|
+
"startYearOfLease",
|
|
97
|
+
"lengthOfLeaseInYears"
|
|
98
|
+
],
|
|
71
99
|
"properties": {
|
|
72
100
|
"startYearOfLease": {
|
|
73
101
|
"ntsRef": "A1.2",
|
|
@@ -80,16 +108,34 @@
|
|
|
80
108
|
}
|
|
81
109
|
},
|
|
82
110
|
"groundRent": {
|
|
111
|
+
"ntsRef": "A1.4",
|
|
112
|
+
"title": "Ground Rent",
|
|
113
|
+
"discriminator": {
|
|
114
|
+
"propertyName": "isGroundRentPayable"
|
|
115
|
+
},
|
|
83
116
|
"oneOf": [
|
|
84
|
-
null,
|
|
85
117
|
{
|
|
86
118
|
"properties": {
|
|
119
|
+
"isGroundRentPayable": {
|
|
120
|
+
"enum": [
|
|
121
|
+
"No"
|
|
122
|
+
]
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"properties": {
|
|
128
|
+
"isGroundRentPayable": {
|
|
129
|
+
"enum": [
|
|
130
|
+
"Yes"
|
|
131
|
+
]
|
|
132
|
+
},
|
|
87
133
|
"annualGroundRent": {
|
|
88
|
-
"ntsRef": "A1.4",
|
|
134
|
+
"ntsRef": "A1.4.2",
|
|
89
135
|
"title": "What is the annual ground rent payable? (£)"
|
|
90
136
|
},
|
|
91
137
|
"rentSubjectToIncrease": {
|
|
92
|
-
"ntsRef": "A1.
|
|
138
|
+
"ntsRef": "A1.4.3",
|
|
93
139
|
"title": "Is the ground rent subject to increase?",
|
|
94
140
|
"discriminator": {
|
|
95
141
|
"propertyName": "yesNo"
|
|
@@ -110,14 +156,52 @@
|
|
|
110
156
|
"enum": [
|
|
111
157
|
"Yes"
|
|
112
158
|
]
|
|
159
|
+
},
|
|
160
|
+
"rentReviewFrequency": {
|
|
161
|
+
"ntsRef": "1.4.3.2",
|
|
162
|
+
"title": "How often is the rent reviewed?"
|
|
163
|
+
},
|
|
164
|
+
"rentIncreaseCalculated": {
|
|
165
|
+
"ntsRef": "1.4.3.3",
|
|
166
|
+
"title": "How is the increase calculated?",
|
|
167
|
+
"description": "e.g. set figure, doubling, in line with Retail Price Index, Consumer Price Index, etc"
|
|
113
168
|
}
|
|
114
|
-
}
|
|
169
|
+
},
|
|
170
|
+
"required": [
|
|
171
|
+
"rentReviewFrequency",
|
|
172
|
+
"rentIncreaseCalculated"
|
|
173
|
+
]
|
|
115
174
|
}
|
|
116
|
-
]
|
|
175
|
+
],
|
|
176
|
+
"required": [
|
|
177
|
+
"yesNo"
|
|
178
|
+
],
|
|
179
|
+
"properties": {
|
|
180
|
+
"yesNo": {
|
|
181
|
+
"ntsRef": "1.4.3.1",
|
|
182
|
+
"enum": [
|
|
183
|
+
"Yes",
|
|
184
|
+
"No"
|
|
185
|
+
]
|
|
186
|
+
}
|
|
187
|
+
}
|
|
117
188
|
}
|
|
118
189
|
}
|
|
119
190
|
}
|
|
120
|
-
]
|
|
191
|
+
],
|
|
192
|
+
"required": [
|
|
193
|
+
"isGroundRentPayable"
|
|
194
|
+
],
|
|
195
|
+
"properties": {
|
|
196
|
+
"isGroundRentPayable": {
|
|
197
|
+
"ntsRef": "A1.4.1",
|
|
198
|
+
"title": "Does the seller pay ground rent for the property?",
|
|
199
|
+
"enum": [
|
|
200
|
+
"Yes",
|
|
201
|
+
"No"
|
|
202
|
+
]
|
|
203
|
+
}
|
|
204
|
+
}
|
|
121
205
|
}
|
|
122
206
|
}
|
|
123
207
|
}
|
|
@@ -33341,6 +33341,255 @@
|
|
|
33341
33341
|
}
|
|
33342
33342
|
}
|
|
33343
33343
|
}
|
|
33344
|
+
},
|
|
33345
|
+
"valuationComparisonData": {
|
|
33346
|
+
"title": "Valuation Comparison Data",
|
|
33347
|
+
"description": "A collection of data used to compare the valuations (market values) of properties in the real estate or property market.",
|
|
33348
|
+
"type": "object",
|
|
33349
|
+
"properties": {
|
|
33350
|
+
"propertyDetails": {
|
|
33351
|
+
"title": "Property Details",
|
|
33352
|
+
"description": "Details and information related to individual properties for valuation comparison.",
|
|
33353
|
+
"type": "array",
|
|
33354
|
+
"items": {
|
|
33355
|
+
"type": "object",
|
|
33356
|
+
"properties": {
|
|
33357
|
+
"propertyListingInfo": {
|
|
33358
|
+
"title": "Property Listing Information",
|
|
33359
|
+
"description": "Information related to the pricing and status of a property listing.",
|
|
33360
|
+
"type": "object",
|
|
33361
|
+
"properties": {
|
|
33362
|
+
"listingType": {
|
|
33363
|
+
"title": "Listing Type",
|
|
33364
|
+
"type": "string",
|
|
33365
|
+
"enum": [
|
|
33366
|
+
"Recently Sold",
|
|
33367
|
+
"Currently On Sale"
|
|
33368
|
+
],
|
|
33369
|
+
"description": "Type of property listing, indicating whether it was recently sold or is currently on sale."
|
|
33370
|
+
}
|
|
33371
|
+
},
|
|
33372
|
+
"oneOf": [
|
|
33373
|
+
{
|
|
33374
|
+
"title": "Recently Sold Property",
|
|
33375
|
+
"description": "Specific information about a property that was recently sold.",
|
|
33376
|
+
"properties": {
|
|
33377
|
+
"listingType": {
|
|
33378
|
+
"const": "Recently Sold"
|
|
33379
|
+
},
|
|
33380
|
+
"soldDate": {
|
|
33381
|
+
"title": "Sold Date",
|
|
33382
|
+
"type": "string",
|
|
33383
|
+
"format": "date-time",
|
|
33384
|
+
"description": "The date when the property was sold."
|
|
33385
|
+
},
|
|
33386
|
+
"soldPrice": {
|
|
33387
|
+
"title": "Sold Price",
|
|
33388
|
+
"type": "number",
|
|
33389
|
+
"description": "The amount for which the property was sold."
|
|
33390
|
+
}
|
|
33391
|
+
}
|
|
33392
|
+
},
|
|
33393
|
+
{
|
|
33394
|
+
"title": "Property Currently On Sale",
|
|
33395
|
+
"description": "Specific information about a property that is currently listed for sale.",
|
|
33396
|
+
"properties": {
|
|
33397
|
+
"listingType": {
|
|
33398
|
+
"const": "Currently On Sale"
|
|
33399
|
+
},
|
|
33400
|
+
"listedDate": {
|
|
33401
|
+
"title": "Listed Date",
|
|
33402
|
+
"type": "string",
|
|
33403
|
+
"format": "date-time",
|
|
33404
|
+
"description": "The date when the property was listed for sale."
|
|
33405
|
+
},
|
|
33406
|
+
"listPrice": {
|
|
33407
|
+
"title": "List Price",
|
|
33408
|
+
"type": "number",
|
|
33409
|
+
"description": "The asking price for the property currently on sale."
|
|
33410
|
+
}
|
|
33411
|
+
}
|
|
33412
|
+
}
|
|
33413
|
+
]
|
|
33414
|
+
},
|
|
33415
|
+
"propertyFullDescription": {
|
|
33416
|
+
"title": "Property Description",
|
|
33417
|
+
"description": "A detailed description of the property.",
|
|
33418
|
+
"type": "string"
|
|
33419
|
+
},
|
|
33420
|
+
"uprn": {
|
|
33421
|
+
"title": "Unique Property Reference Number (UPRN)",
|
|
33422
|
+
"description": "A unique identifier for the property.",
|
|
33423
|
+
"type": "string"
|
|
33424
|
+
},
|
|
33425
|
+
"propertyType": {
|
|
33426
|
+
"title": "Type of Property",
|
|
33427
|
+
"description": "The type or category of the property.",
|
|
33428
|
+
"type": "string"
|
|
33429
|
+
},
|
|
33430
|
+
"marketingTenure": {
|
|
33431
|
+
"title": "Marketing Tenure",
|
|
33432
|
+
"description": "The type of tenure being marketed for the property.",
|
|
33433
|
+
"type": "string",
|
|
33434
|
+
"enum": [
|
|
33435
|
+
"Commonhold",
|
|
33436
|
+
"Freehold",
|
|
33437
|
+
"Leasehold",
|
|
33438
|
+
"Share of Freehold",
|
|
33439
|
+
"Shared Ownership"
|
|
33440
|
+
]
|
|
33441
|
+
},
|
|
33442
|
+
"basicDetails": {
|
|
33443
|
+
"title": "Basic Property Details",
|
|
33444
|
+
"description": "Basic information about the property.",
|
|
33445
|
+
"type": "object",
|
|
33446
|
+
"properties": {
|
|
33447
|
+
"bedrooms": {
|
|
33448
|
+
"title": "Number of Bedrooms",
|
|
33449
|
+
"description": "The total number of bedrooms in the property.",
|
|
33450
|
+
"type": "integer"
|
|
33451
|
+
},
|
|
33452
|
+
"bathrooms": {
|
|
33453
|
+
"title": "Number of Bathrooms",
|
|
33454
|
+
"description": "The total number of bathrooms in the property.",
|
|
33455
|
+
"type": "integer"
|
|
33456
|
+
},
|
|
33457
|
+
"buildInformation": {
|
|
33458
|
+
"title": "Information related to property build",
|
|
33459
|
+
"description": "Details related to the construction of the property.",
|
|
33460
|
+
"type": "object",
|
|
33461
|
+
"properties": {
|
|
33462
|
+
"internalArea": {
|
|
33463
|
+
"title": "Total internal floor area",
|
|
33464
|
+
"description": "The total internal floor area of the property.",
|
|
33465
|
+
"type": "object",
|
|
33466
|
+
"properties": {
|
|
33467
|
+
"area": {
|
|
33468
|
+
"title": "Internal area value",
|
|
33469
|
+
"description": "The numerical value of the internal floor area.",
|
|
33470
|
+
"type": "number",
|
|
33471
|
+
"minimum": 0
|
|
33472
|
+
},
|
|
33473
|
+
"units": {
|
|
33474
|
+
"title": "Internal area units",
|
|
33475
|
+
"description": "The units of measurement for the internal floor area.",
|
|
33476
|
+
"type": "string",
|
|
33477
|
+
"enum": [
|
|
33478
|
+
"square metres",
|
|
33479
|
+
"square feet"
|
|
33480
|
+
]
|
|
33481
|
+
}
|
|
33482
|
+
}
|
|
33483
|
+
},
|
|
33484
|
+
"yearOfBuild": {
|
|
33485
|
+
"title": "Year the property was built",
|
|
33486
|
+
"description": "The year when the property was constructed.",
|
|
33487
|
+
"type": "integer"
|
|
33488
|
+
}
|
|
33489
|
+
}
|
|
33490
|
+
}
|
|
33491
|
+
}
|
|
33492
|
+
},
|
|
33493
|
+
"media": {
|
|
33494
|
+
"title": "Media",
|
|
33495
|
+
"description": "Media content related to the property listing.",
|
|
33496
|
+
"type": "array",
|
|
33497
|
+
"items": {
|
|
33498
|
+
"type": "object",
|
|
33499
|
+
"properties": {
|
|
33500
|
+
"mediaType": {
|
|
33501
|
+
"title": "Type of media",
|
|
33502
|
+
"description": "The type of media content (e.g., images, floorplans, brochures) related to the property.",
|
|
33503
|
+
"type": "string",
|
|
33504
|
+
"enum": [
|
|
33505
|
+
"Image",
|
|
33506
|
+
"Floorplan",
|
|
33507
|
+
"Brochure",
|
|
33508
|
+
"Virtual tour",
|
|
33509
|
+
"Audio tour",
|
|
33510
|
+
"EPC",
|
|
33511
|
+
"EPC graph",
|
|
33512
|
+
"Other"
|
|
33513
|
+
]
|
|
33514
|
+
},
|
|
33515
|
+
"mediaUrl": {
|
|
33516
|
+
"title": "Media URL",
|
|
33517
|
+
"description": "The URL or link to access the media content.",
|
|
33518
|
+
"type": "string",
|
|
33519
|
+
"format": "uri"
|
|
33520
|
+
},
|
|
33521
|
+
"caption": {
|
|
33522
|
+
"title": "Caption",
|
|
33523
|
+
"description": "A descriptive caption or label for the media content.",
|
|
33524
|
+
"type": "string"
|
|
33525
|
+
}
|
|
33526
|
+
}
|
|
33527
|
+
}
|
|
33528
|
+
}
|
|
33529
|
+
}
|
|
33530
|
+
}
|
|
33531
|
+
},
|
|
33532
|
+
"propertyPricing": {
|
|
33533
|
+
"title": "Property Pricing Estimates",
|
|
33534
|
+
"description": "Detailed property pricing estimates, including rental estimates, market value, and yield calculations.",
|
|
33535
|
+
"type": "object",
|
|
33536
|
+
"properties": {
|
|
33537
|
+
"rentalEstimate": {
|
|
33538
|
+
"title": "Rental Estimate",
|
|
33539
|
+
"description": "Estimated rental income for the property.",
|
|
33540
|
+
"type": "object",
|
|
33541
|
+
"properties": {
|
|
33542
|
+
"estimatedAmount": {
|
|
33543
|
+
"title": "Rental Estimate Amount",
|
|
33544
|
+
"description": "The estimated rental amount for the property.",
|
|
33545
|
+
"type": "number"
|
|
33546
|
+
},
|
|
33547
|
+
"paymentFrequency": {
|
|
33548
|
+
"title": "Payment Frequency",
|
|
33549
|
+
"description": "The frequency at which the rental amount is calculated.",
|
|
33550
|
+
"type": "string",
|
|
33551
|
+
"enum": [
|
|
33552
|
+
"Per Week",
|
|
33553
|
+
"Per Calendar Month",
|
|
33554
|
+
"Per Year"
|
|
33555
|
+
]
|
|
33556
|
+
}
|
|
33557
|
+
}
|
|
33558
|
+
},
|
|
33559
|
+
"estimatedPrice": {
|
|
33560
|
+
"title": "Estimated Price",
|
|
33561
|
+
"description": "Approximation of the property's current market value",
|
|
33562
|
+
"type": "number"
|
|
33563
|
+
},
|
|
33564
|
+
"yield": {
|
|
33565
|
+
"title": "Yield",
|
|
33566
|
+
"description": "Return on investment (ROI) generated by an income-producing asset",
|
|
33567
|
+
"type": "number"
|
|
33568
|
+
},
|
|
33569
|
+
"priceEstimationDetails": {
|
|
33570
|
+
"type": "object",
|
|
33571
|
+
"title": "Credibility and Pricing Methodology",
|
|
33572
|
+
"description": "Information about the credibility of property pricing estimates and the methodology used in their calculation.",
|
|
33573
|
+
"properties": {
|
|
33574
|
+
"credibilitySources": {
|
|
33575
|
+
"type": "array",
|
|
33576
|
+
"title": "Data Sources",
|
|
33577
|
+
"description": "The sources of data used for property pricing estimates.",
|
|
33578
|
+
"items": {
|
|
33579
|
+
"type": "string"
|
|
33580
|
+
}
|
|
33581
|
+
},
|
|
33582
|
+
"pricingMethodology": {
|
|
33583
|
+
"title": "Pricing Methodology",
|
|
33584
|
+
"description": "Description of the methodology used to estimate property pricing.",
|
|
33585
|
+
"type": "string",
|
|
33586
|
+
"default": "This estimate is based on a combination of market research, historical sales data, and current market trends. It may not represent the exact market value."
|
|
33587
|
+
}
|
|
33588
|
+
}
|
|
33589
|
+
}
|
|
33590
|
+
}
|
|
33591
|
+
}
|
|
33592
|
+
}
|
|
33344
33593
|
}
|
|
33345
33594
|
}
|
|
33346
33595
|
}
|
|
@@ -3734,5 +3734,48 @@
|
|
|
3734
3734
|
"documentType": {},
|
|
3735
3735
|
"externalIds": {}
|
|
3736
3736
|
}
|
|
3737
|
+
},
|
|
3738
|
+
"valuationComparisonData": {
|
|
3739
|
+
"propertyDetails": {
|
|
3740
|
+
"propertyListingInfo": {
|
|
3741
|
+
"listingType": {},
|
|
3742
|
+
"soldDate": {},
|
|
3743
|
+
"soldPrice": {},
|
|
3744
|
+
"listedDate": {},
|
|
3745
|
+
"listPrice": {}
|
|
3746
|
+
},
|
|
3747
|
+
"propertyFullDescription": {},
|
|
3748
|
+
"uprn": {},
|
|
3749
|
+
"propertyType": {},
|
|
3750
|
+
"marketingTenure": {},
|
|
3751
|
+
"basicDetails": {
|
|
3752
|
+
"bedrooms": {},
|
|
3753
|
+
"bathrooms": {},
|
|
3754
|
+
"buildInformation": {
|
|
3755
|
+
"internalArea": {
|
|
3756
|
+
"area": {},
|
|
3757
|
+
"units": {}
|
|
3758
|
+
},
|
|
3759
|
+
"yearOfBuild": {}
|
|
3760
|
+
}
|
|
3761
|
+
},
|
|
3762
|
+
"media": {
|
|
3763
|
+
"mediaType": {},
|
|
3764
|
+
"mediaUrl": {},
|
|
3765
|
+
"caption": {}
|
|
3766
|
+
}
|
|
3767
|
+
},
|
|
3768
|
+
"propertyPricing": {
|
|
3769
|
+
"rentalEstimate": {
|
|
3770
|
+
"estimatedAmount": {},
|
|
3771
|
+
"paymentFrequency": {}
|
|
3772
|
+
},
|
|
3773
|
+
"estimatedPrice": {},
|
|
3774
|
+
"yield": {},
|
|
3775
|
+
"priceEstimationDetails": {
|
|
3776
|
+
"credibilitySources": {},
|
|
3777
|
+
"pricingMethodology": {}
|
|
3778
|
+
}
|
|
3779
|
+
}
|
|
3737
3780
|
}
|
|
3738
3781
|
}
|
|
@@ -255,6 +255,32 @@ test("correctly gets a subschema validator for a TA6 overlay which fails to vali
|
|
|
255
255
|
expect(isValid).toBe(false);
|
|
256
256
|
});
|
|
257
257
|
|
|
258
|
+
test("correctly gets a subschema validator for an NTS overlay", () => {
|
|
259
|
+
const path = "/propertyPack";
|
|
260
|
+
const clonedExampleTransaction = JSON.parse(
|
|
261
|
+
JSON.stringify(exampleTransaction)
|
|
262
|
+
);
|
|
263
|
+
const data = jp.get(clonedExampleTransaction, path);
|
|
264
|
+
const validator = getSubschemaValidator(path, exampleTransaction.$schema, [
|
|
265
|
+
"nts2023",
|
|
266
|
+
]);
|
|
267
|
+
let isValid = validator(data);
|
|
268
|
+
expect(isValid).toBe(false);
|
|
269
|
+
});
|
|
270
|
+
|
|
271
|
+
test("correctly gets a subschema validator for an LPE1 overlay", () => {
|
|
272
|
+
const path = "/propertyPack";
|
|
273
|
+
const clonedExampleTransaction = JSON.parse(
|
|
274
|
+
JSON.stringify(exampleTransaction)
|
|
275
|
+
);
|
|
276
|
+
const data = jp.get(clonedExampleTransaction, path);
|
|
277
|
+
const validator = getSubschemaValidator(path, exampleTransaction.$schema, [
|
|
278
|
+
"lpe1ed4",
|
|
279
|
+
]);
|
|
280
|
+
let isValid = validator(data);
|
|
281
|
+
expect(isValid).toBe(false);
|
|
282
|
+
});
|
|
283
|
+
|
|
258
284
|
test("correctly gets a subschema validator which validates", () => {
|
|
259
285
|
const path = "/propertyPack/materialFacts/notices";
|
|
260
286
|
const validator = getSubschemaValidator(path);
|
package/src/utils/hmlrLLC1.json
CHANGED
|
@@ -25,12 +25,22 @@
|
|
|
25
25
|
"type": "string"
|
|
26
26
|
},
|
|
27
27
|
"CreationDate": {
|
|
28
|
-
"type": "
|
|
29
|
-
"
|
|
28
|
+
"type": "object",
|
|
29
|
+
"properties": {
|
|
30
|
+
"Value": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"format": "date"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
30
35
|
},
|
|
31
36
|
"RegistrationDate": {
|
|
32
|
-
"type": "
|
|
33
|
-
"
|
|
37
|
+
"type": "object",
|
|
38
|
+
"properties": {
|
|
39
|
+
"Value": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"format": "date"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
34
44
|
},
|
|
35
45
|
"Category": {
|
|
36
46
|
"type": "string"
|
|
@@ -46,37 +56,74 @@
|
|
|
46
56
|
},
|
|
47
57
|
"Location": {
|
|
48
58
|
"type": "object",
|
|
49
|
-
"required": ["
|
|
59
|
+
"required": ["AddressLine"],
|
|
50
60
|
"properties": {
|
|
51
|
-
"
|
|
52
|
-
"type": "
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
61
|
+
"PostcodeZone": {
|
|
62
|
+
"type": "object",
|
|
63
|
+
"required": ["Postcode"],
|
|
64
|
+
"properties": {
|
|
65
|
+
"Postcode": {
|
|
66
|
+
"type": "string"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
59
69
|
},
|
|
60
|
-
"
|
|
61
|
-
"type": "
|
|
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
|
+
}
|
|
62
93
|
}
|
|
63
94
|
}
|
|
64
95
|
},
|
|
65
96
|
"LocationDominantBuilding": {
|
|
66
97
|
"type": "object",
|
|
67
|
-
"required": ["
|
|
98
|
+
"required": ["AddressLine"],
|
|
68
99
|
"properties": {
|
|
69
|
-
"
|
|
70
|
-
"type": "
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
100
|
+
"PostcodeZone": {
|
|
101
|
+
"type": "object",
|
|
102
|
+
"required": ["Postcode"],
|
|
103
|
+
"properties": {
|
|
104
|
+
"Postcode": {
|
|
105
|
+
"type": "string"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
77
108
|
},
|
|
78
|
-
"
|
|
79
|
-
"type": "
|
|
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
|
+
}
|
|
80
127
|
}
|
|
81
128
|
}
|
|
82
129
|
},
|
|
@@ -115,19 +162,45 @@
|
|
|
115
162
|
},
|
|
116
163
|
"ApplicantAddress": {
|
|
117
164
|
"type": "object",
|
|
118
|
-
"required": ["
|
|
165
|
+
"required": ["AddressLine"],
|
|
119
166
|
"properties": {
|
|
120
|
-
"
|
|
121
|
-
"type": "
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
167
|
+
"PostcodeZone": {
|
|
168
|
+
"type": "object",
|
|
169
|
+
"required": ["Postcode"],
|
|
170
|
+
"properties": {
|
|
171
|
+
"Postcode": {
|
|
172
|
+
"type": "string"
|
|
173
|
+
}
|
|
174
|
+
}
|
|
128
175
|
},
|
|
129
|
-
"
|
|
130
|
-
"type": "
|
|
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
|
+
}
|
|
131
204
|
}
|
|
132
205
|
}
|
|
133
206
|
},
|
|
@@ -184,7 +257,15 @@
|
|
|
184
257
|
"minItems": 0
|
|
185
258
|
},
|
|
186
259
|
"ChargeExtent": {
|
|
187
|
-
"type": "
|
|
260
|
+
"type": "object",
|
|
261
|
+
"properties": {
|
|
262
|
+
"Value": {
|
|
263
|
+
"type": "string"
|
|
264
|
+
},
|
|
265
|
+
"format": {
|
|
266
|
+
"type": "string"
|
|
267
|
+
}
|
|
268
|
+
}
|
|
188
269
|
}
|
|
189
270
|
}
|
|
190
271
|
},
|