@pdtf/schemas 3.6.0-dev.17 → 3.6.0-dev.18

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pdtf/schemas",
3
- "version": "3.6.0-dev.17",
3
+ "version": "3.6.0-dev.18",
4
4
  "description": "Property Data Trust Framework Schemas and Utilities",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -1301,6 +1301,215 @@
1301
1301
  "ntslRequired": ["building"],
1302
1302
  "ntsl2Required": ["building"],
1303
1303
  "properties": {
1304
+ "attributes": {
1305
+ "title": "Sourced building attributes",
1306
+ "description": "Objectively sourced physical attributes of the building that contains the property, as distinct from the dwelling itself. These sit alongside the seller-declared fields in buildInformation rather than within them: everything here is measured, surveyed or registered, and none of it is asked of the seller on a form. For a house the building and the dwelling are the same thing; for a flat or maisonette these attributes describe the whole block rather than the individual unit. Values here are measured, surveyed or registered rather than declared by the seller, so they are not mapped to any form overlay. The source and verification of each value is carried by the claim that supplies it, not by this schema.",
1307
+ "type": "object",
1308
+ "properties": {
1309
+ "storeyCount": {
1310
+ "title": "Number of storeys in the building",
1311
+ "description": "The number of occupiable storeys at or above ground level in the building as a whole. Unlike the sibling building/numberOfFloors, which is only available for flats and maisonettes, this is populated for every property type and always counts the whole building.",
1312
+ "type": "integer",
1313
+ "minimum": 0
1314
+ },
1315
+ "heightMetres": {
1316
+ "title": "Height of the building in metres",
1317
+ "description": "The height of the building measured on the basis used by the Building Safety Act, that is from ground level to the floor surface of the top occupied storey. Populate this only where a value on that basis is available, for example from the register of higher-risk buildings. Remotely sensed estimates belong in heightToRoofBaseMetres and heightToHighestPointMetres instead.",
1318
+ "type": "number",
1319
+ "minimum": 0
1320
+ },
1321
+ "heightToRoofBaseMetres": {
1322
+ "title": "Height to the base of the roof in metres",
1323
+ "description": "Height from the underlying ground surface to the point where the roof meets the external walls, that is the eaves. Where a building has sections of differing height this may reflect the lowest roofline within the footprint, so it acts as a lower bound on the height of the tallest part.",
1324
+ "type": "number",
1325
+ "minimum": 0
1326
+ },
1327
+ "heightToHighestPointMetres": {
1328
+ "title": "Height to the highest point in metres",
1329
+ "description": "Height from the underlying ground surface to the highest point of the building, which may include chimneys, aerials, plant or other roof structures. It therefore acts as an upper bound on the height of the occupied part of the building.",
1330
+ "type": "number",
1331
+ "minimum": 0
1332
+ },
1333
+ "heightMeasurementDate": {
1334
+ "title": "Date the building height was measured",
1335
+ "description": "The date of the survey or aerial imagery the height values were derived from. This is the age of the underlying evidence rather than the date the value was supplied, and matters where a building has been altered or extended since it was last measured.",
1336
+ "type": "string",
1337
+ "format": "date"
1338
+ },
1339
+ "footprintAreaSquareMetres": {
1340
+ "title": "Ground floor footprint area in square metres",
1341
+ "description": "The area covered by the outline of the building at ground level. This is the footprint of the building and is not the internal floor area of the dwelling.",
1342
+ "type": "number",
1343
+ "minimum": 0
1344
+ },
1345
+ "residentialUnitCount": {
1346
+ "title": "Number of residential units in the building",
1347
+ "description": "The number of separate residential units the building contains. Both the higher-risk building and relevant building tests under the Building Safety Act require at least two dwellings, so this is needed alongside height and storey count to apply them. Where it is derived from a count of addresses it may include non-residential addresses in a mixed use building.",
1348
+ "type": "integer",
1349
+ "minimum": 0
1350
+ },
1351
+ "constructionMaterial": {
1352
+ "title": "Primary construction material of the building",
1353
+ "description": "The predominant material of the external walls, for example \"Brick or block or stone\", \"Metal\", \"Timber\" or \"Other non standard or system build\". Left unconstrained because source vocabularies differ.",
1354
+ "type": "string"
1355
+ },
1356
+ "roofMaterial": {
1357
+ "title": "Primary roof material of the building",
1358
+ "description": "The predominant roof covering, for example \"Tile or stone or slate\", \"Waterproof membrane or concrete\", \"Thatch\" or \"Metal\". Left unconstrained because source vocabularies differ.",
1359
+ "type": "string"
1360
+ },
1361
+ "basementPresent": {
1362
+ "title": "Is a basement present in the building?",
1363
+ "type": "string",
1364
+ "enum": ["Yes", "No", "Not known"]
1365
+ },
1366
+ "solarPanelsPresent": {
1367
+ "title": "Are solar panels present on the roof of the building?",
1368
+ "type": "string",
1369
+ "enum": ["Yes", "No", "Not known"]
1370
+ },
1371
+ "constructionPeriod": {
1372
+ "title": "Period in which the building was constructed",
1373
+ "description": "A range of years within which the building was built, for example \"1870-1918\" or \"2020-2029\". Use constructionYear where a single year is known.",
1374
+ "type": "string"
1375
+ },
1376
+ "constructionYear": {
1377
+ "title": "Year in which the building was constructed",
1378
+ "type": "integer"
1379
+ }
1380
+ }
1381
+ },
1382
+ "higherRiskBuildingRegistration": {
1383
+ "title": "Higher-risk building registration",
1384
+ "description": "The building's entry on the register of higher-risk buildings maintained by the Building Safety Regulator under the Building Safety Act 2022. The register covers England only, and describes the building containing the property rather than the individual dwelling. Absence from the register is not proof that a building falls outside the higher-risk definition, only that no registration was found, so a \"Not found\" status should be read alongside the measured height and storey count in the sibling attributes node. Values here are taken from the register rather than declared by the seller, so they are not mapped to any form overlay.",
1385
+ "type": "object",
1386
+ "properties": {
1387
+ "registrationStatus": {
1388
+ "title": "Registration status",
1389
+ "description": "\"Registered\" where an entry for this building was found. \"Not found\" where the register returned no entry, which for a building over the height or storey threshold may itself be worth raising. \"Not known\" where the register could not be searched, or returned entries that could not be narrowed to this property.",
1390
+ "type": "string",
1391
+ "enum": ["Registered", "Not found", "Not known"]
1392
+ },
1393
+ "registrationNumber": {
1394
+ "title": "Registration number",
1395
+ "description": "The registration reference issued by the Building Safety Regulator, for example \"HRB15504S8K8\".",
1396
+ "type": "string"
1397
+ },
1398
+ "candidateCount": {
1399
+ "title": "Number of registered buildings that could not be told apart",
1400
+ "description": "Set only where the register returned more than one entry for the property's postcode and none could be matched to it. Recorded so the ambiguity is visible rather than resolved by guessing, and paired with a \"Not known\" registration status.",
1401
+ "type": "integer",
1402
+ "minimum": 0
1403
+ },
1404
+ "building": {
1405
+ "title": "Registered building particulars",
1406
+ "description": "The particulars the register holds for the building. These are as supplied by the person who registered it, so they may differ from the remotely measured values in the sibling attributes node.",
1407
+ "type": "object",
1408
+ "properties": {
1409
+ "name": {
1410
+ "title": "Registered building name",
1411
+ "type": "string"
1412
+ },
1413
+ "address": {
1414
+ "title": "Registered address",
1415
+ "type": "string"
1416
+ },
1417
+ "postcode": {
1418
+ "title": "Registered postcode",
1419
+ "type": "string"
1420
+ },
1421
+ "storeyCount": {
1422
+ "title": "Number of storeys above ground",
1423
+ "type": "integer",
1424
+ "minimum": 0
1425
+ },
1426
+ "heightMetres": {
1427
+ "title": "Registered height of the building in metres",
1428
+ "description": "The height as registered, measured on the Building Safety Act basis. This is the statutory measurement rather than a remotely sensed estimate.",
1429
+ "type": "number",
1430
+ "minimum": 0
1431
+ },
1432
+ "residentialUnitCount": {
1433
+ "title": "Number of residential units",
1434
+ "type": "integer",
1435
+ "minimum": 0
1436
+ },
1437
+ "yearOfCompletion": {
1438
+ "title": "Year the building was completed",
1439
+ "type": "integer"
1440
+ },
1441
+ "occupied": {
1442
+ "title": "Are people living in the building?",
1443
+ "type": "string",
1444
+ "enum": ["Yes", "No", "Not known"]
1445
+ }
1446
+ }
1447
+ },
1448
+ "completionCertificate": {
1449
+ "title": "Completion certificate",
1450
+ "type": "object",
1451
+ "properties": {
1452
+ "date": {
1453
+ "title": "Date of the completion certificate",
1454
+ "type": "string",
1455
+ "format": "date"
1456
+ },
1457
+ "issuer": {
1458
+ "title": "Who issued the completion certificate",
1459
+ "type": "string"
1460
+ },
1461
+ "reference": {
1462
+ "title": "Completion certificate reference",
1463
+ "type": "string"
1464
+ }
1465
+ }
1466
+ },
1467
+ "accountablePersons": {
1468
+ "title": "Accountable persons",
1469
+ "description": "The people or organisations accountable for the building's safety. Exactly one is the principal accountable person, who carries the duties for the structure and common parts.",
1470
+ "type": "array",
1471
+ "items": {
1472
+ "type": "object",
1473
+ "properties": {
1474
+ "role": {
1475
+ "title": "Role",
1476
+ "type": "string",
1477
+ "enum": [
1478
+ "Principal accountable person",
1479
+ "Accountable person"
1480
+ ]
1481
+ },
1482
+ "personType": {
1483
+ "title": "Is the accountable person an organisation or an individual?",
1484
+ "type": "string",
1485
+ "enum": ["Organisation", "Individual", "Not known"]
1486
+ },
1487
+ "name": {
1488
+ "title": "Name of the accountable person",
1489
+ "type": "string"
1490
+ },
1491
+ "accountability": {
1492
+ "title": "What this person is accountable for",
1493
+ "type": "array",
1494
+ "items": {
1495
+ "type": "object",
1496
+ "properties": {
1497
+ "section": {
1498
+ "title": "Part of the building",
1499
+ "type": "string"
1500
+ },
1501
+ "area": {
1502
+ "title": "Area of accountability",
1503
+ "type": "string"
1504
+ }
1505
+ }
1506
+ }
1507
+ }
1508
+ }
1509
+ }
1510
+ }
1511
+ }
1512
+ },
1304
1513
  "building": {
1305
1514
  "ntsRef": "B1.1.1",
1306
1515
  "nts2Ref": "B1.1.1",
@@ -130,6 +130,46 @@
130
130
  caption
131
131
  ]
132
132
  buildInformation
133
+ attributes
134
+ storeyCount
135
+ heightMetres
136
+ heightToRoofBaseMetres
137
+ heightToHighestPointMetres
138
+ heightMeasurementDate
139
+ footprintAreaSquareMetres
140
+ residentialUnitCount
141
+ constructionMaterial
142
+ roofMaterial
143
+ basementPresent
144
+ solarPanelsPresent
145
+ constructionPeriod
146
+ constructionYear
147
+ higherRiskBuildingRegistration
148
+ registrationStatus
149
+ registrationNumber
150
+ candidateCount
151
+ building
152
+ name
153
+ address
154
+ postcode
155
+ storeyCount
156
+ heightMetres
157
+ residentialUnitCount
158
+ yearOfCompletion
159
+ occupied
160
+ completionCertificate
161
+ date
162
+ issuer
163
+ reference
164
+ accountablePersons[
165
+ role
166
+ personType
167
+ name
168
+ accountability[
169
+ section
170
+ area
171
+ ]
172
+ ]
133
173
  building
134
174
  builtForm
135
175
  propertyType
@@ -955,6 +955,235 @@
955
955
  "title": "About the property building",
956
956
  "type": "object",
957
957
  "properties": {
958
+ "attributes": {
959
+ "title": "Sourced building attributes",
960
+ "description": "Objectively sourced physical attributes of the building that contains the property, as distinct from the dwelling itself. These sit alongside the seller-declared fields in buildInformation rather than within them: everything here is measured, surveyed or registered, and none of it is asked of the seller on a form. For a house the building and the dwelling are the same thing; for a flat or maisonette these attributes describe the whole block rather than the individual unit. Values here are measured, surveyed or registered rather than declared by the seller, so they are not mapped to any form overlay. The source and verification of each value is carried by the claim that supplies it, not by this schema.",
961
+ "type": "object",
962
+ "properties": {
963
+ "storeyCount": {
964
+ "title": "Number of storeys in the building",
965
+ "description": "The number of occupiable storeys at or above ground level in the building as a whole. Unlike the sibling building/numberOfFloors, which is only available for flats and maisonettes, this is populated for every property type and always counts the whole building.",
966
+ "type": "integer",
967
+ "minimum": 0
968
+ },
969
+ "heightMetres": {
970
+ "title": "Height of the building in metres",
971
+ "description": "The height of the building measured on the basis used by the Building Safety Act, that is from ground level to the floor surface of the top occupied storey. Populate this only where a value on that basis is available, for example from the register of higher-risk buildings. Remotely sensed estimates belong in heightToRoofBaseMetres and heightToHighestPointMetres instead.",
972
+ "type": "number",
973
+ "minimum": 0
974
+ },
975
+ "heightToRoofBaseMetres": {
976
+ "title": "Height to the base of the roof in metres",
977
+ "description": "Height from the underlying ground surface to the point where the roof meets the external walls, that is the eaves. Where a building has sections of differing height this may reflect the lowest roofline within the footprint, so it acts as a lower bound on the height of the tallest part.",
978
+ "type": "number",
979
+ "minimum": 0
980
+ },
981
+ "heightToHighestPointMetres": {
982
+ "title": "Height to the highest point in metres",
983
+ "description": "Height from the underlying ground surface to the highest point of the building, which may include chimneys, aerials, plant or other roof structures. It therefore acts as an upper bound on the height of the occupied part of the building.",
984
+ "type": "number",
985
+ "minimum": 0
986
+ },
987
+ "heightMeasurementDate": {
988
+ "title": "Date the building height was measured",
989
+ "description": "The date of the survey or aerial imagery the height values were derived from. This is the age of the underlying evidence rather than the date the value was supplied, and matters where a building has been altered or extended since it was last measured.",
990
+ "type": "string",
991
+ "format": "date"
992
+ },
993
+ "footprintAreaSquareMetres": {
994
+ "title": "Ground floor footprint area in square metres",
995
+ "description": "The area covered by the outline of the building at ground level. This is the footprint of the building and is not the internal floor area of the dwelling.",
996
+ "type": "number",
997
+ "minimum": 0
998
+ },
999
+ "residentialUnitCount": {
1000
+ "title": "Number of residential units in the building",
1001
+ "description": "The number of separate residential units the building contains. Both the higher-risk building and relevant building tests under the Building Safety Act require at least two dwellings, so this is needed alongside height and storey count to apply them. Where it is derived from a count of addresses it may include non-residential addresses in a mixed use building.",
1002
+ "type": "integer",
1003
+ "minimum": 0
1004
+ },
1005
+ "constructionMaterial": {
1006
+ "title": "Primary construction material of the building",
1007
+ "description": "The predominant material of the external walls, for example \"Brick or block or stone\", \"Metal\", \"Timber\" or \"Other non standard or system build\". Left unconstrained because source vocabularies differ.",
1008
+ "type": "string"
1009
+ },
1010
+ "roofMaterial": {
1011
+ "title": "Primary roof material of the building",
1012
+ "description": "The predominant roof covering, for example \"Tile or stone or slate\", \"Waterproof membrane or concrete\", \"Thatch\" or \"Metal\". Left unconstrained because source vocabularies differ.",
1013
+ "type": "string"
1014
+ },
1015
+ "basementPresent": {
1016
+ "title": "Is a basement present in the building?",
1017
+ "type": "string",
1018
+ "enum": [
1019
+ "Yes",
1020
+ "No",
1021
+ "Not known"
1022
+ ]
1023
+ },
1024
+ "solarPanelsPresent": {
1025
+ "title": "Are solar panels present on the roof of the building?",
1026
+ "type": "string",
1027
+ "enum": [
1028
+ "Yes",
1029
+ "No",
1030
+ "Not known"
1031
+ ]
1032
+ },
1033
+ "constructionPeriod": {
1034
+ "title": "Period in which the building was constructed",
1035
+ "description": "A range of years within which the building was built, for example \"1870-1918\" or \"2020-2029\". Use constructionYear where a single year is known.",
1036
+ "type": "string"
1037
+ },
1038
+ "constructionYear": {
1039
+ "title": "Year in which the building was constructed",
1040
+ "type": "integer"
1041
+ }
1042
+ }
1043
+ },
1044
+ "higherRiskBuildingRegistration": {
1045
+ "title": "Higher-risk building registration",
1046
+ "description": "The building's entry on the register of higher-risk buildings maintained by the Building Safety Regulator under the Building Safety Act 2022. The register covers England only, and describes the building containing the property rather than the individual dwelling. Absence from the register is not proof that a building falls outside the higher-risk definition, only that no registration was found, so a \"Not found\" status should be read alongside the measured height and storey count in the sibling attributes node. Values here are taken from the register rather than declared by the seller, so they are not mapped to any form overlay.",
1047
+ "type": "object",
1048
+ "properties": {
1049
+ "registrationStatus": {
1050
+ "title": "Registration status",
1051
+ "description": "\"Registered\" where an entry for this building was found. \"Not found\" where the register returned no entry, which for a building over the height or storey threshold may itself be worth raising. \"Not known\" where the register could not be searched, or returned entries that could not be narrowed to this property.",
1052
+ "type": "string",
1053
+ "enum": [
1054
+ "Registered",
1055
+ "Not found",
1056
+ "Not known"
1057
+ ]
1058
+ },
1059
+ "registrationNumber": {
1060
+ "title": "Registration number",
1061
+ "description": "The registration reference issued by the Building Safety Regulator, for example \"HRB15504S8K8\".",
1062
+ "type": "string"
1063
+ },
1064
+ "candidateCount": {
1065
+ "title": "Number of registered buildings that could not be told apart",
1066
+ "description": "Set only where the register returned more than one entry for the property's postcode and none could be matched to it. Recorded so the ambiguity is visible rather than resolved by guessing, and paired with a \"Not known\" registration status.",
1067
+ "type": "integer",
1068
+ "minimum": 0
1069
+ },
1070
+ "building": {
1071
+ "title": "Registered building particulars",
1072
+ "description": "The particulars the register holds for the building. These are as supplied by the person who registered it, so they may differ from the remotely measured values in the sibling attributes node.",
1073
+ "type": "object",
1074
+ "properties": {
1075
+ "name": {
1076
+ "title": "Registered building name",
1077
+ "type": "string"
1078
+ },
1079
+ "address": {
1080
+ "title": "Registered address",
1081
+ "type": "string"
1082
+ },
1083
+ "postcode": {
1084
+ "title": "Registered postcode",
1085
+ "type": "string"
1086
+ },
1087
+ "storeyCount": {
1088
+ "title": "Number of storeys above ground",
1089
+ "type": "integer",
1090
+ "minimum": 0
1091
+ },
1092
+ "heightMetres": {
1093
+ "title": "Registered height of the building in metres",
1094
+ "description": "The height as registered, measured on the Building Safety Act basis. This is the statutory measurement rather than a remotely sensed estimate.",
1095
+ "type": "number",
1096
+ "minimum": 0
1097
+ },
1098
+ "residentialUnitCount": {
1099
+ "title": "Number of residential units",
1100
+ "type": "integer",
1101
+ "minimum": 0
1102
+ },
1103
+ "yearOfCompletion": {
1104
+ "title": "Year the building was completed",
1105
+ "type": "integer"
1106
+ },
1107
+ "occupied": {
1108
+ "title": "Are people living in the building?",
1109
+ "type": "string",
1110
+ "enum": [
1111
+ "Yes",
1112
+ "No",
1113
+ "Not known"
1114
+ ]
1115
+ }
1116
+ }
1117
+ },
1118
+ "completionCertificate": {
1119
+ "title": "Completion certificate",
1120
+ "type": "object",
1121
+ "properties": {
1122
+ "date": {
1123
+ "title": "Date of the completion certificate",
1124
+ "type": "string",
1125
+ "format": "date"
1126
+ },
1127
+ "issuer": {
1128
+ "title": "Who issued the completion certificate",
1129
+ "type": "string"
1130
+ },
1131
+ "reference": {
1132
+ "title": "Completion certificate reference",
1133
+ "type": "string"
1134
+ }
1135
+ }
1136
+ },
1137
+ "accountablePersons": {
1138
+ "title": "Accountable persons",
1139
+ "description": "The people or organisations accountable for the building's safety. Exactly one is the principal accountable person, who carries the duties for the structure and common parts.",
1140
+ "type": "array",
1141
+ "items": {
1142
+ "type": "object",
1143
+ "properties": {
1144
+ "role": {
1145
+ "title": "Role",
1146
+ "type": "string",
1147
+ "enum": [
1148
+ "Principal accountable person",
1149
+ "Accountable person"
1150
+ ]
1151
+ },
1152
+ "personType": {
1153
+ "title": "Is the accountable person an organisation or an individual?",
1154
+ "type": "string",
1155
+ "enum": [
1156
+ "Organisation",
1157
+ "Individual",
1158
+ "Not known"
1159
+ ]
1160
+ },
1161
+ "name": {
1162
+ "title": "Name of the accountable person",
1163
+ "type": "string"
1164
+ },
1165
+ "accountability": {
1166
+ "title": "What this person is accountable for",
1167
+ "type": "array",
1168
+ "items": {
1169
+ "type": "object",
1170
+ "properties": {
1171
+ "section": {
1172
+ "title": "Part of the building",
1173
+ "type": "string"
1174
+ },
1175
+ "area": {
1176
+ "title": "Area of accountability",
1177
+ "type": "string"
1178
+ }
1179
+ }
1180
+ }
1181
+ }
1182
+ }
1183
+ }
1184
+ }
1185
+ }
1186
+ },
958
1187
  "building": {
959
1188
  "title": "Building information",
960
1189
  "type": "object",
@@ -168,6 +168,54 @@
168
168
  }
169
169
  ],
170
170
  "buildInformation": {
171
+ "attributes": {
172
+ "storeyCount": "integer",
173
+ "heightMetres": "number",
174
+ "heightToRoofBaseMetres": "number",
175
+ "heightToHighestPointMetres": "number",
176
+ "heightMeasurementDate": "string",
177
+ "footprintAreaSquareMetres": "number",
178
+ "residentialUnitCount": "integer",
179
+ "constructionMaterial": "string",
180
+ "roofMaterial": "string",
181
+ "basementPresent": "string",
182
+ "solarPanelsPresent": "string",
183
+ "constructionPeriod": "string",
184
+ "constructionYear": "integer"
185
+ },
186
+ "higherRiskBuildingRegistration": {
187
+ "registrationStatus": "string",
188
+ "registrationNumber": "string",
189
+ "candidateCount": "integer",
190
+ "building": {
191
+ "name": "string",
192
+ "address": "string",
193
+ "postcode": "string",
194
+ "storeyCount": "integer",
195
+ "heightMetres": "number",
196
+ "residentialUnitCount": "integer",
197
+ "yearOfCompletion": "integer",
198
+ "occupied": "string"
199
+ },
200
+ "completionCertificate": {
201
+ "date": "string",
202
+ "issuer": "string",
203
+ "reference": "string"
204
+ },
205
+ "accountablePersons": [
206
+ {
207
+ "role": "string",
208
+ "personType": "string",
209
+ "name": "string",
210
+ "accountability": [
211
+ {
212
+ "section": "string",
213
+ "area": "string"
214
+ }
215
+ ]
216
+ }
217
+ ]
218
+ },
171
219
  "building": {
172
220
  "builtForm": "string",
173
221
  "propertyType": "variant",